From 3369e8b688d48b37cce89fef5640816f4a784511 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 13:30:18 +0200 Subject: [PATCH 1/5] Sync public dev snapshot --- .github/workflows/build-and-publish.yml | 14 + .github/workflows/deploy-docs.yml | 157 +- .github/workflows/unit-tests.yml | 9 +- CONTRIBUTING.md | 4 +- README.md | 2 + RELEASE.md | 295 +- corneto/_plotting.py | 309 +- corneto/backend/_base.py | 573 +- corneto/backend/_picos_backend.py | 83 +- corneto/datasets/__init__.py | 5 + corneto/datasets/_catalog.py | 61 + corneto/datasets/_fetch.py | 269 + corneto/methods/__init__.py | 2 + corneto/methods/_flow_utils.py | 64 - corneto/methods/_predictive.py | 65 + corneto/methods/bidirectional_phonemes.py | 66 +- corneto/methods/causal/__init__.py | 5 + corneto/methods/causal/linear_dag.py | 1705 +++ corneto/methods/imat.py | 10 +- corneto/methods/pcst.py | 129 +- corneto/methods/phonemes.py | 41 +- corneto/methods/signal/__init__.py | 11 - corneto/methods/signal/cellnopt_ilp.py | 17 - corneto/methods/signaling/__init__.py | 21 + corneto/methods/signaling/annnet.py | 363 + corneto/methods/signaling/cellnopt_dag.py | 931 ++ corneto/methods/signaling/cellnopt_ilp.py | 620 -- .../methods/signaling/cellnopt_plotting.py | 880 ++ corneto/release.py | 50 +- datasets/sachs/v1/README.md | 60 + datasets/sachs/v1/condition_manifest.csv | 10 + datasets/sachs/v1/measurements.tsv | 7467 +++++++++++++ datasets/sachs/v1/sachs-v1.tar.gz | Bin 0 -> 270786 bytes docs/api/corneto.datasets.rst | 13 + docs/api/corneto.methods.rst | 57 +- docs/api/index.rst | 1 + docs/custom-index.html | 431 - docs/guide/causal/index.md | 12 + docs/guide/causal/linear-dag-discovery.ipynb | 2423 +++++ docs/guide/index.md | 2 +- docs/guide/intro/data.ipynb | 524 +- .../metabolism/flux-balance-analysis.ipynb | 9264 +---------------- docs/guide/metabolism/imat.ipynb | 663 ++ docs/guide/metabolism/index.md | 11 +- .../metabolism/multicondition-imat.ipynb | 1913 +--- .../metabolism/multicondition-sfba.ipynb | 582 +- docs/guide/method-inputs.md | 118 +- docs/guide/signaling/cellnopt_ILP.ipynb | 2280 ---- docs/guide/signaling/cellnopt_dag.ipynb | 3346 ++++++ docs/guide/signaling/index.md | 6 +- docs/install.md | 2 + docs/landing/assets/carnival-schematic.png | Bin 0 -> 56709 bytes docs/landing/assets/corneto-abstract.jpg | Bin 0 -> 288855 bytes docs/landing/assets/corneto-logo-512px.png | Bin 0 -> 27003 bytes docs/landing/assets/decider-eu-logo.png | Bin 0 -> 38554 bytes docs/landing/assets/embl-ebi-logo.png | Bin 0 -> 11838 bytes docs/landing/assets/favicon.ico | Bin 0 -> 15406 bytes docs/landing/assets/fba-schematic.png | Bin 0 -> 68896 bytes docs/landing/assets/feasible-space.png | Bin 0 -> 269707 bytes docs/landing/assets/permedcoe-eu-logo.png | Bin 0 -> 6481 bytes docs/landing/assets/saezlab-logo.png | Bin 0 -> 24461 bytes docs/landing/assets/ukhd-logo.jpg | Bin 0 -> 309749 bytes docs/landing/index.html | 1295 +++ docs/releases/index.md | 5 +- docs/releases/migration-1.0.md | 8 +- docs/releases/v1.0.0-rc.1.md | 8 +- docs/releases/v1.0.0-rc.3.md | 27 + docs/releases/v1.0.0-rc.4.md | 31 + docs/releases/v1.0.0-rc.5.md | 23 + docs/tutorials/README.md | 6 +- .../annnet-cellnopt-dag.ipynb | 2088 ++++ docs/tutorials/annnet-signaling/pixi.toml | 16 + docs/tutorials/causal/README.md | 56 + .../causal/linear-dag-discovery-sachs.ipynb | 2071 ++++ docs/tutorials/causal/pixi.toml | 21 + .../multi_condition_carnival.ipynb | 8944 ++++++++-------- .../multi_condition_tutorial/pixi.lock | 6369 ++++++++---- .../multi_condition_tutorial/pixi.toml | 20 +- docs/tutorials/index.md | 2 + pyproject.toml | 5 + scripts/build_all_docs_local.sh | 4 +- scripts/generate_switcher.py | 7 +- scripts/prepare_docs_pages.py | 209 + scripts/publish_docs_tag.sh | 31 +- tests/graph/test_plotting.py | 86 +- tests/methods/causal/test_linear_dag.py | 757 ++ tests/methods/causal/test_linear_dag_audit.py | 560 + .../methods/causal/test_linear_dag_sparse.py | 175 + .../methods/signaling/test_cellnopt_annnet.py | 48 + tests/methods/signaling/test_cellnopt_dag.py | 266 + tests/methods/signaling/test_cellnopt_ilp.py | 116 - .../signaling/test_cellnopt_plotting.py | 269 + tests/methods/test_bidirectional_phonemes.py | 35 + tests/methods/test_pcst_edge_cases.py | 106 +- tests/methods/test_phonemes.py | 21 + tests/methods/test_predictive_api.py | 382 + tests/methods/test_user_inputs.py | 21 +- tests/test_api_contract.py | 7 + tests/test_backend.py | 216 + tests/test_datasets.py | 194 + tests/test_deprecations.py | 13 - tests/test_generate_switcher.py | 24 + tests/test_prepare_docs_pages.py | 173 + tests/test_release.py | 56 +- 104 files changed, 38678 insertions(+), 22039 deletions(-) create mode 100644 corneto/datasets/__init__.py create mode 100644 corneto/datasets/_catalog.py create mode 100644 corneto/datasets/_fetch.py create mode 100644 corneto/methods/_predictive.py create mode 100644 corneto/methods/causal/__init__.py create mode 100644 corneto/methods/causal/linear_dag.py delete mode 100644 corneto/methods/signal/__init__.py delete mode 100644 corneto/methods/signal/cellnopt_ilp.py create mode 100644 corneto/methods/signaling/annnet.py create mode 100644 corneto/methods/signaling/cellnopt_dag.py delete mode 100644 corneto/methods/signaling/cellnopt_ilp.py create mode 100644 corneto/methods/signaling/cellnopt_plotting.py create mode 100644 datasets/sachs/v1/README.md create mode 100644 datasets/sachs/v1/condition_manifest.csv create mode 100644 datasets/sachs/v1/measurements.tsv create mode 100644 datasets/sachs/v1/sachs-v1.tar.gz create mode 100644 docs/api/corneto.datasets.rst delete mode 100644 docs/custom-index.html create mode 100644 docs/guide/causal/index.md create mode 100644 docs/guide/causal/linear-dag-discovery.ipynb create mode 100644 docs/guide/metabolism/imat.ipynb delete mode 100644 docs/guide/signaling/cellnopt_ILP.ipynb create mode 100644 docs/guide/signaling/cellnopt_dag.ipynb create mode 100644 docs/landing/assets/carnival-schematic.png create mode 100644 docs/landing/assets/corneto-abstract.jpg create mode 100644 docs/landing/assets/corneto-logo-512px.png create mode 100644 docs/landing/assets/decider-eu-logo.png create mode 100644 docs/landing/assets/embl-ebi-logo.png create mode 100644 docs/landing/assets/favicon.ico create mode 100644 docs/landing/assets/fba-schematic.png create mode 100644 docs/landing/assets/feasible-space.png create mode 100644 docs/landing/assets/permedcoe-eu-logo.png create mode 100644 docs/landing/assets/saezlab-logo.png create mode 100644 docs/landing/assets/ukhd-logo.jpg create mode 100644 docs/landing/index.html create mode 100644 docs/releases/v1.0.0-rc.3.md create mode 100644 docs/releases/v1.0.0-rc.4.md create mode 100644 docs/releases/v1.0.0-rc.5.md create mode 100644 docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb create mode 100644 docs/tutorials/annnet-signaling/pixi.toml create mode 100644 docs/tutorials/causal/README.md create mode 100644 docs/tutorials/causal/linear-dag-discovery-sachs.ipynb create mode 100644 docs/tutorials/causal/pixi.toml create mode 100644 scripts/prepare_docs_pages.py create mode 100644 tests/methods/causal/test_linear_dag.py create mode 100644 tests/methods/causal/test_linear_dag_audit.py create mode 100644 tests/methods/causal/test_linear_dag_sparse.py create mode 100644 tests/methods/signaling/test_cellnopt_annnet.py create mode 100644 tests/methods/signaling/test_cellnopt_dag.py delete mode 100644 tests/methods/signaling/test_cellnopt_ilp.py create mode 100644 tests/methods/signaling/test_cellnopt_plotting.py create mode 100644 tests/methods/test_predictive_api.py create mode 100644 tests/test_datasets.py create mode 100644 tests/test_generate_switcher.py create mode 100644 tests/test_prepare_docs_pages.py diff --git a/.github/workflows/build-and-publish.yml b/.github/workflows/build-and-publish.yml index fc5cf44ff..a2d68678f 100644 --- a/.github/workflows/build-and-publish.yml +++ b/.github/workflows/build-and-publish.yml @@ -82,6 +82,11 @@ jobs: ;; esac + - name: Validate committed release notes + if: steps.validate_tag.outputs.should_publish == 'true' + run: | + poetry run python -c "from corneto.release import _ensure_release_notes; _ensure_release_notes('${{ steps.validate_tag.outputs.version }}')" + # 7. Build source & wheel (only if should publish) - name: Build package if: steps.validate_tag.outputs.should_publish == 'true' @@ -89,6 +94,15 @@ jobs: poetry build poetry run twine check dist/* + # The tag is already covered by the merged PR's full test gate. Validate + # only the tag-specific artifact here, before it is published. + - name: Smoke-test the release wheel + if: steps.validate_tag.outputs.should_publish == 'true' + run: | + python -m venv /tmp/corneto-release-wheel-smoke + /tmp/corneto-release-wheel-smoke/bin/pip install dist/*.whl + /tmp/corneto-release-wheel-smoke/bin/python -c 'import corneto; print(corneto.__version__)' + # 8. Create GitHub Release with automated notes - name: Create GitHub Release if: steps.validate_tag.outputs.should_publish == 'true' diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index e365d6b50..c05ecaec4 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -7,28 +7,19 @@ env: on: push: branches: - - dev - main - tags: - - '*' workflow_dispatch: - inputs: - target: - description: "What to build/deploy (dev=latest, main=stable, or tag)" - type: choice - required: true - options: - - dev - - main - - tag - tag: - description: "Tag to deploy when target=tag (e.g., v1.0.0-beta.3)" - type: string - required: false workflow_run: workflows: ["Publish Python Package"] types: [completed] +permissions: + contents: write + +concurrency: + group: docs-pages + cancel-in-progress: false + jobs: build-and-deploy: runs-on: ubuntu-latest @@ -43,14 +34,7 @@ jobs: with: fetch-depth: 0 fetch-tags: true - ref: >- - ${{ - github.event_name == 'workflow_dispatch' && - (github.event.inputs.target == 'tag' && format('refs/tags/{0}', github.event.inputs.tag) || - format('refs/heads/{0}', github.event.inputs.target)) - || github.event_name == 'workflow_run' && github.event.workflow_run.head_sha - || github.ref - }} + ref: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_sha || github.ref }} - name: Set up Python & Graphviz uses: actions/setup-python@v5 @@ -89,29 +73,24 @@ jobs: - name: Determine version_folder id: set_version run: | - case "${GITHUB_REF}" in - refs/heads/dev) - echo "version_folder=latest" >> $GITHUB_OUTPUT - ;; - refs/heads/main) - echo "version_folder=stable" >> $GITHUB_OUTPUT - ;; - refs/tags/*) - v="${GITHUB_REF#refs/tags/}" - echo "version_folder=${v}" >> $GITHUB_OUTPUT - ;; - *) - echo "No docs to deploy for ${GITHUB_REF}" >&2 - exit 0 - ;; - esac + if [ "${{ github.event_name }}" = "workflow_run" ]; then + if [[ "${{ github.event.workflow_run.head_branch }}" == v* ]]; then + echo "version_folder=${{ github.event.workflow_run.head_branch }}" >> $GITHUB_OUTPUT + else + echo "Publish workflow did not run for a release tag" >&2 + exit 1 + fi + elif [ "${GITHUB_REF}" = "refs/heads/main" ]; then + echo "version_folder=stable" >> $GITHUB_OUTPUT + else + echo "No documentation target for ${GITHUB_REF}" >&2 + exit 1 + fi - name: Sync GitHub Releases to Docs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - sleep 30 - python scripts/sync_releases.py --repo saezlab/corneto --docs-dir docs + run: python scripts/sync_releases.py --repo saezlab/corneto --docs-dir docs - name: Build Docs env: @@ -119,66 +98,46 @@ jobs: DOCS_BASE_URL: https://corneto.org run: poetry run sphinx-build -W --keep-going -b html docs docs/_build/html - - name: Deploy “latest” docs - if: ${{ steps.set_version.outputs.version_folder == 'latest' }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: latest - keep_files: true - - - name: Deploy “stable” docs - if: ${{ steps.set_version.outputs.version_folder == 'stable' }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: stable - keep_files: true - - - name: Deploy versioned docs for tag - if: ${{ startsWith(github.ref, 'refs/tags/') }} - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/_build/html - destination_dir: ${{ steps.set_version.outputs.version_folder }} - keep_files: true - - - name: Prepare root redirect + - name: Check out gh-pages run: | - mkdir -p temp_root - touch temp_root/.nojekyll - cp docs/custom-index.html temp_root/index.html - - name: Generate switcher.json + set -euo pipefail + git fetch origin gh-pages:refs/remotes/origin/gh-pages + git worktree add --detach gh-pages-worktree refs/remotes/origin/gh-pages + + - name: Prepare Pages tree env: DOCS_BASE_URL: https://corneto.org run: | - python scripts/generate_switcher.py --output temp_root/switcher.json - - - name: Deploy root redirect - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: temp_root - destination_dir: ./ - keep_files: true - - - name: Patch switcher URL in published HTML + set -euo pipefail + root_args=() + if [ "${{ steps.set_version.outputs.version_folder }}" = "stable" ]; then + root_args+=(--update-root) + fi + poetry run python scripts/prepare_docs_pages.py \ + --pages-dir gh-pages-worktree \ + --build-dir docs/_build/html \ + --landing-dir docs/landing \ + --version-folder "${{ steps.set_version.outputs.version_folder }}" \ + --base-url "${DOCS_BASE_URL}" \ + "${root_args[@]}" + + - name: Commit and deploy Pages tree + env: + VERSION_FOLDER: ${{ steps.set_version.outputs.version_folder }} run: | - git fetch origin gh-pages - git worktree add gh-pages-worktree gh-pages - python scripts/patch_switcher_urls.py \ - --root gh-pages-worktree \ - --new-url https://corneto.org/switcher.json + set -euo pipefail cd gh-pages-worktree - if [ -n "$(git status --porcelain)" ]; then - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git add -A - git commit -m "chore: update switcher json url" - git push origin gh-pages - else - echo "No switcher URL changes detected." + if [ -z "$(git status --porcelain)" ]; then + echo "No Pages changes to deploy." + exit 0 + fi + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add -A + git commit -m "docs: deploy ${VERSION_FOLDER}" + git fetch origin gh-pages + if ! git merge --ff-only origin/gh-pages; then + echo "gh-pages advanced during deployment; refusing to overwrite it." >&2 + exit 1 fi + git push origin HEAD:gh-pages diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index f213c1b4f..7b3d9819d 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -4,8 +4,15 @@ name: Unit tests on: - push: pull_request: + branches: + - main + +# A PR into the public trunk is the release gate. Do not repeat this matrix +# for every temporary branch push, merge to main, or release tag. +concurrency: + group: unit-tests-${{ github.event.pull_request.number }} + cancel-in-progress: true env: POETRY_VERSION: "2.4.1" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 43712a505..e14e0b8e2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,7 +13,7 @@ For notebook execution in tutorials, we also support [Pixi](https://pixi.sh/) en Once installed, clone the repository and install it with poetry. This will create a virtual environment ready for development: ```bash -git clone git+https://github.com/saezlab/corneto.git@dev +git clone https://github.com/saezlab/corneto.git cd corneto poetry install --with dev ``` @@ -243,7 +243,7 @@ poetry run python docs/tutorials/run_notebooks.py - **Pixi integration**: Tutorial notebooks can use individual `pixi.toml` files for isolated execution environments with specific dependencies. - **Poetry and PEP 621**: The project uses both Poetry (legacy) and modern PEP 621 project configuration in `pyproject.toml`. -Please see [contributing with tutorials](https://github.com/saezlab/corneto/blob/dev/docs/tutorials/README.md) for more information on how to contribute tutorials. +Please see [contributing with tutorials](https://github.com/saezlab/corneto/blob/main/docs/tutorials/README.md) for more information on how to contribute tutorials. ## Releases diff --git a/README.md b/README.md index bb697839e..587dac6fb 100644 --- a/README.md +++ b/README.md @@ -61,12 +61,14 @@ pip install corneto CORNETO provides several optional dependency groups: +- **`plot`**: Graphviz, NetworkX, and Matplotlib visualization support - **`research`**: Full research stack with Gurobi, PICOS, visualization, and network tools - **`os`**: Open-source solvers (SCIP, HiGHS) with visualization and network tools - **`ml`**: Machine learning dependencies (JAX, Keras, scikit-learn) Install any combination with: ```bash +pip install corneto[plot] # Visualization without the full research stack pip install corneto[research,ml] # Multiple extras ``` diff --git a/RELEASE.md b/RELEASE.md index 41dc719cb..ad53f294e 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,264 +1,121 @@ # Release Process -CORNETO uses an automated tag-based release process powered by Poetry Dynamic Versioning and GitHub Actions. Git tags serve as the single source of truth for versioning - no manual version bumping in files is required. +CORNETO uses public `main` as its trunk. Every public change reaches it through a +pull request, and an annotated Git tag is the single source of truth for a +release version. Poetry Dynamic Versioning reads that tag; do not edit a version +in project files for a release. -**Note**: This document covers the release process for maintainers. For development setup and contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md). +## Public workflow -## Release Workflow +1. Develop and validate changes in the private workbench as needed. +2. Review the exact publishable snapshot for confidential material. +3. Push that snapshot to a temporary public `publication/` branch and + open one pull request into public `main`. +4. The public-main pull request is the release gate. Its CI validates the merge + result with the Python test matrix, quality checks, documentation build, and + package smoke test. +5. After the PR merges, fast-forward the private mirror's `main` branch to + public `main`. +6. Create the release tag from that public `main` commit. -To create a new release: +There is no public `dev` branch in this workflow. The private `dev` branch may +remain an unpublished integration line, but it is never a public promotion +target. -1. **Integrate `dev` into `main`**. - - Merge via pull request (`dev` -> `main`) or fast-forward merge locally. - ```bash - git checkout dev - git pull --ff-only origin dev - git checkout main - git pull --ff-only origin main - git merge --ff-only dev - git push origin main - ``` +## Creating a release -2. **Create and push the release tag from `main`**: - ```bash - poetry install - git checkout main - git pull --ff-only origin main - poetry run release v1.2.3 - ``` - - Use pre-release tags as needed: `v1.2.3-alpha.0`, `v1.2.3-beta.0`, `v1.2.3-rc.0`. +Only tag a clean local checkout on `main` after the public-main PR has passed +and merged: -3. **Automatic pipeline execution**: - - GitHub Actions detects the new tag - - Builds the package using Poetry - - **Creates GitHub Release with automated release notes** - - Publishes to PyPI via OIDC trusted publishing - - Deploys versioned documentation to GitHub Pages +```bash +git checkout main +git pull --ff-only origin main +poetry install +poetry run release v1.2.3 --dry-run +poetry run release v1.2.3 +``` -4. **Sync `main` back into `dev` after tagging**: - - This keeps `dev` reachable from the latest release tags used by dynamic versioning. - - Without this step, `dev` may continue reporting an older pre-release base (e.g., `1.0.0b3+...`). - ```bash - git checkout dev - git pull --ff-only origin dev - git merge --ff-only origin/main - git push origin dev - ``` +Pre-release tags use the same flow, for example `v1.2.3-alpha.0`, +`v1.2.3-beta.0`, or `v1.2.3-rc.0`. The helper confirms that the tree is clean, +the checkout is on and matches the selected remote's `main`, and the tag does +not already exist. It also validates the committed release page before a tag +can be created. -5. **Version resolution**: - - Poetry Dynamic Versioning automatically extracts the version from the Git tag - - The package version in `pyproject.toml` remains at `0.0.0` (placeholder) - - Built packages use the actual tag version (e.g., `1.2.3`) +## Preparing release notes -6. **Automated Release Notes**: - - GitHub automatically generates release notes based on merged PRs and commits - - Uses conventional commit patterns to categorize changes - - Includes contributor acknowledgments and change summaries - - Release notes can be manually edited after creation if needed +Add `docs/releases/.md` and include it in `docs/releases/index.md` before +opening the public release pull request. Use the tag exactly as written; do not +rewrite `v1.0.0-rc.4` as `CORNETO 1.0.0 RC4`. Pre-releases include the same +badge used by the documentation release synchronizer: -## Example Release Process +```markdown +# Release v1.0.0-rc.4 {bdg-warning}`Pre-release` -```bash -# Integrate dev into main -git checkout dev -git pull --ff-only origin dev -git checkout main -git pull --ff-only origin main -git merge --ff-only dev -git push origin main +One or two sentences describing the purpose of the release. -# Create and push a release tag explicitly -poetry run release v1.0.0-beta.4 +## Highlights -# Sync main back into dev so dev sees the latest release tag ancestry -git checkout dev -git pull --ff-only origin dev -git merge --ff-only origin/main -git push origin dev -``` +- The most important user-facing change. +- Another important change. -The release pipeline (`.github/workflows/build-and-publish.yml`) will automatically: -- Build source and wheel distributions -- Create a GitHub Release with automated release notes -- Publish to PyPI using trusted publishing -- Deploy documentation with version switcher +## Additional context -### Release Helper +Optional installation, migration, compatibility, or method-specific details. +``` -Use the helper command to create and push an explicit tag: +For a stable release, omit the pre-release badge: -```bash -poetry run release v1.2.3 -poetry run release v1.0.0-beta.4 -poetry run release 1.0.0-rc.1 # 'v' prefix is optional +```markdown +# Release v1.0.0 ``` -It validates release preconditions (clean tree, on `main`, in sync with `origin/main`, -`origin/dev` merged into `main`, tag not already present), then creates an annotated tag and pushes it to `origin`. +The release helper and tag publication workflow both enforce the canonical +title and the `## Highlights` section. This keeps manually prepared pages +consistent with pages produced by `scripts/sync_releases.py`. Useful options: ```bash -poetry run release v1.0.0-beta.4 --dry-run # validate only -poetry run release v1.0.0-beta.4 --yes # skip confirmation prompt -poetry run release v1.0.0-beta.4 --remote public # use an explicit release remote +poetry run release v1.0.0-rc.1 --dry-run +poetry run release v1.0.0-rc.1 --yes ``` -The remote defaults to `origin`, which is appropriate for a normal clone of -the public CORNETO repository. In a private development workbench where -`origin` points to a private mirror, configure a separate release-only remote -for the public repository and pass it explicitly: +In the private workbench, the public repository is configured as `public` and +must be named explicitly: ```bash -git remote add public https://github.com/saezlab/corneto.git -poetry run release v1.0.0-beta.8 --remote public --dry-run -poetry run release v1.0.0-beta.8 --remote public +poetry run release v1.0.0-rc.1 --remote public --dry-run +poetry run release v1.0.0-rc.1 --remote public ``` -Before tagging, publish selected private changes through a clean branch and a -pull request into public `dev`, followed by a release pull request from public -`dev` into public `main`. Never release a private development branch directly. - -### Customizing Release Notes +## CI responsibilities -After the automated release is created, you can: -1. Go to the [GitHub Releases page](https://github.com/saezlab/corneto/releases) -2. Edit the release to add additional context, migration guides, or breaking change notices -3. The automated notes will serve as the foundation, with your manual additions +The release process intentionally gives each workflow one job: -## Version Numbering +- Pull requests into `main` run the complete release gate. +- Pushes to `main` deploy the stable documentation only. +- Release tags build the exact tagged distributions, check them, publish to + PyPI, create the GitHub Release, and deploy versioned documentation. -Follow [Semantic Versioning](https://semver.org/): -- `MAJOR.MINOR.PATCH` (e.g., `v1.2.3`) -- Use `v` prefix for tags (e.g., `v1.0.0`, not `1.0.0`) -- Pre-releases: `v1.0.0-alpha.0`, `v1.0.0-beta.0`, `v1.0.0-rc.0` +This avoids repeating the full test matrix for temporary branch pushes, the +post-merge `main` push, and the release tag. The tagged package remains +protected by artifact-specific validation, while the merged PR is the code +quality gate. -## Prerequisites for Releases +## Local validation -Before creating a release, ensure the development environment and code quality standards are met: +Before opening the public-main PR, run the checks relevant to the change. A +full release-candidate check normally includes: -### Development Setup -All maintainers should have the development environment properly configured as described in [CONTRIBUTING.md](CONTRIBUTING.md), including: -- Poetry for dependency management -- Pre-commit hooks installed and active - -### Pre-commit Requirements -**Critical**: Pre-commit hooks must be installed and passing for all commits that will be included in the release. The pre-commit configuration ensures: - -- **Conventional commit messages**: Required for automated GitHub release notes generation (feat:, fix:, docs:, etc.) -- **Code quality**: Linting, formatting, and style checks via Ruff -- **Repository hygiene**: File validation, trailing whitespace removal, etc. - -**Important**: Conventional commits are essential for the automated release notes feature. Each commit should follow the pattern: -``` -(): - -[optional body] - -[optional footer(s)] -``` - -Common types: `feat`, `fix`, `docs`, `chore`, `refactor`, `test`, `ci`, `build`, `perf`, `style`, `revert` - -To set up pre-commit hooks: -```bash -poetry run pre-commit install --hook-type pre-commit --hook-type commit-msg -``` - -### Code Quality Validation -Before releasing, run comprehensive quality checks: ```bash -# Tests poetry run pytest - -# Linting and formatting -poetry run ruff check corneto tests +poetry run ruff check --no-fix corneto tests poetry run ruff format --check corneto tests - -# Package metadata poetry check - -# Advisory type-checking baseline (309 errors in Pyrefly 0.60.0 for RC1) -# This report is tracked but is not an RC blocker. -poetry run pyrefly check corneto - -# Documentation and distributions -poetry run sphinx-build -E -a -W --keep-going -b html docs docs/_build/html +poetry run sphinx-build -W --keep-going -b html docs docs/_build/html poetry build poetry run twine check dist/* ``` -## Development Workflow - -The typical development workflow involves: - -1. **Work in the `dev` branch** for ongoing development -2. **Ensure all commits follow conventional commit format** (enforced by pre-commit hooks) -3. **Run quality checks** before merging to main -4. **Integrate into `main`** when ready for release (via pull request or fast-forward merge) -5. **Create release tag** on the `main` branch to trigger automated publishing -6. **Sync `main` back into `dev`** immediately after tagging - -## Technical Details - -### Poetry Dynamic Versioning Configuration - -The project uses Poetry Dynamic Versioning (configured in `pyproject.toml`): - -```toml -[tool.poetry-dynamic-versioning] -enable = true -vcs = "git" -pattern = "default" -style = "pep440" -tagged-metadata = false -``` - -### GitHub Actions Workflow - -The release workflow (`.github/workflows/build-and-publish.yml`) is triggered by: -- Push events to tags matching `v*` pattern -- Uses OIDC trusted publishing for secure PyPI uploads -- Requires no manual secrets or tokens - -### Branch Strategy - -- **`main`**: Stable releases and release tags -- **`dev`**: Active development branch -- Recommended integration: `dev` -> `main` for releases, then `main` -> `dev` immediately after tagging - -### Documentation Version Switcher - -The documentation uses a centralized version switcher that allows users to navigate between different documentation versions (stable, latest, and specific releases). This system is designed to work across all deployed documentation versions automatically. - -#### Architecture - -The version switcher uses a **single, centrally-updated file hosted on GitHub Pages**: - -1. **Switcher Hosting**: `switcher.json` is deployed to the root of the docs site - - URL: `https://corneto.org/switcher.json` (configured via `DOCS_BASE_URL`) - - This URL is configured in `docs/conf.py` via `_switcher_url_with_ts()` - - A timestamp parameter is added to bypass browser caching - -2. **Automated Updates**: When documentation is deployed to GitHub Pages: - - The docs workflow generates `switcher.json` (`scripts/generate_switcher.py`) - - It is published to the site root alongside the redirect page - - A post-deploy patch step updates existing HTML in `gh-pages` to: - - point `theme_switcher_json_url` to `https://corneto.org/switcher.json` - - correct `theme_switcher_version_match` based on folder (`stable/`, `latest/`, `vX.Y.Z/`) - -3. **Version Mapping**: Documentation deployments use the following version identifiers: - - `dev` branch → deployed as `"latest"` - - `main` branch → deployed as `"stable"` (typically marked as preferred) - - Git tags (e.g., `v1.0.0`) → deployed using the tag name - - The `SPHINX_VERSION_MATCH` environment variable (set in `.github/workflows/deploy-docs.yml`) tells the PyData Sphinx Theme which version is currently being viewed. - -4. **Deployment Behavior (Why `destination_dir` is used without `keep_files`)**: - - Each docs build replaces only its own folder (`latest/`, `stable/`, or `vX.Y.Z/`) on the `gh-pages` branch. - - This ensures clean regeneration for a given version (no mixing of old/new files) while leaving other versions untouched. - - The root redirect is deployed with `keep_files: true` so it doesn’t delete any versioned folders. - -#### Manual Switcher Updates - -If the automatic workflow fails or manual intervention is needed, re-run the docs workflow or regenerate and deploy the root artifacts (redirect + `switcher.json`) using the same workflow steps. +The GitHub release pipeline uses OIDC trusted publishing, creates release notes +automatically, and marks alpha, beta, and RC tags as pre-releases. diff --git a/corneto/_plotting.py b/corneto/_plotting.py index 9e4b08a2e..8bf7a7751 100644 --- a/corneto/_plotting.py +++ b/corneto/_plotting.py @@ -60,6 +60,52 @@ def _as_values(value: Any) -> Optional[np.ndarray]: return np.array(value) +def _scaled_magnitudes( + values: Any, + *, + zero_threshold: float = 1e-6, + scale: Optional[str] = "log", + clip_quantile: Optional[float] = 0.05, +) -> np.ndarray: + """Return finite edge magnitudes normalized to ``[0, 1]``. + + Zeros remain zero, including after quantile clipping. ``clip_quantile`` is + the fraction clipped from the upper tail, matching the historical plotting + option while avoiding lower-tail inflation of small or zero values. + """ + array = np.asarray(values, dtype=float) + if array.ndim != 1: + raise ValueError(f"Plot values must be one-dimensional; got shape {array.shape}.") + if not np.all(np.isfinite(array)): + raise ValueError("Plot values must be finite.") + if zero_threshold < 0: + raise ValueError("zero_threshold must be nonnegative.") + + magnitudes = np.abs(array) + magnitudes[magnitudes < zero_threshold] = 0.0 + if scale == "log": + magnitudes = np.log1p(magnitudes) + elif scale == "std": + std = float(np.std(magnitudes)) + if std > 0: + magnitudes = magnitudes / std + elif scale is not None: + raise ValueError(f"Unknown scale '{scale}'. Use None, 'log', or 'std'.") + + nonzero = magnitudes > 0 + if clip_quantile is not None: + if not 0 <= clip_quantile <= 1: + raise ValueError(f"Clipping value must be between 0 and 1, got {clip_quantile}") + if np.any(nonzero): + upper = float(np.quantile(magnitudes[nonzero], 1 - clip_quantile)) + magnitudes[nonzero] = np.minimum(magnitudes[nonzero], upper) + + maximum = float(np.max(magnitudes)) if magnitudes.size else 0.0 + if maximum <= 0: + return np.zeros_like(magnitudes) + return magnitudes / maximum + + def _processor_sign_magnitude(graph: BaseGraph, data: Dict[str, Any], theme: Theme) -> ProcessorOutput: edge_attrs: Dict[int, Dict[str, str]] = {} vertex_attrs: Dict[Union[int, str], Dict[str, str]] = {} @@ -101,28 +147,21 @@ def _processor_metabolism_flux(graph: BaseGraph, data: Dict[str, Any], theme: Th scale = data.get("scale", "log") clip_quantil = data.get("clip_quantil", 0.05) - flow = np.array(flux_values, dtype=float) - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.sign(flow) * np.log10(np.abs(flow) + 1.0) - elif scale == "std": - std = float(np.std(flow)) - if std > 0: - flow = flow / std - else: - raise ValueError(f"Unknown scale '{scale}'. Use None, 'log', or 'std'.") - if clip_quantil is not None: - flow = clip_quantiles(flow, float(clip_quantil)) - max_flow = max(float(np.max(np.abs(flow))), 1e-6) + flow = np.asarray(flux_values, dtype=float) + magnitudes = _scaled_magnitudes( + flow, + zero_threshold=zero_flow_threshold, + scale=scale, + clip_quantile=None if clip_quantil is None else float(clip_quantil), + ) min_w = float(theme["min_edge_width"]) max_w = float(theme["max_edge_width"]) - for i, v in enumerate(flow): + for i, (v, magnitude) in enumerate(zip(flow, magnitudes)): if scale is None: - edge_width = max_w if abs(v) > 0 else min_w + edge_width = max_w if magnitude > 0 else min_w else: - edge_width = min_w + (max_w - min_w) * abs(v / max_flow) + edge_width = min_w + (max_w - min_w) * magnitude edge_attrs[i] = {"penwidth": str(edge_width)} if v > 0: edge_attrs[i]["color"] = str(theme["positive_color"]) @@ -236,6 +275,59 @@ def _merge_solution_data( return merged +def _resolve_sample_index( + sample: Optional[Union[int, str]], + *, + feature_data: Any, + num_samples: int, +) -> Optional[int]: + if sample is None: + return None + if isinstance(sample, int): + if sample < 0 or sample >= num_samples: + raise ValueError(f"sample index {sample} out of range for {num_samples} samples.") + return sample + samples = getattr(feature_data, "samples", None) + if samples is None: + raise ValueError("A string sample requires feature_data with named samples.") + names = list(samples) + if sample not in samples: + raise ValueError(f"sample '{sample}' not found in feature_data samples.") + index = names.index(sample) + if index >= num_samples: + raise ValueError(f"sample '{sample}' maps to column {index}, but solution data has only {num_samples} columns.") + return index + + +def _select_solution_sample( + data: Dict[str, Any], + *, + sample: Optional[Union[int, str]], + feature_data: Any, +) -> Dict[str, Any]: + selected = dict(data) + for key in ("vertex_values", "edge_values", "flux_values"): + if key not in selected: + continue + values = _as_values(selected[key]) + if values is None or values.ndim <= 1: + continue + if values.ndim != 2: + raise ValueError(f"Plot data '{key}' must be a vector or matrix; got shape {values.shape}.") + if values.shape[1] == 1 and sample is None: + selected[key] = values[:, 0] + continue + index = _resolve_sample_index( + sample, + feature_data=feature_data, + num_samples=values.shape[1], + ) + if index is None: + raise ValueError(f"Plot data '{key}' contains {values.shape[1]} samples; select one with sample=.") + selected[key] = values[:, index] + return selected + + def _resolve_role_styles( preset: Optional[str], role_styles: Optional[Dict[str, Union[str, Dict[str, str]]]], @@ -348,27 +440,144 @@ def _merge_attrs( def _plot_with_networkx(graph: BaseGraph, **kwargs) -> Any: - import matplotlib.pyplot as plt - import networkx as nx - - from corneto.contrib.networkx import corneto_graph_to_networkx - - skip_unsupported_edges = bool(kwargs.get("skip_unsupported_edges", True)) - nx_graph = corneto_graph_to_networkx(graph, skip_unsupported_edges=skip_unsupported_edges) + try: + import matplotlib.colors as mcolors + import matplotlib.pyplot as plt + import networkx as nx + except ImportError as exc: + raise ImportError( + "The NetworkX renderer requires optional plotting dependencies. " + "Install CORNETO with `pip install 'corneto[plot]'`." + ) from exc + + model_keys = { + "graph_attr", + "node_attr", + "edge_attr", + "custom_edge_attr", + "custom_vertex_attr", + "edge_indexes", + "orphan_edges", + } + model = _build_plot_model(graph, **{key: kwargs[key] for key in model_keys if key in kwargs}) + nx_graph = nx.MultiDiGraph() + node_defaults = dict(model["node_defaults"] or {}) + edge_defaults = dict(model["edge_attr"] or {}) + for name, attrs in model["nodes"]: + merged = dict(node_defaults) + merged.update(attrs) + nx_graph.add_node(name, **merged) + for edge_index, (source, target, attrs) in enumerate(model["edges"]): + merged = dict(edge_defaults) + merged.update(attrs) + nx_graph.add_edge(source, target, key=edge_index, **merged) pos = kwargs.get("pos") - if pos is None: - pos = nx.spring_layout(nx_graph) + if pos is not None: + pos = {str(key): value for key, value in pos.items()} + else: + pos = nx.spring_layout(nx_graph, seed=kwargs.get("seed", 0)) ax = kwargs.get("ax") if ax is None: - fig, ax = plt.subplots(figsize=kwargs.get("figsize")) + fig, ax = plt.subplots(figsize=kwargs.get("figsize"), constrained_layout=True) else: fig = ax.figure - nx.draw_networkx(nx_graph, pos=pos, ax=ax, with_labels=kwargs.get("node_labels") is None) - if kwargs.get("node_labels") is not None: - nx.draw_networkx_labels(nx_graph, pos=pos, labels=kwargs["node_labels"], ax=ax) + graphviz_colors = { + "firebrick4": "#8b1a1a", + "dodgerblue4": "#00688b", + "olivedrab3": "#9acd32", + "orangered": "#ff4500", + } + + def mpl_color(value: Any, default: str) -> str: + color = str(value or default) + color = graphviz_colors.get(color.lower(), color) + return color if mcolors.is_color_like(color) else default + + shape_map = { + "box": "s", + "rect": "s", + "rectangle": "s", + "square": "s", + "diamond": "D", + "triangle": "^", + "point": ".", + "circle": "o", + "ellipse": "o", + } + grouped_nodes: Dict[str, List[str]] = {} + for node, attrs in nx_graph.nodes(data=True): + shape = shape_map.get(str(attrs.get("shape", "circle")).lower(), "o") + grouped_nodes.setdefault(shape, []).append(node) + for shape, nodes in grouped_nodes.items(): + attrs = [nx_graph.nodes[node] for node in nodes] + sizes = [float(attr.get("nodesize", 60 if shape == "." else 900)) for attr in attrs] + nx.draw_networkx_nodes( + nx_graph, + pos, + nodelist=nodes, + node_shape=shape, + node_size=sizes, + node_color=[ + mpl_color(attr.get("fillcolor"), "white") if "filled" in str(attr.get("style", "")) else "white" + for attr in attrs + ], + edgecolors=[mpl_color(attr.get("color"), "black") for attr in attrs], + linewidths=[float(attr.get("penwidth", 1.0)) for attr in attrs], + ax=ax, + ) + + for source, target, key, attrs in nx_graph.edges(keys=True, data=True): + style = str(attrs.get("style", "solid")).split(",")[0] + arrowhead = str(attrs.get("arrowhead", "normal")) + arrowstyle = "-[" if arrowhead == "tee" else ("-" if arrowhead == "none" else "-|>") + nx.draw_networkx_edges( + nx_graph, + pos, + edgelist=[(source, target, key)], + edge_color=mpl_color(attrs.get("color"), "black"), + width=float(attrs.get("penwidth", 1.0)), + style=style if style in {"solid", "dashed", "dotted", "dashdot"} else "solid", + arrows=arrowhead != "none", + arrowstyle=arrowstyle, + connectionstyle="arc3,rad=0.05", + ax=ax, + ) + + requested_labels = kwargs.get("node_labels") + if requested_labels is not None: + requested_labels = {str(node): label for node, label in requested_labels.items()} + labels = {} + for node, attrs in nx_graph.nodes(data=True): + if requested_labels is not None: + labels[node] = requested_labels.get(node, node) + else: + labels[node] = attrs.get("label", node) + font_colors = {mpl_color(attrs.get("fontcolor"), "black") for _, attrs in nx_graph.nodes(data=True)} + nx.draw_networkx_labels( + nx_graph, + pos, + labels=labels, + font_color=next(iter(font_colors)) if len(font_colors) == 1 else "black", + font_size=kwargs.get("font_size", 9), + ax=ax, + ) + + edge_labels = { + (source, target, key): attrs["label"] + for source, target, key, attrs in nx_graph.edges(keys=True, data=True) + if attrs.get("label") not in (None, "") + } + if edge_labels: + nx.draw_networkx_edge_labels( + nx_graph, + pos, + edge_labels=edge_labels, + font_size=kwargs.get("edge_font_size", 8), + ax=ax, + ) ax.set_axis_off() return fig @@ -410,6 +619,7 @@ def plot_graph(graph: BaseGraph, renderer: str = "auto", **kwargs) -> Any: if solution_map is not None: merged_solution_map.update(solution_map) data = _merge_solution_data(data, solution, merged_solution_map) + data = _select_solution_sample(data, sample=sample, feature_data=feature_data) if node_roles is None and feature_data is not None: node_roles = _infer_node_roles_from_feature_data(feature_data, sample=sample, role_key=role_key) @@ -613,27 +823,22 @@ def flow_style( scale: Optional[Literal["log", "std"]] = "log", clip_quantil: Optional[float] = 0.05, ): - flow = np.array(P.expr[flow_name].value) - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.sign(flow) * np.log10(np.abs(flow) + 1.0) - elif scale == "std": - flow = flow / np.std(flow) - else: - raise ValueError(f"Unknown normalization method: {scale}") - if clip_quantil is not None: - flow = clip_quantiles(flow, clip_quantil) - max_flow = max(np.max(np.abs(flow)), 1e-6) + flow = np.asarray(P.expr[flow_name].value, dtype=float) + magnitudes = _scaled_magnitudes( + flow, + zero_threshold=zero_flow_threshold, + scale=scale, + clip_quantile=clip_quantil, + ) edge_attrs = dict() - for i, v in enumerate(flow): + for i, (v, magnitude) in enumerate(zip(flow, magnitudes)): # Apply threshold edge width - if abs(v) > 0: + if magnitude > 0: edge_width = max_edge_width else: edge_width = min_edge_width if scale is not None: - edge_width = min_edge_width + (max_edge_width - min_edge_width) * abs(v / max_flow) + edge_width = min_edge_width + (max_edge_width - min_edge_width) * magnitude edge_attrs[i] = {"penwidth": str(edge_width)} if flow[i] > 0: edge_attrs[i]["color"] = positive_color @@ -726,6 +931,8 @@ def _build_plot_model( edges: List[Tuple[str, str, Dict[str, str]]] = [] is_hypergraph = False + included_nodes = set() + connected_nodes = {str(vertex) for source, target in graph.E for vertex in (*source, *target)} for i, e in enumerate(graph.edges()): if edge_indexes is not None and i not in edge_indexes: continue @@ -743,6 +950,7 @@ def add_node(v_name: str, default_shape: str) -> None: if v_name in custom_vertex_attr_str: attrs.update(custom_vertex_attr_str[v_name]) nodes.append((v_name, attrs)) + included_nodes.add(v_name) if len(s) == 0: v_name = f"e_{i}_source" @@ -785,6 +993,17 @@ def add_node(v_name: str, default_shape: str) -> None: attrs.update(custom_edge_attr.get(i, {})) edges.append((v_s[0], v_t[0], attrs)) + for vertex in graph.V: + vertex_name = str(vertex) + if vertex_name in included_nodes or vertex_name in connected_nodes: + continue + attrs = {} + if "shape" not in node_defaults: + attrs["shape"] = "circle" + if vertex_name in custom_vertex_attr_str: + attrs.update(custom_vertex_attr_str[vertex_name]) + nodes.append((vertex_name, attrs)) + return { "graph_attr": graph_attr, "node_defaults": node_defaults, diff --git a/corneto/backend/_base.py b/corneto/backend/_base.py index 70a2f5145..c70abf6b6 100644 --- a/corneto/backend/_base.py +++ b/corneto/backend/_base.py @@ -51,6 +51,34 @@ def _get_unique_name(prefix: str = "_var") -> str: return prefix + hex(hash(uuid4())) +def _sparse_vector_replication(vector_size: int, repetitions: int): + """Return a sparse map from a vector to repeated Fortran-order columns.""" + from scipy.sparse import csr_matrix + + if vector_size <= 0 or repetitions <= 0: + return csr_matrix((vector_size * repetitions, vector_size)) + rows = np.arange(vector_size * repetitions, dtype=int) + columns = np.tile(np.arange(vector_size, dtype=int), repetitions) + return csr_matrix( + (np.ones(rows.size, dtype=float), (rows, columns)), + shape=(vector_size * repetitions, vector_size), + ) + + +def _sparse_vector_entry_repetition(vector_size: int, repetitions: int): + """Return a sparse map that repeats each vector entry consecutively.""" + from scipy.sparse import csr_matrix + + if vector_size <= 0 or repetitions <= 0: + return csr_matrix((vector_size * repetitions, vector_size)) + rows = np.arange(vector_size * repetitions, dtype=int) + columns = np.repeat(np.arange(vector_size, dtype=int), repetitions) + return csr_matrix( + (np.ones(rows.size, dtype=float), (rows, columns)), + shape=(vector_size * repetitions, vector_size), + ) + + class CExpression(abc.ABC): # Arithmetic operator overloading with Numpy # See: https://www.cvxpy.org/_modules/cvxpy/expressions/expression.html#Expression @@ -370,6 +398,16 @@ def __init__( self._shape = shape self._is_variable = variable + # Constants already carry their exact value in ``expr``. Creating + # synthetic +/-infinity bounds for them would allocate dense arrays + # with the full expression shape, defeating sparse constants. + if not variable and lb is None and ub is None: + self._lb = None + self._ub = None + self._name = name + self._vartype = vartype + return + if lb is None: if vartype == VarType.CONTINUOUS: lb_r = np.full(expr.shape, -np.inf) @@ -910,7 +948,7 @@ def Flow( if isinstance(ub, np.ndarray) and len(ub.shape) == 1: ub = np.tile(ub, (n_flows, 1)).T F = self.Variable(name=varname, shape=shape, lb=lb, ub=ub) - A = self._sparse(g.get_vertex_incidence_matrix_as_lists(values=values)) + A = self.Constant(self._sparse(g.get_vertex_incidence_matrix_as_lists(values=values))) P = self.Problem(A @ F == 0) if shared_bounds and n_flows > 1: # check num dims of lb @@ -922,7 +960,7 @@ def Flow( P += S <= ub[:, 0] P += S >= lb[:, 0] if create_nonzero_indicators: - P += NonZeroIndicator(tolerance=indicator_tolerance) + P += NonZeroIndicator(var_name=varname, tolerance=indicator_tolerance) Ip = P.get_symbol(varname + "_ipos") In = P.get_symbol(varname + "_ineg") P.register(alias_flow_ipos, Ip) @@ -1143,13 +1181,56 @@ def Acyclic( else: raise ValueError("At least one indicator variable name is required") - # Limit the number of parents per node, if requested + # Limit the number of parents per node, if requested. A negative + # selection traverses an edge in reverse, so it contributes a parent + # at the edge's source rather than at its target. if max_parents is not None: - for v, max_val in max_parents.items(): - edges_idx = [i for i, _ in g.in_edges(v)] - if edges_idx: - # Sum selected parent edges - P += np.ones((len(edges_idx),)) @ indicator[edges_idx] <= max_val + from scipy.sparse import csr_matrix + + parent_vertices = list(max_parents) + parent_vertex_index = {vertex: index for index, vertex in enumerate(parent_vertices)} + positive_rows = [] + positive_columns = [] + negative_rows = [] + negative_columns = [] + for edge_index, (source, target) in enumerate(g.E): + if target: + target_vertex = next(iter(target)) + if target_vertex in parent_vertex_index: + positive_rows.append(parent_vertex_index[target_vertex]) + positive_columns.append(edge_index) + if source: + source_vertex = next(iter(source)) + if source_vertex in parent_vertex_index: + negative_rows.append(parent_vertex_index[source_vertex]) + negative_columns.append(edge_index) + + parent_count = None + if Ip is not None and positive_rows: + positive_selector = csr_matrix( + ( + np.ones(len(positive_rows), dtype=float), + (positive_rows, positive_columns), + ), + shape=(len(parent_vertices), g.num_edges), + ) + parent_count = self.Constant(positive_selector) @ Ip + if In is not None and negative_rows: + negative_selector = csr_matrix( + ( + np.ones(len(negative_rows), dtype=float), + (negative_rows, negative_columns), + ), + shape=(len(parent_vertices), g.num_edges), + ) + negative_parent_count = self.Constant(negative_selector) @ In + parent_count = negative_parent_count if parent_count is None else parent_count + negative_parent_count + if parent_count is not None: + parent_count = parent_count.reshape((len(parent_vertices), 1)) + max_values = np.asarray([max_parents[vertex] for vertex in parent_vertices], dtype=float).reshape( + (-1, 1) + ) + P += parent_count <= max_values # Determine number of samples (if the indicator is 1D, assume 1 sample) if len(indicator.shape) == 1: @@ -1361,6 +1442,480 @@ def Indicator( c += [S >= indicator.multiply(lb), S <= indicator.multiply(ub)] return self.Problem(c) + def ExactSupport( + self, + V: CSymbol, + *, + selected: Optional[CExpression] = None, + indexes: Optional[Union[int, slice, Tuple, List, np.ndarray]] = None, + epsilon: Union[float, List[float], np.ndarray] = 1.0, + nonnegative: bool = False, + name: Optional[str] = None, + positive_name: Optional[str] = None, + negative_name: Optional[str] = None, + ) -> ProblemDef: + """Link a bounded value to binary structural support with a gap. + + ``selected == 0`` forces the value to zero. ``selected == 1`` forces + its magnitude to be at least ``epsilon``. For nonnegative values this + uses one binary per entry. Signed values use mutually exclusive + positive and negative binaries and expose their sum as ``selected``. + + ``epsilon`` may be a scalar or an array explicitly broadcastable to + the selected value shape. "Exact" refers to this mathematical + minimum-magnitude gap; it is not a solver-tolerance guarantee, and + values smaller than the requested gap may still be returned by a + numerically inaccurate solve and should be checked by the caller. + + An existing binary selector symbol can be supplied to avoid + introducing a redundant binary variable, which is useful when a + method already has a shared structural edge-selection variable. An + arbitrary selector expression is linked to an auxiliary binary + selector, so fractional expression values make the model infeasible + instead of relaxing the support constraints. + """ + if isinstance(epsilon, (bool, np.bool_)): + raise TypeError("epsilon must be a finite positive number or array.") + epsilon_input = np.asarray(epsilon) + if epsilon_input.dtype.kind in {"b", "c", "U", "S"}: + raise TypeError("epsilon must be a finite positive number or array.") + if epsilon_input.dtype.kind == "O" and any( + isinstance(value, (bool, np.bool_)) or not isinstance(value, numbers.Real) for value in epsilon_input.flat + ): + raise TypeError("epsilon must be a finite positive number or array.") + try: + epsilon_input = np.asarray(epsilon, dtype=float) + except (TypeError, ValueError) as error: + raise TypeError("epsilon must be a finite positive number or array.") from error + + if V._provided_lb is None or V._provided_ub is None: + raise ValueError(f"The continuous variable {V.name} is unbounded, exact support cannot be created.") + + S = V if indexes is None else V[indexes] + lb = np.asarray(V.lb if indexes is None else V.lb[indexes], dtype=float) + ub = np.asarray(V.ub if indexes is None else V.ub[indexes], dtype=float) + if np.shape(lb) != S.shape or np.shape(ub) != S.shape: + expected_size = int(np.prod(S.shape)) + if lb.size == expected_size: + lb = lb.reshape(S.shape) + else: + lb = np.broadcast_to(lb, S.shape) + if ub.size == expected_size: + ub = ub.reshape(S.shape) + else: + ub = np.broadcast_to(ub, S.shape) + if not np.all(np.isfinite(lb)) or not np.all(np.isfinite(ub)): + raise ValueError("ExactSupport requires finite lower and upper bounds.") + if np.any(lb > ub): + raise ValueError("ExactSupport requires lower bounds not to exceed upper bounds.") + try: + epsilon_values = np.broadcast_to(epsilon_input, S.shape) + except ValueError as error: + raise ValueError( + f"epsilon with shape {epsilon_input.shape} cannot be broadcast to selected value shape {S.shape}." + ) from error + if not np.all(np.isfinite(epsilon_values)) or np.any(epsilon_values <= 0): + raise ValueError("epsilon must be a finite positive number or array.") + + support_name = name or f"{V.name}_support" + constraints = [] + selector = None + if selected is not None: + if not isinstance(selected, CExpression): + raise TypeError("selected must be a binary-valued CExpression.") + if selected.shape != S.shape: + raise ValueError(f"selected has shape {selected.shape}; expected {S.shape}.") + if isinstance(selected, CSymbol): + if selected._vartype != VarType.BINARY: + raise TypeError("selected must be a binary-valued selector.") + selector = selected + else: + selector = self.Variable( + f"{support_name}_selector", + S.shape, + 0, + 1, + vartype=VarType.BINARY, + ) + constraints.append(selector == selected) + + if nonnegative: + if np.any(lb < 0): + raise ValueError("ExactSupport(..., nonnegative=True) requires nonnegative lower bounds.") + if selected is None: + selector = self.Variable(support_name, S.shape, 0, 1, vartype=VarType.BINARY) + + possible = np.asarray(ub >= epsilon_values, dtype=float) + if not np.all(possible): + constraints.append(selector.multiply(1 - possible) == 0) + constraints += [S >= selector.multiply(epsilon_values), S <= selector.multiply(ub)] + problem = self.Problem(constraints) + if selector.name != support_name: + problem.register(support_name, selector) + return problem + + if positive_name is None: + positive_name = f"{support_name}_positive" + if negative_name is None: + negative_name = f"{support_name}_negative" + positive = self.Variable(positive_name, S.shape, 0, 1, vartype=VarType.BINARY) + negative = self.Variable(negative_name, S.shape, 0, 1, vartype=VarType.BINARY) + support = positive + negative + if selector is not None: + constraints.append(support == selector) + support = selector + + positive_possible = np.asarray(ub >= epsilon_values, dtype=float) + negative_possible = np.asarray(lb <= -epsilon_values, dtype=float) + if not np.all(positive_possible): + constraints.append(positive.multiply(1 - positive_possible) == 0) + if not np.all(negative_possible): + constraints.append(negative.multiply(1 - negative_possible) == 0) + constraints += [ + positive + negative <= 1, + S >= negative.multiply(lb) + positive.multiply(epsilon_values), + S <= positive.multiply(ub) - negative.multiply(epsilon_values), + ] + problem = self.Problem(constraints) + if support.name != support_name: + problem.register(support_name, support) + return problem + + def SelectedFlow( + self, + g: BaseGraph, + *, + lb: Optional[Union[float, List, np.ndarray]] = 0, + ub: Optional[Union[float, List, np.ndarray]] = DEFAULT_UB, + n_flows: int = 1, + edge_indices: Optional[Iterable[int]] = None, + flow_blocks: Optional[Iterable[Tuple[Iterable[int], Union[slice, Iterable[int]]]]] = None, + selector_groups: Optional[Iterable[int]] = None, + epsilon: float = 1.0, + exact_support: bool = True, + selected: Optional[CExpression] = None, + acyclic_graph: Optional[BaseGraph] = None, + max_parents: Optional[Union[int, Dict[Any, int]]] = None, + flow_name: str = EXPR_NAME_FLOW, + selected_by_flow_name: str = "selected_by_flow", + selected_by_group_name: Optional[str] = None, + selected_any_name: Optional[str] = "selected_any", + dag_name: str = VAR_DAG, + ) -> ProblemDef: + """Create bounded flows with exact per-flow and shared support. + + Flow conservation is imposed on ``g``. Exact support binaries are + created only for ``edge_indices`` so boundary edges do not consume + unnecessary integer variables. Rows whose selected flow bounds are + nonnegative use one binary per flow; rows that permit negative flow + automatically use mutually exclusive positive and negative binaries. + Set ``exact_support=False`` to use one bounded indicator per entry: + nonzero flow still implies selection, but a selected entry may carry + zero flow. This smaller formulation is suitable when a minimizing + objective makes such false selections unattractive and flow direction + is not otherwise required. + + ``flow_blocks`` can map multiple rectangular regions of the flow + matrix to the same logical edge ordering. ``selector_groups`` can then + map block columns to shared selector columns. This supports layouts + such as forward and reversed edge blocks without indicators on the + unused off-diagonal blocks. Set ``selected_any_name=None`` when a union + across selector columns is not needed. + + The union across flows can be linked to an existing shared selector. + With signed acyclic flows, direction-specific unions are used so a + negative flow orders the edge in reverse. No redundant structural-union + binary is created in that case. + """ + if not isinstance(n_flows, int) or isinstance(n_flows, bool) or n_flows <= 0: + raise ValueError("n_flows must be a positive integer.") + if not isinstance(exact_support, bool): + raise TypeError("exact_support must be a boolean.") + if flow_blocks is not None and edge_indices is not None: + raise ValueError("Provide either edge_indices or flow_blocks, not both.") + + problem = self.Flow( + g, + lb=lb, + ub=ub, + n_flows=n_flows, + shared_bounds=False, + alias_flow=flow_name, + force_matrix=True, + ) + flow = problem.expr[flow_name] + + if flow_blocks is None: + rows = range(g.num_edges) if edge_indices is None else edge_indices + flow_blocks = [(rows, slice(0, n_flows))] + + normalized_blocks = [] + used_flow_columns = set() + num_selected_edges = None + for block_index, (block_rows, block_columns) in enumerate(flow_blocks): + rows = np.asarray(list(block_rows), dtype=int) + if rows.ndim != 1: + raise ValueError(f"flow_blocks[{block_index}] edge indices must be one-dimensional.") + if np.any(rows < 0) or np.any(rows >= g.num_edges): + raise ValueError(f"flow_blocks[{block_index}] contains an edge outside the flow graph.") + if num_selected_edges is None: + num_selected_edges = len(rows) + elif len(rows) != num_selected_edges: + raise ValueError("Every flow block must map the same number of logical edges.") + + if isinstance(block_columns, slice): + start, stop, step = block_columns.indices(n_flows) + columns = np.arange(start, stop, step, dtype=int) + else: + columns = np.asarray(list(block_columns), dtype=int) + if columns.ndim != 1 or not columns.size: + raise ValueError(f"flow_blocks[{block_index}] flow columns must be a non-empty one-dimensional set.") + if np.any(columns < 0) or np.any(columns >= n_flows): + raise ValueError(f"flow_blocks[{block_index}] contains a flow column outside [0, {n_flows}).") + if columns.size > 1 and np.any(np.diff(columns) != 1): + raise ValueError("Flow columns within each block must be contiguous and increasing.") + duplicate_columns = used_flow_columns.intersection(columns.tolist()) + if duplicate_columns: + raise ValueError("Flow blocks must use disjoint flow columns.") + used_flow_columns.update(columns.tolist()) + normalized_blocks.append((rows, slice(int(columns[0]), int(columns[-1]) + 1), len(columns))) + + if not normalized_blocks or num_selected_edges is None or num_selected_edges == 0: + raise ValueError("SelectedFlow requires at least one mapped edge.") + if selected is not None and selected.shape != (num_selected_edges,): + raise ValueError(f"selected has shape {selected.shape}; expected {(num_selected_edges,)}.") + + def combine_rows(parts): + """Stack row groups and restore the caller's edge order.""" + if len(parts) == 1: + return parts[0][1] + positions = np.concatenate([part_positions for part_positions, _ in parts]) + stacked = self.vstack([expression for _, expression in parts]) + return stacked[np.argsort(positions), :] + + selection_blocks = [] + positive_blocks = [] + negative_blocks = [] + has_signed_rows = False + multiple_blocks = len(normalized_blocks) > 1 + for block_index, (block_rows, block_columns, _) in enumerate(normalized_blocks): + block_flow = flow[block_rows, block_columns] + selected_lb = np.asarray(flow.lb[block_rows, block_columns], dtype=float) + if selected_lb.shape != block_flow.shape: + selected_lb = np.broadcast_to(selected_lb, block_flow.shape) + signed_rows = np.any(selected_lb < 0, axis=1) + nonnegative_positions = np.flatnonzero(~signed_rows) + signed_positions = np.flatnonzero(signed_rows) + has_signed_rows |= exact_support and bool(signed_positions.size) + + block_base_name = ( + f"{selected_by_flow_name}_block_{block_index}" if multiple_blocks else selected_by_flow_name + ) + selection_parts = [] + positive_parts = [] + negative_parts = [] + + if not exact_support: + if signed_positions.size and acyclic_graph is not None: + raise ValueError("Signed acyclic flows require exact_support=True.") + problem += self.Indicator( + flow, + indexes=(block_rows, block_columns), + name=block_base_name, + ) + support = problem.expr[block_base_name] + selection_blocks.append(support) + positive_blocks.append(support) + negative_blocks.append(self.Constant(np.zeros(support.shape))) + continue + + if nonnegative_positions.size: + nonnegative_edges = block_rows[nonnegative_positions] + support_name = block_base_name if not signed_positions.size else f"{block_base_name}_nonnegative" + problem += self.ExactSupport( + flow, + indexes=(nonnegative_edges, block_columns), + epsilon=epsilon, + nonnegative=True, + name=support_name, + ) + support = problem.expr[support_name] + selection_parts.append((nonnegative_positions, support)) + positive_parts.append((nonnegative_positions, support)) + negative_parts.append( + ( + nonnegative_positions, + self.Constant(np.zeros(support.shape)), + ) + ) + + if signed_positions.size: + signed_edges = block_rows[signed_positions] + support_name = block_base_name if not nonnegative_positions.size else f"{block_base_name}_signed" + positive_name = f"{support_name}_positive" + negative_name = f"{support_name}_negative" + problem += self.ExactSupport( + flow, + indexes=(signed_edges, block_columns), + epsilon=epsilon, + name=support_name, + positive_name=positive_name, + negative_name=negative_name, + ) + selection_parts.append((signed_positions, problem.expr[support_name])) + positive_parts.append((signed_positions, problem.expr[positive_name])) + negative_parts.append((signed_positions, problem.expr[negative_name])) + + selection_blocks.append(combine_rows(selection_parts)) + positive_blocks.append(combine_rows(positive_parts)) + negative_blocks.append(combine_rows(negative_parts)) + + selected_by_flow = selection_blocks[0] if len(selection_blocks) == 1 else self.hstack(selection_blocks) + if selected_by_flow_name not in problem.expressions: + problem.register(selected_by_flow_name, selected_by_flow) + + positive_by_flow = negative_by_flow = None + if has_signed_rows: + positive_by_flow_name = f"{selected_by_flow_name}_positive" + negative_by_flow_name = f"{selected_by_flow_name}_negative" + positive_by_flow = positive_blocks[0] if len(positive_blocks) == 1 else self.hstack(positive_blocks) + negative_by_flow = negative_blocks[0] if len(negative_blocks) == 1 else self.hstack(negative_blocks) + if positive_by_flow_name not in problem.expressions: + problem.register(positive_by_flow_name, positive_by_flow) + if negative_by_flow_name not in problem.expressions: + problem.register(negative_by_flow_name, negative_by_flow) + + num_mapped_flows = selected_by_flow.shape[1] + if selector_groups is None: + selector_groups = np.arange(num_mapped_flows, dtype=int) + else: + selector_groups = np.asarray(list(selector_groups), dtype=int) + if selector_groups.shape != (num_mapped_flows,): + raise ValueError(f"selector_groups has shape {selector_groups.shape}; expected {(num_mapped_flows,)}.") + if np.any(selector_groups < 0): + raise ValueError("selector_groups must contain nonnegative integers.") + unique_groups = np.unique(selector_groups) + if not np.array_equal(unique_groups, np.arange(len(unique_groups))): + raise ValueError("selector_groups must use consecutive group indexes starting at zero.") + + num_selector_groups = int(np.max(selector_groups)) + 1 + identity_groups = np.array_equal(selector_groups, np.arange(num_mapped_flows)) + if identity_groups: + selected_by_group = selected_by_flow + else: + group_name = selected_by_group_name or f"{selected_by_flow_name}_grouped" + selected_by_group = self.Variable( + group_name, + (num_selected_edges, num_selector_groups), + vartype=VarType.BINARY, + ) + from scipy.sparse import csr_matrix + + group_matrix = csr_matrix( + ( + np.ones(num_mapped_flows, dtype=float), + (np.arange(num_mapped_flows), selector_groups), + ), + shape=(num_mapped_flows, num_selector_groups), + ) + expanded_groups = selected_by_group @ group_matrix.T + problem += selected_by_flow <= expanded_groups + problem += selected_by_group <= selected_by_flow @ group_matrix + if selected_by_group_name is not None and selected_by_group_name not in problem.expressions: + problem.register(selected_by_group_name, selected_by_group) + + if selected_any_name is None: + if selected is not None: + raise ValueError("selected requires selected_any_name.") + if acyclic_graph is not None: + raise ValueError("acyclic_graph requires selected_any_name.") + return problem + + def union_across_flows(values, name): + num_value_columns = values.shape[1] + if num_value_columns == 1: + union = values[:, 0] + else: + union = self.Variable( + name, + (num_selected_edges,), + vartype=VarType.BINARY, + ) + union_matrix = self.Constant(_sparse_vector_replication(num_selected_edges, num_value_columns)) @ union + union_matrix = union_matrix.reshape((num_selected_edges, num_value_columns)) + problem.add_constraints(values <= union_matrix) + problem.add_constraints(union <= values.sum(axis=1)) + if name not in problem.expressions: + problem.register(name, union) + return union + + signed_acyclic = has_signed_rows and acyclic_graph is not None + positive_any = negative_any = None + if signed_acyclic: + positive_any_name = f"{selected_any_name}_positive" + negative_any_name = f"{selected_any_name}_negative" + positive_any = union_across_flows(positive_by_flow, positive_any_name) + negative_any = union_across_flows(negative_by_flow, negative_any_name) + # A shared DAG cannot use the same structural edge in both + # directions, even when the directions occur in different flows. + problem += positive_any + negative_any <= 1 + directional_union = positive_any + negative_any + if selected is None: + selected_any = directional_union + else: + selected_any = selected + problem += selected_any == directional_union + else: + if selected is None: + selected_any = ( + selected_by_group[:, 0] + if num_selector_groups == 1 + else self.Variable( + selected_any_name, + (num_selected_edges,), + vartype=VarType.BINARY, + ) + ) + else: + selected_any = selected + + if num_selector_groups == 1: + problem += selected_any == selected_by_group[:, 0] + else: + selected_matrix = ( + self.Constant(_sparse_vector_replication(num_selected_edges, num_selector_groups)) @ selected_any + ) + selected_matrix = selected_matrix.reshape((num_selected_edges, num_selector_groups)) + problem += selected_by_group <= selected_matrix + problem += selected_any <= selected_by_group.sum(axis=1) + + if selected_any_name not in problem.expressions: + problem.register(selected_any_name, selected_any) + + if acyclic_graph is not None: + if acyclic_graph.num_edges != num_selected_edges: + raise ValueError("acyclic_graph must have one edge for each selected flow edge.") + if signed_acyclic: + self.Acyclic( + acyclic_graph, + problem, + indicator_positive_var_name=f"{selected_any_name}_positive", + indicator_negative_var_name=f"{selected_any_name}_negative", + acyclic_var_name=dag_name, + max_parents=max_parents, + ) + else: + indicator_name = f"_{selected_any_name}_acyclic" + problem.register(indicator_name, selected_any) + self.Acyclic( + acyclic_graph, + problem, + indicator_positive_var_name=indicator_name, + acyclic_var_name=dag_name, + max_parents=max_parents, + ) + return problem + def NonZeroIndicator( self, V: CSymbol, @@ -1535,7 +2090,7 @@ def __getattr__(self, name): def _find_continuous_var(p): # Search for continous vars - cvars = [k for k, v in p.symbols.items() if v._vartype == VarType.CONTINUOUS] + cvars = [k for k, v in p.symbols.items() if v.is_variable and v._vartype == VarType.CONTINUOUS] if len(cvars) == 0: raise ValueError("No available continuous vars for creating indicator vars") if len(cvars) == 1: diff --git a/corneto/backend/_picos_backend.py b/corneto/backend/_picos_backend.py index 588a8347a..074362b74 100644 --- a/corneto/backend/_picos_backend.py +++ b/corneto/backend/_picos_backend.py @@ -2,9 +2,10 @@ from typing import Any, List, Optional, Set, Tuple, Union import numpy as np +from scipy.sparse import csr_matrix from corneto._constants import Direction, Solver, VarType -from corneto._settings import _numpy_array +from corneto._decorators import _delegate from corneto.backend._base import ( Backend, CExpression, @@ -20,9 +21,13 @@ def _get_shape(a: Any): + if hasattr(a, "_corneto_shape"): + return a._corneto_shape if hasattr(a, "_csymbol_shape"): return a._csymbol_shape if hasattr(a, "_expr"): + if hasattr(a._expr, "_corneto_shape"): + return a._expr._corneto_shape return a._expr._csymbol_shape if hasattr(a._expr, "_csymbol_shape") else a._expr.shape if hasattr(a, "shape"): return a.shape @@ -32,6 +37,8 @@ def _get_shape(a: Any): def _infer_shape(c: Any): shape = _get_shape(c) if len(shape) == 2 and (shape[0] == 1 or shape[1] == 1): + if hasattr(c, "_corneto_shape") or (hasattr(c, "_expr") and hasattr(c._expr, "_corneto_shape")): + return shape # This is the problematic case, as any transformation # using PICOS will result in a 2D array. if hasattr(c, "_proxy_symbols"): @@ -58,6 +65,12 @@ def shape(self) -> Tuple[int, ...]: def _create_proxy_expr(self, expr: Any, symbols: Optional[Set["CSymbol"]] = None) -> "PicosExpression": return PicosExpression(expr, symbols) + @property + def T(self): + result = self._expr.T + result._corneto_shape = tuple(result.shape) + return self._create(result, {}) + def _elementwise_mul(self, other: Any) -> Any: return self._expr ^ other @@ -65,7 +78,64 @@ def _norm(self, p: int = 2) -> CExpression: return pc.Norm(self._expr, p=p) def _sum(self, axis: Optional[int] = None) -> Any: - return pc.sum(self._expr, axis=axis) + shape = _infer_shape(self) + if len(shape) > 2: + return pc.sum(self._expr, axis=axis) + + if len(shape) == 0: + return self._expr + + if len(shape) == 1: + if axis not in (None, 0, -1): + return pc.sum(self._expr, axis=axis) + rows, columns = shape[0], 1 + else: + rows, columns = shape + if axis is not None and axis not in (0, 1, -1, -2): + return pc.sum(self._expr, axis=axis) + + if axis is None or len(shape) == 1: + size = rows * columns + operator = csr_matrix( + ( + np.ones(size, dtype=float), + (np.zeros(size, dtype=int), np.arange(size, dtype=int)), + ), + shape=(1, size), + ) + flattened = self._expr.reshaped((size, 1)) + result = pc.Constant(_get_unique_name("sum"), value=operator) * flattened + output_shape = (1,) if len(shape) == 1 else (1, 1) + result._corneto_shape = output_shape + return result + + if axis in (0, -2): + operator = csr_matrix( + ( + np.ones(rows, dtype=float), + (np.zeros(rows, dtype=int), np.arange(rows, dtype=int)), + ), + shape=(1, rows), + ) + result = pc.Constant(_get_unique_name("sum"), value=operator) * self._expr + result._corneto_shape = (1, columns) + return result + + operator = csr_matrix( + ( + np.ones(columns, dtype=float), + (np.arange(columns, dtype=int), np.zeros(columns, dtype=int)), + ), + shape=(columns, 1), + ) + result = self._expr * pc.Constant(_get_unique_name("sum"), value=operator) + result._corneto_shape = (rows, 1) + return result + + @_delegate(override=True) + def sum(self, axis: Optional[int] = None) -> CExpression: + """Reduce with sparse affine operators instead of PICOS dense sums.""" + return self._sum(axis=axis) def _max(self, axis: Optional[int] = None) -> Any: raise NotImplementedError() @@ -100,7 +170,9 @@ def _vstack(self, other: Any) -> Any: return a // b def _reshape(self, shape: Tuple[int, ...]) -> Any: - return self._expr.reshaped(shape) + result = self._expr.reshaped(shape) + result._corneto_shape = tuple(shape) + return result @property def value(self) -> np.ndarray: @@ -153,7 +225,10 @@ def value(self, value: Any) -> None: class PicosBackend(Backend): def __init__(self, default_solver: Optional[str] = None) -> None: - super().__init__(default_solver, _numpy_array) + # PICOS accepts scipy CSR matrices as affine constants. Keep the + # backend's graph operators sparse; dense conversion is only needed + # for the data-loading helpers used by older callers. + super().__init__(default_solver, csr_matrix) def _load(self): import picos diff --git a/corneto/datasets/__init__.py b/corneto/datasets/__init__.py new file mode 100644 index 000000000..cea3cccf5 --- /dev/null +++ b/corneto/datasets/__init__.py @@ -0,0 +1,5 @@ +"""Small, versioned datasets fetched on demand.""" + +from corneto.datasets._fetch import DatasetError, DatasetIntegrityError, fetch_dataset + +__all__ = ["DatasetError", "DatasetIntegrityError", "fetch_dataset"] diff --git a/corneto/datasets/_catalog.py b/corneto/datasets/_catalog.py new file mode 100644 index 000000000..ec40ad0f0 --- /dev/null +++ b/corneto/datasets/_catalog.py @@ -0,0 +1,61 @@ +"""Built-in dataset metadata for the CORNETO dataset loader.""" + +from __future__ import annotations + +from dataclasses import dataclass +from pathlib import Path +from typing import Mapping + + +@dataclass(frozen=True) +class DatasetSpec: + """Immutable metadata required to locate and validate one dataset revision.""" + + name: str + version: str + remote_url: str | None + archive_sha256: str + file_sha256: Mapping[str, str] + provenance: str = "" + license: str = "" + + @property + def relative_path(self) -> Path: + return Path(self.name) / self.version + + +_SACHS_SPEC = DatasetSpec( + name="sachs", + version="v1", + # This path becomes available when the dataset revision is published. The + # checksum prevents a mutable hosting path from silently changing data. + remote_url="https://raw.githubusercontent.com/saezlab/corneto/main/datasets/sachs/v1/sachs-v1.tar.gz", + archive_sha256="78c23eb79223a9b03cea9f4ce4e832151be3c99c54b31e2ee3ea7ec983bdaca3", + file_sha256={ + "measurements.tsv": "a40650c0fe6aa6581dca556202cd4e94fb0dfa1e6d121c710123bbc164509bcd", + "condition_manifest.csv": "9f3083b5a2b20b8b2d4cbfab1f00153765c400fd76c94c5392c81b004ebf6fcb", + "README.md": "979d829cbc105873c38b00d99733d0563c190bbb44f873b4697f13d8acccd777", + }, + provenance="https://doi.org/10.5281/zenodo.7681811", + license="CC BY 4.0", +) + +DATASETS: dict[tuple[str, str], DatasetSpec] = { + (_SACHS_SPEC.name, _SACHS_SPEC.version): _SACHS_SPEC, +} + + +def _validate_component(value: str, label: str) -> None: + if not isinstance(value, str) or not value or value in {".", ".."} or Path(value).name != value: + raise ValueError(f"{label} must be a single non-empty path component.") + + +def get_dataset_spec(name: str, version: str) -> DatasetSpec: + """Return the registered specification for a dataset revision.""" + _validate_component(name, "name") + _validate_component(version, "version") + try: + return DATASETS[(name, version)] + except KeyError as error: + known = ", ".join(f"{dataset}:{revision}" for dataset, revision in sorted(DATASETS)) + raise ValueError(f"Unknown dataset revision {name!r}, {version!r}; known revisions: {known}.") from error diff --git a/corneto/datasets/_fetch.py b/corneto/datasets/_fetch.py new file mode 100644 index 000000000..36cb5b109 --- /dev/null +++ b/corneto/datasets/_fetch.py @@ -0,0 +1,269 @@ +"""Source-first fetching and caching for small CORNETO datasets.""" + +from __future__ import annotations + +import hashlib +import json +import os +import shutil +import sys +import tarfile +import tempfile +from pathlib import Path +from urllib.request import Request, urlopen + +from ._catalog import DatasetSpec, get_dataset_spec + +DEFAULT_VERSION = "v1" +_DATASETS_ENV = "CORNETO_DATASETS_DIR" +_DATA_HOME_ENV = "CORNETO_DATA_HOME" +_CACHE_MARKER = ".complete.json" +_DOWNLOAD_TIMEOUT = 30 + + +class DatasetError(RuntimeError): + """Base error for dataset discovery and fetching failures.""" + + +class DatasetIntegrityError(DatasetError): + """Raised when a dataset does not match its recorded checksums.""" + + +def _sha256(path: Path) -> str: + digest = hashlib.sha256() + with path.open("rb") as stream: + while chunk := stream.read(1024 * 1024): + digest.update(chunk) + return digest.hexdigest() + + +def _default_data_home() -> Path: + if os.name == "nt": + root = Path(os.environ.get("LOCALAPPDATA", Path.home() / "AppData" / "Local")) / "corneto" / "Cache" + elif sys.platform == "darwin": + root = Path.home() / "Library" / "Caches" / "corneto" + else: + root = Path(os.environ.get("XDG_CACHE_HOME", Path.home() / ".cache")) / "corneto" + return root / "datasets" + + +def _cache_root(data_home: Path | str | None) -> Path: + if data_home is not None: + return Path(data_home).expanduser() + configured = os.environ.get(_DATA_HOME_ENV) + if configured: + return Path(configured).expanduser() + return _default_data_home() + + +def _as_dataset_root(path: Path) -> Path: + path = path.expanduser() + if (path / "datasets").is_dir(): + return path / "datasets" + return path + + +def _source_roots(source_dir: Path | str | None) -> list[Path]: + roots: list[Path] = [] + + def add(path: Path) -> None: + candidate = _as_dataset_root(path).resolve() + if candidate not in roots: + roots.append(candidate) + + if source_dir is not None: + add(Path(source_dir)) + configured = os.environ.get(_DATASETS_ENV) + if configured: + add(Path(configured)) + + for base in (Path(__file__).resolve().parent, Path.cwd().resolve()): + for parent in (base, *base.parents): + add(parent / "datasets") + return roots + + +def _dataset_dir(root: Path, spec: DatasetSpec) -> Path: + return root / spec.relative_path + + +def _validate_files(directory: Path, spec: DatasetSpec) -> bool: + missing = [] + for filename in spec.file_sha256: + path = directory / filename + if not path.is_file() or path.is_symlink(): + missing.append(filename) + if missing: + return False + + for filename, expected in spec.file_sha256.items(): + actual = _sha256(directory / filename) + if actual != expected: + raise DatasetIntegrityError( + f"Checksum mismatch for {spec.name} {spec.version} file {filename!r}: " + f"expected {expected}, got {actual}." + ) + return True + + +def _marker_payload(spec: DatasetSpec) -> dict[str, object]: + return { + "name": spec.name, + "version": spec.version, + "archive_sha256": spec.archive_sha256, + "files": dict(spec.file_sha256), + } + + +def _valid_cache(directory: Path, spec: DatasetSpec) -> bool: + marker = directory / _CACHE_MARKER + if not marker.is_file(): + return False + try: + payload = json.loads(marker.read_text(encoding="utf-8")) + except (OSError, ValueError): + return False + if payload != _marker_payload(spec): + return False + return _validate_files(directory, spec) + + +def _write_marker(directory: Path, spec: DatasetSpec) -> None: + directory.mkdir(parents=True, exist_ok=True) + descriptor = tempfile.NamedTemporaryFile( + mode="w", + encoding="utf-8", + dir=directory, + prefix=".complete-", + suffix=".tmp", + delete=False, + ) + temporary = Path(descriptor.name) + try: + with descriptor: + json.dump(_marker_payload(spec), descriptor, indent=2, sort_keys=True) + descriptor.write("\n") + descriptor.flush() + os.fsync(descriptor.fileno()) + os.replace(temporary, directory / _CACHE_MARKER) + finally: + temporary.unlink(missing_ok=True) + + +def _extract_archive(archive_path: Path, target: Path, spec: DatasetSpec) -> Path: + extraction_dir = Path(tempfile.mkdtemp(prefix=f".{spec.name}-{spec.version}-", dir=target.parent)) + try: + seen: set[str] = set() + expected = set(spec.file_sha256) + with tarfile.open(archive_path, mode="r:gz") as archive: + for member in archive.getmembers(): + if member.name not in expected or member.name in seen or not member.isfile(): + raise DatasetIntegrityError( + f"Archive for {spec.name} {spec.version} contains an unexpected or unsafe member " + f"{member.name!r}." + ) + seen.add(member.name) + source = archive.extractfile(member) + if source is None: + raise DatasetIntegrityError(f"Could not read archive member {member.name!r}.") + destination = extraction_dir / member.name + with source, destination.open("wb") as output: + shutil.copyfileobj(source, output) + + if seen != expected or not _validate_files(extraction_dir, spec): + missing = sorted(expected - seen) + raise DatasetIntegrityError(f"Archive for {spec.name} {spec.version} is missing files: {missing}.") + + target.mkdir(parents=True, exist_ok=True) + (target / _CACHE_MARKER).unlink(missing_ok=True) + for filename in expected: + os.replace(extraction_dir / filename, target / filename) + _write_marker(target, spec) + return target + finally: + shutil.rmtree(extraction_dir, ignore_errors=True) + + +def _download_to_cache(target: Path, spec: DatasetSpec) -> Path: + if not spec.remote_url: + raise DatasetError(f"Dataset {spec.name!r} {spec.version!r} has no configured remote source.") + + target.parent.mkdir(parents=True, exist_ok=True) + descriptor = tempfile.NamedTemporaryFile( + mode="wb", + dir=target.parent, + prefix=f".{spec.name}-{spec.version}-", + suffix=".download", + delete=False, + ) + archive_path = Path(descriptor.name) + digest = hashlib.sha256() + try: + with descriptor: + request = Request(spec.remote_url, headers={"User-Agent": "corneto-datasets"}) + with urlopen(request, timeout=_DOWNLOAD_TIMEOUT) as response: + while chunk := response.read(1024 * 1024): + digest.update(chunk) + descriptor.write(chunk) + descriptor.flush() + os.fsync(descriptor.fileno()) + actual = digest.hexdigest() + if actual != spec.archive_sha256: + raise DatasetIntegrityError( + f"Checksum mismatch for downloaded {spec.name} {spec.version}: " + f"expected {spec.archive_sha256}, got {actual}." + ) + return _extract_archive(archive_path, target, spec) + finally: + archive_path.unlink(missing_ok=True) + + +def fetch_dataset( + name: str, + version: str = DEFAULT_VERSION, + *, + source_dir: Path | str | None = None, + data_home: Path | str | None = None, + auto_download: bool = True, +) -> Path: + """Locate or fetch a versioned CORNETO dataset. + + Local repository data takes precedence over the persistent cache and the + configured remote source. Dataset files are validated by SHA-256 before + they are returned. + + Args: + name: Registered dataset name. + version: Immutable dataset revision. Defaults to ``"v1"``. + source_dir: Optional directory containing dataset directories, or a + repository root containing a ``datasets`` directory. + data_home: Optional persistent cache directory. + auto_download: Whether to fetch a missing dataset from its remote URL. + + Returns: + The path containing the validated dataset files. + + Raises: + DatasetIntegrityError: If available data do not match their checksums. + DatasetError: If no local data exists and the dataset has no remote URL. + FileNotFoundError: If data are missing and ``auto_download`` is false. + ValueError: If the dataset revision is not registered. + """ + if not isinstance(auto_download, bool): + raise TypeError("auto_download must be a boolean.") + spec = get_dataset_spec(name, version) + + for root in _source_roots(source_dir): + candidate = _dataset_dir(root, spec) + if candidate.exists() and _validate_files(candidate, spec): + return candidate + + cache_path = _dataset_dir(_cache_root(data_home), spec) + if _valid_cache(cache_path, spec): + return cache_path + + if not auto_download: + raise FileNotFoundError( + f"Dataset {name!r} {version!r} was not found locally or in the cache, and auto_download is false." + ) + return _download_to_cache(cache_path, spec) diff --git a/corneto/methods/__init__.py b/corneto/methods/__init__.py index dae677b09..72be33a62 100644 --- a/corneto/methods/__init__.py +++ b/corneto/methods/__init__.py @@ -15,6 +15,7 @@ CarnivalILP, milp_carnival, ) +from corneto.methods.causal import LinearDAGDiscovery from corneto.methods.fba import MultiSampleFBA from corneto.methods.imat import MultiSampleIMAT from corneto.methods.pcst import PrizeCollectingSteinerTree @@ -32,6 +33,7 @@ "BidirectionalPHONEMeS", "CarnivalFlow", "CarnivalILP", + "LinearDAGDiscovery", "MultiSampleFBA", "MultiSampleIMAT", "PHONEMeS", diff --git a/corneto/methods/_flow_utils.py b/corneto/methods/_flow_utils.py index 8ef2d8bf3..0a171dafb 100644 --- a/corneto/methods/_flow_utils.py +++ b/corneto/methods/_flow_utils.py @@ -22,70 +22,6 @@ class VertexSelection: incoming: Any -@dataclass(frozen=True) -class SelectedFlow: - """Flow-selection expressions over all and biological edges.""" - - all_edges: Any - biological_edges: Any - dag_layer: Any | None - - -def add_acyclic_flow_selection( - backend: Backend, - problem: ProblemDef, - graph: BaseGraph, - *, - epsilon: float, -): - """Add flow indicators and DAG constraints, returning edge selection.""" - problem += backend.NonZeroIndicator(problem.expr._flow, tolerance=epsilon) - backend.Acyclic( - graph, - problem, - indicator_negative_var_name="_flow_ineg", - indicator_positive_var_name="_flow_ipos", - ) - return problem.expr._flow_ipos + problem.expr._flow_ineg - - -def add_selected_flow( - backend: Backend, - problem: ProblemDef, - graph: BaseGraph, - *, - biological_edge_indices: Iterable[int], - epsilon: float, - acyclic: bool, -) -> SelectedFlow: - """Attach edge-selection indicators and optionally DAG constraints to a flow.""" - biological_edge_indices = list(biological_edge_indices) - if acyclic: - selected_all = add_acyclic_flow_selection( - backend, - problem, - graph, - epsilon=epsilon, - ) - dag_layer = problem.expr._dag_layer - else: - flow = problem.expr._flow - indicator_indexes = biological_edge_indices if len(flow.shape) == 1 else (biological_edge_indices, slice(None)) - problem += backend.Indicator(flow, indexes=indicator_indexes) - selected_all = problem.expr._flow_i - dag_layer = None - biological = ( - selected_all[biological_edge_indices] - if len(selected_all.shape) == 1 - else selected_all[biological_edge_indices, :] - ) - return SelectedFlow( - all_edges=selected_all, - biological_edges=biological, - dag_layer=dag_layer, - ) - - def add_vertex_selection( backend: Backend, problem: ProblemDef, diff --git a/corneto/methods/_predictive.py b/corneto/methods/_predictive.py new file mode 100644 index 000000000..80e79e766 --- /dev/null +++ b/corneto/methods/_predictive.py @@ -0,0 +1,65 @@ +"""Small private helpers shared by reusable mechanistic methods. + +The public :class:`~corneto.methods._base.Method` deliberately remains an +optimization-only abstraction. These helpers are used by the few method +classes that expose a fitted mechanistic model as well as the normal CORNETO +``build``/``ProblemDef`` lifecycle. +""" + +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any + +import numpy as np + + +def solve_options(value: Mapping[str, Any] | None, extra: Mapping[str, Any]) -> dict[str, Any]: + """Normalize the keyword options accepted by a convenience ``fit`` call.""" + if value is not None and not isinstance(value, Mapping): + raise TypeError("solve_options must be a mapping or None.") + if value and extra: + raise TypeError("Pass solver arguments either in solve_options or as keyword arguments, not both.") + return dict(value or extra) + + +def validate_solve_result(result: Any, expressions: Any, names: tuple[str, ...], method: str) -> Any: + """Validate a solver result while accepting time-limited incumbents. + + Backends use different result classes and status strings. A non-failure + status is therefore not enough: every expression needed for prediction + must also contain a finite incumbent value. This permits useful + ``user_limit``/``time_limit`` results when the solver supplied primals. + """ + status = str(getattr(result, "status", "")).lower() + failed = ("infeasible", "unbounded", "error", "invalid", "unknown") + if not status or any(token in status for token in failed): + raise ValueError(f"{method}.fit() did not produce a usable solution (status={status or 'unknown'!r}).") + for name in names: + try: + value = getattr(expressions, name).value + except (AttributeError, KeyError) as error: + raise ValueError(f"{method}.fit() solution does not expose required expression {name!r}.") from error + if value is None: + raise ValueError(f"{method}.fit() solver returned no value for required expression {name!r}.") + array = np.asarray(value, dtype=float) + if not np.all(np.isfinite(array)): + raise ValueError(f"{method}.fit() solver returned non-finite values for {name!r}.") + return result + + +def require_expression_value(problem: Any, name: str, method: str) -> np.ndarray: + """Return a solved expression value with a consistent public error.""" + if problem is None: + raise ValueError(f"{method} has not been built; call build/build_many or fit first.") + try: + value = getattr(problem.expr, name).value + except (AttributeError, KeyError) as error: + raise ValueError(f"{method} problem does not expose required expression {name!r}.") from error + if value is None: + raise ValueError(f"{method} has not been solved or has no usable solution for {name!r}.") + array = np.asarray(value, dtype=float) + if not np.all(np.isfinite(array)): + raise ValueError(f"{method} has no usable finite solution for {name!r}.") + return array + diff --git a/corneto/methods/bidirectional_phonemes.py b/corneto/methods/bidirectional_phonemes.py index a45d1e924..ca421c317 100644 --- a/corneto/methods/bidirectional_phonemes.py +++ b/corneto/methods/bidirectional_phonemes.py @@ -18,7 +18,6 @@ validate_numeric, ) from corneto.methods._network_utils import prune_to_paths -from corneto.methods._optimization_utils import add_condition_union from corneto.methods._phonemes_preprocessing import ( normalize_phonemes_score_mapping, ) @@ -457,31 +456,34 @@ def create_problem(self, graph: BaseGraph, data: Data): """Create the global vectorized bidirectional problem.""" num_conditions = len(self._condition_names) num_edges = self._biological_num_edges - flow_problem = self.backend.Flow( + flow_problem = self.backend.SelectedFlow( graph, lb=self._flow_lb, ub=self._flow_ub, n_flows=2 * num_conditions, - shared_bounds=False, - force_matrix=True, + flow_blocks=( + (range(num_edges), slice(0, num_conditions)), + ( + range(self._reverse_edge_offset, self._reverse_edge_offset + num_edges), + slice(num_conditions, 2 * num_conditions), + ), + ), + selector_groups=np.tile(np.arange(num_conditions), 2), + epsilon=self.epsilon, + selected_by_flow_name="edge_selected_directional", + selected_by_group_name="edge_selected", + selected_any_name="edge_selected_any", ) flow = flow_problem.expr._flow - flow_problem += self.backend.NonZeroIndicator( - flow, - tolerance=self.epsilon, - ) - positive = flow_problem.expr._flow_ipos + directional_selection = flow_problem.expr.edge_selected_directional flow_downstream = flow[:num_edges, :num_conditions] flow_upstream = flow[ self._reverse_edge_offset : self._reverse_edge_offset + num_edges, num_conditions:, ] - edge_downstream = positive[:num_edges, :num_conditions] - edge_upstream = positive[ - self._reverse_edge_offset : self._reverse_edge_offset + num_edges, - num_conditions:, - ] + edge_downstream = directional_selection[:, :num_conditions] + edge_upstream = directional_selection[:, num_conditions:] flow_problem.register("flow_downstream", flow_downstream) flow_problem.register("flow_upstream", flow_upstream) flow_problem.register("edge_selected_downstream", edge_downstream) @@ -515,14 +517,24 @@ def create_problem(self, graph: BaseGraph, data: Data): anchor_vertices = tuple(self._anchor_inflow_edges) anchor_rows = [self._anchor_inflow_edges[vertex] for vertex in anchor_vertices] anchor_indexes = [vertex_index[vertex] for vertex in anchor_vertices] - downstream_inflow = flow[anchor_rows, :num_conditions] - upstream_inflow = flow[anchor_rows, num_conditions:] downstream_active = anchor_downstream[anchor_indexes, :] upstream_active = anchor_upstream[anchor_indexes, :] - flow_problem += downstream_inflow >= self.epsilon * downstream_active - flow_problem += downstream_inflow <= self._flow_max * downstream_active - flow_problem += upstream_inflow >= self.epsilon * upstream_active - flow_problem += upstream_inflow <= self._flow_max * upstream_active + flow_problem += self.backend.ExactSupport( + flow, + indexes=(anchor_rows, slice(0, num_conditions)), + selected=downstream_active, + epsilon=self.epsilon, + nonnegative=True, + name="anchor_flow_downstream", + ) + flow_problem += self.backend.ExactSupport( + flow, + indexes=(anchor_rows, slice(num_conditions, 2 * num_conditions)), + selected=upstream_active, + epsilon=self.epsilon, + nonnegative=True, + name="anchor_flow_upstream", + ) internal_downstream = ~(self._anchor_mask | self._measured_downstream_mask) downstream_vertices = add_vertex_selection( @@ -549,13 +561,6 @@ def create_problem(self, graph: BaseGraph, data: Data): name="vertex_selected_upstream", reverse=True, ) - edge_selected = _pairwise_or( - self.backend, - flow_problem, - edge_downstream, - edge_upstream, - name="edge_selected", - ) vertex_selected = _pairwise_or( self.backend, flow_problem, @@ -563,12 +568,7 @@ def create_problem(self, graph: BaseGraph, data: Data): upstream_vertices.selected, name="vertex_selected", ) - edge_selected_any = add_condition_union( - self.backend, - flow_problem, - edge_selected, - name="edge_selected_any", - ) + edge_selected_any = flow_problem.expr.edge_selected_any assert self._biological_graph is not None self.backend.Acyclic( diff --git a/corneto/methods/causal/__init__.py b/corneto/methods/causal/__init__.py new file mode 100644 index 000000000..94dfcb068 --- /dev/null +++ b/corneto/methods/causal/__init__.py @@ -0,0 +1,5 @@ +"""Causal structure-discovery methods.""" + +from corneto.methods.causal.linear_dag import LinearDAGDiscovery + +__all__ = ["LinearDAGDiscovery"] diff --git a/corneto/methods/causal/linear_dag.py b/corneto/methods/causal/linear_dag.py new file mode 100644 index 000000000..3fd093044 --- /dev/null +++ b/corneto/methods/causal/linear_dag.py @@ -0,0 +1,1705 @@ +"""Flow-supported linear DAG discovery over a prior knowledge network.""" + +from __future__ import annotations + +from dataclasses import dataclass +from numbers import Real +from types import MappingProxyType +from typing import Any, Mapping, Optional + +import numpy as np +from scipy.sparse import csr_matrix + +from corneto._constants import VarType +from corneto.backend._base import ( + Backend, + ProblemDef, + _sparse_vector_entry_repetition, + _sparse_vector_replication, +) +from corneto.data import Data +from corneto.graph import Attr, BaseGraph, EdgeType +from corneto.methods._base import FlowMethod +from corneto.methods._network_utils import BoundaryFlowLayout, augment_with_boundaries +from corneto.methods._predictive import ( + require_expression_value, + validate_solve_result, +) +from corneto.methods._predictive import ( + solve_options as normalize_solve_options, +) + +__all__ = ["LinearDAGDiscovery"] + + +_MISSING = object() + + +@dataclass(frozen=True) +class _InterventionDesign: + """Validated intervention semantics aligned to vertex-by-sample arrays. + + ``mapping`` maps estimated shift parameters to a Fortran-order flattened + vertex-by-sample matrix. Its rows are therefore indexed as + ``vertex_index + num_vertices * sample_index``. Keeping this indexing in + one object avoids duplicating the grouping and shape bookkeeping in the + optimization model. + """ + + hard: np.ndarray + shift: np.ndarray + groups: np.ndarray + known_shift: np.ndarray + mapping: csr_matrix + effect_keys: tuple[tuple[Any, Any], ...] + + @staticmethod + def _validate_group(group: Any) -> None: + if group is _MISSING or group is None: + raise ValueError("Estimated shift interventions require a non-null intervention group.") + if isinstance(group, Real) and not isinstance(group, bool) and not np.isfinite(float(group)): + raise ValueError("Estimated shift intervention groups must be finite when numeric.") + try: + hash(group) + except TypeError as error: + raise TypeError("Intervention groups must be hashable.") from error + + @classmethod + def build( + cls, + vertex_keys: tuple[Any, ...], + num_vertices: int, + num_samples: int, + annotations: Mapping[tuple[int, int], tuple[str, Any, Any]], + ) -> "_InterventionDesign": + hard = np.zeros((num_vertices, num_samples), dtype=bool) + shift = np.zeros((num_vertices, num_samples), dtype=bool) + groups = np.full((num_vertices, num_samples), _MISSING, dtype=object) + known_shift = np.zeros((num_vertices, num_samples), dtype=float) + effect_indices: dict[tuple[int, Any], int] = {} + effect_keys: list[tuple[Any, Any]] = [] + mapping_rows: list[int] = [] + mapping_columns: list[int] = [] + + for (vertex_index, sample_index), (kind, shift_value, group) in annotations.items(): + if kind != "none" and group is not _MISSING: + groups[vertex_index, sample_index] = group + if kind == "hard": + hard[vertex_index, sample_index] = True + continue + if kind != "shift": + continue + + shift[vertex_index, sample_index] = True + if shift_value is not None: + known_shift[vertex_index, sample_index] = float(shift_value) + continue + cls._validate_group(group) + effect_key = (vertex_index, group) + effect_index = effect_indices.get(effect_key) + if effect_index is None: + effect_index = len(effect_keys) + effect_indices[effect_key] = effect_index + effect_keys.append((vertex_keys[vertex_index], group)) + mapping_rows.append(vertex_index + num_vertices * sample_index) + mapping_columns.append(effect_index) + + mapping = csr_matrix( + ( + np.ones(len(mapping_rows), dtype=float), + (mapping_rows, mapping_columns), + ), + shape=(num_vertices * num_samples, len(effect_keys)), + ) + return cls( + hard=hard, + shift=shift, + groups=groups, + known_shift=known_shift, + mapping=mapping, + effect_keys=tuple(effect_keys), + ) + + +@dataclass(frozen=True) +class _EvidenceUnit: + """One distinct intervention unit contributing to a flow signature.""" + + source: Any + intervention_group: Any + sample_indices: tuple[int, ...] + explicit_group: bool + + +@dataclass(frozen=True) +class _Commodity: + """Immutable structural flow column and its evidence units. + + Several intervention groups can share one structural column. In that + case ``evidence_units`` retains the distinct groups for coverage and + unexplained-commodity weighting, while the flow itself is represented + only once. + """ + + source: Any + source_edge: int + sink_edges: tuple[int, ...] + hard_blocked_edges: tuple[int, ...] + evidence_units: tuple[_EvidenceUnit, ...] + + @property + def group_count(self) -> int: + """Number of distinct intervention evidence units represented.""" + return len(self.evidence_units) + + +class LinearDAGDiscovery(FlowMethod): + """Discover a sparse linear DAG inside a directed prior network. + + A linear structural equation is fitted for every vertex. One nonnegative + flow commodity is created for each unique intervention-to-measurement + structural signature. Repeated cells and explicitly grouped intervention + evidence therefore share a flow column when their source, eligible sinks, + and hard-intervention edge blocks agree. Every selected biological edge + must be used by at least one commodity, so the learned DAG is structurally + supported by intervention-to-measurement paths without requiring every + intervention to be explained. + + Missing outcomes are excluded from the loss. If a candidate parent is + missing in a sample, the corresponding child equation is also excluded; + this conservative complete-equation rule prevents missing predictors from + being silently treated as zero while preserving a linear formulation. + + Feature metadata may declare ``intervention="shift"`` for an additive + soft intervention. Its structural equation remains in the loss and its + measured value remains a flow source. Provide ``shift`` (or + ``intervention_shift``) for a known effect, or provide + ``intervention_group`` to estimate one bounded effect shared by its + replicates. The legacy ``intervened=True`` metadata remains a hard + intervention. + + Args: + lambda_edges: Penalty for every selected prior edge. + coefficient_bound: Absolute bound on raw linear edge coefficients. + fit_intercept: Whether to fit one intercept per vertex. + intercept_bound: Absolute bound on vertex intercepts. + max_parents: Optional global or vertex-specific parent limit. + loss: ``"absolute"`` for a MILP or ``"squared"`` for a MIQP. + standardize_loss: Divide residuals by the observed response standard + deviation of each vertex. Coefficients remain in the original + measurement units. + vertex_weights: Optional positive loss weight per PKN vertex. + sample_weights: Optional positive loss weight per sample. + enforce_signs: Constrain coefficients using numeric PKN interactions + ``+1`` and ``-1`` when present. + intervention_type_key: Feature metadata key containing ``"none"``, + ``"hard"``, or ``"shift"``. A boolean ``intervened=True`` under + ``intervention_key`` remains a hard intervention for compatibility. + intervention_shift_key: Feature metadata key containing a known + additive shift. If it is absent for a shift intervention, the + shift is estimated and shared by ``intervention_group_key``. + intervention_group_key: Feature metadata key identifying an explicit + intervention evidence group. The target vertex is always part of + the group key, so one group cannot couple different sources. For + estimated shifts, the same key also shares one bounded effect + parameter across its replicates. + intervention_shift_bound: Absolute bound for each estimated shift. + lambda_intervention_shifts: Optional L1 penalty on estimated shifts. + coefficient_support: ``"exact"`` requires every selected edge to have + a fitted coefficient with magnitude at least ``min_abs_coefficient``; + ``"structural"`` permits selected connector edges with zero + coefficients. + min_abs_coefficient: Minimum absolute fitted coefficient for selected + edges in ``"exact"`` mode, in normalized coefficient units. The + normalized coefficient for ``u -> v`` is + ``beta[u -> v] * scale[u] / scale[v]``. + The default ``0.25`` is a modeling assumption about normalized + direct effects, not a solver tolerance or a guarantee of a + nonzero total intervention effect. + interaction_attribute: Edge attribute containing PKN interaction signs. + intervention_key: Feature metadata key marking legacy hard + interventions. + flow_capacity: Upper bound on every commodity flow. By default, the + number of PKN edges multiplied by ``flow_epsilon`` is used. + flow_epsilon: Minimum positive flow on every used biological edge. + min_commodity_coverage: Minimum fraction of distinct intervention + evidence units that must have a selected-edge path to a measured, + non-intervened response. Repeated cells in one explicit group count + once, while separate groups sharing one flow signature each count + once. If the unique flows represent ``K`` evidence units in total, + a value ``f`` requires at least ``ceil(f * K)`` of those units to + be connected. This does not measure prediction accuracy. Zero does + not force any intervention to be connected. + lambda_unexplained: Optional objective penalty for every intervention + evidence unit without such a structural path. Unlike + ``min_commodity_coverage``, this is a soft preference rather than + a minimum feasibility requirement. + backend: Optimization backend. + """ + + def __init__( + self, + lambda_edges: float = 1e-2, + coefficient_bound: float = 5.0, + fit_intercept: bool = True, + intercept_bound: float = 10.0, + max_parents: Optional[int | dict[Any, int]] = None, + loss: str = "absolute", + standardize_loss: bool = True, + vertex_weights: Optional[Mapping[Any, float]] = None, + sample_weights: Optional[Mapping[Any, float]] = None, + enforce_signs: bool = False, + interaction_attribute: str = "interaction", + intervention_key: str = "intervened", + flow_capacity: Optional[float] = None, + flow_epsilon: float = 1.0, + min_commodity_coverage: float = 0.0, + lambda_unexplained: float = 0.0, + backend: Optional[Backend] = None, + coefficient_support: str = "exact", + min_abs_coefficient: float = 0.25, + *, + intervention_type_key: str = "intervention", + intervention_shift_key: str = "shift", + intervention_group_key: str = "intervention_group", + intervention_shift_bound: float = 10.0, + lambda_intervention_shifts: float = 0.0, + ): + self._validate_nonnegative(lambda_edges, "lambda_edges") + self._validate_positive(coefficient_bound, "coefficient_bound") + self._validate_positive(intercept_bound, "intercept_bound") + self._validate_positive(intervention_shift_bound, "intervention_shift_bound") + self._validate_positive(flow_epsilon, "flow_epsilon") + if coefficient_support not in {"exact", "structural"}: + raise ValueError("coefficient_support must be 'exact' or 'structural'.") + self._validate_positive(min_abs_coefficient, "min_abs_coefficient") + if flow_capacity is not None: + self._validate_positive(flow_capacity, "flow_capacity") + if float(flow_capacity) < float(flow_epsilon): + raise ValueError("flow_capacity must be greater than or equal to flow_epsilon.") + if loss not in {"absolute", "squared"}: + raise ValueError("loss must be 'absolute' or 'squared'.") + if not isinstance(standardize_loss, bool): + raise TypeError("standardize_loss must be boolean.") + if vertex_weights is not None and not isinstance(vertex_weights, Mapping): + raise TypeError("vertex_weights must be a mapping or None.") + if sample_weights is not None and not isinstance(sample_weights, Mapping): + raise TypeError("sample_weights must be a mapping or None.") + if isinstance(max_parents, int) and not isinstance(max_parents, bool): + if max_parents < 0: + raise ValueError("max_parents must be nonnegative.") + elif max_parents is not None: + if not isinstance(max_parents, dict): + raise TypeError("max_parents must be an integer, mapping, or None.") + for vertex, value in max_parents.items(): + if isinstance(value, bool) or not isinstance(value, int) or value < 0: + raise ValueError(f"max_parents[{vertex!r}] must be a nonnegative integer.") + if isinstance(min_commodity_coverage, bool) or not isinstance(min_commodity_coverage, Real): + raise TypeError("min_commodity_coverage must be a finite number in [0, 1].") + if not np.isfinite(min_commodity_coverage) or not 0 <= min_commodity_coverage <= 1: + raise ValueError("min_commodity_coverage must be in [0, 1].") + self._validate_nonnegative(lambda_unexplained, "lambda_unexplained") + self._validate_nonnegative(lambda_intervention_shifts, "lambda_intervention_shifts") + + super().__init__( + flow_lower_bound=0, + flow_upper_bound=1, + num_flows=1, + shared_flow_bounds=False, + lambda_reg=0, + disable_structured_sparsity=True, + backend=backend, + ) + self.lambda_edges = float(lambda_edges) + self.coefficient_bound = float(coefficient_bound) + self.fit_intercept = fit_intercept + self.intercept_bound = float(intercept_bound) + self.max_parents = max_parents + self.loss = loss + self.standardize_loss = standardize_loss + self.vertex_weights = dict(vertex_weights or {}) + self.sample_weights = dict(sample_weights or {}) + self.enforce_signs = enforce_signs + self.coefficient_support = coefficient_support + self.min_abs_coefficient = float(min_abs_coefficient) + self.interaction_attribute = interaction_attribute + self.intervention_key = intervention_key + self.intervention_type_key = intervention_type_key + self.intervention_shift_key = intervention_shift_key + self.intervention_group_key = intervention_group_key + self.intervention_shift_bound = float(intervention_shift_bound) + self.lambda_intervention_shifts = float(lambda_intervention_shifts) + self.flow_capacity = None if flow_capacity is None else float(flow_capacity) + self.flow_epsilon = float(flow_epsilon) + self.min_commodity_coverage = float(min_commodity_coverage) + self.lambda_unexplained = float(lambda_unexplained) + + self._original_graph: Optional[BaseGraph] = None + self._layout: Optional[BoundaryFlowLayout] = None + self._vertex_index: dict[Any, int] = {} + self._sample_names: tuple[Any, ...] = () + self._values = np.empty((0, 0)) + self._observed = np.empty((0, 0), dtype=bool) + self._valid_residual = np.empty((0, 0), dtype=bool) + self._loss_scales = np.empty((0,)) + self._coefficient_scales = np.empty((0,)) + self._observation_weights = np.empty((0, 0)) + self._intervened = np.empty((0, 0), dtype=bool) + self._hard_intervened = np.empty((0, 0), dtype=bool) + self._soft_intervened = np.empty((0, 0), dtype=bool) + self._intervention_design: Optional[_InterventionDesign] = None + self._edge_sources = np.empty((0,), dtype=int) + self._edge_targets = np.empty((0,), dtype=int) + self._commodities: tuple[_Commodity, ...] = () + self._flow_lb = np.empty((0, 0)) + self._flow_ub = np.empty((0, 0)) + self._resolved_flow_capacity = 0.0 + # ``fit`` records the backend result for callers who use the + # convenience API. Manual ``build``/``problem.solve`` remains fully + # supported; prediction checks expression values directly in that + # case, because ProblemDef.solve cannot notify its owning method. + self.solve_result = None + + @property + def _commodity_samples(self) -> list[int]: + """Compatibility view of the first sample supporting each flow.""" + return [unit.sample_indices[0] for commodity in self._commodities for unit in commodity.evidence_units[:1]] + + @property + def _commodity_sources(self) -> list[Any]: + """Compatibility view of structural flow sources.""" + return [commodity.source for commodity in self._commodities] + + @property + def _commodity_source_edges(self) -> list[int]: + """Compatibility view of structural flow source boundary edges.""" + return [commodity.source_edge for commodity in self._commodities] + + @property + def _commodity_sink_edges(self) -> list[list[int]]: + """Compatibility view of structural flow sink boundary edges.""" + return [list(commodity.sink_edges) for commodity in self._commodities] + + @staticmethod + def _validate_positive(value: Any, name: str) -> None: + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError(f"{name} must be a finite positive number.") + if not np.isfinite(value) or value <= 0: + raise ValueError(f"{name} must be a finite positive number.") + + @staticmethod + def _validate_nonnegative(value: Any, name: str) -> None: + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError(f"{name} must be a finite nonnegative number.") + if not np.isfinite(value) or value < 0: + raise ValueError(f"{name} must be a finite nonnegative number.") + + @classmethod + def _resolve_positive_weights( + cls, + keys: tuple[Any, ...], + supplied: Mapping[Any, float], + name: str, + ) -> np.ndarray: + unknown = set(supplied).difference(keys) + if unknown: + raise ValueError(f"{name} contains unknown keys: {sorted(unknown, key=repr)!r}.") + weights = np.ones((len(keys),), dtype=float) + index = {key: position for position, key in enumerate(keys)} + for key, value in supplied.items(): + cls._validate_positive(value, f"{name}[{key!r}]") + weights[index[key]] = float(value) + return weights + + def build(self, pkn: BaseGraph, data: Data) -> ProblemDef: + """Build a discovery problem from vertex measurements and interventions.""" + if not isinstance(data, Data): + raise TypeError("data must be a corneto.data.Data object.") + self.solve_result = None + return self.build_from_data(pkn, data) + + def fit( + self, + pkn: BaseGraph, + data: Data, + *, + solve_options: Optional[Mapping[str, Any]] = None, + **solver_options: Any, + ) -> "LinearDAGDiscovery": + """Build and solve the model, returning this reusable estimator. + + ``fit`` is intentionally a thin convenience wrapper. Use + ``solve_options`` (or solver keyword arguments) only for backend + options; scientific inputs remain the ``pkn`` and ``data`` arguments. + The constructed :attr:`problem` is retained, and the backend result is + available as :attr:`solve_result`. A time-limited incumbent is + accepted when all expressions needed by prediction have finite values. + """ + options = normalize_solve_options(solve_options, solver_options) + problem = self.build(pkn, data) + result = problem.solve(**options) + required = ["edge_selected", "edge_coefficient"] + if self._intervention_design is not None and self._intervention_design.effect_keys: + required.append("intervention_shift_parameters") + validate_solve_result(result, problem.expr, tuple(required), self.name()) + # ``intercept`` is a symbol when fitting is enabled and a registered + # constant otherwise; both are checked before prediction is allowed. + if self.fit_intercept: + require_expression_value(problem, "intercept", self.name()) + self.solve_result = result + return self + + def _validate_graph(self, graph: BaseGraph) -> tuple[np.ndarray, np.ndarray]: + if graph.num_vertices == 0 or graph.num_edges == 0: + raise ValueError("LinearDAGDiscovery requires a non-empty directed PKN.") + vertex_index = {vertex: index for index, vertex in enumerate(graph.V)} + sources = [] + targets = [] + for edge_index, (source, target) in enumerate(graph.E): + if len(source) != 1 or len(target) != 1: + raise ValueError( + "LinearDAGDiscovery accepts simple directed PKN edges only; " + f"edge {edge_index} has {len(source)} sources and {len(target)} targets." + ) + attributes = graph.get_attr_edge(edge_index) + if not attributes.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED): + raise ValueError(f"LinearDAGDiscovery requires directed edges; edge {edge_index} is not directed.") + sources.append(vertex_index[next(iter(source))]) + targets.append(vertex_index[next(iter(target))]) + return np.asarray(sources, dtype=int), np.asarray(targets, dtype=int) + + @staticmethod + def _normalize_intervention_type(raw: Any, source: str) -> str: + if raw is None: + return "none" + if isinstance(raw, (bool, np.bool_)): + return "hard" if bool(raw) else "none" + if not isinstance(raw, str): + raise TypeError(f"{source} must be boolean or one of 'none', 'hard', and 'shift'.") + normalized = raw.strip().lower() + if normalized == "soft": + normalized = "shift" + if normalized not in {"none", "hard", "shift"}: + raise ValueError(f"{source} must be one of 'none', 'hard', and 'shift'; got {raw!r}.") + return normalized + + def _get_intervention_type(self, feature: Any, sample_name: Any) -> str: + explicit_values = [] + for key in (self.intervention_type_key, "intervention_type"): + if key not in explicit_values and key in feature.data: + explicit_values.append(key) + explicit = _MISSING + if explicit_values: + explicit = self._normalize_intervention_type( + feature.data[explicit_values[0]], + f"{explicit_values[0]!r} for vertex {feature.id!r} in sample {sample_name!r}", + ) + for key in explicit_values[1:]: + other = self._normalize_intervention_type( + feature.data[key], + f"{key!r} for vertex {feature.id!r} in sample {sample_name!r}", + ) + if other != explicit: + raise ValueError( + f"Conflicting intervention types for vertex {feature.id!r} in sample {sample_name!r}." + ) + + legacy = _MISSING + if self.intervention_key in feature.data: + legacy = self._normalize_intervention_type( + feature.data[self.intervention_key], + f"{self.intervention_key!r} for vertex {feature.id!r} in sample {sample_name!r}", + ) + if explicit is _MISSING: + return "none" if legacy is _MISSING else legacy + if legacy is not _MISSING and legacy != "none" and legacy != explicit: + raise ValueError(f"Conflicting intervention types for vertex {feature.id!r} in sample {sample_name!r}.") + return explicit + + def _get_shift_value(self, feature: Any, sample_name: Any) -> Any: + keys = tuple(dict.fromkeys((self.intervention_shift_key, "shift", "shift_value", "intervention_shift"))) + present = [key for key in keys if key in feature.data] + if not present: + return None + values = [feature.data[key] for key in present] + if any(value != values[0] for value in values[1:]): + raise ValueError(f"Conflicting shift values for vertex {feature.id!r} in sample {sample_name!r}.") + value = values[0] + if value is None: + return None + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError( + f"Intervention shift for vertex {feature.id!r} in sample {sample_name!r} " + "must be numeric or omitted for estimation." + ) + value = float(value) + if not np.isfinite(value): + raise ValueError(f"Intervention shift for vertex {feature.id!r} in sample {sample_name!r} must be finite.") + return value + + def _get_intervention_group(self, feature: Any) -> Any: + for key in (self.intervention_group_key, "shift_group", "intervention_id"): + if key in feature.data: + return feature.data[key] + return _MISSING + + # Keep the old private helper name for downstream code that may have used + # it while making the broader intervention-group semantics explicit. + _get_shift_group = _get_intervention_group + + def _extract_data( + self, + graph: BaseGraph, + data: Data, + ) -> tuple[np.ndarray, np.ndarray, _InterventionDesign]: + if not data.samples: + raise ValueError("LinearDAGDiscovery requires at least one sample.") + values = np.full((graph.num_vertices, len(data.samples)), np.nan, dtype=float) + observed = np.zeros_like(values, dtype=bool) + annotations: dict[tuple[int, int], tuple[str, Any, Any]] = {} + graph_vertices = set(graph.V) + + for sample_index, (sample_name, sample) in enumerate(data.samples.items()): + seen = set() + for feature in sample.features: + if feature.mapping != "vertex": + continue + if feature.id not in graph_vertices: + raise ValueError(f"Unknown vertex {feature.id!r} in sample {sample_name!r}.") + if feature.id in seen: + raise ValueError(f"Duplicate vertex {feature.id!r} in sample {sample_name!r}.") + seen.add(feature.id) + vertex_index = self._vertex_index[feature.id] + intervention_type = self._get_intervention_type(feature, sample_name) + shift_value = None + shift_group = _MISSING + if intervention_type != "none": + shift_group = self._get_intervention_group(feature) + if shift_group is None: + shift_group = _MISSING + if shift_group is not _MISSING: + _InterventionDesign._validate_group(shift_group) + if intervention_type == "shift": + shift_value = self._get_shift_value(feature, sample_name) + elif any( + key in feature.data + for key in dict.fromkeys( + (self.intervention_shift_key, "shift", "shift_value", "intervention_shift") + ) + ): + raise ValueError( + f"A shift value is only valid for a 'shift' intervention " + f"(vertex {feature.id!r}, sample {sample_name!r})." + ) + annotations[(vertex_index, sample_index)] = ( + intervention_type, + shift_value, + shift_group, + ) + value = feature.value + if value is None or ( + isinstance(value, Real) and not isinstance(value, bool) and np.isnan(float(value)) + ): + if intervention_type != "none": + raise ValueError( + f"Intervened vertex {feature.id!r} in sample {sample_name!r} requires an observed value." + ) + continue + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError( + f"Measurement for vertex {feature.id!r} in sample {sample_name!r} must be numeric or missing." + ) + value = float(value) + if not np.isfinite(value): + raise ValueError( + f"Measurement for vertex {feature.id!r} in sample {sample_name!r} must be finite or missing." + ) + values[vertex_index, sample_index] = value + observed[vertex_index, sample_index] = True + + design = _InterventionDesign.build( + tuple(graph.V), + graph.num_vertices, + len(data.samples), + annotations, + ) + if not np.any(design.hard | design.shift): + raise ValueError("LinearDAGDiscovery requires at least one intervened vertex.") + never_observed = [graph.V[index] for index in np.flatnonzero(~observed.any(axis=1))] + if never_observed: + raise ValueError(f"PKN vertices {never_observed!r} are never observed; latent vertices are not supported.") + return values, observed, design + + def _build_commodities(self, graph: BaseGraph) -> tuple[_Commodity, ...]: + """Resolve intervention cells into unique structural flow signatures. + + Cells remain independent observations for regression, but flow + evidence is deduplicated by explicit ``(source, group)`` units or by + one implicit unit per structural signature. A repeated explicit unit + is only valid when all of its cells have the same signature. + """ + if self._layout is None or self._intervention_design is None: + raise ValueError("LinearDAGDiscovery intervention preprocessing has not been initialized.") + + vertices = tuple(graph.V) + measured_responses = self._observed & ~self._intervened + explicit_signatures: dict[tuple[int, Any], tuple[int, tuple[int, ...], tuple[int, ...]]] = {} + explicit_samples: dict[tuple[int, Any], list[int]] = {} + implicit_samples: dict[tuple[int, tuple[int, ...], tuple[int, ...]], list[int]] = {} + signature_refs: dict[ + tuple[int, tuple[int, ...], tuple[int, ...]], + list[tuple[str, Any]], + ] = {} + signature_order: list[tuple[int, tuple[int, ...], tuple[int, ...]]] = [] + + for sample_index in range(len(self._sample_names)): + sink_indices = np.flatnonzero(measured_responses[:, sample_index]) + sink_edges = tuple(self._layout.outflow_edges[vertices[index]] for index in sink_indices) + blocked_edges = tuple(np.flatnonzero(self._hard_intervened[self._edge_targets, sample_index]).tolist()) + source_indices = np.flatnonzero(self._intervened[:, sample_index]) + for source_index in source_indices: + source = vertices[source_index] + signature = (int(source_index), sink_edges, blocked_edges) + if signature not in signature_refs: + signature_refs[signature] = [] + signature_order.append(signature) + + group = self._intervention_design.groups[source_index, sample_index] + if group is _MISSING: + if signature not in implicit_samples: + implicit_samples[signature] = [] + signature_refs[signature].append(("implicit", signature)) + implicit_samples[signature].append(sample_index) + continue + + unit_key = (int(source_index), group) + prior_signature = explicit_signatures.get(unit_key) + if prior_signature is not None and prior_signature != signature: + raise ValueError( + "Intervention evidence unit for source " + f"{source!r} and intervention_group {group!r} has inconsistent " + "structural signatures across samples. Repeated explicit groups " + "must have the same eligible sinks and hard-intervention blocks." + ) + if prior_signature is None: + explicit_signatures[unit_key] = signature + explicit_samples[unit_key] = [] + signature_refs[signature].append(("explicit", unit_key)) + explicit_samples[unit_key].append(sample_index) + + commodities: list[_Commodity] = [] + for signature in signature_order: + source_index, sink_edges, blocked_edges = signature + units = [] + for kind, reference in signature_refs[signature]: + if kind == "explicit": + unit_source_index, group = reference + units.append( + _EvidenceUnit( + source=vertices[unit_source_index], + intervention_group=group, + sample_indices=tuple(explicit_samples[reference]), + explicit_group=True, + ) + ) + else: + units.append( + _EvidenceUnit( + source=vertices[source_index], + intervention_group=None, + sample_indices=tuple(implicit_samples[reference]), + explicit_group=False, + ) + ) + commodities.append( + _Commodity( + source=vertices[source_index], + source_edge=self._layout.inflow_edges[vertices[source_index]], + sink_edges=sink_edges, + hard_blocked_edges=blocked_edges, + evidence_units=tuple(units), + ) + ) + return tuple(commodities) + + def preprocess(self, graph: BaseGraph, data: Data): + """Validate data and construct signature-specific flow boundaries.""" + self.solve_result = None + self._original_graph = graph.copy() + self._vertex_index = {vertex: index for index, vertex in enumerate(graph.V)} + self._sample_names = tuple(data.samples) + self._edge_sources, self._edge_targets = self._validate_graph(graph) + self._values, self._observed, self._intervention_design = self._extract_data(graph, data) + self._hard_intervened = self._intervention_design.hard + self._soft_intervened = self._intervention_design.shift + self._intervened = self._hard_intervened | self._soft_intervened + vertices = tuple(graph.V) + self._valid_residual = self._observed & ~self._hard_intervened + for source, target in zip(self._edge_sources, self._edge_targets, strict=True): + self._valid_residual[target, :] &= self._observed[source, :] + if not np.any(self._valid_residual): + raise ValueError("No complete, non-intervened structural equations are available.") + self._values = np.where(self._observed, self._values, 0.0) + + vertex_weights = self._resolve_positive_weights( + tuple(graph.V), + self.vertex_weights, + "vertex_weights", + ) + sample_weights = self._resolve_positive_weights( + self._sample_names, + self.sample_weights, + "sample_weights", + ) + self._observation_weights = vertex_weights[:, None] * sample_weights[None, :] + self._loss_scales = np.ones((graph.num_vertices,), dtype=float) + if self.standardize_loss: + for vertex_index in range(graph.num_vertices): + fitted_values = self._values[vertex_index, self._valid_residual[vertex_index, :]] + if fitted_values.size > 1: + scale = float(np.std(fitted_values)) + if np.isfinite(scale) and scale > np.finfo(float).eps: + self._loss_scales[vertex_index] = scale + predictor_scale_mask = np.zeros_like(self._observed) + for source, target in zip(self._edge_sources, self._edge_targets, strict=True): + predictor_scale_mask[source, :] |= self._valid_residual[target, :] & self._observed[source, :] + + # A variable can appear on either side of an equation. Use both roles + # so that its coefficient scale transforms with its measurement units + # even when it is a terminal response or has no usable child equation. + coefficient_scale_mask = self._valid_residual | predictor_scale_mask + self._coefficient_scales = np.ones((graph.num_vertices,), dtype=float) + for vertex_index in range(graph.num_vertices): + coefficient_values = self._values[vertex_index, coefficient_scale_mask[vertex_index, :]] + if coefficient_values.size: + scale = float(np.std(coefficient_values)) if coefficient_values.size > 1 else 0.0 + if not np.isfinite(scale) or scale <= np.finfo(float).eps: + scale = float(np.max(np.abs(coefficient_values))) + if np.isfinite(scale) and scale > np.finfo(float).eps: + self._coefficient_scales[vertex_index] = scale + + intervened_union = self._intervened.any(axis=1) + measured_responses = self._observed & ~self._intervened + sink_union = measured_responses.any(axis=1) + self._layout = augment_with_boundaries( + graph, + inflow_vertices=(vertex for vertex, include in zip(vertices, intervened_union, strict=True) if include), + outflow_vertices=(vertex for vertex, include in zip(vertices, sink_union, strict=True) if include), + ) + + self._commodities = self._build_commodities(graph) + num_commodities = len(self._commodities) + num_flow_edges = self._layout.graph.num_edges + flow_capacity = self.flow_capacity + if flow_capacity is None: + flow_capacity = float(max(graph.num_edges, 1)) * self.flow_epsilon + if flow_capacity < self.flow_epsilon: + raise ValueError("Resolved flow capacity must be greater than or equal to flow_epsilon.") + self._resolved_flow_capacity = float(flow_capacity) + self._flow_lb = np.zeros((num_flow_edges, num_commodities), dtype=float) + self._flow_ub = np.zeros((num_flow_edges, num_commodities), dtype=float) + self._flow_ub[: graph.num_edges, :] = self._resolved_flow_capacity + for commodity_index, commodity in enumerate(self._commodities): + self._flow_ub[commodity.source_edge, commodity_index] = self._resolved_flow_capacity + self._flow_ub[np.asarray(commodity.sink_edges, dtype=int), commodity_index] = self._resolved_flow_capacity + self._flow_ub[np.asarray(commodity.hard_blocked_edges, dtype=int), commodity_index] = 0.0 + return self._layout.graph, data.copy() + + def get_flow_bounds(self, graph: BaseGraph, data: Data): + """Return the precomputed per-edge, per-commodity bounds.""" + return { + "lb": self._flow_lb, + "ub": self._flow_ub, + "n_flows": len(self._commodities), + "shared_bounds": False, + } + + def create_problem(self, graph: BaseGraph, data: Data): + """Build an efficient matrix-valued commodity-flow formulation.""" + if self._original_graph is None or self._layout is None: + raise ValueError("LinearDAGDiscovery preprocessing has not been initialized.") + num_edges = self._original_graph.num_edges + edge_selected = self.backend.Variable( + "edge_selected", + (num_edges,), + vartype=VarType.BINARY, + ) + problem = self.backend.SelectedFlow( + graph, + lb=self._flow_lb, + ub=self._flow_ub, + n_flows=len(self._commodities), + edge_indices=range(num_edges), + epsilon=self.flow_epsilon, + selected=edge_selected, + acyclic_graph=self._original_graph, + max_parents=self.max_parents, + selected_by_flow_name="edge_used_by_commodity", + selected_any_name="edge_selected", + ) + return self.create_flow_based_problem(problem, graph, data) + + def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, data: Data) -> ProblemDef: + """Add commodity coverage and linear structural-equation fitting.""" + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery preprocessing has not been initialized.") + if self._intervention_design is None: + raise ValueError("LinearDAGDiscovery intervention preprocessing has not been initialized.") + problem = flow_problem + num_vertices = self._original_graph.num_vertices + num_edges = self._original_graph.num_edges + num_samples = self._values.shape[1] + num_commodities = len(self._commodities) + + flow = problem.expr.flow + edge_selected = problem.expr.edge_selected + edge_used = problem.expr.edge_used_by_commodity + coverage_enabled = self.min_commodity_coverage > 0 or self.lambda_unexplained > 0 + if coverage_enabled: + commodity_active = self.backend.Variable( + "commodity_active", + (num_commodities,), + vartype=VarType.BINARY, + ) + active_matrix = ( + self.backend.Constant(_sparse_vector_entry_repetition(num_commodities, num_edges)) @ commodity_active + ) + active_matrix = active_matrix.reshape((num_edges, num_commodities)) + problem += edge_used <= active_matrix + problem += commodity_active.reshape((num_commodities, 1)) <= edge_used.sum(axis=0).reshape( + (num_commodities, 1) + ) + + num_flow_edges = graph.num_edges + flow_flat = flow.reshape((num_flow_edges * num_commodities, 1)) + commodity_column = commodity_active.reshape((num_commodities, 1)) + commodity_indices = np.arange(num_commodities, dtype=int) + source_edges = np.asarray([commodity.source_edge for commodity in self._commodities], dtype=int) + source_positions = source_edges + num_flow_edges * commodity_indices + source_selector = csr_matrix( + ( + np.ones(num_commodities, dtype=float), + (commodity_indices, source_positions), + ), + shape=(num_commodities, num_flow_edges * num_commodities), + ) + source_flow = self.backend.Constant(source_selector) @ flow_flat + problem += source_flow >= self.flow_epsilon * commodity_column + problem += source_flow <= self._resolved_flow_capacity * commodity_column + + sink_commodities = np.asarray( + [ + commodity_index + for commodity_index, commodity in enumerate(self._commodities) + for _ in commodity.sink_edges + ], + dtype=int, + ) + sink_edges = np.asarray( + [edge for commodity in self._commodities for edge in commodity.sink_edges], + dtype=int, + ) + sink_positions = sink_edges + num_flow_edges * sink_commodities + sink_selector = csr_matrix( + ( + np.ones(sink_positions.size, dtype=float), + (sink_commodities, sink_positions), + ), + shape=(num_commodities, num_flow_edges * num_commodities), + ) + sink_flow = self.backend.Constant(sink_selector) @ flow_flat + problem += sink_flow >= self.flow_epsilon * commodity_column + + if sink_positions.size: + sink_entry_rows = np.arange(sink_positions.size, dtype=int) + sink_entry_selector = csr_matrix( + ( + np.ones(sink_positions.size, dtype=float), + (sink_entry_rows, sink_positions), + ), + shape=(sink_positions.size, num_flow_edges * num_commodities), + ) + sink_entry_flow = self.backend.Constant(sink_entry_selector) @ flow_flat + sink_active_selector = csr_matrix( + ( + np.ones(sink_positions.size, dtype=float), + (sink_entry_rows, sink_commodities), + ), + shape=(sink_positions.size, num_commodities), + ) + sink_entry_active = self.backend.Constant(sink_active_selector) @ commodity_column + problem += sink_entry_flow <= self._resolved_flow_capacity * sink_entry_active + + group_counts = np.asarray([commodity.group_count for commodity in self._commodities], dtype=float) + problem.register( + "commodity_group_count", + self.backend.Constant(group_counts, name="commodity_group_count"), + ) + minimum_active = int(np.ceil(self.min_commodity_coverage * group_counts.sum())) + if minimum_active: + weighted_active = self.backend.Constant(csr_matrix(group_counts.reshape((1, num_commodities)))) @ ( + commodity_active.reshape((num_commodities, 1)) + ) + problem += weighted_active >= minimum_active + + if self.lambda_unexplained: + group_counts = np.asarray([commodity.group_count for commodity in self._commodities], dtype=float) + unexplained = self.backend.Constant(group_counts).multiply( + self.backend.Constant(np.ones((num_commodities,))) - commodity_active + ) + problem.register("commodity_unexplained", unexplained) + problem.add_objective( + unexplained.sum(), + weight=self.lambda_unexplained, + name="commodity_coverage", + ) + + coefficient_normalization = ( + self._coefficient_scales[self._edge_sources] / self._coefficient_scales[self._edge_targets] + ) + if self.coefficient_support == "exact": + # Translate the raw coefficient bound to normalized units. This + # preserves the raw estimator bound without imposing a second + # normalized upper bound. + normalized_bound = self.coefficient_bound * coefficient_normalization + normalized_coefficient = self.backend.Variable( + "edge_coefficient_normalized", + (num_edges,), + lb=-normalized_bound, + ub=normalized_bound, + ) + edge_coefficient = normalized_coefficient.multiply(1.0 / coefficient_normalization) + problem.register("edge_coefficient", edge_coefficient) + problem += self.backend.ExactSupport( + normalized_coefficient, + selected=edge_selected, + epsilon=self.min_abs_coefficient, + name="coefficient_support", + positive_name="coefficient_support_positive", + negative_name="coefficient_support_negative", + ) + else: + edge_coefficient = self.backend.Variable( + "edge_coefficient", + (num_edges,), + lb=-self.coefficient_bound, + ub=self.coefficient_bound, + ) + normalized_coefficient = edge_coefficient.multiply(coefficient_normalization) + problem.register("edge_coefficient_normalized", normalized_coefficient) + problem += edge_coefficient <= self.coefficient_bound * edge_selected + problem += edge_coefficient >= -self.coefficient_bound * edge_selected + + if self.enforce_signs: + positive = [] + negative = [] + for edge_index in range(num_edges): + interaction = self._original_graph.get_attr_edge(edge_index).get( + self.interaction_attribute, + None, + ) + if interaction in {1, 1.0}: + positive.append(edge_index) + elif interaction in {-1, -1.0}: + negative.append(edge_index) + if positive: + problem += edge_coefficient[np.asarray(positive, dtype=int)] >= 0 + if negative: + problem += edge_coefficient[np.asarray(negative, dtype=int)] <= 0 + + if self.fit_intercept: + intercept = self.backend.Variable( + "intercept", + (num_vertices,), + lb=-self.intercept_bound, + ub=self.intercept_bound, + ) + else: + intercept = self.backend.Constant(np.zeros((num_vertices,)), name="intercept_zero") + # The fitted case is already visible as the ``intercept`` symbol. A + # stable registered alias also makes the fixed zero-intercept case + # inspectable through the normal CORNETO expression API. + problem.register("intercept_value", intercept) + if not self.fit_intercept: + problem.register("intercept", intercept) + + parent_values = self._values[self._edge_sources, :] + parent_rows = np.arange(num_edges * num_samples, dtype=int) + parent_columns = np.tile(np.arange(num_edges, dtype=int), num_samples) + weighted_parent_operator = csr_matrix( + ( + parent_values.reshape(-1, order="F"), + (parent_rows, parent_columns), + ), + shape=(num_edges * num_samples, num_edges), + ) + weighted_parent_operator.eliminate_zeros() + weighted_parents = self.backend.Constant(weighted_parent_operator) @ edge_coefficient + weighted_parents = weighted_parents.reshape((num_edges, num_samples)) + target_incidence = csr_matrix( + ( + np.ones(num_edges, dtype=float), + (self._edge_targets, np.arange(num_edges, dtype=int)), + ), + shape=(num_vertices, num_edges), + ) + prediction = self.backend.Constant(target_incidence) @ weighted_parents + if self.fit_intercept: + intercept_matrix = self.backend.Constant(_sparse_vector_replication(num_vertices, num_samples)) @ intercept + prediction = prediction + intercept_matrix.reshape((num_vertices, num_samples)) + + intervention_design = self._intervention_design + known_shift = self.backend.Constant( + csr_matrix(intervention_design.known_shift), + name="known_intervention_shift", + ) + shift_prediction = known_shift + estimated_shift_parameters = None + if intervention_design.effect_keys: + estimated_shift_parameters = self.backend.Variable( + "intervention_shift_parameters", + (len(intervention_design.effect_keys), 1), + lb=-self.intervention_shift_bound, + ub=self.intervention_shift_bound, + ) + shift_mapping = self.backend.Constant( + intervention_design.mapping, + name="intervention_shift_mapping", + ) + estimated_shift = shift_mapping @ estimated_shift_parameters + shift_prediction = shift_prediction + estimated_shift.reshape((num_vertices, num_samples)) + prediction = prediction + shift_prediction + + problem.register("known_intervention_shift", known_shift) + problem.register("intervention_shift", shift_prediction) + if estimated_shift_parameters is not None: + problem.register("intervention_shift_mapping", shift_mapping) + problem.register("intervention_shift_parameters", estimated_shift_parameters) + if self.lambda_intervention_shifts: + problem.add_objective( + estimated_shift_parameters.norm(1), + weight=self.lambda_intervention_shifts, + name="intervention_shift_sparsity", + ) + + residual = self._values - prediction + problem.register("prediction", prediction) + problem.register("residual", residual) + problem.register( + "observed_mask", + self.backend.Constant(self._observed.astype(float), name="observed_mask"), + ) + problem.register( + "fitted_mask", + self.backend.Constant(self._valid_residual.astype(float), name="fitted_mask"), + ) + problem.register( + "loss_scale", + self.backend.Constant(self._loss_scales, name="loss_scale"), + ) + problem.register( + "observation_weight", + self.backend.Constant( + self._observation_weights, + name="observation_weight", + ), + ) + residual_vector = residual.reshape((num_vertices * num_samples,)) + valid_indices = np.flatnonzero(self._valid_residual.reshape(-1, order="F")) + fitted_residual = residual_vector[valid_indices] + observation_weights = self._observation_weights.reshape(-1, order="F")[valid_indices] + scales = np.broadcast_to( + self._loss_scales[:, None], + (num_vertices, num_samples), + ).reshape(-1, order="F")[valid_indices] + if self.loss == "absolute": + absolute_residual = self.backend.Variable( + "absolute_residual", + (valid_indices.size,), + lb=0, + ) + problem += fitted_residual <= absolute_residual + problem += -fitted_residual <= absolute_residual + fit = absolute_residual.multiply(observation_weights / scales).sum() + problem.add_objective(fit, name="absolute_fit") + else: + standardized_residual = fitted_residual.multiply(np.sqrt(observation_weights) / scales) + fit = standardized_residual.norm(2) ** 2 + problem.add_objective(fit, name="squared_fit") + + if self.lambda_edges: + problem.add_objective( + edge_selected.sum(), + weight=self.lambda_edges, + name="edge_sparsity", + ) + problem.register("dag_layer", problem.expr._dag_layer) + return problem + + # ------------------------------------------------------------------ + # Fixed-model prediction and evaluation + # ------------------------------------------------------------------ + @property + def loss_scales(self) -> np.ndarray: + """Training-derived response scales used by held-out losses.""" + if self._loss_scales.size == 0: + raise ValueError("LinearDAGDiscovery has not been built.") + return self._loss_scales.copy() + + @property + def intercepts(self) -> np.ndarray: + """Return fitted vertex intercepts in graph-vertex order.""" + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery has not been built.") + require_expression_value(self.problem, "edge_selected", self.name()) + if not self.fit_intercept: + return np.zeros((self._original_graph.num_vertices,), dtype=float) + return require_expression_value(self.problem, "intercept", self.name()).reshape(-1).copy() + + @property + def edge_coefficients(self) -> np.ndarray: + """Return fitted coefficients in original PKN edge order.""" + return require_expression_value(self.problem, "edge_coefficient", self.name()).reshape(-1).copy() + + def _fitted_parameters(self) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """Return selected edges, coefficients, and intercepts after solving.""" + selected = require_expression_value(self.problem, "edge_selected", self.name()).reshape(-1) > 0.5 + coefficients = require_expression_value(self.problem, "edge_coefficient", self.name()).reshape(-1) + intercept = ( + require_expression_value(self.problem, "intercept", self.name()).reshape(-1) + if self.fit_intercept + else np.zeros((self._original_graph.num_vertices,), dtype=float) + ) + if self._original_graph is None or coefficients.size != self._original_graph.num_edges: + raise ValueError("LinearDAGDiscovery has no usable fitted edge parameters.") + return selected, coefficients, intercept + + def _prediction_input_arrays( + self, + data: Data, + ) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, tuple[Any, ...]]: + """Parse new observations without applying training-time fitting rules.""" + if not isinstance(data, Data): + raise TypeError("data must be a corneto.data.Data object.") + if self._original_graph is None or self._intervention_design is None: + raise ValueError("LinearDAGDiscovery has not been built; call build or fit first.") + if not data.samples: + raise ValueError("Prediction data must contain at least one sample.") + + n_vertices = self._original_graph.num_vertices + n_samples = len(data.samples) + values = np.full((n_vertices, n_samples), np.nan, dtype=float) + observed = np.zeros((n_vertices, n_samples), dtype=bool) + hard = np.zeros((n_vertices, n_samples), dtype=bool) + soft = np.zeros((n_vertices, n_samples), dtype=bool) + shifts = np.zeros((n_vertices, n_samples), dtype=float) + explicit_shift = np.zeros((n_vertices, n_samples), dtype=bool) + groups = np.full((n_vertices, n_samples), _MISSING, dtype=object) + vertices = set(self._original_graph.V) + + for sample_index, (sample_name, sample) in enumerate(data.samples.items()): + seen = set() + for feature in sample.features: + if feature.mapping != "vertex": + continue + if feature.id not in vertices: + raise ValueError(f"Unknown vertex {feature.id!r} in sample {sample_name!r}.") + if feature.id in seen: + raise ValueError(f"Duplicate vertex {feature.id!r} in sample {sample_name!r}.") + seen.add(feature.id) + vertex_index = self._vertex_index[feature.id] + intervention_type = self._get_intervention_type(feature, sample_name) + if intervention_type == "hard": + hard[vertex_index, sample_index] = True + elif intervention_type == "shift": + soft[vertex_index, sample_index] = True + elif any( + key in feature.data + for key in dict.fromkeys( + (self.intervention_shift_key, "shift", "shift_value", "intervention_shift") + ) + ): + raise ValueError( + f"A shift value is only valid for a 'shift' intervention " + f"(vertex {feature.id!r}, sample {sample_name!r})." + ) + + if intervention_type != "none": + group = self._get_intervention_group(feature) + if group is not _MISSING and group is not None: + _InterventionDesign._validate_group(group) + groups[vertex_index, sample_index] = group + shift_value = None + if intervention_type == "shift": + shift_value = self._get_shift_value(feature, sample_name) + if shift_value is not None: + shifts[vertex_index, sample_index] = shift_value + explicit_shift[vertex_index, sample_index] = True + value = feature.value + if value is None or ( + isinstance(value, Real) and not isinstance(value, bool) and np.isnan(float(value)) + ): + if intervention_type == "hard": + raise ValueError( + f"Hard-intervened vertex {feature.id!r} in sample {sample_name!r} " + "requires an observed value." + ) + continue + if isinstance(value, bool) or not isinstance(value, Real): + raise TypeError( + f"Measurement for vertex {feature.id!r} in sample {sample_name!r} must be numeric or missing." + ) + value = float(value) + if not np.isfinite(value): + raise ValueError( + f"Measurement for vertex {feature.id!r} in sample {sample_name!r} must be finite or missing." + ) + values[vertex_index, sample_index] = value + observed[vertex_index, sample_index] = True + + # Fill omitted estimated shifts only from their fitted training group. + fitted_shifts: dict[tuple[Any, Any], float] = {} + if self._intervention_design.effect_keys: + parameters = require_expression_value( + self.problem, + "intervention_shift_parameters", + self.name(), + ).reshape(-1) + fitted_shifts = dict(zip(self._intervention_design.effect_keys, parameters, strict=True)) + for vertex_index, sample_index in zip(*np.where(soft), strict=True): + # An explicit numeric shift wins and is already in ``shifts``. + feature_group = groups[vertex_index, sample_index] + if explicit_shift[vertex_index, sample_index]: + continue + if feature_group is _MISSING: + raise ValueError( + "Soft-intervention prediction requires an explicit shift or a fitted intervention_group; " + f"none was supplied for vertex {self._original_graph.V[vertex_index]!r}." + ) + key = (self._original_graph.V[vertex_index], feature_group) + if key not in fitted_shifts: + raise ValueError( + f"No fitted soft-intervention shift is available for vertex/group {key!r}; " + "test outcomes are never used to estimate it." + ) + shifts[vertex_index, sample_index] = float(fitted_shifts[key]) + return values, observed, hard, soft, shifts, tuple(data.samples) + + def _selected_order(self, selected: np.ndarray) -> tuple[list[int], list[list[int]]]: + """Topologically order the fitted selected DAG.""" + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery has not been built.") + incoming = [[] for _ in range(self._original_graph.num_vertices)] + outgoing = [[] for _ in range(self._original_graph.num_vertices)] + indegree = np.zeros((self._original_graph.num_vertices,), dtype=int) + for edge_index in np.flatnonzero(selected): + source = int(self._edge_sources[edge_index]) + target = int(self._edge_targets[edge_index]) + incoming[target].append(int(edge_index)) + outgoing[source].append(target) + indegree[target] += 1 + queue = [index for index, degree in enumerate(indegree) if degree == 0] + order = [] + while queue: + vertex = queue.pop(0) + order.append(vertex) + for target in outgoing[vertex]: + indegree[target] -= 1 + if indegree[target] == 0: + queue.append(target) + if len(order) != self._original_graph.num_vertices: + raise ValueError("The fitted LinearDAGDiscovery support is cyclic and cannot be predicted.") + return order, incoming + + def _forward_prediction_arrays( + self, + data: Optional[Data] = None, + parsed: Optional[tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, tuple[Any, ...]]] = None, + ) -> tuple[np.ndarray, np.ndarray, np.ndarray, tuple[Any, ...]]: + if parsed is None: + if data is None: + raise ValueError("Prediction data is required.") + parsed = self._prediction_input_arrays(data) + values, observed, hard, soft, shifts, sample_names = parsed + selected, coefficients, intercept = self._fitted_parameters() + order, incoming = self._selected_order(selected) + predictions = np.zeros_like(values) + n_samples = values.shape[1] + for sample_index in range(n_samples): + for vertex in order: + if hard[vertex, sample_index]: + predictions[vertex, sample_index] = values[vertex, sample_index] + continue + edge_indices = incoming[vertex] + prediction = intercept[vertex] + for edge_index in edge_indices: + source = self._edge_sources[edge_index] + prediction += coefficients[edge_index] * predictions[source, sample_index] + if soft[vertex, sample_index]: + prediction += shifts[vertex, sample_index] + predictions[vertex, sample_index] = prediction + return predictions, observed, hard, sample_names + + @staticmethod + def _data_from_arrays( + vertices: tuple[Any, ...], + sample_names: tuple[Any, ...], + values: np.ndarray, + *, + observed: Optional[np.ndarray] = None, + valid: Optional[np.ndarray] = None, + predicted_mask: Optional[np.ndarray] = None, + clamped: Optional[np.ndarray] = None, + equation_prediction: Optional[np.ndarray] = None, + ) -> Data: + samples = {} + for sample_index, sample_name in enumerate(sample_names): + features = {} + for vertex_index, vertex in enumerate(vertices): + value = values[vertex_index, sample_index] + features[vertex] = { + "mapping": "vertex", + "value": None if not np.isfinite(value) else float(value), + "predicted": bool(predicted_mask[vertex_index, sample_index]) + if predicted_mask is not None + else False, + } + if observed is not None: + features[vertex]["observed"] = bool(observed[vertex_index, sample_index]) + if valid is not None: + features[vertex]["valid"] = bool(valid[vertex_index, sample_index]) + if clamped is not None: + features[vertex]["clamped"] = bool(clamped[vertex_index, sample_index]) + if equation_prediction is not None and np.isfinite(equation_prediction[vertex_index, sample_index]): + features[vertex]["equation_prediction"] = float(equation_prediction[vertex_index, sample_index]) + samples[sample_name] = features + return Data.from_cdict(samples) + + def predict(self, data: Data) -> Data: + """Predict held-out vertex values using the fixed fitted DAG. + + All non-hard measurements, including roots, are ignored as predictors. + Roots use their fitted intercept baseline; hard interventions are + clamped, soft shifts are applied to their equations, and descendants + use previously predicted parents. This method never calls a solver. + """ + predictions, observed, _hard, sample_names = self._forward_prediction_arrays(data) + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery has not been built.") + return self._data_from_arrays( + tuple(self._original_graph.V), + sample_names, + predictions, + observed=observed, + predicted_mask=~_hard, + clamped=_hard, + ) + + def _local_prediction_arrays( + self, + data: Optional[Data] = None, + parsed: Optional[tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, tuple[Any, ...]]] = None, + ) -> tuple[np.ndarray, np.ndarray, np.ndarray, tuple[Any, ...]]: + if parsed is None: + if data is None: + raise ValueError("Prediction data is required.") + parsed = self._prediction_input_arrays(data) + values, observed, hard, soft, shifts, sample_names = parsed + _selected, coefficients, intercept = self._fitted_parameters() + # Training's complete-equation mask is based on every candidate PKN + # parent, even when its fitted coefficient is zero. Retain that + # conservative mask here so local diagnostics remain comparable to + # the optimization objective. + all_incoming = [[] for _ in range(values.shape[0])] + for edge_index, target in enumerate(self._edge_targets): + all_incoming[int(target)].append(edge_index) + local = np.full_like(values, np.nan) + valid = observed & ~hard + for sample_index in range(values.shape[1]): + for vertex in range(values.shape[0]): + if not valid[vertex, sample_index]: + continue + parent_edges = all_incoming[vertex] + if any(not observed[self._edge_sources[e], sample_index] for e in parent_edges): + valid[vertex, sample_index] = False + continue + value = intercept[vertex] + for edge_index in parent_edges: + value += coefficients[edge_index] * values[self._edge_sources[edge_index], sample_index] + if soft[vertex, sample_index]: + value += shifts[vertex, sample_index] + local[vertex, sample_index] = value + return local, values, valid, sample_names + + def residuals(self, data: Data) -> Data: + """Return observed-minus-local-equation residuals. + + Unlike :meth:`predict`, this diagnostic intentionally uses observed + parent values. It mirrors the structural-equation training objective, + including its complete candidate-parent missingness mask, and is useful + for local fit auditing but is not a forward intervention forecast. + """ + local, values, valid, sample_names = self._local_prediction_arrays(data) + residual = np.full_like(values, np.nan) + residual[valid] = values[valid] - local[valid] + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery has not been built.") + return self._data_from_arrays( + tuple(self._original_graph.V), + sample_names, + residual, + observed=np.isfinite(values), + valid=valid, + equation_prediction=local, + ) + + def evaluate( + self, + data: Data, + *, + sample_weights: Optional[Mapping[Any, float]] = None, + ) -> dict[str, Any]: + """Evaluate fixed forward and local losses on supplied measurements. + + Forward loss excludes hard-intervention targets (which are clamped) and + never uses observed descendants as predictors. Local loss uses observed + values for every candidate PKN parent (with zero coefficients for + unselected edges), matching the training equation objective. Both use + training-derived response scales and report valid counts plus + per-vertex and per-sample normalized losses. Reported losses are + weighted means (configured vertex weights and optional held-out + ``sample_weights``), not the raw summed optimization objective; training + sample weights are never reused for unrelated held-out names. + """ + parsed = self._prediction_input_arrays(data) + values, observed, hard, _soft, _shifts, sample_names = parsed + predictions, observed, hard, sample_names = self._forward_prediction_arrays(parsed=parsed) + local, values, local_valid, _ = self._local_prediction_arrays(parsed=parsed) + forward_valid = observed & ~hard + if self._original_graph is None: + raise ValueError("LinearDAGDiscovery has not been built.") + + if sample_weights is not None and not isinstance(sample_weights, Mapping): + raise TypeError("sample_weights must be a mapping or None.") + evaluation_sample_weights = self._resolve_positive_weights( + tuple(sample_names), + dict(sample_weights or {}), + "sample_weights", + ) + evaluation_vertex_weights = self._resolve_positive_weights( + tuple(self._original_graph.V), + self.vertex_weights, + "vertex_weights", + ) + + def metrics( + errors: np.ndarray, + valid: np.ndarray, + ) -> tuple[float, int, dict[Any, float], dict[Any, float]]: + normalized = errors / self._loss_scales[:, None] + score = np.abs(normalized) if self.loss == "absolute" else normalized**2 + weights = evaluation_vertex_weights[:, None] * evaluation_sample_weights[None, :] + count = int(np.count_nonzero(valid)) + denominator = float(np.sum(weights[valid])) if count else 0.0 + loss = float(np.sum(score[valid] * weights[valid]) / denominator) if denominator else float("nan") + per_vertex = { + vertex: ( + float( + np.sum(score[index, valid[index]] * evaluation_sample_weights[valid[index]]) + / np.sum(evaluation_sample_weights[valid[index]]) + ) + if np.any(valid[index]) + else float("nan") + ) + for index, vertex in enumerate(self._original_graph.V) + } + per_sample = { + sample: ( + float( + np.sum(score[valid[:, index], index] * evaluation_vertex_weights[valid[:, index]]) + / np.sum(evaluation_vertex_weights[valid[:, index]]) + ) + if np.any(valid[:, index]) + else float("nan") + ) + for index, sample in enumerate(sample_names) + } + return loss, count, per_vertex, per_sample + + forward_loss, forward_count, forward_by_vertex, forward_by_sample = metrics( + values - predictions, + forward_valid, + ) + local_loss, local_count, local_by_vertex, local_by_sample = metrics(values - local, local_valid) + residual = np.full_like(values, np.nan) + residual[local_valid] = values[local_valid] - local[local_valid] + return { + "forward_loss": forward_loss, + "forward_count": forward_count, + "forward_by_vertex": forward_by_vertex, + "forward_by_sample": forward_by_sample, + "forward_by_condition": forward_by_sample, + "local_loss": local_loss, + "local_count": local_count, + "local_by_vertex": local_by_vertex, + "local_by_sample": local_by_sample, + "local_by_condition": local_by_sample, + "loss_is_weighted_mean": True, + "sample_weights": dict(zip(sample_names, evaluation_sample_weights, strict=True)), + "predictions": self._data_from_arrays( + tuple(self._original_graph.V), + sample_names, + predictions, + observed=observed, + predicted_mask=~hard, + clamped=hard, + ), + "residuals": self._data_from_arrays( + tuple(self._original_graph.V), + sample_names, + residual, + observed=np.isfinite(values), + valid=local_valid, + equation_prediction=local, + ), + } + + def get_commodity_info(self) -> tuple[Mapping[str, Any], ...]: + """Return read-only metadata for the resolved structural flows. + + The result is a tuple of mapping-like records, one per flow column. + ``group_count`` is the number of distinct intervention evidence units + represented by that column; repeated cells in one explicit group are + listed in that unit's ``sample_names`` but do not increase the count. + An absent group is reported as ``None`` and is represented by one + implicit unit per structural signature. + """ + if self._original_graph is None or self._layout is None: + raise ValueError("The method has not been preprocessed.") + vertex_by_outflow = {edge: vertex for vertex, edge in self._layout.outflow_edges.items()} + records = [] + for index, commodity in enumerate(self._commodities): + evidence_units = [] + for unit in commodity.evidence_units: + evidence_units.append( + MappingProxyType( + { + "source": unit.source, + "intervention_group": unit.intervention_group, + "explicit_group": unit.explicit_group, + "sample_names": tuple(self._sample_names[i] for i in unit.sample_indices), + } + ) + ) + records.append( + MappingProxyType( + { + "index": index, + "source": commodity.source, + "sink_vertices": tuple(vertex_by_outflow[edge] for edge in commodity.sink_edges), + "sink_edges": commodity.sink_edges, + "hard_blocked_edges": commodity.hard_blocked_edges, + "group_count": commodity.group_count, + "evidence_units": tuple(evidence_units), + } + ) + ) + return tuple(records) + + def get_selected_edge_indices(self, threshold: float = 0.5) -> np.ndarray: + """Return selected edge indices in the original PKN.""" + if self.problem is None: + raise ValueError("The method has not been built.") + self.validate_solution_support() + values = self.problem.expr.edge_selected.value + if values is None: + raise ValueError("The problem has not been solved.") + return np.flatnonzero(np.asarray(values).reshape(-1) > threshold) + + def validate_solution_support(self) -> None: + """Reject solved exact-support models that violate coefficient support.""" + if self.problem is None: + raise ValueError("The method has not been built.") + selected_values = self.problem.expr.edge_selected.value + coefficient_values = self.problem.expr.edge_coefficient.value + if selected_values is None or coefficient_values is None: + raise ValueError("The problem has not been solved.") + if self.coefficient_support != "exact": + return + + selected = np.asarray(selected_values).reshape(-1) > 0.5 + coefficients = np.asarray(coefficient_values).reshape(-1) + normalized = coefficients * ( + self._coefficient_scales[self._edge_sources] / self._coefficient_scales[self._edge_targets] + ) + tolerance = min(1e-9, self.min_abs_coefficient * 0.5) + magnitude = np.abs(normalized) + invalid_selected = selected & (magnitude < self.min_abs_coefficient - tolerance) + invalid_unselected = ~selected & (magnitude > tolerance) + invalid = invalid_selected | invalid_unselected + if np.any(invalid): + edges = np.flatnonzero(invalid).tolist() + raise ValueError( + "Solved exact coefficient support is invalid for edges " + f"{edges!r}: selected edges must have normalized magnitude at least " + f"min_abs_coefficient={self.min_abs_coefficient:g} and unselected " + "edges must have zero normalized coefficients." + ) + + def get_edge_usage(self, threshold: float = 0.5) -> np.ndarray: + """Return the edge-by-commodity support matrix.""" + if self.problem is None: + raise ValueError("The method has not been built.") + self.validate_solution_support() + values = self.problem.expr.edge_used_by_commodity.value + if values is None: + raise ValueError("The problem has not been solved.") + return np.asarray(values).reshape((self._original_graph.num_edges, len(self._commodities))) > threshold + + def get_solution_graph(self, threshold: float = 0.5): + """Return the selected PKN subgraph with fitted edge metadata. + + Each solution edge receives ``coefficient`` and + ``normalized_coefficient`` attributes. The configured interaction + attribute is set to the sign of the fitted coefficient and, when the + original graph provided that attribute, its prior value is preserved + as ``prior_``. Structural-support edges whose + fitted coefficient is numerically zero receive ``connector=True``. + """ + if self._original_graph is None: + raise ValueError("The method has not been built.") + selected = self.get_selected_edge_indices(threshold) + extract_keep_order = getattr(self._original_graph, "_extract_subgraph_keep_order", None) + if callable(extract_keep_order): + solution_graph = extract_keep_order(edges=selected) + else: + solution_graph = self._original_graph.edge_subgraph(selected) + + coefficients = np.asarray(self.problem.expr.edge_coefficient.value).reshape(-1) + normalized = coefficients * ( + self._coefficient_scales[self._edge_sources] / self._coefficient_scales[self._edge_targets] + ) + for solution_index, edge_index in enumerate(selected): + attributes = solution_graph.get_attr_edge(solution_index) + if self.interaction_attribute in attributes: + attributes[f"prior_{self.interaction_attribute}"] = attributes[self.interaction_attribute] + inferred_interaction = int(np.sign(coefficients[edge_index])) + attributes[self.interaction_attribute] = inferred_interaction + attributes["coefficient"] = float(coefficients[edge_index]) + attributes["normalized_coefficient"] = float(normalized[edge_index]) + attributes["inferred_interaction"] = inferred_interaction + attributes["connector"] = bool( + self.coefficient_support == "structural" + and np.isclose(coefficients[edge_index], 0.0, atol=1e-9, rtol=0.0) + ) + return solution_graph + + @staticmethod + def name() -> str: + """Return the method name.""" + return "LinearDAGDiscovery" + + @staticmethod + def description() -> str: + """Return a short method description.""" + return "Commodity-flow-supported linear DAG discovery over a prior network" diff --git a/corneto/methods/imat.py b/corneto/methods/imat.py index 88595fecd..667fd22c8 100644 --- a/corneto/methods/imat.py +++ b/corneto/methods/imat.py @@ -40,7 +40,9 @@ class MultiSampleIMAT(MultiSampleFBA): Used when both types of regularization are needed. Defaults to 0.0. eps (float, optional): Tolerance for considering a flux as non-zero. Defaults to 1e-2. - scale (bool, optional): Whether to scale the weights. Defaults to False. + scale (bool, optional): If True, normalize the nonzero iMAT score + weights independently for each condition so their absolute values + sum to 100. Defaults to False. gpr_field (str, optional): Name of the attribute field containing GPR rules. Defaults to "GPR". high_expression_threshold (Optional[float], optional): Threshold above @@ -198,8 +200,10 @@ def preprocess(self, graph: BaseGraph, data: Data) -> Tuple[BaseGraph, Data]: # Count features with mapping="edge" for feature in sample.features: - if feature.mapping == "edge" and ( - feature.data.get("role") != "objective" or "imat_score" in feature.data + if ( + feature.mapping == "edge" + and (feature.value is not None or "imat_score" in feature.data) + and (feature.data.get("role") != "objective" or "imat_score" in feature.data) ): edge_features_count += 1 diff --git a/corneto/methods/pcst.py b/corneto/methods/pcst.py index 97c9abe27..2298c780b 100644 --- a/corneto/methods/pcst.py +++ b/corneto/methods/pcst.py @@ -9,7 +9,6 @@ from corneto.data import Data from corneto.graph import Attr, BaseGraph, EdgeType from corneto.methods._base import FlowMethod -from corneto.methods._flow_utils import add_selected_flow from corneto.methods._input_utils import ( DEFAULT_CONDITION, data_from_features, @@ -74,6 +73,8 @@ def __init__( self.flow_edges_out = dict() self.prized_flow_edges = dict() self._candidate_vertices_per_sample: List[Tuple[Any, ...]] = [] + self._biological_graph: Optional[BaseGraph] = None + self._biological_num_edges = 0 # Internal storage for per-sample values. self._max_flow: Optional[float] = None @@ -169,6 +170,8 @@ def preprocess(self, graph: BaseGraph, data: Data) -> Tuple[BaseGraph, Data]: self.flow_edges_out = dict() self.prized_flow_edges = dict() self._candidate_vertices_per_sample = [] + self._biological_graph = graph + self._biological_num_edges = graph.num_edges graph_vertices = tuple(graph.V) all_vertices = tuple( @@ -292,13 +295,27 @@ def _first_vertex_choice(): def get_flow_bounds(self, graph: BaseGraph, data: Data) -> Dict[str, Any]: """Get the flow bounds for the optimization problem.""" if self._max_flow_list is not None: - lb = [ - np.array( - [0 if prop.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED) else -mf for prop in graph.get_attr_edges()] - ) - for mf in self._max_flow_list - ] - ub = self._max_flow_list + lb = np.column_stack( + [ + np.array( + [ + 0 if prop.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED) else -max_flow + for prop in graph.get_attr_edges() + ] + ) + for max_flow in self._max_flow_list + ] + ) + ub = np.column_stack( + [ + np.full( + graph.num_edges, + max_flow, + dtype=float, + ) + for max_flow in self._max_flow_list + ] + ) else: lb = np.array( [ @@ -315,24 +332,44 @@ def get_flow_bounds(self, graph: BaseGraph, data: Data) -> Dict[str, Any]: "shared_bounds": False, } - def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, data: Data): - """Create the flow-based optimization problem.""" - flow_edge_ids = list(set(self.flow_edges_in.values()) | set(self.flow_edges_out.values())) - edge_ids = list(set(range(graph.num_edges)) - set(flow_edge_ids)) - - selected_flow = add_selected_flow( - self.backend, - flow_problem, + def create_problem(self, graph: BaseGraph, data: Data): + """Create exact biological support without auxiliary-edge indicators.""" + flow_params = self.get_flow_bounds(graph, data) + flow_problem = self.backend.SelectedFlow( graph, - biological_edge_indices=edge_ids, + lb=flow_params["lb"], + ub=flow_params["ub"], + n_flows=flow_params["n_flows"], + edge_indices=range(self._biological_num_edges), epsilon=self.epsilon, - acyclic=self.strict_acyclic, + exact_support=self.strict_acyclic, + selected_by_flow_name="with_flow", + selected_any_name=None, ) - with_flow = selected_flow.all_edges + return self.create_flow_based_problem(flow_problem, graph, data) - flow_problem.register("with_flow", with_flow) + def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, data: Data): + """Create the flow-based optimization problem.""" + edge_ids = list(range(self._biological_num_edges)) + with_flow = flow_problem.expr.with_flow self._reg_varname = "with_flow" + if self.strict_acyclic: + assert self._biological_graph is not None + if "with_flow_negative" in flow_problem.expr: + self.backend.Acyclic( + self._biological_graph, + flow_problem, + indicator_positive_var_name="with_flow_positive", + indicator_negative_var_name="with_flow_negative", + ) + else: + self.backend.Acyclic( + self._biological_graph, + flow_problem, + indicator_positive_var_name="with_flow", + ) + for i, sample_data in enumerate(data.samples.values()): sample_max_flow = self._max_flow_list[i] if self._max_flow_list is not None else self._max_flow sample_selected_root = self._selected_roots[i] @@ -375,6 +412,7 @@ def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, if other_flow_edges: flow_problem += F[other_flow_edges] == 0 + candidate_support = None # Root Flow Constraints if sample_selected_root is not None: if self.force_flow_through_root: @@ -386,16 +424,18 @@ def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, flow_problem += F[terminals_edgeflow_idx] >= 1 else: if candidate_vertices: - flow_problem += self.backend.NonZeroIndicator( + terminal_support = f"{self.flow_name}_terminal_support_{i}" + terminal_pos = f"{self.flow_name}_terminal_pos_{i}" + terminal_neg = f"{self.flow_name}_terminal_neg_{i}" + flow_problem += self.backend.ExactSupport( flow_problem.expr.flow, - vertices_edgeflow_idx, - i, - tolerance=self.epsilon, - suffix_pos=f"_terminal_pos_{i}", - suffix_neg=f"_terminal_neg_{i}", + indexes=(vertices_edgeflow_idx, i), + epsilon=self.epsilon, + name=terminal_support, + positive_name=terminal_pos, + negative_name=terminal_neg, ) - terminal_pos = self.flow_name + f"_terminal_pos_{i}" - terminal_neg = self.flow_name + f"_terminal_neg_{i}" + candidate_support = flow_problem.expr[terminal_support] flow_problem += flow_problem.expr[terminal_neg].sum() == 1 @@ -404,9 +444,7 @@ def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, if t_idx: # Enforce all terminals selected, whether root is a terminal # (negative sign) or not (all terminals positive). - flow_problem += flow_problem.expr[terminal_pos][t_idx].sum() + flow_problem.expr[ - terminal_neg - ][t_idx].sum() == len(t_idx) + flow_problem += candidate_support[t_idx].sum() == len(t_idx) # Costs Objective edge_costs = np.ones((graph.num_edges)) * self.default_edge_cost @@ -437,23 +475,26 @@ def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, prized_vertices.append(prized) if prized_idx: prizes = np.array([prized_terminals[prized] for prized in prized_vertices]) - if self.strict_acyclic: - selected_for_prizes = with_flow if len(with_flow.shape) == 1 else with_flow[:, i] - selected_prized_flow_edges = selected_for_prizes[prized_idx] + if candidate_support is not None: + candidate_position = {edge: position for position, edge in enumerate(vertices_edgeflow_idx)} + selected_prized_flow_edges = candidate_support[ + [candidate_position[edge] for edge in prized_idx] + ] else: flow_variable = flow_problem.expr._flow - indicator_args = (prized_idx,) if len(flow_variable.shape) == 1 else (prized_idx, i) - flow_problem += self.backend.NonZeroIndicator( + prize_support = f"{self.flow_name}_prize_support_{i}" + prize_lb = np.asarray(flow_variable.lb[prized_idx, i], dtype=float) + nonnegative = bool(np.all(prize_lb >= 0)) + flow_problem += self.backend.ExactSupport( flow_variable, - *indicator_args, - tolerance=self.epsilon, - suffix_pos=f"_prize_pos_{i}", - suffix_neg=f"_prize_neg_{i}", - ) - selected_prized_flow_edges = ( - flow_problem.expr[f"{self.flow_name}_prize_pos_{i}"] - + flow_problem.expr[f"{self.flow_name}_prize_neg_{i}"] + indexes=(prized_idx, i), + epsilon=self.epsilon, + nonnegative=nonnegative, + name=prize_support, + positive_name=f"{self.flow_name}_prize_pos_{i}", + negative_name=f"{self.flow_name}_prize_neg_{i}", ) + selected_prized_flow_edges = flow_problem.expr[prize_support] flow_problem.register(f"selected_prized_flow_edges_{i}", selected_prized_flow_edges) flow_problem.add_objective(prizes @ selected_prized_flow_edges, weight=-1, name="prizes") diff --git a/corneto/methods/phonemes.py b/corneto/methods/phonemes.py index 14950551b..db5685d11 100644 --- a/corneto/methods/phonemes.py +++ b/corneto/methods/phonemes.py @@ -11,10 +11,7 @@ from corneto.data import Data from corneto.graph import Attr, BaseGraph, EdgeType from corneto.methods._base import FlowMethod -from corneto.methods._flow_utils import ( - add_selected_flow, - add_vertex_selection, -) +from corneto.methods._flow_utils import add_vertex_selection from corneto.methods._input_utils import ( DEFAULT_CONDITION, data_from_features, @@ -26,7 +23,6 @@ validate_vertices, ) from corneto.methods._network_utils import augment_with_boundaries, prune_to_paths -from corneto.methods._optimization_utils import add_condition_union from corneto.methods._phonemes_preprocessing import ( compute_phonemes_scores, normalize_phonemes_score_mapping, @@ -132,6 +128,7 @@ def __init__( raise ValueError("max_flow must be greater than or equal to epsilon.") self._condition_names: tuple[str, ...] = () + self._biological_graph: BaseGraph | None = None self._biological_num_edges = 0 self._flow_max = 0.0 self._target_inflow_edges: dict[Any, int] = {} @@ -357,6 +354,7 @@ def preprocess(self, graph: BaseGraph, data: Data): node_scores[measured_indexes, condition_index] = [measured[vertices[index]] for index in measured_indexes] self._condition_names = condition_names + self._biological_graph = pruned_graph self._biological_num_edges = pruned_graph.num_edges self._target_mask = target_mask self._measured_mask = measured_mask @@ -431,31 +429,31 @@ def get_flow_bounds(self, graph: BaseGraph, data: Data): } def create_problem(self, graph: BaseGraph, data: Data): - """Create a consistently two-dimensional flow problem.""" + """Create selected biological flows without auxiliary-edge binaries.""" flow_params = self.get_flow_bounds(graph, data) - flow_problem = self.backend.Flow( + flow_problem = self.backend.SelectedFlow( graph, lb=flow_params["lb"], ub=flow_params["ub"], n_flows=flow_params["n_flows"], - shared_bounds=False, - force_matrix=True, + edge_indices=range(self._biological_num_edges), + epsilon=self.epsilon, + selected_by_flow_name="edge_selected", + selected_any_name="edge_selected_any", ) return self.create_flow_based_problem(flow_problem, graph, data) def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, data: Data): """Add vectorized PHONEMeS selection, role, and objective terms.""" - selected_flow = add_selected_flow( - self.backend, + edge_selected = flow_problem.expr.edge_selected + assert self._biological_graph is not None + self.backend.Acyclic( + self._biological_graph, flow_problem, - graph, - biological_edge_indices=range(self._biological_num_edges), - epsilon=self.epsilon, - acyclic=True, + indicator_positive_var_name="edge_selected", + acyclic_var_name="_dag_layer", ) - edge_selected = selected_flow.biological_edges - flow_problem.register("edge_selected", edge_selected) - flow_problem.register("dag_layer", selected_flow.dag_layer) + flow_problem.register("dag_layer", flow_problem.expr._dag_layer) internal_mask = ~(self._target_mask | self._measured_mask) require_outgoing = (internal_mask | self._target_mask).astype(float) @@ -471,12 +469,7 @@ def create_flow_based_problem(self, flow_problem: ProblemDef, graph: BaseGraph, require_incoming=require_incoming, ) vertex_selected = vertex_selection.selected - edge_selected_any = add_condition_union( - self.backend, - flow_problem, - edge_selected, - name="edge_selected_any", - ) + edge_selected_any = flow_problem.expr.edge_selected_any flow_problem.add_objective( vertex_selected.multiply(self._node_scores).sum(), diff --git a/corneto/methods/signal/__init__.py b/corneto/methods/signal/__init__.py deleted file mode 100644 index 21c233edc..000000000 --- a/corneto/methods/signal/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -"""Deprecated compatibility namespace for signaling methods.""" - -import warnings - -warnings.warn( - "corneto.methods.signal is deprecated since CORNETO 1.0.0rc1; use " - "corneto.methods.signaling instead. The compatibility package will be " - "removed in CORNETO 2.0.", - FutureWarning, - stacklevel=2, -) diff --git a/corneto/methods/signal/cellnopt_ilp.py b/corneto/methods/signal/cellnopt_ilp.py deleted file mode 100644 index 63941b6ce..000000000 --- a/corneto/methods/signal/cellnopt_ilp.py +++ /dev/null @@ -1,17 +0,0 @@ -"""Deprecated compatibility imports for the CellNOpt ILP implementation.""" - -from corneto.methods.signaling.cellnopt_ilp import ( - cellnoptILP, - cno_style, - expand_graph_for_flows, - plot_data, - plot_fitness, -) - -__all__ = [ - "cellnoptILP", - "cno_style", - "expand_graph_for_flows", - "plot_data", - "plot_fitness", -] diff --git a/corneto/methods/signaling/__init__.py b/corneto/methods/signaling/__init__.py index 1ba1a1b95..baf83ee5f 100644 --- a/corneto/methods/signaling/__init__.py +++ b/corneto/methods/signaling/__init__.py @@ -1 +1,22 @@ """Signaling-network inference methods.""" + +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) +from corneto.methods.signaling.cellnopt_dag import BooleanReaction, CellNOptDAG +from corneto.methods.signaling.cellnopt_plotting import ( + plot_cellnopt_fit, + plot_cellnopt_model, +) + +__all__ = [ + "BooleanReaction", + "CellNOptDAG", + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", + "plot_cellnopt_fit", + "plot_cellnopt_model", +] diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py new file mode 100644 index 000000000..0f209a5ca --- /dev/null +++ b/corneto/methods/signaling/annnet.py @@ -0,0 +1,363 @@ +"""AnnNet integration for CellNOptDAG signaling analyses.""" + +import warnings +from copy import deepcopy +from dataclasses import dataclass +from typing import TYPE_CHECKING, Any, Mapping + +import numpy as np + +from corneto.contrib.annnet import from_annnet +from corneto.utils import import_optional_module + +if TYPE_CHECKING: + from annnet import AnnNet + + from corneto.backend._base import ProblemDef + from corneto.methods.signaling import CellNOptDAG + + +@dataclass(frozen=True) +class _CellNOptAnnNetContext: + condition_layers: dict[str, tuple[str, ...]] + source_edge_ids: tuple[str, ...] + source_edges: dict[str, tuple[str, str, int]] + + +def _matching_condition_keys(**collections: Mapping[str, Any]) -> tuple[str, ...]: + names: tuple[str, ...] | None = None + for argument, values in collections.items(): + if not isinstance(values, Mapping): + raise TypeError(f"{argument} must be a mapping from condition names to protein values.") + current = tuple(values) + if names is None: + names = current + elif set(current) != set(names): + raise ValueError(f"{argument} must contain the same conditions as inputs.") + return names or () + + +def _condition_layer_map( + graph: "AnnNet", + *, + condition_aspect: str, + condition_layers: Mapping[str, tuple[str, ...]] | None, +) -> dict[str, tuple[str, ...]]: + aspects = tuple(graph.layers.list_aspects()) + if condition_layers is not None: + result = {str(name): tuple(layer) for name, layer in condition_layers.items()} + if not result: + raise ValueError("condition_layers must contain at least one condition.") + if any(len(layer) != len(aspects) for layer in result.values()): + raise ValueError("Each condition layer must provide one value for every AnnNet layer aspect.") + return result + + if aspects != (condition_aspect,): + raise ValueError( + f"Automatic condition discovery requires one AnnNet layer aspect named {condition_aspect!r}. " + "Pass condition_layers explicitly when the network uses several aspects." + ) + names = graph.layers.list_layers(aspect=condition_aspect) + if not names: + raise ValueError(f"The AnnNet object has no layers for the {condition_aspect!r} aspect.") + return {str(name): (str(name),) for name in names} + + +def add_cellnopt_conditions( + graph: "AnnNet", + *, + inputs: Mapping[str, Mapping[str, Any]], + measurements: Mapping[str, Mapping[str, Any]], + inhibitors: Mapping[str, Mapping[str, Any]] | None = None, + condition_aspect: str = "condition", + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> dict[str, tuple[str, ...]]: + """Add CellNOpt perturbations and measurements as AnnNet condition layers. + + Every condition receives a copy of the graph's existing vertices. Input, + inhibitor, and measurement values are stored as vertex-layer attributes. + The returned mapping can be passed to :func:`build_cellnopt_from_annnet` + when a caller wants to name or select layers explicitly. + """ + import_optional_module("annnet") + if inhibitors is None: + inhibitors = {condition: {} for condition in inputs} + condition_names = _matching_condition_keys( + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + if not condition_names: + raise ValueError("At least one experimental condition is required.") + + aspects = tuple(graph.layers.list_aspects()) + if aspects and aspects != (condition_aspect,): + raise ValueError( + "add_cellnopt_conditions can initialize an unlayered AnnNet object or reuse its single " + f"{condition_aspect!r} aspect. Use AnnNet directly for experiments with several layer aspects." + ) + if not aspects: + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Declared aspects") + graph.layers.set_aspects( + [condition_aspect], + {condition_aspect: list(condition_names)}, + ) + + known_vertices = set(graph.vertices()) + base_vertices = list(graph.vertices()) + layers = {condition: (condition,) for condition in condition_names} + for condition, layer in layers.items(): + graph.add_vertices(base_vertices, layer=layer) + values_by_role = ( + (inputs[condition], input_attr), + (inhibitors[condition], inhibitor_attr), + (measurements[condition], measurement_attr), + ) + for values, attribute in values_by_role: + if not isinstance(values, Mapping): + raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") + unknown = set(values) - known_vertices + if unknown: + protein = sorted(unknown, key=str)[0] + raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") + for protein, value in values.items(): + graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + return layers + + +def _cellnopt_source_graph(graph: "AnnNet", network_slice: str | None): + selected = set(graph.edges()) if network_slice is None else set(graph.slices.edges(network_slice)) + edge_ids = [edge_id for edge_id in graph.edges() if edge_id in selected] + directed_edge_ids = set(graph.get_edges_by_direction(True)) + source = graph.__class__(directed=None) + + def biological_id(vertex): + if isinstance(vertex, tuple) and len(vertex) == 2 and isinstance(vertex[1], tuple): + return str(vertex[0]) + return str(vertex) + + for edge_id in edge_ids: + edge_source, edge_target = graph.get_edge(edge_id) + sources = [biological_id(vertex) for vertex in edge_source] + targets = [biological_id(vertex) for vertex in edge_target] + if len(sources) != 1 or len(targets) != 1: + raise ValueError( + "CellNOptDAG requires signed interactions with one source and one target; " + f"AnnNet edge {edge_id!r} has {len(sources)} sources and {len(targets)} targets." + ) + source.add_edges( + sources[0], + targets[0], + edge_id=edge_id, + directed=edge_id in directed_edge_ids, + parallel="parallel", + ) + attributes = dict(graph.attrs.get_edge_attrs(edge_id)) + attributes.pop("edge_id", None) + if attributes: + source.attrs.set_edge_attrs(edge_id, **deepcopy(attributes)) + + source.uns.update(deepcopy(dict(graph.uns))) + return source + + +def build_cellnopt_from_annnet( + method: "CellNOptDAG", + graph: "AnnNet", + *, + network_slice: str | None = None, + condition_aspect: str = "condition", + condition_layers: Mapping[str, tuple[str, ...]] | None = None, + input_attr: str = "input", + inhibitor_attr: str = "inhibited", + measurement_attr: str = "observed", +) -> "ProblemDef": + """Build a CellNOptDAG problem from a signed network and data in AnnNet. + + The signed interactions are read from ``network_slice`` when supplied. + Inputs, inhibitors, and measurements are read from vertex attributes in + the condition layers. Internal graph preparation is kept inside this + integration function so that AnnNet remains the user-facing graph object. + """ + from corneto.methods.signaling import CellNOptDAG + + if not isinstance(method, CellNOptDAG): + raise TypeError("method must be a CellNOptDAG instance.") + layers = _condition_layer_map( + graph, + condition_aspect=condition_aspect, + condition_layers=condition_layers, + ) + source = _cellnopt_source_graph(graph, network_slice) + pkn = from_annnet(source) + + inputs: dict[str, dict[str, Any]] = {} + inhibitors: dict[str, dict[str, Any]] = {} + measurements: dict[str, dict[str, Any]] = {} + for condition, layer in layers.items(): + inputs[condition] = {} + inhibitors[condition] = {} + measurements[condition] = {} + for protein in graph.layers.layer_vertex_set(layer): + protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) + attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + if input_attr in attributes: + inputs[condition][protein_id] = attributes[input_attr] + if attributes.get(inhibitor_attr): + inhibitors[condition][protein_id] = 1 + if measurement_attr in attributes: + measurements[condition][protein_id] = attributes[measurement_attr] + + source_edge_ids = tuple(source.edges()) + source_edges = {} + for edge_id in source_edge_ids: + edge_source, edge_target = source.get_edge(edge_id) + if len(edge_source) != 1 or len(edge_target) != 1: + continue + attributes = source.attrs.get_edge_attrs(edge_id) + source_edges[edge_id] = ( + str(next(iter(edge_source))), + str(next(iter(edge_target))), + int(attributes.get("interaction", 1)), + ) + + problem = method.build_many( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + problem._annnet_cellnopt_context = _CellNOptAnnNetContext( + condition_layers=layers, + source_edge_ids=source_edge_ids, + source_edges=source_edges, + ) + return problem + + +def _reaction_text(reaction) -> str: + literals = [str(node) for node in reaction.positive_literals] + literals.extend(f"NOT {node}" for node in reaction.negative_literals) + return f"{' AND '.join(literals)} -> {reaction.product}" + + +def add_cellnopt_results( + graph: "AnnNet", + method: "CellNOptDAG", + problem: "ProblemDef", + *, + solution: Any = None, + model_slice: str = "cellnopt_selected", + prediction_attr: str = "predicted", + activity_attr: str = "active", + measurement_attr: str = "observed", + error_attr: str = "absolute_error", +) -> dict[str, Any]: + """Add a solved CellNOptDAG model and its condition results to AnnNet. + + The selected interactions are added to ``model_slice``. Predictions are + stored on protein-layer pairs, while copies of selected interactions in + each condition layer record whether their reaction is active. + """ + context = getattr(problem, "_annnet_cellnopt_context", None) + if context is None: + raise ValueError("Build the problem with build_cellnopt_from_annnet before adding its results.") + required = ("reaction_selected", "reaction_active", "vertex_value") + missing = [name for name in required if getattr(problem.expr, name).value is None] + if missing: + raise ValueError("Solve the CellNOptDAG problem before adding results to AnnNet.") + if graph.slices.exists(model_slice): + raise ValueError(f"AnnNet slice {model_slice!r} already exists.") + + selected = np.rint(np.asarray(problem.expr.reaction_selected.value)).astype(int).reshape(-1) + activity = np.rint(np.asarray(problem.expr.reaction_active.value)).astype(int) + predictions = np.rint(np.asarray(problem.expr.vertex_value.value)).astype(int) + selected_indices = np.flatnonzero(selected) + condition_names = tuple(context.condition_layers) + vertices = [str(vertex) for vertex in method.processed_graph.V] + + graph.slices.add(model_slice, role="inferred_model", method="CellNOptDAG") + selected_source_edges = { + context.source_edge_ids[edge_index] + for reaction_index in selected_indices + for edge_index in method.reactions[reaction_index].source_edges + } + for edge_id in selected_source_edges: + graph.slices.add_edge_to_slice(model_slice, edge_id) + + result_edge_ids = [] + condition_errors = {} + for condition_index, condition in enumerate(condition_names): + layer = context.condition_layers[condition] + graph.add_vertices(vertices, layer=layer) + endpoint_error = 0.0 + for vertex_index, protein in enumerate(vertices): + predicted = float(predictions[vertex_index, condition_index]) + attributes = {prediction_attr: predicted} + existing = graph.layers.get_vertex_layer_attrs(protein, layer) + if measurement_attr in existing: + error = abs(predicted - float(existing[measurement_attr])) + attributes[error_attr] = error + endpoint_error += error + graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + + condition_edges = [] + for reaction_index in selected_indices: + reaction = method.reactions[reaction_index] + is_active = bool(activity[reaction_index, condition_index]) + for source_edge_index in reaction.source_edges: + prior_edge_id = context.source_edge_ids[source_edge_index] + source, target, interaction = context.source_edges[prior_edge_id] + condition_edges.append( + { + "source": (source, layer), + "target": (target, layer), + "edge_id": ( + f"{model_slice}__condition_{condition_index}__reaction_{reaction_index}" + f"__edge_{source_edge_index}" + ), + "interaction": interaction, + "prior_edge_id": prior_edge_id, + "reaction_index": int(reaction_index), + "reaction": _reaction_text(reaction), + "selected": True, + activity_attr: is_active, + "source_method": "CellNOptDAG", + } + ) + result_edge_ids.extend( + graph.add_edges( + condition_edges, + slice=model_slice, + default_edge_directed=True, + ) + ) + + active_count = int(activity[selected_indices, condition_index].sum()) + layer_attributes = { + "endpoint_absolute_error": float(endpoint_error), + "selected_reactions": len(selected_indices), + "active_reactions": active_count, + } + if solution is not None and getattr(solution, "status", None) is not None: + layer_attributes["solver_status"] = str(solution.status) + graph.layers.set_layer_attrs(layer, **layer_attributes) + condition_errors[condition] = endpoint_error + + graph.history.snapshot("cellnopt_results_added") + return { + "selected_reactions": len(selected_indices), + "selected_prior_edges": len(selected_source_edges), + "condition_edges": len(result_edge_ids), + "condition_errors": condition_errors, + } + + +__all__ = [ + "add_cellnopt_conditions", + "add_cellnopt_results", + "build_cellnopt_from_annnet", +] diff --git a/corneto/methods/signaling/cellnopt_dag.py b/corneto/methods/signaling/cellnopt_dag.py new file mode 100644 index 000000000..b8367299e --- /dev/null +++ b/corneto/methods/signaling/cellnopt_dag.py @@ -0,0 +1,931 @@ +"""Flow-based Boolean network inference in the style of CellNOpt.""" + +from __future__ import annotations + +import re +from collections.abc import Mapping +from dataclasses import dataclass +from numbers import Real +from typing import Any, Optional + +import numpy as np +from scipy.sparse import csr_matrix + +from corneto._constants import VarType +from corneto.backend._base import Backend, ProblemDef +from corneto.data import Data +from corneto.graph import Attr, BaseGraph, EdgeType, Graph +from corneto.methods._base import FlowMethod +from corneto.methods._input_utils import ( + DEFAULT_CONDITION, + data_from_features, + require_mapping, + validate_condition_keys, +) +from corneto.methods._network_utils import augment_with_boundaries +from corneto.methods._predictive import ( + require_expression_value, + validate_solve_result, +) +from corneto.methods._predictive import ( + solve_options as normalize_solve_options, +) + +__all__ = ["BooleanReaction", "CellNOptDAG"] + +_AND_PATTERN = re.compile(r"^and[0-9]+$", re.IGNORECASE) +_ROLE_INPUT = "input" +_ROLE_OUTPUT = "output" +_ROLE_INPUT_OUTPUT = "input_output" + + +@dataclass(frozen=True) +class BooleanReaction: + """A normalized Boolean reaction with one product. + + Positive literals must be active and negative literals must be inactive + for the reaction to propagate in a condition. ``source_edges`` records the + PKN edges from which the reaction was compiled. + """ + + positive_literals: tuple[Any, ...] + negative_literals: tuple[Any, ...] + product: Any + source_edges: tuple[int, ...] + + @property + def literals(self) -> tuple[Any, ...]: + """Return positive and negative literals in deterministic order.""" + return self.positive_literals + self.negative_literals + + +@dataclass(frozen=True) +class _ReactionNetwork: + graph: Graph + reactions: tuple[BooleanReaction, ...] + dependency_reactions: np.ndarray + positive_literals: csr_matrix + negative_literals: csr_matrix + products: csr_matrix + + +def _is_and_vertex(vertex: Any) -> bool: + return isinstance(vertex, str) and _AND_PATTERN.fullmatch(vertex) is not None + + +def _interaction(graph: BaseGraph, edge_index: int) -> int: + value = graph.get_attr_edge(edge_index).get("interaction") + if isinstance(value, bool) or not isinstance(value, Real) or value not in (-1, 1): + raise ValueError(f"CellNOptDAG requires interaction +1 or -1 on edge {edge_index}; got {value!r}.") + return int(value) + + +def _compile_reactions(graph: BaseGraph) -> _ReactionNetwork: + """Compile SIF-style dummy AND vertices into reaction-level dependencies.""" + if graph.num_vertices == 0 or graph.num_edges == 0: + raise ValueError("CellNOptDAG requires a non-empty directed PKN.") + + and_vertices = {vertex for vertex in graph.V if _is_and_vertex(vertex)} + vertex_order = {vertex: index for index, vertex in enumerate(graph.V)} + incoming_by_and = {vertex: [] for vertex in and_vertices} + outgoing_by_and = {vertex: [] for vertex in and_vertices} + + for edge_index, ((source, target), attributes) in enumerate(zip(graph.E, graph.get_attr_edges())): + if len(source) != 1 or len(target) != 1: + raise ValueError( + "CellNOptDAG accepts simple directed PKN edges only; " + f"edge {edge_index} has {len(source)} sources and {len(target)} targets." + ) + if not attributes.has_attr(Attr.EDGE_TYPE, EdgeType.DIRECTED): + raise ValueError(f"CellNOptDAG requires directed edges; edge {edge_index} is not directed.") + _interaction(graph, edge_index) + source_vertex = next(iter(source)) + target_vertex = next(iter(target)) + if source_vertex in and_vertices and target_vertex in and_vertices: + raise ValueError(f"Nested dummy AND gates are not supported (edge {edge_index}).") + if target_vertex in and_vertices: + incoming_by_and[target_vertex].append(edge_index) + if source_vertex in and_vertices: + outgoing_by_and[source_vertex].append(edge_index) + + reactions: list[BooleanReaction] = [] + reaction_keys: set[tuple[frozenset, frozenset, Any]] = set() + + def ordered(vertices): + return tuple(sorted(vertices, key=vertex_order.__getitem__)) + + def add_reaction(positive, negative, product, source_edges): + positive = set(positive) + negative = set(negative) + contradictory = positive & negative + if contradictory: + literal = min(contradictory, key=vertex_order.__getitem__) + raise ValueError(f"Reaction producing {product!r} contains both {literal!r} and !{literal!r}.") + key = (frozenset(positive), frozenset(negative), product) + if key in reaction_keys: + return + reaction_keys.add(key) + reactions.append( + BooleanReaction( + positive_literals=ordered(positive), + negative_literals=ordered(negative), + product=product, + source_edges=tuple(source_edges), + ) + ) + + for edge_index, (source, target) in enumerate(graph.E): + source_vertex = next(iter(source)) + target_vertex = next(iter(target)) + if source_vertex in and_vertices or target_vertex in and_vertices: + continue + sign = _interaction(graph, edge_index) + add_reaction( + [source_vertex] if sign > 0 else [], + [source_vertex] if sign < 0 else [], + target_vertex, + [edge_index], + ) + + for gate in (vertex for vertex in graph.V if vertex in and_vertices): + incoming = incoming_by_and[gate] + outgoing = outgoing_by_and[gate] + if len(incoming) < 2: + raise ValueError(f"Dummy AND gate {gate!r} must have at least two incoming edges.") + if not outgoing: + raise ValueError(f"Dummy AND gate {gate!r} must have at least one outgoing edge.") + positive = [] + negative = [] + for edge_index in incoming: + source_vertex = next(iter(graph.get_edge(edge_index)[0])) + if _interaction(graph, edge_index) > 0: + positive.append(source_vertex) + else: + negative.append(source_vertex) + for edge_index in outgoing: + if _interaction(graph, edge_index) < 0: + raise ValueError( + f"Dummy AND gate {gate!r} must activate its product; edge {edge_index} has interaction -1." + ) + product = next(iter(graph.get_edge(edge_index)[1])) + add_reaction( + positive, + negative, + product, + [*incoming, edge_index], + ) + + if not reactions: + raise ValueError("CellNOptDAG preprocessing produced no Boolean reactions.") + + dependency_graph = Graph() + species = [vertex for vertex in graph.V if vertex not in and_vertices] + for vertex in species: + dependency_graph.add_vertex(vertex) + + dependency_reactions = [] + for reaction_index, reaction in enumerate(reactions): + for literal in reaction.positive_literals: + dependency_graph.add_edge( + literal, + reaction.product, + interaction=1, + reaction=reaction_index, + ) + dependency_reactions.append(reaction_index) + for literal in reaction.negative_literals: + dependency_graph.add_edge( + literal, + reaction.product, + interaction=-1, + reaction=reaction_index, + ) + dependency_reactions.append(reaction_index) + + vertex_index = {vertex: index for index, vertex in enumerate(dependency_graph.V)} + num_reactions = len(reactions) + positive_rows = [] + positive_columns = [] + negative_rows = [] + negative_columns = [] + product_rows = [] + product_columns = [] + for reaction_index, reaction in enumerate(reactions): + positive_rows.extend([reaction_index] * len(reaction.positive_literals)) + positive_columns.extend(vertex_index[vertex] for vertex in reaction.positive_literals) + negative_rows.extend([reaction_index] * len(reaction.negative_literals)) + negative_columns.extend(vertex_index[vertex] for vertex in reaction.negative_literals) + product_rows.append(vertex_index[reaction.product]) + product_columns.append(reaction_index) + + literal_shape = (num_reactions, dependency_graph.num_vertices) + product_shape = (dependency_graph.num_vertices, num_reactions) + positive_literals = csr_matrix( + ( + np.ones(len(positive_rows)), + (positive_rows, positive_columns), + ), + shape=literal_shape, + ) + negative_literals = csr_matrix( + ( + np.ones(len(negative_rows)), + (negative_rows, negative_columns), + ), + shape=literal_shape, + ) + products = csr_matrix( + ( + np.ones(num_reactions), + (product_rows, product_columns), + ), + shape=product_shape, + ) + return _ReactionNetwork( + graph=dependency_graph, + reactions=tuple(reactions), + dependency_reactions=np.asarray(dependency_reactions, dtype=int), + positive_literals=positive_literals, + negative_literals=negative_literals, + products=products, + ) + + +def _bounded_number( + value: Any, + *, + argument: str, + identifier: Any, + condition: str, + binary: bool, +) -> float: + if isinstance(value, (bool, np.bool_)): + number = float(value) + elif isinstance(value, Real): + number = float(value) + else: + raise TypeError(f"{argument}[{identifier!r}] for condition {condition!r} must be numeric, got {value!r}.") + if not np.isfinite(number): + raise ValueError(f"{argument}[{identifier!r}] for condition {condition!r} must be finite.") + allowed = number in (0, 1) if binary else 0 <= number <= 1 + if not allowed: + domain = "0 or 1" if binary else "between 0 and 1" + raise ValueError(f"{argument}[{identifier!r}] for condition {condition!r} must be {domain}; got {value!r}.") + return number + + +def _cellnopt_data( + graph: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, +) -> Data: + condition_names = validate_condition_keys( + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + if not condition_names: + raise ValueError("CellNOptDAG requires at least one named condition.") + if inhibitors is None: + inhibitors = {condition: {} for condition in condition_names} + + graph_vertices = set(graph.V) + features_by_condition = {} + for condition in condition_names: + condition_inputs = require_mapping( + inputs[condition], + argument="inputs", + condition=condition, + ) + condition_measurements = require_mapping( + measurements[condition], + argument="measurements", + condition=condition, + ) + condition_inhibitors = require_mapping( + inhibitors[condition], + argument="inhibitors", + condition=condition, + ) + if not condition_inputs and not condition_inhibitors: + raise ValueError(f"Condition {condition!r} must contain an input or active inhibitor.") + if not condition_measurements: + raise ValueError(f"measurements for condition {condition!r} must not be empty.") + + input_values = {} + measurement_values = {} + active_inhibitors = set() + for vertex, value in condition_inputs.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in inputs for condition {condition!r}.") + input_values[vertex] = _bounded_number( + value, + argument="inputs", + identifier=vertex, + condition=condition, + binary=True, + ) + for vertex, value in condition_measurements.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in measurements for condition {condition!r}.") + measurement_values[vertex] = _bounded_number( + value, + argument="measurements", + identifier=vertex, + condition=condition, + binary=False, + ) + for vertex, value in condition_inhibitors.items(): + if vertex not in graph_vertices: + raise ValueError(f"Unknown vertex {vertex!r} in inhibitors for condition {condition!r}.") + inhibitor = _bounded_number( + value, + argument="inhibitors", + identifier=vertex, + condition=condition, + binary=True, + ) + if inhibitor: + active_inhibitors.add(vertex) + + overlap = active_inhibitors & set(input_values) + if overlap: + vertex = next(vertex for vertex in graph.V if vertex in overlap) + raise ValueError( + f"Vertex {vertex!r} cannot be both an input and an active inhibitor in condition {condition!r}." + ) + for vertex in active_inhibitors: + input_values[vertex] = 0.0 + + features = [] + included = set(input_values) | set(measurement_values) + for vertex in (vertex for vertex in graph.V if vertex in included): + is_input = vertex in input_values + is_output = vertex in measurement_values + role = _ROLE_INPUT_OUTPUT if is_input and is_output else (_ROLE_INPUT if is_input else _ROLE_OUTPUT) + feature = { + "id": vertex, + "mapping": "vertex", + "role": role, + "value": (measurement_values[vertex] if is_output else input_values[vertex]), + } + if is_input: + feature["input_value"] = input_values[vertex] + if vertex in active_inhibitors: + feature["intervention"] = "inhibitor" + features.append(feature) + features_by_condition[condition] = features + return data_from_features(features_by_condition) + + +class CellNOptDAG(FlowMethod): + """Infer a shared acyclic Boolean model from multiple conditions. + + The method selects reactions globally and evaluates their Boolean truth in + every condition. A single nonnegative flow has exactly the selected + reaction dependencies as its internal support. Conservation, positive + support, and acyclicity therefore require every selected dependency to lie + on a path from a controlled input or inhibitor to a measured output. + + Dummy vertices named ``AND`` are compiled into one reaction per + product. All operands of such a reaction share one selection variable and + are evaluated conjunctively. + + Args: + lambda_reg: Penalty for every selected reaction. + max_flow: Upper bound for structural flow. By default, the number of + compiled dependency edges is used. + epsilon: Minimum flow on every selected dependency edge. + backend: Optimization backend. + """ + + def __init__( + self, + lambda_reg: float = 1e-3, + max_flow: Optional[float] = None, + epsilon: float = 1.0, + backend: Optional[Backend] = None, + ): + if isinstance(lambda_reg, bool) or not isinstance(lambda_reg, Real): + raise TypeError("lambda_reg must be a finite nonnegative number.") + if not np.isfinite(lambda_reg) or lambda_reg < 0: + raise ValueError("lambda_reg must be a finite nonnegative number.") + if isinstance(epsilon, bool) or not isinstance(epsilon, Real): + raise TypeError("epsilon must be a finite positive number.") + if not np.isfinite(epsilon) or epsilon <= 0: + raise ValueError("epsilon must be a finite positive number.") + if max_flow is not None: + if isinstance(max_flow, bool) or not isinstance(max_flow, Real): + raise TypeError("max_flow must be a finite positive number.") + if not np.isfinite(max_flow) or max_flow <= 0: + raise ValueError("max_flow must be a finite positive number.") + if max_flow < epsilon: + raise ValueError("max_flow must be greater than or equal to epsilon.") + + super().__init__( + lambda_reg=lambda_reg, + reg_varname="reaction_selected", + flow_lower_bound=0, + flow_upper_bound=1, + backend=backend, + ) + self.max_flow = None if max_flow is None else float(max_flow) + self.epsilon = float(epsilon) + self.reactions: tuple[BooleanReaction, ...] = () + self._condition_names: tuple[str, ...] = () + self._biological_num_edges = 0 + self._flow_max = 0.0 + self._dependency_to_reaction = csr_matrix((0, 0)) + self._positive_literals = csr_matrix((0, 0)) + self._negative_literals = csr_matrix((0, 0)) + self._products = csr_matrix((0, 0)) + self._forced_mask = np.empty((0, 0), dtype=bool) + self._forced_values = np.empty((0, 0), dtype=float) + self._measurement_mask = np.empty((0, 0), dtype=bool) + self._measurements = np.empty((0, 0), dtype=float) + self._network_graph: Optional[Graph] = None + self._species: tuple[Any, ...] = () + self.solve_result = None + + def build( + self, + pkn: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, + ) -> ProblemDef: + """Build a single-condition CellNOpt problem.""" + return self.build_many( + pkn, + inputs={DEFAULT_CONDITION: inputs}, + measurements={DEFAULT_CONDITION: measurements}, + inhibitors=(None if inhibitors is None else {DEFAULT_CONDITION: inhibitors}), + ) + + def build_many( + self, + pkn: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, + ) -> ProblemDef: + """Build a problem for multiple named experimental conditions.""" + self.solve_result = None + data = _cellnopt_data( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + return self.build_from_data(pkn, data) + + def fit( + self, + pkn: BaseGraph, + *, + inputs, + measurements, + inhibitors=None, + solve_options: Optional[Mapping[str, Any]] = None, + **solver_options: Any, + ) -> "CellNOptDAG": + """Build and solve a shared Boolean model, returning ``self``. + + Scientific arguments intentionally mirror :meth:`build_many`; backend + options belong in ``solve_options`` (or can be supplied as solver + keyword arguments). The solved :attr:`problem` remains available for + adding constraints and inspecting expressions. Time-limited + incumbents are accepted when they include finite reaction selections. + """ + options = normalize_solve_options(solve_options, solver_options) + problem = self.build_many( + pkn, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + result = problem.solve(**options) + validate_solve_result(result, problem.expr, ("reaction_selected",), self.name()) + self.solve_result = result + return self + + def preprocess(self, graph: BaseGraph, data: Data): + """Compile reactions, validate condition data, and add flow boundaries.""" + self.solve_result = None + network = _compile_reactions(graph) + if not data.samples: + raise ValueError("CellNOptDAG requires at least one condition.") + + condition_names = tuple(data.samples) + if any(not isinstance(name, str) or not name for name in condition_names): + raise ValueError("CellNOptDAG condition names must be non-empty strings.") + + vertex_index = {vertex: index for index, vertex in enumerate(network.graph.V)} + num_vertices = network.graph.num_vertices + num_conditions = len(condition_names) + forced_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + forced_values = np.zeros((num_vertices, num_conditions), dtype=float) + measurement_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + measurements = np.zeros((num_vertices, num_conditions), dtype=float) + + for condition_index, (condition, sample) in enumerate(data.samples.items()): + condition_inputs = 0 + condition_measurements = 0 + for feature in sample.features: + if feature.mapping != "vertex": + raise ValueError( + f"CellNOptDAG only accepts vertex features; got mapping " + f"{feature.mapping!r} in condition {condition!r}." + ) + if feature.id not in vertex_index: + raise ValueError( + f"Unknown species {feature.id!r} in CellNOptDAG data for " + f"condition {condition!r}; dummy AND vertices cannot be measured " + "or perturbed." + ) + role = feature.data.get("role") + if role not in { + _ROLE_INPUT, + _ROLE_OUTPUT, + _ROLE_INPUT_OUTPUT, + }: + raise ValueError( + f"Vertex feature {feature.id!r} for condition {condition!r} " + "must have role 'input', 'output', or 'input_output'." + ) + index = vertex_index[feature.id] + if role in {_ROLE_INPUT, _ROLE_INPUT_OUTPUT}: + input_value = feature.data.get( + "input_value", + feature.value if role == _ROLE_INPUT else None, + ) + forced_mask[index, condition_index] = True + forced_values[index, condition_index] = _bounded_number( + input_value, + argument="input_value", + identifier=feature.id, + condition=condition, + binary=True, + ) + condition_inputs += 1 + if role in {_ROLE_OUTPUT, _ROLE_INPUT_OUTPUT}: + measurement_mask[index, condition_index] = True + measurements[index, condition_index] = _bounded_number( + feature.value, + argument="measurement", + identifier=feature.id, + condition=condition, + binary=False, + ) + condition_measurements += 1 + if condition_inputs == 0: + raise ValueError(f"Condition {condition!r} must contain at least one input.") + if condition_measurements == 0: + raise ValueError(f"Condition {condition!r} must contain at least one output.") + + input_union = forced_mask.any(axis=1) + output_union = measurement_mask.any(axis=1) + layout = augment_with_boundaries( + network.graph, + inflow_vertices=(vertex for vertex, include in zip(network.graph.V, input_union) if include), + outflow_vertices=(vertex for vertex, include in zip(network.graph.V, output_union) if include), + ) + flow_graph = layout.graph + num_dependencies = network.graph.num_edges + num_reactions = len(network.reactions) + dependency_rows = np.arange(num_dependencies) + dependency_to_reaction = csr_matrix( + ( + np.ones(num_dependencies), + (dependency_rows, network.dependency_reactions), + ), + shape=(flow_graph.num_edges, num_reactions), + ) + + default_max_flow = float(max(num_dependencies, 1)) + flow_max = default_max_flow if self.max_flow is None else self.max_flow + if flow_max < self.epsilon: + raise ValueError(f"max_flow ({flow_max:g}) must be greater than or equal to epsilon ({self.epsilon:g}).") + + self.reactions = network.reactions + self._network_graph = network.graph.copy() + self._species = tuple(network.graph.V) + self._condition_names = condition_names + self._biological_num_edges = num_dependencies + self._flow_max = float(flow_max) + self._dependency_to_reaction = dependency_to_reaction + self._positive_literals = network.positive_literals + self._negative_literals = network.negative_literals + self._products = network.products + self._forced_mask = forced_mask + self._forced_values = forced_values + self._measurement_mask = measurement_mask + self._measurements = measurements + return flow_graph, data.copy() + + def get_flow_bounds(self, graph: BaseGraph, data: Data): + """Return bounds for the single shared structural flow.""" + return { + "lb": 0, + "ub": self._flow_max, + "n_flows": 1, + "shared_bounds": False, + } + + def create_flow_based_problem( + self, + flow_problem: ProblemDef, + graph: BaseGraph, + data: Data, + ) -> ProblemDef: + """Add vectorized Boolean propagation and shared-flow selection.""" + problem = flow_problem + num_vertices = graph.num_vertices + num_reactions = len(self.reactions) + num_conditions = len(self._condition_names) + condition_ones = np.ones((1, num_conditions)) + + reaction_selected = self.backend.Variable( + "reaction_selected", + (num_reactions,), + vartype=VarType.BINARY, + ) + reaction_active = self.backend.Variable( + "reaction_active", + (num_reactions, num_conditions), + vartype=VarType.BINARY, + ) + vertex_value = self.backend.Variable( + "vertex_value", + (num_vertices, num_conditions), + vartype=VarType.BINARY, + ) + + dependency_selected_all = self.backend.Constant(self._dependency_to_reaction) @ reaction_selected + dependency_selected = dependency_selected_all[: self._biological_num_edges] + flow = problem.expr.flow + # The shared flow and shared reaction selection have exactly the same + # support on biological dependencies. Boundary flow remains free to + # choose which controlled species and measurements connect that support. + problem += self.backend.ExactSupport( + flow, + indexes=np.arange(self._biological_num_edges, dtype=int), + selected=dependency_selected, + epsilon=self.epsilon, + nonnegative=True, + name="dependency_selected", + ) + + problem.register("_dependency_selected_all", dependency_selected_all) + self.backend.Acyclic( + graph, + problem, + indicator_positive_var_name="_dependency_selected_all", + ) + + positive_literals = self.backend.Constant(self._positive_literals) + negative_literals = self.backend.Constant(self._negative_literals) + products = self.backend.Constant(self._products) + negative_count = np.asarray(self._negative_literals.sum(axis=1)).reshape(-1, 1) + literal_count = np.asarray((self._positive_literals + self._negative_literals).sum(axis=1)).reshape(-1, 1) + negative_count = negative_count @ condition_ones + literal_count = literal_count @ condition_ones + # S[r, c] counts true literals of reaction r in condition c. With k + # literals, the three inequalities below impose + # Z[r, c] = Y[r] AND (S[r, c] == k[r]) without a big-M constant. + literal_satisfaction = positive_literals @ vertex_value + negative_count - negative_literals @ vertex_value + selected_by_condition = reaction_selected.reshape((num_reactions, 1)) @ condition_ones + + problem += reaction_active <= selected_by_condition + problem += reaction_active.multiply(literal_count) <= literal_satisfaction + problem += reaction_active >= selected_by_condition + literal_satisfaction - literal_count + + producing_reactions = products @ reaction_active + producer_count = np.asarray(self._products.sum(axis=1)).reshape(-1, 1) + producer_count = producer_count @ condition_ones + free_mask = (~self._forced_mask).astype(float) + # A non-intervened species is the OR of its active producing reactions. + # Interventions mask only this product relation; upstream reaction truth + # remains intact when a product is experimentally forced to zero. + problem += vertex_value.multiply(free_mask) <= producing_reactions.multiply(free_mask) + problem += producing_reactions.multiply(free_mask) <= vertex_value.multiply(producer_count * free_mask) + problem += vertex_value.multiply(self._forced_mask.astype(float)) == self._forced_values + + error_coefficients = self._measurement_mask.astype(float) * (1 - 2 * self._measurements) + error_constant = float(np.sum(self._measurement_mask * self._measurements)) + # For binary x and measurement m in [0, 1], + # |x - m| = m + (1 - 2m)x exactly. + measurement_error = vertex_value.multiply(error_coefficients).sum() + error_constant + problem.add_objective( + measurement_error, + name="measurement_error", + ) + + problem.register("literal_satisfaction", literal_satisfaction) + problem.register("dag_layer", problem.expr._dag_layer) + return problem + + # ------------------------------------------------------------------ + # Fixed reaction-selection prediction and evaluation + # ------------------------------------------------------------------ + def _prediction_conditions(self, inputs, inhibitors=None): + if self._network_graph is None or not self._species: + raise ValueError("CellNOptDAG has not been built; call build/build_many or fit first.") + require_mapping(inputs, argument="inputs") + condition_names = validate_condition_keys(inputs=inputs, inhibitors=inhibitors) + if not condition_names: + raise ValueError("CellNOptDAG prediction requires at least one named condition.") + if inhibitors is None: + inhibitors = {condition: {} for condition in condition_names} + species = set(self._species) + forced = np.zeros((len(self._species), len(condition_names)), dtype=bool) + forced_values = np.zeros_like(forced, dtype=float) + for condition_index, condition in enumerate(condition_names): + condition_inputs = require_mapping(inputs[condition], argument="inputs", condition=condition) + condition_inhibitors = require_mapping(inhibitors[condition], argument="inhibitors", condition=condition) + input_values = {} + for vertex, value in condition_inputs.items(): + if vertex not in species: + raise ValueError(f"Unknown species {vertex!r} in inputs for condition {condition!r}.") + input_values[vertex] = _bounded_number( + value, + argument="inputs", + identifier=vertex, + condition=condition, + binary=True, + ) + active_inhibitors = set() + for vertex, value in condition_inhibitors.items(): + if vertex not in species: + raise ValueError(f"Unknown species {vertex!r} in inhibitors for condition {condition!r}.") + active = _bounded_number( + value, + argument="inhibitors", + identifier=vertex, + condition=condition, + binary=True, + ) + if active: + active_inhibitors.add(vertex) + overlap = active_inhibitors & set(input_values) + if overlap: + vertex = next(vertex for vertex in self._species if vertex in overlap) + raise ValueError( + f"Vertex {vertex!r} cannot be both an input and an active inhibitor in condition {condition!r}." + ) + for vertex in active_inhibitors: + input_values[vertex] = 0.0 + for vertex, value in input_values.items(): + index = self._species.index(vertex) + forced[index, condition_index] = True + forced_values[index, condition_index] = value + return tuple(condition_names), forced, forced_values + + def _selected_reaction_values(self) -> np.ndarray: + return require_expression_value(self.problem, "reaction_selected", self.name()).reshape(-1) > 0.5 + + def get_selected_reaction_indices(self, threshold: float = 0.5) -> np.ndarray: + """Return indices of reactions in the fixed solved model.""" + values = require_expression_value(self.problem, "reaction_selected", self.name()).reshape(-1) + return np.flatnonzero(values > threshold) + + def _reaction_order(self, selected: np.ndarray) -> tuple[list[Any], dict[Any, list[int]]]: + """Return a stable topological species order for selected reactions.""" + incoming_count = {vertex: 0 for vertex in self._species} + outgoing = {vertex: [] for vertex in self._species} + producers = {vertex: [] for vertex in self._species} + for reaction_index, reaction in enumerate(self.reactions): + if not selected[reaction_index]: + continue + producers[reaction.product].append(reaction_index) + for literal in reaction.literals: + incoming_count[reaction.product] += 1 + outgoing[literal].append(reaction.product) + queue = [vertex for vertex in self._species if incoming_count[vertex] == 0] + order = [] + while queue: + vertex = queue.pop(0) + order.append(vertex) + for target in outgoing[vertex]: + incoming_count[target] -= 1 + if incoming_count[target] == 0: + queue.append(target) + if len(order) != len(self._species): + raise ValueError("The fitted CellNOptDAG reaction support is cyclic and cannot be predicted.") + return order, producers + + def _predict_arrays(self, inputs, inhibitors=None): + condition_names, forced, forced_values = self._prediction_conditions(inputs, inhibitors) + selected = self._selected_reaction_values() + if selected.size != len(self.reactions): + raise ValueError("CellNOptDAG has no usable fitted reaction selection.") + order, producers = self._reaction_order(selected) + species_index = {vertex: index for index, vertex in enumerate(self._species)} + values = np.zeros((len(self._species), len(condition_names)), dtype=float) + active = np.zeros((len(self.reactions), len(condition_names)), dtype=bool) + for condition_index in range(len(condition_names)): + for vertex in order: + vertex_index = species_index[vertex] + for reaction_index in producers[vertex]: + reaction = self.reactions[reaction_index] + active[reaction_index, condition_index] = bool( + all( + values[species_index[literal], condition_index] >= 0.5 + for literal in reaction.positive_literals + ) + and all( + values[species_index[literal], condition_index] < 0.5 + for literal in reaction.negative_literals + ) + ) + if forced[vertex_index, condition_index]: + values[vertex_index, condition_index] = forced_values[vertex_index, condition_index] + else: + values[vertex_index, condition_index] = float( + any(active[reaction_index, condition_index] for reaction_index in producers[vertex]) + ) + return values, forced, tuple(condition_names) + + def _prediction_data(self, values: np.ndarray, condition_names: tuple[str, ...], forced: np.ndarray) -> Data: + samples = {} + for condition_index, condition in enumerate(condition_names): + features = {} + for vertex_index, vertex in enumerate(self._species): + features[vertex] = { + "mapping": "vertex", + "value": float(values[vertex_index, condition_index]), + "predicted": not bool(forced[vertex_index, condition_index]), + "forced": bool(forced[vertex_index, condition_index]), + } + samples[condition] = features + return Data.from_cdict(samples) + + def predict(self, *, inputs, inhibitors=None) -> Data: + """Predict conditions from the fixed selected reactions. + + Inputs and active inhibitors are clamped exactly as during training; + every other species is the OR of its active selected reactions, whose + literals are evaluated in a topological order. Held-out measurements + are not accepted or consulted, and prediction never invokes a solver. + """ + values, forced, condition_names = self._predict_arrays(inputs, inhibitors) + return self._prediction_data(values, condition_names, forced) + + def evaluate(self, *, inputs, measurements, inhibitors=None) -> dict[str, Any]: + """Compare fixed-model predictions with supplied Boolean measurements.""" + predictions, forced, condition_names = self._predict_arrays(inputs, inhibitors) + measurement_names = validate_condition_keys(measurements=measurements) + if set(measurement_names) != set(condition_names): + raise ValueError( + "Condition names in measurements must match inputs/inhibitors: " + f"expected {list(condition_names)!r}, got {list(measurement_names)!r}." + ) + species_index = {vertex: index for index, vertex in enumerate(self._species)} + measurement_values = np.full((len(self._species), len(condition_names)), np.nan, dtype=float) + measurement_mask = np.zeros_like(measurement_values, dtype=bool) + for condition_index, condition in enumerate(condition_names): + values = require_mapping(measurements[condition], argument="measurements", condition=condition) + for vertex, value in values.items(): + if vertex not in species_index: + raise ValueError(f"Unknown species {vertex!r} in measurements for condition {condition!r}.") + measurement_values[species_index[vertex], condition_index] = _bounded_number( + value, + argument="measurements", + identifier=vertex, + condition=condition, + binary=False, + ) + measurement_mask[species_index[vertex], condition_index] = True + valid = measurement_mask & ~forced + errors = np.abs(predictions - measurement_values) + count = int(np.count_nonzero(valid)) + loss = float(np.mean(errors[valid])) if count else float("nan") + by_species = { + vertex: (float(np.mean(errors[index, valid[index]])) if np.any(valid[index]) else float("nan")) + for index, vertex in enumerate(self._species) + } + by_condition = { + condition: (float(np.mean(errors[valid[:, index], index])) if np.any(valid[:, index]) else float("nan")) + for index, condition in enumerate(condition_names) + } + return { + "loss": loss, + "count": count, + "by_species": by_species, + "by_condition": by_condition, + "predictions": self._prediction_data(predictions, condition_names, forced), + } + + @staticmethod + def name() -> str: + """Return the method name.""" + return "CellNOptDAG" + + @staticmethod + def description() -> str: + """Return a short method description.""" + return "Shared acyclic Boolean-reaction inference with structural flow connectivity" diff --git a/corneto/methods/signaling/cellnopt_ilp.py b/corneto/methods/signaling/cellnopt_ilp.py deleted file mode 100644 index 942c66144..000000000 --- a/corneto/methods/signaling/cellnopt_ilp.py +++ /dev/null @@ -1,620 +0,0 @@ -"""CellNOpt integer-linear programming method and visualization helpers.""" - -import re -from typing import Literal, Optional - -import numpy as np - -__all__ = [ - "cellnoptILP", - "cno_style", - "expand_graph_for_flows", - "plot_data", - "plot_fitness", -] - -import corneto as cn -from corneto.backend._base import EXPR_NAME_FLOW - - -def clip_quantiles(arr, q): - """Clip an array to its lower and upper quantiles.""" - if q < 0 or q > 1: - raise ValueError(f"Clipping value must be between 0 and 1, got {q}") - # compute the quantiles at clipping and 1-clipping and clip the flow - q = np.quantile(arr, [q, 1 - q]) - return np.clip(arr, q[0], q[1]) - - -def cno_style( - P, - max_edge_width: float = 5, - min_edge_width: float = 0.25, - flow_name: str = EXPR_NAME_FLOW, - positive_color: str = "dodgerblue4", - negative_color: str = "firebrick4", - zero_flow_threshold: float = 1e-6, - scale: Optional[Literal["log", "std"]] = "log", - clip_quantil: Optional[float] = 0.05, - iexp=0, -): - """Return graph-plotting attributes derived from a CellNOpt solution.""" - flow = np.array(P.expr[flow_name].value)[:, iexp] - flow[np.abs(flow) < zero_flow_threshold] = 0 - if scale is not None: - if scale == "log": - flow = np.log10(np.abs(flow) + 1e-6) * np.sign(flow) - elif scale == "std": - flow = flow / np.std(flow) - else: - raise ValueError(f"Unknown normalization method: {scale}") - if clip_quantil is not None: - flow = clip_quantiles(flow, clip_quantil) - max_flow = max(np.max(np.abs(flow)), 1e-6) - edge_attrs = dict() - for i, v in enumerate(flow): - # Apply threshold edge width - if abs(v) > 0: - edge_width = max_edge_width - else: - edge_width = min_edge_width - if scale is not None: - edge_width = min_edge_width + (max_edge_width - min_edge_width) * abs(v / max_flow) - # bound = P.expr[flow_name].ub[i] if v >= 0 else P.expr[flow_name].lb[i] - edge_attrs[i] = {"penwidth": str(edge_width)} - if flow[i] > 0: - edge_attrs[i]["color"] = positive_color - elif flow[i] < 0: - edge_attrs[i]["color"] = negative_color - else: - edge_attrs[i]["color"] = "black" - return edge_attrs - - -def get_interactions(G): - """Get the sign of interactions from the graph G. I in [1, -1]""" - return np.array(G.get_attr_from_edges("interaction", 1)) - - -def get_AND_gate_nodes(G): - """Get the indices of nodes that represent AND gates in the graph G. - - Parameters: - - G (Graph): The input graph. - - Returns: - - np.array: An array containing the indices of nodes that represent AND gates. - """ - # find AND gates with regular expression: AND[0+9]+ - pattern = re.compile(r"^(AND|And|and)[0-9]+$") - V_is_and = [bool(pattern.match(v)) for v in G.V] - - return np.array(V_is_and) - - -def get_incidence_matrices_of_edges(G, as_dataframe=False): - """Get the mapping matrices A, At, Ah from the graph G. - - Parameters: - - G: The graph object. - - as_dataframe: Whether to return the matrices as pandas DataFrames. Default is False. - - Returns: - - At: The tail-incidence matrix. - - Ah: The head-incidence matrix. - """ - A = G.vertex_incidence_matrix().astype(int) # V x E - At = np.clip(A, 0, 1) # V x E, 1 if vertex appears as tail of edge - Ah = np.clip(-A, 0, 1) # V x E, 1 if vertex appears as head of edge - - if as_dataframe: - import pandas as pd - - Ah = pd.DataFrame(Ah, index=G.V, columns=G.E) - At = pd.DataFrame(At, index=G.V, columns=G.E) - - return At, Ah - - -def get_egdes_with_head(G): - """Get the indices of edges with a head node. - - Parameters: - G (graph): The input graph. - - Returns: - edges_with_head (array): An array containing the indices of edges with a head node. - """ - _At, Ah = get_incidence_matrices_of_edges(G) - edges_with_head = np.flatnonzero(np.sum(np.abs(Ah), axis=0) > 0) - return edges_with_head - - -def get_inhibited_nodes(G, exp_list): - """Returns an array, with shape = (len(G.V), len(exp_list)), where each column is a boolean array - indicating if the node is inhibited in the corresponding experiment. - """ - V_is_inhibited = np.full((len(G.V), len(exp_list)), False) - - for exp, iexp in zip(exp_list, range(len(exp_list))): - if "inhibition" not in exp_list[exp]: - continue - i_nodes = list(exp_list[exp]["inhibition"].keys()) - V_is_inhibited[:, iexp] = np.array([v in i_nodes for v in G.V]) - return V_is_inhibited - - -def presolve_report(G, exp_list): - At, Ah = get_incidence_matrices_of_edges(G, as_dataframe=True) - interaction = get_interactions(G) - edges_with_head = get_egdes_with_head(G) - V_is_and = get_AND_gate_nodes(G) - - print("Vertex order:") - print(G.V) - print("AND gates:") - print(V_is_and) - print("Tails of interactions:") - print(At) - print("Head of interactions:") - print(Ah) - print("Sign of interactions:") - print(interaction) - print("Edges with head:") - print(edges_with_head) - - -def expand_graph_for_flows(G, exp_list): - """Expand the graph G with the perturbations and measurements from the experiments in exp_list.""" - G1 = G.copy() - output_names = list({key for exp in exp_list.values() for key in exp["output"].keys()}) - input_names = list({key for exp in exp_list.values() for key in exp["input"].keys()}) - - output_names = list(set(output_names)) - input_names = list(set(input_names)) - - for node in output_names: - G1.add_edge(node, ()) - for node in input_names: - G1.add_edge((), node) - - return G1 - - -def check_exp_graph_consistency(G, exp_list): - """Check if the experiments are consistent with the graph G.""" - for exp in exp_list: - for node in exp_list[exp]["input"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - for node in exp_list[exp]["output"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - if "inhibition" in exp_list[exp]: - for node in exp_list[exp]["inhibition"]: - if node not in G.V: - raise ValueError(f"Node {node} in experiment {exp} is not in the graph.") - - -def cellnoptILP(G, exp_list, solver=None, alpha_flow=1e-3, verbose=False, backend=None): - """Create and solves the ILP model for the given graph G and the list of experiments exp_list. - - Parameters: - - G: The graph representing the network. - - exp_list: The list of experiments. - - solver: The solver to use for solving the ILP problem. Default is None. - - alpha_flow: The weight of the penalty of flow in the objective. Default is 1e-3. - - verbose: Whether to print verbose output. Default is False. - - Returns: - - P: The ILP model. - """ - if backend is None: - backend = cn.DEFAULT_BACKEND - check_exp_graph_consistency(G, exp_list) - - At, Ah = get_incidence_matrices_of_edges(G) - interaction = get_interactions(G) - edges_with_head = get_egdes_with_head(G) - edges_with_head = np.flatnonzero(np.sum(np.abs(Ah), axis=0) > 0) - V_is_and = get_AND_gate_nodes(G) - and_idx = np.flatnonzero(V_is_and) - V_is_inhibited = get_inhibited_nodes(G, exp_list) - - # let's start with acyclic flow - P = backend.AcyclicFlow(G) - - # vertex value is binary (0 and 1) - V = backend.Variable("vertex_value", (G.num_vertices, len(exp_list)), vartype=cn.VarType.BINARY) - # edge activation is also binary: - Eact = backend.Variable("edge_activates", (G.num_edges, len(exp_list)), vartype=cn.VarType.BINARY) - - M = 100 # a large number, so sum(incoming edges)/M is always less than 1 - - # Dummy variable for the linearization of the absolute deviation objective function - Z = backend.Variable("dummy", (G.num_vertices, len(exp_list)), vartype=cn.VarType.CONTINUOUS) - P += Z >= 0 - - # some basic constraints - P += V >= 0 - P += V <= 1 - - # Rule 1: Edge can be activated only if they carry flow - for exp, iexp in zip(exp_list, range(len(exp_list))): - P += Eact[:, iexp] <= P.expr.with_flow - - # Rule 2: Edges take the upstream value for a positive sign and its - # complement for a negative sign. - for exp, iexp in zip(exp_list, range(len(exp_list))): - # this should keep Eact in [0,1] interval: - - # signed value of source/head node for an edge: - V_head = (Ah.T @ V)[edges_with_head, iexp].multiply((interaction[edges_with_head] > 0).astype(int)) + ( - 1 - (Ah.T @ V)[edges_with_head, iexp] - ).multiply((interaction[edges_with_head] < 0).astype(int)) - # an edge is active if there is flow AND there head node is also active - # logical AND is translated to ILP as: - # y >= x1 + x2 - 1 ; y <= x1 ; y <= x2 - P += Eact[edges_with_head, iexp] >= P.expr.with_flow[edges_with_head] + V_head - 1 - P += Eact[edges_with_head, iexp] <= V_head - # The with-flow upper bound is already enforced by Rule 1. - - # Rule 3: propagate the active edges to the vertices - - # This is for general nodes that are not AND gates - # - for exp, iexp in zip(exp_list, range(len(exp_list))): - is_regular_node = np.logical_and(~V_is_and, ~V_is_inhibited[:, iexp]) - is_regular_node = np.flatnonzero(is_regular_node) - - P += ( - V[is_regular_node, iexp] >= ((At @ Eact) / M)[is_regular_node, iexp] - ) # when there is at least one active edge, the vertex becomes 1 (larger than someValue/M) - P += ( - V[is_regular_node, iexp] <= (At @ Eact)[is_regular_node, iexp] - ) # but it has an upper constraint, so it takes 0 when all input are 0 - if V_is_inhibited[:, iexp].any(): - inh_idx = np.flatnonzero(V_is_inhibited[:, iexp]) - P += V[inh_idx, iexp] == np.zeros(inh_idx.size) - - # AND relation expressed as follows: - # - we only define these constraints for the AND gates - # - we count the sum of flows (selected edges) and sum of activated edges - # - if flow equals incoming-edge activation, all edges are activated and so - # is the vertex; - # - a second constraint prevents activation when no flow is present. - if V_is_and.any(): - # and_idx = np.flatnonzero(V_is_and) - sum_of_flow = At[and_idx, :] @ P.expr.with_flow - sum_of_edge_activation = At[and_idx, :] @ Eact - - # (sum_of_flow - sum_of_edge_activation)/M is always less than 1 and it is 0 if all edges are activated. - for exp, iexp in zip(exp_list, range(len(exp_list))): - P += V[and_idx, iexp] <= 1 - (sum_of_flow - sum_of_edge_activation[:, iexp]) / M - P += V[and_idx, iexp] <= sum_of_flow - - P.register("sum_of_flow", sum_of_flow) - P.register("sum_of_edge_activation", sum_of_edge_activation) - - for exp, iexp in zip(exp_list, range(len(exp_list))): - # activation: - p_nodes = list(exp_list[exp]["input"].keys()) - p_values = list(exp_list[exp]["input"].values()) - p_nodes_positions = np.array([G.V.index(key) for key in p_nodes]) - - P += V[p_nodes_positions, iexp] == p_values - - # measurements: - m_nodes = list(exp_list[exp]["output"].keys()) - m_values = np.array(list(exp_list[exp]["output"].values())) - m_nodes_positions = np.array([G.V.index(key) for key in m_nodes]) - - # linearization of the ABS function: https://lpsolve.sourceforge.net/5.1/absolute.htm - P += V[m_nodes_positions, iexp] - m_values <= Z[m_nodes_positions, iexp] - P += -(V[m_nodes_positions, iexp] - m_values) <= Z[m_nodes_positions, iexp] - - P.add_objectives(sum(Z[m_nodes_positions, iexp])) - - P.add_objectives(alpha_flow * sum(P.expr.with_flow)) - - P.solve(solver=solver, verbosity=verbose) - - return P - - -def report_solution_tables(G, exp_list, P): - import pandas as pd - - for iexp in range(len(exp_list)): - print("--------- iexp: ", iexp, " ---------") - print(pd.DataFrame({"V": G.V, "value": P.expr.vertex_value.value[:, iexp]})) - print( - pd.DataFrame( - { - "E": G.E, - "flow": P.expr.with_flow.value, - "Eact": P.expr.edge_activates.value[:, iexp], - } - ) - ) - - -def plot_solution_network_active_edges(G, P, iexp): - G.plot(custom_edge_attr=cno_style(P, flow_name="edge_activates", scale=None, iexp=iexp)) - - -def plot_fitness(G, exp_list, P, measured_only=False, **kwargs): - """Plot the fitness of the model simulation vs measurements. - - PARAMETERS: - - G: corneto.Graph object - - exp_list: dictionary of experiments - - P: solution of the ILP model - - measured_only: if True, plot only the measured nodes, otherwise plot all nodes - - **kwargs arguments are passed to subplots and figures of matplotlib - - TODO: there are some assumptions, like the first experiment is the reference experiment and it is called 'exp0' - """ - import matplotlib.pyplot as plt - - N_exps = len(exp_list) - - # Ensure that all experiments have the input and output variables - for exp in exp_list.values(): - if "input" not in exp: - raise ValueError("Input not found in experiment") - if "output" not in exp: - raise ValueError("Output not found in experiment") - - # Collect the input and output variables - input_matrix, input_vars = collect_field_into_matrix(exp_list, "input") - _output_matrix, _output_vars = collect_field_into_matrix(exp_list, "output") - - # Check if inhibition is present in any of the experiments - inhibition_present = any("inhibition" in exp for exp in exp_list.values()) - if inhibition_present: - inhibition_matrix, inhibition_vars = collect_field_into_matrix(exp_list, "inhibition") - perturbation_matrix = np.hstack((input_matrix, inhibition_matrix)) - perturbation_vars = input_vars + inhibition_vars - else: - perturbation_matrix = input_matrix - perturbation_vars = input_vars - - # Create the figure - # Set colors: input colors are blue, inhibition colors are red - perturbation_colors = ["blue"] * len(input_vars) - if inhibition_present: - perturbation_colors += ["red"] * len(inhibition_vars) - - N_nodes = len(G.V) - output_names = list({key for exp in exp_list.values() for key in exp["output"].keys()}) - - # depending on the flag measured_only, we can plot only the measured nodes or all nodes - if measured_only: - fig, axs = plt.subplots(N_exps - 1, len(output_names) + 1, squeeze=False, **kwargs) - else: - fig, axs = plt.subplots(N_exps - 1, N_nodes + 1, squeeze=False, **kwargs) - - fig.tight_layout(pad=0.0) - - # Adjust the space between subplots - plt.subplots_adjust(wspace=0.1, hspace=0.1) - - for exp, iexp in zip(exp_list, range(N_exps)): - if iexp == 0: - continue - - if measured_only: - for imarker in range(len(output_names)): - # output_names[imarker] is the name of the output node, find the position in the graph - imarker_inG = G.V.index(output_names[imarker]) - - axs[iexp - 1, imarker].plot( - [0, 10], - [ - P.expr.vertex_value.value[imarker_inG, 0], - min(P.expr.vertex_value.value[imarker_inG, iexp], 1), - ], - "bo-", - label=G.V[imarker_inG], - ) - - if G.V[imarker_inG] in exp_list[exp]["output"].keys(): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - exp_list["exp0"]["output"][G.V[imarker_inG]], - exp_list[exp]["output"][G.V[imarker_inG]], - ], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.05, 1.1]) - if iexp == 1: - axs[iexp - 1, imarker].set_title(output_names[imarker]) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) - else: - for imarker in range(N_nodes): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - P.expr.vertex_value.value[imarker, 0], - min(P.expr.vertex_value.value[imarker, iexp], 1), - ], - "bo-", - label=G.V[imarker], - # color="blue", - # linestyle="o-", - ) - - if G.V[imarker] in exp_list[exp]["output"].keys(): - axs[iexp - 1, imarker].plot( - [0, 10], - [ - exp_list["exp0"]["output"][G.V[imarker]], - exp_list[exp]["output"][G.V[imarker]], - ], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.05, 1.1]) - if iexp == 1: - axs[iexp - 1, imarker].set_title(G.V[imarker]) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) - # Plot perturbation - if measured_only: - plot_location = len(output_names) - else: - plot_location = N_nodes - - axs[iexp - 1, plot_location].bar( - range(len(perturbation_vars)), - perturbation_matrix[iexp], - color=perturbation_colors, - ) - if iexp == N_exps - 1: - axs[iexp - 1, plot_location].set_xticks(range(len(perturbation_vars))) - axs[iexp - 1, plot_location].set_xticklabels(perturbation_vars, rotation=45) - else: - # No xtick label - axs[iexp - 1, plot_location].set_xticks([]) - - axs[iexp - 1, plot_location].set_ylim([-0.01, 1.1]) - axs[iexp - 1, plot_location].set_yticks([]) - if iexp == 1: - axs[iexp - 1, plot_location].set_title("Pert.") - - plt.show() - - -def collect_field_into_matrix(experiments, field_name="input"): - """Collects the field_name values into matrix. - - Collects the field_name values (input, inhibition etc) from a dictionary - of experiments and returns them as a numpy array. - - PARAMETERS: - - experiments: dictionary of experiments containing input values - - field_name: name of the field to collect (default: 'input') - - Returns: - - input_matrix: numpy array of input values - - input_vars: list of unique input variable names - - """ - # Collect all unique input names - input_vars = set() - for exp in experiments.values(): - # ensure field_name exists - if field_name not in exp: - raise ValueError("Field name (" + field_name + ") not found in experiment") - input_vars.update(exp[field_name].keys()) - - input_vars = sorted(input_vars) # Sorting to keep a consistent order - data = [] - - # Collect input values for each experiment - for exp in experiments.values(): - row = [exp[field_name].get(var, 0) for var in input_vars] - data.append(row) - - # Convert the data to a numpy array - input_matrix = np.array(data) - - return input_matrix, input_vars - - -def plot_data(exp_list): - """Plot the data. - - PARAMETERS: - - exp_list: dictionary of experiments - - """ - import matplotlib.pyplot as plt - - N_exps = len(exp_list) - - # Ensure that all experiments have the input and output variables - for exp in exp_list.values(): - if "input" not in exp: - raise ValueError("Input not found in experiment") - if "output" not in exp: - raise ValueError("Output not found in experiment") - - # Collect the input and output variables - input_matrix, input_vars = collect_field_into_matrix(exp_list, "input") - output_matrix, output_vars = collect_field_into_matrix(exp_list, "output") - - # Check if inhibition is present in any of the experiments - inhibition_present = any("inhibition" in exp for exp in exp_list.values()) - if inhibition_present: - inhibition_matrix, inhibition_vars = collect_field_into_matrix(exp_list, "inhibition") - perturbation_matrix = np.hstack((input_matrix, inhibition_matrix)) - perturbation_vars = input_vars + inhibition_vars - else: - perturbation_matrix = input_matrix - perturbation_vars = input_vars - - # Create the figure - # Set colors: input colors are blue, inhibition colors are red - perturbation_colors = ["blue"] * len(input_vars) - if inhibition_present: - perturbation_colors += ["red"] * len(inhibition_vars) - - fig, axs = plt.subplots(N_exps - 1, len(output_vars) + 1, squeeze=False) - - fig.tight_layout(pad=0.0) - # Adjust the space between subplots - plt.subplots_adjust(wspace=0.1, hspace=0.1) - - for exp, iexp in zip(exp_list, range(N_exps)): - if iexp == 0: - continue - - for imarker in range(len(output_vars)): - # output_names[imarker] is the name of the output node, find the position in the graph - imarker_name = output_vars[imarker] - - axs[iexp - 1, imarker].plot( - [0, 10], - [output_matrix[0, imarker], output_matrix[iexp, imarker]], - "ro-", - ) - axs[iexp - 1, imarker].set_ylim([-0.01, 1.1]) - - if iexp == 1: - axs[iexp - 1, imarker].set_title(imarker_name) - if iexp != N_exps - 1: - axs[iexp - 1, imarker].set_xticks([]) - if imarker == 0: - axs[iexp - 1, imarker].set_ylabel(f"Exp. {iexp}") - else: - axs[iexp - 1, imarker].set_yticks([]) - - # Plot perturbation - axs[iexp - 1, len(output_vars)].bar( - range(len(perturbation_vars)), - perturbation_matrix[iexp], - color=perturbation_colors, - ) - if iexp == N_exps - 1: - axs[iexp - 1, len(output_vars)].set_xticks(range(len(perturbation_vars))) - axs[iexp - 1, len(output_vars)].set_xticklabels(perturbation_vars, rotation=45) - else: - # No xtick label - axs[iexp - 1, len(output_vars)].set_xticks([]) - - axs[iexp - 1, len(output_vars)].set_ylim([-0.01, 1.1]) - axs[iexp - 1, len(output_vars)].set_yticks([]) - if iexp == 1: - axs[iexp - 1, len(output_vars)].set_title("Pert.") - plt.show() diff --git a/corneto/methods/signaling/cellnopt_plotting.py b/corneto/methods/signaling/cellnopt_plotting.py new file mode 100644 index 000000000..ca2df369e --- /dev/null +++ b/corneto/methods/signaling/cellnopt_plotting.py @@ -0,0 +1,880 @@ +"""Visualization utilities for :class:`~corneto.methods.signaling.CellNOptDAG`.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Any, Literal, Optional, Sequence, Union + +import numpy as np + +from corneto._plotting import _scaled_magnitudes +from corneto.graph import Graph +from corneto.methods.signaling.cellnopt_dag import CellNOptDAG + +__all__ = ["plot_cellnopt_fit", "plot_cellnopt_model"] + +_STIMULUS_COLOR = "#9ACD32" +_MEASUREMENT_COLOR = "#ADD8E6" +_INHIBITOR_COLOR = "#FF6846" +_POSITIVE_COLOR = "#222222" +_NEGATIVE_COLOR = "#C43C39" +_INACTIVE_POSITIVE_COLOR = "#A8A8A8" +_INACTIVE_NEGATIVE_COLOR = "#E3A19F" +_UNSELECTED_POSITIVE_COLOR = "#D5D5D5" +_UNSELECTED_NEGATIVE_COLOR = "#F0CECD" + + +@dataclass(frozen=True) +class _CellNOptPlotData: + conditions: tuple[str, ...] + vertices: tuple[Any, ...] + selected: np.ndarray + active: np.ndarray + states: np.ndarray + flow_by_reaction: tuple[np.ndarray, ...] + measurement_mask: np.ndarray + measurements: np.ndarray + input_mask: np.ndarray + input_values: np.ndarray + inhibitor_mask: np.ndarray + + +@dataclass(frozen=True) +class _FitSeries: + """Observed and predicted responses on an explicit time axis. + + CellNOptDAG currently infers one steady-state endpoint per condition, so + extraction produces a singleton axis labelled ``Endpoint``. Keeping time + as a real array dimension lets a future time-resolved formulation reuse + the renderer without assigning scientific meaning to series identity. + """ + + times: np.ndarray + time_labels: tuple[str, ...] + observed: np.ndarray + measured: np.ndarray + predicted: np.ndarray + + +@dataclass(frozen=True) +class _ModelPlotSpec: + graph: Graph + vertex_attributes: dict[Any, dict[str, str]] + edge_attributes: dict[int, dict[str, str]] + graph_attributes: dict[str, str] + node_attributes: dict[str, str] + + +def _expression_values(problem: Any, name: str, shape: tuple[int, ...]) -> np.ndarray: + if problem is None: + raise ValueError("CellNOptDAG has not been built. Build and solve the method before plotting.") + try: + expression = problem.expr[name] + except (KeyError, TypeError, AttributeError): + try: + expression = getattr(problem.expr, name) + except AttributeError as exc: + raise ValueError(f"CellNOpt solution does not contain expression {name!r}.") from exc + value = getattr(expression, "value", None) + if value is None: + raise ValueError(f"CellNOpt expression {name!r} has no value. Solve a feasible problem before plotting.") + array = np.asarray(value, dtype=float) + try: + array = array.reshape(shape) + except ValueError as exc: + raise ValueError(f"CellNOpt expression {name!r} has shape {array.shape}; expected {shape}.") from exc + if not np.all(np.isfinite(array)): + raise ValueError(f"CellNOpt expression {name!r} contains non-finite values.") + return array + + +def _validate_binary_values(values: np.ndarray, name: str, tolerance: float = 1e-5) -> np.ndarray: + if np.any(values < -tolerance) or np.any(values > 1 + tolerance): + raise ValueError(f"CellNOpt expression {name!r} contains values outside the binary domain.") + return values >= 0.5 + + +def _extract_plot_data(method: CellNOptDAG, problem: Any = None) -> _CellNOptPlotData: + if not isinstance(method, CellNOptDAG): + raise TypeError("method must be a CellNOptDAG instance.") + if problem is None: + problem = method.problem + conditions = tuple(method._condition_names) + vertices = tuple(method.processed_graph.V) if method.processed_graph is not None else () + if not conditions or not vertices or not method.reactions: + raise ValueError("CellNOptDAG has not been built. Build and solve the method before plotting.") + + num_reactions = len(method.reactions) + num_conditions = len(conditions) + num_vertices = len(vertices) + selected_values = _expression_values(problem, "reaction_selected", (num_reactions,)) + active_values = _expression_values(problem, "reaction_active", (num_reactions, num_conditions)) + state_values = _expression_values(problem, "vertex_value", (num_vertices, num_conditions)) + flow_values = _expression_values(problem, "flow", tuple(problem.expr.flow.shape)).reshape(-1) + if flow_values.size < method._biological_num_edges: + raise ValueError("CellNOpt flow vector is shorter than the compiled biological dependency graph.") + + selected = _validate_binary_values(selected_values, "reaction_selected") + active = _validate_binary_values(active_values, "reaction_active") + states = _validate_binary_values(state_values, "vertex_value") + + dependency_flow = flow_values[: method._biological_num_edges] + flow_by_reaction = [] + cursor = 0 + for reaction in method.reactions: + next_cursor = cursor + len(reaction.literals) + flow_by_reaction.append(dependency_flow[cursor:next_cursor].copy()) + cursor = next_cursor + if cursor != method._biological_num_edges: + raise ValueError("Compiled reactions do not align with CellNOpt dependency-flow variables.") + + input_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + input_values = np.zeros((num_vertices, num_conditions), dtype=float) + inhibitor_mask = np.zeros((num_vertices, num_conditions), dtype=bool) + vertex_index = {vertex: index for index, vertex in enumerate(vertices)} + for condition_index, condition in enumerate(conditions): + sample = method.processed_data.samples[condition] + for feature in sample.features: + index = vertex_index[feature.id] + role = feature.data.get("role") + if role in {"input", "input_output"}: + input_mask[index, condition_index] = True + input_values[index, condition_index] = float(feature.data.get("input_value", feature.value)) + if feature.data.get("intervention") == "inhibitor": + inhibitor_mask[index, condition_index] = True + + return _CellNOptPlotData( + conditions=conditions, + vertices=vertices, + selected=selected, + active=active, + states=states, + flow_by_reaction=tuple(flow_by_reaction), + measurement_mask=np.asarray(method._measurement_mask, dtype=bool), + measurements=np.asarray(method._measurements, dtype=float), + input_mask=input_mask, + input_values=input_values, + inhibitor_mask=inhibitor_mask, + ) + + +def _condition_index( + data: _CellNOptPlotData, + condition: Optional[Union[int, str]], +) -> Optional[int]: + if condition is None: + return None + if isinstance(condition, int): + if condition < 0 or condition >= len(data.conditions): + raise ValueError(f"condition index {condition} out of range for {len(data.conditions)} conditions.") + return condition + if condition not in data.conditions: + raise ValueError(f"Unknown condition {condition!r}; expected one of {list(data.conditions)!r}.") + return data.conditions.index(condition) + + +def _reaction_text(reaction: Any) -> str: + literals = [str(vertex) for vertex in reaction.positive_literals] + literals.extend(f"NOT {vertex}" for vertex in reaction.negative_literals) + return f"{' AND '.join(literals)} -> {reaction.product}" + + +def _node_roles( + data: _CellNOptPlotData, + condition_index: Optional[int], +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + if condition_index is None: + inputs = data.input_mask.any(axis=1) + outputs = data.measurement_mask.any(axis=1) + inhibitors = data.inhibitor_mask.any(axis=1) + else: + inputs = data.input_mask[:, condition_index] + outputs = data.measurement_mask[:, condition_index] + inhibitors = data.inhibitor_mask[:, condition_index] + return inputs, outputs, inhibitors + + +def _merge_attributes( + generated: dict[Any, dict[str, str]], + supplied: Optional[dict[Any, dict[str, str]]], +) -> dict[Any, dict[str, str]]: + merged = {key: dict(value) for key, value in generated.items()} + for key, attrs in (supplied or {}).items(): + merged.setdefault(key, {}).update({str(name): str(value) for name, value in attrs.items()}) + return merged + + +def _build_cellnopt_model_plot( + method: CellNOptDAG, + problem: Any = None, + *, + condition: Optional[Union[int, str]] = None, + show_unselected: bool = False, + show_inactive: bool = True, + width_by: Literal["selection", "flow"] = "selection", +) -> _ModelPlotSpec: + if width_by not in {"selection", "flow"}: + raise ValueError("width_by must be 'selection' or 'flow'.") + data = _extract_plot_data(method, problem) + condition_index = _condition_index(data, condition) + + included_reactions = [] + segment_flows = [] + for reaction_index, reaction in enumerate(method.reactions): + selected = bool(data.selected[reaction_index]) + active = selected if condition_index is None else bool(data.active[reaction_index, condition_index]) + include = selected or show_unselected + if condition_index is not None and selected and not active and not show_inactive: + include = False + if not include: + continue + included_reactions.append((reaction_index, reaction, selected, active)) + flows = data.flow_by_reaction[reaction_index] + segment_flows.extend(flows.tolist()) + if len(reaction.literals) > 1: + segment_flows.append(float(np.sum(flows))) + + flow_scale = ( + _scaled_magnitudes( + np.asarray(segment_flows, dtype=float), + zero_threshold=1e-9, + scale="log", + clip_quantile=0.0, + ) + if width_by == "flow" + else np.empty(0) + ) + flow_scale_cursor = 0 + + graph = Graph() + included_species = set() + for _, reaction, _, _ in included_reactions: + included_species.update(reaction.literals) + included_species.add(reaction.product) + inputs, outputs, inhibitors = _node_roles(data, condition_index) + experimental_species = { + vertex for vertex, is_experimental in zip(data.vertices, inputs | outputs | inhibitors) if is_experimental + } + included_species.update(experimental_species) + for vertex in data.vertices: + if vertex in included_species: + graph.add_vertex(vertex) + + existing_names = {str(vertex) for vertex in data.vertices} + and_nodes = {} + for reaction_index, reaction, _, _ in included_reactions: + if len(reaction.literals) <= 1: + continue + candidate = f"__cellnopt_and_{reaction_index}" + while candidate in existing_names: + candidate = f"_{candidate}" + existing_names.add(candidate) + and_nodes[reaction_index] = candidate + graph.add_vertex(candidate) + + vertex_attributes: dict[Any, dict[str, str]] = {} + vertex_index = {vertex: index for index, vertex in enumerate(data.vertices)} + for vertex in included_species: + index = vertex_index[vertex] + is_input = bool(inputs[index]) + is_output = bool(outputs[index]) + is_inhibitor = bool(inhibitors[index]) + is_stimulus = is_input and not is_inhibitor + if is_inhibitor: + fillcolor = _INHIBITOR_COLOR + role = "inhibitor target" + elif is_stimulus: + fillcolor = _STIMULUS_COLOR + role = "stimulus" + elif is_output: + fillcolor = _MEASUREMENT_COLOR + role = "measurement" + else: + fillcolor = "white" + role = "internal species" + attrs = { + "shape": "box", + "style": "rounded,filled", + "fillcolor": fillcolor, + "color": "#4C4C4C", + "fontcolor": "#111111", + "label": str(vertex), + "tooltip": role, + "margin": "0.08,0.05", + } + if is_stimulus and is_output: + attrs["peripheries"] = "2" + attrs["color"] = "#4C78A8" + attrs["tooltip"] = "stimulus and measurement" + elif is_inhibitor and is_output: + attrs["peripheries"] = "2" + attrs["color"] = "#4C78A8" + attrs["tooltip"] = "inhibitor target and measurement" + if condition_index is not None: + value = int(data.states[index, condition_index]) + attrs["penwidth"] = "2.5" if value else "1.0" + attrs["tooltip"] += f"; state={value}" + vertex_attributes[str(vertex)] = attrs + for reaction_index, node in and_nodes.items(): + vertex_attributes[node] = { + "shape": "circle", + "style": "filled", + "fillcolor": "white", + "color": "#333333", + "label": "AND", + "width": "0.38", + "height": "0.38", + "fixedsize": "true", + "fontsize": "8", + "tooltip": _reaction_text(method.reactions[reaction_index]), + } + + edge_attributes: dict[int, dict[str, str]] = {} + + def state_attributes( + *, + interaction: int, + selected: bool, + active: bool, + raw_flow: float, + aggregate: bool, + reaction_text: str, + ) -> dict[str, str]: + nonlocal flow_scale_cursor + if not selected: + color = _UNSELECTED_NEGATIVE_COLOR if interaction < 0 else _UNSELECTED_POSITIVE_COLOR + style = "dotted" + width = 0.6 + elif condition_index is not None and not active: + color = _INACTIVE_NEGATIVE_COLOR if interaction < 0 else _INACTIVE_POSITIVE_COLOR + style = "dashed" + width = 1.0 + else: + color = _NEGATIVE_COLOR if interaction < 0 else _POSITIVE_COLOR + style = "solid" + width = 2.8 if condition_index is not None else 2.2 + if width_by == "flow": + magnitude = float(flow_scale[flow_scale_cursor]) + flow_scale_cursor += 1 + if selected: + width = 0.8 + 4.2 * magnitude + tooltip = ( + f"{reaction_text}; selected={int(selected)}" + + ("" if condition_index is None else f"; active={int(active)}") + + f"; {'aggregate ' if aggregate else ''}structural flow={raw_flow:.5g}" + ) + return { + "color": color, + "fontcolor": color, + "style": style, + "penwidth": f"{width:.3g}", + "arrowhead": "tee" if interaction < 0 else "normal", + "tooltip": tooltip, + } + + for reaction_index, reaction, selected, active in included_reactions: + reaction_text = _reaction_text(reaction) + flows = data.flow_by_reaction[reaction_index] + literals = [ + *((vertex, 1) for vertex in reaction.positive_literals), + *((vertex, -1) for vertex in reaction.negative_literals), + ] + if len(literals) == 1: + literal, interaction = literals[0] + edge_index = graph.add_edge( + literal, + reaction.product, + interaction=interaction, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=interaction, + selected=selected, + active=active, + raw_flow=float(flows[0]), + aggregate=False, + reaction_text=reaction_text, + ) + continue + + and_node = and_nodes[reaction_index] + for literal_index, (literal, interaction) in enumerate(literals): + edge_index = graph.add_edge( + literal, + and_node, + interaction=interaction, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=interaction, + selected=selected, + active=active, + raw_flow=float(flows[literal_index]), + aggregate=False, + reaction_text=reaction_text, + ) + aggregate_flow = float(np.sum(flows)) + edge_index = graph.add_edge( + and_node, + reaction.product, + interaction=1, + reaction=reaction_index, + ) + edge_attributes[edge_index] = state_attributes( + interaction=1, + selected=selected, + active=active, + raw_flow=aggregate_flow, + aggregate=True, + reaction_text=reaction_text, + ) + + return _ModelPlotSpec( + graph=graph, + vertex_attributes=vertex_attributes, + edge_attributes=edge_attributes, + graph_attributes={"rankdir": "LR", "pad": "0.2", "nodesep": "0.35", "ranksep": "0.5"}, + node_attributes={"fixedsize": "false", "fontname": "Helvetica", "fontsize": "10"}, + ) + + +def plot_cellnopt_model( + method: CellNOptDAG, + problem: Any = None, + *, + condition: Optional[Union[int, str]] = None, + show_unselected: bool = False, + show_inactive: bool = True, + width_by: Literal["selection", "flow"] = "selection", + renderer: str = "auto", + **plot_kwargs: Any, +) -> Any: + """Plot a solved CellNOpt model using CORNETO's graph renderers. + + ``condition=None`` shows the shared selected structure. Selecting a + condition overlays reaction activity and predicted species states. + Structural flow may optionally control edge widths, but never edge color. + """ + spec = _build_cellnopt_model_plot( + method, + problem, + condition=condition, + show_unselected=show_unselected, + show_inactive=show_inactive, + width_by=width_by, + ) + graph_attributes = dict(spec.graph_attributes) + graph_attributes.update(plot_kwargs.pop("graph_attr", {}) or {}) + node_attributes = dict(spec.node_attributes) + node_attributes.update(plot_kwargs.pop("node_attr", {}) or {}) + edge_attributes = _merge_attributes( + spec.edge_attributes, + plot_kwargs.pop("custom_edge_attr", None), + ) + vertex_attributes = _merge_attributes( + spec.vertex_attributes, + {str(vertex): attrs for vertex, attrs in (plot_kwargs.pop("custom_vertex_attr", None) or {}).items()}, + ) + return spec.graph.plot( + renderer=renderer, + graph_attr=graph_attributes, + node_attr=node_attributes, + custom_edge_attr=edge_attributes, + custom_vertex_attr=vertex_attributes, + **plot_kwargs, + ) + + +def _selected_indices( + values: Optional[Union[Any, Sequence[Any]]], + available: Sequence[Any], + *, + argument: str, +) -> list[int]: + if values is None: + return list(range(len(available))) + if isinstance(values, (str, int)) or values in available: + values = [values] + indices = [] + for value in values: + if isinstance(value, int) and argument == "conditions": + if value < 0 or value >= len(available): + raise ValueError(f"{argument} index {value} out of range.") + indices.append(value) + else: + if value not in available: + raise ValueError(f"Unknown {argument[:-1]} {value!r}; expected one of {list(available)!r}.") + indices.append(available.index(value)) + if not indices: + raise ValueError(f"{argument} must select at least one value.") + return indices + + +def _fit_selection( + data: _CellNOptPlotData, + conditions: Optional[Union[Union[int, str], Sequence[Union[int, str]]]], + signals: Optional[Union[Any, Sequence[Any]]], +) -> tuple[list[int], list[int]]: + condition_indices = _selected_indices(conditions, data.conditions, argument="conditions") + measured_vertices = [ + vertex for vertex, measured in zip(data.vertices, data.measurement_mask.any(axis=1)) if measured + ] + selected_signals = measured_vertices if signals is None else signals + signal_indices = _selected_indices(selected_signals, data.vertices, argument="signals") + return condition_indices, signal_indices + + +def _cue_data( + data: _CellNOptPlotData, + condition_indices: Sequence[int], +) -> tuple[np.ndarray, list[str], list[str]]: + selected_inputs = data.input_mask[:, condition_indices] + selected_inhibitors = data.inhibitor_mask[:, condition_indices] + stimulus_vertices = [ + index for index in range(len(data.vertices)) if np.any(selected_inputs[index] & ~selected_inhibitors[index]) + ] + inhibitor_vertices = [index for index in range(len(data.vertices)) if np.any(selected_inhibitors[index])] + labels = [str(data.vertices[index]) for index in stimulus_vertices] + labels.extend(f"{data.vertices[index]} (inh)" for index in inhibitor_vertices) + kinds = ["stimulus"] * len(stimulus_vertices) + ["inhibitor"] * len(inhibitor_vertices) + cues = np.zeros((len(condition_indices), len(labels)), dtype=float) + for row, condition_index in enumerate(condition_indices): + for column, vertex_index in enumerate(stimulus_vertices): + if not data.inhibitor_mask[vertex_index, condition_index]: + cues[row, column] = data.input_values[vertex_index, condition_index] + offset = len(stimulus_vertices) + for column, vertex_index in enumerate(inhibitor_vertices): + cues[row, offset + column] = float(data.inhibitor_mask[vertex_index, condition_index]) + return cues, labels, kinds + + +def _import_matplotlib(): + try: + import matplotlib.colors as colors + import matplotlib.pyplot as plt + from matplotlib.lines import Line2D + except ImportError as exc: + raise ImportError( + "CellNOpt fit plots require Matplotlib. Install CORNETO with `pip install 'corneto[plot]'`." + ) from exc + return plt, colors, Line2D + + +def _endpoint_fit_series( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], +) -> _FitSeries: + """Return current steady-state results with an explicit endpoint axis.""" + observed = data.measurements[np.ix_(signal_indices, condition_indices)].T + measured = data.measurement_mask[np.ix_(signal_indices, condition_indices)].T + predicted = data.states[np.ix_(signal_indices, condition_indices)].T.astype(float) + return _FitSeries( + times=np.array([0.0]), + time_labels=("Endpoint",), + observed=observed[..., np.newaxis], + measured=measured[..., np.newaxis], + predicted=predicted[..., np.newaxis], + ) + + +def _plot_fit_grid( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], + *, + figsize: Optional[tuple[float, float]], +): + plt, colors, Line2D = _import_matplotlib() + num_conditions = len(condition_indices) + num_signals = len(signal_indices) + cues, cue_labels, cue_kinds = _cue_data(data, condition_indices) + series = _endpoint_fit_series(data, condition_indices, signal_indices) + if figsize is None: + condition_label_width = min( + 4.0, + 0.09 * max(len(data.conditions[index]) for index in condition_indices), + ) + figsize = ( + max( + 6.0, + 2.15 * num_signals + max(2.6, 0.65 * len(cue_labels)) + condition_label_width, + ), + max(3.2, 1.65 * num_conditions + 0.45), + ) + width_ratios = [1.0] * num_signals + [max(1.2, 0.35 * max(len(cue_labels), 1))] + figure = plt.figure(figsize=figsize, constrained_layout=True) + layout = figure.add_gridspec(2, 1, height_ratios=[0.12, 1]) + legend_axis = figure.add_subplot(layout[0]) + legend_axis.axis("off") + panel_layout = layout[1].subgridspec( + num_conditions, + num_signals + 1, + width_ratios=width_ratios, + ) + axes = np.empty((num_conditions, num_signals + 1), dtype=object) + for row in range(num_conditions): + for column in range(num_signals + 1): + axes[row, column] = figure.add_subplot(panel_layout[row, column]) + error_cmap = colors.LinearSegmentedColormap.from_list( + "cellnopt_absolute_error", + ["#E7F5E7", "#FFF0B3", "#F4B7B2"], + ) + error_norm = colors.Normalize(vmin=0, vmax=1) + + for row, condition_index in enumerate(condition_indices): + for column, signal_index in enumerate(signal_indices): + axis = axes[row, column] + predicted = series.predicted[row, column] + observed = series.observed[row, column] + measured = series.measured[row, column] + if np.any(measured): + error = float(np.mean(np.abs(observed[measured] - predicted[measured]))) + axis.set_facecolor(error_cmap(error_norm(error))) + for time, observed_value, predicted_value, is_measured in zip( + series.times, + observed, + predicted, + measured, + ): + if is_measured: + axis.plot( + [time, time], + [observed_value, predicted_value], + color="#777777", + linewidth=1.0, + label="_nolegend_", + zorder=1, + ) + else: + axis.set_facecolor("#F2F2F2") + axis.patch.set_hatch("//") + axis.patch.set_edgecolor("#C8C8C8") + + prediction_line = "-" if len(series.times) > 1 else "none" + axis.plot( + series.times, + predicted, + color="#2C7FB8", + marker="s", + markersize=5, + linewidth=1.5, + linestyle=prediction_line, + label="Model", + zorder=2, + ) + if np.any(measured): + observed_values = np.ma.array(observed, mask=~measured) + observation_line = "-" if np.count_nonzero(measured) > 1 else "none" + axis.plot( + series.times, + observed_values, + color=_NEGATIVE_COLOR, + marker="o", + markerfacecolor="none", + markeredgewidth=1.5, + markersize=7, + linewidth=1.2, + linestyle=observation_line, + label="Observed", + zorder=3, + ) + + if len(series.times) == 1: + axis.set_xlim(series.times[0] - 0.5, series.times[0] + 0.5) + else: + span = float(series.times[-1] - series.times[0]) + margin = max(0.03 * span, 1e-6) + axis.set_xlim(series.times[0] - margin, series.times[-1] + margin) + axis.set_ylim(-0.05, 1.05) + axis.set_yticks([0, 0.5, 1]) + if row == 0: + axis.set_title(str(data.vertices[signal_index]), fontsize=10) + if row == num_conditions - 1: + axis.set_xticks(series.times, series.time_labels) + else: + axis.set_xticks([]) + if column == 0: + axis.set_ylabel( + data.conditions[condition_index], + rotation=0, + ha="right", + va="center", + labelpad=10, + ) + else: + axis.set_yticklabels([]) + axis.grid(axis="y", color="#DDDDDD", linewidth=0.5) + + cue_axis = axes[row, -1] + if cue_labels: + colors = [_STIMULUS_COLOR if kind == "stimulus" else _INHIBITOR_COLOR for kind in cue_kinds] + cue_axis.bar( + np.arange(len(cue_labels)), + cues[row], + color=colors, + edgecolor="#555555", + linewidth=0.5, + ) + cue_axis.set_xlim(-0.6, len(cue_labels) - 0.4) + cue_axis.set_ylim(0, 1.05) + cue_axis.set_yticks([]) + if row == 0: + cue_axis.set_title("Cues", fontsize=10) + if row == num_conditions - 1: + cue_axis.set_xticks( + np.arange(len(cue_labels)), + cue_labels, + rotation=45, + ha="right", + ) + else: + cue_axis.set_xticks([]) + + legend_axis.legend( + handles=[ + Line2D( + [], + [], + color=_NEGATIVE_COLOR, + marker="o", + markerfacecolor="none", + linestyle="none", + label="Observed", + ), + Line2D([], [], color="#2C7FB8", marker="s", linestyle="none", label="Model"), + ], + loc="center", + ncols=2, + frameon=False, + ) + error_scale = plt.cm.ScalarMappable(norm=error_norm, cmap=error_cmap) + error_scale.set_array([]) + colorbar = figure.colorbar( + error_scale, + ax=axes.ravel().tolist(), + fraction=0.018, + pad=0.02, + ) + colorbar.set_label("Mean absolute error") + return figure, axes + + +def _annotate_heatmap(axis: Any, values: np.ndarray, mask: Optional[np.ndarray] = None) -> None: + if values.size > 100: + return + for row in range(values.shape[0]): + for column in range(values.shape[1]): + if mask is not None and mask[row, column]: + continue + axis.text( + column, + row, + f"{values[row, column]:.2g}", + ha="center", + va="center", + fontsize=8, + ) + + +def _plot_fit_heatmaps( + data: _CellNOptPlotData, + condition_indices: Sequence[int], + signal_indices: Sequence[int], + *, + figsize: Optional[tuple[float, float]], +): + plt, colors, _ = _import_matplotlib() + observed = data.measurements[np.ix_(signal_indices, condition_indices)].T + measured = data.measurement_mask[np.ix_(signal_indices, condition_indices)].T + predicted = data.states[np.ix_(signal_indices, condition_indices)].T.astype(float) + error = np.abs(observed - predicted) + cues, cue_labels, cue_kinds = _cue_data(data, condition_indices) + condition_labels = [data.conditions[index] for index in condition_indices] + signal_labels = [str(data.vertices[index]) for index in signal_indices] + + if figsize is None: + figsize = ( + max(9.5, 1.0 * len(signal_labels) + 0.55 * len(cue_labels)), + max(3.0, 0.52 * len(condition_labels) + 1.8), + ) + figure, axes = plt.subplots( + 1, + 4, + figsize=figsize, + squeeze=False, + constrained_layout=True, + gridspec_kw={"width_ratios": [1, 1, 1, max(0.7, len(cue_labels) / max(len(signal_labels), 1))]}, + ) + axes = axes[0] + + value_cmap = plt.get_cmap("viridis").copy() + value_cmap.set_bad("#E8E8E8") + error_cmap = plt.get_cmap("RdYlGn_r").copy() + error_cmap.set_bad("#E8E8E8") + observed_masked = np.ma.array(observed, mask=~measured) + error_masked = np.ma.array(error, mask=~measured) + matrices = [observed_masked, predicted, error_masked] + titles = ["Observed", "Model", "Absolute error"] + cmaps = [value_cmap, value_cmap, error_cmap] + for axis, matrix, title, cmap in zip(axes[:3], matrices, titles, cmaps): + image = axis.imshow(matrix, aspect="auto", vmin=0, vmax=1, cmap=cmap) + axis.set_title(title) + axis.set_xticks(np.arange(len(signal_labels)), signal_labels, rotation=45, ha="right") + axis.set_yticks(np.arange(len(condition_labels)), condition_labels) + _annotate_heatmap( + axis, + np.asarray(matrix.filled(0) if np.ma.isMaskedArray(matrix) else matrix), + np.ma.getmaskarray(matrix) if np.ma.isMaskedArray(matrix) else None, + ) + figure.colorbar(image, ax=axis, fraction=0.046, pad=0.03) + + cue_axis = axes[3] + if cue_labels: + cue_codes = np.zeros_like(cues) + for column, kind in enumerate(cue_kinds): + cue_codes[:, column] = cues[:, column] * (1 if kind == "stimulus" else 2) + cue_cmap = colors.ListedColormap(["#FFFFFF", _STIMULUS_COLOR, _INHIBITOR_COLOR]) + cue_axis.imshow(cue_codes, aspect="auto", vmin=0, vmax=2, cmap=cue_cmap) + else: + cue_axis.imshow(np.zeros((len(condition_labels), 1)), aspect="auto", vmin=0, vmax=1, cmap="Greys") + cue_labels = ["None"] + cue_axis.set_title("Cues") + cue_axis.set_xticks(np.arange(len(cue_labels)), cue_labels, rotation=45, ha="right") + cue_axis.set_yticks(np.arange(len(condition_labels)), condition_labels) + return figure, axes + + +def plot_cellnopt_fit( + method: CellNOptDAG, + problem: Any = None, + *, + view: Literal["cellnopt", "heatmap"] = "cellnopt", + conditions: Optional[Union[Union[int, str], Sequence[Union[int, str]]]] = None, + signals: Optional[Union[Any, Sequence[Any]]] = None, + figsize: Optional[tuple[float, float]] = None, +): + """Compare CellNOpt measurements and predictions across conditions. + + The ``cellnopt`` view overlays observations and model predictions at the + inferred endpoint for every selected condition and signal. Unmeasured + signals show model predictions only. ``heatmap`` provides aligned matrices + for larger datasets. + """ + data = _extract_plot_data(method, problem) + condition_indices, signal_indices = _fit_selection(data, conditions, signals) + if view == "cellnopt": + return _plot_fit_grid( + data, + condition_indices, + signal_indices, + figsize=figsize, + ) + if view == "heatmap": + return _plot_fit_heatmaps( + data, + condition_indices, + signal_indices, + figsize=figsize, + ) + raise ValueError("view must be 'cellnopt' or 'heatmap'.") diff --git a/corneto/release.py b/corneto/release.py index 420f6a8dc..71736591b 100644 --- a/corneto/release.py +++ b/corneto/release.py @@ -6,6 +6,7 @@ import re import subprocess import sys +from pathlib import Path from typing import Sequence VERSION_RE = re.compile(r"^v\d+\.\d+\.\d+(?:-(?:alpha|beta|rc)\.\d+)?$") @@ -55,25 +56,11 @@ def _ensure_remote_exists(remote: str) -> None: def _ensure_up_to_date_with_remote_main(remote: str) -> None: - _run(["git", "fetch", remote, "main", "dev"], check=True) + _run(["git", "fetch", remote, "main"], check=True) head = _run(["git", "rev-parse", "HEAD"], check=True) remote_main = _run(["git", "rev-parse", f"{remote}/main"], check=True) if head != remote_main: - raise ReleaseError(f"HEAD is not at {remote}/main. Pull main after merging dev -> main.") - - -def _ensure_dev_is_merged(remote: str) -> None: - # `merge-base --is-ancestor A B` succeeds when A is reachable from B. - result = subprocess.run( - ["git", "merge-base", "--is-ancestor", f"{remote}/dev", "HEAD"], - text=True, - capture_output=True, - check=False, - ) - if result.returncode != 0: - raise ReleaseError( - f"{remote}/dev is not merged into current main commit yet. Merge dev -> main before releasing." - ) + raise ReleaseError(f"HEAD is not at {remote}/main. Pull main before releasing.") def _ensure_tag_does_not_exist(version: str, remote: str) -> None: @@ -86,6 +73,27 @@ def _ensure_tag_does_not_exist(version: str, remote: str) -> None: raise ReleaseError(f"Tag already exists on {remote}: {version}") +def _expected_release_heading(version: str) -> str: + heading = f"# Release {version}" + if re.search(r"-(?:alpha|beta|rc)\.\d+$", version): + heading += " {bdg-warning}`Pre-release`" + return heading + + +def _ensure_release_notes(version: str, *, root: Path = Path(".")) -> None: + notes_path = root / "docs" / "releases" / f"{version}.md" + if not notes_path.is_file(): + raise ReleaseError(f"Missing release notes: {notes_path}") + + content = notes_path.read_text(encoding="utf-8") + first_line = next((line.strip() for line in content.splitlines() if line.strip()), "") + expected_heading = _expected_release_heading(version) + if first_line != expected_heading: + raise ReleaseError(f"Release notes must start with {expected_heading!r}; found {first_line!r} in {notes_path}.") + if not re.search(r"^## Highlights\s*$", content, flags=re.MULTILINE): + raise ReleaseError(f"Release notes must contain a '## Highlights' section: {notes_path}") + + def _create_and_push_tag(version: str, remote: str) -> None: _run(["git", "tag", "-a", version, "-m", version], check=True) _run(["git", "push", remote, version], check=True) @@ -103,7 +111,7 @@ def parse_args(argv: Sequence[str]) -> argparse.Namespace: parser.add_argument( "--remote", default="origin", - help="Git remote containing the release main/dev branches (default: origin).", + help="Git remote containing the release main branch (default: origin).", ) parser.add_argument( "--yes", @@ -127,8 +135,8 @@ def main(argv: Sequence[str] | None = None) -> int: _ensure_clean_tree() _ensure_on_main() _ensure_up_to_date_with_remote_main(args.remote) - _ensure_dev_is_merged(args.remote) _ensure_tag_does_not_exist(version, args.remote) + _ensure_release_notes(version) if args.dry_run: print(f"[dry-run] All checks passed. Would create and push tag: {version}") @@ -143,12 +151,6 @@ def main(argv: Sequence[str] | None = None) -> int: _create_and_push_tag(version, args.remote) print(f"Release tag pushed to {args.remote}: {version}") print("GitHub Actions will now build, publish, and create the GitHub release.") - print("Post-release sync reminder:") - print(" git checkout dev") - print(f" git pull --ff-only {args.remote} dev") - print(f" git merge --ff-only {args.remote}/main") - print(f" git push {args.remote} dev") - print("This keeps dev aligned with the latest release tag ancestry for dynamic versioning.") return 0 except ReleaseError as exc: print(f"Release aborted: {exc}", file=sys.stderr) diff --git a/datasets/sachs/v1/README.md b/datasets/sachs/v1/README.md new file mode 100644 index 000000000..312d1d181 --- /dev/null +++ b/datasets/sachs/v1/README.md @@ -0,0 +1,60 @@ +# Sachs continuous cytometry data (`v1`) + +This revision contains the continuous measurements used by the CORNETO Sachs +tutorial: 7,466 observations of 11 signaling proteins and phospholipids. The +measurements are natural-log transformed and the first column, +`intervention_label`, preserves the condition grouping used by the tutorial. + +The files are intentionally kept outside the `corneto` Python package. A +cloned repository can use them directly; installed users can obtain the same +version through `corneto.datasets.fetch_dataset("sachs")`. + +## Files + +- `measurements.tsv` contains the transformed measurements and condition + labels. +- `condition_manifest.csv` records the source condition, row interval, legacy + archive label, and intervention target used by the tutorial. +- `README.md` documents the source, transformation, citation, and license. + +## Provenance and transformation + +The source is the Zenodo record +[Sachs: Protein and Phospholipids Expressions](https://doi.org/10.5281/zenodo.7681811), +version 2, specifically its `sachs.zip` file +([direct download](https://zenodo.org/records/7681811/files/sachs.zip)). The +source archive is identified by MD5 +`d50ccd7f88bb3705bcf6eda3978bcc41`. + +The CORNETO `v1` files are a deterministic derived representation of the nine +measured experimental conditions in that archive, concatenated in this order: +`cd3cd28`, `cd3cd28_icam2`, `cd3cd28_aktinhib`, `cd3cd28_g0076`, +`cd3cd28_psitect`, `cd3cd28_u0126`, `cd3cd28_ly`, `pma`, and `b2camp`. +For each condition, the 11 numeric source columns were transformed with the +natural logarithm. The source column `Plcg` is named `plc` in the CORNETO +file, and the `intervention_label` column plus the manifest were added for the +tutorial. + +The five simulated conditions and `GroundTruth.csv` from the Zenodo archive +are not included here. This explains why the CORNETO file is not byte-for-byte +identical to the Zenodo ZIP. The previous CORNETO archive had no recorded +external source; comparison with the Zenodo files establishes the derivation +described above. + +## Citation and license + +Please cite both the data record and the original study: + +> Mathematical Research Data Initiative (2023). *Sachs: Protein and +> Phospholipids Expressions*. Zenodo. https://doi.org/10.5281/zenodo.7681811 + +> Sachs, K., Perez, O., Pe'er, D., Lauffenburger, D. A., & Nolan, G. P. +> (2005). Causal protein-signaling networks derived from multiparameter +> single-cell data. *Science*, 308(5721), 523–529. +> https://doi.org/10.1126/science.1105809 + +The Zenodo record identifies the data as [Creative Commons Attribution 4.0 +International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/), +granted by G. Nolan and D. Lauffenburger. The derived CORNETO dataset is +distributed under the same license with the attribution and source links +above. diff --git a/datasets/sachs/v1/condition_manifest.csv b/datasets/sachs/v1/condition_manifest.csv new file mode 100644 index 000000000..cee2debd3 --- /dev/null +++ b/datasets/sachs/v1/condition_manifest.csv @@ -0,0 +1,10 @@ +condition,start_row,stop_row,archive_label,intervention_target +cd3cd28,0,853,observational, +cd3cd28_icam2,853,1755,observational, +cd3cd28_aktinhib,1755,2666,raf,akt +cd3cd28_g0076,2666,3389,pkc,pkc +cd3cd28_psitect,3389,4199,erk,pip2 +cd3cd28_u0126,4199,4998,pip2,mek +cd3cd28_ly,4998,5846,observational, +pma,5846,6759,pkc,pkc +b2camp,6759,7466,pka,pka diff --git a/datasets/sachs/v1/measurements.tsv b/datasets/sachs/v1/measurements.tsv new file mode 100644 index 000000000..e067a19b7 --- /dev/null +++ b/datasets/sachs/v1/measurements.tsv @@ -0,0 +1,7467 @@ +intervention_label raf mek plc pip2 pip3 erk akt pka pkc p38 jnk +observational 3.27336401015227 2.58021682959233 2.1770218700187 2.90690105984738 4.07414185490458 1.88858365386359 2.83321334405622 6.02586597382531 2.83321334405622 3.80443779474821 3.68887945411394 +observational 3.58073729549423 2.80336038090653 2.50959926237837 2.82137888640921 2.09556092355972 2.92316158071916 3.48124008933569 5.8636311755981 1.21491274436427 2.80336038090653 4.11903717481247 +observational 4.0842942263686 3.7864597824528 2.68102152871429 2.32238772029023 2.56494935746154 2.70136121295141 3.48124008933569 5.99893656194668 2.43361335540045 3.4626060097908 2.9704144655697 +observational 4.29045944114839 4.41642806139121 3.13983261752775 2.60268968544438 0.254642218373581 1.7630170003624 2.46809953147162 6.26909628370626 2.61739583283408 3.35340671782581 3.13983261752775 +observational 3.51749783735832 2.98568193770049 1.6467336971778 2.27521389619791 3.21084365317094 3.04927304048202 3.8308129500026 5.72031177660741 1.53901544813755 3.24649099190117 4.39814601655377 +observational 2.9338568698359 1.32175583998232 2.86789890204411 3.09557760852371 2.3887627892351 2.47653840011748 3.24649099190117 6.41345895716736 2.61739583283408 3.89385903480047 4.05698877567833 +observational 3.80443779474821 3.59731226058845 2.34180580614733 4.88280192258637 2.79116510781272 2.15871472257434 2.88480071284671 6.72743172485086 2.70805020110221 3.58073729549423 2.89591193827178 +observational 3.85862222870103 2.70805020110221 2.68102152871429 3.41772668361337 2.86220088092947 3.00568260440716 3.81330703248899 6.14418563412565 1.86252854011626 3.19458313229916 2.99573227355399 +observational 4.64439089914137 4.11903717481247 2.36085400111802 3.04927304048202 3.73289633953071 2.4423470353692 3.15700042115011 6.09807428216624 3.37416870927424 4.11087386417331 3.23080439573347 +observational 3.04927304048202 3.06805293513362 0.631271776841858 5.32300997913841 3.77734810210154 2.58021682959233 4.90527477843843 5.36129216570943 2.68102152871429 3.2846635654062 4.61512051684126 +observational 2.79728133483015 2.79728133483015 2.67414864942653 2.83321334405622 2.41591377830105 3.08648663682246 3.54385368206368 6.10702288774225 3.01553490085017 3.80443779474821 3.18221184049661 +observational 4.30811095172371 3.13113691056019 2.01490302054226 2.7408400239252 3.26575941076705 3.03974915897077 3.59731226058845 5.96357934361845 3.4626060097908 4.26267987704132 3.56953269648137 +observational 4.44382703557933 3.67882911826043 2.18605127673809 4.17284762371004 2.45958884180371 1.89761985992753 2.50143595173921 6.26909628370626 2.88480071284671 3.7864597824528 4.77068462446567 +observational 3.60549784517489 3.37416870927424 1.6094379124341 2.20386912005489 2.7408400239252 2.88480071284671 2.88480071284671 5.99146454710798 2.68102152871429 3.72328088083127 5.01727983681492 +observational 3.37416870927424 3.18221184049661 2.32238772029023 2.77258872223978 3.8416005411316 2.1770218700187 1.97823903617067 6.21460809842219 2.27521389619791 2.94968833505258 2.06812778177956 +observational 3.91202300542815 2.62466859216316 2.47653840011748 2.58021682959233 2.42480272571829 2.89591193827178 3.32862668882732 5.97126183979046 4.02891675689965 4.34380542185368 0 +observational 3.26575941076705 3.2846635654062 3.05870707271538 2.3887627892351 2.68784749378469 2.20386912005489 3.63495111208838 4.48863636973214 3.68887945411394 4.18205014264121 0.350656871613169 +observational 3.67882911826043 3.64283551561253 2.35137525716348 4.52396013056255 3.12236492448736 3.3178157727231 3.44361809754611 5.40717177146012 2.80336038090653 3.42751468997953 2.03339760317843 +observational 3.41772668361337 2.98568193770049 2.01490302054226 4.89034912822175 2.75366071235426 2.94968833505258 3.58905911883173 5.76519110278484 3.18221184049661 3.6163087612791 2.84490938381941 +observational 3.89385903480047 2.80336038090653 2.58776403522771 4.94875989037817 3.24649099190117 3.43720781918519 4.12874598893943 6.56526497003536 2.65324196460721 3.31054301339402 3.09557760852371 +observational 3.65065824129374 2.18605127673809 2.42480272571829 4.45201900649392 2.88480071284671 2.4932054526027 3.58073729549423 6.73696695800186 2.484906649788 3.34638914516716 3.03974915897077 +observational 3.45315712059287 2.87919845729804 2.67414864942653 2.36085400111802 1.59127394180643 2.32238772029023 3.17387845893747 5.62040086571715 2.62466859216316 3.34638914516716 2.54160199346455 +observational 3.71357206670431 3.32862668882732 0 4.91998092582813 3.17387845893747 3.40784192438082 3.91202300542815 6.87212810133899 0 4.43438186500781 1.52822785700856 +observational 4.254193263164 3.9926809084456 2.73436750941958 3.19458313229916 2.55722731136763 2.2935443483419 3.32862668882732 6.10702288774225 3.58073729549423 4.54223038621422 3.87743156065853 +observational 4.254193263164 3.74242022104197 2.86789890204411 3.03974915897077 2.35137525716348 4.0842942263686 4.58700621536042 7.59135704669855 3.58073729549423 3.8308129500026 2.87919845729804 +observational 3.06805293513362 0 2.11384296839717 5.19849703126583 3.77734810210154 2.9338568698359 3.65065824129374 6.46769872610435 2.61006979274201 3.37416870927424 1.95160817016995 +observational 3.66867674679642 3.13983261752775 2.92316158071916 3.09557760852371 2.36085400111802 2.87919845729804 3.47196645255036 6.14418563412565 2.35137525716348 3.14845336057165 1.94304891677428 +observational 4.24563400976833 3.01553490085017 2.98568193770049 2.91235066461494 1.83418018511201 2.34180580614733 3.2188758248682 6.21460809842219 3.12236492448736 3.87743156065853 4.0842942263686 +observational 3.55248682920838 3.10458667846607 2.84490938381941 3.91202300542815 3.13983261752775 3.53514535417189 3.93963817246112 5.73009978297357 2.58021682959233 3.6609942506244 5.27811465923052 +observational 3.70622809244855 3.21084365317094 2.56494935746154 4.13676527810605 3.64283551561253 1.63705307946707 2.68784749378469 6.51174532964473 3.3357695763397 3.73289633953071 3.13983261752775 +observational 3.82209829790016 2.75366071235426 2.58021682959233 3.05870707271538 2.01490302054226 3.17387845893747 3.89385903480047 7.23128700432762 2.9704144655697 3.65065824129374 3.03974915897077 +observational 3.77734810210154 3.37416870927424 2.67414864942653 2.86789890204411 2.57261223020711 2.14943391349987 2.52572864430826 6.43133108193348 3.52636052461616 4.21803603456465 3.3357695763397 +observational 4.38077585277223 4.38949864951258 1.48387468945875 5.34233425196481 2.9704144655697 2.35137525716348 3.56953269648137 6.04500531403601 3.29212628660779 3.69635146895264 2.72785282839839 +observational 4.03777421073371 2.85070650150373 3.07731226054641 2.89591193827178 2.54160199346455 2.2213750375685 3.13113691056019 6.31354804627709 3.65065824129374 4.0926765051214 2.88480071284671 +observational 4.07414185490458 2.9704144655697 0.943905898907128 3.72328088083127 0.792992515529661 2.94968833505258 3.51749783735832 5.78382518232974 3.13113691056019 3.4626060097908 3.03013370027132 +observational 3.98527346716774 2.54160199346455 2.3887627892351 2.51769647261099 3.42751468997953 3.00568260440716 3.63495111208838 5.99893656194668 3.11351530921037 3.65065824129374 3.03974915897077 +observational 4.06560209335645 3.13983261752775 2.9391619220656 4.37071287477361 3.19458313229916 3.58905911883173 3.88567903008854 6.06145691892802 2.68784749378469 3.36384159511839 2.53369681395743 +observational 5.07517381523383 3.3357695763397 1.96009478404727 4.74493212836325 2.77881927199042 1.60140574073684 2.51769647261099 7.12367278520461 0.900161349944271 3.44361809754611 4.42484663185681 +observational 3.81330703248899 2.23964529322017 2.50143595173921 3.98527346716774 3.3178157727231 1.45628673293993 3.3178157727231 6.39526159811545 3.64283551561253 4.38949864951258 4.93447393313069 +observational 4.00186370942794 3.34638914516716 2.12226153886276 2.23964529322017 3.03013370027132 3.65065824129374 4.0926765051214 6.8001700683022 2.54160199346455 3.16547504814109 2.60268968544438 +observational 4.44382703557933 3.29212628660779 3.23080439573347 3.86702563949741 3.13113691056019 2.61006979274201 2.65324196460721 5.98141421125448 1.55603713570699 2.19499988231411 3.76815263500844 +observational 4.69134788222914 3.77734810210154 2.24812890719799 5.83773044716594 4.10098910494077 3.29953372788566 3.75185425327532 5.76519110278484 2.70136121295141 3.63495111208838 2.87919845729804 +observational 3.24649099190117 2.72785282839839 0 4.78749174278205 3.16547504814109 0.989541193613748 2.9391619220656 2.32238772029023 1.60140574073684 3.69635146895264 5.39816270151775 +observational 3.92197333628131 3.3357695763397 3.3178157727231 3.36384159511839 2.62466859216316 2.68784749378469 3.21084365317094 5.94542060860658 2.72785282839839 2.99573227355399 2.04122032885964 +observational 4.23700086262362 2.87919845729804 2.87919845729804 4.12874598893943 3.13983261752775 0.99694863489161 2.58776403522771 6.33150184989369 1.49290409617815 2.99573227355399 4.65396035015752 +observational 4.13676527810605 2.96010509591084 2.14124194258528 3.03974915897077 3.66867674679642 1.50185270175416 3.21084365317094 6.16120732169508 3.15700042115011 3.88567903008854 3.11351530921037 +observational 4.21803603456465 3.77734810210154 2.43361335540045 2.96010509591084 2.76000994003292 2.87919845729804 3.65065824129374 7.26752542782817 3.4626060097908 4.20020495292158 3.68887945411394 +observational 4.31748811353631 4.05698877567833 1.59127394180643 2.73436750941958 3.20274644293832 3.08648663682246 3.58905911883173 5.4510384535657 3.05870707271538 3.8308129500026 2.83321334405622 +observational 3.92986292355648 3.74242022104197 2.02419306744936 4.80402104473326 3.87743156065853 1.83418018511201 3.58905911883173 6.93439720992856 2.52572864430826 3.4904285153901 4.68213122712422 +observational 4.38077585277223 3.01553490085017 3.18221184049661 3.11351530921037 2.99573227355399 2.1770218700187 3.18221184049661 6.14418563412565 2.94968833505258 3.55248682920838 1.81645208181843 +observational 4.13676527810605 3.07731226054641 3.08648663682246 3.09557760852371 1.34025042261848 3.66867674679642 4.3267781604434 7.1777824161952 2.16791018966744 3.12236492448736 2.45958884180371 +observational 3.92986292355648 3.23080439573347 1.8531680973567 4.33598269617247 2.84490938381941 2.20386912005489 2.73436750941958 6.51174532964473 1.53901544813755 3.29212628660779 5.15329159449778 +observational 4.31748811353631 3.41772668361337 2.61006979274201 3.93963817246112 3.74242022104197 3.23080439573347 3.56953269648137 6.14418563412565 3.01553490085017 3.77734810210154 2.31253542384721 +observational 4.0842942263686 3.23080439573347 2.45958884180371 3.03013370027132 3.32862668882732 1.28647402583768 2.51769647261099 3.39114704580865 2.84490938381941 3.48124008933569 2.35137525716348 +observational 5.19849703126583 3.63495111208838 0 5.67675380226828 3.90399083373088 1.8531680973567 2.57261223020711 6.35088571671474 3.03974915897077 3.64283551561253 2.86789890204411 +observational 4.24563400976833 3.49953328238302 2.54160199346455 4.20916023665068 0.647103242058538 1.4036429994545 3.29953372788566 6.880384082186 4.45201900649392 4.79579054559674 3.48124008933569 +observational 4.04830062372069 2.94968833505258 2.40694510831829 3.74242022104197 1.88858365386359 1.7630170003624 2.60268968544438 6.30444880242198 3.80443779474821 4.38949864951258 4.27249074760558 +observational 4.41642806139121 3.41772668361337 2.63188884013665 2.92316158071916 1.93441576962958 3.15700042115011 3.62434093297637 6.03548143252476 1.87946504964716 2.81540871942271 4.56017282005736 +observational 3.56953269648137 3.20274644293832 2.75366071235426 3.56953269648137 2.47653840011748 3.08648663682246 3.82209829790016 5.77455154554441 1.9154509415706 3.14845336057165 2.47653840011748 +observational 4.38949864951258 3.32862668882732 2.88480071284671 3.75185425327532 2.85070650150373 1.04380405217311 3.03013370027132 5.23644196282995 3.03013370027132 3.49953328238302 2.86220088092947 +observational 4.72738781871234 3.82209829790016 2.37954613413017 5.03695260241363 4.06560209335645 2.57261223020711 3.06805293513362 5.82008293035236 1.69927861643389 2.99573227355399 2.23964529322017 +observational 2.18605127673809 2.31253542384721 2.33214389523559 4.48863636973214 3.38099467434464 5.19849703126583 5.87211778947542 7.45645455517621 3.18221184049661 3.74242022104197 3.03013370027132 +observational 3.56104608260405 2.64617479738412 1.96009478404727 3.00568260440716 3.47196645255036 2.55722731136763 3.11351530921037 6.36818718635049 3.62434093297637 3.85862222870103 2.24812890719799 +observational 3.18221184049661 2.50959926237837 2.54160199346455 4.13676527810605 3.2846635654062 2.21266038546606 2.80336038090653 6.30444880242198 3.24649099190117 4.0926765051214 4.38949864951258 +observational 5.0998664278242 3.49953328238302 1.75440368268429 3.35340671782581 2.61739583283408 2.79116510781272 3.18221184049661 5.76519110278484 3.11351530921037 3.56953269648137 2.51769647261099 +observational 4.05698877567833 3.29953372788566 2.7408400239252 4.04830062372069 2.9704144655697 3.25424296870549 3.54385368206368 5.94542060860658 1.11514159061932 3.29953372788566 4.36182392735636 +observational 4.50645421304893 3.31054301339402 3.68887945411394 4.57779898919196 4.26267987704132 2.3887627892351 2.9391619220656 6.06145691892802 1.49290409617815 3.75887182593397 4.38949864951258 +observational 3.65065824129374 2.54160199346455 1.4747630091075 3.12236492448736 3.16547504814109 1.43983512804792 2.37954613413017 6.35957386867238 0.62057648772511 1.99741770620125 1.23256026117785 +observational 3.93963817246112 3.60549784517489 2.54160199346455 3.69635146895264 3.07731226054641 2.54160199346455 3.25424296870549 6.50279004591562 0.916290731874155 2.70136121295141 4.17284762371004 +observational 3.29212628660779 2.71469474382088 2.92316158071916 3.02042488614436 2.13179677201376 3.01553490085017 3.65065824129374 6.07993319509559 2.45958884180371 3.19458313229916 2.73436750941958 +observational 4.02891675689965 3.04927304048202 2.54160199346455 3.04927304048202 4.05698877567833 2.64617479738412 2.98568193770049 6.16120732169508 3.25424296870549 3.67882911826043 4.3267781604434 +observational 4.254193263164 3.56953269648137 2.91235066461494 3.82209829790016 3.86702563949741 2.9338568698359 3.45315712059287 6.03548143252476 2.30258509299405 3.10458667846607 1.89761985992753 +observational 4.07414185490458 3.56104608260405 2.50143595173921 2.80336038090653 3.18221184049661 2.91235066461494 3.51749783735832 5.89164421182577 2.79116510781272 2.98568193770049 2.34180580614733 +observational 4.23700086262362 3.56953269648137 2.85070650150373 3.91202300542815 2.98568193770049 2.14124194258528 2.92316158071916 5.01727983681492 2.484906649788 3.43720781918519 3.3178157727231 +observational 4.24563400976833 3.85014760171006 3.23867845216438 5.62040086571715 4.34380542185368 3.4904285153901 3.93963817246112 6.68336094576627 2.97552956623647 3.86702563949741 2.79728133483015 +observational 4.65396035015752 4.0926765051214 2.99573227355399 2.97552956623647 2.71469474382088 1.92424865227413 3.13983261752775 6.97073007814353 0.512823626428664 3.87743156065853 1.53901544813755 +observational 4.12874598893943 3.94931879017184 2.61006979274201 3.40784192438082 2.36085400111802 2.66025953726586 3.63495111208838 6.53958595561767 1.870262530716 3.2188758248682 4.5152454784601 +observational 4.31748811353631 3.50855589998265 0 3.45315712059287 0 2.98568193770049 3.3178157727231 6.22455842927536 2.92316158071916 3.43720781918519 2.03339760317843 +observational 3.01553490085017 2.71469474382088 2.07819075977818 4.61512051684126 3.58073729549423 2.21266038546606 3.13113691056019 5.99146454710798 2.45958884180371 3.12236492448736 1.92424865227413 +observational 3.86702563949741 2.97552956623647 2.86220088092947 3.49953328238302 4.40671924726425 2.88480071284671 3.56104608260405 6.8627579130514 3.11351530921037 3.76815263500844 2.99573227355399 +observational 4.0926765051214 3.9759363311718 2.46809953147162 4.3528552573736 2.55722731136763 2.40694510831829 3.63495111208838 7.24921505711439 2.9338568698359 3.38099467434464 2.82137888640921 +observational 3.8416005411316 3.29953372788566 2.51769647261099 4.69134788222914 3.08648663682246 3.06805293513362 3.64283551561253 5.33271879326537 2.39789527279837 3.44361809754611 2.484906649788 +observational 3.94931879017184 3.05870707271538 3.89385903480047 4.07414185490458 2.37954613413017 4.07414185490458 5.29831736654804 8.02322468471667 2.72785282839839 3.66867674679642 2.75366071235426 +observational 3.4626060097908 3.17387845893747 2.71469474382088 2.54160199346455 1.52822785700856 1.90657514365664 2.70805020110221 6.33150184989369 0 4.22683374526818 2.10413415427021 +observational 4.54223038621422 3.31054301339402 4.20916023665068 4.92725368515721 3.42751468997953 3.3357695763397 3.8308129500026 6.80903930604298 0.989541193613748 1.94304891677428 4.26267987704132 +observational 4.17284762371004 3.14845336057165 2.72785282839839 2.53369681395743 2.20386912005489 2.97552956623647 3.56104608260405 6.69208374250663 0.86288995514704 2.99573227355399 2.06812778177956 +observational 5.03043792139244 4.81218435537242 2.484906649788 3.54385368206368 4.15575319035074 2.14943391349987 3.26575941076705 6.1527326947041 0 2.484906649788 2.2935443483419 +observational 2.81540871942271 2.51769647261099 1.95160817016995 5.45958551414416 3.55248682920838 3.80443779474821 4.17284762371004 7.51914995766982 3.15700042115011 3.58905911883173 3.41772668361337 +observational 4.27249074760558 3.23867845216438 2.57261223020711 2.484906649788 3.76815263500844 2.50143595173921 3.44361809754611 6.48463523563525 2.04122032885964 2.79728133483015 3.89385903480047 +observational 3.56953269648137 3.16547504814109 1.06125650212434 1.44926916028128 2.55722731136763 2.56494935746154 3.12236492448736 6.1527326947041 2.05027016437956 3.50855589998265 2.79116510781272 +observational 4.42484663185681 4.11903717481247 2.56494935746154 3.54385368206368 2.50959926237837 1.24126858906963 2.9704144655697 5.47646355193151 0.928219302739429 0.989541193613748 1.80828877117927 +observational 3.4626060097908 2.1770218700187 2.55722731136763 5.03695260241363 4.03777421073371 2.82137888640921 2.77258872223978 6.07073772800249 2.25758772706331 3.88567903008854 3.9926809084456 +observational 3.38099467434464 3.00568260440716 2.04122032885964 4.8283137373023 3.31054301339402 4.48863636973214 5.01063529409626 6.68336094576627 0.99694863489161 2.73436750941958 3.89385903480047 +observational 5.71042701737487 5.78382518232974 2.86789890204411 3.24649099190117 2.37024374146786 3.37416870927424 3.64283551561253 5.74620319054015 2.37954613413017 3.59731226058845 2.84490938381941 +observational 3.69635146895264 2.80336038090653 2.4423470353692 6.22455842927536 4.20916023665068 2.96010509591084 3.39114704580865 6.18001665365257 1.07158361628019 2.72785282839839 4.48863636973214 +observational 3.37416870927424 2.73436750941958 2.27521389619791 3.13983261752775 4.26267987704132 1.8531680973567 3.85014760171006 6.32256523992728 2.99573227355399 3.20274644293832 2.04122032885964 +observational 3.8308129500026 3.24649099190117 2.54160199346455 3.19458313229916 3.6163087612791 2.82137888640921 3.58073729549423 5.92692602597041 1.69927861643389 3.66867674679642 4.56017282005736 +observational 3.95699637107088 3.06805293513362 3.29953372788566 5.04342511691925 4.21803603456465 1.97823903617067 3.17387845893747 6.7093043402583 1.27815220250019 3.2188758248682 4.53367418428302 +observational 3.88567903008854 3.59731226058845 2.92316158071916 2.36085400111802 2.63188884013665 1.80828877117927 3.25424296870549 6.91671502035361 2.32238772029023 3.12236492448736 2.72785282839839 +observational 4.45201900649392 4.40671924726425 4.78749174278205 5.78382518232974 4.37071287477361 1.88858365386359 2.3887627892351 6.58340922215876 2.4932054526027 3.08648663682246 1.69009581545155 +observational 4.3267781604434 3.25424296870549 3.06805293513362 4.16511363311031 3.81330703248899 2.11384296839717 3.34638914516716 6.36818718635049 2.75366071235426 3.60549784517489 2.61739583283408 +observational 4.06560209335645 3.08648663682246 2.70136121295141 2.91235066461494 3.40784192438082 1.69927861643389 2.84490938381941 6.88959130835447 2.79116510781272 3.06805293513362 2.7408400239252 +observational 4.07414185490458 3.55248682920838 2.58776403522771 4.41642806139121 3.64283551561253 3.11351530921037 3.32862668882732 5.93753620508243 1.87946504964716 2.91235066461494 3.88567903008854 +observational 4.71849887129509 3.3178157727231 3.34638914516716 4.21803603456465 3.41772668361337 2.37954613413017 2.81540871942271 5.99893656194668 2.87919845729804 3.39114704580865 2.05027016437956 +observational 4.20020495292158 3.37416870927424 0.871293365943419 2.3887627892351 3.47196645255036 3.13113691056019 3.47196645255036 5.93753620508243 2.66025953726586 3.42751468997953 2.86789890204411 +observational 3.67882911826043 3.17387845893747 1.88858365386359 4.91998092582813 3.01553490085017 3.12236492448736 3.64283551561253 5.74620319054015 2.77881927199042 2.99573227355399 2.35137525716348 +observational 3.59731226058845 2.7408400239252 0.936093359170335 2.12226153886276 3.68887945411394 2.76000994003292 3.54385368206368 5.63835466933375 3.05870707271538 3.35340671782581 2.63188884013665 +observational 3.64283551561253 3.24649099190117 3.47196645255036 4.0842942263686 4.92725368515721 3.18221184049661 3.59731226058845 5.80211837537706 3.65065824129374 4.21803603456465 2.79116510781272 +observational 3.73289633953071 3.05870707271538 2.23964529322017 2.06812778177956 3.48124008933569 2.58776403522771 4.11087386417331 6.75460409948796 1.03318448334565 2.85070650150373 4.16511363311031 +observational 4.12874598893943 2.89591193827178 3.21084365317094 4.72738781871234 3.23867845216438 2.83321334405622 3.54385368206368 6.40357419793482 1.44926916028128 2.60268968544438 4.28082412916472 +observational 5.11799381241676 4.37071287477361 2.26695791535089 4.70953020131233 3.00568260440716 3.34638914516716 4.48863636973214 7.29437729928882 3.01553490085017 3.37416870927424 2.55722731136763 +observational 4.01998014693324 3.35340671782581 3.25424296870549 3.94931879017184 4.17284762371004 2.01490302054226 2.86789890204411 5.6021188208797 0.792992515529661 1.49290409617815 2.27521389619791 +observational 4.43438186500781 4.27249074760558 2.55722731136763 4.53367418428302 3.59731226058845 2.18605127673809 2.87919845729804 6.80903930604298 2.20386912005489 3.2188758248682 3.74242022104197 +observational 4.10098910494077 3.23080439573347 2.94968833505258 3.31054301339402 3.79548918917219 3.79548918917219 4.17284762371004 7.08757370555797 3.03974915897077 3.90399083373088 2.86220088092947 +observational 4.04830062372069 3.08648663682246 3.64283551561253 3.65065824129374 4.39814601655377 1.7630170003624 2.55722731136763 5.61312810638807 2.77258872223978 3.06805293513362 2.70136121295141 +observational 4.33598269617247 3.4904285153901 3.40119738166216 4.10098910494077 3.90399083373088 1.69927861643389 2.66025953726586 4.47049528266149 2.40694510831829 3.31054301339402 2.00552585872967 +observational 4.56954300834494 4.77912349311153 2.7408400239252 4.26267987704132 2.63188884013665 2.9704144655697 3.47196645255036 6.21460809842219 3.92986292355648 4.31748811353631 3.29212628660779 +observational 3.65065824129374 2.87919845729804 3.47196645255036 4.74493212836325 4.11087386417331 2.36085400111802 3.05870707271538 6.87212810133899 1.6094379124341 3.01553490085017 3.55248682920838 +observational 4.19116874685764 3.8416005411316 2.04122032885964 2.97552956623647 4.3267781604434 2.75366071235426 2.87919845729804 6.25190388316589 2.484906649788 2.62466859216316 2.70136121295141 +observational 4.71849887129509 4.37071287477361 1.99741770620125 2.70805020110221 3.58073729549423 2.36085400111802 3.47196645255036 5.94542060860658 2.70136121295141 3.43720781918519 2.484906649788 +observational 3.85014760171006 3.10458667846607 2.50143595173921 4.29045944114839 3.18221184049661 1.24990173621434 2.43361335540045 5.82894561761021 1.7263316639056 2.63188884013665 4.54223038621422 +observational 4.47049528266149 4.00186370942794 2.97552956623647 2.14943391349987 3.21084365317094 2.76000994003292 3.49953328238302 6.62936325343745 3.20274644293832 3.70622809244855 3.2188758248682 +observational 4.05698877567833 2.94968833505258 3.13113691056019 2.94968833505258 2.42480272571829 2.9338568698359 4.04830062372069 6.61069604471776 2.15871472257434 2.12226153886276 3.19458313229916 +observational 4.52396013056255 3.43720781918519 2.9391619220656 3.10458667846607 3.53514535417189 2.61006979274201 3.38099467434464 5.95324333428778 1.97823903617067 2.86789890204411 2.07819075977818 +observational 4.53367418428302 3.36384159511839 2.25758772706331 2.43361335540045 3.13983261752775 3.01553490085017 3.21084365317094 5.76519110278484 1.42069578783722 3.00568260440716 4.80402104473326 +observational 4.67282883446191 3.60549784517489 2.77258872223978 3.6609942506244 3.37416870927424 2.9338568698359 3.3357695763397 5.62040086571715 0.60431596685333 3.23867845216438 4.57779898919196 +observational 4.38949864951258 4.03777421073371 2.77881927199042 3.3178157727231 1.39376637595859 1.66392609771817 1.77155676191054 6.19644412779452 1.25846098961001 1.71739505393919 3.19458313229916 +observational 3.80443779474821 3.23080439573347 0 5.06259503302697 2.50959926237837 2.65324196460721 3.26575941076705 6.24222326545517 1.87946504964716 2.77881927199042 3.51749783735832 +observational 3.31054301339402 2.9338568698359 2.26695791535089 2.58021682959233 2.27521389619791 2.92316158071916 4.00186370942794 5.65599181081985 0.631271776841858 2.98568193770049 4.47960696301275 +observational 3.45315712059287 3.24649099190117 3.20274644293832 3.56104608260405 3.24649099190117 2.64617479738412 3.24649099190117 5.64897423816121 3.01553490085017 3.34638914516716 3.87743156065853 +observational 3.95699637107088 3.50855589998265 2.09556092355972 3.23867845216438 1.74571553072665 3.41772668361337 3.75887182593397 5.72031177660741 3.55248682920838 4.22683374526818 3.01553490085017 +observational 4.27249074760558 3.31054301339402 2.1770218700187 2.90690105984738 3.13983261752775 2.64617479738412 3.31054301339402 6.47543271670409 1.34025042261848 3.00568260440716 3.98527346716774 +observational 3.79548918917219 3.29212628660779 2.7408400239252 4.47049528266149 2.52572864430826 1.51072193949494 2.77258872223978 5.93753620508243 1.30291275218084 3.48124008933569 4.34380542185368 +observational 4.30811095172371 3.31054301339402 2.79728133483015 3.12236492448736 0.693147180559945 1.83418018511201 2.71469474382088 6.12468339089421 2.61006979274201 3.20274644293832 1.87946504964716 +observational 3.7864597824528 3.00568260440716 2.63188884013665 2.87919845729804 3.66867674679642 3.10458667846607 3.40784192438082 6.18826412308259 3.41772668361337 3.68887945411394 3.16547504814109 +observational 3.75887182593397 3.13113691056019 2.85070650150373 2.87919845729804 3.08648663682246 2.57261223020711 3.60549784517489 6.56526497003536 2.53369681395743 3.19458313229916 4.18205014264121 +observational 4.37071287477361 3.27336401015227 0.173953307123438 1.37624402526639 3.72328088083127 2.08691355651854 3.01553490085017 6.23244801655052 1.30291275218084 2.77258872223978 4.14630430115281 +observational 4.48863636973214 3.40119738166216 3.80443779474821 3.85014760171006 1.99741770620125 3.96651119071222 4.57779898919196 7.73543335249969 4.24563400976833 4.55071400019203 2.11384296839717 +observational 4.14630430115281 3.31054301339402 2.67414864942653 4.38949864951258 3.71357206670431 2.71469474382088 3.64283551561253 6.11589212548303 2.61006979274201 3.4904285153901 2.57261223020711 +observational 3.32862668882732 3.03013370027132 3.23080439573347 4.254193263164 3.74242022104197 1.94304891677428 3.05870707271538 5.74620319054015 3.21084365317094 3.79548918917219 3.13983261752775 +observational 4.24563400976833 3.13113691056019 2.96010509591084 2.86220088092947 2.27521389619791 3.03013370027132 3.3357695763397 5.54126354515843 2.56494935746154 3.23080439573347 2.27521389619791 +observational 3.36384159511839 2.75366071235426 3.12236492448736 3.63495111208838 3.89385903480047 2.56494935746154 3.15700042115011 6.23244801655052 3.09557760852371 3.98527346716774 3.58073729549423 +observational 4.62497281328427 3.42751468997953 1.96990565461153 4.40671924726425 3.89385903480047 3.00568260440716 3.2188758248682 5.83773044716594 1.37624402526639 3.29212628660779 4.47049528266149 +observational 4.0842942263686 3.23080439573347 2.70136121295141 4.11903717481247 3.26575941076705 3.11351530921037 3.59731226058845 5.47646355193151 1.00795792039998 2.67414864942653 4.3528552573736 +observational 4.49758497530815 3.44361809754611 2.9338568698359 3.11351530921037 2.16791018966744 3.2188758248682 3.62434093297637 6.05443934626937 3.39114704580865 4.10098910494077 3.18221184049661 +observational 5.29831736654804 3.49953328238302 2.9704144655697 4.02891675689965 2.77881927199042 3.07731226054641 3.56953269648137 5.72031177660741 1.44926916028128 2.65324196460721 4.56017282005736 +observational 4.12874598893943 2.89591193827178 2.70136121295141 5.00394630594546 4.12874598893943 1.50185270175416 3.03013370027132 6.54821910276237 3.7864597824528 4.8283137373023 4.04830062372069 +observational 3.8308129500026 3.16547504814109 2.88480071284671 5.62040086571715 3.72328088083127 2.70805020110221 2.9704144655697 5.8111409929767 2.81540871942271 3.45315712059287 2.46809953147162 +observational 5.00394630594546 4.44382703557933 2.13179677201376 2.07819075977818 2.87919845729804 3.37416870927424 4.23700086262362 7.09672137849476 3.27336401015227 3.8416005411316 3.40119738166216 +observational 2.18605127673809 2.7408400239252 2.06812778177956 5.03043792139244 2.77258872223978 3.69635146895264 4.11903717481247 7.3664451483276 2.50143595173921 3.24649099190117 2.484906649788 +observational 4.69134788222914 3.68887945411394 2.28442112236637 3.19458313229916 4.29045944114839 2.50959926237837 3.13983261752775 6.18826412308259 2.88480071284671 3.42751468997953 2.71469474382088 +observational 4.27249074760558 3.75887182593397 3.43720781918519 3.17387845893747 2.35137525716348 2.09556092355972 3.55248682920838 7.85205020726589 0 3.50855589998265 0.00995033085316809 +observational 4.22683374526818 3.19458313229916 2.79116510781272 3.86702563949741 2.63188884013665 1.78170913337455 2.84490938381941 6.47543271670409 2.92316158071916 3.65065824129374 2.87919845729804 +observational 4.38077585277223 3.7864597824528 1.49290409617815 4.49758497530815 3.3357695763397 3.66867674679642 4.41642806139121 6.44888939414686 3.01553490085017 3.93963817246112 3.58073729549423 +observational 4.44382703557933 3.55248682920838 0 5.78382518232974 3.15700042115011 3.7864597824528 4.46129981556839 6.68336094576627 3.17387845893747 3.73289633953071 2.81540871942271 +observational 5.27811465923052 5.09375020080676 1.34807314829969 5.73979291217923 4.0926765051214 3.13113691056019 3.23080439573347 6.1527326947041 0.765467842139571 1.88858365386359 1.03318448334565 +observational 3.65065824129374 2.85070650150373 3.24649099190117 3.27336401015227 2.3887627892351 3.38099467434464 3.75185425327532 5.77455154554441 3.14845336057165 3.62434093297637 2.96010509591084 +observational 4.16511363311031 3.92986292355648 2.54160199346455 2.51769647261099 1.13462272619114 3.11351530921037 3.40119738166216 6.35088571671474 3.2188758248682 4.00186370942794 3.03974915897077 +observational 4.57779898919196 3.12236492448736 2.86220088092947 4.61512051684126 3.44361809754611 2.97552956623647 3.23080439573347 5.8636311755981 2.63188884013665 3.58905911883173 2.28442112236637 +observational 4.37071287477361 3.34638914516716 1.98787434815435 1.90657514365664 4.20020495292158 3.31054301339402 3.9759363311718 7.41155628781116 3.68887945411394 4.19116874685764 3.01553490085017 +observational 4.66343909411207 3.21084365317094 0.300104592450338 4.11087386417331 2.77881927199042 4.254193263164 4.68213122712422 6.92559519711047 2.73436750941958 3.4626060097908 2.65324196460721 +observational 4.33598269617247 3.42751468997953 2.14124194258528 4.94875989037817 2.4932054526027 2.96010509591084 3.52636052461616 5.6937321388027 1.81645208181843 3.38099467434464 4.77068462446567 +observational 4.68213122712422 3.42751468997953 3.06805293513362 3.71357206670431 3.42751468997953 1.88858365386359 3.31054301339402 6.99759598298193 2.4423470353692 3.40784192438082 4.20916023665068 +observational 3.9759363311718 3.54385368206368 2.90690105984738 3.71357206670431 4.02891675689965 1.33236601909433 3.42751468997953 6.87212810133899 1.23256026117785 2.79728133483015 4.254193263164 +observational 3.32862668882732 2.96010509591084 3.19458313229916 4.66343909411207 3.16547504814109 2.68784749378469 3.05870707271538 6.25190388316589 2.70136121295141 3.58905911883173 2.80336038090653 +observational 4.24563400976833 3.26575941076705 3.08648663682246 3.01553490085017 2.83321334405622 2.9391619220656 3.81330703248899 6.27852142416584 0.879626747502564 2.24812890719799 4.30811095172371 +observational 1.97823903617067 1.77155676191054 2.87919845729804 4.77912349311153 2.64617479738412 2.1770218700187 3.16547504814109 6.09807428216624 1.09861228866811 2.89591193827178 4.20020495292158 +observational 3.89385903480047 2.9338568698359 2.70136121295141 3.38099467434464 2.70805020110221 2.86789890204411 3.3357695763397 6.1527326947041 0.631271776841858 3.08648663682246 4.0842942263686 +observational 3.75185425327532 2.75366071235426 3.9759363311718 4.13676527810605 2.80336038090653 1.33236601909433 2.33214389523559 6.31354804627709 1.94304891677428 3.80443779474821 5.6021188208797 +observational 2.80336038090653 3.13113691056019 2.2213750375685 2.3887627892351 3.8308129500026 1.27815220250019 2.61006979274201 6.77308037565554 2.52572864430826 3.3357695763397 1.06125650212434 +observational 4.61512051684126 4.11087386417331 2.88480071284671 2.56494935746154 3.32862668882732 2.07819075977818 2.40694510831829 5.37063802812766 1.63705307946707 2.43361335540045 4.07414185490458 +observational 4.0926765051214 3.08648663682246 2.4423470353692 2.84490938381941 2.58776403522771 2.1770218700187 3.21084365317094 6.87212810133899 2.2213750375685 3.80443779474821 1.34807314829969 +observational 4.62497281328427 3.8308129500026 2.42480272571829 4.64439089914137 2.58776403522771 3.60549784517489 4.18205014264121 6.81783057145415 2.61739583283408 3.50855589998265 2.39789527279837 +observational 4.95582705760126 4.61512051684126 3.29212628660779 6.04500531403601 4.61512051684126 2.42480272571829 2.9704144655697 6.47543271670409 2.13179677201376 3.37416870927424 4.92725368515721 +observational 4.11903717481247 2.84490938381941 2.87919845729804 2.31253542384721 2.81540871942271 2.70136121295141 3.49953328238302 6.29526600143965 2.40694510831829 3.03974915897077 5.03695260241363 +observational 4.00186370942794 3.01553490085017 2.7408400239252 3.56104608260405 3.48124008933569 2.45958884180371 2.89591193827178 6.39526159811545 0.488580014818671 2.86220088092947 4.21803603456465 +observational 3.92197333628131 2.9704144655697 1.56444054650336 2.61006979274201 3.21084365317094 2.45958884180371 3.36384159511839 6.23244801655052 2.90690105984738 3.67882911826043 3.14845336057165 +observational 3.52636052461616 2.58776403522771 3.2846635654062 3.64283551561253 4.58700621536042 3.52636052461616 4.0842942263686 6.55677835615804 3.4904285153901 4.14630430115281 3.92986292355648 +observational 3.88567903008854 2.9704144655697 3.4904285153901 3.77734810210154 3.80443779474821 2.14943391349987 3.19458313229916 6.14418563412565 0.470003629245736 3.01553490085017 4.17284762371004 +observational 4.254193263164 3.23080439573347 2.50959926237837 4.97673374242057 3.04927304048202 1.51072193949494 3.20274644293832 5.54126354515843 1.57484646766448 2.9338568698359 3.94931879017184 +observational 3.82209829790016 2.94968833505258 1.84371920815877 4.55071400019203 2.84490938381941 2.13179677201376 2.77258872223978 5.4971682252932 1.12492959698548 3.15700042115011 4.54223038621422 +observational 4.36182392735636 3.49953328238302 3.23080439573347 3.31054301339402 3.8416005411316 4.20020495292158 5.0998664278242 8.07713663853845 2.87919845729804 3.39114704580865 2.90690105984738 +observational 2.86789890204411 2.43361335540045 3.48124008933569 4.55071400019203 4.76217393479776 3.16547504814109 3.59731226058845 5.87211778947542 2.28442112236637 3.13983261752775 2.9391619220656 +observational 3.38099467434464 3.27336401015227 2.71469474382088 3.06805293513362 2.09556092355972 2.73436750941958 4.27249074760558 6.41345895716736 0.727548607277278 3.09557760852371 4.04830062372069 +observational 4.15575319035074 3.04927304048202 2.03339760317843 3.64283551561253 3.91202300542815 1.48387468945875 2.63188884013665 6.13339804299665 3.02042488614436 3.44361809754611 2.58021682959233 +observational 5.4249500174814 5.04342511691925 3.35340671782581 3.4904285153901 3.10458667846607 2.37954613413017 2.31253542384721 5.89164421182577 2.97552956623647 3.66867674679642 2.4932054526027 +observational 4.16511363311031 3.39114704580865 2.61739583283408 3.50855589998265 2.14943391349987 2.04122032885964 3.13983261752775 7.13249755166004 2.53369681395743 3.23080439573347 0.104360015324243 +observational 4.05698877567833 2.72785282839839 2.9704144655697 4.26267987704132 3.45315712059287 2.66025953726586 2.88480071284671 6.22455842927536 2.9391619220656 3.6609942506244 3.49953328238302 +observational 4.31748811353631 3.16547504814109 2.60268968544438 5.18178355029209 3.45315712059287 3.06805293513362 3.49953328238302 5.54126354515843 3.3357695763397 3.77734810210154 2.52572864430826 +observational 3.88567903008854 3.2188758248682 3.95699637107088 4.69134788222914 2.79116510781272 1.92424865227413 2.87919845729804 6.09807428216624 1.34807314829969 2.77258872223978 4.15575319035074 +observational 4.11087386417331 3.9759363311718 3.31054301339402 3.48124008933569 1.31372366828506 2.25758772706331 3.24649099190117 7.20489251020467 0.350656871613169 2.97552956623647 4.38077585277223 +observational 4.56954300834494 3.8308129500026 2.77881927199042 2.7408400239252 3.45315712059287 1.34807314829969 3.10458667846607 1.71739505393919 1.81645208181843 3.48124008933569 4.29045944114839 +observational 4.00186370942794 3.26575941076705 2.52572864430826 4.54223038621422 2.70136121295141 2.4423470353692 2.92316158071916 6.16120732169508 2.79728133483015 3.18221184049661 1.98787434815435 +observational 4.77068462446567 3.66867674679642 4.19116874685764 4.31748811353631 2.64617479738412 1.4655675420144 2.40694510831829 6.33150184989369 2.90690105984738 3.59731226058845 2.58776403522771 +observational 4.56954300834494 4.02891675689965 3.39114704580865 3.66867674679642 2.77881927199042 2.50143595173921 3.63495111208838 6.90775527898214 2.85070650150373 3.85014760171006 3.13983261752775 +observational 4.48863636973214 3.96651119071222 3.19458313229916 2.9391619220656 1.34807314829969 3.13983261752775 3.75887182593397 6.56526497003536 3.04927304048202 3.63495111208838 2.92316158071916 +observational 3.23080439573347 3.65065824129374 3.06805293513362 3.87743156065853 4.31748811353631 2.94968833505258 3.51749783735832 5.73009978297357 4.48863636973214 4.92725368515721 3.8416005411316 +observational 4.56954300834494 3.8308129500026 3.03974915897077 3.93963817246112 2.67414864942653 3.9759363311718 4.77068462446567 6.78219205600679 1.20597080698861 2.55722731136763 3.41772668361337 +observational 4.13676527810605 3.55248682920838 2.89591193827178 4.89034912822175 3.40119738166216 3.06805293513362 3.18221184049661 5.99893656194668 2.25758772706331 3.05870707271538 2.61006979274201 +observational 2.90690105984738 2.99573227355399 3.85862222870103 4.3267781604434 4.14630430115281 2.58776403522771 2.96010509591084 5.99146454710798 2.96010509591084 3.4626060097908 3.38099467434464 +observational 4.18205014264121 3.48124008933569 2.55722731136763 2.83321334405622 2.54160199346455 2.9338568698359 3.43720781918519 5.8111409929767 1.77155676191054 3.49953328238302 4.92725368515721 +observational 4.44382703557933 3.71357206670431 2.70136121295141 3.47196645255036 3.31054301339402 3.65065824129374 3.85014760171006 6.65544035036765 1.8531680973567 3.13983261752775 4.02891675689965 +observational 4.38077585277223 3.2188758248682 3.59731226058845 3.26575941076705 3.75185425327532 1.59127394180643 2.2935443483419 5.95324333428778 1.69009581545155 3.25424296870549 4.58700621536042 +observational 3.74242022104197 3.00568260440716 2.10413415427021 3.29212628660779 3.17387845893747 2.94968833505258 3.69635146895264 6.04500531403601 3.13113691056019 3.48124008933569 3.19458313229916 +observational 4.11087386417331 2.94968833505258 2.32238772029023 4.22683374526818 3.35340671782581 2.3887627892351 1.87946504964716 5.58724865840025 3.02042488614436 3.77734810210154 3.08648663682246 +observational 2.86220088092947 2.3887627892351 1.80828877117927 5.04342511691925 3.05870707271538 2.84490938381941 3.27336401015227 5.96357934361845 2.85070650150373 3.85014760171006 3.16547504814109 +observational 3.59731226058845 3.10458667846607 3.50855589998265 4.15575319035074 4.83628190695148 2.27521389619791 2.98568193770049 6.31354804627709 3.03974915897077 3.54385368206368 2.73436750941958 +observational 2.68102152871429 2.70136121295141 3.07731226054641 5.11799381241676 3.44361809754611 2.94968833505258 3.4904285153901 5.65599181081985 1.6467336971778 2.7408400239252 4.68213122712422 +observational 2.85070650150373 3.19458313229916 3.24649099190117 3.29212628660779 2.14943391349987 3.06805293513362 3.58905911883173 5.64897423816121 2.83321334405622 3.56104608260405 2.70136121295141 +observational 4.14630430115281 2.3887627892351 4.18205014264121 4.84418708645859 3.39114704580865 3.29212628660779 3.98527346716774 5.82008293035236 3.25424296870549 3.6609942506244 3.02042488614436 +observational 3.56104608260405 2.77258872223978 2.52572864430826 5.05624580534831 3.87743156065853 2.7408400239252 4.76217393479776 7.3125534981026 3.36384159511839 3.8308129500026 2.37024374146786 +observational 4.04830062372069 3.3178157727231 2.67414864942653 5.15329159449778 3.6163087612791 1.71739505393919 2.51769647261099 6.40357419793482 2.76000994003292 3.6163087612791 2.9338568698359 +observational 3.19458313229916 2.7408400239252 2.70805020110221 4.7361984483945 2.76000994003292 2.81540871942271 3.40119738166216 6.90775527898214 2.61006979274201 3.02042488614436 2.85070650150373 +observational 4.24563400976833 3.70622809244855 2.68102152871429 4.90527477843843 3.32862668882732 3.37416870927424 3.75887182593397 5.95324333428778 2.66025953726586 3.18221184049661 2.20386912005489 +observational 4.30811095172371 3.58073729549423 3.80443779474821 3.98527346716774 4.31748811353631 2.36085400111802 3.49953328238302 7.23128700432762 2.36085400111802 3.36384159511839 1.44926916028128 +observational 4.61512051684126 3.56953269648137 2.80336038090653 4.47960696301275 2.82137888640921 3.90399083373088 4.28082412916472 6.59304453414244 2.84490938381941 3.48124008933569 2.88480071284671 +observational 3.72328088083127 2.84490938381941 3.09557760852371 3.04927304048202 2.54160199346455 3.17387845893747 3.53514535417189 5.93753620508243 0 2.58021682959233 2.15871472257434 +observational 4.40671924726425 4.19116874685764 2.43361335540045 2.84490938381941 3.4904285153901 1.66392609771817 2.50959926237837 5.06259503302697 3.24649099190117 4.14630430115281 3.4626060097908 +observational 4.46129981556839 3.64283551561253 2.9338568698359 2.33214389523559 0.908258560176891 2.9704144655697 3.44361809754611 5.94542060860658 2.9338568698359 3.41772668361337 1.24990173621434 +observational 2.64617479738412 1.97823903617067 3.03013370027132 5.04342511691925 2.60268968544438 2.85070650150373 4.46129981556839 5.27299955856375 3.02042488614436 3.64283551561253 2.76000994003292 +observational 4.49758497530815 3.95699637107088 1.03318448334565 2.67414864942653 3.89385903480047 3.64283551561253 4.42484663185681 6.62007320653036 3.23867845216438 3.71357206670431 2.70805020110221 +observational 4.57779898919196 3.72328088083127 3.3178157727231 5.18178355029209 3.87743156065853 2.42480272571829 3.29953372788566 6.26909628370626 1.34025042261848 2.68102152871429 4.22683374526818 +observational 3.29212628660779 2.61739583283408 2.39789527279837 3.55248682920838 3.56953269648137 2.86220088092947 3.66867674679642 6.22455842927536 2.63188884013665 3.40784192438082 2.32238772029023 +observational 4.48863636973214 3.05870707271538 2.61739583283408 3.03013370027132 2.7408400239252 1.19694818938897 2.61739583283408 6.00881318544259 0.576613364303994 0.425267735404344 4.01096295328305 +observational 4.19116874685764 3.17387845893747 2.86789890204411 2.53369681395743 2.99573227355399 3.07731226054641 3.58073729549423 5.59471137960184 3.19458313229916 3.59731226058845 2.42480272571829 +observational 4.85981240436167 3.9759363311718 3.23080439573347 5.94542060860658 4.47049528266149 2.03339760317843 2.09556092355972 5.72031177660741 1.870262530716 3.69635146895264 4.47049528266149 +observational 3.66867674679642 2.96010509591084 3.62434093297637 4.45201900649392 3.8308129500026 1.97823903617067 2.4932054526027 6.39526159811545 3.08648663682246 3.85014760171006 2.87919845729804 +observational 3.2188758248682 2.92316158071916 1.39376637595859 2.484906649788 3.58905911883173 3.39114704580865 3.71357206670431 5.84643877505772 1.75440368268429 2.47653840011748 3.27336401015227 +observational 3.82209829790016 2.96010509591084 1.96990565461153 4.58700621536042 3.39114704580865 1.67335123817775 3.13113691056019 5.89989735358249 3.14845336057165 3.68887945411394 3.04927304048202 +observational 4.12874598893943 3.02042488614436 3.2188758248682 4.04830062372069 2.4932054526027 2.70136121295141 3.06805293513362 6.04500531403601 0 4.48863636973214 0.451075619360217 +observational 4.26267987704132 3.48124008933569 3.00568260440716 4.42484663185681 4.87519732320115 1.57484646766448 3.02042488614436 3.23080439573347 3.17387845893747 3.62434093297637 2.87919845729804 +observational 3.91202300542815 3.45315712059287 1.89761985992753 2.42480272571829 2.70136121295141 2.68784749378469 4.72738781871234 5.19849703126583 2.86220088092947 3.35340671782581 2.2213750375685 +observational 4.62497281328427 3.45315712059287 1.48387468945875 2.55722731136763 3.07731226054641 2.14943391349987 2.90690105984738 6.25958146406492 2.31253542384721 3.50855589998265 4.64439089914137 +observational 4.14630430115281 3.20274644293832 2.41591377830105 2.80336038090653 1.13462272619114 1.86252854011626 2.86220088092947 6.29526600143965 1.24990173621434 2.28442112236637 1.51072193949494 +observational 5.4510384535657 4.19116874685764 2.67414864942653 4.47049528266149 3.01553490085017 2.58776403522771 2.91235066461494 5.88332238848828 0 2.9391619220656 4.07414185490458 +observational 3.6609942506244 3.18221184049661 2.9391619220656 3.60549784517489 2.86220088092947 3.75185425327532 4.38949864951258 6.98007594056176 2.46809953147162 3.58073729549423 2.42480272571829 +observational 4.58700621536042 3.7864597824528 1.79840401194672 3.13983261752775 2.77881927199042 2.484906649788 3.12236492448736 6.30444880242198 3.13113691056019 3.92197333628131 2.73436750941958 +observational 3.6609942506244 3.20274644293832 2.15871472257434 1.870262530716 3.26575941076705 3.12236492448736 3.2846635654062 5.3890717298165 2.37024374146786 3.67882911826043 4.27249074760558 +observational 4.47049528266149 3.38099467434464 3.11351530921037 3.12236492448736 2.63188884013665 3.26575941076705 3.86702563949741 5.73979291217923 2.37954613413017 2.62466859216316 2.26695791535089 +observational 4.3267781604434 3.06805293513362 0 4.27249074760558 0.819779831493311 1.83418018511201 2.7408400239252 6.03548143252476 2.68784749378469 3.36384159511839 2.54160199346455 +observational 4.38077585277223 2.9391619220656 2.75366071235426 4.38949864951258 3.16547504814109 2.05027016437956 2.71469474382088 5.98141421125448 2.99573227355399 3.4904285153901 2.92316158071916 +observational 3.96651119071222 2.9704144655697 2.96010509591084 4.00186370942794 3.85862222870103 3.77734810210154 4.04830062372069 6.49375383985169 2.41591377830105 3.6609942506244 4.58700621536042 +observational 4.15575319035074 2.83321334405622 3.51749783735832 3.56104608260405 2.55722731136763 4.254193263164 4.69134788222914 7.21376830811864 2.27521389619791 3.25424296870549 4.5152454784601 +observational 4.67282883446191 3.80443779474821 2.07819075977818 2.86789890204411 3.82209829790016 2.05923883436232 3.04927304048202 6.21460809842219 1.51072193949494 2.51769647261099 4.24563400976833 +observational 4.0842942263686 2.91235066461494 2.83321334405622 4.33598269617247 2.79116510781272 3.43720781918519 4.0842942263686 6.50279004591562 2.91235066461494 3.94931879017184 2.91235066461494 +observational 4.66343909411207 4.30811095172371 3.88567903008854 4.11903717481247 3.21084365317094 2.77258872223978 3.58905911883173 6.29526600143965 2.04122032885964 3.32862668882732 5.11799381241676 +observational 4.26267987704132 3.70622809244855 2.45958884180371 2.82137888640921 2.67414864942653 2.07819075977818 2.81540871942271 6.48463523563525 3.21084365317094 3.76815263500844 2.66025953726586 +observational 3.06805293513362 2.57261223020711 3.16547504814109 3.19458313229916 2.83321334405622 1.45628673293993 2.40694510831829 5.97126183979046 2.50959926237837 3.32862668882732 3.37416870927424 +observational 5.00394630594546 3.93963817246112 3.51749783735832 4.78749174278205 3.45315712059287 3.38099467434464 3.9926809084456 7.47420480649612 2.94968833505258 3.2846635654062 2.18605127673809 +observational 3.25424296870549 2.50959926237837 2.87919845729804 4.71849887129509 2.89591193827178 2.88480071284671 3.59731226058845 5.84643877505772 1.6094379124341 3.04927304048202 4.04830062372069 +observational 4.16511363311031 3.87743156065853 2.50959926237837 3.40119738166216 3.56104608260405 2.58776403522771 3.55248682920838 5.85507192220243 2.61739583283408 3.43720781918519 2.77881927199042 +observational 3.58905911883173 2.42480272571829 2.7408400239252 2.79728133483015 3.63495111208838 2.72785282839839 3.13113691056019 6.02586597382531 1.42069578783722 2.34180580614733 4.22683374526818 +observational 3.94931879017184 3.2846635654062 2.55722731136763 3.79548918917219 1.50185270175416 3.40784192438082 3.91202300542815 5.71042701737487 2.88480071284671 3.10458667846607 2.33214389523559 +observational 3.07731226054641 2.02419306744936 2.26695791535089 5.73009978297357 3.64283551561253 2.46809953147162 3.38099467434464 5.87211778947542 2.09556092355972 2.84490938381941 4.49758497530815 +observational 4.54223038621422 3.58073729549423 2.86789890204411 2.66025953726586 2.56494935746154 3.15700042115011 3.68887945411394 5.7037824746562 2.58021682959233 3.20274644293832 2.56494935746154 +observational 4.03777421073371 3.02042488614436 2.61006979274201 4.47960696301275 3.40119738166216 3.19458313229916 3.48124008933569 6.02586597382531 3.23080439573347 3.72328088083127 2.79728133483015 +observational 4.19116874685764 2.77881927199042 2.39789527279837 4.31748811353631 2.66025953726586 2.58021682959233 3.37416870927424 6.14418563412565 3.21084365317094 3.90399083373088 3.37416870927424 +observational 3.3178157727231 2.83321334405622 2.41591377830105 4.59612944133594 3.91202300542815 3.39114704580865 3.92197333628131 7.20489251020467 3.23080439573347 3.96651119071222 2.58021682959233 +observational 3.89385903480047 3.50855589998265 3.07731226054641 2.98568193770049 2.31253542384721 3.23080439573347 3.66867674679642 5.99146454710798 3.24649099190117 3.51749783735832 3.03974915897077 +observational 5.05624580534831 3.94931879017184 2.50959926237837 3.07731226054641 3.81330703248899 1.79009141212736 3.81330703248899 3.89385903480047 2.05027016437956 2.33214389523559 3.71357206670431 +observational 4.82028156560504 3.50855589998265 2.60268968544438 2.79116510781272 2.86220088092947 2.77881927199042 3.2188758248682 6.14418563412565 2.24812890719799 3.18221184049661 5.5683445037611 +observational 3.63495111208838 2.79728133483015 3.54385368206368 3.66867674679642 1.92424865227413 0.928219302739429 2.63188884013665 5.47646355193151 1.4036429994545 4.07414185490458 4.48863636973214 +observational 3.81330703248899 3.23867845216438 3.09557760852371 2.71469474382088 2.58776403522771 2.50959926237837 3.13113691056019 6.16120732169508 0.717839793150317 3.15700042115011 4.66343909411207 +observational 5.09375020080676 4.46129981556839 3.49953328238302 3.98527346716774 2.73436750941958 3.69635146895264 3.9759363311718 5.75574221358691 2.9391619220656 3.65065824129374 2.58021682959233 +observational 4.13676527810605 3.51749783735832 2.14943391349987 3.6163087612791 3.80443779474821 1.6094379124341 1.45628673293993 5.99146454710798 3.20274644293832 3.81330703248899 3.35340671782581 +observational 3.27336401015227 2.72785282839839 3.77734810210154 3.77734810210154 2.58776403522771 1.79840401194672 3.08648663682246 6.94408720822953 3.42751468997953 4.11087386417331 2.65324196460721 +observational 3.95699637107088 3.39114704580865 2.58776403522771 4.44382703557933 4.47960696301275 2.47653840011748 3.47196645255036 7.27655640271871 2.9704144655697 3.77734810210154 3.03013370027132 +observational 4.39814601655377 3.21084365317094 3.06805293513362 3.2188758248682 1.51072193949494 5.19849703126583 5.51342874616498 6.43133108193348 2.72785282839839 3.52636052461616 3.09557760852371 +observational 4.56017282005736 3.64283551561253 1.6094379124341 5.63835466933375 4.16511363311031 3.27336401015227 3.81330703248899 6.20657592672493 3.26575941076705 3.88567903008854 2.34180580614733 +observational 4.38077585277223 3.38099467434464 1.61938824328727 4.76217393479776 2.85070650150373 3.40119738166216 4.26267987704132 6.71901315438526 2.1770218700187 3.09557760852371 2.53369681395743 +observational 2.85070650150373 2.68102152871429 2.71469474382088 4.79579054559674 3.42751468997953 2.34180580614733 2.68784749378469 6.57507584059962 2.77258872223978 3.27336401015227 2.12226153886276 +observational 3.93963817246112 3.63495111208838 3.75185425327532 4.30000279919529 3.58905911883173 2.7408400239252 3.56953269648137 7.10578612948127 0.683096844706444 2.86789890204411 4.34380542185368 +observational 3.65065824129374 1.98787434815435 1.14103300455206 2.83321334405622 2.86220088092947 3.38099467434464 3.73289633953071 6.1527326947041 3.31054301339402 3.75887182593397 2.77258872223978 +observational 3.96651119071222 3.9759363311718 1.2947271675944 2.61006979274201 3.75185425327532 3.60549784517489 4.13676527810605 6.90775527898214 2.51769647261099 3.15700042115011 3.16547504814109 +observational 4.5152454784601 3.69635146895264 2.83321334405622 3.64283551561253 0.398776119957368 2.35137525716348 3.29953372788566 6.91671502035361 3.39114704580865 3.91202300542815 3.50855589998265 +observational 3.63495111208838 2.65324196460721 2.58776403522771 3.4904285153901 2.4932054526027 2.88480071284671 3.75887182593397 6.18826412308259 0.746687947487975 3.21084365317094 4.20020495292158 +observational 4.01096295328305 2.9338568698359 2.01490302054226 3.48124008933569 2.61006979274201 4.01998014693324 4.57779898919196 7.87016594646984 2.31253542384721 3.42751468997953 4.06560209335645 +observational 3.79548918917219 3.21084365317094 2.7408400239252 5.18178355029209 3.81330703248899 3.04927304048202 4.04830062372069 6.88959130835447 0 4.06560209335645 2.13179677201376 +observational 4.254193263164 3.40119738166216 3.01553490085017 2.85070650150373 2.61739583283408 2.94968833505258 3.60549784517489 5.85507192220243 2.83321334405622 3.9759363311718 3.10458667846607 +observational 3.85862222870103 3.41772668361337 2.98568193770049 3.07731226054641 3.45315712059287 3.49953328238302 4.47049528266149 5.99146454710798 1.35840915763035 3.60549784517489 4.56954300834494 +observational 4.15575319035074 3.07731226054641 3.12236492448736 5.21493575760899 3.58905911883173 3.02042488614436 3.26575941076705 5.88332238848828 1.37624402526639 2.98568193770049 4.38949864951258 +observational 3.15700042115011 3.75887182593397 2.4932054526027 3.37416870927424 3.31054301339402 0.405465108108164 2.14124194258528 5.03695260241363 3.03013370027132 3.58905911883173 2.60268968544438 +observational 1.65441127807683 2.71469474382088 3.09557760852371 4.54223038621422 2.04122032885964 4.89034912822175 5.6937321388027 6.99759598298193 2.23964529322017 2.97552956623647 1.42069578783722 +observational 2.67414864942653 2.73436750941958 0 4.76217393479776 1.24990173621434 2.77258872223978 3.38099467434464 6.12468339089421 3.01553490085017 3.87743156065853 2.77258872223978 +observational 3.60549784517489 2.24812890719799 2.50143595173921 2.53369681395743 2.76000994003292 2.99573227355399 3.40119738166216 5.6021188208797 2.4932054526027 3.26575941076705 4.45201900649392 +observational 4.57779898919196 3.23080439573347 2.86789890204411 2.55722731136763 2.85070650150373 1.94304891677428 2.2213750375685 5.8636311755981 2.53369681395743 3.14845336057165 3.03974915897077 +observational 2.79116510781272 2.4932054526027 4.20916023665068 5.00394630594546 3.67882911826043 3.76815263500844 4.16511363311031 6.93439720992856 2.25758772706331 2.73436750941958 4.20916023665068 +observational 3.79548918917219 3.44361809754611 3.49953328238302 5.21493575760899 4.07414185490458 3.48124008933569 3.76815263500844 5.65599181081985 0 4.0842942263686 1.30291275218084 +observational 4.21803603456465 3.9759363311718 2.86220088092947 4.57779898919196 3.62434093297637 3.09557760852371 3.60549784517489 5.80211837537706 1.69009581545155 2.71469474382088 4.55071400019203 +observational 4.0842942263686 3.3357695763397 2.9391619220656 4.39814601655377 2.89591193827178 4.38077585277223 5.10594547390058 7.66340766489348 2.14943391349987 2.83321334405622 2.02419306744936 +observational 3.25424296870549 2.84490938381941 3.06805293513362 3.18221184049661 3.60549784517489 2.72785282839839 3.47196645255036 5.74620319054015 2.2935443483419 2.9338568698359 2.2213750375685 +observational 3.68887945411394 3.4904285153901 2.42480272571829 4.58700621536042 2.9704144655697 3.68887945411394 4.3267781604434 5.89989735358249 2.96010509591084 3.51749783735832 2.68784749378469 +observational 4.10098910494077 3.21084365317094 2.83321334405622 5.82008293035236 4.10098910494077 2.54160199346455 3.2188758248682 6.20657592672493 2.2935443483419 3.02042488614436 2.25758772706331 +observational 3.92197333628131 3.20274644293832 2.83321334405622 4.91265488573605 3.40119738166216 4.05698877567833 4.5152454784601 7.3304052118444 0.431782416425538 3.14845336057165 4.0926765051214 +observational 3.43720781918519 2.9338568698359 1.81645208181843 5.25227342804663 2.56494935746154 2.36085400111802 3.08648663682246 6.14418563412565 2.61739583283408 3.2846635654062 2.70805020110221 +observational 2.41591377830105 2.88480071284671 2.86220088092947 2.71469474382088 3.37416870927424 2.54160199346455 2.96010509591084 5.80211837537706 2.9338568698359 3.21084365317094 2.3887627892351 +observational 3.66867674679642 3.34638914516716 3.13983261752775 2.65324196460721 3.19458313229916 4.52396013056255 5.45958551414416 7.4205789054108 2.08691355651854 2.96010509591084 2.91235066461494 +observational 4.28082412916472 3.29953372788566 2.91235066461494 3.6163087612791 3.24649099190117 1.98787434815435 3.14845336057165 6.98007594056176 1.95160817016995 3.05870707271538 3.56953269648137 +observational 4.12874598893943 2.77881927199042 3.2188758248682 5.93753620508243 4.36182392735636 3.44361809754611 3.91202300542815 5.83773044716594 2.64617479738412 3.00568260440716 2.26695791535089 +observational 2.54160199346455 2.55722731136763 3.41772668361337 3.4904285153901 2.97552956623647 1.21491274436427 2.64617479738412 5.95324333428778 3.4626060097908 4.0842942263686 3.3357695763397 +observational 3.90399083373088 2.88480071284671 2.01490302054226 2.40694510831829 1.10525683138678 4.20916023665068 4.85981240436167 6.60258789218934 2.83321334405622 3.45315712059287 2.05027016437956 +observational 4.13676527810605 3.12236492448736 2.57261223020711 4.8283137373023 2.33214389523559 1.74571553072665 3.11351530921037 6.03548143252476 2.85070650150373 3.48124008933569 2.51769647261099 +observational 2.37954613413017 1.67335123817775 3.17387845893747 3.89385903480047 2.55722731136763 2.39789527279837 3.13113691056019 6.18001665365257 0.854415328156068 3.04927304048202 4.45201900649392 +observational 4.30811095172371 3.27336401015227 2.60268968544438 3.59731226058845 3.91202300542815 1.44926916028128 2.84490938381941 4.254193263164 1.09861228866811 2.68784749378469 4.52396013056255 +observational 4.29045944114839 3.07731226054641 1.9154509415706 5.36129216570943 3.15700042115011 2.80336038090653 2.94968833505258 6.06145691892802 0.512823626428664 3.80443779474821 1.09861228866811 +observational 2.3887627892351 1.8531680973567 2.81540871942271 4.97673374242057 3.50855589998265 2.14943391349987 2.39789527279837 5.72031177660741 0.470003629245736 2.62466859216316 4.13676527810605 +observational 4.01096295328305 2.9391619220656 2.39789527279837 4.81218435537242 2.47653840011748 2.4423470353692 3.17387845893747 6.04500531403601 2.41591377830105 3.23080439573347 2.65324196460721 +observational 4.03777421073371 2.63188884013665 2.91235066461494 2.60268968544438 2.7408400239252 1.73518911773966 3.40784192438082 6.28785856016178 2.88480071284671 3.67882911826043 2.68102152871429 +observational 4.57779898919196 4.11903717481247 2.46809953147162 5.10594547390058 3.54385368206368 3.20274644293832 3.4626060097908 6.07073772800249 2.9704144655697 3.56104608260405 3.06805293513362 +observational 3.81330703248899 2.9704144655697 2.96010509591084 3.85014760171006 4.45201900649392 1.26694760348732 3.40119738166216 7.02464903045364 2.86220088092947 3.79548918917219 5.05624580534831 +observational 3.81330703248899 2.80336038090653 2.83321334405622 4.49758497530815 3.85014760171006 2.9704144655697 3.8308129500026 6.00881318544259 2.40694510831829 3.3178157727231 4.80402104473326 +observational 5.51342874616498 5.6021188208797 2.87919845729804 3.52636052461616 3.6609942506244 3.06805293513362 3.65065824129374 6.10702288774225 0.951657875711446 3.56953269648137 1.32175583998232 +observational 4.06560209335645 3.52636052461616 2.98568193770049 5.0998664278242 3.58073729549423 3.02042488614436 3.50855589998265 5.74620319054015 2.64617479738412 3.47196645255036 2.63188884013665 +observational 4.71849887129509 3.8308129500026 2.37954613413017 4.89034912822175 2.2213750375685 1.41098697371026 2.37954613413017 6.31354804627709 3.29212628660779 3.98527346716774 3.25424296870549 +observational 2.77258872223978 2.70805020110221 2.88480071284671 5.03043792139244 3.56104608260405 2.55722731136763 3.56953269648137 6.12468339089421 2.41591377830105 3.24649099190117 0.173953307123438 +observational 4.20916023665068 3.45315712059287 3.2846635654062 2.60268968544438 2.84490938381941 3.43720781918519 3.92197333628131 5.68357976733868 2.77881927199042 3.58073729549423 0 +observational 3.66867674679642 2.76000994003292 2.80336038090653 3.13113691056019 2.85070650150373 2.39789527279837 3.36384159511839 5.73979291217923 1.32175583998232 2.06812778177956 2.12226153886276 +observational 4.22683374526818 3.19458313229916 3.03013370027132 4.15575319035074 3.26575941076705 3.29953372788566 3.49953328238302 5.97126183979046 1.08856195281461 2.61006979274201 4.05698877567833 +observational 4.0926765051214 3.68887945411394 1.86252854011626 5.27811465923052 3.25424296870549 4.56017282005736 4.96284463025991 7.43838353004431 2.82137888640921 3.85862222870103 2.81540871942271 +observational 4.47960696301275 4.20916023665068 3.59731226058845 4.07414185490458 4.77912349311153 2.54160199346455 3.58905911883173 6.06145691892802 3.64283551561253 4.91265488573605 4.01998014693324 +observational 2.57261223020711 2.41591377830105 3.74242022104197 5.03695260241363 4.16511363311031 3.04927304048202 3.55248682920838 5.47646355193151 1.68268837417369 2.84490938381941 4.30000279919529 +observational 4.59612944133594 3.92197333628131 2.68102152871429 4.33598269617247 3.40119738166216 1.36609165380237 2.484906649788 5.83773044716594 2.61006979274201 3.38099467434464 2.484906649788 +observational 3.9759363311718 2.92316158071916 3.12236492448736 4.01998014693324 3.04927304048202 2.86789890204411 2.84490938381941 6.10702288774225 3.37416870927424 3.7864597824528 3.08648663682246 +observational 4.91998092582813 3.91202300542815 2.11384296839717 3.37416870927424 2.67414864942653 1.94304891677428 2.88480071284671 5.63835466933375 1.43031124653666 3.15700042115011 4.81218435537242 +observational 3.79548918917219 2.98568193770049 2.98568193770049 4.49758497530815 3.86702563949741 1.36609165380237 2.9391619220656 6.49375383985169 1.45628673293993 3.07731226054641 4.83628190695148 +observational 5.54126354515843 4.45201900649392 2.99573227355399 4.29045944114839 3.55248682920838 1.97823903617067 2.83321334405622 5.77455154554441 2.54160199346455 3.04927304048202 3.26575941076705 +observational 4.01096295328305 3.2188758248682 3.44361809754611 4.58700621536042 3.56104608260405 1.09861228866811 1.79840401194672 3.3178157727231 1.71739505393919 2.89591193827178 2.00552585872967 +observational 4.30811095172371 3.54385368206368 2.63188884013665 2.84490938381941 2.37954613413017 2.23108909128898 3.48124008933569 7.15929190479756 3.59731226058845 4.29045944114839 3.51749783735832 +observational 4.76217393479776 3.89385903480047 0 5.98141421125448 3.49953328238302 2.50143595173921 3.32862668882732 6.30444880242198 0.871293365943419 3.09557760852371 4.58700621536042 +observational 3.79548918917219 3.27336401015227 2.58021682959233 4.24563400976833 2.56494935746154 2.76000994003292 2.96010509591084 5.44241771052179 3.56953269648137 4.00186370942794 3.31054301339402 +observational 4.47049528266149 4.00186370942794 3.02042488614436 5.17048399503815 3.51749783735832 2.33214389523559 3.10458667846607 6.05443934626937 3.29953372788566 3.31054301339402 0.548121408509688 +observational 3.47196645255036 2.70136121295141 2.61739583283408 2.55722731136763 2.7408400239252 2.20386912005489 3.06805293513362 6.26909628370626 2.2935443483419 3.14845336057165 4.56017282005736 +observational 3.6163087612791 2.67414864942653 3.29212628660779 2.85070650150373 2.58021682959233 3.18221184049661 3.45315712059287 5.7037824746562 2.50143595173921 3.53514535417189 2.91235066461494 +observational 3.92986292355648 3.19458313229916 4.22683374526818 4.91998092582813 3.92986292355648 3.12236492448736 3.69635146895264 6.20657592672493 3.75185425327532 4.30811095172371 5.29831736654804 +observational 3.38099467434464 3.01553490085017 3.56104608260405 3.49953328238302 3.6609942506244 3.2846635654062 3.85014760171006 5.82894561761021 3.4904285153901 3.98527346716774 2.94968833505258 +observational 3.87743156065853 2.00552585872967 2.7408400239252 4.70048036579242 3.88567903008854 1.33236601909433 2.83321334405622 6.18001665365257 1.95160817016995 3.44361809754611 4.52396013056255 +observational 4.17284762371004 3.55248682920838 1.78170913337455 2.42480272571829 3.26575941076705 4.22683374526818 4.66343909411207 6.42162226780652 2.71469474382088 3.69635146895264 3.29212628660779 +observational 3.4904285153901 3.17387845893747 3.16547504814109 2.9338568698359 1.7630170003624 3.50855589998265 4.01096295328305 6.69208374250663 2.72785282839839 3.6163087612791 3.06805293513362 +observational 3.27336401015227 2.83321334405622 3.94931879017184 3.86702563949741 2.10413415427021 3.13113691056019 3.63495111208838 5.54907608489522 3.92986292355648 4.27249074760558 3.32862668882732 +observational 4.24563400976833 3.52636052461616 3.18221184049661 4.27249074760558 2.86789890204411 2.58021682959233 3.20274644293832 5.57594910314632 2.89591193827178 3.72328088083127 3.15700042115011 +observational 3.82209829790016 2.90690105984738 2.15871472257434 2.91235066461494 4.16511363311031 2.36085400111802 2.70136121295141 6.06145691892802 2.77881927199042 3.25424296870549 2.35137525716348 +observational 4.87519732320115 3.6163087612791 2.94968833505258 4.57779898919196 3.40784192438082 3.18221184049661 3.38099467434464 5.74620319054015 2.77258872223978 2.94968833505258 2.91235066461494 +observational 4.66343909411207 3.64283551561253 2.21266038546606 3.18221184049661 3.47196645255036 2.90690105984738 3.41772668361337 6.52941883826223 2.4932054526027 3.3357695763397 2.97552956623647 +observational 4.22683374526818 3.3357695763397 2.79728133483015 4.97673374242057 2.80336038090653 2.37024374146786 3.16547504814109 6.35088571671474 1.43031124653666 3.42751468997953 4.0926765051214 +observational 4.0842942263686 3.2846635654062 2.31253542384721 4.42484663185681 0.494696241836107 1.9154509415706 3.06805293513362 5.84643877505772 1.43031124653666 3.14845336057165 3.51749783735832 +observational 3.85014760171006 2.83321334405622 3.74242022104197 4.26267987704132 3.79548918917219 2.37954613413017 4.04830062372069 6.28785856016178 3.29212628660779 3.91202300542815 2.72785282839839 +observational 4.03777421073371 3.58073729549423 2.21266038546606 3.42751468997953 2.73436750941958 3.63495111208838 4.65396035015752 7.39326309476384 3.07731226054641 3.41772668361337 2.98568193770049 +observational 3.34638914516716 2.53369681395743 3.04927304048202 3.44361809754611 3.81330703248899 3.58905911883173 4.10098910494077 6.72743172485086 1.43031124653666 2.76000994003292 4.50645421304893 +observational 3.56104608260405 2.94968833505258 3.35340671782581 4.19116874685764 4.10098910494077 0.99694863489161 3.04927304048202 6.39526159811545 1.16002091679675 2.66025953726586 4.50645421304893 +observational 3.85014760171006 3.18221184049661 2.87919845729804 5.54907608489522 4.3267781604434 2.05027016437956 3.37416870927424 6.8627579130514 2.37954613413017 3.41772668361337 2.4423470353692 +observational 4.14630430115281 2.9391619220656 3.02042488614436 2.73436750941958 2.23108909128898 3.04927304048202 4.72738781871234 7.00669522683704 3.16547504814109 4.02891675689965 2.58776403522771 +observational 4.13676527810605 3.04927304048202 1.79840401194672 5.34233425196481 3.21084365317094 1.61938824328727 2.91235066461494 6.36818718635049 1.02604159583327 2.51769647261099 2.11384296839717 +observational 2.65324196460721 2.45958884180371 3.21084365317094 3.6609942506244 4.14630430115281 1.80828877117927 2.65324196460721 5.87211778947542 2.37024374146786 3.40784192438082 2.36085400111802 +observational 3.98527346716774 3.03013370027132 2.79728133483015 2.72785282839839 0.357674444271816 2.4932054526027 2.91235066461494 6.23244801655052 2.26695791535089 3.9759363311718 5.37989735354046 +observational 4.22683374526818 3.3178157727231 2.86220088092947 4.40671924726425 2.92316158071916 1.92424865227413 3.18221184049661 5.88332238848828 0.0953101798043249 4.11903717481247 2.64617479738412 +observational 4.77912349311153 4.16511363311031 2.35137525716348 3.98527346716774 3.35340671782581 2.15871472257434 3.50855589998265 7.81601383915903 1.08856195281461 3.4626060097908 4.36182392735636 +observational 3.73289633953071 2.40694510831829 2.70136121295141 2.92316158071916 4.20020495292158 1.9154509415706 3.52636052461616 6.54821910276237 2.58776403522771 3.10458667846607 2.40694510831829 +observational 3.80443779474821 3.07731226054641 2.70805020110221 3.88567903008854 3.75887182593397 0.951657875711446 3.03974915897077 6.02586597382531 2.63188884013665 3.31054301339402 2.2935443483419 +observational 4.28082412916472 3.6609942506244 0 6.30444880242198 2.41591377830105 1.30291275218084 2.61739583283408 5.83773044716594 2.72785282839839 3.68887945411394 2.90690105984738 +observational 3.9759363311718 3.54385368206368 1.06125650212434 0.104360015324243 6.63856778916652 2.15871472257434 2.54160199346455 5.3890717298165 3.20274644293832 4.15575319035074 4.91998092582813 +observational 3.4626060097908 2.9391619220656 4.47049528266149 4.86753445045558 3.44361809754611 2.02419306744936 3.20274644293832 6.25958146406492 2.24812890719799 3.16547504814109 2.79116510781272 +observational 4.76217393479776 4.0842942263686 2.37954613413017 5.64897423816121 3.13983261752775 3.04927304048202 3.41772668361337 5.72031177660741 1.96009478404727 3.04927304048202 3.48124008933569 +observational 3.81330703248899 3.4904285153901 3.29212628660779 4.91998092582813 3.62434093297637 1.12492959698548 2.4423470353692 6.47543271670409 0.845868267577609 3.45315712059287 4.04830062372069 +observational 3.8416005411316 3.40119738166216 2.55722731136763 2.81540871942271 2.65324196460721 2.31253542384721 2.81540871942271 5.5683445037611 3.48124008933569 4.56954300834494 3.24649099190117 +observational 3.41772668361337 2.18605127673809 5.09375020080676 5.93753620508243 4.31748811353631 2.58021682959233 2.80336038090653 6.24222326545517 2.9704144655697 3.27336401015227 2.87919845729804 +observational 3.73289633953071 2.484906649788 2.40694510831829 3.36384159511839 3.58073729549423 1.83418018511201 3.13113691056019 3.19458313229916 1.02604159583327 2.73436750941958 4.42484663185681 +observational 4.62497281328427 3.64283551561253 3.62434093297637 5.4971682252932 4.30000279919529 2.70136121295141 2.72785282839839 6.14418563412565 1.66392609771817 3.41772668361337 4.80402104473326 +observational 3.49953328238302 3.26575941076705 3.16547504814109 5.12396397940326 3.76815263500844 4.74493212836325 5.34233425196481 6.67329796776765 2.99573227355399 2.89591193827178 2.51769647261099 +observational 3.7864597824528 3.50855589998265 2.75366071235426 3.05870707271538 2.7408400239252 2.05027016437956 2.94968833505258 6.08904487544685 0.854415328156068 2.86220088092947 4.41642806139121 +observational 2.72785282839839 2.70136121295141 2.9391619220656 2.87919845729804 2.64617479738412 3.08648663682246 3.16547504814109 5.68357976733868 2.11384296839717 2.88480071284671 2.37024374146786 +observational 4.45201900649392 3.44361809754611 2.26695791535089 4.30000279919529 2.37954613413017 1.78170913337455 2.88480071284671 6.08904487544685 3.10458667846607 3.8416005411316 3.4904285153901 +observational 3.48124008933569 3.29953372788566 3.12236492448736 3.11351530921037 3.11351530921037 3.08648663682246 3.49953328238302 6.23244801655052 3.04927304048202 3.51749783735832 2.2213750375685 +observational 4.00186370942794 2.96010509591084 3.58905911883173 3.91202300542815 3.34638914516716 2.4932054526027 3.36384159511839 5.68357976733868 2.77881927199042 3.3178157727231 2.70805020110221 +observational 3.68887945411394 3.16547504814109 2.66025953726586 2.98568193770049 2.61739583283408 0.548121408509688 1.73518911773966 2.82137888640921 3.15700042115011 3.75185425327532 2.4423470353692 +observational 3.59731226058845 2.80336038090653 2.7408400239252 3.47196645255036 2.24812890719799 1.20597080698861 1.69009581545155 5.54907608489522 3.29212628660779 3.85014760171006 4.19116874685764 +observational 3.96651119071222 3.91202300542815 3.53514535417189 4.56017282005736 4.27249074760558 3.38099467434464 4.17284762371004 6.11589212548303 2.50959926237837 3.09557760852371 3.05870707271538 +observational 4.39814601655377 4.11903717481247 3.01553490085017 3.25424296870549 2.61739583283408 3.70622809244855 3.91202300542815 6.04500531403601 2.41591377830105 3.34638914516716 2.67414864942653 +observational 2.60268968544438 3.40119738166216 3.21084365317094 5.54126354515843 4.11903717481247 3.39114704580865 3.79548918917219 5.44241771052179 2.96010509591084 3.56104608260405 2.71469474382088 +observational 2.86220088092947 3.38099467434464 3.31054301339402 3.13113691056019 3.18221184049661 3.11351530921037 3.37416870927424 6.04500531403601 3.29212628660779 3.7864597824528 1.44926916028128 +observational 3.64283551561253 3.25424296870549 3.82209829790016 3.67882911826043 2.57261223020711 3.00568260440716 3.75185425327532 5.89164421182577 1.23256026117785 2.56494935746154 3.96651119071222 +observational 4.64439089914137 3.26575941076705 2.43361335540045 2.47653840011748 3.09557760852371 2.25758772706331 2.70805020110221 5.85507192220243 0.307484699747961 3.4626060097908 0 +observational 3.6163087612791 2.4932054526027 3.44361809754611 3.08648663682246 2.30258509299405 2.484906649788 3.10458667846607 5.91889385427315 1.20597080698861 2.34180580614733 4.3267781604434 +observational 3.95699637107088 3.71357206670431 3.2188758248682 3.98527346716774 2.96010509591084 2.2935443483419 2.99573227355399 6.41345895716736 0 3.96651119071222 2.18605127673809 +observational 4.38949864951258 3.23867845216438 2.46809953147162 4.56954300834494 2.26695791535089 1.01523067972906 2.92316158071916 2.58776403522771 3.00568260440716 3.68887945411394 2.83321334405622 +observational 5.4249500174814 3.74242022104197 2.79116510781272 4.13676527810605 2.45958884180371 0.871293365943419 3.26575941076705 6.33150184989369 0.819779831493311 3.3357695763397 3.02042488614436 +observational 3.50855589998265 1.49290409617815 2.84490938381941 3.40119738166216 3.35340671782581 3.36384159511839 4.01998014693324 6.06145691892802 3.32862668882732 3.62434093297637 2.52572864430826 +observational 3.4626060097908 2.77258872223978 2.05027016437956 3.18221184049661 4.45201900649392 1.74571553072665 1.95160817016995 5.67675380226828 2.36085400111802 3.40784192438082 2.4932054526027 +observational 4.30000279919529 3.23080439573347 2.73436750941958 4.78749174278205 2.53369681395743 1.56444054650336 2.9338568698359 6.09807428216624 1.55603713570699 2.72785282839839 4.7361984483945 +observational 4.01096295328305 4.01998014693324 2.25758772706331 6.24222326545517 3.98527346716774 2.07819075977818 2.72785282839839 6.52941883826223 2.66025953726586 3.2846635654062 2.4423470353692 +observational 3.62434093297637 3.08648663682246 1.99741770620125 3.14845336057165 4.05698877567833 2.18605127673809 2.66025953726586 5.92692602597041 2.91235066461494 3.8308129500026 3.56104608260405 +observational 3.2188758248682 2.80336038090653 2.23108909128898 2.9704144655697 1.25846098961001 4.66343909411207 5.14749447681345 7.44716835960004 2.42480272571829 3.12236492448736 2.81540871942271 +observational 4.254193263164 3.49953328238302 2.10413415427021 6.21460809842219 4.53367418428302 3.86702563949741 4.47960696301275 6.96129604591017 0.928219302739429 2.4932054526027 4.47049528266149 +observational 3.43720781918519 3.00568260440716 3.17387845893747 5.99146454710798 4.70048036579242 2.21266038546606 2.58021682959233 6.34035930372775 3.44361809754611 4.38949864951258 4.66343909411207 +observational 3.85862222870103 2.64617479738412 2.23108909128898 3.01553490085017 3.26575941076705 1.83418018511201 2.11384296839717 5.95324333428778 2.66025953726586 3.23080439573347 2.70136121295141 +observational 4.46129981556839 3.89385903480047 2.88480071284671 1.59127394180643 2.72785282839839 2.37954613413017 2.83321334405622 5.64897423816121 3.05870707271538 3.6163087612791 2.41591377830105 +observational 4.78749174278205 3.81330703248899 2.92316158071916 4.72738781871234 3.23867845216438 2.80336038090653 3.64283551561253 7.01571242048723 2.77258872223978 3.44361809754611 1.87946504964716 +observational 3.93963817246112 3.63495111208838 2.99573227355399 2.96010509591084 3.24649099190117 2.35137525716348 3.79548918917219 6.63856778916652 2.86220088092947 3.60549784517489 2.66025953726586 +observational 3.3178157727231 3.26575941076705 2.90690105984738 4.17284762371004 3.7864597824528 3.06805293513362 3.42751468997953 7.05185562295589 2.89591193827178 3.43720781918519 2.19499988231411 +observational 3.74242022104197 2.82137888640921 2.80336038090653 5.09375020080676 2.16791018966744 2.54160199346455 3.41772668361337 6.08904487544685 2.2935443483419 2.86789890204411 2.86789890204411 +observational 3.47196645255036 3.34638914516716 3.67882911826043 3.23867845216438 2.4423470353692 2.68784749378469 3.20274644293832 5.76519110278484 3.20274644293832 3.7864597824528 2.98568193770049 +observational 3.64283551561253 3.18221184049661 3.3357695763397 3.09557760852371 3.40119738166216 3.23867845216438 3.86702563949741 7.07834157955767 3.23080439573347 3.98527346716774 3.66867674679642 +observational 4.01998014693324 3.29212628660779 3.35340671782581 2.24812890719799 3.91202300542815 3.2188758248682 3.76815263500844 6.07993319509559 1.34807314829969 2.97552956623647 3.64283551561253 +observational 3.85862222870103 3.23867845216438 2.7408400239252 3.56953269648137 1.2947271675944 2.70136121295141 2.91235066461494 6.60258789218934 1.5830939370945 2.73436750941958 4.33598269617247 +observational 3.70622809244855 2.84490938381941 2.71469474382088 2.7408400239252 1.28647402583768 2.45958884180371 3.04927304048202 6.24222326545517 3.19458313229916 3.91202300542815 4.77912349311153 +observational 2.36085400111802 2.64617479738412 3.34638914516716 2.88480071284671 2.51769647261099 2.86789890204411 3.24649099190117 5.89989735358249 1.51951320490611 2.52572864430826 3.69635146895264 +observational 4.52396013056255 3.40784192438082 2.81540871942271 4.34380542185368 4.01998014693324 2.06812778177956 3.29212628660779 6.33150184989369 0.989541193613748 2.58776403522771 4.11903717481247 +observational 3.50855589998265 2.54160199346455 3.06805293513362 3.87743156065853 3.13113691056019 3.09557760852371 3.39114704580865 5.62040086571715 1.24126858906963 2.42480272571829 3.19458313229916 +observational 3.24649099190117 2.05923883436232 3.72328088083127 3.38099467434464 3.23867845216438 2.86789890204411 3.35340671782581 5.80211837537706 2.67414864942653 3.3178157727231 2.62466859216316 +observational 4.14630430115281 3.48124008933569 3.09557760852371 5.67675380226828 3.56104608260405 1.42069578783722 2.11384296839717 5.0998664278242 2.62466859216316 3.3178157727231 0.0198026272961797 +observational 4.18205014264121 3.36384159511839 2.47653840011748 4.64439089914137 3.35340671782581 2.61006979274201 3.08648663682246 5.82008293035236 2.58776403522771 3.50855589998265 2.86220088092947 +observational 3.93963817246112 4.0842942263686 3.74242022104197 5.18178355029209 4.19116874685764 1.75440368268429 3.12236492448736 6.24222326545517 2.28442112236637 2.90690105984738 1.38629436111989 +observational 4.18205014264121 3.87743156065853 2.88480071284671 4.53367418428302 3.23080439573347 2.23108909128898 2.47653840011748 6.19644412779452 1.05082162483176 2.75366071235426 4.04830062372069 +observational 2.58776403522771 3.03013370027132 2.92316158071916 4.99043258677874 3.56953269648137 4.23700086262362 4.70048036579242 7.15070145759253 1.74571553072665 2.80336038090653 2.82137888640921 +observational 4.7361984483945 3.67882911826043 2.64617479738412 4.31748811353631 3.49953328238302 1.90657514365664 3.14845336057165 6.60258789218934 2.58776403522771 3.56104608260405 2.54160199346455 +observational 4.94875989037817 4.18205014264121 3.8416005411316 5.62040086571715 4.71849887129509 3.68887945411394 4.02891675689965 6.61069604471776 2.70805020110221 3.2846635654062 3.03013370027132 +observational 3.77734810210154 2.96010509591084 3.16547504814109 3.54385368206368 2.98568193770049 2.99573227355399 3.58073729549423 6.41345895716736 0.300104592450338 4.53367418428302 2.12226153886276 +observational 1.34025042261848 2.68102152871429 2.76000994003292 2.18605127673809 2.33214389523559 2.53369681395743 3.29212628660779 5.73009978297357 3.8416005411316 4.3528552573736 3.80443779474821 +observational 4.53367418428302 4.38949864951258 3.05870707271538 2.84490938381941 2.91235066461494 3.35340671782581 3.76815263500844 5.73979291217923 2.10413415427021 2.91235066461494 1.66392609771817 +observational 3.91202300542815 3.3357695763397 3.10458667846607 3.35340671782581 2.96010509591084 2.27521389619791 3.66867674679642 7.29437729928882 3.39114704580865 4.0926765051214 3.12236492448736 +observational 4.49758497530815 2.83321334405622 3.03974915897077 4.45201900649392 3.39114704580865 0 1.15057202759882 5.51342874616498 2.79116510781272 3.36384159511839 2.97552956623647 +observational 2.84490938381941 2.71469474382088 3.05870707271538 3.09557760852371 2.99573227355399 3.03974915897077 3.32862668882732 5.93753620508243 2.54160199346455 3.25424296870549 1.22377543162212 +observational 3.77734810210154 3.2846635654062 3.14845336057165 4.36182392735636 3.77734810210154 2.4423470353692 2.53369681395743 6.18001665365257 2.40694510831829 3.43720781918519 2.20386912005489 +observational 2.94968833505258 2.7408400239252 1.4747630091075 2.2935443483419 3.10458667846607 2.37954613413017 2.79116510781272 6.19644412779452 2.14124194258528 3.32862668882732 2.79728133483015 +observational 5.27299955856375 4.10098910494077 3.47196645255036 2.43361335540045 3.79548918917219 1.51072193949494 2.58776403522771 3.34638914516716 2.76000994003292 3.25424296870549 3.03013370027132 +observational 4.47960696301275 3.51749783735832 2.484906649788 4.02891675689965 2.81540871942271 2.30258509299405 2.79116510781272 6.00881318544259 2.7408400239252 3.65065824129374 2.40694510831829 +observational 4.52396013056255 3.6163087612791 3.10458667846607 4.98360662170834 2.96010509591084 2.94968833505258 3.6163087612791 5.78382518232974 2.64617479738412 3.3178157727231 2.77881927199042 +observational 3.67882911826043 2.47653840011748 2.96010509591084 6.31354804627709 4.33598269617247 2.80336038090653 3.31054301339402 5.89989735358249 2.61006979274201 3.20274644293832 2.77881927199042 +observational 4.53367418428302 3.59731226058845 2.23108909128898 5.85507192220243 3.6609942506244 2.4423470353692 2.96010509591084 5.87211778947542 2.14943391349987 2.53369681395743 3.15700042115011 +observational 2.90690105984738 1.41098697371026 2.67414864942653 5.00394630594546 3.2188758248682 2.9391619220656 3.67882911826043 5.87211778947542 1.55603713570699 2.86220088092947 4.20916023665068 +observational 4.14630430115281 3.12236492448736 2.37954613413017 4.66343909411207 3.59731226058845 4.04830062372069 4.53367418428302 6.95272864462487 2.70805020110221 3.4626060097908 2.43361335540045 +observational 3.77734810210154 2.62466859216316 0.792992515529661 5.75574221358691 3.20274644293832 2.70805020110221 3.44361809754611 6.71901315438526 2.50959926237837 3.13983261752775 2.46809953147162 +observational 2.10413415427021 2.83321334405622 3.04927304048202 4.45201900649392 3.44361809754611 2.80336038090653 3.29212628660779 5.72031177660741 3.15700042115011 3.65065824129374 2.18605127673809 +observational 3.2846635654062 2.83321334405622 0.300104592450338 5.89989735358249 2.87919845729804 2.64617479738412 3.96651119071222 7.43838353004431 2.33214389523559 3.03013370027132 2.63188884013665 +observational 3.92197333628131 3.3357695763397 3.89385903480047 4.10098910494077 3.73289633953071 3.45315712059287 3.94931879017184 7.10578612948127 2.14943391349987 3.9759363311718 2.52572864430826 +observational 4.43438186500781 3.54385368206368 1.63705307946707 2.76000994003292 2.66025953726586 2.60268968544438 3.06805293513362 5.85507192220243 1.24126858906963 2.4932054526027 4.12874598893943 +observational 4.13676527810605 3.18221184049661 3.03974915897077 2.55722731136763 3.13983261752775 3.70622809244855 4.53367418428302 7.49220304261874 1.43031124653666 2.53369681395743 4.53367418428302 +observational 4.15575319035074 3.07731226054641 2.73436750941958 3.66867674679642 2.18605127673809 4.60517018598809 5.4510384535657 7.80710329012598 2.64617479738412 3.48124008933569 2.67414864942653 +observational 3.76815263500844 3.07731226054641 2.15871472257434 3.87743156065853 3.75185425327532 2.19499988231411 2.70136121295141 6.32256523992728 2.10413415427021 3.53514535417189 5.10594547390058 +observational 4.37071287477361 3.23867845216438 2.02419306744936 4.53367418428302 3.09557760852371 2.18605127673809 2.98568193770049 6.16961073249146 3.02042488614436 3.4904285153901 2.65324196460721 +observational 2.37954613413017 2.70805020110221 3.15700042115011 3.34638914516716 4.01998014693324 0.198850858745165 2.68784749378469 6.71901315438526 2.9391619220656 3.4626060097908 2.31253542384721 +observational 4.36182392735636 3.09557760852371 3.40119738166216 5.79301360838414 3.56104608260405 2.50959926237837 3.13113691056019 5.53338948872752 2.81540871942271 3.25424296870549 2.36085400111802 +observational 4.50645421304893 3.89385903480047 2.89591193827178 4.65396035015752 3.06805293513362 3.13113691056019 3.4626060097908 5.97126183979046 2.76000994003292 3.18221184049661 2.40694510831829 +observational 6.31354804627709 5.96357934361845 2.55722731136763 5.08140436498446 3.79548918917219 2.87919845729804 3.25424296870549 6.64639051484773 1.39376637595859 2.60268968544438 3.2846635654062 +observational 3.70622809244855 3.20274644293832 4.11087386417331 4.78749174278205 3.13113691056019 3.15700042115011 3.92197333628131 6.57507584059962 3.82209829790016 4.45201900649392 3.67882911826043 +observational 4.10098910494077 2.54160199346455 2.85070650150373 5.16478597392351 3.10458667846607 2.54160199346455 3.43720781918519 5.76519110278484 1.2947271675944 3.14845336057165 4.01998014693324 +observational 3.92197333628131 3.04927304048202 2.86220088092947 3.10458667846607 1.43983512804792 3.23080439573347 3.6609942506244 5.94542060860658 1.25846098961001 2.13179677201376 4.27249074760558 +observational 4.76217393479776 3.6609942506244 3.2846635654062 2.66025953726586 2.33214389523559 2.71469474382088 3.37416870927424 6.73696695800186 3.13983261752775 3.60549784517489 2.71469474382088 +observational 4.11087386417331 3.07731226054641 2.53369681395743 4.40671924726425 3.16547504814109 2.36085400111802 3.02042488614436 7.20489251020467 3.07731226054641 3.58905911883173 2.79728133483015 +observational 4.52396013056255 3.74242022104197 2.67414864942653 3.47196645255036 3.6163087612791 1.38629436111989 2.83321334405622 5.8111409929767 2.43361335540045 3.37416870927424 4.254193263164 +observational 2.39789527279837 2.23108909128898 2.00552585872967 4.83628190695148 3.18221184049661 2.7408400239252 3.26575941076705 6.38687931936265 2.9391619220656 3.7864597824528 3.12236492448736 +observational 5.13579843705026 4.46129981556839 3.39114704580865 5.18738580584075 3.85014760171006 3.37416870927424 3.76815263500844 5.80211837537706 1.43031124653666 3.17387845893747 4.54223038621422 +observational 3.9926809084456 3.08648663682246 2.45958884180371 5.43372200355424 3.59731226058845 3.58905911883173 4.84418708645859 6.84481547920826 2.82137888640921 3.68887945411394 2.70136121295141 +observational 2.89591193827178 3.15700042115011 3.70622809244855 4.5152454784601 3.98527346716774 2.68784749378469 3.34638914516716 6.31354804627709 1.60140574073684 3.72328088083127 5.67675380226828 +observational 3.55248682920838 3.07731226054641 3.72328088083127 5.37063802812766 4.42484663185681 1.97823903617067 2.86789890204411 6.28785856016178 3.3178157727231 4.04830062372069 3.01553490085017 +observational 5.18738580584075 5.0998664278242 2.76000994003292 3.82209829790016 2.47653840011748 2.86220088092947 3.40119738166216 6.59304453414244 2.84490938381941 3.25424296870549 2.88480071284671 +observational 4.42484663185681 3.88567903008854 3.52636052461616 4.67282883446191 4.21803603456465 2.86789890204411 3.43720781918519 5.75574221358691 0.717839793150317 2.70805020110221 4.27249074760558 +observational 4.48863636973214 3.45315712059287 3.9926809084456 4.38077585277223 3.29212628660779 1.38629436111989 4.07414185490458 6.25958146406492 1.69927861643389 3.07731226054641 4.00186370942794 +observational 4.07414185490458 3.63495111208838 1.73518911773966 3.10458667846607 2.41591377830105 3.55248682920838 4.15575319035074 7.57353126274595 2.75366071235426 3.38099467434464 2.2935443483419 +observational 3.4626060097908 2.43361335540045 2.64617479738412 2.50143595173921 1.79840401194672 2.70136121295141 3.36384159511839 6.1527326947041 3.21084365317094 3.67882911826043 3.42751468997953 +observational 3.8416005411316 2.9704144655697 3.37416870927424 4.06560209335645 3.85862222870103 1.68268837417369 3.45315712059287 6.12468339089421 2.32238772029023 3.4904285153901 3.09557760852371 +observational 3.63495111208838 2.36085400111802 2.86789890204411 3.47196645255036 2.68784749378469 2.68102152871429 3.34638914516716 5.4971682252932 1.9154509415706 2.68102152871429 4.19116874685764 +observational 4.29045944114839 2.99573227355399 2.58776403522771 2.61006979274201 3.35340671782581 0.810930216216329 3.13983261752775 5.71042701737487 4.06560209335645 4.70953020131233 5.13579843705026 +observational 3.74242022104197 2.88480071284671 3.4626060097908 4.3267781604434 4.34380542185368 3.18221184049661 4.66343909411207 7.49220304261874 2.73436750941958 3.90399083373088 5.29831736654804 +observational 4.47049528266149 4.04830062372069 3.21084365317094 4.70048036579242 3.70622809244855 3.19458313229916 3.31054301339402 5.88332238848828 2.484906649788 3.01553490085017 1.94304891677428 +observational 3.71357206670431 2.83321334405622 3.04927304048202 5.4971682252932 4.254193263164 2.34180580614733 2.82137888640921 6.1527326947041 2.97552956623647 3.65065824129374 2.97552956623647 +observational 3.92986292355648 3.56104608260405 3.09557760852371 3.13113691056019 1.16002091679675 1.37624402526639 2.51769647261099 4.74493212836325 3.47196645255036 3.90399083373088 2.9338568698359 +observational 2.37954613413017 2.96010509591084 2.87919845729804 3.38099467434464 3.29212628660779 1.6467336971778 2.37954613413017 6.54821910276237 1.55603713570699 2.31253542384721 4.24563400976833 +observational 4.3528552573736 3.88567903008854 3.03013370027132 3.07731226054641 2.92316158071916 2.39789527279837 3.49953328238302 5.99146454710798 2.60268968544438 3.12236492448736 2.68102152871429 +observational 4.30811095172371 3.41772668361337 3.09557760852371 3.56953269648137 3.92986292355648 4.83628190695148 5.62040086571715 7.39326309476384 2.86789890204411 3.32862668882732 2.88480071284671 +observational 3.70622809244855 4.01998014693324 2.41591377830105 4.7361984483945 3.2846635654062 3.9759363311718 4.43438186500781 6.8627579130514 2.51769647261099 3.2846635654062 2.70805020110221 +observational 4.34380542185368 3.01553490085017 2.53369681395743 3.24649099190117 3.62434093297637 1.26694760348732 2.51769647261099 6.33150184989369 2.31253542384721 3.23867845216438 3.2846635654062 +observational 2.66025953726586 1.69009581545155 2.56494935746154 4.48863636973214 0.494696241836107 2.10413415427021 3.08648663682246 6.02586597382531 3.05870707271538 3.49953328238302 3.13983261752775 +observational 3.94931879017184 3.51749783735832 2.70805020110221 3.76815263500844 2.52572864430826 3.03974915897077 3.58073729549423 5.99893656194668 4.54223038621422 5.13579843705026 3.68887945411394 +observational 3.50855589998265 3.18221184049661 2.21266038546606 2.9391619220656 4.00186370942794 3.80443779474821 4.62497281328427 7.19593722647557 3.36384159511839 4.23700086262362 3.85014760171006 +observational 4.31748811353631 3.8416005411316 1.04380405217311 6.12468339089421 3.6163087612791 1.87946504964716 2.98568193770049 5.96357934361845 2.99573227355399 3.43720781918519 2.4423470353692 +observational 0.476234178996372 2.43361335540045 3.53514535417189 3.44361809754611 1.95160817016995 3.90399083373088 4.39814601655377 6.67329796776765 2.14124194258528 3.42751468997953 5.04342511691925 +observational 3.9759363311718 3.06805293513362 1.86252854011626 5.53338948872752 3.13983261752775 2.24812890719799 3.26575941076705 5.8111409929767 1.22377543162212 3.3178157727231 4.37071287477361 +observational 4.44382703557933 3.47196645255036 2.82137888640921 3.48124008933569 4.16511363311031 1.10525683138678 3.32862668882732 5.33271879326537 3.27336401015227 3.6609942506244 2.46809953147162 +observational 3.92986292355648 3.35340671782581 3.23080439573347 4.03777421073371 3.64283551561253 3.38099467434464 4.10098910494077 6.57507584059962 2.27521389619791 2.96010509591084 2.68784749378469 +observational 3.25424296870549 3.13113691056019 3.50855589998265 4.54223038621422 3.2846635654062 1.71739505393919 2.70136121295141 6.42162226780652 2.77881927199042 3.51749783735832 2.86220088092947 +observational 4.45201900649392 4.12874598893943 3.9759363311718 5.78382518232974 5.47646355193151 2.55722731136763 3.20274644293832 5.99893656194668 2.36085400111802 2.66025953726586 2.50143595173921 +observational 4.55071400019203 3.62434093297637 4.28082412916472 4.56954300834494 3.49953328238302 3.23867845216438 3.8416005411316 6.37672694789863 1.54756250871601 2.84490938381941 3.34638914516716 +observational 3.68887945411394 2.91235066461494 3.19458313229916 4.15575319035074 3.56104608260405 1.81645208181843 2.79728133483015 4.39814601655377 2.7408400239252 3.3178157727231 2.75366071235426 +observational 4.34380542185368 3.8308129500026 3.56104608260405 4.50645421304893 3.71357206670431 2.77881927199042 3.25424296870549 5.98141421125448 0.693147180559945 4.33598269617247 2.66025953726586 +observational 3.35340671782581 3.11351530921037 3.70622809244855 5.31811999384422 4.19116874685764 2.99573227355399 3.37416870927424 5.47646355193151 0.27763173659828 3.58905911883173 0.582215619852664 +observational 4.52396013056255 4.02891675689965 2.72785282839839 2.94968833505258 2.54160199346455 2.21266038546606 2.23964529322017 5.77455154554441 2.40694510831829 2.99573227355399 2.9391619220656 +observational 2.68102152871429 2.39789527279837 2.12226153886276 5.16478597392351 3.47196645255036 2.12226153886276 3.25424296870549 6.87212810133899 3.17387845893747 3.56104608260405 1.6467336971778 +observational 3.9926809084456 2.88480071284671 2.98568193770049 3.09557760852371 2.9338568698359 3.29953372788566 3.73289633953071 5.76519110278484 2.3887627892351 3.17387845893747 2.58021682959233 +observational 3.39114704580865 2.9391619220656 1.23256026117785 2.68784749378469 3.15700042115011 1.01523067972906 2.26695791535089 5.62040086571715 0.667829372575655 4.37071287477361 1.5830939370945 +observational 3.43720781918519 3.17387845893747 0 6.73696695800186 4.41642806139121 2.79728133483015 3.40784192438082 6.16120732169508 2.08691355651854 3.07731226054641 1.88858365386359 +observational 4.31748811353631 3.04927304048202 3.66867674679642 3.50855589998265 0.802001585472027 2.89591193827178 3.34638914516716 5.71042701737487 2.9704144655697 3.60549784517489 2.53369681395743 +observational 3.75887182593397 3.13983261752775 1.42069578783722 5.29831736654804 2.81540871942271 2.94968833505258 3.81330703248899 7.13249755166004 3.24649099190117 3.32862668882732 2.88480071284671 +observational 4.41642806139121 3.29212628660779 2.05923883436232 4.95582705760126 1.34807314829969 2.86789890204411 3.23080439573347 5.6937321388027 3.52636052461616 4.27249074760558 3.51749783735832 +observational 6.05443934626937 5.54126354515843 2.4423470353692 4.06560209335645 2.76000994003292 2.05027016437956 2.79116510781272 6.52941883826223 1.708377860289 1.86252854011626 1.28647402583768 +observational 3.9926809084456 3.50855589998265 3.01553490085017 3.02042488614436 3.10458667846607 3.03974915897077 3.49953328238302 5.59471137960184 2.9391619220656 3.8416005411316 2.90690105984738 +observational 4.47960696301275 2.9704144655697 3.10458667846607 4.39814601655377 2.79728133483015 1.51951320490611 2.80336038090653 6.29526600143965 2.91235066461494 3.50855589998265 2.64617479738412 +observational 2.51769647261099 3.04927304048202 2.65324196460721 2.64617479738412 4.11903717481247 2.77258872223978 3.51749783735832 6.72743172485086 2.34180580614733 3.06805293513362 2.08691355651854 +observational 4.99043258677874 4.44382703557933 2.73436750941958 4.0842942263686 4.70953020131233 3.04927304048202 3.32862668882732 5.6937321388027 0.165514438477573 2.1770218700187 3.73289633953071 +observational 4.07414185490458 3.18221184049661 2.90690105984738 2.81540871942271 2.24812890719799 0.792992515529661 2.36085400111802 0.667829372575655 0.470003629245736 1.68268837417369 1.68268837417369 +observational 3.87743156065853 2.50959926237837 3.18221184049661 2.85070650150373 0 0.438254930931155 2.9704144655697 3.75887182593397 3.04927304048202 3.53514535417189 2.92316158071916 +observational 4.67282883446191 3.91202300542815 2.61006979274201 4.21803603456465 3.13983261752775 3.03974915897077 3.29953372788566 5.80211837537706 1.13462272619114 2.4932054526027 3.51749783735832 +observational 4.38077585277223 4.80402104473326 3.16547504814109 3.02042488614436 2.7408400239252 2.37024374146786 3.12236492448736 6.00881318544259 1.2947271675944 3.03013370027132 4.0926765051214 +observational 4.34380542185368 3.58905911883173 3.17387845893747 3.38099467434464 2.3887627892351 2.70805020110221 3.32862668882732 5.92692602597041 3.10458667846607 3.58073729549423 2.45958884180371 +observational 3.95699637107088 3.55248682920838 2.31253542384721 3.47196645255036 3.60549784517489 3.17387845893747 3.56953269648137 5.44241771052179 2.64617479738412 2.9338568698359 2.4423470353692 +observational 4.24563400976833 3.13983261752775 2.86789890204411 6.09807428216624 4.69134788222914 3.21084365317094 3.65065824129374 5.18738580584075 3.04927304048202 3.86702563949741 3.12236492448736 +observational 4.43438186500781 3.51749783735832 3.04927304048202 3.64283551561253 3.19458313229916 2.28442112236637 2.57261223020711 6.25190388316589 3.35340671782581 4.01096295328305 2.81540871942271 +observational 4.0926765051214 3.41772668361337 2.14124194258528 1.87946504964716 2.16791018966744 2.34180580614733 3.10458667846607 5.90808293816893 2.61739583283408 3.2188758248682 2.66025953726586 +observational 3.85014760171006 3.25424296870549 2.61006979274201 2.79728133483015 2.58021682959233 3.15700042115011 3.8416005411316 7.12367278520461 2.91235066461494 3.56104608260405 3.13113691056019 +observational 4.30811095172371 2.80336038090653 3.9759363311718 3.86702563949741 3.92986292355648 3.10458667846607 3.62434093297637 6.13339804299665 3.09557760852371 3.89385903480047 2.65324196460721 +observational 2.11384296839717 2.96010509591084 2.9391619220656 5.08140436498446 3.56953269648137 3.26575941076705 3.7864597824528 5.25227342804663 2.86789890204411 3.64283551561253 3.03974915897077 +observational 4.19116874685764 3.98527346716774 2.40694510831829 3.02042488614436 3.29212628660779 1.6467336971778 2.75366071235426 6.35088571671474 2.18605127673809 2.43361335540045 3.65065824129374 +observational 3.85014760171006 3.13983261752775 2.92316158071916 3.3357695763397 2.91235066461494 2.42480272571829 3.40119738166216 6.61069604471776 3.34638914516716 3.86702563949741 2.96010509591084 +observational 3.15700042115011 3.31054301339402 0.89199803930511 4.80402104473326 2.70805020110221 2.89591193827178 3.34638914516716 5.68357976733868 1.34025042261848 2.9704144655697 5.04342511691925 +observational 2.50959926237837 1.8531680973567 1.99741770620125 4.70953020131233 2.92316158071916 1.13462272619114 2.9338568698359 6.20657592672493 2.65324196460721 3.52636052461616 2.60268968544438 +observational 2.76000994003292 2.35137525716348 2.53369681395743 2.9391619220656 2.65324196460721 2.86220088092947 3.48124008933569 5.75574221358691 3.43720781918519 3.8416005411316 2.97552956623647 +observational 3.04927304048202 3.23080439573347 2.43361335540045 4.69134788222914 3.10458667846607 3.00568260440716 3.4626060097908 5.95324333428778 2.84490938381941 3.38099467434464 2.45958884180371 +observational 2.54160199346455 2.32238772029023 2.4423470353692 4.86753445045558 3.35340671782581 2.99573227355399 3.24649099190117 5.88332238848828 1.82616089594539 3.38099467434464 3.29953372788566 +observational 2.70805020110221 2.58021682959233 3.26575941076705 3.3357695763397 2.60268968544438 2.41591377830105 3.7864597824528 7.6182510978767 1.96990565461153 2.84490938381941 2.53369681395743 +observational 4.23700086262362 3.35340671782581 1.51951320490611 5.96357934361845 3.81330703248899 0.593326845277734 2.67414864942653 5.31811999384422 3.12236492448736 3.64283551561253 2.34180580614733 +observational 2.26695791535089 1.11514159061932 3.44361809754611 4.66343909411207 3.68887945411394 3.3357695763397 3.8308129500026 6.1527326947041 2.76000994003292 3.03013370027132 2.06812778177956 +observational 3.77734810210154 3.06805293513362 2.50143595173921 3.9759363311718 4.0926765051214 1.9154509415706 2.72785282839839 5.89164421182577 3.38099467434464 3.96651119071222 3.6609942506244 +observational 3.47196645255036 3.06805293513362 1.77155676191054 4.91265488573605 2.90690105984738 4.56954300834494 5.16478597392351 6.35957386867238 1.20597080698861 3.14845336057165 4.42484663185681 +observational 3.63495111208838 2.50959926237837 2.41591377830105 4.04830062372069 2.36085400111802 2.81540871942271 3.8416005411316 7.38461038317697 2.72785282839839 3.66867674679642 3.13983261752775 +observational 3.87743156065853 3.51749783735832 2.75366071235426 2.42480272571829 3.3357695763397 2.01490302054226 3.48124008933569 7.1777824161952 2.41591377830105 3.32862668882732 3.03974915897077 +observational 3.49953328238302 2.85070650150373 1.79009141212736 4.54223038621422 3.27336401015227 2.4423470353692 3.73289633953071 6.53958595561767 1.51951320490611 2.91235066461494 1.10525683138678 +observational 3.82209829790016 3.36384159511839 2.4932054526027 2.61739583283408 3.69635146895264 1.77155676191054 2.58776403522771 5.99893656194668 3.16547504814109 3.76815263500844 2.11384296839717 +observational 3.09557760852371 1.75440368268429 3.41772668361337 2.85070650150373 1.98787434815435 1.96009478404727 2.9704144655697 6.03548143252476 3.34638914516716 4.05698877567833 3.00568260440716 +observational 3.68887945411394 2.77258872223978 2.32238772029023 2.9391619220656 3.44361809754611 1.6467336971778 2.84490938381941 6.82654522355659 3.2188758248682 4.0926765051214 3.58073729549423 +observational 3.43720781918519 3.00568260440716 2.16791018966744 2.42480272571829 4.21803603456465 3.75185425327532 3.9926809084456 5.83773044716594 0.89199803930511 1.93441576962958 4.30000279919529 +observational 4.57779898919196 3.59731226058845 3.07731226054641 4.04830062372069 1.43031124653666 1.55603713570699 3.70622809244855 6.22455842927536 2.77881927199042 3.45315712059287 2.70136121295141 +observational 3.4626060097908 3.17387845893747 2.02419306744936 3.69635146895264 2.94968833505258 4.02891675689965 4.54223038621422 7.39326309476384 2.37024374146786 2.91235066461494 2.33214389523559 +observational 3.64283551561253 2.63188884013665 3.42751468997953 5.35185813347607 4.52396013056255 2.64617479738412 2.86220088092947 6.30444880242198 2.86220088092947 3.67882911826043 2.81540871942271 +observational 3.93963817246112 3.24649099190117 2.06812778177956 3.14845336057165 3.18221184049661 1.95160817016995 2.70136121295141 6.1527326947041 3.75185425327532 4.06560209335645 1.08856195281461 +observational 4.02891675689965 2.98568193770049 2.21266038546606 2.84490938381941 2.36085400111802 2.82137888640921 4.27249074760558 7.54644627374602 2.484906649788 3.15700042115011 2.79116510781272 +observational 4.31748811353631 3.27336401015227 3.2188758248682 5.09375020080676 3.56953269648137 2.97552956623647 3.40119738166216 5.52146091786225 2.76000994003292 3.36384159511839 2.51769647261099 +observational 4.01998014693324 3.17387845893747 2.08691355651854 2.81540871942271 3.24649099190117 2.79728133483015 3.07731226054641 6.35088571671474 3.56104608260405 4.14630430115281 2.87919845729804 +observational 3.92986292355648 3.45315712059287 2.40694510831829 2.11384296839717 3.05870707271538 0.198850858745165 2.65324196460721 6.40357419793482 0.173953307123438 4.15575319035074 2.01490302054226 +observational 4.42484663185681 3.29212628660779 2.61739583283408 3.95699637107088 3.8416005411316 2.90690105984738 3.13113691056019 5.67675380226828 2.96010509591084 3.85014760171006 3.01553490085017 +observational 4.21803603456465 3.34638914516716 2.91235066461494 5.54126354515843 3.70622809244855 4.77912349311153 5.15329159449778 6.43133108193348 1.86252854011626 2.57261223020711 4.34380542185368 +observational 4.04830062372069 3.2846635654062 2.68102152871429 4.69134788222914 3.06805293513362 0.636576829071551 2.25758772706331 5.98141421125448 2.97552956623647 3.67882911826043 2.82137888640921 +observational 3.55248682920838 4.00186370942794 2.46809953147162 4.65396035015752 2.91235066461494 2.97552956623647 4.34380542185368 5.09375020080676 2.18605127673809 3.4626060097908 3.51749783735832 +observational 4.20020495292158 3.21084365317094 2.81540871942271 2.94968833505258 2.9391619220656 3.42751468997953 4.11087386417331 7.13249755166004 2.9338568698359 3.59731226058845 3.25424296870549 +observational 3.67882911826043 3.81330703248899 3.05870707271538 4.70048036579242 3.65065824129374 2.31253542384721 3.41772668361337 6.52941883826223 2.9338568698359 3.54385368206368 3.10458667846607 +observational 3.85862222870103 3.32862668882732 1.95160817016995 3.24649099190117 3.67882911826043 1.6094379124341 2.81540871942271 5.76519110278484 2.33214389523559 3.29953372788566 1.75440368268429 +observational 3.70622809244855 3.10458667846607 2.70136121295141 3.65065824129374 1.95160817016995 1.8531680973567 3.39114704580865 2.97552956623647 3.47196645255036 4.17284762371004 3.94931879017184 +observational 3.95699637107088 3.2188758248682 2.72785282839839 3.38099467434464 2.23108909128898 2.86789890204411 2.88480071284671 5.75574221358691 2.73436750941958 3.71357206670431 4.98360662170834 +observational 2.9391619220656 2.70805020110221 2.36085400111802 5.14749447681345 3.06805293513362 3.08648663682246 3.34638914516716 5.91889385427315 0.3293037471426 3.91202300542815 1.84371920815877 +observational 3.71357206670431 3.13983261752775 3.03974915897077 2.46809953147162 2.18605127673809 3.05870707271538 3.6163087612791 6.66440902035041 1.16002091679675 3.08648663682246 4.18205014264121 +observational 3.85014760171006 3.51749783735832 3.13113691056019 3.51749783735832 3.03013370027132 2.92316158071916 3.56953269648137 5.58724865840025 2.55722731136763 3.54385368206368 2.61739583283408 +observational 3.49953328238302 2.96010509591084 2.23964529322017 2.91235066461494 3.49953328238302 3.3178157727231 3.40784192438082 6.00881318544259 2.25758772706331 2.77258872223978 2.2935443483419 +observational 3.00568260440716 2.7408400239252 2.10413415427021 5.01063529409626 3.69635146895264 2.79116510781272 3.50855589998265 5.80211837537706 1.2947271675944 2.4423470353692 4.42484663185681 +observational 4.31748811353631 3.47196645255036 3.20274644293832 3.02042488614436 2.77258872223978 3.05870707271538 3.23867845216438 5.64897423816121 3.3178157727231 3.86702563949741 3.40784192438082 +observational 3.2188758248682 2.37024374146786 2.27521389619791 3.29953372788566 2.73436750941958 2.39789527279837 2.94968833505258 5.71042701737487 1.14103300455206 2.91235066461494 4.26267987704132 +observational 1.71739505393919 2.56494935746154 2.68102152871429 4.71849887129509 3.4904285153901 2.79728133483015 3.31054301339402 6.26909628370626 0.792992515529661 3.18221184049661 4.23700086262362 +observational 3.06805293513362 2.27521389619791 2.67414864942653 4.5152454784601 2.87919845729804 0.99694863489161 2.82137888640921 6.31354804627709 1.80828877117927 2.96010509591084 1.93441576962958 +observational 3.9759363311718 3.11351530921037 2.86789890204411 2.7408400239252 2.2935443483419 3.05870707271538 3.53514535417189 5.74620319054015 3.13983261752775 3.6609942506244 2.81540871942271 +observational 4.0926765051214 3.29212628660779 3.01553490085017 5.27811465923052 4.24563400976833 2.92316158071916 3.90399083373088 6.85329909318608 1.51951320490611 2.9338568698359 4.89034912822175 +observational 3.9926809084456 3.14845336057165 2.2213750375685 3.2846635654062 3.89385903480047 2.86220088092947 3.50855589998265 6.16961073249146 2.3887627892351 3.2188758248682 1.66392609771817 +observational 4.50645421304893 3.6609942506244 2.75366071235426 3.50855589998265 2.81540871942271 3.24649099190117 3.54385368206368 5.88332238848828 1.20597080698861 2.96010509591084 4.57779898919196 +observational 4.29045944114839 3.40784192438082 3.80443779474821 5.85507192220243 4.86753445045558 2.62466859216316 3.13113691056019 5.88332238848828 2.39789527279837 3.39114704580865 4.7361984483945 +observational 3.6609942506244 2.70136121295141 3.18221184049661 4.41642806139121 2.84490938381941 3.06805293513362 3.06805293513362 5.6021188208797 2.61006979274201 3.4626060097908 2.68784749378469 +observational 3.06805293513362 2.54160199346455 3.3178157727231 3.9759363311718 3.9759363311718 3.23080439573347 3.80443779474821 5.78382518232974 2.96010509591084 3.23080439573347 2.26695791535089 +observational 4.17284762371004 3.8416005411316 3.26575941076705 3.08648663682246 2.64617479738412 3.18221184049661 3.43720781918519 5.92692602597041 2.4932054526027 3.29953372788566 2.07819075977818 +observational 3.29953372788566 2.89591193827178 2.75366071235426 3.70622809244855 2.77881927199042 3.05870707271538 3.67882911826043 5.57594910314632 2.76000994003292 3.36384159511839 2.40694510831829 +observational 4.05698877567833 3.31054301339402 1.88858365386359 2.68784749378469 2.89591193827178 3.3357695763397 3.48124008933569 5.85507192220243 2.33214389523559 3.2846635654062 2.27521389619791 +observational 3.66867674679642 2.58021682959233 3.56104608260405 3.27336401015227 4.0842942263686 3.81330703248899 4.28082412916472 6.70073110954781 2.4932054526027 3.3178157727231 2.32238772029023 +observational 3.70622809244855 3.21084365317094 2.76000994003292 1.89761985992753 3.81330703248899 2.61739583283408 3.41772668361337 6.13339804299665 2.70805020110221 3.09557760852371 3.88567903008854 +observational 3.45315712059287 2.86220088092947 2.18605127673809 5.27811465923052 3.02042488614436 1.88858365386359 2.58021682959233 5.89989735358249 2.86220088092947 3.13983261752775 3.02042488614436 +observational 4.47960696301275 3.67882911826043 3.32862668882732 4.49758497530815 3.58073729549423 1.82616089594539 3.18221184049661 6.54821910276237 3.70622809244855 4.30000279919529 3.82209829790016 +observational 4.59612944133594 3.9759363311718 2.84490938381941 4.61512051684126 3.2846635654062 3.65065824129374 4.254193263164 6.31354804627709 0.908258560176891 2.06812778177956 4.48863636973214 +observational 4.5152454784601 2.90690105984738 3.06805293513362 3.34638914516716 1.53901544813755 3.37416870927424 4.01096295328305 6.37672694789863 3.38099467434464 4.34380542185368 5.29831736654804 +observational 3.91202300542815 3.3357695763397 2.50959926237837 4.76217393479776 2.79116510781272 3.3178157727231 3.68887945411394 5.40717177146012 1.78170913337455 3.19458313229916 4.63472898822964 +observational 3.85014760171006 3.40784192438082 3.10458667846607 3.62434093297637 2.90690105984738 0.746687947487975 2.64617479738412 3.17387845893747 0.792992515529661 3.12236492448736 4.38949864951258 +observational 3.98527346716774 3.09557760852371 2.76000994003292 2.43361335540045 2.37954613413017 2.45958884180371 3.55248682920838 5.26269018890489 1.20597080698861 2.67414864942653 4.34380542185368 +observational 3.47196645255036 2.86789890204411 2.79728133483015 4.47960696301275 3.6163087612791 2.25758772706331 3.11351530921037 6.32256523992728 2.77881927199042 3.43720781918519 2.91235066461494 +observational 4.20020495292158 3.7864597824528 2.67414864942653 2.73436750941958 2.09556092355972 2.73436750941958 3.52636052461616 5.97126183979046 3.12236492448736 3.63495111208838 2.88480071284671 +observational 3.69635146895264 2.68102152871429 2.50143595173921 4.16511363311031 3.03013370027132 2.94968833505258 3.37416870927424 5.94542060860658 3.09557760852371 3.58905911883173 2.87919845729804 +observational 2.66025953726586 2.13179677201376 2.41591377830105 2.73436750941958 4.01096295328305 2.24812890719799 3.50855589998265 7.00669522683704 3.29212628660779 3.7864597824528 2.61006979274201 +observational 4.04830062372069 3.56953269648137 2.72785282839839 3.07731226054641 3.00568260440716 2.9704144655697 3.65065824129374 5.98141421125448 0.963174317773006 3.32862668882732 2.18605127673809 +observational 1.08856195281461 1.97823903617067 2.65324196460721 4.30000279919529 1.92424865227413 2.86220088092947 3.23867845216438 5.27299955856375 0.56531380905006 2.13179677201376 4.31748811353631 +observational 2.57261223020711 0.425267735404344 3.52636052461616 4.20020495292158 2.40694510831829 2.53369681395743 3.20274644293832 5.87211778947542 0.425267735404344 2.96010509591084 4.3267781604434 +observational 4.56017282005736 3.49953328238302 3.12236492448736 3.85862222870103 2.55722731136763 3.53514535417189 3.79548918917219 5.46806014113513 1.73518911773966 2.77258872223978 4.41642806139121 +observational 3.59731226058845 2.96010509591084 2.91235066461494 2.79116510781272 3.51749783735832 2.58021682959233 4.66343909411207 5.99146454710798 2.83321334405622 3.58073729549423 2.60268968544438 +observational 4.5152454784601 3.26575941076705 3.13113691056019 3.76815263500844 3.29953372788566 3.00568260440716 3.58905911883173 5.79301360838414 2.50143595173921 3.13113691056019 1.10525683138678 +observational 4.254193263164 3.72328088083127 2.90690105984738 4.42484663185681 2.67414864942653 3.77734810210154 4.3528552573736 7.10578612948127 2.47653840011748 3.12236492448736 2.76000994003292 +observational 4.30000279919529 3.38099467434464 3.29953372788566 5.23644196282995 4.30811095172371 2.58021682959233 3.47196645255036 5.55682806169954 3.03974915897077 3.58073729549423 2.21266038546606 +observational 4.95582705760126 4.67282883446191 3.82209829790016 4.92725368515721 4.31748811353631 3.27336401015227 3.82209829790016 5.99893656194668 2.68102152871429 3.07731226054641 2.47653840011748 +observational 3.52636052461616 2.58776403522771 3.51749783735832 5.6021188208797 4.26267987704132 1.48387468945875 3.66867674679642 6.88959130835447 3.03013370027132 3.36384159511839 2.26695791535089 +observational 4.41642806139121 3.56104608260405 3.23867845216438 4.52396013056255 4.16511363311031 2.07819075977818 3.29212628660779 6.44888939414686 2.67414864942653 3.2188758248682 2.46809953147162 +observational 3.98527346716774 3.17387845893747 2.64617479738412 4.254193263164 1.4036429994545 2.2213750375685 2.35137525716348 5.8111409929767 1.79840401194672 2.55722731136763 4.3267781604434 +observational 4.13676527810605 3.76815263500844 3.2846635654062 5.13579843705026 3.34638914516716 1.32175583998232 2.36085400111802 5.96357934361845 2.41591377830105 2.9391619220656 2.3887627892351 +observational 3.75185425327532 3.12236492448736 2.66025953726586 5.31811999384422 3.51749783735832 4.02891675689965 4.47049528266149 6.35957386867238 1.7263316639056 3.10458667846607 4.62497281328427 +observational 3.25424296870549 2.45958884180371 3.16547504814109 3.47196645255036 3.18221184049661 2.81540871942271 3.75887182593397 6.18001665365257 1.43031124653666 2.96010509591084 3.69635146895264 +observational 3.92197333628131 3.47196645255036 3.74242022104197 3.85862222870103 3.34638914516716 3.31054301339402 3.8308129500026 6.1527326947041 1.66392609771817 2.58021682959233 3.58905911883173 +observational 2.15871472257434 1.68268837417369 2.11384296839717 4.62497281328427 2.73436750941958 2.9704144655697 2.89591193827178 6.00881318544259 2.41591377830105 3.3357695763397 5.09375020080676 +observational 3.4626060097908 3.09557760852371 3.03974915897077 4.97673374242057 3.26575941076705 2.54160199346455 3.03013370027132 5.8111409929767 2.75366071235426 3.56104608260405 2.484906649788 +observational 3.4626060097908 3.11351530921037 2.75366071235426 3.48124008933569 3.29212628660779 2.00552585872967 3.25424296870549 6.48463523563525 2.88480071284671 3.7864597824528 2.68784749378469 +observational 3.76815263500844 3.07731226054641 3.07731226054641 2.77258872223978 3.11351530921037 1.03318448334565 2.50959926237837 6.62936325343745 2.12226153886276 3.27336401015227 2.56494935746154 +observational 4.02891675689965 3.55248682920838 3.25424296870549 1.82616089594539 0 2.97552956623647 3.63495111208838 5.8636311755981 0 1.34025042261848 1.63705307946707 +observational 3.86702563949741 3.55248682920838 2.60268968544438 3.07731226054641 2.63188884013665 2.25758772706331 2.94968833505258 6.18001665365257 0.438254930931155 3.23080439573347 4.47049528266149 +observational 2.66025953726586 3.10458667846607 2.30258509299405 3.45315712059287 3.38099467434464 1.708377860289 3.08648663682246 5.8111409929767 2.65324196460721 3.27336401015227 2.33214389523559 +observational 3.45315712059287 3.15700042115011 3.44361809754611 2.67414864942653 2.64617479738412 2.33214389523559 2.82137888640921 6.16961073249146 1.62727783056243 2.4932054526027 3.92197333628131 +observational 4.07414185490458 2.94968833505258 2.97552956623647 4.60517018598809 2.98568193770049 2.26695791535089 3.82209829790016 6.84481547920826 0.73716406597672 2.63188884013665 4.11087386417331 +observational 3.52636052461616 3.00568260440716 2.77258872223978 3.63495111208838 2.79116510781272 2.79116510781272 3.2188758248682 5.57594910314632 2.39789527279837 3.31054301339402 3.60549784517489 +observational 3.63495111208838 3.4904285153901 3.45315712059287 4.87519732320115 2.79728133483015 3.80443779474821 4.30000279919529 5.73009978297357 0.488580014818671 3.06805293513362 4.56017282005736 +observational 3.45315712059287 3.07731226054641 3.2846635654062 3.93963817246112 2.92316158071916 2.68784749378469 3.90399083373088 7.07834157955767 3.26575941076705 4.06560209335645 2.9704144655697 +observational 4.62497281328427 3.91202300542815 3.74242022104197 4.36182392735636 3.4904285153901 2.83321334405622 4.04830062372069 7.01571242048723 1.84371920815877 2.89591193827178 4.61512051684126 +observational 3.23080439573347 2.67414864942653 3.36384159511839 4.18205014264121 3.63495111208838 3.85862222870103 4.19116874685764 5.57594910314632 2.90690105984738 3.58073729549423 1.63705307946707 +observational 2.68784749378469 3.80443779474821 3.37416870927424 5.62040086571715 4.33598269617247 3.82209829790016 4.18205014264121 5.99893656194668 3.29953372788566 3.90399083373088 3.04927304048202 +observational 3.72328088083127 3.03013370027132 2.4932054526027 2.90690105984738 2.70136121295141 2.05923883436232 3.06805293513362 7.05185562295589 1.84371920815877 2.79728133483015 2.23108909128898 +observational 3.03013370027132 2.19499988231411 2.94968833505258 3.67882911826043 3.29212628660779 2.68102152871429 3.15700042115011 5.90808293816893 2.9704144655697 3.65065824129374 2.66025953726586 +observational 2.7408400239252 3.26575941076705 2.97552956623647 3.00568260440716 2.42480272571829 2.16791018966744 3.34638914516716 6.00881318544259 2.14943391349987 3.05870707271538 3.54385368206368 +observational 4.02891675689965 3.55248682920838 2.83321334405622 2.99573227355399 2.70805020110221 1.98787434815435 3.12236492448736 6.880384082186 1.12492959698548 2.72785282839839 4.10098910494077 +observational 3.15700042115011 3.17387845893747 2.54160199346455 3.04927304048202 3.48124008933569 2.76000994003292 3.45315712059287 5.6021188208797 1.78170913337455 2.9704144655697 2.90690105984738 +observational 4.30000279919529 2.64617479738412 3.92197333628131 4.40671924726425 3.17387845893747 3.23080439573347 3.85862222870103 7.0335064842877 3.00568260440716 3.13983261752775 2.18605127673809 +observational 4.01096295328305 3.03013370027132 3.07731226054641 3.31054301339402 2.52572864430826 2.67414864942653 3.72328088083127 7.24921505711439 3.10458667846607 3.3357695763397 3.06805293513362 +observational 3.47196645255036 3.05870707271538 2.88480071284671 4.49758497530815 3.29953372788566 1.42069578783722 2.87919845729804 5.91889385427315 3.77734810210154 4.0926765051214 2.9704144655697 +observational 4.18205014264121 3.65065824129374 3.01553490085017 4.89034912822175 3.6163087612791 4.0926765051214 4.70048036579242 7.21376830811864 1.00795792039998 2.63188884013665 4.58700621536042 +observational 3.35340671782581 3.85862222870103 2.87919845729804 4.20020495292158 3.32862668882732 2.51769647261099 3.00568260440716 6.02586597382531 2.81540871942271 3.43720781918519 2.41591377830105 +observational 3.36384159511839 2.80336038090653 3.00568260440716 3.16547504814109 1.42069578783722 1.54756250871601 2.9391619220656 2.00552585872967 0.518793793415168 4.5152454784601 1.26694760348732 +observational 3.23867845216438 2.76000994003292 2.61739583283408 5.7037824746562 3.75887182593397 2.77258872223978 3.31054301339402 5.64897423816121 2.9704144655697 3.55248682920838 3.02042488614436 +observational 3.6163087612791 3.23080439573347 2.86220088092947 4.40671924726425 3.20274644293832 2.05027016437956 2.82137888640921 6.05443934626937 2.80336038090653 3.2846635654062 1.9154509415706 +observational 4.38077585277223 3.35340671782581 0.982078472412158 5.7037824746562 3.69635146895264 3.37416870927424 3.96651119071222 6.4393503711001 2.04122032885964 3.24649099190117 5.24174701505964 +observational 3.76815263500844 2.7408400239252 0.0582689081239758 5.30826769740121 3.20274644293832 3.00568260440716 3.41772668361337 5.93753620508243 2.4932054526027 3.20274644293832 2.79116510781272 +observational 3.58905911883173 3.03013370027132 3.17387845893747 2.99573227355399 2.39789527279837 2.36085400111802 3.05870707271538 6.11589212548303 1.38629436111989 2.2935443483419 4.00186370942794 +observational 4.3528552573736 3.68887945411394 2.9391619220656 3.12236492448736 2.65324196460721 2.3887627892351 3.66867674679642 5.89164421182577 1.4036429994545 3.06805293513362 4.91265488573605 +observational 4.48863636973214 3.19458313229916 3.6163087612791 3.56953269648137 2.37954613413017 2.27521389619791 2.42480272571829 5.82008293035236 2.52572864430826 3.25424296870549 2.09556092355972 +observational 4.7361984483945 3.2846635654062 2.24812890719799 4.82028156560504 3.19458313229916 2.56494935746154 3.02042488614436 5.64897423816121 1.22377543162212 2.63188884013665 0 +observational 4.15575319035074 3.09557760852371 1.75440368268429 2.16791018966744 2.65324196460721 2.86789890204411 3.44361809754611 5.89164421182577 1.7630170003624 3.08648663682246 3.55248682920838 +observational 3.6163087612791 2.40694510831829 3.15700042115011 4.60517018598809 3.2846635654062 2.75366071235426 4.30000279919529 6.25190388316589 3.41772668361337 4.41642806139121 2.94968833505258 +observational 4.31748811353631 3.79548918917219 3.18221184049661 2.46809953147162 3.03013370027132 1.89761985992753 2.67414864942653 6.04500531403601 3.21084365317094 3.56104608260405 1.88858365386359 +observational 4.22683374526818 3.08648663682246 2.54160199346455 4.56017282005736 3.47196645255036 2.14124194258528 2.76000994003292 5.83773044716594 3.24649099190117 4.03777421073371 3.06805293513362 +observational 3.13983261752775 2.4932054526027 3.23080439573347 3.59731226058845 2.83321334405622 2.64617479738412 3.38099467434464 5.97126183979046 2.75366071235426 3.27336401015227 2.80336038090653 +observational 4.01096295328305 3.4904285153901 2.79116510781272 2.79728133483015 3.24649099190117 3.18221184049661 3.89385903480047 6.69208374250663 1.84371920815877 2.45958884180371 4.00186370942794 +observational 2.53369681395743 2.08691355651854 1.59127394180643 2.9704144655697 4.24563400976833 2.11384296839717 3.15700042115011 6.29526600143965 2.39789527279837 3.39114704580865 4.49758497530815 +observational 4.62497281328427 4.38077585277223 2.73436750941958 2.83321334405622 1.65441127807683 1.67335123817775 2.40694510831829 6.04500531403601 2.02419306744936 3.74242022104197 5.00394630594546 +observational 4.38077585277223 3.36384159511839 3.24649099190117 3.20274644293832 2.34180580614733 3.18221184049661 3.39114704580865 5.61312810638807 2.33214389523559 2.77881927199042 4.21803603456465 +observational 4.42484663185681 3.43720781918519 3.11351530921037 4.20916023665068 3.35340671782581 2.484906649788 3.23080439573347 5.18178355029209 3.49953328238302 4.19116874685764 3.55248682920838 +observational 4.38949864951258 3.70622809244855 2.82137888640921 2.65324196460721 1.41098697371026 3.00568260440716 3.50855589998265 5.47646355193151 1.37624402526639 1.96990565461153 4.40671924726425 +observational 4.06560209335645 3.8308129500026 2.97552956623647 5.03043792139244 2.92316158071916 1.51951320490611 0.53062825106217 4.72738781871234 4.66343909411207 5.03043792139244 3.53514535417189 +observational 4.11087386417331 3.32862668882732 3.4904285153901 3.96651119071222 2.41591377830105 2.55722731136763 3.41772668361337 5.6021188208797 2.50143595173921 2.96010509591084 2.24812890719799 +observational 3.92986292355648 2.70805020110221 2.80336038090653 2.86220088092947 1.69009581545155 3.7864597824528 4.41642806139121 7.06987412845857 2.13179677201376 3.08648663682246 2.73436750941958 +observational 2.72785282839839 2.81540871942271 3.08648663682246 4.66343909411207 3.68887945411394 2.24812890719799 3.11351530921037 6.06145691892802 3.49953328238302 3.93963817246112 2.87919845729804 +observational 3.89385903480047 3.20274644293832 2.31253542384721 4.97673374242057 2.66025953726586 2.50959926237837 3.19458313229916 6.11589212548303 3.26575941076705 3.63495111208838 2.86789890204411 +observational 3.75887182593397 3.20274644293832 3.21084365317094 4.0842942263686 3.03013370027132 3.11351530921037 3.73289633953071 6.00881318544259 3.04927304048202 3.80443779474821 2.9338568698359 +observational 4.04830062372069 3.42751468997953 3.88567903008854 2.27521389619791 4.16511363311031 2.7408400239252 3.31054301339402 6.25958146406492 2.05923883436232 3.18221184049661 4.52396013056255 +observational 2.67414864942653 3.70622809244855 2.97552956623647 6.05443934626937 4.29045944114839 2.72785282839839 3.49953328238302 5.8111409929767 1.10525683138678 2.99573227355399 4.37071287477361 +observational 4.49758497530815 2.96010509591084 2.80336038090653 2.76000994003292 0.262364264467491 3.77734810210154 4.38077585277223 7.45645455517621 2.4932054526027 3.20274644293832 2.16791018966744 +observational 4.07414185490458 2.86789890204411 3.21084365317094 5.18738580584075 4.11903717481247 2.85070650150373 4.23700086262362 6.57507584059962 0.712949807856125 3.41772668361337 4.46129981556839 +observational 4.93447393313069 4.70048036579242 3.15700042115011 6.20657592672493 4.43438186500781 3.03013370027132 3.70622809244855 6.01615715969835 3.00568260440716 3.68887945411394 2.96010509591084 +observational 3.59731226058845 2.91235066461494 1.17865499634165 2.27521389619791 3.6609942506244 1.43983512804792 2.56494935746154 5.48479693349065 2.79116510781272 3.59731226058845 3.03974915897077 +observational 2.9338568698359 2.9704144655697 3.25424296870549 5.77455154554441 3.94931879017184 2.35137525716348 3.13983261752775 5.89989735358249 1.33236601909433 2.3887627892351 4.30000279919529 +observational 3.58073729549423 2.71469474382088 2.37954613413017 4.45201900649392 3.05870707271538 2.31253542384721 3.16547504814109 6.02586597382531 3.08648663682246 3.98527346716774 3.29953372788566 +observational 3.60549784517489 2.97552956623647 3.10458667846607 4.66343909411207 3.29953372788566 2.4423470353692 3.06805293513362 5.68357976733868 0.703097511413113 2.40694510831829 4.46129981556839 +observational 4.13676527810605 3.3178157727231 4.34380542185368 3.98527346716774 2.77258872223978 2.05027016437956 2.64617479738412 5.80211837537706 2.92316158071916 3.67882911826043 2.55722731136763 +observational 3.96651119071222 3.34638914516716 2.79116510781272 4.68213122712422 3.80443779474821 2.79728133483015 3.42751468997953 5.36129216570943 2.9391619220656 3.47196645255036 2.9704144655697 +observational 3.94931879017184 3.19458313229916 3.14845336057165 4.82028156560504 3.71357206670431 2.37954613413017 3.03013370027132 5.80211837537706 3.32862668882732 4.11087386417331 3.4904285153901 +observational 2.13179677201376 2.98568193770049 2.9391619220656 4.93447393313069 3.90399083373088 2.75366071235426 3.2846635654062 5.68357976733868 0 4.61512051684126 1.82616089594539 +observational 3.6163087612791 2.81540871942271 2.68784749378469 4.39814601655377 2.58776403522771 2.23964529322017 3.21084365317094 5.79301360838414 3.21084365317094 3.72328088083127 3.4904285153901 +observational 4.23700086262362 3.6163087612791 3.05870707271538 3.68887945411394 3.06805293513362 2.61006979274201 3.3357695763397 5.88332238848828 2.50143595173921 3.27336401015227 4.0842942263686 +observational 3.20274644293832 2.77258872223978 3.16547504814109 5.97126183979046 4.72738781871234 2.82137888640921 3.37416870927424 5.87211778947542 2.484906649788 3.85014760171006 5.25227342804663 +observational 3.75887182593397 3.02042488614436 2.91235066461494 4.17284762371004 3.75887182593397 1.39376637595859 2.40694510831829 5.99146454710798 3.37416870927424 3.63495111208838 2.73436750941958 +observational 4.43438186500781 2.92316158071916 2.84490938381941 3.2188758248682 2.25758772706331 1.79009141212736 2.56494935746154 5.73979291217923 3.08648663682246 3.60549784517489 2.61739583283408 +observational 3.87743156065853 3.60549784517489 3.36384159511839 3.58905911883173 2.54160199346455 3.39114704580865 3.7864597824528 5.54907608489522 2.79116510781272 3.31054301339402 2.37954613413017 +observational 3.43720781918519 2.53369681395743 1.37624402526639 2.58021682959233 3.85014760171006 3.31054301339402 3.71357206670431 5.84643877505772 0.928219302739429 2.52572864430826 4.41642806139121 +observational 3.62434093297637 3.43720781918519 3.09557760852371 3.32862668882732 3.32862668882732 2.9338568698359 3.6163087612791 6.35088571671474 0.631271776841858 3.49953328238302 4.00186370942794 +observational 3.3178157727231 3.00568260440716 2.67414864942653 4.80402104473326 3.29212628660779 2.12226153886276 2.4932054526027 6.03548143252476 2.97552956623647 3.58073729549423 3.11351530921037 +observational 3.63495111208838 2.61739583283408 1.84371920815877 2.54160199346455 3.87743156065853 3.9926809084456 4.36182392735636 7.11476944836646 2.09556092355972 2.9338568698359 2.36085400111802 +observational 5.01063529409626 4.01998014693324 3.67882911826043 4.254193263164 4.44382703557933 3.94931879017184 4.47960696301275 6.47543271670409 3.13983261752775 3.74242022104197 3.01553490085017 +observational 3.93963817246112 3.11351530921037 2.73436750941958 3.07731226054641 2.66025953726586 2.82137888640921 3.4904285153901 5.89989735358249 2.23108909128898 2.70136121295141 3.73289633953071 +observational 3.65065824129374 2.94968833505258 3.09557760852371 3.13983261752775 1.78170913337455 3.38099467434464 3.51749783735832 5.6021188208797 3.41772668361337 4.07414185490458 4.0842942263686 +observational 4.14630430115281 3.6163087612791 3.63495111208838 4.39814601655377 3.66867674679642 5.75574221358691 6.43133108193348 7.29437729928882 2.89591193827178 3.42751468997953 2.27521389619791 +observational 3.29212628660779 2.98568193770049 3.2188758248682 2.99573227355399 1.96009478404727 2.57261223020711 3.40784192438082 6.74641212857337 1.78170913337455 3.40119738166216 5.47646355193151 +observational 3.29212628660779 2.68784749378469 2.18605127673809 4.45201900649392 2.14943391349987 2.23964529322017 2.98568193770049 6.22455842927536 3.02042488614436 3.66867674679642 3.24649099190117 +observational 4.11087386417331 2.85070650150373 3.48124008933569 3.55248682920838 3.2846635654062 3.03013370027132 4.83628190695148 5.01063529409626 2.52572864430826 3.96651119071222 5.57594910314632 +observational 3.94931879017184 3.15700042115011 3.6163087612791 4.00186370942794 0.916290731874155 3.11351530921037 3.6163087612791 5.7037824746562 3.51749783735832 4.01096295328305 3.64283551561253 +observational 3.54385368206368 2.67414864942653 2.83321334405622 4.60517018598809 2.76000994003292 3.09557760852371 3.2846635654062 5.31811999384422 3.14845336057165 3.88567903008854 3.86702563949741 +observational 4.57779898919196 3.34638914516716 3.41772668361337 3.80443779474821 2.52572864430826 2.7408400239252 3.27336401015227 5.58724865840025 2.05923883436232 4.00186370942794 5.83773044716594 +observational 1.83418018511201 3.04927304048202 0 4.91998092582813 1.45628673293993 1.81645208181843 2.7408400239252 7.27655640271871 2.42480272571829 2.9391619220656 2.2935443483419 +observational 2.86220088092947 3.58905911883173 1.44926916028128 6.06145691892802 3.69635146895264 2.33214389523559 3.67882911826043 4.44382703557933 3.14845336057165 4.19116874685764 2.4932054526027 +observational 1.00795792039998 1.37624402526639 3.64283551561253 3.63495111208838 2.25758772706331 3.85014760171006 4.27249074760558 7.04228617193974 3.25424296870549 3.92197333628131 4.72738781871234 +observational 3.87743156065853 3.35340671782581 3.2846635654062 4.43438186500781 3.39114704580865 1.73518911773966 2.80336038090653 6.19644412779452 1.68268837417369 3.65065824129374 4.79579054559674 +observational 3.98527346716774 3.65065824129374 2.99573227355399 2.65324196460721 2.27521389619791 2.08691355651854 2.76000994003292 6.00881318544259 2.84490938381941 3.27336401015227 2.96010509591084 +observational 4.12874598893943 3.03013370027132 2.68784749378469 2.67414864942653 2.09556092355972 2.23108909128898 3.21084365317094 6.02586597382531 1.24990173621434 3.51749783735832 5.31811999384422 +observational 4.11903717481247 3.26575941076705 1.60140574073684 4.52396013056255 3.21084365317094 2.91235066461494 2.99573227355399 6.39526159811545 2.4423470353692 2.91235066461494 1.87946504964716 +observational 4.13676527810605 3.62434093297637 4.11087386417331 5.04342511691925 3.07731226054641 2.55722731136763 2.64617479738412 5.92692602597041 3.13983261752775 3.85014760171006 3.26575941076705 +observational 4.63472898822964 3.63495111208838 2.36085400111802 3.85014760171006 2.19499988231411 2.83321334405622 3.4904285153901 5.54126354515843 0.989541193613748 3.79548918917219 0.667829372575655 +observational 3.70622809244855 2.23964529322017 3.13983261752775 2.92316158071916 0.89199803930511 1.86252854011626 2.9704144655697 5.80211837537706 2.14943391349987 2.99573227355399 2.07819075977818 +observational 4.67282883446191 3.32862668882732 2.39789527279837 4.94875989037817 3.4626060097908 2.65324196460721 3.31054301339402 5.82008293035236 2.41591377830105 3.20274644293832 2.34180580614733 +observational 4.66343909411207 4.01096295328305 2.91235066461494 2.80336038090653 2.34180580614733 2.94968833505258 3.40119738166216 5.65599181081985 1.44926916028128 2.75366071235426 4.27249074760558 +observational 3.71357206670431 3.34638914516716 3.03013370027132 2.62466859216316 2.85070650150373 2.75366071235426 4.50645421304893 6.89871453432999 3.2846635654062 3.76815263500844 3.15700042115011 +observational 2.9391619220656 2.39789527279837 2.65324196460721 2.15871472257434 3.54385368206368 5.03043792139244 5.47646355193151 6.55677835615804 3.48124008933569 3.72328088083127 2.63188884013665 +observational 3.56104608260405 3.15700042115011 3.23867845216438 3.10458667846607 1.39376637595859 2.24812890719799 2.55722731136763 5.80211837537706 2.61006979274201 3.58905911883173 2.31253542384721 +observational 3.67882911826043 2.85070650150373 2.62466859216316 4.70953020131233 3.93963817246112 2.50143595173921 2.89591193827178 5.99146454710798 0.765467842139571 4.54223038621422 1.21491274436427 +observational 2.83321334405622 1.90657514365664 1.97823903617067 4.01998014693324 2.10413415427021 1.27815220250019 3.37416870927424 6.47543271670409 2.9704144655697 3.67882911826043 1.99741770620125 +observational 4.52396013056255 3.44361809754611 2.28442112236637 3.58905911883173 4.47960696301275 1.77155676191054 2.4932054526027 5.94542060860658 2.08691355651854 3.02042488614436 1.98787434815435 +observational 3.23867845216438 2.9391619220656 2.81540871942271 3.36384159511839 1.57484646766448 2.13179677201376 2.61006979274201 6.49375383985169 2.76000994003292 3.63495111208838 2.91235066461494 +observational 4.15575319035074 3.35340671782581 3.02042488614436 2.96010509591084 1.94304891677428 3.03974915897077 3.2846635654062 5.94542060860658 2.40694510831829 3.12236492448736 3.40119738166216 +observational 3.11351530921037 3.79548918917219 2.54160199346455 5.05624580534831 2.4932054526027 3.12236492448736 3.29953372788566 6.09807428216624 2.88480071284671 3.68887945411394 2.54160199346455 +observational 3.6609942506244 2.66025953726586 2.9391619220656 5.11799381241676 3.59731226058845 1.65441127807683 1.6467336971778 6.25190388316589 2.75366071235426 3.20274644293832 3.15700042115011 +observational 3.02042488614436 1.9154509415706 2.87919845729804 5.0998664278242 3.86702563949741 2.58021682959233 3.02042488614436 6.30444880242198 2.71469474382088 3.56104608260405 2.55722731136763 +observational 4.49758497530815 3.70622809244855 3.08648663682246 2.77258872223978 3.18221184049661 3.14845336057165 3.94931879017184 6.98841318199959 1.48387468945875 2.50959926237837 4.10098910494077 +observational 4.69134788222914 4.23700086262362 2.61006979274201 4.34380542185368 1.708377860289 4.3267781604434 4.67282883446191 6.33150184989369 2.96010509591084 3.58073729549423 3.40784192438082 +observational 4.12874598893943 3.2188758248682 4.0842942263686 4.69134788222914 3.45315712059287 3.43720781918519 3.95699637107088 6.85329909318608 3.34638914516716 3.89385903480047 1.73518911773966 +observational 3.62434093297637 2.9704144655697 3.08648663682246 4.54223038621422 3.4626060097908 2.76000994003292 3.24649099190117 5.8636311755981 3.31054301339402 3.53514535417189 2.87919845729804 +observational 4.16511363311031 3.10458667846607 3.59731226058845 5.88332238848828 4.13676527810605 2.46809953147162 3.07731226054641 6.13339804299665 2.58776403522771 3.03974915897077 2.37954613413017 +observational 3.40119738166216 3.21084365317094 2.81540871942271 4.37071287477361 3.74242022104197 2.82137888640921 3.49953328238302 7.20489251020467 2.484906649788 3.41772668361337 2.82137888640921 +observational 3.56104608260405 2.77881927199042 3.60549784517489 3.85862222870103 2.35137525716348 2.33214389523559 2.66025953726586 6.95272864462487 3.60549784517489 4.58700621536042 4.12874598893943 +observational 4.10098910494077 2.7408400239252 2.61006979274201 4.254193263164 3.69635146895264 2.13179677201376 3.05870707271538 5.52146091786225 3.16547504814109 3.68887945411394 3.39114704580865 +observational 3.55248682920838 3.45315712059287 3.08648663682246 5.50533153593236 4.36182392735636 2.36085400111802 3.54385368206368 6.13339804299665 3.6163087612791 4.0842942263686 3.48124008933569 +observational 3.85862222870103 3.54385368206368 1.95160817016995 3.51749783735832 3.62434093297637 1.99741770620125 2.3887627892351 6.00881318544259 3.44361809754611 3.92986292355648 3.49953328238302 +observational 2.89591193827178 3.37416870927424 2.86789890204411 3.69635146895264 3.65065824129374 2.50959926237837 2.82137888640921 6.13339804299665 1.92424865227413 2.4423470353692 3.39114704580865 +observational 3.95699637107088 3.48124008933569 2.51769647261099 3.92986292355648 3.10458667846607 2.89591193827178 3.4904285153901 5.8636311755981 2.08691355651854 3.36384159511839 1.57484646766448 +observational 4.19116874685764 3.20274644293832 3.65065824129374 4.81218435537242 3.63495111208838 2.57261223020711 3.10458667846607 5.89989735358249 2.43361335540045 3.67882911826043 4.52396013056255 +observational 2.92316158071916 3.37416870927424 2.60268968544438 2.83321334405622 2.61739583283408 2.88480071284671 3.04927304048202 5.84643877505772 2.39789527279837 3.15700042115011 2.72785282839839 +observational 3.6609942506244 3.14845336057165 2.51769647261099 3.32862668882732 3.87743156065853 0.783901543828409 2.53369681395743 4.15575319035074 2.15871472257434 3.07731226054641 3.29212628660779 +observational 4.52396013056255 2.81540871942271 1.7263316639056 2.00552585872967 3.3178157727231 4.01096295328305 4.33598269617247 6.66440902035041 2.77258872223978 3.35340671782581 2.10413415427021 +observational 4.93447393313069 4.03777421073371 3.94931879017184 3.71357206670431 3.86702563949741 2.88480071284671 3.76815263500844 7.05185562295589 2.43361335540045 3.43720781918519 3.53514535417189 +observational 4.52396013056255 3.59731226058845 1.32175583998232 4.72738781871234 2.86789890204411 3.21084365317094 3.47196645255036 5.76519110278484 1.34807314829969 2.89591193827178 3.15700042115011 +observational 4.36182392735636 3.41772668361337 2.96010509591084 4.49758497530815 3.50855589998265 1.43983512804792 3.4626060097908 6.70073110954781 0.457424847038875 2.9338568698359 4.00186370942794 +observational 3.17387845893747 3.16547504814109 3.34638914516716 3.40119738166216 2.00552585872967 2.82137888640921 3.51749783735832 5.40717177146012 1.44926916028128 3.73289633953071 4.91265488573605 +observational 4.52396013056255 3.42751468997953 3.00568260440716 3.06805293513362 1.80828877117927 3.29212628660779 3.94931879017184 7.3304052118444 0.576613364303994 3.11351530921037 4.43438186500781 +observational 3.58073729549423 3.3357695763397 2.4932054526027 4.90527477843843 3.25424296870549 1.83418018511201 2.53369681395743 6.06145691892802 2.86789890204411 3.3178157727231 2.41591377830105 +observational 4.16511363311031 2.89591193827178 3.16547504814109 2.79728133483015 1.21491274436427 2.79116510781272 3.52636052461616 5.87211778947542 2.2935443483419 3.03974915897077 1.84371920815877 +observational 4.40671924726425 3.3357695763397 2.58021682959233 4.38077585277223 3.50855589998265 2.13179677201376 2.87919845729804 6.38687931936265 3.39114704580865 3.86702563949741 4.42484663185681 +observational 4.01096295328305 3.01553490085017 3.23867845216438 2.75366071235426 2.79728133483015 3.14845336057165 3.52636052461616 5.76519110278484 2.40694510831829 3.31054301339402 1.4747630091075 +observational 3.66867674679642 3.26575941076705 3.11351530921037 4.65396035015752 3.12236492448736 2.73436750941958 3.21084365317094 5.94542060860658 3.49953328238302 4.49758497530815 3.40119738166216 +observational 4.19116874685764 3.50855589998265 3.88567903008854 4.01096295328305 2.87919845729804 2.39789527279837 3.3357695763397 6.5206211275587 2.4423470353692 3.14845336057165 3.27336401015227 +observational 4.13676527810605 3.17387845893747 3.21084365317094 3.56953269648137 2.11384296839717 2.28442112236637 3.29953372788566 6.08904487544685 2.27521389619791 3.31054301339402 3.98527346716774 +observational 3.98527346716774 2.70805020110221 2.55722731136763 4.21803603456465 1.96990565461153 3.10458667846607 3.65065824129374 5.67675380226828 0.385262400790645 2.23964529322017 4.26267987704132 +observational 2.86220088092947 2.7408400239252 3.25424296870549 3.27336401015227 2.68102152871429 2.73436750941958 3.59731226058845 5.37989735354046 3.56953269648137 4.34380542185368 2.99573227355399 +observational 3.9759363311718 3.18221184049661 2.02419306744936 4.46129981556839 2.99573227355399 3.16547504814109 3.82209829790016 6.93439720992856 2.37024374146786 3.03013370027132 2.32238772029023 +observational 3.49953328238302 2.83321334405622 2.28442112236637 3.2846635654062 3.7864597824528 2.76000994003292 3.23080439573347 6.36818718635049 2.87919845729804 3.67882911826043 3.06805293513362 +observational 4.27249074760558 3.25424296870549 3.21084365317094 4.64439089914137 3.62434093297637 3.02042488614436 3.56953269648137 5.73009978297357 3.14845336057165 3.8308129500026 3.45315712059287 +observational 3.38099467434464 2.81540871942271 2.9391619220656 4.56017282005736 3.54385368206368 2.61006979274201 3.11351530921037 5.77455154554441 3.18221184049661 3.53514535417189 2.55722731136763 +observational 4.12874598893943 3.19458313229916 2.13179677201376 2.01490302054226 2.7408400239252 2.13179677201376 3.05870707271538 6.06145691892802 3.20274644293832 3.62434093297637 3.18221184049661 +observational 3.88567903008854 3.03013370027132 2.75366071235426 4.3528552573736 3.15700042115011 2.50959926237837 3.60549784517489 6.5206211275587 0 4.44382703557933 2.24812890719799 +observational 3.92986292355648 2.91235066461494 3.90399083373088 3.96651119071222 3.15700042115011 2.18605127673809 2.89591193827178 6.19644412779452 2.91235066461494 3.66867674679642 2.52572864430826 +observational 2.56494935746154 1.4747630091075 2.47653840011748 3.71357206670431 2.88480071284671 1.97823903617067 3.43720781918519 7.3038432252777 2.9338568698359 3.8308129500026 2.99573227355399 +observational 3.92197333628131 3.24649099190117 3.18221184049661 2.86789890204411 2.7408400239252 2.26695791535089 3.02042488614436 6.03548143252476 1.43031124653666 3.70622809244855 4.22683374526818 +observational 3.65065824129374 2.76000994003292 2.72785282839839 3.86702563949741 4.11903717481247 3.00568260440716 3.23867845216438 5.61312810638807 2.30258509299405 3.4904285153901 2.65324196460721 +observational 3.74242022104197 3.7864597824528 2.07819075977818 4.45201900649392 2.99573227355399 3.36384159511839 4.00186370942794 6.08904487544685 3.19458313229916 3.54385368206368 2.1770218700187 +observational 4.64439089914137 3.4904285153901 3.41772668361337 4.57779898919196 3.25424296870549 3.06805293513362 3.56953269648137 5.85507192220243 2.72785282839839 3.29953372788566 2.71469474382088 +observational 4.70048036579242 3.98527346716774 3.2188758248682 4.44382703557933 3.44361809754611 3.29953372788566 3.74242022104197 5.58724865840025 1.52822785700856 3.85014760171006 3.51749783735832 +observational 3.52636052461616 3.29212628660779 2.87919845729804 4.38949864951258 2.92316158071916 3.20274644293832 3.4626060097908 5.59471137960184 2.92316158071916 3.70622809244855 2.68102152871429 +observational 4.5152454784601 3.66867674679642 2.70805020110221 2.77258872223978 3.65065824129374 1.9154509415706 3.04927304048202 6.14418563412565 3.13113691056019 3.59731226058845 2.83321334405622 +observational 3.56953269648137 3.62434093297637 1.39376637595859 3.08648663682246 2.61739583283408 1.5830939370945 2.85070650150373 6.25958146406492 1.26694760348732 2.80336038090653 4.24563400976833 +observational 4.01096295328305 2.64617479738412 3.34638914516716 4.74493212836325 3.62434093297637 3.49953328238302 4.33598269617247 7.20489251020467 2.67414864942653 3.29212628660779 2.2213750375685 +observational 3.62434093297637 2.79728133483015 2.92316158071916 3.71357206670431 1.6467336971778 7.85205020726589 8.17611034223734 8.40983067308774 2.68102152871429 3.58905911883173 3.19458313229916 +observational 3.74242022104197 3.13113691056019 3.2846635654062 3.35340671782581 1.56444054650336 2.79728133483015 3.25424296870549 5.97126183979046 3.36384159511839 3.65065824129374 3.04927304048202 +observational 3.89385903480047 3.56104608260405 3.20274644293832 4.74493212836325 2.37954613413017 3.74242022104197 4.26267987704132 6.55677835615804 0.879626747502564 2.94968833505258 4.65396035015752 +observational 4.21803603456465 3.25424296870549 2.86789890204411 2.77258872223978 2.96010509591084 2.24812890719799 3.47196645255036 6.55677835615804 3.41772668361337 4.01998014693324 3.68887945411394 +observational 4.0842942263686 3.67882911826043 2.9391619220656 2.64617479738412 2.77258872223978 1.98787434815435 3.14845336057165 5.12396397940326 3.44361809754611 3.92197333628131 3.00568260440716 +observational 3.53514535417189 3.08648663682246 3.23867845216438 4.17284762371004 3.31054301339402 2.35137525716348 3.45315712059287 5.7037824746562 2.08691355651854 3.05870707271538 1.79009141212736 +observational 5.0998664278242 3.71357206670431 4.254193263164 5.26269018890489 4.18205014264121 3.72328088083127 3.90399083373088 5.80211837537706 3.19458313229916 3.71357206670431 2.50959926237837 +observational 3.59731226058845 2.1770218700187 3.18221184049661 2.55722731136763 1.51072193949494 2.79728133483015 3.27336401015227 5.04342511691925 3.25424296870549 3.70622809244855 2.94968833505258 +observational 3.88567903008854 3.4904285153901 0 4.77068462446567 2.33214389523559 0.431782416425538 2.66025953726586 6.41345895716736 0.989541193613748 3.56953269648137 4.07414185490458 +observational 4.33598269617247 3.47196645255036 3.11351530921037 4.48863636973214 2.77881927199042 2.43361335540045 3.11351530921037 6.16961073249146 2.37024374146786 3.01553490085017 1.24990173621434 +observational 3.24649099190117 3.02042488614436 3.34638914516716 4.45201900649392 3.27336401015227 3.85014760171006 4.46129981556839 6.1527326947041 3.08648663682246 3.60549784517489 2.67414864942653 +observational 2.484906649788 2.61739583283408 2.9704144655697 2.75366071235426 2.58021682959233 4.18205014264121 4.70953020131233 7.64539769942863 0 4.58700621536042 1.55603713570699 +observational 4.71849887129509 2.9338568698359 2.94968833505258 3.71357206670431 1.8531680973567 2.3887627892351 3.40119738166216 6.08904487544685 2.80336038090653 3.32862668882732 2.70805020110221 +observational 4.40671924726425 4.01998014693324 3.29212628660779 4.56954300834494 2.58776403522771 1.69009581545155 2.52572864430826 6.10702288774225 1.79009141212736 2.76000994003292 0 +observational 3.85014760171006 2.89591193827178 2.79116510781272 3.27336401015227 2.19499988231411 2.96010509591084 3.58905911883173 6.26909628370626 3.41772668361337 3.70622809244855 2.3887627892351 +observational 4.0926765051214 3.07731226054641 3.26575941076705 4.37071287477361 3.02042488614436 2.97552956623647 3.43720781918519 5.52146091786225 3.03013370027132 3.27336401015227 2.51769647261099 +observational 3.43720781918519 2.50143595173921 1.34025042261848 3.25424296870549 3.49953328238302 1.90657514365664 2.25758772706331 5.83773044716594 3.67882911826043 4.38949864951258 3.66867674679642 +observational 3.62434093297637 2.99573227355399 1.35840915763035 2.02419306744936 2.66025953726586 3.03974915897077 3.66867674679642 5.71042701737487 2.37954613413017 3.3357695763397 2.02419306744936 +observational 4.01998014693324 2.82137888640921 3.90399083373088 3.6163087612791 2.90690105984738 2.77258872223978 3.20274644293832 5.6937321388027 2.94968833505258 3.49953328238302 3.43720781918519 +observational 2.13179677201376 2.87919845729804 3.32862668882732 4.63472898822964 3.56953269648137 2.14124194258528 2.97552956623647 5.66642668811243 2.40694510831829 3.35340671782581 2.79116510781272 +observational 4.0842942263686 2.9338568698359 2.56494935746154 3.50855589998265 3.79548918917219 3.20274644293832 4.01998014693324 7.32118855673948 3.53514535417189 4.33598269617247 3.52636052461616 +observational 4.24563400976833 3.41772668361337 3.49953328238302 4.76217393479776 4.01998014693324 2.36085400111802 3.3357695763397 6.69208374250663 0.916290731874155 3.15700042115011 4.05698877567833 +observational 3.69635146895264 2.7408400239252 2.70805020110221 4.15575319035074 3.38099467434464 3.27336401015227 3.77734810210154 6.47543271670409 2.41591377830105 3.26575941076705 2.34180580614733 +observational 3.6609942506244 2.28442112236637 3.4904285153901 3.85862222870103 4.19116874685764 2.68102152871429 3.36384159511839 5.7037824746562 2.42480272571829 3.03974915897077 1.39376637595859 +observational 3.44361809754611 3.15700042115011 3.44361809754611 5.04342511691925 3.72328088083127 1.870262530716 2.65324196460721 6.10702288774225 2.73436750941958 3.25424296870549 2.77881927199042 +observational 4.28082412916472 2.84490938381941 3.19458313229916 3.21084365317094 2.86789890204411 1.96990565461153 3.62434093297637 4.14630430115281 0.99694863489161 3.04927304048202 4.57779898919196 +observational 3.87743156065853 2.7408400239252 2.82137888640921 5.11799381241676 3.58905911883173 2.4423470353692 2.92316158071916 6.02586597382531 2.51769647261099 2.70136121295141 2.62466859216316 +observational 2.92316158071916 2.33214389523559 4.14630430115281 3.93963817246112 3.21084365317094 2.05923883436232 2.63188884013665 6.22455842927536 1.75440368268429 2.63188884013665 4.27249074760558 +observational 3.9926809084456 2.61739583283408 2.99573227355399 2.65324196460721 3.25424296870549 1.66392609771817 2.67414864942653 3.52636052461616 2.32238772029023 3.23867845216438 2.20386912005489 +observational 3.50855589998265 2.61006979274201 4.67282883446191 5.17048399503815 4.0926765051214 3.27336401015227 3.52636052461616 5.64897423816121 0.314810739840034 2.9391619220656 4.14630430115281 +observational 3.6163087612791 2.79728133483015 1.80828877117927 2.07819075977818 2.53369681395743 3.27336401015227 4.0842942263686 7.09672137849476 2.67414864942653 3.09557760852371 0.819779831493311 +observational 3.76815263500844 2.79728133483015 2.86789890204411 3.20274644293832 1.98787434815435 3.11351530921037 3.2188758248682 5.76519110278484 1.41098697371026 3.18221184049661 1.67335123817775 +observational 4.17284762371004 3.47196645255036 2.07819075977818 3.53514535417189 1.33236601909433 1.2947271675944 2.50143595173921 4.77912349311153 3.04927304048202 3.60549784517489 3.13113691056019 +observational 4.36182392735636 3.64283551561253 2.45958884180371 5.00394630594546 3.08648663682246 2.86220088092947 3.48124008933569 5.65599181081985 3.19458313229916 3.82209829790016 3.54385368206368 +observational 3.64283551561253 2.60268968544438 2.92316158071916 3.40784192438082 2.54160199346455 2.37954613413017 3.02042488614436 5.92692602597041 1.51951320490611 3.70622809244855 4.37071287477361 +observational 3.02042488614436 2.70805020110221 2.63188884013665 4.90527477843843 3.55248682920838 0.99694863489161 3.3178157727231 6.45833828334479 2.92316158071916 3.64283551561253 2.63188884013665 +observational 3.9926809084456 3.8308129500026 3.20274644293832 2.97552956623647 3.09557760852371 2.92316158071916 3.62434093297637 5.84643877505772 3.18221184049661 3.75185425327532 3.48124008933569 +observational 3.81330703248899 2.9338568698359 2.79728133483015 3.42751468997953 1.4747630091075 2.90690105984738 3.47196645255036 5.75574221358691 2.10413415427021 3.14845336057165 3.20274644293832 +observational 3.71357206670431 3.05870707271538 2.77881927199042 3.01553490085017 2.31253542384721 4.27249074760558 4.88280192258637 6.39526159811545 3.63495111208838 4.00186370942794 3.10458667846607 +observational 3.8308129500026 3.32862668882732 2.63188884013665 2.83321334405622 2.7408400239252 2.86220088092947 3.67882911826043 5.73979291217923 2.15871472257434 3.19458313229916 0.494696241836107 +observational 3.10458667846607 3.03974915897077 1.88858365386359 3.49953328238302 2.25758772706331 1.88858365386359 2.70136121295141 6.22455842927536 2.54160199346455 3.38099467434464 2.50143595173921 +observational 2.65324196460721 2.50959926237837 2.89591193827178 4.30000279919529 3.34638914516716 1.88858365386359 2.61006979274201 5.77455154554441 1.02604159583327 2.1770218700187 3.66867674679642 +observational 3.86702563949741 3.40784192438082 2.68102152871429 4.42484663185681 4.07414185490458 2.2213750375685 3.67882911826043 6.60258789218934 3.35340671782581 3.74242022104197 3.09557760852371 +observational 3.51749783735832 2.40694510831829 3.17387845893747 2.87919845729804 2.09556092355972 2.26695791535089 3.06805293513362 6.25190388316589 3.77734810210154 4.48863636973214 3.13113691056019 +observational 4.28082412916472 3.26575941076705 1.39376637595859 2.9704144655697 3.8308129500026 1.51951320490611 2.84490938381941 6.48463523563525 2.53369681395743 3.32862668882732 2.91235066461494 +observational 3.92986292355648 3.12236492448736 2.86220088092947 4.77068462446567 3.19458313229916 3.07731226054641 3.47196645255036 5.76519110278484 2.00552585872967 3.19458313229916 4.20020495292158 +observational 4.83628190695148 4.07414185490458 5.11799381241676 5.80211837537706 4.77068462446567 2.2213750375685 3.11351530921037 5.20948615284142 1.50185270175416 3.25424296870549 4.56017282005736 +observational 3.56104608260405 2.84490938381941 3.2846635654062 4.0842942263686 2.58021682959233 1.57484646766448 3.77734810210154 6.65544035036765 3.53514535417189 3.81330703248899 2.79116510781272 +observational 3.27336401015227 2.77258872223978 2.86220088092947 2.91235066461494 2.45958884180371 2.13179677201376 2.85070650150373 6.08904487544685 2.13179677201376 3.24649099190117 4.67282883446191 +observational 4.24563400976833 3.79548918917219 2.79728133483015 5.23644196282995 3.55248682920838 3.75887182593397 4.20020495292158 7.01571242048723 2.94968833505258 3.87743156065853 3.23080439573347 +observational 3.18221184049661 2.84490938381941 2.86789890204411 4.47960696301275 2.70805020110221 2.53369681395743 3.38099467434464 5.64897423816121 2.90690105984738 3.6609942506244 2.54160199346455 +observational 1.5830939370945 2.67414864942653 2.37954613413017 5.27299955856375 3.6609942506244 3.02042488614436 3.67882911826043 5.17048399503815 2.39789527279837 3.11351530921037 1.77155676191054 +observational 4.03777421073371 3.18221184049661 2.12226153886276 3.02042488614436 3.45315712059287 2.01490302054226 3.08648663682246 6.13339804299665 1.45628673293993 2.58021682959233 4.12874598893943 +observational 2.73436750941958 3.27336401015227 2.79728133483015 4.01998014693324 2.72785282839839 2.73436750941958 3.2188758248682 6.12468339089421 2.04122032885964 2.96010509591084 2.65324196460721 +observational 3.8308129500026 3.15700042115011 2.34180580614733 4.30000279919529 2.52572864430826 1.69009581545155 2.65324196460721 6.25190388316589 2.83321334405622 3.27336401015227 2.91235066461494 +observational 3.71357206670431 2.89591193827178 2.90690105984738 4.37071287477361 2.73436750941958 2.86220088092947 3.3357695763397 5.89989735358249 3.12236492448736 3.54385368206368 2.41591377830105 +observational 3.72328088083127 3.41772668361337 2.65324196460721 4.83628190695148 3.3178157727231 3.01553490085017 3.77734810210154 5.7037824746562 2.65324196460721 3.21084365317094 3.13113691056019 +observational 4.18205014264121 3.51749783735832 2.50143595173921 2.67414864942653 2.32238772029023 2.65324196460721 3.34638914516716 5.43372200355424 1.69009581545155 3.40119738166216 4.55071400019203 +observational 4.10098910494077 3.52636052461616 0 6.19644412779452 3.75887182593397 3.72328088083127 4.26267987704132 6.45833828334479 3.34638914516716 3.75185425327532 2.86789890204411 +observational 4.34380542185368 3.03013370027132 4.18205014264121 4.02891675689965 3.51749783735832 3.03974915897077 3.56953269648137 6.02586597382531 1.10525683138678 2.65324196460721 4.13676527810605 +observational 4.15575319035074 3.16547504814109 0 4.77068462446567 2.3887627892351 3.93963817246112 4.60517018598809 7.19593722647557 3.13113691056019 4.00186370942794 2.87919845729804 +observational 4.64439089914137 3.64283551561253 3.3357695763397 3.3178157727231 4.46129981556839 2.66025953726586 3.15700042115011 6.16120732169508 3.21084365317094 3.3178157727231 2.27521389619791 +observational 4.254193263164 3.6609942506244 3.59731226058845 4.12874598893943 2.96010509591084 3.19458313229916 3.74242022104197 5.85507192220243 1.39376637595859 2.3887627892351 2.9338568698359 +observational 4.3528552573736 4.37071287477361 3.18221184049661 3.05870707271538 2.83321334405622 2.70136121295141 3.23080439573347 5.63121178182137 2.9338568698359 3.74242022104197 3.03013370027132 +observational 4.36182392735636 3.35340671782581 2.80336038090653 5.01063529409626 3.9759363311718 2.51769647261099 3.26575941076705 6.20657592672493 3.50855589998265 4.30811095172371 3.39114704580865 +observational 2.98568193770049 3.59731226058845 3.04927304048202 3.3357695763397 2.66025953726586 2.92316158071916 3.67882911826043 5.61312810638807 3.29953372788566 3.64283551561253 1.88858365386359 +observational 4.02891675689965 3.29212628660779 3.02042488614436 3.06805293513362 2.37024374146786 3.19458313229916 3.63495111208838 5.75574221358691 1.35840915763035 2.68784749378469 4.34380542185368 +observational 5.77455154554441 5.44241771052179 2.70805020110221 6.08904487544685 4.14630430115281 3.8416005411316 4.28082412916472 5.59471137960184 3.94931879017184 4.52396013056255 4.37071287477361 +observational 3.8416005411316 3.05870707271538 2.86220088092947 4.03777421073371 3.58073729549423 3.8308129500026 4.31748811353631 5.88332238848828 3.25424296870549 3.67882911826043 2.79728133483015 +observational 3.50855589998265 3.02042488614436 3.21084365317094 2.9338568698359 2.99573227355399 2.9338568698359 3.81330703248899 6.61069604471776 2.70136121295141 3.26575941076705 2.65324196460721 +observational 4.53367418428302 3.50855589998265 2.53369681395743 4.3528552573736 3.2846635654062 3.4626060097908 3.70622809244855 5.68357976733868 3.34638914516716 4.19116874685764 3.73289633953071 +observational 4.70953020131233 3.89385903480047 2.75366071235426 2.47653840011748 3.23080439573347 2.54160199346455 3.23080439573347 5.55682806169954 1.23256026117785 2.50959926237837 4.13676527810605 +observational 3.50855589998265 2.83321334405622 3.42751468997953 3.85014760171006 4.16511363311031 1.28647402583768 2.91235066461494 6.07993319509559 3.31054301339402 3.56953269648137 2.99573227355399 +observational 3.49953328238302 3.36384159511839 3.2846635654062 3.13113691056019 1.53901544813755 2.9391619220656 3.73289633953071 6.23244801655052 2.58776403522771 3.05870707271538 2.43361335540045 +observational 3.91202300542815 2.75366071235426 3.52636052461616 4.0842942263686 4.45201900649392 2.73436750941958 3.38099467434464 6.10702288774225 2.57261223020711 3.55248682920838 4.29045944114839 +observational 3.96651119071222 3.03013370027132 2.9338568698359 3.01553490085017 2.58021682959233 0.254642218373581 2.14943391349987 5.8111409929767 3.03013370027132 3.64283551561253 2.86789890204411 +observational 4.50645421304893 3.50855589998265 2.65324196460721 3.06805293513362 4.14630430115281 2.85070650150373 3.55248682920838 5.91889385427315 2.45958884180371 2.83321334405622 2.54160199346455 +observational 4.46129981556839 2.76000994003292 3.03013370027132 4.64439089914137 2.9704144655697 3.04927304048202 3.4626060097908 5.43372200355424 2.00552585872967 3.64283551561253 4.48863636973214 +observational 3.69635146895264 3.11351530921037 2.77881927199042 3.00568260440716 3.16547504814109 2.07819075977818 3.02042488614436 6.35957386867238 3.12236492448736 3.76815263500844 2.43361335540045 +observational 2.9338568698359 2.33214389523559 3.37416870927424 5.5683445037611 4.11903717481247 3.59731226058845 3.95699637107088 5.72031177660741 3.13983261752775 3.58905911883173 2.71469474382088 +observational 2.61739583283408 2.63188884013665 2.98568193770049 3.03974915897077 2.77881927199042 1.55603713570699 2.76000994003292 4.14630430115281 3.49953328238302 3.60549784517489 0.756121979721334 +observational 4.10098910494077 4.42484663185681 2.86220088092947 2.80336038090653 2.06812778177956 1.73518911773966 2.9338568698359 3.58073729549423 0.0953101798043249 2.94968833505258 3.94931879017184 +observational 4.254193263164 3.16547504814109 0.542324290825362 5.99146454710798 3.86702563949741 2.37954613413017 3.38099467434464 6.25958146406492 3.8308129500026 4.50645421304893 4.0842942263686 +observational 3.32862668882732 1.28647402583768 2.9704144655697 3.23080439573347 2.79728133483015 3.18221184049661 3.67882911826043 5.8111409929767 1.93441576962958 2.75366071235426 4.84418708645859 +observational 3.86702563949741 3.44361809754611 2.70805020110221 4.66343909411207 3.41772668361337 3.13983261752775 3.37416870927424 5.53338948872752 0.500775287912489 3.35340671782581 4.01096295328305 +observational 3.38099467434464 3.25424296870549 3.27336401015227 3.56953269648137 1.81645208181843 3.05870707271538 3.72328088083127 6.4393503711001 3.14845336057165 3.96651119071222 3.37416870927424 +observational 4.46129981556839 3.19458313229916 2.92316158071916 2.87919845729804 2.53369681395743 4.5152454784601 5.15329159449778 6.75460409948796 2.27521389619791 2.99573227355399 2.81540871942271 +observational 4.83628190695148 4.65396035015752 3.15700042115011 4.16511363311031 3.58905911883173 1.96009478404727 2.91235066461494 6.04500531403601 2.82137888640921 3.24649099190117 2.91235066461494 +observational 3.9926809084456 3.29212628660779 2.73436750941958 2.60268968544438 1.13462272619114 2.91235066461494 3.56953269648137 5.76519110278484 2.36085400111802 3.14845336057165 2.71469474382088 +observational 3.54385368206368 2.62466859216316 2.25758772706331 5.29831736654804 3.23080439573347 2.11384296839717 2.83321334405622 6.29526600143965 2.23108909128898 2.36085400111802 3.52636052461616 +observational 4.12874598893943 3.10458667846607 2.77258872223978 3.18221184049661 3.09557760852371 2.41591377830105 3.65065824129374 6.47543271670409 2.16791018966744 2.96010509591084 2.83321334405622 +observational 4.10098910494077 3.09557760852371 3.3178157727231 3.08648663682246 2.31253542384721 1.69927861643389 3.00568260440716 6.84481547920826 2.91235066461494 3.88567903008854 5.12396397940326 +observational 4.43438186500781 3.13983261752775 2.91235066461494 4.11087386417331 3.05870707271538 1.9154509415706 3.47196645255036 6.58340922215876 2.28442112236637 3.34638914516716 2.64617479738412 +observational 3.76815263500844 3.09557760852371 2.37954613413017 4.66343909411207 2.77881927199042 1.95160817016995 2.58021682959233 6.62936325343745 1.61938824328727 2.37024374146786 3.72328088083127 +observational 4.19116874685764 3.34638914516716 3.42751468997953 5.28826703069454 3.40119738166216 2.31253542384721 3.3178157727231 6.05443934626937 2.89591193827178 3.43720781918519 2.36085400111802 +observational 3.23867845216438 2.58021682959233 3.10458667846607 2.54160199346455 3.48124008933569 2.06812778177956 3.44361809754611 5.95324333428778 2.7408400239252 3.40119738166216 4.43438186500781 +observational 3.4904285153901 2.53369681395743 2.50959926237837 2.87919845729804 3.87743156065853 3.36384159511839 3.93963817246112 6.68336094576627 2.36085400111802 2.85070650150373 2.01490302054226 +observational 2.9704144655697 3.90399083373088 1.80828877117927 2.77881927199042 3.3357695763397 2.85070650150373 3.45315712059287 6.47543271670409 3.03974915897077 3.80443779474821 2.82137888640921 +observational 3.8416005411316 3.09557760852371 2.86789890204411 3.29953372788566 2.73436750941958 4.13676527810605 4.59612944133594 7.63626960337937 2.96010509591084 3.64283551561253 3.23080439573347 +observational 3.72328088083127 2.45958884180371 4.48863636973214 5.33271879326537 3.96651119071222 3.21084365317094 3.76815263500844 6.01615715969835 0.56531380905006 3.35340671782581 4.41642806139121 +observational 3.74242022104197 3.3178157727231 3.06805293513362 4.21803603456465 2.50959926237837 2.11384296839717 2.76000994003292 6.33150184989369 3.08648663682246 3.39114704580865 2.11384296839717 +observational 4.12874598893943 3.07731226054641 2.25758772706331 1.870262530716 3.53514535417189 2.72785282839839 3.13983261752775 5.76519110278484 2.47653840011748 3.56953269648137 3.92986292355648 +observational 4.63472898822964 3.47196645255036 2.32238772029023 2.58021682959233 3.92986292355648 1.66392609771817 1.7263316639056 5.47646355193151 2.67414864942653 3.13113691056019 1.65441127807683 +observational 4.3528552573736 3.16547504814109 3.21084365317094 4.10098910494077 3.79548918917219 3.06805293513362 3.2188758248682 5.66642668811243 3.47196645255036 4.42484663185681 3.29953372788566 +observational 3.8416005411316 2.70805020110221 2.14124194258528 4.78749174278205 3.10458667846607 1.80828877117927 2.99573227355399 6.16961073249146 3.03974915897077 3.60549784517489 2.26695791535089 +observational 3.59731226058845 3.10458667846607 2.86220088092947 4.95582705760126 2.20386912005489 2.77881927199042 3.09557760852371 6.49375383985169 1.87946504964716 3.3178157727231 3.00568260440716 +observational 3.86702563949741 3.4626060097908 3.52636052461616 6.05443934626937 3.71357206670431 0.727548607277278 1.33236601909433 3.29953372788566 2.63188884013665 3.29212628660779 4.30811095172371 +observational 4.37071287477361 4.13676527810605 2.9704144655697 2.96010509591084 2.62466859216316 2.23964529322017 3.48124008933569 6.18001665365257 2.28442112236637 3.20274644293832 3.9926809084456 +observational 2.83321334405622 2.31253542384721 3.72328088083127 5.64897423816121 3.89385903480047 3.14845336057165 3.51749783735832 6.43133108193348 2.52572864430826 3.23867845216438 4.3528552573736 +observational 3.72328088083127 3.36384159511839 2.62466859216316 4.39814601655377 2.4423470353692 3.35340671782581 3.79548918917219 5.93753620508243 2.1770218700187 3.2846635654062 3.96651119071222 +observational 3.37416870927424 2.37024374146786 2.52572864430826 2.73436750941958 2.76000994003292 2.65324196460721 3.37416870927424 6.4393503711001 1.90657514365664 3.9926809084456 1.8531680973567 +observational 4.11087386417331 3.2846635654062 2.28442112236637 2.19499988231411 2.23964529322017 3.21084365317094 3.54385368206368 6.21460809842219 1.77155676191054 2.55722731136763 3.4626060097908 +observational 3.49953328238302 3.4904285153901 4.47049528266149 5.99893656194668 4.16511363311031 1.96009478404727 2.64617479738412 7.13249755166004 1.94304891677428 3.14845336057165 2.70136121295141 +observational 4.66343909411207 4.62497281328427 4.24563400976833 5.88332238848828 4.22683374526818 2.3887627892351 3.23867845216438 6.71901315438526 1.56444054650336 2.71469474382088 1.75440368268429 +observational 3.51749783735832 1.7263316639056 3.26575941076705 5.12396397940326 3.13113691056019 2.99573227355399 3.19458313229916 6.02586597382531 2.2213750375685 3.35340671782581 3.45315712059287 +observational 3.96651119071222 3.29212628660779 3.23867845216438 4.66343909411207 2.98568193770049 2.00552585872967 4.20916023665068 5.8636311755981 2.08691355651854 3.24649099190117 3.68887945411394 +observational 3.10458667846607 3.2846635654062 3.7864597824528 5.03043792139244 3.75185425327532 2.53369681395743 3.13113691056019 6.84481547920826 2.58021682959233 3.01553490085017 4.254193263164 +observational 3.72328088083127 3.38099467434464 2.63188884013665 3.17387845893747 0.582215619852664 2.2935443483419 3.17387845893747 7.15929190479756 3.02042488614436 4.11903717481247 4.92725368515721 +observational 4.33598269617247 3.92986292355648 3.02042488614436 3.13113691056019 1.27815220250019 0.845868267577609 1.55603713570699 3.92986292355648 2.76000994003292 3.39114704580865 4.40671924726425 +observational 4.52396013056255 4.52396013056255 3.3178157727231 3.67882911826043 0.86288995514704 3.54385368206368 4.12874598893943 6.7093043402583 1.45628673293993 2.70136121295141 3.63495111208838 +observational 4.30000279919529 3.71357206670431 4.31748811353631 5.37989735354046 4.06560209335645 3.07731226054641 3.73289633953071 7.54644627374602 2.12226153886276 2.77881927199042 3.65065824129374 +observational 3.90399083373088 3.42751468997953 3.94931879017184 5.62040086571715 3.93963817246112 1.708377860289 2.42480272571829 6.60258789218934 1.48387468945875 2.37024374146786 2.37024374146786 +observational 5.14749447681345 5.03043792139244 3.77734810210154 5.4510384535657 2.77881927199042 3.00568260440716 3.56104608260405 6.55677835615804 1.98787434815435 2.92316158071916 3.59731226058845 +observational 3.91202300542815 3.47196645255036 4.57779898919196 5.97126183979046 4.48863636973214 2.58021682959233 3.03013370027132 6.51174532964473 2.32238772029023 3.13113691056019 3.42751468997953 +observational 3.85014760171006 3.74242022104197 3.23080439573347 2.77258872223978 2.64617479738412 1.89761985992753 3.39114704580865 5.78382518232974 1.92424865227413 3.59731226058845 3.21084365317094 +observational 3.75887182593397 3.56953269648137 3.11351530921037 3.20274644293832 2.70805020110221 2.68102152871429 3.47196645255036 6.49375383985169 3.3357695763397 4.33598269617247 4.76217393479776 +observational 4.66343909411207 4.27249074760558 3.36384159511839 5.05624580534831 3.37416870927424 2.43361335540045 3.17387845893747 6.29526600143965 1.65441127807683 3.16547504814109 4.07414185490458 +observational 4.04830062372069 3.64283551561253 3.29953372788566 3.29212628660779 2.3887627892351 2.21266038546606 2.96010509591084 5.33271879326537 2.61006979274201 3.56953269648137 3.79548918917219 +observational 3.13113691056019 3.23080439573347 2.67414864942653 4.82028156560504 3.08648663682246 4.28082412916472 4.89034912822175 7.84306401669205 1.61938824328727 1.81645208181843 3.25424296870549 +observational 3.72328088083127 3.13113691056019 3.36384159511839 3.11351530921037 2.02419306744936 2.26695791535089 3.92197333628131 5.46806014113513 2.96010509591084 3.82209829790016 4.65396035015752 +observational 3.87743156065853 2.91235066461494 2.63188884013665 4.88280192258637 2.52572864430826 2.52572864430826 3.49953328238302 6.78219205600679 3.89385903480047 4.67282883446191 5.35185813347607 +observational 4.45201900649392 4.02891675689965 4.18205014264121 4.28082412916472 2.88480071284671 3.08648663682246 3.4904285153901 6.60258789218934 2.90690105984738 2.68102152871429 3.14845336057165 +observational 4.29045944114839 4.00186370942794 2.99573227355399 5.01727983681492 3.41772668361337 3.3357695763397 3.65065824129374 6.58340922215876 2.80336038090653 3.47196645255036 3.50855589998265 +observational 3.35340671782581 3.51749783735832 2.63188884013665 5.31811999384422 3.31054301339402 3.11351530921037 3.62434093297637 6.5206211275587 1.36609165380237 2.85070650150373 3.60549784517489 +observational 4.46129981556839 4.38077585277223 2.77258872223978 4.91265488573605 2.62466859216316 2.91235066461494 3.36384159511839 6.4393503711001 2.30258509299405 2.90690105984738 3.14845336057165 +observational 4.72738781871234 4.47960696301275 3.86702563949741 4.54223038621422 3.77734810210154 3.03013370027132 3.56104608260405 6.19644412779452 2.33214389523559 3.10458667846607 3.56953269648137 +observational 3.36384159511839 3.04927304048202 2.86789890204411 2.94968833505258 1.870262530716 2.25758772706331 3.03974915897077 6.880384082186 0.99694863489161 3.03013370027132 1.14103300455206 +observational 4.85981240436167 4.3267781604434 2.61739583283408 4.8283137373023 2.88480071284671 1.870262530716 2.76000994003292 5.8111409929767 2.65324196460721 3.98527346716774 3.31054301339402 +observational 3.27336401015227 3.38099467434464 2.86789890204411 4.39814601655377 2.81540871942271 2.87919845729804 3.59731226058845 7.34858753092759 2.71469474382088 3.40784192438082 4.02891675689965 +observational 3.72328088083127 3.17387845893747 3.80443779474821 6.05443934626937 3.89385903480047 2.94968833505258 3.52636052461616 6.8627579130514 0.693147180559945 4.31748811353631 2.47653840011748 +observational 3.71357206670431 3.25424296870549 4.12874598893943 5.3890717298165 3.64283551561253 1.90657514365664 2.79116510781272 5.8111409929767 1.69927861643389 2.9704144655697 2.91235066461494 +observational 3.39114704580865 3.40119738166216 2.85070650150373 4.38949864951258 2.26695791535089 2.40694510831829 3.19458313229916 6.12468339089421 2.9338568698359 3.85862222870103 4.29045944114839 +observational 3.65065824129374 3.51749783735832 3.6163087612791 5.94542060860658 3.03013370027132 2.89591193827178 3.3178157727231 6.47543271670409 2.42480272571829 2.81540871942271 3.4904285153901 +observational 3.58073729549423 3.2846635654062 2.9338568698359 3.73289633953071 2.39789527279837 4.58700621536042 5.44241771052179 7.49220304261874 3.14845336057165 4.03777421073371 4.69134788222914 +observational 3.66867674679642 3.13983261752775 2.484906649788 5.07517381523383 3.13983261752775 2.42480272571829 3.08648663682246 7.14124512235049 1.69927861643389 2.88480071284671 2.4423470353692 +observational 3.88567903008854 3.35340671782581 4.12874598893943 5.71042701737487 4.55071400019203 3.56953269648137 4.10098910494077 6.57507584059962 2.41591377830105 3.53514535417189 3.80443779474821 +observational 4.23700086262362 3.76815263500844 3.23080439573347 3.10458667846607 0.657520002916794 3.07731226054641 3.75887182593397 6.67329796776765 2.23108909128898 3.18221184049661 3.39114704580865 +observational 4.99043258677874 4.47049528266149 3.29212628660779 3.01553490085017 3.03013370027132 3.4904285153901 3.85862222870103 6.65544035036765 2.99573227355399 4.02891675689965 4.63472898822964 +observational 4.49758497530815 4.12874598893943 3.13983261752775 3.42751468997953 1.51951320490611 2.18605127673809 3.43720781918519 6.36818718635049 4.0842942263686 4.83628190695148 4.79579054559674 +observational 3.67882911826043 3.60549784517489 3.38099467434464 3.68887945411394 2.53369681395743 2.2213750375685 2.32238772029023 5.44241771052179 2.1770218700187 3.26575941076705 3.62434093297637 +observational 3.55248682920838 3.13983261752775 2.53369681395743 4.76217393479776 2.63188884013665 2.64617479738412 2.83321334405622 6.23244801655052 2.23964529322017 3.68887945411394 3.77734810210154 +observational 4.95582705760126 4.55071400019203 3.36384159511839 2.62466859216316 1.73518911773966 2.42480272571829 3.20274644293832 6.46769872610435 2.11384296839717 1.87946504964716 2.04122032885964 +observational 3.51749783735832 3.50855589998265 2.65324196460721 5.19849703126583 2.41591377830105 2.4932054526027 3.21084365317094 6.18001665365257 2.35137525716348 3.42751468997953 3.8308129500026 +observational 3.24649099190117 3.56104608260405 3.8308129500026 4.52396013056255 2.99573227355399 3.50855589998265 3.92986292355648 6.39526159811545 1.32175583998232 3.88567903008854 3.91202300542815 +observational 5.37989735354046 4.88280192258637 3.13983261752775 4.88280192258637 2.80336038090653 2.91235066461494 3.6163087612791 7.05185562295589 1.98787434815435 2.86220088092947 3.12236492448736 +observational 3.64283551561253 3.18221184049661 4.04830062372069 5.89989735358249 4.02891675689965 3.70622809244855 4.38077585277223 7.11476944836646 3.49953328238302 4.3528552573736 5.12396397940326 +observational 4.27249074760558 3.68887945411394 3.29953372788566 3.85014760171006 5.3890717298165 2.67414864942653 3.23080439573347 6.84481547920826 2.54160199346455 3.17387845893747 4.14630430115281 +observational 5.04342511691925 4.66343909411207 4.56954300834494 6.05443934626937 4.07414185490458 3.19458313229916 3.7864597824528 6.40357419793482 3.51749783735832 4.20020495292158 4.19116874685764 +observational 3.53514535417189 3.23867845216438 2.91235066461494 3.18221184049661 2.01490302054226 1.24126858906963 2.56494935746154 6.36818718635049 2.36085400111802 2.86220088092947 2.16791018966744 +observational 4.79579054559674 4.43438186500781 3.29953372788566 3.08648663682246 1.67335123817775 2.1770218700187 3.41772668361337 6.57507584059962 1.57484646766448 2.9391619220656 3.45315712059287 +observational 4.45201900649392 3.95699637107088 3.00568260440716 3.65065824129374 2.77881927199042 1.78170913337455 3.31054301339402 5.48479693349065 2.2935443483419 3.08648663682246 3.68887945411394 +observational 5.05624580534831 4.57779898919196 3.34638914516716 3.23867845216438 1.79840401194672 2.56494935746154 3.08648663682246 6.02586597382531 2.05027016437956 2.9704144655697 3.71357206670431 +observational 4.72738781871234 4.20020495292158 2.98568193770049 3.80443779474821 2.50959926237837 2.88480071284671 3.25424296870549 6.5206211275587 1.95160817016995 3.60549784517489 2.9338568698359 +observational 3.71357206670431 3.38099467434464 2.73436750941958 2.75366071235426 2.70805020110221 1.87946504964716 2.23964529322017 7.1777824161952 2.4932054526027 2.9391619220656 4.0842942263686 +observational 4.98360662170834 4.57779898919196 3.89385903480047 4.23700086262362 2.81540871942271 2.73436750941958 3.37416870927424 6.30444880242198 1.78170913337455 2.20386912005489 3.01553490085017 +observational 3.54385368206368 3.02042488614436 2.9338568698359 3.03974915897077 1.4036429994545 3.41772668361337 4.78749174278205 7.23128700432762 2.37024374146786 2.96010509591084 3.6163087612791 +observational 4.59612944133594 4.58700621536042 3.53514535417189 5.26269018890489 2.36085400111802 3.23080439573347 3.73289633953071 6.7093043402583 2.484906649788 3.36384159511839 3.76815263500844 +observational 3.8416005411316 3.19458313229916 3.50855589998265 2.61739583283408 3.43720781918519 3.06805293513362 3.60549784517489 6.79122146272619 2.30258509299405 3.31054301339402 0.802001585472027 +observational 4.67282883446191 4.33598269617247 2.90690105984738 4.90527477843843 2.62466859216316 2.68784749378469 3.32862668882732 6.92559519711047 3.66867674679642 4.70048036579242 4.83628190695148 +observational 4.20916023665068 3.60549784517489 3.40784192438082 4.92725368515721 2.45958884180371 2.53369681395743 3.00568260440716 6.41345895716736 2.20386912005489 3.03974915897077 3.47196645255036 +observational 4.57779898919196 4.30000279919529 4.01096295328305 5.93753620508243 4.41642806139121 2.77258872223978 3.34638914516716 6.63856778916652 3.4626060097908 4.38077585277223 4.31748811353631 +observational 3.94931879017184 3.06805293513362 2.40694510831829 5.23644196282995 2.61006979274201 1.7263316639056 3.23867845216438 5.33271879326537 3.39114704580865 4.33598269617247 4.88280192258637 +observational 3.66867674679642 3.37416870927424 3.69635146895264 5.71042701737487 4.28082412916472 2.00552585872967 2.9338568698359 6.54821910276237 0.425267735404344 0.371563556432483 2.03339760317843 +observational 3.64283551561253 3.10458667846607 3.27336401015227 3.65065824129374 2.81540871942271 0.559615787935423 2.3887627892351 6.37672694789863 1.99741770620125 2.99573227355399 3.05870707271538 +observational 4.63472898822964 4.36182392735636 3.02042488614436 2.82137888640921 0.371563556432483 2.75366071235426 3.51749783735832 6.5206211275587 3.41772668361337 4.17284762371004 4.24563400976833 +observational 4.50645421304893 4.15575319035074 2.86789890204411 3.29212628660779 1.92424865227413 2.36085400111802 3.36384159511839 7.00669522683704 3.4904285153901 4.47960696301275 5.01727983681492 +observational 3.81330703248899 3.4904285153901 2.96010509591084 4.78749174278205 3.02042488614436 3.66867674679642 4.06560209335645 6.48463523563525 2.33214389523559 3.10458667846607 3.38099467434464 +observational 2.70136121295141 3.05870707271538 3.10458667846607 2.80336038090653 2.36085400111802 1.79009141212736 1.23256026117785 5.08140436498446 2.58021682959233 3.2846635654062 2.81540871942271 +observational 5.01727983681492 4.79579054559674 3.37416870927424 4.85981240436167 3.40119738166216 2.91235066461494 3.4904285153901 6.88959130835447 2.01490302054226 3.60549784517489 3.82209829790016 +observational 3.7864597824528 3.51749783735832 3.71357206670431 5.78382518232974 3.45315712059287 2.36085400111802 3.60549784517489 6.1527326947041 0.0295588022415444 4.0842942263686 1.8531680973567 +observational 3.67882911826043 3.35340671782581 3.76815263500844 4.27249074760558 2.05027016437956 3.79548918917219 4.20916023665068 6.49375383985169 2.33214389523559 3.07731226054641 3.06805293513362 +observational 4.56954300834494 4.24563400976833 3.48124008933569 4.17284762371004 2.10413415427021 2.58021682959233 3.23080439573347 6.64639051484773 4.02891675689965 4.94875989037817 5.32300997913841 +observational 3.72328088083127 3.19458313229916 2.92316158071916 3.14845336057165 1.8531680973567 2.77881927199042 3.26575941076705 6.80903930604298 2.61006979274201 3.69635146895264 3.75185425327532 +observational 3.9759363311718 3.55248682920838 2.96010509591084 3.86702563949741 2.31253542384721 1.24990173621434 2.84490938381941 5.15329159449778 2.9391619220656 3.9759363311718 4.01096295328305 +observational 5.61312810638807 5.14749447681345 3.39114704580865 3.01553490085017 2.55722731136763 3.71357206670431 4.03777421073371 6.27852142416584 2.79728133483015 3.3357695763397 3.79548918917219 +observational 4.72738781871234 3.59731226058845 3.68887945411394 5.50533153593236 3.70622809244855 3.03974915897077 3.34638914516716 5.93753620508243 2.08691355651854 3.40119738166216 3.23867845216438 +observational 5.08140436498446 4.71849887129509 3.7864597824528 4.43438186500781 3.34638914516716 3.60549784517489 3.92986292355648 6.36818718635049 0.307484699747961 0.542324290825362 2.40694510831829 +observational 5.41610040220442 5.09375020080676 4.41642806139121 4.71849887129509 3.15700042115011 3.19458313229916 3.59731226058845 6.57507584059962 3.70622809244855 4.28082412916472 5.30826769740121 +observational 3.44361809754611 3.21084365317094 2.13179677201376 5.72031177660741 2.66025953726586 2.00552585872967 3.26575941076705 5.84643877505772 1.61938824328727 3.06805293513362 2.89591193827178 +observational 4.10098910494077 3.74242022104197 3.17387845893747 3.44361809754611 0.672944473242426 2.2213750375685 2.70805020110221 6.95272864462487 2.20386912005489 3.07731226054641 3.75185425327532 +observational 5.17048399503815 4.57779898919196 3.19458313229916 4.97673374242057 2.75366071235426 2.68784749378469 3.05870707271538 6.7093043402583 2.05027016437956 2.97552956623647 3.03974915897077 +observational 3.41772668361337 3.4904285153901 2.32238772029023 4.91265488573605 1.78170913337455 3.41772668361337 4.01998014693324 6.67329796776765 2.64617479738412 3.02042488614436 3.88567903008854 +observational 4.05698877567833 3.45315712059287 2.4423470353692 5.05624580534831 3.59731226058845 2.41591377830105 3.29953372788566 6.4393503711001 2.33214389523559 3.47196645255036 3.38099467434464 +observational 5.73009978297357 5.29831736654804 2.77258872223978 4.54223038621422 3.39114704580865 2.87919845729804 3.4626060097908 6.48463523563525 2.41591377830105 2.86220088092947 1.96009478404727 +observational 3.44361809754611 3.69635146895264 3.03013370027132 5.09375020080676 2.86789890204411 2.4423470353692 3.44361809754611 6.76388490856244 3.58905911883173 4.33598269617247 4.37071287477361 +observational 3.29953372788566 3.05870707271538 4.54223038621422 6.21460809842219 4.14630430115281 3.56953269648137 4.05698877567833 6.29526600143965 2.36085400111802 3.3178157727231 1.36609165380237 +observational 3.85862222870103 3.04927304048202 3.7864597824528 5.18738580584075 3.15700042115011 2.41591377830105 3.00568260440716 6.16961073249146 2.33214389523559 3.62434093297637 3.54385368206368 +observational 3.94931879017184 3.29953372788566 2.70805020110221 5.11799381241676 0.609765571620894 2.63188884013665 2.79728133483015 6.43133108193348 2.92316158071916 3.8416005411316 3.49953328238302 +observational 3.87743156065853 3.03974915897077 3.02042488614436 4.17284762371004 2.61739583283408 3.39114704580865 3.85014760171006 6.97073007814353 1.74571553072665 1.10525683138678 2.75366071235426 +observational 4.71849887129509 4.42484663185681 3.05870707271538 3.14845336057165 2.23108909128898 3.51749783735832 3.93963817246112 6.72743172485086 2.06812778177956 3.16547504814109 2.91235066461494 +observational 4.05698877567833 3.70622809244855 2.82137888640921 5.89164421182577 3.09557760852371 2.41591377830105 3.32862668882732 6.68336094576627 2.2213750375685 3.13113691056019 4.01096295328305 +observational 3.6609942506244 3.3357695763397 3.56953269648137 3.19458313229916 0 2.52572864430826 2.71469474382088 7.19593722647557 2.61006979274201 3.12236492448736 3.40784192438082 +observational 4.76217393479776 4.36182392735636 2.96010509591084 2.88480071284671 1.92424865227413 3.50855589998265 3.87743156065853 6.85329909318608 2.52572864430826 2.86220088092947 0 +observational 4.22683374526818 4.67282883446191 2.90690105984738 3.43720781918519 2.9704144655697 2.40694510831829 3.13113691056019 6.39526159811545 2.50143595173921 3.29953372788566 2.66025953726586 +observational 3.60549784517489 3.21084365317094 3.07731226054641 4.58700621536042 2.90690105984738 2.06812778177956 2.98568193770049 5.99893656194668 2.16791018966744 3.25424296870549 3.65065824129374 +observational 3.64283551561253 3.37416870927424 3.04927304048202 4.85981240436167 3.20274644293832 2.51769647261099 3.40119738166216 6.58340922215876 1.89761985992753 2.30258509299405 3.06805293513362 +observational 3.85014760171006 3.26575941076705 2.73436750941958 4.43438186500781 2.90690105984738 2.20386912005489 3.29953372788566 6.87212810133899 2.39789527279837 2.91235066461494 3.2846635654062 +observational 5.53338948872752 5.05624580534831 3.24649099190117 4.79579054559674 2.92316158071916 3.25424296870549 3.74242022104197 6.87212810133899 2.47653840011748 2.88480071284671 3.59731226058845 +observational 4.56954300834494 3.8308129500026 2.61006979274201 4.91265488573605 1.23256026117785 2.77258872223978 3.48124008933569 6.22455842927536 2.60268968544438 3.02042488614436 3.8308129500026 +observational 5.25227342804663 4.74493212836325 2.57261223020711 2.52572864430826 1.19694818938897 3.07731226054641 3.24649099190117 6.24222326545517 2.43361335540045 2.55722731136763 2.83321334405622 +observational 4.0926765051214 3.37416870927424 2.50143595173921 4.33598269617247 3.08648663682246 2.92316158071916 3.21084365317094 6.36818718635049 2.27521389619791 2.71469474382088 2.12226153886276 +observational 4.11903717481247 3.6163087612791 5.06259503302697 6.32256523992728 4.70048036579242 0.970778917158225 2.55722731136763 6.13339804299665 2.4932054526027 3.2846635654062 3.3178157727231 +observational 3.55248682920838 3.2188758248682 3.52636052461616 3.2846635654062 0.99694863489161 0.371563556432483 1.80828877117927 3.53514535417189 3.29953372788566 4.11087386417331 4.50645421304893 +observational 3.54385368206368 3.54385368206368 2.58021682959233 4.47049528266149 2.82137888640921 2.52572864430826 3.17387845893747 6.00881318544259 1.97823903617067 3.3178157727231 3.74242022104197 +observational 5.13579843705026 4.81218435537242 2.80336038090653 2.12226153886276 0.548121408509688 3.00568260440716 3.37416870927424 6.62936325343745 3.4904285153901 4.36182392735636 5.2257466737132 +observational 3.05870707271538 2.72785282839839 4.24563400976833 5.47646355193151 3.94931879017184 4.07414185490458 4.254193263164 6.35957386867238 2.79116510781272 3.29953372788566 3.74242022104197 +observational 3.80443779474821 3.3357695763397 3.04927304048202 4.95582705760126 2.57261223020711 2.82137888640921 3.03013370027132 6.53958595561767 2.83321334405622 3.65065824129374 3.71357206670431 +observational 3.51749783735832 3.01553490085017 3.23867845216438 3.20274644293832 1.90657514365664 2.47653840011748 4.06560209335645 5.78382518232974 2.63188884013665 2.70136121295141 3.48124008933569 +observational 5.29831736654804 4.8283137373023 2.80336038090653 5.73009978297357 2.71469474382088 3.6163087612791 3.64283551561253 6.65544035036765 3.21084365317094 3.76815263500844 4.60517018598809 +observational 3.56953269648137 3.15700042115011 3.16547504814109 3.25424296870549 2.50959926237837 2.80336038090653 3.2188758248682 6.77308037565554 4.19116874685764 5.20948615284142 5.63121178182137 +observational 3.27336401015227 3.14845336057165 4.78749174278205 6.24222326545517 4.76217393479776 3.15700042115011 3.76815263500844 6.68336094576627 2.37954613413017 3.40119738166216 4.06560209335645 +observational 3.71357206670431 3.71357206670431 2.89591193827178 5.11799381241676 2.98568193770049 1.41098697371026 2.73436750941958 6.42162226780652 2.62466859216316 3.11351530921037 3.02042488614436 +observational 5.05624580534831 4.37071287477361 3.01553490085017 3.51749783735832 3.24649099190117 1.4747630091075 2.96010509591084 6.75460409948796 3.89385903480047 4.66343909411207 5.04342511691925 +observational 4.42484663185681 3.9926809084456 4.10098910494077 3.87743156065853 2.70136121295141 3.44361809754611 3.94931879017184 6.43133108193348 2.64617479738412 2.79728133483015 3.23080439573347 +observational 4.69134788222914 4.96284463025991 3.09557760852371 4.68213122712422 3.11351530921037 2.72785282839839 3.56953269648137 6.47543271670409 3.03974915897077 4.07414185490458 3.9759363311718 +observational 4.97673374242057 4.54223038621422 3.53514535417189 6.16120732169508 4.12874598893943 2.75366071235426 3.06805293513362 6.06145691892802 2.37954613413017 3.11351530921037 3.08648663682246 +observational 3.71357206670431 2.46809953147162 2.73436750941958 4.31748811353631 2.63188884013665 3.2188758248682 3.42751468997953 6.4393503711001 2.08691355651854 3.27336401015227 2.75366071235426 +observational 3.40784192438082 3.2846635654062 3.4904285153901 5.25227342804663 3.3357695763397 2.90690105984738 2.97552956623647 6.58340922215876 4.00186370942794 4.93447393313069 5.25227342804663 +observational 3.70622809244855 2.57261223020711 3.23080439573347 3.12236492448736 0.157003748809665 2.43361335540045 3.24649099190117 6.52941883826223 2.68102152871429 3.20274644293832 3.03013370027132 +observational 3.65065824129374 3.00568260440716 3.91202300542815 5.90808293816893 4.10098910494077 2.16791018966744 3.3357695763397 6.18001665365257 2.43361335540045 3.27336401015227 3.68887945411394 +observational 3.6163087612791 4.03777421073371 2.91235066461494 3.05870707271538 2.37954613413017 2.64617479738412 3.43720781918519 6.43133108193348 2.57261223020711 3.15700042115011 3.58905911883173 +observational 5.27299955856375 4.66343909411207 2.63188884013665 4.90527477843843 1.31372366828506 3.18221184049661 3.77734810210154 6.02586597382531 2.37954613413017 3.21084365317094 3.65065824129374 +observational 3.38099467434464 3.43720781918519 3.82209829790016 3.96651119071222 2.1770218700187 3.2846635654062 3.86702563949741 6.25958146406492 2.30258509299405 3.14845336057165 3.38099467434464 +observational 4.10098910494077 3.88567903008854 2.61006979274201 3.39114704580865 0.854415328156068 5.36129216570943 5.77455154554441 7.34858753092759 2.12226153886276 3.03974915897077 3.16547504814109 +observational 4.10098910494077 3.70622809244855 3.3178157727231 3.09557760852371 1.6094379124341 2.92316158071916 3.71357206670431 7.02464903045364 2.04122032885964 3.14845336057165 2.88480071284671 +observational 4.17284762371004 3.9759363311718 4.26267987704132 6.14418563412565 4.29045944114839 2.05027016437956 2.98568193770049 7.01571242048723 2.51769647261099 3.00568260440716 2.53369681395743 +observational 4.06560209335645 3.43720781918519 4.38077585277223 4.34380542185368 2.14943391349987 2.97552956623647 3.34638914516716 6.45833828334479 2.72785282839839 3.59731226058845 3.92986292355648 +observational 3.59731226058845 3.24649099190117 3.11351530921037 4.33598269617247 2.60268968544438 2.83321334405622 3.32862668882732 6.59304453414244 2.50143595173921 3.58905911883173 3.41772668361337 +observational 5.09375020080676 4.76217393479776 3.29212628660779 5.89164421182577 3.9759363311718 1.57484646766448 3.03013370027132 5.05624580534831 3.10458667846607 4.33598269617247 4.45201900649392 +observational 3.73289633953071 3.13983261752775 3.09557760852371 4.61512051684126 3.26575941076705 3.59731226058845 3.7864597824528 6.62007320653036 2.43361335540045 3.59731226058845 3.50855589998265 +observational 3.59731226058845 3.10458667846607 3.90399083373088 4.02891675689965 2.32238772029023 3.13113691056019 3.6163087612791 6.55677835615804 3.39114704580865 4.34380542185368 5.03043792139244 +observational 4.95582705760126 4.44382703557933 3.23080439573347 3.49953328238302 3.29212628660779 2.484906649788 3.18221184049661 6.84481547920826 4.38949864951258 4.61512051684126 2.50143595173921 +observational 4.50645421304893 4.11903717481247 2.30258509299405 2.9338568698359 3.04927304048202 2.92316158071916 3.44361809754611 6.83625927727707 1.62727783056243 4.60517018598809 0 +observational 4.29045944114839 3.8308129500026 2.7408400239252 4.72738781871234 2.10413415427021 2.58776403522771 3.10458667846607 6.43133108193348 2.60268968544438 3.08648663682246 3.40119738166216 +observational 3.66867674679642 2.9704144655697 2.79728133483015 4.17284762371004 2.26695791535089 2.68102152871429 3.26575941076705 6.62007320653036 2.484906649788 3.13113691056019 3.25424296870549 +observational 4.46129981556839 4.01096295328305 3.14845336057165 3.12236492448736 1.59127394180643 1.5830939370945 2.26695791535089 4.91265488573605 3.59731226058845 4.46129981556839 4.77068462446567 +observational 3.75887182593397 3.23867845216438 2.75366071235426 3.13983261752775 1.31372366828506 3.40784192438082 3.71357206670431 6.59304453414244 3.09557760852371 3.8416005411316 1.97823903617067 +observational 4.01096295328305 3.75887182593397 2.86220088092947 4.56017282005736 1.94304891677428 1.7263316639056 3.05870707271538 6.41345895716736 2.32238772029023 3.16547504814109 3.26575941076705 +observational 4.17284762371004 3.72328088083127 3.03013370027132 5.12396397940326 3.13113691056019 2.68102152871429 3.24649099190117 6.49375383985169 2.53369681395743 3.23867845216438 3.75185425327532 +observational 3.58905911883173 2.92316158071916 3.55248682920838 3.55248682920838 2.42480272571829 2.58021682959233 3.01553490085017 6.67329796776765 0.104360015324243 2.35137525716348 2.91235066461494 +observational 4.0926765051214 3.56104608260405 4.17284762371004 5.54907608489522 3.74242022104197 2.53369681395743 3.3357695763397 6.59304453414244 0.62057648772511 1.33236601909433 1.39376637595859 +observational 3.94931879017184 3.40784192438082 3.10458667846607 4.91265488573605 2.82137888640921 2.64617479738412 3.16547504814109 6.72743172485086 2.37024374146786 3.02042488614436 2.60268968544438 +observational 4.00186370942794 3.89385903480047 3.03974915897077 5.08140436498446 2.50959926237837 3.08648663682246 3.63495111208838 7.05185562295589 2.60268968544438 3.47196645255036 3.56953269648137 +observational 3.80443779474821 3.44361809754611 3.17387845893747 3.40784192438082 2.14943391349987 3.29212628660779 4.27249074760558 6.99759598298193 2.33214389523559 3.13983261752775 3.23080439573347 +observational 5.64897423816121 5.4510384535657 3.92197333628131 6.04500531403601 3.56953269648137 0.307484699747961 2.28442112236637 6.8001700683022 3.52636052461616 4.01096295328305 2.39789527279837 +observational 3.56953269648137 3.34638914516716 2.58021682959233 5.25227342804663 2.62466859216316 2.21266038546606 3.18221184049661 6.21460809842219 2.52572864430826 3.32862668882732 3.56104608260405 +observational 4.52396013056255 4.38949864951258 2.73436750941958 5.11799381241676 2.23964529322017 0.943905898907128 2.37024374146786 2.96010509591084 2.61739583283408 3.62434093297637 2.7408400239252 +observational 4.71849887129509 4.20916023665068 2.83321334405622 4.50645421304893 2.34180580614733 3.67882911826043 4.06560209335645 6.37672694789863 2.11384296839717 3.26575941076705 3.70622809244855 +observational 3.56953269648137 3.2188758248682 3.8308129500026 5.51342874616498 3.56953269648137 2.2213750375685 2.7408400239252 6.44888939414686 2.37954613413017 3.4626060097908 3.41772668361337 +observational 3.80443779474821 3.3178157727231 2.92316158071916 4.76217393479776 2.82137888640921 2.52572864430826 2.68102152871429 6.5206211275587 1.82616089594539 2.70136121295141 2.23964529322017 +observational 4.88280192258637 4.41642806139121 2.77258872223978 3.03974915897077 2.53369681395743 0 0.774727167552368 0 2.84490938381941 3.25424296870549 3.51749783735832 +observational 3.17387845893747 2.33214389523559 2.9338568698359 3.05870707271538 0 1.43031124653666 2.3887627892351 5.3890717298165 2.19499988231411 2.97552956623647 3.37416870927424 +observational 3.54385368206368 3.23867845216438 2.65324196460721 4.48863636973214 2.79728133483015 3.25424296870549 3.91202300542815 7.16857989726403 2.37954613413017 3.93963817246112 2.05027016437956 +observational 4.90527477843843 4.30000279919529 2.9391619220656 4.65396035015752 1.870262530716 3.23867845216438 4.13676527810605 7.55538194424027 1.82616089594539 2.85070650150373 2.7408400239252 +observational 3.4626060097908 3.43720781918519 3.2188758248682 2.80336038090653 2.02419306744936 2.4932054526027 2.96010509591084 6.55677835615804 0.683096844706444 4.17284762371004 1.50185270175416 +observational 3.42751468997953 3.00568260440716 3.04927304048202 3.15700042115011 2.67414864942653 3.42751468997953 4.01998014693324 7.23128700432762 3.94931879017184 4.72738781871234 4.74493212836325 +observational 3.51749783735832 2.71469474382088 3.90399083373088 6.11589212548303 3.89385903480047 3.32862668882732 3.81330703248899 6.25958146406492 3.90399083373088 4.52396013056255 5.34233425196481 +observational 4.38949864951258 4.07414185490458 3.3357695763397 4.03777421073371 2.14943391349987 2.28442112236637 2.68102152871429 6.38687931936265 2.27521389619791 2.83321334405622 3.32862668882732 +observational 3.55248682920838 2.98568193770049 2.68784749378469 4.55071400019203 1.59127394180643 3.94931879017184 4.48863636973214 7.59135704669855 2.39789527279837 3.73289633953071 3.73289633953071 +observational 5.17048399503815 4.5152454784601 2.75366071235426 5.00394630594546 2.50959926237837 3.82209829790016 4.28082412916472 7.51043055637801 1.81645208181843 2.57261223020711 1.35840915763035 +observational 2.73436750941958 1.10525683138678 2.99573227355399 2.84490938381941 3.07731226054641 3.01553490085017 3.44361809754611 6.34035930372775 1.99741770620125 3.14845336057165 3.2188758248682 +observational 4.95582705760126 4.5152454784601 4.05698877567833 4.62497281328427 2.9391619220656 2.484906649788 2.61006979274201 5.72031177660741 1.39376637595859 2.36085400111802 2.55722731136763 +observational 3.73289633953071 3.18221184049661 2.91235066461494 2.90690105984738 2.15871472257434 2.98568193770049 3.65065824129374 6.04500531403601 3.67882911826043 4.42484663185681 5.06259503302697 +observational 3.27336401015227 2.90690105984738 2.86789890204411 3.7864597824528 2.34180580614733 2.58021682959233 3.00568260440716 6.50279004591562 2.14943391349987 3.03974915897077 3.14845336057165 +observational 4.28082412916472 3.85862222870103 2.80336038090653 4.38077585277223 2.2213750375685 2.08691355651854 3.20274644293832 6.56526497003536 2.05027016437956 3.23080439573347 3.47196645255036 +observational 3.47196645255036 2.37954613413017 2.53369681395743 3.31054301339402 2.36085400111802 2.92316158071916 3.70622809244855 6.70073110954781 3.10458667846607 3.48124008933569 3.72328088083127 +observational 5.41610040220442 4.8283137373023 2.68102152871429 2.40694510831829 0.431782416425538 2.4423470353692 3.43720781918519 6.00881318544259 1.21491274436427 4.20020495292158 2.2213750375685 +observational 3.69635146895264 3.55248682920838 3.21084365317094 3.32862668882732 1.88858365386359 0 0.512823626428664 3.50855589998265 2.72785282839839 3.75185425327532 3.79548918917219 +observational 4.80402104473326 4.49758497530815 2.2213750375685 5.15329159449778 1.31372366828506 3.15700042115011 3.35340671782581 6.94408720822953 2.34180580614733 3.38099467434464 1.9154509415706 +observational 3.9759363311718 3.6609942506244 2.90690105984738 3.09557760852371 1.92424865227413 3.56953269648137 4.38949864951258 7.74413662762799 2.99573227355399 3.82209829790016 4.19116874685764 +observational 3.58905911883173 3.16547504814109 3.60549784517489 5.79301360838414 3.94931879017184 2.2213750375685 2.58776403522771 6.5206211275587 3.74242022104197 4.52396013056255 4.80402104473326 +observational 3.62434093297637 3.09557760852371 2.85070650150373 2.68102152871429 2.50143595173921 2.90690105984738 3.32862668882732 6.36818718635049 2.81540871942271 3.73289633953071 4.0842942263686 +observational 4.38077585277223 4.20020495292158 3.09557760852371 3.18221184049661 1.36609165380237 2.7408400239252 3.32862668882732 6.29526600143965 2.57261223020711 3.60549784517489 3.49953328238302 +observational 4.28082412916472 3.67882911826043 2.92316158071916 1.95160817016995 2.67414864942653 3.67882911826043 3.85862222870103 5.96357934361845 2.73436750941958 3.43720781918519 3.51749783735832 +observational 4.61512051684126 4.20916023665068 3.10458667846607 4.22683374526818 1.73518911773966 3.42751468997953 3.67882911826043 6.38687931936265 2.34180580614733 3.29953372788566 2.63188884013665 +observational 1.89761985992753 2.07819075977818 3.87743156065853 5.73009978297357 3.88567903008854 1.94304891677428 3.53514535417189 6.1527326947041 2.4423470353692 3.50855589998265 3.35340671782581 +observational 3.75185425327532 3.23867845216438 3.00568260440716 2.86220088092947 2.31253542384721 1.96990565461153 3.03974915897077 6.16120732169508 2.43361335540045 3.20274644293832 3.17387845893747 +observational 4.04830062372069 3.29212628660779 4.43438186500781 6.13339804299665 4.3267781604434 2.50143595173921 3.37416870927424 6.34035930372775 2.45958884180371 2.63188884013665 3.15700042115011 +observational 4.18205014264121 3.35340671782581 2.89591193827178 4.54223038621422 1.99741770620125 3.12236492448736 3.43720781918519 6.33150184989369 4.5152454784601 4.8283137373023 2.75366071235426 +observational 4.54223038621422 3.91202300542815 2.68102152871429 4.54223038621422 2.67414864942653 3.85014760171006 4.13676527810605 6.52941883826223 2.26695791535089 3.06805293513362 3.39114704580865 +observational 4.0842942263686 3.60549784517489 3.45315712059287 4.21803603456465 3.85014760171006 2.42480272571829 3.04927304048202 6.54821910276237 2.55722731136763 3.58073729549423 3.68887945411394 +observational 3.45315712059287 3.13113691056019 3.27336401015227 2.89591193827178 2.03339760317843 2.4423470353692 3.51749783735832 6.44888939414686 2.65324196460721 3.03974915897077 3.26575941076705 +observational 3.41772668361337 3.07731226054641 2.77258872223978 5.54126354515843 1.90657514365664 2.14124194258528 3.07731226054641 6.02586597382531 3.90399083373088 4.57779898919196 5.26269018890489 +observational 3.73289633953071 3.27336401015227 3.87743156065853 5.71042701737487 3.68887945411394 3.58073729549423 4.12874598893943 7.19593722647557 2.30258509299405 3.48124008933569 3.49953328238302 +observational 5.18178355029209 4.8283137373023 2.45958884180371 0.951657875711446 2.63188884013665 1.8531680973567 2.79728133483015 5.99893656194668 2.51769647261099 3.80443779474821 3.23080439573347 +observational 4.05698877567833 3.91202300542815 2.58776403522771 4.97673374242057 2.63188884013665 2.70136121295141 2.32238772029023 6.7093043402583 2.54160199346455 2.81540871942271 2.9338568698359 +observational 2.90690105984738 2.79728133483015 3.3357695763397 3.77734810210154 2.33214389523559 3.76815263500844 4.15575319035074 6.56526497003536 1.7630170003624 3.05870707271538 3.26575941076705 +observational 4.87519732320115 4.77912349311153 4.36182392735636 5.52146091786225 3.88567903008854 4.50645421304893 4.83628190695148 6.14418563412565 1.27815220250019 2.07819075977818 0.0769610411361284 +observational 4.00186370942794 3.6609942506244 2.82137888640921 3.07731226054641 3.18221184049661 3.2846635654062 3.77734810210154 6.78219205600679 3.60549784517489 4.06560209335645 2.9338568698359 +observational 4.20916023665068 3.44361809754611 0 2.01490302054226 5.96357934361845 3.05870707271538 3.23080439573347 6.43133108193348 1.95160817016995 3.09557760852371 3.09557760852371 +observational 3.35340671782581 2.89591193827178 3.43720781918519 3.58905911883173 2.3887627892351 2.75366071235426 3.59731226058845 6.90775527898214 1.11514159061932 3.44361809754611 3.31054301339402 +observational 4.11903717481247 4.04830062372069 3.49953328238302 2.79728133483015 2.32238772029023 2.47653840011748 3.76815263500844 5.43372200355424 1.74571553072665 2.77258872223978 2.79728133483015 +observational 3.69635146895264 3.14845336057165 3.4626060097908 3.66867674679642 0.943905898907128 1.9154509415706 2.61739583283408 6.53958595561767 2.42480272571829 3.3357695763397 3.39114704580865 +observational 3.58905911883173 2.89591193827178 3.8416005411316 6.26909628370626 3.90399083373088 2.77881927199042 3.69635146895264 6.87212810133899 2.68102152871429 3.51749783735832 2.75366071235426 +observational 3.6609942506244 2.79728133483015 3.19458313229916 5.27299955856375 3.67882911826043 2.39789527279837 3.01553490085017 6.20657592672493 2.25758772706331 3.42751468997953 2.86220088092947 +observational 3.71357206670431 3.42751468997953 3.03974915897077 3.2188758248682 0 2.51769647261099 3.00568260440716 6.52941883826223 2.37954613413017 3.56104608260405 3.42751468997953 +observational 4.5152454784601 3.98527346716774 2.86220088092947 2.9338568698359 1.71739505393919 2.56494935746154 3.10458667846607 6.20657592672493 2.55722731136763 3.32862668882732 1.42069578783722 +observational 5.23644196282995 4.76217393479776 3.02042488614436 2.79116510781272 0 1.59127394180643 1.69927861643389 6.880384082186 1.19694818938897 2.33214389523559 2.40694510831829 +observational 5.21493575760899 4.45201900649392 2.19499988231411 5.36129216570943 1.9154509415706 3.00568260440716 3.18221184049661 6.59304453414244 2.56494935746154 3.50855589998265 3.34638914516716 +observational 3.62434093297637 2.86789890204411 1.88858365386359 5.19849703126583 2.63188884013665 3.17387845893747 3.66867674679642 6.46769872610435 2.58021682959233 3.51749783735832 4.02891675689965 +observational 3.91202300542815 3.49953328238302 2.97552956623647 3.13113691056019 1.77155676191054 1.74571553072665 2.99573227355399 6.54821910276237 1.88858365386359 2.88480071284671 3.42751468997953 +observational 4.93447393313069 4.40671924726425 3.03013370027132 3.21084365317094 1.53901544813755 3.59731226058845 3.72328088083127 6.18001665365257 1.50185270175416 4.0842942263686 1.34025042261848 +observational 4.61512051684126 4.05698877567833 2.88480071284671 4.12874598893943 2.45958884180371 3.03013370027132 3.74242022104197 6.1527326947041 2.36085400111802 3.62434093297637 3.07731226054641 +observational 3.9759363311718 3.69635146895264 2.66025953726586 4.66343909411207 2.90690105984738 3.48124008933569 4.13676527810605 6.8001700683022 3.44361809754611 4.10098910494077 4.47960696301275 +observational 4.06560209335645 3.79548918917219 3.08648663682246 2.85070650150373 1.73518911773966 3.63495111208838 4.48863636973214 7.57353126274595 2.4932054526027 3.43720781918519 3.62434093297637 +observational 5.16478597392351 4.83628190695148 2.64617479738412 4.91998092582813 1.62727783056243 4.62497281328427 5.07517381523383 7.93307977188041 2.73436750941958 3.40119738166216 3.91202300542815 +observational 3.54385368206368 3.23867845216438 3.47196645255036 3.58073729549423 2.3887627892351 0.828551817566148 1.99741770620125 4.8283137373023 2.63188884013665 3.24649099190117 3.38099467434464 +observational 2.46809953147162 2.83321334405622 3.89385903480047 6.01615715969835 3.9926809084456 2.75366071235426 3.58905911883173 7.10578612948127 2.31253542384721 3.09557760852371 2.97552956623647 +observational 3.6609942506244 3.4904285153901 4.85981240436167 5.73009978297357 4.29045944114839 0.908258560176891 2.53369681395743 6.80903930604298 2.53369681395743 3.38099467434464 2.81540871942271 +observational 3.53514535417189 3.29212628660779 3.9926809084456 4.37071287477361 3.4904285153901 2.21266038546606 2.60268968544438 6.01615715969835 2.64617479738412 3.41772668361337 3.03974915897077 +observational 3.6609942506244 1.68268837417369 3.10458667846607 4.47049528266149 3.09557760852371 3.02042488614436 3.90399083373088 6.95272864462487 1.68268837417369 1.69009581545155 1.5830939370945 +observational 3.62434093297637 2.70805020110221 3.69635146895264 3.79548918917219 2.67414864942653 2.2213750375685 2.70136121295141 6.41345895716736 0.198850858745165 1.708377860289 2.43361335540045 +observational 3.51749783735832 3.06805293513362 2.9391619220656 5.37989735354046 2.2213750375685 2.64617479738412 2.92316158071916 6.29526600143965 2.34180580614733 2.96010509591084 3.70622809244855 +observational 3.09557760852371 3.14845336057165 3.40119738166216 3.12236492448736 1.86252854011626 2.97552956623647 3.56953269648137 6.84481547920826 2.71469474382088 3.29212628660779 3.17387845893747 +observational 3.58073729549423 3.2188758248682 4.54223038621422 6.16120732169508 4.3528552573736 4.57779898919196 5.06259503302697 7.46565531013406 0.113328685307003 1.23256026117785 3.13113691056019 +observational 3.63495111208838 2.89591193827178 2.70136121295141 5.03043792139244 1.66392609771817 2.32238772029023 3.2846635654062 5.96357934361845 3.87743156065853 4.77068462446567 4.92725368515721 +observational 3.04927304048202 2.70805020110221 3.21084365317094 3.24649099190117 1.68268837417369 2.26695791535089 3.58905911883173 6.60258789218934 2.41591377830105 3.39114704580865 3.19458313229916 +observational 3.43720781918519 3.19458313229916 2.9704144655697 5.51342874616498 3.38099467434464 3.07731226054641 3.54385368206368 6.22455842927536 2.61006979274201 3.13113691056019 2.96010509591084 +observational 4.05698877567833 3.75887182593397 3.24649099190117 3.58073729549423 1.05082162483176 2.11384296839717 2.42480272571829 5.55682806169954 1.69009581545155 4.01096295328305 1.71739505393919 +observational 4.02891675689965 3.37416870927424 3.85862222870103 5.5683445037611 3.59731226058845 0.412109650826833 2.60268968544438 6.50279004591562 2.14943391349987 2.47653840011748 1.41098697371026 +observational 2.04122032885964 2.3887627892351 2.57261223020711 4.49758497530815 2.43361335540045 2.23108909128898 2.99573227355399 6.01615715969835 2.23108909128898 3.06805293513362 3.2188758248682 +observational 4.71849887129509 4.33598269617247 3.7864597824528 6.18826412308259 4.20916023665068 2.71469474382088 3.04927304048202 6.22455842927536 2.1770218700187 2.63188884013665 2.07819075977818 +observational 3.43720781918519 3.2846635654062 3.51749783735832 5.28826703069454 3.47196645255036 2.15871472257434 2.90690105984738 7.08757370555797 1.67335123817775 2.19499988231411 2.20386912005489 +observational 4.26267987704132 3.75887182593397 2.88480071284671 3.7864597824528 2.16791018966744 2.12226153886276 2.54160199346455 6.99759598298193 2.36085400111802 3.7864597824528 3.79548918917219 +observational 3.95699637107088 3.4904285153901 3.15700042115011 5.37989735354046 2.68102152871429 3.18221184049661 3.56953269648137 6.84481547920826 3.62434093297637 4.37071287477361 4.89034912822175 +observational 5.00394630594546 4.56954300834494 4.0926765051214 5.71042701737487 3.68887945411394 1.48387468945875 2.79728133483015 4.91998092582813 1.8531680973567 3.03013370027132 2.80336038090653 +observational 4.18205014264121 3.4904285153901 2.58776403522771 4.80402104473326 2.81540871942271 1.96009478404727 2.57261223020711 6.48463523563525 2.52572864430826 3.13113691056019 3.76815263500844 +observational 3.79548918917219 3.6163087612791 2.91235066461494 5.52146091786225 3.3357695763397 3.02042488614436 3.05870707271538 6.27852142416584 1.26694760348732 2.82137888640921 3.3357695763397 +observational 4.83628190695148 4.48863636973214 3.6163087612791 5.7037824746562 3.51749783735832 3.2846635654062 3.71357206670431 6.58340922215876 3.90399083373088 4.59612944133594 5.03695260241363 +observational 4.0842942263686 3.60549784517489 2.32238772029023 5.05624580534831 2.68102152871429 2.45958884180371 3.19458313229916 5.85507192220243 2.4932054526027 3.00568260440716 3.07731226054641 +observational 3.4904285153901 3.48124008933569 3.3357695763397 5.45958551414416 2.98568193770049 2.14124194258528 2.91235066461494 6.54821910276237 2.24812890719799 3.42751468997953 3.23867845216438 +observational 3.09557760852371 2.9338568698359 2.89591193827178 3.32862668882732 2.36085400111802 2.64617479738412 3.16547504814109 6.18826412308259 2.60268968544438 3.58905911883173 3.49953328238302 +observational 3.40784192438082 3.13113691056019 3.04927304048202 5.16478597392351 3.04927304048202 3.13983261752775 4.33598269617247 7.14124512235049 2.05923883436232 3.10458667846607 2.9338568698359 +observational 4.24563400976833 3.79548918917219 2.86789890204411 4.52396013056255 2.13179677201376 2.27521389619791 3.00568260440716 6.49375383985169 3.69635146895264 4.254193263164 4.20916023665068 +observational 3.70622809244855 3.09557760852371 3.56953269648137 5.29831736654804 3.75887182593397 1.96990565461153 2.39789527279837 6.27852142416584 2.61739583283408 3.34638914516716 3.3178157727231 +observational 3.92197333628131 3.48124008933569 3.13113691056019 3.2846635654062 1.71739505393919 1.22377543162212 2.67414864942653 5.45958551414416 1.6467336971778 2.61739583283408 2.46809953147162 +observational 4.66343909411207 4.45201900649392 2.9704144655697 4.46129981556839 2.30258509299405 3.89385903480047 4.21803603456465 6.18001665365257 1.96009478404727 3.23867845216438 3.58905911883173 +observational 4.95582705760126 4.50645421304893 2.85070650150373 4.19116874685764 2.91235066461494 2.72785282839839 3.69635146895264 6.59304453414244 1.7263316639056 3.13983261752775 3.08648663682246 +observational 5.21493575760899 4.88280192258637 3.04927304048202 3.04927304048202 2.34180580614733 1.77155676191054 3.70622809244855 7.13249755166004 3.8308129500026 4.74493212836325 4.97673374242057 +observational 3.91202300542815 3.45315712059287 2.7408400239252 4.11087386417331 2.45958884180371 2.79116510781272 3.55248682920838 6.77308037565554 3.70622809244855 4.67282883446191 4.66343909411207 +observational 4.92725368515721 4.69134788222914 4.18205014264121 5.88332238848828 4.10098910494077 2.10413415427021 2.66025953726586 6.27852142416584 2.51769647261099 3.35340671782581 2.1770218700187 +observational 4.01096295328305 3.47196645255036 2.61006979274201 4.95582705760126 2.32238772029023 2.24812890719799 3.23867845216438 5.84643877505772 2.04122032885964 3.15700042115011 3.34638914516716 +observational 3.75185425327532 2.89591193827178 2.83321334405622 2.7408400239252 0.19062035960865 2.63188884013665 2.72785282839839 6.18826412308259 2.27521389619791 2.23964529322017 2.55722731136763 +observational 4.36182392735636 4.30811095172371 3.25424296870549 4.70048036579242 3.74242022104197 2.84490938381941 3.75887182593397 6.4393503711001 2.34180580614733 2.92316158071916 3.56104608260405 +observational 3.62434093297637 3.25424296870549 3.18221184049661 3.3178157727231 1.34807314829969 2.83321334405622 3.86702563949741 6.53958595561767 3.65065824129374 4.17284762371004 4.04830062372069 +observational 3.04927304048202 1.87946504964716 3.20274644293832 3.3357695763397 1.30291275218084 2.7408400239252 3.71357206670431 6.78219205600679 2.04122032885964 2.37954613413017 2.68784749378469 +observational 4.33598269617247 3.77734810210154 2.1770218700187 5.45958551414416 3.12236492448736 3.13983261752775 3.69635146895264 6.36818718635049 3.23867845216438 3.7864597824528 3.94931879017184 +observational 4.11903717481247 4.16511363311031 2.77881927199042 5.09375020080676 0.99694863489161 3.23867845216438 3.52636052461616 6.18826412308259 2.04122032885964 3.17387845893747 3.38099467434464 +observational 4.20020495292158 3.80443779474821 3.13113691056019 4.22683374526818 3.2188758248682 3.34638914516716 4.02891675689965 6.11589212548303 2.23108909128898 2.9338568698359 3.20274644293832 +observational 4.03777421073371 3.25424296870549 3.05870707271538 3.05870707271538 2.77881927199042 3.09557760852371 3.48124008933569 6.82654522355659 2.20386912005489 3.17387845893747 3.29953372788566 +observational 4.45201900649392 3.08648663682246 2.92316158071916 3.23080439573347 1.52822785700856 2.61006979274201 3.2846635654062 6.04500531403601 2.39789527279837 3.06805293513362 3.09557760852371 +observational 3.67882911826043 3.3357695763397 3.03974915897077 2.9338568698359 2.72785282839839 3.18221184049661 3.66867674679642 6.40357419793482 2.61006979274201 3.44361809754611 3.66867674679642 +observational 3.43720781918519 3.16547504814109 3.03013370027132 5.17048399503815 2.68784749378469 1.61938824328727 3.03013370027132 5.6021188208797 2.60268968544438 3.42751468997953 3.59731226058845 +observational 3.38099467434464 2.99573227355399 2.80336038090653 3.8308129500026 1.7630170003624 2.68784749378469 3.76815263500844 6.13339804299665 3.35340671782581 3.85862222870103 1.14103300455206 +observational 2.91235066461494 2.94968833505258 3.7864597824528 5.44241771052179 4.13676527810605 4.0842942263686 4.53367418428302 8.19395302356374 3.19458313229916 4.03777421073371 4.34380542185368 +observational 3.49953328238302 2.64617479738412 3.21084365317094 3.14845336057165 1.49290409617815 2.06812778177956 2.67414864942653 7.05185562295589 1.42069578783722 2.53369681395743 1.45628673293993 +observational 3.95699637107088 3.49953328238302 4.00186370942794 5.8111409929767 3.85014760171006 4.47049528266149 4.98360662170834 7.95997452808054 2.81540871942271 3.23867845216438 3.49953328238302 +observational 3.67882911826043 3.23080439573347 2.4932054526027 4.47960696301275 1.12492959698548 3.26575941076705 3.88567903008854 7.24064969425547 3.43720781918519 4.10098910494077 4.30811095172371 +observational 3.67882911826043 3.00568260440716 4.53367418428302 6.22455842927536 4.07414185490458 1.708377860289 3.42751468997953 7.51914995766982 1.96009478404727 2.91235066461494 2.9338568698359 +observational 3.58073729549423 2.60268968544438 2.484906649788 5.2257466737132 3.06805293513362 2.76000994003292 3.56953269648137 6.89871453432999 2.57261223020711 2.79728133483015 3.75887182593397 +observational 4.07414185490458 3.68887945411394 3.11351530921037 4.15575319035074 3.13983261752775 2.42480272571829 2.70805020110221 6.26909628370626 4.21803603456465 4.57779898919196 1.35840915763035 +observational 4.56017282005736 4.0842942263686 3.89385903480047 6.07993319509559 3.91202300542815 2.61006979274201 3.20274644293832 6.37672694789863 3.89385903480047 4.74493212836325 5.0998664278242 +observational 3.47196645255036 3.25424296870549 3.35340671782581 5.31811999384422 3.02042488614436 3.81330703248899 4.30811095172371 7.67229245562876 1.8531680973567 3.27336401015227 3.29953372788566 +observational 3.49953328238302 3.07731226054641 2.62466859216316 4.63472898822964 2.35137525716348 2.55722731136763 3.12236492448736 6.23244801655052 2.21266038546606 3.12236492448736 3.39114704580865 +observational 3.60549784517489 4.42484663185681 3.20274644293832 4.74493212836325 2.4932054526027 3.6163087612791 3.85014760171006 6.70073110954781 2.53369681395743 3.06805293513362 3.39114704580865 +observational 3.85014760171006 3.29212628660779 3.31054301339402 2.9704144655697 2.12226153886276 1.99741770620125 2.91235066461494 6.47543271670409 2.42480272571829 3.42751468997953 3.60549784517489 +observational 3.54385368206368 3.40119738166216 2.90690105984738 4.69134788222914 2.28442112236637 4.71849887129509 5.24174701505964 7.83399634170946 2.33214389523559 3.03974915897077 3.13113691056019 +observational 3.65065824129374 3.15700042115011 1.69009581545155 1.57484646766448 2.53369681395743 3.62434093297637 4.01096295328305 6.39526159811545 3.60549784517489 4.39814601655377 4.70048036579242 +observational 5.31811999384422 4.86753445045558 3.16547504814109 3.06805293513362 1.38629436111989 2.7408400239252 3.54385368206368 6.60258789218934 2.55722731136763 2.71469474382088 3.48124008933569 +observational 0.86288995514704 0.828551817566148 4.36182392735636 5.93753620508243 4.05698877567833 2.26695791535089 3.39114704580865 6.16961073249146 2.7408400239252 2.87919845729804 3.79548918917219 +observational 3.26575941076705 3.66867674679642 3.21084365317094 3.80443779474821 2.79116510781272 3.91202300542815 4.50645421304893 7.24921505711439 3.4626060097908 4.12874598893943 4.30811095172371 +observational 3.32862668882732 2.88480071284671 3.82209829790016 4.94875989037817 3.26575941076705 2.97552956623647 3.55248682920838 6.85329909318608 2.70805020110221 3.10458667846607 3.37416870927424 +observational 4.56954300834494 4.13676527810605 4.66343909411207 5.88332238848828 4.18205014264121 2.40694510831829 3.20274644293832 6.62007320653036 1.9154509415706 3.70622809244855 3.55248682920838 +observational 5.25227342804663 4.79579054559674 2.76000994003292 4.66343909411207 2.39789527279837 2.55722731136763 3.11351530921037 6.45833828334479 2.19499988231411 2.9391619220656 3.06805293513362 +observational 3.44361809754611 2.87919845729804 3.18221184049661 2.73436750941958 2.31253542384721 3.11351530921037 3.66867674679642 6.31354804627709 3.43720781918519 4.57779898919196 5.33271879326537 +observational 3.77734810210154 3.24649099190117 2.2935443483419 4.72738781871234 2.20386912005489 3.68887945411394 4.07414185490458 6.18001665365257 2.87919845729804 3.85014760171006 4.47960696301275 +observational 3.58073729549423 3.24649099190117 3.90399083373088 5.89164421182577 3.8308129500026 3.58073729549423 4.01998014693324 7.53743003658651 2.23964529322017 3.08648663682246 3.3178157727231 +observational 3.59731226058845 3.34638914516716 2.77881927199042 4.66343909411207 1.48387468945875 2.45958884180371 3.35340671782581 6.40357419793482 4.33598269617247 5.09375020080676 5.28826703069454 +observational 5.09375020080676 4.55071400019203 2.86220088092947 3.17387845893747 1.93441576962958 2.62466859216316 3.8308129500026 5.99146454710798 2.09556092355972 2.46809953147162 2.85070650150373 +observational 3.23867845216438 3.12236492448736 3.80443779474821 5.51342874616498 5.40717177146012 3.7864597824528 4.48863636973214 8.03203531439882 3.56953269648137 4.254193263164 4.63472898822964 +observational 3.55248682920838 3.20274644293832 3.38099467434464 3.72328088083127 2.62466859216316 3.03013370027132 4.03777421073371 6.16961073249146 2.18605127673809 2.94968833505258 2.61739583283408 +observational 3.40784192438082 2.81540871942271 2.9338568698359 4.12874598893943 2.64617479738412 2.54160199346455 3.47196645255036 6.57507584059962 1.57484646766448 3.26575941076705 3.60549784517489 +observational 5.43372200355424 5.10594547390058 3.05870707271538 3.23867845216438 0.0861776962410524 4.0842942263686 4.85981240436167 7.79811262882979 2.2935443483419 2.99573227355399 2.7408400239252 +observational 3.77734810210154 3.31054301339402 4.36182392735636 5.95324333428778 4.28082412916472 3.82209829790016 4.38949864951258 7.38461038317697 2.21266038546606 2.80336038090653 2.62466859216316 +observational 4.89034912822175 4.56017282005736 2.91235066461494 4.04830062372069 0.631271776841858 2.51769647261099 3.58073729549423 6.33150184989369 2.90690105984738 3.72328088083127 3.8308129500026 +observational 3.14845336057165 3.40784192438082 3.44361809754611 5.30826769740121 3.76815263500844 4.06560209335645 4.64439089914137 7.4205789054108 2.98568193770049 3.75185425327532 4.69134788222914 +observational 3.50855589998265 3.06805293513362 3.16547504814109 3.47196645255036 1.51951320490611 2.45958884180371 3.54385368206368 5.88332238848828 2.64617479738412 3.29212628660779 3.54385368206368 +observational 3.89385903480047 3.72328088083127 2.87919845729804 4.80402104473326 2.90690105984738 2.31253542384721 2.32238772029023 6.87212810133899 2.56494935746154 3.52636052461616 3.32862668882732 +observational 3.62434093297637 3.10458667846607 3.19458313229916 4.20916023665068 3.2846635654062 2.26695791535089 2.80336038090653 5.7037824746562 2.18605127673809 2.60268968544438 2.25758772706331 +observational 3.40119738166216 2.7408400239252 2.72785282839839 4.02891675689965 2.50959926237837 3.63495111208838 3.86702563949741 6.40357419793482 1.79840401194672 3.18221184049661 2.32238772029023 +observational 3.65065824129374 3.4904285153901 2.45958884180371 2.01490302054226 2.43361335540045 4.11903717481247 5.03695260241363 8.03203531439882 2.64617479738412 3.06805293513362 1.7263316639056 +observational 3.60549784517489 3.23080439573347 3.71357206670431 4.98360662170834 4.00186370942794 2.32238772029023 3.24649099190117 7.23128700432762 2.64617479738412 3.54385368206368 3.3178157727231 +observational 3.4626060097908 2.72785282839839 2.9704144655697 2.76000994003292 1.62727783056243 2.80336038090653 3.74242022104197 7.43838353004431 4.14630430115281 4.58700621536042 3.55248682920838 +observational 5.24174701505964 4.79579054559674 3.05870707271538 3.32862668882732 2.68102152871429 3.39114704580865 3.80443779474821 6.49375383985169 0.756121979721334 4.21803603456465 1.77155676191054 +observational 3.34638914516716 2.85070650150373 2.99573227355399 4.61512051684126 2.61739583283408 1.81645208181843 2.18605127673809 5.47646355193151 2.30258509299405 3.01553490085017 3.03974915897077 +observational 5.13579843705026 4.63472898822964 2.7408400239252 3.48124008933569 1.10525683138678 3.66867674679642 4.0926765051214 7.92407232492342 1.69009581545155 3.13983261752775 3.29953372788566 +observational 3.63495111208838 3.08648663682246 3.95699637107088 5.77455154554441 3.67882911826043 3.12236492448736 3.71357206670431 6.18001665365257 2.16791018966744 2.87919845729804 3.40119738166216 +observational 3.4626060097908 3.04927304048202 3.23080439573347 3.29212628660779 2.4423470353692 0.792992515529661 2.25758772706331 4.77068462446567 2.26695791535089 3.10458667846607 3.05870707271538 +observational 3.86702563949741 3.45315712059287 3.20274644293832 4.58700621536042 2.18605127673809 3.75887182593397 4.70048036579242 7.32118855673948 2.2213750375685 3.38099467434464 3.89385903480047 +observational 3.32862668882732 3.03974915897077 3.66867674679642 4.63472898822964 3.80443779474821 3.49953328238302 4.13676527810605 6.63856778916652 1.90657514365664 3.15700042115011 3.23080439573347 +observational 3.35340671782581 2.76000994003292 2.88480071284671 4.11903717481247 2.42480272571829 2.51769647261099 2.86220088092947 6.55677835615804 1.14103300455206 3.00568260440716 3.02042488614436 +observational 4.88280192258637 4.86753445045558 4.03777421073371 5.46806014113513 3.96651119071222 3.13983261752775 3.58905911883173 6.18001665365257 2.2213750375685 3.31054301339402 3.56104608260405 +observational 3.50855589998265 3.15700042115011 4.70953020131233 6.07073772800249 4.91265488573605 2.07819075977818 2.81540871942271 6.01615715969835 4.03777421073371 4.77068462446567 4.95582705760126 +observational 4.45201900649392 3.85014760171006 3.24649099190117 4.48863636973214 2.18605127673809 4.21803603456465 4.68213122712422 7.3038432252777 3.82209829790016 4.81218435537242 4.43438186500781 +observational 3.67882911826043 3.32862668882732 2.65324196460721 4.38949864951258 2.37024374146786 2.88480071284671 3.40119738166216 6.30444880242198 3.44361809754611 4.20020495292158 4.71849887129509 +observational 3.56104608260405 3.13113691056019 2.63188884013665 4.62497281328427 3.03013370027132 3.43720781918519 4.16511363311031 7.44716835960004 2.15871472257434 3.41772668361337 3.11351530921037 +observational 4.33598269617247 3.85014760171006 3.19458313229916 2.94968833505258 1.65441127807683 2.47653840011748 3.3178157727231 6.28785856016178 2.45958884180371 3.15700042115011 3.03013370027132 +observational 3.53514535417189 3.6609942506244 3.09557760852371 3.40119738166216 1.96990565461153 2.36085400111802 2.94968833505258 6.28785856016178 2.83321334405622 3.8308129500026 4.0842942263686 +observational 3.92986292355648 2.82137888640921 2.79116510781272 5.80211837537706 3.95699637107088 2.7408400239252 3.4904285153901 6.62007320653036 2.30258509299405 2.90690105984738 3.25424296870549 +observational 3.58073729549423 3.11351530921037 2.80336038090653 2.70805020110221 1.96009478404727 1.63705307946707 2.33214389523559 6.49375383985169 3.03974915897077 3.93963817246112 4.28082412916472 +observational 3.47196645255036 3.18221184049661 3.06805293513362 2.63188884013665 1.75440368268429 3.8308129500026 4.45201900649392 7.18690102041163 0.86288995514704 3.69635146895264 3.2846635654062 +observational 3.59731226058845 3.60549784517489 3.48124008933569 3.60549784517489 2.43361335540045 3.23080439573347 3.47196645255036 6.23244801655052 1.60140574073684 2.99573227355399 3.23080439573347 +observational 4.05698877567833 3.6163087612791 1.68268837417369 2.4932054526027 1.54756250871601 2.81540871942271 3.64283551561253 6.89871453432999 2.47653840011748 3.44361809754611 3.43720781918519 +observational 3.90399083373088 3.56953269648137 2.82137888640921 5.29831736654804 3.75185425327532 3.52636052461616 3.93963817246112 6.31354804627709 2.77881927199042 3.10458667846607 3.53514535417189 +observational 3.32862668882732 2.86789890204411 2.82137888640921 4.65396035015752 3.12236492448736 2.56494935746154 3.48124008933569 7.6182510978767 2.36085400111802 3.38099467434464 3.34638914516716 +observational 3.98527346716774 3.29953372788566 3.40784192438082 2.60268968544438 0.262364264467491 4.54223038621422 5.13579843705026 7.74413662762799 2.60268968544438 3.27336401015227 3.8416005411316 +observational 3.40784192438082 3.03013370027132 2.84490938381941 3.79548918917219 0.712949807856125 3.2188758248682 3.77734810210154 6.72743172485086 2.36085400111802 3.15700042115011 2.15871472257434 +observational 3.56953269648137 3.09557760852371 3.15700042115011 4.87519732320115 1.96009478404727 2.79728133483015 3.47196645255036 7.4205789054108 2.4932054526027 3.41772668361337 3.7864597824528 +observational 3.70622809244855 3.2188758248682 2.66025953726586 5.11799381241676 3.26575941076705 2.35137525716348 2.87919845729804 6.81783057145415 2.14124194258528 3.40784192438082 3.42751468997953 +observational 3.77734810210154 3.09557760852371 3.04927304048202 4.8283137373023 2.77881927199042 2.79116510781272 2.79728133483015 6.24222326545517 2.89591193827178 3.48124008933569 3.79548918917219 +observational 4.84418708645859 4.88280192258637 2.81540871942271 5.4510384535657 3.42751468997953 2.67414864942653 3.66867674679642 6.46769872610435 1.37624402526639 3.02042488614436 2.18605127673809 +observational 4.49758497530815 3.90399083373088 2.50959926237837 5.09375020080676 2.76000994003292 2.27521389619791 2.89591193827178 6.66440902035041 3.03974915897077 4.24563400976833 4.22683374526818 +observational 3.13983261752775 3.07731226054641 3.23080439573347 2.85070650150373 2.42480272571829 2.66025953726586 3.40119738166216 6.72743172485086 2.28442112236637 3.23080439573347 2.65324196460721 +observational 3.60549784517489 2.86789890204411 2.24812890719799 5.08140436498446 3.23080439573347 3.96651119071222 4.52396013056255 7.63626960337937 2.09556092355972 2.33214389523559 2.77881927199042 +observational 3.41772668361337 3.2846635654062 3.59731226058845 3.55248682920838 2.57261223020711 3.91202300542815 4.65396035015752 7.74413662762799 3.71357206670431 4.48863636973214 4.71849887129509 +observational 4.0926765051214 3.8308129500026 3.2188758248682 3.56953269648137 2.16791018966744 3.77734810210154 4.5152454784601 7.48324441607385 3.72328088083127 4.57779898919196 4.97673374242057 +observational 3.16547504814109 3.68887945411394 2.32238772029023 4.80402104473326 0.56531380905006 2.56494935746154 3.07731226054641 6.75460409948796 3.54385368206368 4.3528552573736 4.58700621536042 +observational 3.89385903480047 3.47196645255036 2.83321334405622 5.05624580534831 3.02042488614436 1.83418018511201 2.54160199346455 6.62936325343745 2.4423470353692 2.86220088092947 3.03013370027132 +observational 3.58073729549423 3.24649099190117 3.07731226054641 3.34638914516716 2.57261223020711 2.79116510781272 3.35340671782581 6.53958595561767 4.03777421073371 4.44382703557933 3.29953372788566 +observational 3.34638914516716 3.07731226054641 2.96010509591084 5.12396397940326 2.84490938381941 3.26575941076705 4.56017282005736 7.99598047476376 2.41591377830105 3.65065824129374 4.07414185490458 +observational 4.48863636973214 3.94931879017184 2.86220088092947 3.04927304048202 2.01490302054226 1.75440368268429 2.36085400111802 6.880384082186 2.75366071235426 4.38077585277223 3.31054301339402 +observational 3.29953372788566 3.42751468997953 3.13983261752775 2.80336038090653 1.4655675420144 2.58776403522771 3.67882911826043 6.88959130835447 2.52572864430826 3.24649099190117 3.75185425327532 +observational 5.14749447681345 4.70048036579242 2.39789527279837 5.39816270151775 3.17387845893747 4.15575319035074 4.77068462446567 8.05006542291597 2.26695791535089 2.98568193770049 3.27336401015227 +observational 4.22683374526818 3.85014760171006 3.40119738166216 3.3357695763397 2.46809953147162 3.00568260440716 3.3357695763397 6.33150184989369 2.40694510831829 3.58073729549423 0 +observational 3.09557760852371 2.98568193770049 2.98568193770049 5.05624580534831 2.56494935746154 3.3357695763397 3.54385368206368 6.28785856016178 2.03339760317843 3.2188758248682 3.37416870927424 +observational 3.85862222870103 3.59731226058845 2.2213750375685 2.55722731136763 0.756121979721334 2.98568193770049 3.6609942506244 6.77308037565554 2.23108909128898 2.62466859216316 2.75366071235426 +observational 4.04830062372069 3.8416005411316 2.58776403522771 4.3267781604434 2.30258509299405 2.31253542384721 3.3357695763397 6.10702288774225 2.37954613413017 2.99573227355399 2.86220088092947 +observational 3.59731226058845 2.79728133483015 2.92316158071916 3.26575941076705 1.78170913337455 2.61006979274201 3.08648663682246 7.47420480649612 2.71469474382088 3.62434093297637 2.39789527279837 +observational 3.52636052461616 2.484906649788 3.50855589998265 5.54126354515843 3.58073729549423 2.86789890204411 3.4904285153901 6.46769872610435 2.03339760317843 3.8416005411316 2.75366071235426 +observational 3.60549784517489 2.58776403522771 2.68102152871429 3.21084365317094 2.27521389619791 4.254193263164 4.77068462446567 6.91671502035361 1.79009141212736 2.06812778177956 2.35137525716348 +observational 3.75185425327532 3.26575941076705 3.40119738166216 3.04927304048202 1.98787434815435 2.2935443483419 3.58073729549423 5.99893656194668 2.11384296839717 3.18221184049661 3.13113691056019 +observational 3.3357695763397 2.81540871942271 3.56104608260405 3.89385903480047 2.90690105984738 3.16547504814109 3.60549784517489 6.24222326545517 2.33214389523559 3.65065824129374 4.10098910494077 +observational 4.95582705760126 4.33598269617247 2.92316158071916 3.12236492448736 1.04380405217311 3.48124008933569 4.01096295328305 6.79122146272619 3.00568260440716 3.71357206670431 3.77734810210154 +observational 3.58905911883173 3.52636052461616 3.60549784517489 3.75887182593397 3.18221184049661 3.60549784517489 3.82209829790016 6.45833828334479 1.9154509415706 2.9704144655697 3.29212628660779 +observational 3.49953328238302 3.38099467434464 3.09557760852371 3.74242022104197 1.04380405217311 3.13983261752775 3.49953328238302 6.96129604591017 2.26695791535089 3.85014760171006 3.74242022104197 +observational 5.37063802812766 4.69134788222914 2.63188884013665 3.75887182593397 1.43031124653666 3.38099467434464 4.10098910494077 8.06808962627824 2.19499988231411 3.02042488614436 3.45315712059287 +observational 4.74493212836325 4.38949864951258 3.10458667846607 3.31054301339402 0.810930216216329 3.03013370027132 3.45315712059287 6.34035930372775 2.34180580614733 3.23080439573347 3.39114704580865 +observational 4.57779898919196 4.14630430115281 3.06805293513362 3.04927304048202 1.01523067972906 3.29953372788566 3.85014760171006 6.66440902035041 2.07819075977818 3.8308129500026 2.9391619220656 +observational 4.85981240436167 4.54223038621422 3.16547504814109 2.77258872223978 2.2213750375685 2.06812778177956 3.64283551561253 5.99893656194668 0.647103242058538 1.79840401194672 0.122217632724249 +observational 4.20916023665068 3.72328088083127 3.70622809244855 4.19116874685764 3.02042488614436 4.40671924726425 4.87519732320115 7.60936653795421 2.37954613413017 2.79116510781272 3.3178157727231 +observational 3.8416005411316 3.37416870927424 2.86220088092947 4.06560209335645 2.70136121295141 2.98568193770049 3.63495111208838 6.85329909318608 1.7630170003624 2.86789890204411 3.24649099190117 +observational 4.06560209335645 3.70622809244855 2.80336038090653 5.01063529409626 2.52572864430826 2.70136121295141 3.56104608260405 6.81783057145415 1.34807314829969 2.63188884013665 3.34638914516716 +observational 3.96651119071222 3.76815263500844 3.42751468997953 3.08648663682246 0.99694863489161 3.63495111208838 4.03777421073371 7.34858753092759 2.91235066461494 3.4904285153901 3.56104608260405 +observational 3.62434093297637 3.38099467434464 3.3178157727231 3.81330703248899 3.15700042115011 3.76815263500844 4.10098910494077 6.53958595561767 2.02419306744936 3.21084365317094 3.6163087612791 +observational 5.10594547390058 4.58700621536042 3.16547504814109 2.85070650150373 2.58021682959233 2.57261223020711 3.17387845893747 6.60258789218934 2.58021682959233 3.06805293513362 3.13983261752775 +observational 4.38949864951258 3.89385903480047 2.87919845729804 5.45958551414416 3.39114704580865 1.57484646766448 2.9391619220656 5.77455154554441 2.68784749378469 3.18221184049661 3.95699637107088 +observational 3.58905911883173 2.92316158071916 2.94968833505258 2.64617479738412 2.77258872223978 2.94968833505258 3.41772668361337 6.49375383985169 2.58776403522771 2.94968833505258 3.6163087612791 +observational 3.13113691056019 3.26575941076705 2.99573227355399 5.33271879326537 2.84490938381941 2.97552956623647 3.56953269648137 6.67329796776765 2.4932054526027 2.79116510781272 3.60549784517489 +observational 3.56104608260405 3.55248682920838 3.03013370027132 5.31811999384422 2.92316158071916 2.90690105984738 3.38099467434464 6.37672694789863 2.58776403522771 3.10458667846607 3.60549784517489 +observational 3.55248682920838 3.09557760852371 3.2846635654062 3.76815263500844 1.89761985992753 3.31054301339402 3.2846635654062 6.19644412779452 1.62727783056243 1.74571553072665 3.09557760852371 +observational 5.18178355029209 4.60517018598809 3.31054301339402 5.7037824746562 3.02042488614436 3.53514535417189 4.20916023665068 7.49220304261874 2.15871472257434 2.14124194258528 2.79728133483015 +observational 3.92197333628131 3.40784192438082 2.96010509591084 2.39789527279837 1.80828877117927 2.85070650150373 3.36384159511839 6.44888939414686 3.16547504814109 4.15575319035074 4.0926765051214 +observational 4.17284762371004 3.94931879017184 2.83321334405622 4.90527477843843 2.81540871942271 2.70805020110221 3.17387845893747 6.63856778916652 2.02419306744936 2.83321334405622 3.29212628660779 +observational 4.00186370942794 3.6163087612791 2.99573227355399 2.77881927199042 2.27521389619791 3.56104608260405 3.98527346716774 6.31354804627709 2.67414864942653 3.43720781918519 1.63705307946707 +observational 3.41772668361337 3.07731226054641 3.06805293513362 4.56017282005736 1.4655675420144 2.81540871942271 3.3357695763397 6.85329909318608 1.87946504964716 3.13113691056019 3.01553490085017 +observational 3.93963817246112 3.4904285153901 3.4904285153901 3.17387845893747 3.04927304048202 2.61006979274201 3.16547504814109 6.73696695800186 2.25758772706331 3.07731226054641 3.08648663682246 +observational 4.23700086262362 3.69635146895264 3.00568260440716 4.13676527810605 2.9704144655697 0.765467842139571 1.99741770620125 3.05870707271538 2.68102152871429 3.74242022104197 3.64283551561253 +observational 3.60549784517489 3.12236492448736 3.3357695763397 3.13983261752775 1.56444054650336 3.03013370027132 3.4904285153901 6.07073772800249 3.74242022104197 4.64439089914137 4.56017282005736 +observational 3.85014760171006 3.6163087612791 2.53369681395743 3.56104608260405 1.12492959698548 2.4932054526027 3.18221184049661 6.51174532964473 0.828551817566148 3.16547504814109 2.86220088092947 +observational 3.6163087612791 3.37416870927424 3.56953269648137 3.39114704580865 2.97552956623647 4.03777421073371 4.40671924726425 7.51043055637801 0.300104592450338 2.33214389523559 3.19458313229916 +observational 3.92197333628131 3.37416870927424 2.70805020110221 4.96284463025991 2.06812778177956 2.88480071284671 3.48124008933569 6.1527326947041 1.92424865227413 3.19458313229916 2.75366071235426 +observational 2.72785282839839 3.41772668361337 2.9704144655697 5.03695260241363 2.36085400111802 3.40119738166216 3.85862222870103 6.38687931936265 2.06812778177956 3.60549784517489 3.76815263500844 +observational 3.64283551561253 3.08648663682246 3.59731226058845 5.94542060860658 3.79548918917219 2.83321334405622 3.66867674679642 6.21460809842219 2.40694510831829 3.18221184049661 3.48124008933569 +observational 4.16511363311031 3.58073729549423 2.89591193827178 3.02042488614436 1.870262530716 3.26575941076705 4.10098910494077 7.40245152081824 3.01553490085017 3.75185425327532 3.74242022104197 +observational 5.14749447681345 4.56017282005736 2.7408400239252 3.70622809244855 2.40694510831829 1.18784342239605 2.50959926237837 6.60258789218934 2.10413415427021 3.06805293513362 2.9391619220656 +observational 3.56953269648137 3.3357695763397 2.87919845729804 3.02042488614436 2.41591377830105 3.92986292355648 4.48863636973214 6.79122146272619 1.81645208181843 1.97823903617067 2.70136121295141 +observational 3.69635146895264 3.06805293513362 3.93963817246112 5.40717177146012 3.45315712059287 2.76000994003292 3.72328088083127 6.41345895716736 1.81645208181843 3.00568260440716 3.03974915897077 +observational 3.13113691056019 2.96010509591084 2.63188884013665 2.81540871942271 2.05027016437956 4.70953020131233 5.14749447681345 7.6275443904885 2.23108909128898 3.02042488614436 3.11351530921037 +observational 3.98527346716774 3.90399083373088 3.23867845216438 3.00568260440716 1.84371920815877 1.81645208181843 2.56494935746154 6.84481547920826 3.20274644293832 3.81330703248899 4.22683374526818 +observational 4.99043258677874 4.48863636973214 3.51749783735832 5.59471137960184 3.14845336057165 2.19499988231411 3.12236492448736 6.90775527898214 2.40694510831829 2.99573227355399 3.55248682920838 +observational 4.56017282005736 4.17284762371004 3.42751468997953 5.28826703069454 3.64283551561253 4.14630430115281 4.84418708645859 7.74413662762799 2.65324196460721 3.23867845216438 3.95699637107088 +observational 4.3267781604434 4.15575319035074 4.01998014693324 5.73979291217923 4.12874598893943 3.6163087612791 4.15575319035074 7.42952084278646 2.56494935746154 3.26575941076705 3.64283551561253 +observational 4.37071287477361 3.95699637107088 2.55722731136763 4.92725368515721 2.4932054526027 5.14749447681345 6.11589212548303 8.48177324618498 2.03339760317843 3.36384159511839 3.34638914516716 +observational 3.75887182593397 3.42751468997953 3.13983261752775 2.92316158071916 0.62057648772511 1.51072193949494 2.87919845729804 6.97073007814353 1.75440368268429 2.94968833505258 2.50959926237837 +observational 5.05624580534831 4.54223038621422 2.80336038090653 2.79728133483015 0.518793793415168 2.91235066461494 3.58073729549423 6.47543271670409 2.18605127673809 3.2846635654062 3.04927304048202 +observational 5.40717177146012 5.03043792139244 2.37024374146786 4.47049528266149 1.79840401194672 3.64283551561253 4.23700086262362 7.73543335249969 3.55248682920838 4.38949864951258 4.78749174278205 +observational 3.49953328238302 3.03974915897077 3.06805293513362 4.43438186500781 2.84490938381941 2.86789890204411 3.32862668882732 6.35088571671474 2.27521389619791 3.18221184049661 2.79728133483015 +observational 4.05698877567833 2.02419306744936 2.79116510781272 5.06259503302697 3.06805293513362 3.75185425327532 4.30000279919529 6.91671502035361 1.6094379124341 2.484906649788 2.86789890204411 +observational 5.4510384535657 5.65599181081985 3.8416005411316 5.71042701737487 3.86702563949741 2.50143595173921 2.86220088092947 6.5206211275587 2.28442112236637 3.10458667846607 4.29045944114839 +observational 3.95699637107088 3.81330703248899 2.34180580614733 4.42484663185681 1.94304891677428 2.65324196460721 3.44361809754611 6.83625927727707 1.97823903617067 3.27336401015227 3.74242022104197 +observational 3.77734810210154 3.3178157727231 3.25424296870549 3.10458667846607 1.27815220250019 3.42751468997953 3.7864597824528 6.38687931936265 2.88480071284671 3.9926809084456 4.55071400019203 +observational 3.58905911883173 2.96010509591084 3.05870707271538 2.79728133483015 0.425267735404344 3.36384159511839 3.68887945411394 6.79122146272619 1.84371920815877 3.41772668361337 2.86789890204411 +observational 4.00186370942794 3.74242022104197 3.00568260440716 2.80336038090653 1.59127394180643 3.82209829790016 4.36182392735636 8.20303024171486 2.55722731136763 2.9704144655697 3.39114704580865 +observational 4.10098910494077 3.56953269648137 2.64617479738412 4.82028156560504 2.89591193827178 0 0.99694863489161 2.36085400111802 3.70622809244855 4.26267987704132 4.46129981556839 +observational 4.0926765051214 3.88567903008854 3.40784192438082 5.34233425196481 2.08691355651854 3.09557760852371 3.71357206670431 6.23244801655052 2.13179677201376 3.06805293513362 2.89591193827178 +observational 3.13113691056019 3.29212628660779 3.00568260440716 2.97552956623647 1.65441127807683 2.33214389523559 2.58776403522771 5.54126354515843 2.31253542384721 3.11351530921037 2.97552956623647 +observational 5.0998664278242 5.41610040220442 2.91235066461494 3.96651119071222 0.378436435720245 3.91202300542815 4.22683374526818 6.11589212548303 0.871293365943419 2.91235066461494 2.63188884013665 +observational 3.79548918917219 3.51749783735832 2.96010509591084 3.56104608260405 2.484906649788 1.30291275218084 3.08648663682246 6.09807428216624 2.35137525716348 2.82137888640921 3.23080439573347 +observational 3.59731226058845 3.11351530921037 2.84490938381941 2.80336038090653 1.98787434815435 3.06805293513362 3.88567903008854 6.40357419793482 3.08648663682246 3.75887182593397 3.7864597824528 +observational 3.17387845893747 2.02419306744936 3.02042488614436 4.79579054559674 2.41591377830105 3.56953269648137 3.8416005411316 6.42162226780652 3.52636052461616 4.3267781604434 4.31748811353631 +observational 3.90399083373088 3.72328088083127 3.24649099190117 2.40694510831829 2.20386912005489 3.36384159511839 4.04830062372069 7.47420480649612 1.6094379124341 3.29953372788566 3.49953328238302 +observational 4.96284463025991 4.30811095172371 3.19458313229916 3.93963817246112 2.68784749378469 3.91202300542815 4.41642806139121 7.78904040165748 3.92197333628131 4.60517018598809 4.47049528266149 +observational 3.56104608260405 2.79116510781272 2.82137888640921 2.99573227355399 2.63188884013665 2.20386912005489 3.52636052461616 6.00881318544259 1.98787434815435 3.37416870927424 3.56104608260405 +observational 3.59731226058845 3.09557760852371 2.76000994003292 4.70953020131233 3.20274644293832 3.43720781918519 4.02891675689965 6.52941883826223 1.99741770620125 2.77881927199042 0.916290731874155 +observational 3.53514535417189 3.04927304048202 2.68102152871429 4.88280192258637 2.52572864430826 2.25758772706331 2.70136121295141 6.68336094576627 1.81645208181843 2.80336038090653 3.23867845216438 +observational 2.99573227355399 2.86789890204411 1.79009141212736 1.93441576962958 2.41591377830105 1.2947271675944 2.34180580614733 6.31354804627709 2.39789527279837 3.10458667846607 3.06805293513362 +observational 4.29045944114839 3.91202300542815 3.36384159511839 3.47196645255036 2.9338568698359 2.32238772029023 2.88480071284671 5.76519110278484 2.13179677201376 2.83321334405622 3.74242022104197 +observational 5.08140436498446 4.48863636973214 2.9704144655697 4.95582705760126 1.79009141212736 2.91235066461494 3.20274644293832 6.55677835615804 1.60140574073684 2.9704144655697 2.51769647261099 +observational 3.44361809754611 3.44361809754611 2.9338568698359 2.85070650150373 0.62057648772511 3.07731226054641 3.90399083373088 7.26752542782817 2.64617479738412 3.37416870927424 3.40784192438082 +observational 3.29953372788566 3.34638914516716 2.77881927199042 3.02042488614436 2.94968833505258 2.68784749378469 3.25424296870549 6.4393503711001 0 3.8308129500026 1.12492959698548 +observational 5.32300997913841 4.91998092582813 2.94968833505258 2.83321334405622 2.11384296839717 3.29212628660779 4.0842942263686 6.8627579130514 2.04122032885964 2.77881927199042 3.35340671782581 +observational 3.85862222870103 3.65065824129374 3.20274644293832 3.44361809754611 0 4.04830062372069 4.54223038621422 7.55538194424027 2.37954613413017 2.85070650150373 2.9391619220656 +observational 3.96651119071222 3.44361809754611 3.80443779474821 5.57594910314632 3.40784192438082 2.4932054526027 3.58073729549423 7.14124512235049 2.63188884013665 3.32862668882732 3.07731226054641 +observational 5.0998664278242 4.47049528266149 3.09557760852371 3.27336401015227 0.672944473242426 2.4932054526027 2.63188884013665 6.27852142416584 2.52572864430826 3.4626060097908 3.24649099190117 +observational 4.01998014693324 3.38099467434464 3.49953328238302 6.4393503711001 3.72328088083127 2.41591377830105 3.16547504814109 6.66440902035041 2.23108909128898 2.75366071235426 3.58905911883173 +observational 3.68887945411394 3.7864597824528 4.15575319035074 5.84643877505772 4.27249074760558 2.54160199346455 3.37416870927424 6.35957386867238 2.81540871942271 3.72328088083127 3.9759363311718 +observational 4.45201900649392 4.26267987704132 2.94968833505258 3.3357695763397 2.34180580614733 3.4626060097908 4.04830062372069 7.3664451483276 2.2213750375685 2.61739583283408 3.53514535417189 +observational 3.85862222870103 3.49953328238302 4.18205014264121 4.94875989037817 2.9704144655697 3.50855589998265 3.8308129500026 6.05443934626937 2.62466859216316 3.40784192438082 3.00568260440716 +observational 3.62434093297637 3.3357695763397 2.63188884013665 3.52636052461616 1.36609165380237 2.42480272571829 3.08648663682246 7.05185562295589 2.23108909128898 3.03013370027132 3.18221184049661 +observational 3.2846635654062 2.70805020110221 2.28442112236637 5.03695260241363 1.95160817016995 3.24649099190117 3.67882911826043 5.78382518232974 2.68784749378469 3.39114704580865 3.96651119071222 +observational 3.63495111208838 3.38099467434464 3.31054301339402 3.18221184049661 0.285178942233662 2.73436750941958 3.43720781918519 6.30444880242198 2.03339760317843 2.25758772706331 3.03013370027132 +observational 3.38099467434464 3.11351530921037 3.82209829790016 5.79301360838414 3.06805293513362 4.55071400019203 5.13579843705026 7.68109900153636 1.96990565461153 3.03013370027132 3.42751468997953 +observational 3.49953328238302 3.27336401015227 3.06805293513362 3.92986292355648 1.94304891677428 4.76217393479776 4.90527477843843 6.09807428216624 3.90399083373088 4.69134788222914 4.63472898822964 +observational 3.64283551561253 2.89591193827178 2.30258509299405 3.01553490085017 2.14943391349987 2.50143595173921 3.4626060097908 6.66440902035041 2.26695791535089 3.34638914516716 3.12236492448736 +observational 3.60549784517489 3.19458313229916 2.75366071235426 3.79548918917219 1.7263316639056 3.16547504814109 3.77734810210154 6.92559519711047 4.69134788222914 5.63835466933375 5.87211778947542 +observational 3.71357206670431 3.4626060097908 2.99573227355399 4.65396035015752 2.82137888640921 3.52636052461616 4.21803603456465 7.40245152081824 2.77258872223978 3.59731226058845 3.47196645255036 +observational 4.94875989037817 4.33598269617247 3.21084365317094 3.58073729549423 1.22377543162212 1.51072193949494 2.32238772029023 6.82654522355659 2.2213750375685 3.11351530921037 3.25424296870549 +observational 3.75887182593397 3.58073729549423 2.68784749378469 4.82028156560504 2.98568193770049 3.40784192438082 3.88567903008854 7.00669522683704 1.08856195281461 2.58021682959233 2.91235066461494 +observational 4.20020495292158 3.40784192438082 0 2.66025953726586 1.96990565461153 3.70622809244855 4.16511363311031 6.10702288774225 0 1.82616089594539 1.36609165380237 +observational 3.3357695763397 2.51769647261099 3.21084365317094 3.11351530921037 1.80828877117927 2.68102152871429 3.70622809244855 6.24222326545517 2.12226153886276 3.03974915897077 3.18221184049661 +observational 3.05870707271538 3.10458667846607 3.9759363311718 5.82008293035236 4.21803603456465 1.99741770620125 2.14124194258528 5.8111409929767 1.9154509415706 2.70805020110221 2.60268968544438 +observational 3.35340671782581 3.11351530921037 2.36085400111802 2.94968833505258 2.98568193770049 4.10098910494077 4.99043258677874 7.84306401669205 2.85070650150373 3.73289633953071 4.21803603456465 +observational 5.41610040220442 5.00394630594546 2.23964529322017 2.42480272571829 2.34180580614733 3.21084365317094 4.0926765051214 7.40245152081824 0 2.57261223020711 2.85070650150373 +observational 4.96284463025991 5.08140436498446 3.29212628660779 2.77881927199042 2.45958884180371 2.13179677201376 3.25424296870549 6.68336094576627 3.14845336057165 3.86702563949741 3.67882911826043 +observational 3.48124008933569 3.3178157727231 2.99573227355399 4.03777421073371 1.69927861643389 3.41772668361337 3.82209829790016 7.09672137849476 3.3178157727231 4.17284762371004 4.87519732320115 +observational 3.70622809244855 3.06805293513362 3.07731226054641 3.92986292355648 2.42480272571829 3.34638914516716 3.74242022104197 6.35957386867238 0.693147180559945 2.88480071284671 2.77258872223978 +observational 3.9759363311718 3.85862222870103 3.37416870927424 3.85862222870103 2.56494935746154 2.23964529322017 3.15700042115011 6.99759598298193 0.0582689081239758 4.77912349311153 1.93441576962958 +observational 4.45201900649392 3.8308129500026 4.06560209335645 5.87211778947542 4.12874598893943 2.56494935746154 3.32862668882732 6.14418563412565 3.4904285153901 4.59612944133594 4.0926765051214 +observational 3.94931879017184 3.62434093297637 3.9759363311718 5.28826703069454 4.26267987704132 2.2213750375685 2.89591193827178 6.27852142416584 2.96010509591084 3.38099467434464 4.00186370942794 +observational 4.20916023665068 4.28082412916472 2.35137525716348 4.77912349311153 1.6467336971778 3.14845336057165 3.71357206670431 6.44888939414686 3.85862222870103 4.87519732320115 5.57594910314632 +observational 3.40119738166216 3.41772668361337 0.963174317773006 1.18784342239605 0 1.62727783056243 2.54160199346455 6.56526497003536 2.09556092355972 2.72785282839839 2.58776403522771 +observational 3.18221184049661 2.90690105984738 2.88480071284671 4.57779898919196 1.96009478404727 4.14630430115281 4.71849887129509 7.55538194424027 2.86789890204411 3.32862668882732 3.56104608260405 +observational 3.47196645255036 2.94968833505258 2.66025953726586 4.34380542185368 2.4932054526027 2.86220088092947 3.40784192438082 6.33150184989369 2.90690105984738 3.91202300542815 4.13676527810605 +observational 3.58905911883173 3.45315712059287 3.11351530921037 3.71357206670431 2.31253542384721 2.51769647261099 3.32862668882732 6.87212810133899 2.9338568698359 4.04830062372069 4.16511363311031 +observational 4.28082412916472 3.98527346716774 3.21084365317094 3.03013370027132 1.36609165380237 2.79116510781272 3.36384159511839 7.16857989726403 3.92986292355648 4.43438186500781 4.49758497530815 +observational 3.55248682920838 3.24649099190117 3.01553490085017 4.39814601655377 1.08856195281461 3.06805293513362 3.92197333628131 7.0604763659998 1.89761985992753 3.41772668361337 3.15700042115011 +observational 5.01727983681492 4.38949864951258 3.76815263500844 3.85014760171006 2.75366071235426 2.99573227355399 3.89385903480047 6.55677835615804 2.16791018966744 2.42480272571829 2.70805020110221 +observational 3.52636052461616 2.73436750941958 2.82137888640921 4.05698877567833 2.02419306744936 3.56104608260405 3.90399083373088 7.47420480649612 2.23108909128898 3.35340671782581 3.29953372788566 +observational 4.64439089914137 4.40671924726425 2.50959926237837 0.173953307123438 3.08648663682246 2.83321334405622 3.14845336057165 6.25958146406492 2.64617479738412 3.27336401015227 3.29953372788566 +observational 4.47960696301275 3.58073729549423 2.99573227355399 4.87519732320115 2.43361335540045 3.54385368206368 4.01096295328305 7.04228617193974 2.71469474382088 3.53514535417189 3.29953372788566 +observational 4.67282883446191 4.02891675689965 2.97552956623647 5.27299955856375 2.72785282839839 3.38099467434464 3.8416005411316 6.45833828334479 2.12226153886276 3.04927304048202 2.63188884013665 +observational 1.24990173621434 1.48387468945875 3.25424296870549 3.2846635654062 0.717839793150317 2.99573227355399 3.70622809244855 6.71901315438526 2.07819075977818 3.3357695763397 3.32862668882732 +observational 3.92197333628131 3.50855589998265 3.94931879017184 5.95324333428778 4.05698877567833 2.81540871942271 3.13113691056019 6.18826412308259 1.43031124653666 2.89591193827178 3.47196645255036 +observational 4.37071287477361 4.02891675689965 1.56444054650336 4.19116874685764 1.84371920815877 3.67882911826043 4.37071287477361 7.82524529143177 3.2188758248682 4.12874598893943 4.28082412916472 +observational 3.93963817246112 3.31054301339402 4.18205014264121 6.03548143252476 4.0842942263686 3.20274644293832 3.73289633953071 6.68336094576627 2.63188884013665 3.51749783735832 3.43720781918519 +observational 3.87743156065853 3.50855589998265 3.2188758248682 3.35340671782581 1.80828877117927 1.36609165380237 2.18605127673809 5.06259503302697 1.18784342239605 2.54160199346455 2.96010509591084 +observational 4.34380542185368 3.92197333628131 2.9391619220656 5.01063529409626 2.37024374146786 3.37416870927424 3.89385903480047 6.77308037565554 2.14943391349987 5.29831736654804 1.97823903617067 +observational 3.71357206670431 3.3178157727231 2.99573227355399 2.77881927199042 0.27002713721306 2.61739583283408 3.75887182593397 6.41345895716736 3.60549784517489 4.34380542185368 4.79579054559674 +observational 3.91202300542815 3.23080439573347 2.81540871942271 4.38949864951258 2.13179677201376 3.09557760852371 3.60549784517489 6.36818718635049 2.02419306744936 2.36085400111802 3.13983261752775 +observational 4.04830062372069 3.56953269648137 4.13676527810605 6.07993319509559 3.89385903480047 1.51072193949494 2.71469474382088 6.69208374250663 3.85862222870103 4.0842942263686 2.66025953726586 +observational 3.52636052461616 2.77258872223978 2.4932054526027 5.66642668811243 3.12236492448736 2.87919845729804 3.03013370027132 6.22455842927536 2.58776403522771 3.39114704580865 3.48124008933569 +observational 3.4626060097908 3.15700042115011 3.23080439573347 3.15700042115011 1.19694818938897 2.37024374146786 3.20274644293832 6.74641212857337 2.47653840011748 3.12236492448736 1.99741770620125 +observational 3.67882911826043 3.3357695763397 2.89591193827178 3.36384159511839 3.03974915897077 2.94968833505258 3.39114704580865 6.32256523992728 2.92316158071916 4.18205014264121 4.29045944114839 +observational 4.47960696301275 4.15575319035074 4.36182392735636 5.82008293035236 3.93963817246112 3.34638914516716 3.79548918917219 6.71901315438526 2.88480071284671 3.95699637107088 4.01096295328305 +observational 4.18205014264121 3.75887182593397 3.14845336057165 3.11351530921037 2.53369681395743 2.60268968544438 2.94968833505258 6.08904487544685 1.80828877117927 3.14845336057165 3.53514535417189 +observational 4.68213122712422 4.27249074760558 2.82137888640921 5.20948615284142 3.17387845893747 2.77881927199042 3.40119738166216 5.99146454710798 2.61006979274201 3.06805293513362 3.7864597824528 +observational 3.32862668882732 3.26575941076705 2.64617479738412 5.67675380226828 3.23867845216438 2.63188884013665 3.65065824129374 6.59304453414244 1.74571553072665 3.14845336057165 3.2846635654062 +observational 4.7361984483945 4.24563400976833 2.50143595173921 5.35185813347607 2.33214389523559 4.15575319035074 4.58700621536042 7.41155628781116 2.41591377830105 3.19458313229916 3.40119738166216 +observational 3.88567903008854 3.36384159511839 3.47196645255036 3.44361809754611 2.83321334405622 3.4904285153901 4.05698877567833 7.16857989726403 2.94968833505258 3.90399083373088 4.00186370942794 +observational 3.71357206670431 2.89591193827178 2.68102152871429 3.09557760852371 0 3.19458313229916 3.6609942506244 6.38687931936265 2.25758772706331 2.88480071284671 1.98787434815435 +observational 3.55248682920838 2.97552956623647 3.00568260440716 2.57261223020711 0 4.01096295328305 4.74493212836325 7.51914995766982 1.95160817016995 3.23080439573347 3.58905911883173 +observational 2.86220088092947 2.4423470353692 3.37416870927424 2.9338568698359 1.78170913337455 3.3178157727231 3.88567903008854 6.62936325343745 3.3178157727231 4.16511363311031 4.18205014264121 +observational 4.21803603456465 4.27249074760558 2.89591193827178 2.65324196460721 2.21266038546606 3.66867674679642 3.86702563949741 6.84481547920826 2.70805020110221 3.55248682920838 3.9926809084456 +observational 5.13579843705026 4.65396035015752 2.89591193827178 4.01096295328305 1.74571553072665 3.89385903480047 4.29045944114839 6.71901315438526 2.33214389523559 3.00568260440716 3.79548918917219 +observational 3.4626060097908 3.23867845216438 3.39114704580865 3.21084365317094 0.970778917158225 0 2.32238772029023 3.6609942506244 2.11384296839717 2.484906649788 3.50855589998265 +observational 3.4626060097908 3.12236492448736 2.53369681395743 5.37063802812766 2.9391619220656 2.9338568698359 3.63495111208838 6.52941883826223 0.900161349944271 4.06560209335645 1.9154509415706 +observational 3.37416870927424 3.13113691056019 3.03974915897077 4.30811095172371 1.39376637595859 2.484906649788 3.3357695763397 6.02586597382531 1.75440368268429 2.82137888640921 2.62466859216316 +observational 3.62434093297637 3.11351530921037 2.82137888640921 5.01727983681492 2.50143595173921 4.72738781871234 5.4249500174814 7.87929148508227 2.19499988231411 2.70136121295141 1.4655675420144 +observational 4.39814601655377 4.11087386417331 2.61006979274201 4.17284762371004 2.40694510831829 2.88480071284671 4.07414185490458 6.21460809842219 2.7408400239252 3.23867845216438 3.35340671782581 +observational 4.3528552573736 4.01096295328305 2.90690105984738 4.84418708645859 2.47653840011748 4.01096295328305 4.43438186500781 6.96129604591017 3.8308129500026 4.54223038621422 4.65396035015752 +observational 3.3178157727231 2.9391619220656 3.04927304048202 4.31748811353631 2.9391619220656 2.77881927199042 3.37416870927424 7.0604763659998 3.38099467434464 4.18205014264121 4.39814601655377 +observational 4.3267781604434 3.63495111208838 2.32238772029023 2.19499988231411 2.04122032885964 2.32238772029023 3.3357695763397 6.13339804299665 3.13113691056019 3.75887182593397 4.16511363311031 +observational 3.86702563949741 3.42751468997953 3.26575941076705 3.63495111208838 1.79009141212736 2.01490302054226 1.95160817016995 6.02586597382531 3.58073729549423 4.41642806139121 5.07517381523383 +observational 5.18178355029209 4.68213122712422 3.9926809084456 5.61312810638807 3.39114704580865 3.71357206670431 4.26267987704132 7.56423847517049 2.08691355651854 2.94968833505258 3.35340671782581 +observational 4.29045944114839 3.77734810210154 3.26575941076705 5.83773044716594 3.74242022104197 3.90399083373088 4.38949864951258 7.02464903045364 2.91235066461494 3.76815263500844 4.19116874685764 +observational 3.53514535417189 3.05870707271538 1.45628673293993 2.60268968544438 2.23108909128898 2.28442112236637 3.24649099190117 6.47543271670409 0 4.16511363311031 1.4655675420144 +observational 3.89385903480047 2.47653840011748 4.15575319035074 6.09807428216624 4.19116874685764 3.41772668361337 3.92986292355648 6.07993319509559 2.27521389619791 2.73436750941958 2.73436750941958 +observational 3.92986292355648 3.60549784517489 3.07731226054641 5.61312810638807 3.00568260440716 2.50959926237837 3.06805293513362 6.19644412779452 2.3887627892351 3.50855589998265 3.81330703248899 +observational 3.59731226058845 3.03974915897077 3.03013370027132 4.22683374526818 3.19458313229916 4.34380542185368 4.70048036579242 5.91889385427315 2.27521389619791 2.70136121295141 3.27336401015227 +observational 4.30000279919529 2.82137888640921 3.48124008933569 3.18221184049661 0 3.53514535417189 4.01096295328305 6.34035930372775 2.25758772706331 3.10458667846607 3.02042488614436 +observational 3.75185425327532 3.35340671782581 2.92316158071916 3.63495111208838 2.60268968544438 2.26695791535089 3.20274644293832 5.88332238848828 1.65441127807683 2.90690105984738 2.61006979274201 +observational 4.5152454784601 4.01096295328305 2.90690105984738 5.27811465923052 2.36085400111802 3.51749783735832 3.92986292355648 6.48463523563525 2.36085400111802 3.31054301339402 3.76815263500844 +observational 4.93447393313069 4.55071400019203 3.03974915897077 4.30000279919529 2.32238772029023 3.32862668882732 3.87743156065853 7.08757370555797 2.75366071235426 3.58905911883173 3.8308129500026 +observational 4.12874598893943 3.71357206670431 3.31054301339402 3.11351530921037 0.582215619852664 2.13179677201376 3.03013370027132 6.26909628370626 2.484906649788 3.17387845893747 2.53369681395743 +observational 4.15575319035074 3.71357206670431 3.10458667846607 2.70136121295141 0.0861776962410524 3.41772668361337 4.17284762371004 7.51914995766982 2.58776403522771 3.52636052461616 3.23080439573347 +observational 4.49758497530815 4.40671924726425 2.52572864430826 3.31054301339402 2.31253542384721 2.85070650150373 3.43720781918519 6.78219205600679 2.80336038090653 3.85014760171006 4.22683374526818 +observational 3.29212628660779 3.17387845893747 2.62466859216316 4.17284762371004 2.3887627892351 3.27336401015227 3.75887182593397 6.13339804299665 1.87946504964716 3.24649099190117 3.4904285153901 +observational 4.71849887129509 4.23700086262362 3.14845336057165 3.82209829790016 2.37954613413017 3.35340671782581 4.0926765051214 7.20489251020467 1.12492959698548 2.14124194258528 2.05923883436232 +observational 4.23700086262362 3.60549784517489 3.29212628660779 2.96010509591084 1.99741770620125 2.88480071284671 3.50855589998265 6.90775527898214 2.46809953147162 2.81540871942271 3.25424296870549 +observational 3.36384159511839 2.90690105984738 3.7864597824528 6.07073772800249 4.20916023665068 3.04927304048202 3.39114704580865 6.10702288774225 2.39789527279837 3.58905911883173 3.75185425327532 +observational 3.3357695763397 2.56494935746154 2.07819075977818 4.97673374242057 2.79116510781272 2.83321334405622 3.53514535417189 6.47543271670409 2.46809953147162 3.40784192438082 3.96651119071222 +observational 3.14845336057165 2.57261223020711 4.40671924726425 5.47646355193151 3.26575941076705 3.42751468997953 3.92197333628131 6.8627579130514 2.82137888640921 3.29212628660779 2.92316158071916 +observational 5.19849703126583 4.57779898919196 3.11351530921037 4.65396035015752 2.55722731136763 0 1.89761985992753 0 2.14943391349987 3.03974915897077 2.42480272571829 +observational 4.91265488573605 4.47049528266149 2.64617479738412 5.08140436498446 3.08648663682246 3.11351530921037 3.76815263500844 8.00503334463711 2.3887627892351 3.23080439573347 3.32862668882732 +observational 3.87743156065853 3.06805293513362 3.06805293513362 3.04927304048202 2.21266038546606 1.88858365386359 3.13113691056019 6.35088571671474 3.56104608260405 4.26267987704132 4.99043258677874 +observational 3.95699637107088 3.3357695763397 2.84490938381941 5.53338948872752 3.4626060097908 3.75185425327532 4.30000279919529 6.58340922215876 1.42069578783722 3.62434093297637 2.77258872223978 +observational 3.44361809754611 2.9338568698359 3.9926809084456 5.7037824746562 3.74242022104197 3.48124008933569 4.06560209335645 7.57353126274595 0.647103242058538 1.68268837417369 2.75366071235426 +observational 3.7864597824528 2.91235066461494 3.15700042115011 3.12236492448736 1.88858365386359 3.13113691056019 3.60549784517489 6.20657592672493 2.77258872223978 3.52636052461616 2.67414864942653 +observational 3.7864597824528 3.74242022104197 2.67414864942653 5.31811999384422 2.62466859216316 3.03013370027132 3.75185425327532 6.23244801655052 2.58776403522771 3.66867674679642 4.11903717481247 +observational 3.4626060097908 2.80336038090653 2.55722731136763 4.98360662170834 3.3357695763397 4.10098910494077 4.66343909411207 7.48324441607385 3.89385903480047 4.91998092582813 5.32300997913841 +observational 3.62434093297637 3.23080439573347 3.05870707271538 3.69635146895264 2.36085400111802 2.56494935746154 4.00186370942794 5.89164421182577 3.45315712059287 4.19116874685764 4.27249074760558 +observational 4.74493212836325 4.58700621536042 3.02042488614436 2.73436750941958 2.34180580614733 3.15700042115011 4.15575319035074 8.20303024171486 2.46809953147162 3.11351530921037 2.91235066461494 +observational 3.32862668882732 3.31054301339402 3.47196645255036 5.61312810638807 3.54385368206368 2.96010509591084 3.39114704580865 5.36129216570943 0.916290731874155 4.70048036579242 2.16791018966744 +observational 3.53514535417189 2.9704144655697 3.11351530921037 5.32300997913841 2.87919845729804 2.79728133483015 3.39114704580865 6.26909628370626 3.07731226054641 3.72328088083127 2.34180580614733 +observational 4.77068462446567 4.3528552573736 2.80336038090653 4.71849887129509 3.07731226054641 1.95160817016995 1.31372366828506 6.63856778916652 2.51769647261099 3.03974915897077 3.58905911883173 +observational 3.50855589998265 2.58776403522771 3.52636052461616 3.71357206670431 2.37954613413017 2.37024374146786 3.35340671782581 6.76388490856244 2.3887627892351 3.25424296870549 2.99573227355399 +observational 3.06805293513362 3.58905911883173 3.58073729549423 4.94875989037817 3.38099467434464 3.58905911883173 4.16511363311031 8.14902386805177 2.4423470353692 3.41772668361337 3.76815263500844 +observational 4.30811095172371 3.73289633953071 3.88567903008854 5.53338948872752 3.37416870927424 3.06805293513362 3.8416005411316 6.47543271670409 1.92424865227413 2.91235066461494 3.81330703248899 +observational 3.6163087612791 2.9391619220656 3.09557760852371 2.40694510831829 2.1770218700187 2.82137888640921 4.64439089914137 7.70841066725737 2.9338568698359 4.22683374526818 4.11903717481247 +observational 3.35340671782581 3.45315712059287 3.70622809244855 6.07073772800249 4.03777421073371 1.23256026117785 2.51769647261099 6.8001700683022 1.74571553072665 3.34638914516716 2.61739583283408 +observational 3.73289633953071 3.24649099190117 3.03974915897077 2.64617479738412 1.68268837417369 2.55722731136763 3.56104608260405 5.89164421182577 2.57261223020711 3.07731226054641 3.06805293513362 +observational 5.61312810638807 5.27811465923052 3.10458667846607 3.77734810210154 2.12226153886276 1.90657514365664 3.13983261752775 7.00669522683704 2.19499988231411 3.24649099190117 2.84490938381941 +observational 3.3178157727231 3.23867845216438 2.98568193770049 3.60549784517489 1.69009581545155 2.53369681395743 3.02042488614436 6.33150184989369 2.51769647261099 3.8416005411316 3.95699637107088 +observational 4.79579054559674 4.38077585277223 3.39114704580865 3.17387845893747 2.67414864942653 3.24649099190117 3.48124008933569 6.51174532964473 2.26695791535089 2.73436750941958 3.49953328238302 +observational 5.46806014113513 5.13579843705026 4.254193263164 5.48479693349065 3.72328088083127 3.62434093297637 3.98527346716774 5.77455154554441 2.2213750375685 2.76000994003292 2.76000994003292 +observational 3.87743156065853 3.17387845893747 2.9338568698359 3.75185425327532 1.87946504964716 3.69635146895264 3.92197333628131 6.11589212548303 3.01553490085017 3.49953328238302 3.96651119071222 +observational 5.09375020080676 4.7361984483945 3.19458313229916 3.19458313229916 2.66025953726586 3.89385903480047 4.27249074760558 6.39526159811545 3.90399083373088 4.56954300834494 4.65396035015752 +observational 5.48479693349065 5.01727983681492 2.98568193770049 2.76000994003292 2.05027016437956 2.64617479738412 3.2846635654062 6.42162226780652 2.31253542384721 3.62434093297637 3.75887182593397 +observational 4.30811095172371 4.07414185490458 2.54160199346455 5.01063529409626 2.09556092355972 2.43361335540045 3.12236492448736 6.31354804627709 2.18605127673809 3.07731226054641 2.91235066461494 +observational 4.10098910494077 3.70622809244855 3.80443779474821 5.47646355193151 3.69635146895264 1.67335123817775 2.84490938381941 6.61069604471776 2.19499988231411 2.84490938381941 3.6163087612791 +observational 3.47196645255036 2.81540871942271 3.49953328238302 5.73979291217923 3.82209829790016 3.62434093297637 4.14630430115281 6.54821910276237 2.52572864430826 3.58905911883173 4.03777421073371 +observational 3.94931879017184 3.62434093297637 2.90690105984738 3.19458313229916 1.63705307946707 2.92316158071916 3.02042488614436 5.76519110278484 1.83418018511201 2.43361335540045 3.58073729549423 +observational 4.89034912822175 4.38949864951258 3.34638914516716 3.60549784517489 1.88858365386359 3.63495111208838 3.94931879017184 5.83773044716594 4.70953020131233 5.80211837537706 5.87211778947542 +observational 3.53514535417189 2.84490938381941 3.73289633953071 5.61312810638807 3.20274644293832 3.14845336057165 3.56953269648137 6.29526600143965 2.50143595173921 3.48124008933569 3.2846635654062 +observational 3.67882911826043 3.40119738166216 3.37416870927424 5.48479693349065 3.58073729549423 2.07819075977818 3.24649099190117 6.12468339089421 0.908258560176891 3.03013370027132 2.67414864942653 +observational 3.53514535417189 2.86220088092947 3.23080439573347 2.9391619220656 2.61006979274201 2.9338568698359 3.52636052461616 6.55677835615804 2.15871472257434 3.08648663682246 2.57261223020711 +observational 3.44361809754611 3.53514535417189 2.88480071284671 2.86789890204411 2.55722731136763 0.717839793150317 2.12226153886276 5.95324333428778 3.92986292355648 4.76217393479776 5.01727983681492 +observational 4.38077585277223 3.90399083373088 3.56104608260405 3.66867674679642 2.23108909128898 2.68102152871429 3.03013370027132 6.27852142416584 1.54756250871601 2.67414864942653 2.89591193827178 +observational 4.80402104473326 4.96284463025991 3.31054301339402 3.50855589998265 1.92424865227413 3.08648663682246 3.44361809754611 6.30444880242198 2.1770218700187 3.2188758248682 3.13983261752775 +observational 3.63495111208838 3.02042488614436 2.98568193770049 4.21803603456465 2.73436750941958 4.29045944114839 4.82028156560504 7.78030308790837 2.09556092355972 2.45958884180371 3.01553490085017 +observational 4.77068462446567 4.16511363311031 2.94968833505258 4.92725368515721 2.73436750941958 3.36384159511839 3.36384159511839 6.48463523563525 2.52572864430826 3.39114704580865 3.21084365317094 +observational 3.6609942506244 2.67414864942653 2.76000994003292 4.10098910494077 3.63495111208838 3.27336401015227 3.82209829790016 6.65544035036765 2.37954613413017 2.72785282839839 2.77881927199042 +observational 4.52396013056255 3.73289633953071 3.27336401015227 3.31054301339402 1.73518911773966 2.23108909128898 3.60549784517489 6.06145691892802 3.96651119071222 4.8283137373023 5.40717177146012 +observational 3.49953328238302 2.68102152871429 3.43720781918519 2.50143595173921 2.20386912005489 2.04122032885964 2.61739583283408 5.54126354515843 2.77258872223978 3.19458313229916 3.62434093297637 +observational 3.56953269648137 3.3178157727231 2.70136121295141 4.86753445045558 2.9338568698359 2.46809953147162 2.80336038090653 6.21460809842219 1.97823903617067 2.9704144655697 2.85070650150373 +observational 4.0842942263686 3.42751468997953 1.78170913337455 3.38099467434464 2.2213750375685 4.61512051684126 5.08140436498446 7.48324441607385 2.57261223020711 3.09557760852371 3.3357695763397 +observational 4.36182392735636 3.94931879017184 3.13113691056019 3.16547504814109 2.34180580614733 1.68268837417369 2.27521389619791 6.36818718635049 1.89761985992753 2.65324196460721 2.73436750941958 +observational 4.98360662170834 4.46129981556839 0 4.60517018598809 2.96010509591084 2.64617479738412 3.31054301339402 6.18826412308259 2.70136121295141 3.50855589998265 3.74242022104197 +observational 3.29212628660779 2.65324196460721 2.72785282839839 3.81330703248899 2.30258509299405 2.79116510781272 3.34638914516716 6.46769872610435 3.31054301339402 4.02891675689965 4.38077585277223 +observational 3.44361809754611 2.97552956623647 2.84490938381941 4.45201900649392 2.45958884180371 3.37416870927424 4.0842942263686 6.81783057145415 2.2935443483419 3.2188758248682 2.67414864942653 +observational 3.42751468997953 3.21084365317094 3.04927304048202 4.5152454784601 2.97552956623647 2.70805020110221 3.72328088083127 6.25190388316589 3.51749783735832 4.43438186500781 4.39814601655377 +observational 4.59612944133594 4.57779898919196 3.18221184049661 3.00568260440716 2.19499988231411 3.56953269648137 4.06560209335645 7.7621706071382 2.00552585872967 3.19458313229916 2.92316158071916 +observational 3.42751468997953 3.11351530921037 2.39789527279837 4.13676527810605 1.79840401194672 3.54385368206368 4.10098910494077 7.29437729928882 2.36085400111802 3.3178157727231 3.67882911826043 +observational 3.32862668882732 2.70805020110221 2.9704144655697 3.14845336057165 2.65324196460721 2.9338568698359 3.71357206670431 7.12367278520461 1.43983512804792 2.10413415427021 2.73436750941958 +observational 3.60549784517489 3.44361809754611 4.21803603456465 5.65599181081985 4.00186370942794 3.88567903008854 4.11087386417331 5.94542060860658 3.10458667846607 4.10098910494077 4.29045944114839 +observational 4.69134788222914 4.42484663185681 4.0842942263686 5.72031177660741 3.90399083373088 3.58073729549423 4.21803603456465 8.23906533176927 3.08648663682246 3.86702563949741 3.75887182593397 +observational 3.79548918917219 3.3357695763397 2.02419306744936 4.98360662170834 2.97552956623647 2.7408400239252 3.38099467434464 6.34035930372775 1.66392609771817 3.2846635654062 2.86220088092947 +observational 3.63495111208838 3.00568260440716 3.72328088083127 3.75185425327532 2.68102152871429 2.43361335540045 3.3178157727231 6.06145691892802 3.47196645255036 4.44382703557933 4.71849887129509 +observational 3.9759363311718 3.64283551561253 3.23080439573347 4.67282883446191 2.58021682959233 2.11384296839717 2.66025953726586 5.57594910314632 2.50959926237837 3.18221184049661 3.48124008933569 +observational 5.09375020080676 4.52396013056255 3.02042488614436 3.48124008933569 1.93441576962958 3.14845336057165 3.51749783735832 5.85507192220243 0.683096844706444 4.45201900649392 1.99741770620125 +observational 3.50855589998265 3.29953372788566 2.79116510781272 4.95582705760126 2.2213750375685 4.66343909411207 5.25227342804663 7.66340766489348 2.30258509299405 3.06805293513362 3.17387845893747 +observational 3.53514535417189 2.58021682959233 3.04927304048202 3.21084365317094 2.50143595173921 3.24649099190117 3.94931879017184 6.25190388316589 2.34180580614733 3.13983261752775 3.40119738166216 +observational 2.92316158071916 1.69009581545155 3.00568260440716 3.11351530921037 1.50185270175416 3.70622809244855 4.13676527810605 6.53958595561767 3.31054301339402 3.96651119071222 4.11087386417331 +observational 3.6163087612791 3.13983261752775 2.03339760317843 3.11351530921037 2.58021682959233 4.37071287477361 4.99043258677874 7.54644627374602 1.99741770620125 3.25424296870549 3.29953372788566 +observational 3.2846635654062 2.75366071235426 3.3357695763397 5.8111409929767 3.87743156065853 2.64617479738412 3.04927304048202 6.80903930604298 1.77155676191054 3.34638914516716 3.08648663682246 +observational 4.95582705760126 4.58700621536042 4.0842942263686 5.97126183979046 3.79548918917219 4.27249074760558 4.81218435537242 7.47420480649612 3.53514535417189 4.77068462446567 4.91998092582813 +observational 3.95699637107088 3.52636052461616 3.29212628660779 3.18221184049661 1.74571553072665 3.63495111208838 4.07414185490458 7.28550654852279 1.94304891677428 3.09557760852371 3.3178157727231 +observational 3.4626060097908 2.82137888640921 3.47196645255036 3.8416005411316 2.75366071235426 2.3887627892351 3.31054301339402 6.79122146272619 2.90690105984738 3.25424296870549 4.07414185490458 +observational 4.66343909411207 4.22683374526818 2.51769647261099 5.16478597392351 2.82137888640921 2.50959926237837 3.69635146895264 6.52941883826223 2.16791018966744 3.34638914516716 2.2935443483419 +observational 3.75185425327532 3.05870707271538 3.03974915897077 4.87519732320115 2.4932054526027 2.54160199346455 3.45315712059287 6.18826412308259 2.14124194258528 2.9391619220656 3.03013370027132 +observational 3.55248682920838 2.79728133483015 2.87919845729804 2.9338568698359 0.765467842139571 3.54385368206368 4.0842942263686 6.09807428216624 3.98527346716774 4.36182392735636 3.00568260440716 +observational 3.4626060097908 3.27336401015227 2.64617479738412 3.00568260440716 1.52822785700856 2.51769647261099 2.9391619220656 6.68336094576627 1.96990565461153 2.96010509591084 3.10458667846607 +observational 3.59731226058845 3.03013370027132 3.38099467434464 3.59731226058845 3.05870707271538 0.727548607277278 2.2935443483419 3.2846635654062 3.41772668361337 3.92197333628131 2.26695791535089 +observational 3.3178157727231 2.7408400239252 3.29953372788566 3.58073729549423 2.36085400111802 4.14630430115281 4.56017282005736 7.08757370555797 2.61006979274201 2.88480071284671 3.08648663682246 +observational 3.26575941076705 3.03974915897077 3.12236492448736 2.31253542384721 2.00552585872967 2.73436750941958 3.6163087612791 6.07073772800249 2.37954613413017 2.67414864942653 2.11384296839717 +observational 2.77881927199042 3.2188758248682 2.89591193827178 3.54385368206368 1.50185270175416 1.25846098961001 2.61006979274201 6.55677835615804 2.4423470353692 3.29212628660779 3.62434093297637 +observational 3.55248682920838 2.77881927199042 3.9926809084456 6.33150184989369 4.27249074760558 2.56494935746154 3.3178157727231 6.60258789218934 2.27521389619791 2.91235066461494 2.9391619220656 +observational 5.03043792139244 4.40671924726425 3.50855589998265 3.88567903008854 2.11384296839717 2.47653840011748 3.35340671782581 6.56526497003536 2.77881927199042 3.85014760171006 3.59731226058845 +observational 4.85981240436167 5.08140436498446 3.9926809084456 4.37071287477361 3.15700042115011 3.55248682920838 4.254193263164 7.93307977188041 1.87946504964716 2.03339760317843 3.52636052461616 +observational 3.50855589998265 2.86220088092947 3.17387845893747 2.80336038090653 0 2.06812778177956 3.06805293513362 6.35957386867238 2.01490302054226 3.40784192438082 3.18221184049661 +observational 3.4626060097908 3.50855589998265 4.17284762371004 6.16120732169508 4.34380542185368 3.69635146895264 3.8416005411316 7.06987412845857 2.2213750375685 2.7408400239252 2.53369681395743 +observational 3.25424296870549 2.81540871942271 2.68784749378469 5.37989735354046 3.60549784517489 4.47049528266149 5.01727983681492 7.95120715647297 1.24990173621434 3.93963817246112 0.792992515529661 +observational 4.58700621536042 4.21803603456465 2.40694510831829 4.37071287477361 1.79840401194672 2.25758772706331 3.05870707271538 6.1527326947041 3.93963817246112 4.53367418428302 5.18178355029209 +observational 4.01096295328305 3.44361809754611 3.9759363311718 5.53338948872752 3.92986292355648 2.58021682959233 3.23867845216438 7.06987412845857 2.50143595173921 3.26575941076705 3.42751468997953 +observational 3.25424296870549 3.00568260440716 2.34180580614733 5.18738580584075 2.87919845729804 2.72785282839839 3.60549784517489 7.05185562295589 1.42069578783722 2.65324196460721 2.07819075977818 +observational 3.81330703248899 3.43720781918519 3.13983261752775 3.40119738166216 2.4932054526027 2.12226153886276 3.20274644293832 6.35088571671474 2.2935443483419 2.9391619220656 3.03013370027132 +observational 3.98527346716774 3.45315712059287 3.39114704580865 3.68887945411394 2.67414864942653 4.04830062372069 4.48863636973214 7.54644627374602 2.62466859216316 3.56104608260405 3.67882911826043 +observational 3.77734810210154 3.54385368206368 3.21084365317094 2.68784749378469 1.77155676191054 3.36384159511839 4.20916023665068 7.15070145759253 3.11351530921037 3.75185425327532 4.15575319035074 +observational 5.27811465923052 4.72738781871234 2.65324196460721 4.52396013056255 0.879626747502564 2.45958884180371 2.70805020110221 6.45833828334479 2.02419306744936 3.09557760852371 3.25424296870549 +observational 3.42751468997953 3.03013370027132 3.34638914516716 3.40119738166216 2.54160199346455 2.61006979274201 2.80336038090653 6.23244801655052 2.36085400111802 3.21084365317094 2.90690105984738 +observational 3.05870707271538 3.15700042115011 2.90690105984738 4.44382703557933 1.99741770620125 3.11351530921037 3.62434093297637 6.14418563412565 3.36384159511839 4.03777421073371 4.15575319035074 +observational 3.54385368206368 2.87919845729804 3.24649099190117 3.41772668361337 1.51072193949494 2.79116510781272 3.45315712059287 6.42162226780652 2.14124194258528 2.55722731136763 2.82137888640921 +observational 3.40784192438082 2.85070650150373 4.11903717481247 4.80402104473326 4.28082412916472 2.25758772706331 3.27336401015227 6.36818718635049 2.01490302054226 3.13113691056019 2.62466859216316 +observational 3.40784192438082 3.23080439573347 4.02891675689965 6.35088571671474 4.31748811353631 2.36085400111802 3.16547504814109 6.10702288774225 2.58021682959233 3.43720781918519 3.6609942506244 +observational 3.40784192438082 2.46809953147162 3.06805293513362 3.23867845216438 2.4423470353692 1.90657514365664 2.96010509591084 5.31811999384422 1.69927861643389 2.58021682959233 3.16547504814109 +observational 4.88280192258637 4.56017282005736 2.94968833505258 3.16547504814109 2.41591377830105 3.56953269648137 3.9759363311718 7.04228617193974 3.23080439573347 4.10098910494077 4.81218435537242 +observational 3.90399083373088 3.67882911826043 3.62434093297637 3.98527346716774 2.63188884013665 2.05027016437956 3.09557760852371 4.04830062372069 3.08648663682246 3.90399083373088 4.254193263164 +observational 3.50855589998265 2.77258872223978 3.13983261752775 3.47196645255036 2.14124194258528 3.39114704580865 3.68887945411394 6.32256523992728 2.58776403522771 2.20386912005489 2.30258509299405 +observational 3.85014760171006 3.86702563949741 2.76000994003292 4.76217393479776 2.68784749378469 3.19458313229916 3.58905911883173 6.90775527898214 2.35137525716348 3.63495111208838 4.55071400019203 +observational 4.28082412916472 3.24649099190117 2.56494935746154 1.15057202759882 2.06812778177956 3.63495111208838 4.74493212836325 6.88959130835447 2.83321334405622 3.63495111208838 3.73289633953071 +observational 4.93447393313069 4.5152454784601 2.9704144655697 4.254193263164 1.97823903617067 2.56494935746154 3.11351530921037 6.02586597382531 1.95160817016995 3.02042488614436 0.936093359170335 +observational 3.50855589998265 3.12236492448736 2.80336038090653 2.90690105984738 2.4423470353692 3.37416870927424 3.9926809084456 6.07073772800249 2.79116510781272 3.73289633953071 4.31748811353631 +observational 4.52396013056255 4.38077585277223 4.68213122712422 5.39816270151775 6.98841318199959 4.79579054559674 5.32300997913841 7.82524529143177 2.35137525716348 2.77258872223978 3.23867845216438 +observational 3.48124008933569 3.16547504814109 3.3357695763397 3.3357695763397 3.11351530921037 3.44361809754611 3.80443779474821 6.41345895716736 2.91235066461494 3.9759363311718 4.74493212836325 +observational 3.56104608260405 2.92316158071916 3.03013370027132 3.18221184049661 1.4036429994545 2.55722731136763 3.27336401015227 6.28785856016178 2.23108909128898 3.3178157727231 4.10098910494077 +observational 4.92725368515721 4.65396035015752 0.908258560176891 2.72785282839839 2.24812890719799 0.215111379616945 1.65441127807683 4.12874598893943 2.14124194258528 3.62434093297637 3.26575941076705 +observational 3.62434093297637 3.13983261752775 2.58776403522771 5.67675380226828 1.98787434815435 2.23964529322017 3.64283551561253 7.45645455517621 2.23964529322017 2.85070650150373 3.24649099190117 +observational 3.63495111208838 2.15871472257434 2.85070650150373 3.50855589998265 2.06812778177956 3.00568260440716 3.82209829790016 7.72621265050753 2.11384296839717 3.12236492448736 2.67414864942653 +observational 4.31748811353631 3.92986292355648 2.79728133483015 3.39114704580865 2.21266038546606 4.11087386417331 4.68213122712422 7.24064969425547 1.98787434815435 2.85070650150373 3.69635146895264 +observational 3.64283551561253 3.26575941076705 3.40119738166216 3.3178157727231 1.870262530716 3.00568260440716 3.21084365317094 6.23244801655052 2.84490938381941 3.56104608260405 2.87919845729804 +observational 3.2846635654062 2.92316158071916 3.88567903008854 3.7864597824528 1.33236601909433 2.64617479738412 2.79116510781272 6.67329796776765 2.07819075977818 3.03974915897077 3.08648663682246 +observational 3.41772668361337 3.13113691056019 3.09557760852371 3.29953372788566 1.86252854011626 4.0926765051214 4.72738781871234 7.34858753092759 0.871293365943419 4.40671924726425 0.703097511413113 +observational 4.0926765051214 3.85014760171006 2.9338568698359 5.26269018890489 3.47196645255036 2.35137525716348 3.25424296870549 6.50279004591562 2.60268968544438 3.4904285153901 3.89385903480047 +observational 3.63495111208838 3.12236492448736 3.58073729549423 5.61312810638807 3.49953328238302 1.07840958135059 2.79728133483015 6.47543271670409 3.06805293513362 3.87743156065853 3.73289633953071 +observational 3.58905911883173 2.86220088092947 3.86702563949741 5.07517381523383 3.03974915897077 4.0842942263686 4.61512051684126 7.24064969425547 2.45958884180371 3.03974915897077 3.02042488614436 +observational 3.76815263500844 3.29953372788566 3.50855589998265 3.40784192438082 2.47653840011748 2.27521389619791 3.03013370027132 5.37063802812766 1.11514159061932 3.03974915897077 0 +observational 3.82209829790016 3.23867845216438 2.76000994003292 5.24174701505964 2.11384296839717 3.95699637107088 4.43438186500781 7.25841215059531 2.42480272571829 3.75887182593397 3.58905911883173 +observational 3.45315712059287 3.32862668882732 2.92316158071916 4.05698877567833 2.57261223020711 1.99741770620125 2.35137525716348 5.62040086571715 1.870262530716 2.77881927199042 3.56104608260405 +observational 5.29831736654804 4.56017282005736 2.14943391349987 2.79728133483015 1.28647402583768 3.59731226058845 4.21803603456465 6.89871453432999 2.2935443483419 3.13113691056019 2.45958884180371 +observational 3.55248682920838 2.7408400239252 3.16547504814109 4.38077585277223 2.77881927199042 3.58905911883173 4.05698877567833 7.04228617193974 1.69927861643389 2.97552956623647 3.2846635654062 +observational 5.18178355029209 4.59612944133594 2.68784749378469 3.18221184049661 2.32238772029023 2.65324196460721 2.71469474382088 6.34035930372775 4.66343909411207 5.01727983681492 3.40119738166216 +observational 4.55071400019203 3.64283551561253 2.77881927199042 5.35185813347607 3.47196645255036 2.77258872223978 3.36384159511839 6.28785856016178 2.23964529322017 2.97552956623647 2.2935443483419 +observational 3.19458313229916 2.91235066461494 2.75366071235426 2.90690105984738 1.21491274436427 2.55722731136763 3.49953328238302 6.62007320653036 2.11384296839717 2.72785282839839 2.50959926237837 +observational 4.01096295328305 4.01096295328305 2.13179677201376 4.98360662170834 3.06805293513362 2.61006979274201 3.32862668882732 6.47543271670409 1.96990565461153 3.07731226054641 3.14845336057165 +observational 3.92986292355648 3.85862222870103 3.01553490085017 3.20274644293832 0.703097511413113 2.32238772029023 3.3357695763397 6.88959130835447 2.76000994003292 3.93963817246112 4.34380542185368 +observational 3.9926809084456 3.53514535417189 2.484906649788 4.93447393313069 2.97552956623647 2.50959926237837 2.9338568698359 6.43133108193348 1.83418018511201 2.9338568698359 3.63495111208838 +observational 3.71357206670431 3.29212628660779 2.99573227355399 2.85070650150373 2.05027016437956 3.2188758248682 3.59731226058845 6.47543271670409 2.45958884180371 2.71469474382088 2.9338568698359 +observational 3.29953372788566 3.29953372788566 2.88480071284671 2.86220088092947 1.8531680973567 1.82616089594539 3.09557760852371 5.91889385427315 2.41591377830105 3.23080439573347 3.85862222870103 +observational 3.59731226058845 3.23080439573347 3.29212628660779 5.54126354515843 3.01553490085017 4.29045944114839 5.03695260241363 8.04109100370863 2.31253542384721 3.65065824129374 3.71357206670431 +observational 3.29212628660779 2.91235066461494 3.86702563949741 5.40717177146012 3.87743156065853 2.98568193770049 3.72328088083127 7.16857989726403 2.3887627892351 3.45315712059287 3.4626060097908 +observational 4.71849887129509 4.38949864951258 3.12236492448736 3.25424296870549 2.33214389523559 2.53369681395743 3.40784192438082 6.16120732169508 1.42069578783722 2.82137888640921 2.79728133483015 +observational 3.40119738166216 2.86789890204411 3.02042488614436 3.18221184049661 0.0676586484738149 4.53367418428302 5.17048399503815 8.12207437536222 2.32238772029023 3.21084365317094 3.93963817246112 +observational 3.36384159511839 3.03974915897077 3.3178157727231 3.55248682920838 2.37024374146786 3.07731226054641 3.7864597824528 6.98007594056176 1.92424865227413 2.3887627892351 3.4904285153901 +observational 3.58073729549423 3.10458667846607 2.73436750941958 5.05624580534831 3.03013370027132 0.231111720963387 3.14845336057165 2.85070650150373 1.8531680973567 2.9338568698359 3.03013370027132 +observational 5.33271879326537 4.93447393313069 2.46809953147162 4.95582705760126 2.98568193770049 2.82137888640921 3.54385368206368 6.33150184989369 2.28442112236637 2.9338568698359 3.51749783735832 +observational 3.40119738166216 3.49953328238302 2.46809953147162 3.65065824129374 2.68784749378469 1.9154509415706 2.90690105984738 7.0604763659998 2.01490302054226 2.30258509299405 2.71469474382088 +observational 3.36384159511839 2.72785282839839 3.72328088083127 4.95582705760126 3.56953269648137 2.77881927199042 3.54385368206368 6.16961073249146 1.33236601909433 3.18221184049661 3.18221184049661 +observational 3.80443779474821 3.20274644293832 3.01553490085017 3.06805293513362 3.21084365317094 1.84371920815877 3.09557760852371 6.64639051484773 3.15700042115011 3.75185425327532 4.31748811353631 +observational 2.70805020110221 1.95160817016995 2.9391619220656 5.46806014113513 3.14845336057165 5.4971682252932 6.16120732169508 8.61667646990119 2.66025953726586 3.3178157727231 4.06560209335645 +observational 3.73289633953071 3.13983261752775 2.96010509591084 5.06259503302697 2.70805020110221 3.41772668361337 3.8416005411316 6.18001665365257 2.2935443483419 3.18221184049661 3.36384159511839 +observational 3.43720781918519 2.99573227355399 2.4932054526027 5.05624580534831 2.76000994003292 4.55071400019203 4.91265488573605 6.95272864462487 2.35137525716348 3.51749783735832 3.93963817246112 +observational 3.27336401015227 3.04927304048202 2.82137888640921 4.04830062372069 2.1770218700187 3.62434093297637 4.07414185490458 6.25958146406492 1.5830939370945 3.53514535417189 3.25424296870549 +observational 4.23700086262362 3.63495111208838 2.98568193770049 2.83321334405622 0.2390169004705 3.3357695763397 3.87743156065853 6.46769872610435 2.14124194258528 3.39114704580865 3.26575941076705 +observational 4.00186370942794 3.59731226058845 1.95160817016995 2.18605127673809 1.69927861643389 1.84371920815877 1.51951320490611 5.01063529409626 1.96990565461153 3.10458667846607 1.87946504964716 +observational 3.25424296870549 2.58776403522771 4.49758497530815 6.04500531403601 4.29045944114839 3.40784192438082 3.80443779474821 6.49375383985169 2.33214389523559 3.3178157727231 3.72328088083127 +observational 3.4626060097908 2.79728133483015 4.20916023665068 5.17048399503815 3.17387845893747 4.03777421073371 4.57779898919196 7.14124512235049 2.58021682959233 2.66025953726586 3.2846635654062 +observational 3.89385903480047 3.76815263500844 3.43720781918519 3.4904285153901 2.87919845729804 2.97552956623647 3.74242022104197 6.39526159811545 1.4036429994545 2.81540871942271 3.19458313229916 +observational 3.34638914516716 3.00568260440716 2.21266038546606 5.10594547390058 2.52572864430826 2.61739583283408 3.32862668882732 5.99893656194668 2.36085400111802 3.01553490085017 3.15700042115011 +observational 3.75185425327532 3.49953328238302 3.36384159511839 3.20274644293832 2.36085400111802 2.50143595173921 3.00568260440716 6.22455842927536 1.78170913337455 2.7408400239252 1.4036429994545 +observational 3.38099467434464 3.23867845216438 2.50143595173921 4.3267781604434 2.484906649788 2.9391619220656 3.74242022104197 7.69938940625674 2.46809953147162 3.3357695763397 3.10458667846607 +observational 3.53514535417189 2.86789890204411 2.97552956623647 3.03013370027132 2.64617479738412 3.40784192438082 3.71357206670431 5.74620319054015 2.21266038546606 2.9704144655697 2.70136121295141 +observational 3.50855589998265 3.35340671782581 2.43361335540045 5.24174701505964 2.65324196460721 2.7408400239252 3.38099467434464 6.29526600143965 2.14124194258528 2.66025953726586 3.3178157727231 +observational 4.23700086262362 3.9926809084456 2.9704144655697 2.79116510781272 2.40694510831829 2.43361335540045 3.21084365317094 6.35088571671474 2.42480272571829 3.29953372788566 4.0842942263686 +observational 4.88280192258637 4.43438186500781 3.13983261752775 3.03974915897077 1.17865499634165 3.06805293513362 3.52636052461616 5.89164421182577 1.99741770620125 3.32862668882732 3.60549784517489 +observational 0.131028262406404 0.746687947487975 3.15700042115011 2.9704144655697 0 3.18221184049661 3.8416005411316 6.880384082186 4.26267987704132 5.21493575760899 5.33271879326537 +observational 3.25424296870549 2.58021682959233 3.08648663682246 3.18221184049661 3.05870707271538 4.0926765051214 4.52396013056255 7.22256601882217 2.05027016437956 3.03013370027132 3.29212628660779 +observational 3.49953328238302 3.10458667846607 3.85862222870103 4.94875989037817 3.66867674679642 3.29953372788566 3.92197333628131 6.90775527898214 0 4.31748811353631 2.04122032885964 +observational 4.80402104473326 4.3267781604434 3.02042488614436 3.74242022104197 1.870262530716 3.89385903480047 4.78749174278205 7.18690102041163 2.21266038546606 2.77258872223978 3.10458667846607 +observational 4.36182392735636 4.02891675689965 1.68268837417369 4.98360662170834 2.1770218700187 2.37954613413017 3.26575941076705 6.03548143252476 3.05870707271538 3.90399083373088 4.17284762371004 +observational 4.14630430115281 3.92986292355648 4.07414185490458 5.96357934361845 4.0842942263686 3.07731226054641 3.51749783735832 6.75460409948796 2.61006979274201 3.18221184049661 2.61739583283408 +observational 3.67882911826043 3.01553490085017 2.64617479738412 4.61512051684126 2.46809953147162 2.56494935746154 3.13113691056019 6.24222326545517 1.88858365386359 2.77258872223978 3.51749783735832 +observational 5.31811999384422 4.92725368515721 2.86220088092947 5.25227342804663 3.23867845216438 1.708377860289 2.68102152871429 6.81783057145415 1.39376637595859 2.9338568698359 3.40784192438082 +observational 3.11351530921037 2.83321334405622 2.81540871942271 4.40671924726425 2.9338568698359 3.6163087612791 4.11903717481247 7.07834157955767 2.37024374146786 3.12236492448736 3.35340671782581 +observational 3.69635146895264 3.07731226054641 3.29953372788566 5.6937321388027 3.2846635654062 3.68887945411394 4.12874598893943 6.96129604591017 2.2935443483419 3.12236492448736 3.58073729549423 +observational 5.45958551414416 4.90527477843843 3.9759363311718 5.88332238848828 3.98527346716774 2.47653840011748 3.21084365317094 6.51174532964473 3.18221184049661 4.11903717481247 4.37071287477361 +observational 3.18221184049661 2.56494935746154 4.28082412916472 5.82008293035236 4.45201900649392 0.00995033085316809 0.89199803930511 5.06259503302697 1.82616089594539 2.72785282839839 2.84490938381941 +observational 3.11351530921037 3.04927304048202 3.14845336057165 4.11087386417331 2.03339760317843 4.63472898822964 5.54126354515843 8.23004431012611 2.52572864430826 3.25424296870549 3.10458667846607 +observational 4.68213122712422 4.66343909411207 3.6609942506244 5.54126354515843 4.01096295328305 4.01998014693324 4.47049528266149 7.24064969425547 2.20386912005489 3.66867674679642 3.2846635654062 +observational 3.9759363311718 3.64283551561253 3.40119738166216 3.59731226058845 2.1770218700187 2.63188884013665 3.14845336057165 6.36818718635049 1.7263316639056 2.99573227355399 3.13983261752775 +observational 4.88280192258637 4.0926765051214 3.58905911883173 5.07517381523383 3.80443779474821 2.15871472257434 3.59731226058845 5.88332238848828 2.23964529322017 3.31054301339402 2.88480071284671 +observational 4.55071400019203 4.16511363311031 2.79116510781272 2.82137888640921 2.2213750375685 4.20916023665068 4.65396035015752 7.59135704669855 2.33214389523559 3.11351530921037 3.02042488614436 +observational 5.01727983681492 4.58700621536042 3.13983261752775 3.60549784517489 0.343589704390077 3.73289633953071 4.54223038621422 7.34858753092759 2.30258509299405 2.86220088092947 0.157003748809665 +observational 4.71849887129509 4.39814601655377 2.9391619220656 3.63495111208838 2.55722731136763 2.26695791535089 3.27336401015227 7.24064969425547 1.67335123817775 2.71469474382088 3.3357695763397 +observational 4.78749174278205 4.3528552573736 3.68887945411394 4.12874598893943 3.34638914516716 3.13113691056019 3.60549784517489 6.02586597382531 2.50959926237837 2.61739583283408 2.86220088092947 +observational 3.66867674679642 3.55248682920838 4.3267781604434 6.07073772800249 4.29045944114839 2.45958884180371 3.66867674679642 6.10702288774225 3.23867845216438 3.93963817246112 4.3267781604434 +observational 5.0998664278242 4.77912349311153 2.61006979274201 4.48863636973214 2.4423470353692 3.06805293513362 3.68887945411394 5.94542060860658 1.90657514365664 2.9338568698359 2.87919845729804 +observational 3.39114704580865 2.81540871942271 4.44382703557933 5.61312810638807 3.73289633953071 2.70805020110221 3.23867845216438 6.25958146406492 2.47653840011748 3.37416870927424 4.15575319035074 +observational 3.80443779474821 3.87743156065853 3.32862668882732 3.42751468997953 2.9704144655697 4.16511363311031 4.98360662170834 7.64539769942863 2.40694510831829 3.3178157727231 3.15700042115011 +observational 3.02042488614436 3.40784192438082 3.13983261752775 3.01553490085017 1.33236601909433 2.99573227355399 4.29045944114839 6.33150184989369 3.40784192438082 4.15575319035074 5.01727983681492 +observational 5.14749447681345 4.50645421304893 3.12236492448736 2.79116510781272 1.96009478404727 4.254193263164 4.49758497530815 5.99893656194668 1.42069578783722 3.12236492448736 3.58905911883173 +observational 3.3357695763397 3.19458313229916 2.70136121295141 4.21803603456465 0.431782416425538 2.34180580614733 2.60268968544438 6.47543271670409 3.62434093297637 4.01096295328305 2.68102152871429 +observational 3.8308129500026 3.00568260440716 2.89591193827178 4.39814601655377 2.1770218700187 2.90690105984738 3.66867674679642 6.34035930372775 2.43361335540045 2.75366071235426 3.48124008933569 +observational 4.99043258677874 4.62497281328427 1.79840401194672 3.01553490085017 2.33214389523559 3.37416870927424 3.85862222870103 6.16961073249146 1.69927861643389 2.68102152871429 2.43361335540045 +observational 3.4904285153901 3.3357695763397 2.85070650150373 3.03974915897077 1.34025042261848 4.60517018598809 5.14749447681345 7.88833450073865 3.4626060097908 4.3267781604434 4.67282883446191 +observational 2.23964529322017 2.89591193827178 2.65324196460721 2.86789890204411 2.09556092355972 2.41591377830105 3.04927304048202 6.12468339089421 4.74493212836325 5.21493575760899 3.3178157727231 +observational 3.55248682920838 3.40119738166216 3.69635146895264 5.96357934361845 3.51749783735832 3.37416870927424 4.39814601655377 7.71735127218533 2.12226153886276 2.53369681395743 2.94968833505258 +observational 4.30000279919529 4.05698877567833 2.18605127673809 4.80402104473326 1.79840401194672 3.82209829790016 4.07414185490458 6.35957386867238 3.09557760852371 4.20020495292158 4.12874598893943 +observational 4.02891675689965 3.79548918917219 2.89591193827178 3.03013370027132 1.7263316639056 2.37024374146786 3.4626060097908 5.99893656194668 2.39789527279837 3.41772668361337 3.98527346716774 +observational 4.61512051684126 4.16511363311031 3.13983261752775 4.58700621536042 2.72785282839839 2.96010509591084 3.64283551561253 6.52941883826223 2.82137888640921 3.31054301339402 3.36384159511839 +observational 4.3528552573736 3.77734810210154 2.84490938381941 3.06805293513362 1.62727783056243 2.51769647261099 3.13983261752775 6.85329909318608 2.11384296839717 2.99573227355399 2.72785282839839 +observational 4.18205014264121 3.70622809244855 2.86220088092947 3.14845336057165 2.30258509299405 2.00552585872967 2.96010509591084 6.90775527898214 0.810930216216329 4.16511363311031 0.113328685307003 +observational 3.35340671782581 2.88480071284671 2.70805020110221 3.94931879017184 2.70136121295141 2.2213750375685 3.54385368206368 6.1527326947041 2.07819075977818 2.52572864430826 2.94968833505258 +observational 4.14630430115281 3.35340671782581 4.10098910494077 5.08140436498446 3.59731226058845 4.15575319035074 4.58700621536042 6.79122146272619 2.61739583283408 3.10458667846607 3.08648663682246 +observational 3.82209829790016 2.36085400111802 2.89591193827178 4.65396035015752 2.64617479738412 4.66343909411207 5.19849703126583 7.68109900153636 2.68102152871429 3.38099467434464 3.09557760852371 +observational 3.92197333628131 3.58073729549423 4.12874598893943 5.73009978297357 3.73289633953071 2.70805020110221 3.24649099190117 6.31354804627709 2.12226153886276 2.91235066461494 2.56494935746154 +observational 2.62466859216316 2.90690105984738 2.60268968544438 3.9926809084456 3.08648663682246 2.91235066461494 3.67882911826043 6.48463523563525 2.13179677201376 3.41772668361337 3.53514535417189 +observational 3.09557760852371 2.66025953726586 4.26267987704132 5.37063802812766 4.01096295328305 2.82137888640921 3.40784192438082 6.19644412779452 1.88858365386359 2.79728133483015 3.37416870927424 +observational 3.68887945411394 2.90690105984738 3.10458667846607 3.37416870927424 2.40694510831829 3.91202300542815 4.61512051684126 7.89729647259588 0 4.46129981556839 1.4036429994545 +observational 3.64283551561253 2.61739583283408 2.76000994003292 3.85862222870103 1.60140574073684 2.47653840011748 3.36384159511839 6.1527326947041 3.81330703248899 4.49758497530815 4.7361984483945 +observational 3.17387845893747 2.58776403522771 3.95699637107088 4.47960696301275 3.40784192438082 1.57484646766448 2.79728133483015 6.61069604471776 2.82137888640921 3.4904285153901 4.42484663185681 +observational 4.50645421304893 4.05698877567833 3.36384159511839 3.14845336057165 0.657520002916794 2.77258872223978 3.58073729549423 5.98141421125448 3.74242022104197 4.56017282005736 4.60517018598809 +observational 3.42751468997953 3.05870707271538 2.73436750941958 4.70953020131233 3.01553490085017 2.52572864430826 3.53514535417189 6.14418563412565 3.18221184049661 3.88567903008854 4.70048036579242 +observational 3.58905911883173 2.85070650150373 2.7408400239252 4.91265488573605 2.89591193827178 2.91235066461494 3.44361809754611 6.22455842927536 3.72328088083127 4.36182392735636 4.79579054559674 +observational 3.52636052461616 2.98568193770049 3.52636052461616 5.27811465923052 2.61739583283408 1.92424865227413 2.9704144655697 6.7093043402583 2.33214389523559 3.13983261752775 3.29953372788566 +observational 4.64439089914137 4.65396035015752 3.29953372788566 5.93753620508243 4.18205014264121 2.70805020110221 3.27336401015227 6.45833828334479 2.52572864430826 2.97552956623647 2.76000994003292 +observational 4.56954300834494 3.9759363311718 3.09557760852371 3.13113691056019 2.03339760317843 3.4626060097908 3.76815263500844 5.87211778947542 2.03339760317843 2.96010509591084 2.89591193827178 +observational 4.40671924726425 4.11087386417331 2.13179677201376 4.49758497530815 2.00552585872967 2.50143595173921 2.91235066461494 6.42162226780652 2.57261223020711 3.8416005411316 3.76815263500844 +observational 3.49953328238302 3.03013370027132 2.9704144655697 4.30000279919529 2.484906649788 2.86789890204411 3.64283551561253 5.96357934361845 2.37024374146786 2.65324196460721 3.05870707271538 +observational 3.63495111208838 3.04927304048202 3.24649099190117 3.20274644293832 1.77155676191054 3.40784192438082 3.93963817246112 6.85329909318608 1.87946504964716 3.71357206670431 3.47196645255036 +observational 3.59731226058845 2.67414864942653 3.98527346716774 6.02586597382531 4.28082412916472 2.58021682959233 3.43720781918519 6.98841318199959 2.46809953147162 3.91202300542815 3.73289633953071 +observational 3.4626060097908 3.20274644293832 3.45315712059287 3.65065824129374 1.83418018511201 4.29045944114839 4.86753445045558 7.65444322647011 2.12226153886276 2.75366071235426 2.86220088092947 +observational 3.73289633953071 3.4904285153901 2.62466859216316 4.93447393313069 2.88480071284671 2.14124194258528 2.9391619220656 5.59471137960184 0.19062035960865 1.6467336971778 0 +observational 3.74242022104197 3.48124008933569 4.24563400976833 4.65396035015752 3.80443779474821 3.58073729549423 4.44382703557933 7.66340766489348 2.23964529322017 3.40784192438082 2.94968833505258 +observational 3.62434093297637 3.14845336057165 2.77881927199042 5.01727983681492 2.77881927199042 3.71357206670431 4.24563400976833 7.15070145759253 3.60549784517489 4.42484663185681 5.14749447681345 +observational 2.92316158071916 2.85070650150373 4.56954300834494 6.19644412779452 4.69134788222914 2.47653840011748 3.4904285153901 5.84643877505772 2.92316158071916 3.73289633953071 4.49758497530815 +observational 2.2213750375685 0.00995033085316809 2.94968833505258 3.06805293513362 2.2935443483419 2.88480071284671 3.77734810210154 6.35088571671474 2.39789527279837 3.51749783735832 3.92986292355648 +observational 3.58073729549423 3.03013370027132 3.82209829790016 5.64897423816121 3.4626060097908 2.63188884013665 3.55248682920838 6.16961073249146 1.22377543162212 1.43031124653666 3.49953328238302 +observational 4.69134788222914 4.3528552573736 3.43720781918519 3.48124008933569 2.60268968544438 2.65324196460721 3.14845336057165 6.09807428216624 4.01998014693324 4.68213122712422 4.38949864951258 +observational 2.79728133483015 2.35137525716348 3.03974915897077 2.70136121295141 2.91235066461494 2.484906649788 3.7864597824528 6.16120732169508 3.6163087612791 4.61512051684126 4.7361984483945 +observational 3.24649099190117 2.68102152871429 2.52572864430826 4.56954300834494 3.01553490085017 3.96651119071222 4.46129981556839 6.65544035036765 2.9338568698359 3.88567903008854 3.54385368206368 +observational 3.4904285153901 2.55722731136763 2.68784749378469 4.66343909411207 2.67414864942653 2.72785282839839 3.42751468997953 6.42162226780652 0 4.43438186500781 2.07819075977818 +observational 3.17387845893747 2.80336038090653 3.19458313229916 2.65324196460721 1.17865499634165 2.37954613413017 3.91202300542815 6.47543271670409 2.30258509299405 3.18221184049661 2.96010509591084 +observational 3.77734810210154 3.04927304048202 3.50855589998265 3.53514535417189 2.11384296839717 2.32238772029023 3.41772668361337 6.44888939414686 2.66025953726586 3.38099467434464 1.4747630091075 +observational 3.52636052461616 3.53514535417189 3.51749783735832 5.91889385427315 3.38099467434464 3.70622809244855 4.0926765051214 7.25841215059531 3.66867674679642 4.59612944133594 4.85981240436167 +observational 3.53514535417189 3.05870707271538 3.94931879017184 5.67675380226828 4.02891675689965 2.32238772029023 3.40784192438082 6.10702288774225 1.65441127807683 3.16547504814109 3.54385368206368 +observational 4.74493212836325 4.07414185490458 3.00568260440716 4.04830062372069 2.72785282839839 4.20916023665068 4.74493212836325 7.22256601882217 2.73436750941958 3.58905911883173 3.67882911826043 +observational 5.01063529409626 4.57779898919196 0 4.34380542185368 2.05027016437956 4.14630430115281 4.59612944133594 7.3125534981026 2.36085400111802 3.73289633953071 3.7864597824528 +observational 3.6609942506244 3.11351530921037 3.03974915897077 3.09557760852371 1.84371920815877 1.86252854011626 2.484906649788 6.20657592672493 2.42480272571829 2.85070650150373 3.69635146895264 +observational 3.3357695763397 2.97552956623647 2.84490938381941 5.21493575760899 1.96009478404727 3.16547504814109 3.4626060097908 5.93753620508243 4.12874598893943 5.24174701505964 5.46806014113513 +observational 3.4904285153901 3.13113691056019 2.9704144655697 3.07731226054641 2.57261223020711 3.03013370027132 3.92197333628131 6.60258789218934 2.2935443483419 3.12236492448736 3.09557760852371 +observational 2.88480071284671 3.59731226058845 3.6609942506244 3.79548918917219 3.49953328238302 3.79548918917219 4.15575319035074 6.04500531403601 2.36085400111802 3.15700042115011 1.2947271675944 +observational 3.12236492448736 3.26575941076705 2.86789890204411 4.15575319035074 2.2935443483419 3.58073729549423 4.20020495292158 6.99759598298193 1.74571553072665 2.58021682959233 3.56104608260405 +observational 3.13113691056019 3.53514535417189 2.89591193827178 3.13113691056019 2.16791018966744 0.774727167552368 2.36085400111802 4.59612944133594 0.0392207131532813 0 1.34025042261848 +observational 3.56104608260405 3.10458667846607 2.84490938381941 5.04342511691925 2.97552956623647 3.34638914516716 3.98527346716774 6.72743172485086 2.37024374146786 3.72328088083127 2.96010509591084 +observational 3.39114704580865 3.23867845216438 3.63495111208838 4.05698877567833 2.68102152871429 2.41591377830105 3.04927304048202 6.1527326947041 2.00552585872967 3.11351530921037 3.15700042115011 +observational 5.30826769740121 4.95582705760126 2.68784749378469 4.36182392735636 0.631271776841858 3.04927304048202 4.65396035015752 7.16857989726403 1.96990565461153 3.14845336057165 3.23867845216438 +observational 3.29953372788566 3.49953328238302 2.99573227355399 2.14943391349987 2.08691355651854 4.3267781604434 4.66343909411207 5.84643877505772 2.484906649788 2.77258872223978 2.79728133483015 +observational 3.43720781918519 3.12236492448736 2.64617479738412 4.50645421304893 2.58021682959233 3.49953328238302 4.11087386417331 7.25841215059531 2.73436750941958 3.58905911883173 4.0926765051214 +observational 2.86220088092947 2.96010509591084 4.77068462446567 5.89989735358249 4.34380542185368 2.34180580614733 3.41772668361337 7.51914995766982 1.77155676191054 3.03974915897077 2.86789890204411 +observational 3.63495111208838 2.97552956623647 3.3357695763397 4.95582705760126 2.86789890204411 2.23964529322017 3.20274644293832 6.12468339089421 2.28442112236637 3.25424296870549 2.67414864942653 +observational 5.13579843705026 4.63472898822964 1.48387468945875 4.37071287477361 2.37954613413017 3.77734810210154 4.50645421304893 7.33953769540767 1.4655675420144 2.04122032885964 2.14943391349987 +observational 4.254193263164 3.74242022104197 2.98568193770049 2.61739583283408 2.19499988231411 2.54160199346455 3.62434093297637 6.07993319509559 0.60431596685333 1.97823903617067 2.02419306744936 +observational 3.51749783735832 3.09557760852371 3.52636052461616 5.3890717298165 2.84490938381941 4.41642806139121 4.90527477843843 7.6275443904885 2.05027016437956 3.35340671782581 3.27336401015227 +observational 3.14845336057165 3.07731226054641 3.17387845893747 3.2846635654062 2.05027016437956 3.42751468997953 3.76815263500844 5.95324333428778 2.80336038090653 3.79548918917219 4.12874598893943 +observational 3.48124008933569 3.69635146895264 3.85862222870103 5.47646355193151 3.75887182593397 3.9759363311718 4.30811095172371 6.07993319509559 1.98787434815435 2.89591193827178 3.55248682920838 +observational 5.11799381241676 4.59612944133594 3.16547504814109 3.49953328238302 2.79116510781272 2.23964529322017 2.9704144655697 6.10702288774225 2.33214389523559 3.48124008933569 3.85862222870103 +observational 4.96284463025991 4.61512051684126 2.80336038090653 3.92197333628131 1.33236601909433 2.53369681395743 3.11351530921037 6.14418563412565 1.34807314829969 3.27336401015227 2.7408400239252 +observational 3.87743156065853 3.75887182593397 2.65324196460721 5.63121178182137 2.9391619220656 3.9926809084456 4.62497281328427 7.68109900153636 0.500775287912489 4.11903717481247 2.26695791535089 +observational 3.63495111208838 3.13983261752775 2.01490302054226 2.61739583283408 1.708377860289 2.90690105984738 2.97552956623647 6.7093043402583 2.30258509299405 2.76000994003292 2.77258872223978 +observational 3.89385903480047 3.37416870927424 3.29953372788566 4.92725368515721 2.80336038090653 2.36085400111802 2.75366071235426 6.24222326545517 2.56494935746154 3.60549784517489 3.98527346716774 +observational 4.01096295328305 3.68887945411394 2.53369681395743 4.74493212836325 2.63188884013665 3.51749783735832 3.89385903480047 5.98141421125448 1.10525683138678 3.62434093297637 1.09861228866811 +observational 3.36384159511839 1.39376637595859 2.68784749378469 4.64439089914137 3.26575941076705 3.09557760852371 3.39114704580865 5.73979291217923 2.28442112236637 2.9338568698359 3.4904285153901 +observational 4.11903717481247 3.73289633953071 3.07731226054641 3.00568260440716 1.15057202759882 2.65324196460721 3.24649099190117 6.38687931936265 2.33214389523559 2.86789890204411 3.15700042115011 +observational 3.47196645255036 3.16547504814109 4.17284762371004 6.05443934626937 4.26267987704132 1.66392609771817 3.17387845893747 5.61312810638807 2.2935443483419 3.56104608260405 3.38099467434464 +observational 4.12874598893943 3.4626060097908 3.15700042115011 3.01553490085017 2.86220088092947 3.09557760852371 3.32862668882732 6.02586597382531 3.32862668882732 4.07414185490458 4.28082412916472 +observational 4.27249074760558 3.75887182593397 3.34638914516716 5.67675380226828 3.73289633953071 2.98568193770049 3.18221184049661 5.55682806169954 1.84371920815877 3.60549784517489 3.35340671782581 +observational 3.90399083373088 3.68887945411394 3.40119738166216 5.27299955856375 3.56104608260405 1.31372366828506 3.12236492448736 5.3890717298165 3.37416870927424 4.24563400976833 4.63472898822964 +observational 3.2188758248682 2.7408400239252 2.76000994003292 2.54160199346455 1.94304891677428 3.34638914516716 3.66867674679642 6.01615715969835 1.98787434815435 2.64617479738412 2.9391619220656 +observational 3.62434093297637 2.89591193827178 3.2846635654062 6.48463523563525 4.36182392735636 2.84490938381941 3.4626060097908 6.22455842927536 2.61739583283408 3.48124008933569 3.65065824129374 +observational 5.09375020080676 4.80402104473326 3.07731226054641 5.73979291217923 3.85014760171006 3.77734810210154 4.59612944133594 7.54644627374602 1.2947271675944 3.05870707271538 3.26575941076705 +observational 3.23080439573347 3.14845336057165 2.66025953726586 2.9391619220656 2.4423470353692 2.3887627892351 3.58905911883173 5.96357934361845 2.89591193827178 3.56104608260405 2.01490302054226 +observational 3.42751468997953 3.12236492448736 3.66867674679642 6.26909628370626 3.56104608260405 1.93441576962958 3.01553490085017 6.27852142416584 2.34180580614733 3.06805293513362 3.16547504814109 +observational 4.38077585277223 4.3528552573736 3.8416005411316 5.96357934361845 4.3267781604434 3.2846635654062 3.40784192438082 5.65599181081985 1.61938824328727 2.60268968544438 3.29212628660779 +observational 4.254193263164 3.96651119071222 2.94968833505258 2.72785282839839 1.37624402526639 3.13983261752775 3.58905911883173 5.91889385427315 2.68102152871429 3.64283551561253 4.14630430115281 +observational 2.99573227355399 3.15700042115011 1.44926916028128 2.36085400111802 2.33214389523559 2.37024374146786 2.85070650150373 6.1527326947041 3.93963817246112 4.91265488573605 5.07517381523383 +observational 5.25227342804663 4.92725368515721 3.40784192438082 3.14845336057165 2.07819075977818 2.35137525716348 3.34638914516716 5.98141421125448 3.2188758248682 4.15575319035074 4.23700086262362 +observational 4.66343909411207 4.07414185490458 2.68102152871429 2.90690105984738 1.2947271675944 2.4423470353692 3.07731226054641 6.49375383985169 1.96009478404727 2.89591193827178 3.40784192438082 +observational 4.33598269617247 4.254193263164 2.80336038090653 4.82028156560504 2.7408400239252 2.32238772029023 3.6163087612791 6.52941883826223 2.9338568698359 2.91235066461494 1.95160817016995 +observational 4.23700086262362 3.90399083373088 3.12236492448736 3.2846635654062 2.45958884180371 1.78170913337455 2.46809953147162 6.85329909318608 2.7408400239252 3.71357206670431 3.50855589998265 +observational 3.73289633953071 3.7864597824528 3.64283551561253 4.37071287477361 3.40119738166216 3.09557760852371 3.79548918917219 6.28785856016178 1.84371920815877 3.21084365317094 3.62434093297637 +observational 3.2846635654062 3.26575941076705 3.26575941076705 5.36129216570943 3.59731226058845 3.95699637107088 4.30000279919529 6.11589212548303 2.43361335540045 3.19458313229916 2.60268968544438 +observational 3.36384159511839 1.99741770620125 3.92197333628131 5.54126354515843 4.21803603456465 2.85070650150373 3.44361809754611 6.01615715969835 2.88480071284671 3.59731226058845 3.85862222870103 +observational 3.88567903008854 3.02042488614436 2.71469474382088 4.57779898919196 2.13179677201376 3.49953328238302 3.9759363311718 6.09807428216624 2.40694510831829 3.41772668361337 3.37416870927424 +observational 4.71849887129509 4.37071287477361 3.17387845893747 3.42751468997953 1.79840401194672 1.54756250871601 2.96010509591084 6.8627579130514 2.1770218700187 3.08648663682246 3.52636052461616 +observational 3.51749783735832 2.86220088092947 1.55603713570699 2.64617479738412 2.23964529322017 2.65324196460721 3.23080439573347 6.36818718635049 3.7864597824528 4.71849887129509 4.88280192258637 +observational 4.87519732320115 4.3528552573736 1.89761985992753 4.85981240436167 3.58905911883173 3.01553490085017 3.58073729549423 6.25190388316589 2.80336038090653 3.93963817246112 4.3267781604434 +observational 3.40784192438082 2.86789890204411 3.2846635654062 3.27336401015227 1.45628673293993 4.66343909411207 5.31811999384422 7.49220304261874 3.40119738166216 4.0926765051214 4.20020495292158 +observational 4.93447393313069 4.41642806139121 2.77881927199042 3.59731226058845 2.94968833505258 3.21084365317094 3.56953269648137 5.85507192220243 1.17865499634165 4.33598269617247 1.88858365386359 +observational 3.59731226058845 2.76000994003292 3.2188758248682 3.14845336057165 0.322083499169113 3.40784192438082 4.12874598893943 6.22455842927536 0.936093359170335 1.62727783056243 0.542324290825362 +observational 3.8308129500026 3.93963817246112 2.81540871942271 2.77258872223978 0 1.6467336971778 2.35137525716348 6.76388490856244 0 4.22683374526818 2.2213750375685 +observational 3.60549784517489 3.11351530921037 2.75366071235426 5.47646355193151 3.31054301339402 3.09557760852371 3.54385368206368 6.10702288774225 2.26695791535089 3.43720781918519 3.03974915897077 +observational 3.3357695763397 2.77881927199042 2.82137888640921 3.13113691056019 2.41591377830105 3.58905911883173 4.19116874685764 7.3664451483276 1.34025042261848 3.08648663682246 3.64283551561253 +observational 3.39114704580865 3.2188758248682 4.254193263164 4.18205014264121 1.10525683138678 4.26267987704132 4.74493212836325 7.51043055637801 2.36085400111802 3.20274644293832 3.14845336057165 +observational 3.72328088083127 2.92316158071916 2.83321334405622 4.72738781871234 3.49953328238302 3.56953269648137 4.13676527810605 7.3664451483276 2.03339760317843 3.2846635654062 1.86252854011626 +observational 4.8283137373023 4.57779898919196 2.4423470353692 2.83321334405622 1.45628673293993 2.15871472257434 3.59731226058845 5.95324333428778 2.18605127673809 2.84490938381941 3.2846635654062 +observational 3.63495111208838 3.11351530921037 2.94968833505258 3.05870707271538 1.22377543162212 3.53514535417189 3.92986292355648 6.25190388316589 3.41772668361337 4.33598269617247 4.50645421304893 +observational 3.39114704580865 2.63188884013665 3.4626060097908 3.88567903008854 3.02042488614436 2.03339760317843 3.15700042115011 5.19849703126583 3.18221184049661 4.23700086262362 4.14630430115281 +observational 4.48863636973214 4.00186370942794 3.12236492448736 3.08648663682246 1.74571553072665 1.73518911773966 3.20274644293832 5.52146091786225 2.35137525716348 3.10458667846607 3.24649099190117 +observational 3.77734810210154 2.56494935746154 4.40671924726425 5.90808293816893 4.36182392735636 1.79840401194672 2.83321334405622 6.19644412779452 1.93441576962958 3.49953328238302 2.9704144655697 +observational 3.50855589998265 2.9704144655697 2.50959926237837 4.65396035015752 2.4932054526027 3.75185425327532 4.18205014264121 7.24064969425547 2.66025953726586 3.44361809754611 3.89385903480047 +observational 4.11903717481247 3.4626060097908 1.51951320490611 2.65324196460721 0.667829372575655 3.48124008933569 3.87743156065853 5.4971682252932 2.63188884013665 3.44361809754611 3.13983261752775 +observational 3.64283551561253 3.25424296870549 3.18221184049661 3.03974915897077 1.94304891677428 3.13113691056019 3.76815263500844 5.6021188208797 1.96009478404727 2.4932054526027 3.16547504814109 +observational 3.51749783735832 2.91235066461494 2.32238772029023 2.4932054526027 2.4932054526027 1.83418018511201 2.63188884013665 5.96357934361845 3.96651119071222 4.29045944114839 0.989541193613748 +observational 4.01998014693324 3.23080439573347 3.18221184049661 3.03974915897077 1.30291275218084 3.34638914516716 3.66867674679642 6.01615715969835 2.86220088092947 3.55248682920838 1.71739505393919 +observational 3.88567903008854 3.31054301339402 3.75887182593397 5.37063802812766 3.23867845216438 4.30811095172371 4.79579054559674 7.33953769540767 2.1770218700187 2.52572864430826 2.72785282839839 +observational 3.01553490085017 2.67414864942653 3.6163087612791 3.42751468997953 2.55722731136763 3.04927304048202 3.54385368206368 5.79301360838414 2.35137525716348 2.68102152871429 2.81540871942271 +observational 3.58905911883173 2.88480071284671 2.94968833505258 4.254193263164 2.24812890719799 1.79009141212736 3.06805293513362 4.53367418428302 2.80336038090653 2.71469474382088 3.38099467434464 +observational 2.68784749378469 2.62466859216316 3.26575941076705 3.4626060097908 1.79840401194672 4.12874598893943 4.70953020131233 7.53743003658651 1.86252854011626 3.03974915897077 2.19499988231411 +observational 4.97673374242057 4.96284463025991 2.36085400111802 5.63835466933375 2.73436750941958 2.07819075977818 2.87919845729804 6.4393503711001 2.58021682959233 3.26575941076705 2.86789890204411 +observational 4.74493212836325 4.31748811353631 3.11351530921037 3.25424296870549 0.582215619852664 2.72785282839839 4.11087386417331 5.85507192220243 1.42069578783722 2.85070650150373 3.24649099190117 +observational 4.44382703557933 3.87743156065853 3.06805293513362 2.94968833505258 0.0582689081239758 2.09556092355972 1.78170913337455 5.73979291217923 1.82616089594539 2.53369681395743 2.76000994003292 +observational 3.60549784517489 2.51769647261099 2.87919845729804 2.99573227355399 2.20386912005489 2.00552585872967 2.79116510781272 6.88959130835447 2.31253542384721 3.29212628660779 3.49953328238302 +observational 3.88567903008854 3.19458313229916 4.71849887129509 6.02586597382531 4.8283137373023 2.30258509299405 2.86789890204411 6.45833828334479 2.06812778177956 3.12236492448736 2.98568193770049 +observational 3.69635146895264 2.9338568698359 2.33214389523559 4.97673374242057 3.05870707271538 2.9704144655697 3.42751468997953 6.39526159811545 1.82616089594539 3.10458667846607 3.3178157727231 +observational 2.90690105984738 2.83321334405622 3.65065824129374 5.59471137960184 3.19458313229916 1.69009581545155 2.97552956623647 5.53338948872752 2.05923883436232 3.32862668882732 3.10458667846607 +observational 3.66867674679642 3.29953372788566 2.4932054526027 4.99043258677874 2.13179677201376 0 0.943905898907128 4.48863636973214 2.2213750375685 2.79728133483015 3.88567903008854 +observational 3.6609942506244 3.11351530921037 3.74242022104197 5.99893656194668 4.01096295328305 2.64617479738412 3.58073729549423 6.18826412308259 2.52572864430826 3.66867674679642 4.0842942263686 +observational 2.30258509299405 1.77155676191054 2.84490938381941 5.14749447681345 2.75366071235426 2.97552956623647 3.4904285153901 6.35957386867238 2.13179677201376 2.81540871942271 3.03974915897077 +observational 3.89385903480047 3.2846635654062 3.12236492448736 4.39814601655377 2.484906649788 3.89385903480047 4.61512051684126 7.70841066725737 2.23964529322017 3.13113691056019 3.01553490085017 +observational 4.10098910494077 3.85014760171006 3.64283551561253 3.76815263500844 1.8531680973567 2.60268968544438 3.11351530921037 6.00881318544259 2.42480272571829 3.32862668882732 2.99573227355399 +observational 3.94931879017184 3.47196645255036 2.58021682959233 4.91998092582813 3.25424296870549 3.39114704580865 3.76815263500844 5.87211778947542 2.45958884180371 3.93963817246112 3.69635146895264 +observational 3.68887945411394 3.13983261752775 3.08648663682246 3.01553490085017 1.53901544813755 3.2846635654062 4.07414185490458 7.57353126274595 1.82616089594539 3.13113691056019 3.19458313229916 +observational 3.40784192438082 2.83321334405622 3.8416005411316 5.66642668811243 4.03777421073371 4.11903717481247 4.72738781871234 7.4205789054108 2.87919845729804 2.86789890204411 3.25424296870549 +observational 3.55248682920838 3.02042488614436 3.27336401015227 2.79116510781272 0 2.99573227355399 3.67882911826043 6.02586597382531 1.88858365386359 2.83321334405622 3.25424296870549 +observational 3.56104608260405 3.07731226054641 2.37954613413017 4.88280192258637 2.33214389523559 1.4036429994545 2.55722731136763 6.30444880242198 4.03777421073371 4.74493212836325 5.03695260241363 +observational 3.89385903480047 3.3357695763397 1.81645208181843 2.66025953726586 3.01553490085017 2.40694510831829 3.56104608260405 6.14418563412565 1.89761985992753 3.25424296870549 3.63495111208838 +observational 4.29045944114839 3.4626060097908 2.99573227355399 3.09557760852371 0 2.4423470353692 3.12236492448736 6.67329796776765 2.79116510781272 3.55248682920838 3.55248682920838 +observational 3.79548918917219 3.29953372788566 4.05698877567833 5.63121178182137 3.75185425327532 4.45201900649392 4.97673374242057 7.40245152081824 2.19499988231411 3.2846635654062 3.04927304048202 +observational 3.56104608260405 2.62466859216316 2.89591193827178 2.83321334405622 2.484906649788 1.8531680973567 2.75366071235426 6.04500531403601 2.52572864430826 3.27336401015227 3.25424296870549 +observational 4.46129981556839 4.05698877567833 1.89761985992753 3.32862668882732 2.99573227355399 3.36384159511839 4.03777421073371 7.82524529143177 2.50143595173921 2.9338568698359 3.17387845893747 +observational 3.58073729549423 2.92316158071916 3.03974915897077 4.12874598893943 2.54160199346455 4.82028156560504 6.10702288774225 8.50875771259514 2.11384296839717 3.20274644293832 1.82616089594539 +observational 3.70622809244855 3.44361809754611 2.54160199346455 4.84418708645859 2.62466859216316 2.81540871942271 3.29212628660779 5.94542060860658 3.51749783735832 4.254193263164 4.21803603456465 +observational 4.92725368515721 4.57779898919196 2.68784749378469 4.89034912822175 2.76000994003292 3.16547504814109 3.77734810210154 6.33150184989369 2.11384296839717 3.10458667846607 3.59731226058845 +observational 3.27336401015227 2.32238772029023 3.43720781918519 3.37416870927424 1.83418018511201 3.44361809754611 3.75185425327532 6.25958146406492 1.42069578783722 4.24563400976833 0.425267735404344 +observational 5.01727983681492 4.45201900649392 2.96010509591084 4.56017282005736 2.47653840011748 1.74571553072665 2.67414864942653 5.52146091786225 3.03974915897077 4.10098910494077 4.47960696301275 +observational 5.06259503302697 4.69134788222914 3.7864597824528 4.30000279919529 2.50959926237837 2.9391619220656 3.6163087612791 6.5206211275587 2.2213750375685 3.36384159511839 3.2846635654062 +observational 3.56104608260405 3.03974915897077 4.21803603456465 5.89989735358249 4.27249074760558 3.34638914516716 3.75887182593397 5.90808293816893 1.39376637595859 4.01096295328305 1.14103300455206 +observational 4.72738781871234 4.80402104473326 2.97552956623647 3.14845336057165 2.15871472257434 2.39789527279837 3.44361809754611 5.58724865840025 1.97823903617067 2.99573227355399 3.29212628660779 +observational 3.7864597824528 2.99573227355399 3.55248682920838 3.76815263500844 3.07731226054641 3.9926809084456 5.03043792139244 7.28550654852279 2.24812890719799 2.87919845729804 3.80443779474821 +observational 3.41772668361337 3.23867845216438 2.61739583283408 4.58700621536042 2.3887627892351 2.13179677201376 3.27336401015227 5.52146091786225 2.70136121295141 2.9338568698359 2.4423470353692 +observational 4.77068462446567 3.45315712059287 3.10458667846607 5.51342874616498 3.03974915897077 1.14103300455206 2.60268968544438 6.36818718635049 3.41772668361337 4.45201900649392 5.31811999384422 +observational 4.72738781871234 4.66343909411207 2.09556092355972 4.48863636973214 2.36085400111802 2.76000994003292 3.23867845216438 6.85329909318608 3.27336401015227 4.03777421073371 4.36182392735636 +observational 4.22683374526818 3.9926809084456 3.00568260440716 3.79548918917219 2.26695791535089 2.58021682959233 3.85862222870103 5.66642668811243 2.18605127673809 3.48124008933569 3.96651119071222 +observational 3.29212628660779 2.99573227355399 3.13983261752775 4.87519732320115 2.68784749378469 3.40784192438082 4.66343909411207 6.75460409948796 2.31253542384721 3.13983261752775 3.56104608260405 +observational 3.51749783735832 3.12236492448736 2.52572864430826 5.06259503302697 2.05923883436232 4.56954300834494 4.94875989037817 7.51914995766982 2.31253542384721 2.70805020110221 3.35340671782581 +observational 4.00186370942794 3.37416870927424 2.88480071284671 3.94931879017184 3.13983261752775 3.17387845893747 3.69635146895264 6.59304453414244 2.30258509299405 3.13113691056019 2.99573227355399 +observational 3.70622809244855 3.20274644293832 2.18605127673809 4.36182392735636 2.02419306744936 4.0842942263686 4.68213122712422 7.94200680848986 2.52572864430826 2.73436750941958 3.42751468997953 +observational 5.23644196282995 4.8283137373023 3.39114704580865 5.47646355193151 3.93963817246112 2.76000994003292 3.8308129500026 6.62007320653036 2.33214389523559 3.26575941076705 3.16547504814109 +observational 4.15575319035074 3.69635146895264 3.38099467434464 4.19116874685764 2.96010509591084 4.06560209335645 4.49758497530815 6.93439720992856 4.07414185490458 5.10594547390058 5.55682806169954 +observational 3.40119738166216 2.34180580614733 3.14845336057165 3.13113691056019 1.48387468945875 3.66867674679642 4.47960696301275 7.63626960337937 3.44361809754611 4.3267781604434 4.49758497530815 +observational 3.4626060097908 2.92316158071916 2.71469474382088 2.88480071284671 0 2.64617479738412 2.60268968544438 6.06145691892802 2.21266038546606 3.3178157727231 3.43720781918519 +observational 3.26575941076705 0.693147180559945 2.96010509591084 3.89385903480047 2.54160199346455 1.4655675420144 2.63188884013665 5.13579843705026 2.16791018966744 3.45315712059287 2.50959926237837 +observational 3.50855589998265 3.06805293513362 2.76000994003292 3.11351530921037 1.50185270175416 3.58073729549423 3.9759363311718 6.26909628370626 1.81645208181843 3.23867845216438 3.74242022104197 +observational 5.48479693349065 5.29831736654804 2.28442112236637 4.96284463025991 3.18221184049661 3.58073729549423 4.33598269617247 7.50163445788341 3.58905911883173 4.30000279919529 4.39814601655377 +observational 2.89591193827178 3.29212628660779 2.31253542384721 4.3528552573736 2.85070650150373 3.54385368206368 4.48863636973214 7.20489251020467 1.95160817016995 2.91235066461494 2.80336038090653 +observational 3.6609942506244 3.23867845216438 3.29212628660779 2.82137888640921 2.14943391349987 2.86220088092947 3.47196645255036 6.20657592672493 2.47653840011748 3.51749783735832 3.88567903008854 +observational 3.51749783735832 2.85070650150373 3.2188758248682 3.29212628660779 2.36085400111802 4.71849887129509 5.24174701505964 7.6182510978767 1.26694760348732 2.77881927199042 3.13983261752775 +observational 3.67882911826043 3.25424296870549 2.83321334405622 2.79116510781272 2.53369681395743 2.86789890204411 3.54385368206368 6.7093043402583 1.52822785700856 2.7408400239252 3.32862668882732 +observational 4.24563400976833 3.94931879017184 2.58776403522771 4.46129981556839 3.02042488614436 2.70805020110221 2.85070650150373 6.36818718635049 2.13179677201376 2.56494935746154 3.05870707271538 +observational 4.89034912822175 4.38077585277223 3.11351530921037 2.79728133483015 1.84371920815877 4.36182392735636 4.69134788222914 5.92692602597041 2.39789527279837 3.19458313229916 2.9704144655697 +observational 3.27336401015227 3.18221184049661 2.92316158071916 2.68784749378469 1.61938824328727 2.20386912005489 2.9391619220656 7.00669522683704 2.16791018966744 2.86220088092947 2.52572864430826 +observational 3.79548918917219 3.13983261752775 3.17387845893747 3.04927304048202 0 2.54160199346455 3.07731226054641 6.5206211275587 2.60268968544438 3.06805293513362 3.41772668361337 +observational 3.44361809754611 2.84490938381941 2.86220088092947 2.77881927199042 2.46809953147162 3.67882911826043 4.11903717481247 6.96129604591017 2.1770218700187 2.79728133483015 3.00568260440716 +observational 4.69134788222914 4.68213122712422 3.11351530921037 3.03013370027132 0.916290731874155 3.09557760852371 4.55071400019203 6.36818718635049 4.39814601655377 5.31811999384422 5.54907608489522 +observational 4.254193263164 3.70622809244855 3.13113691056019 3.10458667846607 1.11514159061932 2.81540871942271 3.3357695763397 6.29526600143965 2.35137525716348 2.9704144655697 3.06805293513362 +observational 3.54385368206368 2.9704144655697 4.66343909411207 6.16961073249146 4.22683374526818 3.13983261752775 3.20274644293832 6.06145691892802 2.37024374146786 3.03974915897077 3.36384159511839 +observational 3.76815263500844 3.45315712059287 3.74242022104197 4.23700086262362 3.14845336057165 3.10458667846607 3.54385368206368 6.50279004591562 1.4655675420144 1.7630170003624 1.36609165380237 +observational 4.66343909411207 4.15575319035074 3.02042488614436 3.19458313229916 2.68102152871429 2.86220088092947 3.44361809754611 6.26909628370626 3.01553490085017 4.02891675689965 3.93963817246112 +observational 3.53514535417189 2.88480071284671 2.05027016437956 4.91998092582813 3.18221184049661 3.19458313229916 3.80443779474821 7.43838353004431 4.27249074760558 5.33271879326537 5.26269018890489 +observational 3.15700042115011 3.48124008933569 3.19458313229916 4.01998014693324 2.58776403522771 2.42480272571829 3.27336401015227 6.74641212857337 2.2213750375685 3.14845336057165 3.51749783735832 +observational 3.75887182593397 3.38099467434464 0 4.85981240436167 2.58776403522771 5.05624580534831 6.11589212548303 8.76060984757 2.27521389619791 3.49953328238302 4.03777421073371 +observational 4.18205014264121 3.3357695763397 2.98568193770049 5.09375020080676 2.99573227355399 3.08648663682246 3.65065824129374 6.16120732169508 1.66392609771817 3.04927304048202 3.04927304048202 +observational 3.53514535417189 3.23080439573347 2.86789890204411 4.50645421304893 2.70805020110221 2.01490302054226 2.18605127673809 5.21493575760899 2.97552956623647 4.22683374526818 3.53514535417189 +observational 3.70622809244855 2.88480071284671 4.66343909411207 6.33150184989369 4.36182392735636 1.05082162483176 2.55722731136763 6.07073772800249 2.02419306744936 3.23867845216438 2.83321334405622 +observational 4.63472898822964 4.31748811353631 3.69635146895264 3.90399083373088 2.92316158071916 1.81645208181843 2.03339760317843 5.35185813347607 2.37954613413017 2.79728133483015 3.25424296870549 +observational 5.06259503302697 4.7361984483945 3.29953372788566 3.32862668882732 2.36085400111802 4.66343909411207 5.4971682252932 8.36497397843873 3.05870707271538 3.77734810210154 2.39789527279837 +observational 3.53514535417189 3.01553490085017 4.05698877567833 6.4393503711001 4.27249074760558 3.89385903480047 4.30811095172371 7.13249755166004 2.30258509299405 3.2188758248682 3.01553490085017 +observational 3.63495111208838 2.82137888640921 2.7408400239252 2.63188884013665 1.68268837417369 3.55248682920838 3.91202300542815 7.29437729928882 2.31253542384721 3.25424296870549 3.31054301339402 +observational 3.63495111208838 3.13113691056019 1.9154509415706 2.73436750941958 2.41591377830105 3.72328088083127 4.18205014264121 6.10702288774225 1.43983512804792 3.14845336057165 3.73289633953071 +observational 3.3357695763397 2.81540871942271 3.32862668882732 5.91889385427315 3.42751468997953 3.80443779474821 4.57779898919196 7.45645455517621 1.42069578783722 2.37954613413017 1.34025042261848 +observational 3.35340671782581 1.71739505393919 3.45315712059287 3.4904285153901 2.57261223020711 2.84490938381941 3.21084365317094 6.25190388316589 2.26695791535089 3.19458313229916 3.00568260440716 +observational 5.15329159449778 4.64439089914137 3.05870707271538 5.04342511691925 2.99573227355399 2.70136121295141 3.79548918917219 7.32118855673948 2.53369681395743 3.49953328238302 3.82209829790016 +observational 4.21803603456465 4.12874598893943 1.56444054650336 2.43361335540045 0.559615787935423 2.43361335540045 3.44361809754611 6.14418563412565 2.58021682959233 3.50855589998265 3.23867845216438 +observational 4.66343909411207 4.01998014693324 2.81540871942271 2.64617479738412 2.13179677201376 2.61739583283408 3.70622809244855 6.07993319509559 2.68784749378469 3.34638914516716 3.75185425327532 +observational 3.08648663682246 2.77881927199042 4.0842942263686 5.33271879326537 3.63495111208838 1.82616089594539 2.64617479738412 6.59304453414244 2.23964529322017 3.26575941076705 3.41772668361337 +observational 3.70622809244855 2.71469474382088 3.17387845893747 2.87919845729804 1.83418018511201 2.42480272571829 3.05870707271538 6.32256523992728 2.46809953147162 3.02042488614436 3.2846635654062 +observational 5.0998664278242 4.5152454784601 2.57261223020711 2.99573227355399 1.94304891677428 2.61006979274201 3.44361809754611 6.58340922215876 3.29953372788566 3.92986292355648 4.38077585277223 +observational 3.17387845893747 2.9704144655697 3.03974915897077 2.80336038090653 1.71739505393919 2.32238772029023 3.05870707271538 5.8111409929767 3.39114704580865 3.98527346716774 4.62497281328427 +observational 3.35340671782581 3.19458313229916 3.03974915897077 3.66867674679642 2.45958884180371 1.53901544813755 2.75366071235426 6.55677835615804 2.24812890719799 3.17387845893747 3.72328088083127 +observational 4.49758497530815 3.96651119071222 2.57261223020711 5.01063529409626 0.879626747502564 2.58776403522771 3.44361809754611 6.63856778916652 2.23108909128898 3.00568260440716 2.7408400239252 +observational 4.04830062372069 3.98527346716774 2.90690105984738 3.19458313229916 1.48387468945875 2.03339760317843 2.77258872223978 6.89871453432999 2.26695791535089 3.18221184049661 3.73289633953071 +observational 3.96651119071222 3.79548918917219 2.81540871942271 3.77734810210154 1.6094379124341 4.23700086262362 4.57779898919196 7.24921505711439 2.23108909128898 2.80336038090653 3.53514535417189 +observational 3.4904285153901 3.31054301339402 3.10458667846607 3.24649099190117 2.01490302054226 3.38099467434464 4.42484663185681 7.87929148508227 2.28442112236637 2.9391619220656 3.4626060097908 +observational 5.12396397940326 4.63472898822964 1.98787434815435 4.86753445045558 2.32238772029023 1.83418018511201 3.23867845216438 5.27811465923052 2.67414864942653 2.98568193770049 3.45315712059287 +observational 4.66343909411207 4.18205014264121 3.19458313229916 3.40784192438082 2.50959926237837 3.54385368206368 4.18205014264121 7.04228617193974 0.879626747502564 2.4932054526027 2.86789890204411 +observational 3.95699637107088 3.26575941076705 3.09557760852371 5.14749447681345 2.97552956623647 2.9391619220656 3.56953269648137 6.1527326947041 2.15871472257434 2.77258872223978 3.31054301339402 +observational 4.16511363311031 2.72785282839839 2.89591193827178 2.99573227355399 1.8531680973567 2.35137525716348 3.34638914516716 6.46769872610435 2.33214389523559 3.2846635654062 2.83321334405622 +observational 4.19116874685764 3.45315712059287 2.9338568698359 3.36384159511839 2.26695791535089 2.58776403522771 3.29953372788566 6.10702288774225 2.15871472257434 2.89591193827178 3.23080439573347 +observational 3.98527346716774 3.68887945411394 2.57261223020711 5.27299955856375 2.53369681395743 3.54385368206368 4.14630430115281 7.0604763659998 2.47653840011748 2.89591193827178 2.87919845729804 +observational 2.81540871942271 2.57261223020711 1.90657514365664 2.4423470353692 2.10413415427021 1.59127394180643 2.68784749378469 6.50279004591562 2.11384296839717 2.96010509591084 3.3178157727231 +observational 3.23080439573347 2.86789890204411 3.3178157727231 3.34638914516716 2.05923883436232 2.86220088092947 3.74242022104197 5.94542060860658 2.41591377830105 2.97552956623647 2.92316158071916 +observational 3.50855589998265 3.29953372788566 3.13113691056019 2.96010509591084 0.712949807856125 2.52572864430826 3.29212628660779 6.38687931936265 2.85070650150373 3.65065824129374 3.8308129500026 +observational 4.38077585277223 3.98527346716774 4.14630430115281 5.99893656194668 3.98527346716774 2.19499988231411 2.72785282839839 6.93439720992856 3.27336401015227 4.04830062372069 4.52396013056255 +observational 3.7864597824528 3.42751468997953 3.15700042115011 3.11351530921037 0.0953101798043249 4.61512051684126 5.0998664278242 7.28550654852279 2.46809953147162 3.24649099190117 3.47196645255036 +observational 3.92986292355648 4.36182392735636 4.36182392735636 5.63121178182137 3.85014760171006 3.03974915897077 3.32862668882732 6.1527326947041 2.3887627892351 3.00568260440716 1.96009478404727 +observational 4.83628190695148 4.42484663185681 3.05870707271538 3.18221184049661 2.36085400111802 4.31748811353631 5.10594547390058 8.19395302356374 2.67414864942653 3.65065824129374 1.98787434815435 +observational 4.76217393479776 4.19116874685764 1.55603713570699 2.79116510781272 2.7408400239252 3.10458667846607 3.62434093297637 5.79301360838414 2.16791018966744 3.13983261752775 2.98568193770049 +raf 2.68102152871429 2.92316158071916 1.15057202759882 1.73518911773966 2.94968833505258 3.05870707271538 3.49953328238302 5.73009978297357 0 0.500775287912489 1.45628673293993 +raf 2.84490938381941 3.67882911826043 1.38629436111989 2.70136121295141 3.16547504814109 3.13983261752775 3.53514535417189 5.79301360838414 0.139761942375159 1.69009581545155 1.03318448334565 +raf 2.76000994003292 2.71469474382088 0.845868267577609 5.36129216570943 3.20274644293832 2.89591193827178 3.26575941076705 5.65599181081985 3.24649099190117 3.7864597824528 1.13462272619114 +raf 2.23964529322017 2.68784749378469 0.113328685307003 0 0.00995033085316809 2.14124194258528 3.34638914516716 7.0604763659998 0.0582689081239758 2.55722731136763 1.4747630091075 +raf 2.28442112236637 1.79840401194672 1.4747630091075 2.84490938381941 2.82137888640921 2.63188884013665 2.9391619220656 6.13339804299665 1.84371920815877 2.35137525716348 1.57484646766448 +raf 2.26695791535089 2.36085400111802 0 5.53338948872752 3.75887182593397 2.31253542384721 2.9391619220656 6.64639051484773 1.16002091679675 0.00995033085316809 2.57261223020711 +raf 3.51749783735832 2.97552956623647 2.97552956623647 3.35340671782581 2.10413415427021 2.04122032885964 2.19499988231411 6.27852142416584 3.21084365317094 3.80443779474821 2.52572864430826 +raf 2.9338568698359 2.97552956623647 2.07819075977818 5.37063802812766 1.31372366828506 1.59127394180643 2.96010509591084 7.12367278520461 2.28442112236637 2.00552585872967 2.62466859216316 +raf 3.66867674679642 2.84490938381941 1.97823903617067 5.29831736654804 3.50855589998265 2.4423470353692 2.88480071284671 6.00881318544259 2.70136121295141 2.98568193770049 2.91235066461494 +raf 2.77881927199042 2.73436750941958 1.96990565461153 4.7361984483945 3.48124008933569 2.90690105984738 3.3357695763397 5.11799381241676 2.68102152871429 3.13983261752775 2.97552956623647 +raf 3.8416005411316 2.50143595173921 1.54756250871601 5.05624580534831 3.47196645255036 2.28442112236637 3.00568260440716 7.19593722647557 1.12492959698548 0 0.672944473242426 +raf 3.92986292355648 3.18221184049661 0.916290731874155 5.30826769740121 3.41772668361337 1.80828877117927 2.46809953147162 7.15070145759253 0 0.488580014818671 0.0198026272961797 +raf 3.35340671782581 3.00568260440716 1.95160817016995 5.27299955856375 2.51769647261099 3.16547504814109 3.68887945411394 6.32256523992728 1.35840915763035 3.03974915897077 3.40784192438082 +raf 2.57261223020711 3.68887945411394 1.6094379124341 3.38099467434464 3.65065824129374 2.57261223020711 2.84490938381941 5.5683445037611 1.82616089594539 2.484906649788 1.82616089594539 +raf 3.88567903008854 3.11351530921037 2.1770218700187 4.54223038621422 3.87743156065853 3.48124008933569 3.92197333628131 7.1777824161952 0.0392207131532813 1.92424865227413 4.45201900649392 +raf 3.6163087612791 2.9704144655697 3.60549784517489 5.8636311755981 5.06259503302697 2.05027016437956 3.05870707271538 6.53958595561767 2.36085400111802 2.86220088092947 3.3178157727231 +raf 2.42480272571829 1.82616089594539 2.65324196460721 3.16547504814109 2.52572864430826 3.2846635654062 3.60549784517489 5.82894561761021 2.85070650150373 3.73289633953071 3.7864597824528 +raf 3.86702563949741 2.89591193827178 2.64617479738412 5.05624580534831 3.12236492448736 2.10413415427021 2.80336038090653 5.3890717298165 0 0 2.27521389619791 +raf 2.86220088092947 3.38099467434464 1.84371920815877 4.72738781871234 2.54160199346455 2.34180580614733 3.13983261752775 5.99146454710798 2.35137525716348 3.08648663682246 0.810930216216329 +raf 3.64283551561253 3.02042488614436 2.32238772029023 4.54223038621422 2.79728133483015 3.34638914516716 3.91202300542815 6.04500531403601 0.357674444271816 0.262364264467491 1.4036429994545 +raf 0.936093359170335 2.51769647261099 1.708377860289 4.80402104473326 3.75887182593397 2.9391619220656 3.74242022104197 6.87212810133899 1.03318448334565 2.88480071284671 4.30811095172371 +raf 3.96651119071222 3.05870707271538 2.51769647261099 4.46129981556839 3.56104608260405 2.64617479738412 3.24649099190117 6.57507584059962 1.62727783056243 2.05027016437956 1.4747630091075 +raf 3.73289633953071 3.81330703248899 1.31372366828506 5.48479693349065 3.3357695763397 2.02419306744936 2.43361335540045 6.49375383985169 2.58021682959233 3.16547504814109 2.53369681395743 +raf 4.20916023665068 3.21084365317094 2.45958884180371 6.55677835615804 4.54223038621422 3.12236492448736 3.70622809244855 5.89989735358249 1.82616089594539 2.39789527279837 2.77881927199042 +raf 2.61739583283408 2.31253542384721 2.57261223020711 3.88567903008854 3.40119738166216 2.96010509591084 3.34638914516716 6.46769872610435 1.17865499634165 0.672944473242426 2.05923883436232 +raf 2.70805020110221 3.67882911826043 3.19458313229916 4.01998014693324 3.40784192438082 3.20274644293832 3.36384159511839 5.09375020080676 0.22314355131421 1.81645208181843 1.39376637595859 +raf 3.08648663682246 2.90690105984738 2.05027016437956 2.25758772706331 2.96010509591084 2.42480272571829 3.25424296870549 6.13339804299665 0.314810739840034 0 2.1770218700187 +raf 4.21803603456465 3.68887945411394 3.19458313229916 4.16511363311031 1.44926916028128 4.07414185490458 4.47049528266149 6.27852142416584 1.86252854011626 3.56104608260405 3.9926809084456 +raf 2.32238772029023 2.60268968544438 2.62466859216316 5.4510384535657 3.94931879017184 2.85070650150373 3.90399083373088 7.44716835960004 1.96009478404727 2.98568193770049 3.36384159511839 +raf 2.76000994003292 3.09557760852371 2.484906649788 2.88480071284671 4.36182392735636 0.792992515529661 2.37024374146786 6.68336094576627 2.19499988231411 2.9704144655697 2.42480272571829 +raf 4.44382703557933 4.66343909411207 2.25758772706331 2.64617479738412 3.94931879017184 3.42751468997953 3.76815263500844 5.76519110278484 3.21084365317094 4.38077585277223 4.23700086262362 +raf 4.05698877567833 2.80336038090653 2.73436750941958 3.68887945411394 4.90527477843843 2.81540871942271 3.23867845216438 5.94542060860658 1.4036429994545 1.7263316639056 2.33214389523559 +raf 2.25758772706331 3.19458313229916 1.73518911773966 2.87919845729804 3.34638914516716 2.26695791535089 2.4932054526027 6.27852142416584 2.24812890719799 2.86789890204411 2.484906649788 +raf 3.32862668882732 3.31054301339402 1.33236601909433 0.00995033085316809 2.2213750375685 2.09556092355972 3.02042488614436 6.18826412308259 1.80828877117927 3.03974915897077 3.95699637107088 +raf 2.87919845729804 2.84490938381941 0.703097511413113 5.30826769740121 2.96010509591084 2.58021682959233 2.58021682959233 6.53958595561767 0.371563556432483 1.86252854011626 0.989541193613748 +raf 3.55248682920838 2.70805020110221 1.96990565461153 5.17048399503815 3.85014760171006 2.37024374146786 2.92316158071916 6.11589212548303 3.40119738166216 3.87743156065853 3.12236492448736 +raf 4.3267781604434 2.86789890204411 0.357674444271816 5.82894561761021 3.39114704580865 1.97823903617067 3.07731226054641 6.46769872610435 2.4423470353692 3.04927304048202 0.693147180559945 +raf 3.65065824129374 2.77258872223978 0 6.69208374250663 4.66343909411207 1.00795792039998 2.57261223020711 6.08904487544685 2.19499988231411 2.70805020110221 0.412109650826833 +raf 3.53514535417189 3.59731226058845 3.07731226054641 5.20948615284142 3.88567903008854 2.81540871942271 2.9704144655697 6.10702288774225 2.06812778177956 2.45958884180371 1.6094379124341 +raf 3.01553490085017 2.75366071235426 2.32238772029023 5.43372200355424 4.00186370942794 3.38099467434464 4.11087386417331 6.02586597382531 1.43031124653666 1.708377860289 0.765467842139571 +raf 3.11351530921037 2.9704144655697 2.10413415427021 3.45315712059287 3.93963817246112 3.48124008933569 3.69635146895264 6.16120732169508 1.7630170003624 2.70805020110221 0.00995033085316809 +raf 4.29045944114839 3.18221184049661 2.64617479738412 3.37416870927424 3.43720781918519 3.56104608260405 4.31748811353631 6.59304453414244 2.18605127673809 2.79116510781272 4.254193263164 +raf 3.52636052461616 2.37954613413017 1.43031124653666 3.56104608260405 1.60140574073684 3.47196645255036 3.8308129500026 5.83773044716594 1.13462272619114 0.0676586484738149 1.73518911773966 +raf 3.91202300542815 3.23867845216438 2.27521389619791 2.3887627892351 3.40119738166216 3.45315712059287 3.6609942506244 5.37989735354046 0 0 2.56494935746154 +raf 3.88567903008854 3.23867845216438 2.42480272571829 4.34380542185368 3.15700042115011 1.36609165380237 2.57261223020711 5.98141421125448 2.06812778177956 3.9926809084456 5.85507192220243 +raf 4.11087386417331 3.23867845216438 2.16791018966744 4.59612944133594 3.63495111208838 1.93441576962958 3.12236492448736 7.34858753092759 0 0 1.51072193949494 +raf 4.16511363311031 3.50855589998265 3.94931879017184 6.03548143252476 4.82028156560504 2.94968833505258 3.55248682920838 5.54126354515843 3.75887182593397 4.30811095172371 3.01553490085017 +raf 4.18205014264121 3.39114704580865 1.88858365386359 2.83321334405622 3.36384159511839 2.58776403522771 3.38099467434464 7.00669522683704 2.35137525716348 3.32862668882732 5.09375020080676 +raf 3.77734810210154 2.58776403522771 1.36609165380237 5.44241771052179 2.79728133483015 2.99573227355399 3.65065824129374 5.77455154554441 1.25846098961001 0.916290731874155 2.33214389523559 +raf 3.50855589998265 3.14845336057165 0.693147180559945 3.43720781918519 2.73436750941958 3.13983261752775 3.69635146895264 5.82008293035236 2.9338568698359 3.56104608260405 1.82616089594539 +raf 2.60268968544438 2.37024374146786 2.90690105984738 3.31054301339402 2.14124194258528 0 0.916290731874155 2.65324196460721 1.36609165380237 2.54160199346455 4.42484663185681 +raf 2.45958884180371 1.4747630091075 1.88858365386359 5.03043792139244 3.27336401015227 3.63495111208838 4.77068462446567 6.85329909318608 3.87743156065853 4.62497281328427 4.97673374242057 +raf 2.52572864430826 2.96010509591084 3.49953328238302 5.77455154554441 5.68357976733868 3.56104608260405 3.93963817246112 5.44241771052179 2.18605127673809 2.72785282839839 2.63188884013665 +raf 4.43438186500781 3.56104608260405 2.09556092355972 5.03043792139244 3.18221184049661 1.71739505393919 2.86789890204411 6.30444880242198 1.89761985992753 1.93441576962958 2.86220088092947 +raf 3.64283551561253 2.76000994003292 2.2213750375685 5.23644196282995 3.58905911883173 2.26695791535089 3.50855589998265 6.68336094576627 0 0 1.93441576962958 +raf 3.3357695763397 2.2213750375685 2.4932054526027 2.40694510831829 4.01096295328305 3.82209829790016 4.93447393313069 7.1777824161952 2.97552956623647 3.31054301339402 3.21084365317094 +raf 2.45958884180371 2.16791018966744 2.56494935746154 2.66025953726586 3.82209829790016 3.43720781918519 4.03777421073371 6.97073007814353 0.470003629245736 2.58021682959233 1.54756250871601 +raf 0 1.24126858906963 2.14943391349987 5.44241771052179 3.72328088083127 3.23867845216438 3.37416870927424 6.06145691892802 3.42751468997953 4.83628190695148 5.47646355193151 +raf 4.91265488573605 3.88567903008854 3.03974915897077 6.53958595561767 5.18178355029209 3.37416870927424 3.81330703248899 6.87212810133899 2.2935443483419 2.97552956623647 2.35137525716348 +raf 2.9704144655697 2.62466859216316 2.79728133483015 6.26909628370626 5.01063529409626 1.05082162483176 0 4.99043258677874 2.39789527279837 1.75440368268429 2.63188884013665 +raf 3.75887182593397 2.51769647261099 4.07414185490458 5.25227342804663 4.61512051684126 3.11351530921037 3.6609942506244 6.63856778916652 2.64617479738412 2.73436750941958 3.04927304048202 +raf 1.66392609771817 1.71739505393919 1.59127394180643 2.14124194258528 0.104360015324243 2.31253542384721 3.65065824129374 7.47420480649612 3.20274644293832 4.15575319035074 4.45201900649392 +raf 4.37071287477361 3.92197333628131 3.91202300542815 5.79301360838414 4.85981240436167 2.23108909128898 2.77881927199042 6.37672694789863 0 0 1.88858365386359 +raf 4.39814601655377 2.82137888640921 2.7408400239252 4.11903717481247 2.92316158071916 2.14943391349987 2.75366071235426 5.45958551414416 0 0.425267735404344 2.31253542384721 +raf 3.47196645255036 3.29212628660779 1.22377543162212 5.44241771052179 3.51749783735832 4.24563400976833 4.70048036579242 6.7093043402583 2.90690105984738 3.26575941076705 2.53369681395743 +raf 3.68887945411394 2.99573227355399 1.95160817016995 3.51749783735832 2.72785282839839 2.85070650150373 3.40784192438082 6.18001665365257 2.43361335540045 2.73436750941958 2.84490938381941 +raf 2.97552956623647 3.00568260440716 2.58776403522771 5.14749447681345 3.73289633953071 3.07731226054641 3.6609942506244 6.22455842927536 0 0 1.7263316639056 +raf 3.92986292355648 3.3357695763397 3.3178157727231 5.64897423816121 4.38077585277223 3.18221184049661 3.71357206670431 6.24222326545517 1.32175583998232 0 1.11514159061932 +raf 3.72328088083127 3.29953372788566 3.66867674679642 4.0842942263686 4.11903717481247 2.86220088092947 3.75185425327532 6.18826412308259 2.90690105984738 3.66867674679642 1.75440368268429 +raf 4.07414185490458 3.4626060097908 2.94968833505258 3.63495111208838 3.90399083373088 4.14630430115281 4.71849887129509 6.81783057145415 2.72785282839839 3.10458667846607 1.708377860289 +raf 4.17284762371004 3.04927304048202 1.870262530716 4.96284463025991 3.7864597824528 3.52636052461616 4.19116874685764 6.48463523563525 3.09557760852371 3.2846635654062 1.49290409617815 +raf 4.12874598893943 3.4904285153901 3.19458313229916 5.41610040220442 3.70622809244855 2.37954613413017 2.91235066461494 5.76519110278484 3.52636052461616 3.72328088083127 3.21084365317094 +raf 3.47196645255036 3.3357695763397 3.44361809754611 6.06145691892802 5.26269018890489 2.00552585872967 3.26575941076705 6.14418563412565 2.1770218700187 3.14845336057165 2.36085400111802 +raf 4.15575319035074 4.16511363311031 1.4655675420144 5.09375020080676 3.54385368206368 2.14124194258528 2.43361335540045 6.41345895716736 1.71739505393919 2.37024374146786 2.24812890719799 +raf 3.09557760852371 3.2846635654062 2.34180580614733 4.83628190695148 2.00552585872967 3.20274644293832 3.75887182593397 5.77455154554441 0.53062825106217 2.97552956623647 2.32238772029023 +raf 4.14630430115281 3.6609942506244 4.33598269617247 5.85507192220243 4.65396035015752 3.4626060097908 3.62434093297637 5.71042701737487 0 1.34807314829969 0.970778917158225 +raf 4.88280192258637 4.00186370942794 2.7408400239252 3.2188758248682 2.88480071284671 2.39789527279837 3.05870707271538 6.32256523992728 2.00552585872967 2.92316158071916 2.71469474382088 +raf 3.29212628660779 3.19458313229916 2.11384296839717 4.45201900649392 2.50959926237837 2.76000994003292 3.32862668882732 6.26909628370626 1.86252854011626 2.2935443483419 2.88480071284671 +raf 3.66867674679642 2.86789890204411 0.548121408509688 1.7263316639056 1.82616089594539 2.77881927199042 3.4904285153901 6.62936325343745 2.71469474382088 2.53369681395743 2.46809953147162 +raf 3.75887182593397 2.86789890204411 2.10413415427021 5.31811999384422 4.0926765051214 1.92424865227413 3.52636052461616 7.35755620091035 2.11384296839717 3.2846635654062 0.139761942375159 +raf 4.61512051684126 4.60517018598809 2.77881927199042 2.27521389619791 3.80443779474821 3.53514535417189 3.90399083373088 5.37989735354046 2.18605127673809 2.65324196460721 1.86252854011626 +raf 4.29045944114839 3.13983261752775 1.77155676191054 5.39816270151775 3.53514535417189 2.66025953726586 3.26575941076705 6.05443934626937 2.21266038546606 1.23256026117785 2.10413415427021 +raf 3.23867845216438 3.15700042115011 3.03013370027132 3.55248682920838 3.92986292355648 3.7864597824528 4.26267987704132 6.40357419793482 1.95160817016995 3.72328088083127 5.76519110278484 +raf 3.51749783735832 2.82137888640921 2.50959926237837 4.87519732320115 3.7864597824528 3.35340671782581 3.75185425327532 5.63121178182137 1.870262530716 2.82137888640921 2.50143595173921 +raf 5.32300997913841 4.26267987704132 1.51072193949494 2.83321334405622 3.85862222870103 2.62466859216316 3.63495111208838 7.49220304261874 2.61739583283408 3.14845336057165 4.13676527810605 +raf 3.18221184049661 3.3357695763397 2.71469474382088 5.37989735354046 3.71357206670431 3.88567903008854 4.90527477843843 6.96129604591017 2.37024374146786 2.79116510781272 2.24812890719799 +raf 3.52636052461616 3.05870707271538 3.2188758248682 6.48463523563525 4.71849887129509 2.97552956623647 3.04927304048202 5.62040086571715 0.99694863489161 3.05870707271538 4.69134788222914 +raf 4.04830062372069 3.15700042115011 3.4626060097908 5.77455154554441 4.07414185490458 2.98568193770049 3.56953269648137 6.72743172485086 3.06805293513362 3.49953328238302 2.77881927199042 +raf 4.01096295328305 3.10458667846607 2.31253542384721 5.01063529409626 3.35340671782581 1.8531680973567 2.71469474382088 6.04500531403601 2.68102152871429 2.92316158071916 0.609765571620894 +raf 4.34380542185368 3.04927304048202 0.845868267577609 1.96990565461153 1.14103300455206 3.65065824129374 4.77912349311153 7.29437729928882 2.61006979274201 2.7408400239252 2.42480272571829 +raf 4.0842942263686 3.72328088083127 4.22683374526818 5.16478597392351 3.79548918917219 4.254193263164 4.60517018598809 6.00881318544259 2.20386912005489 2.7408400239252 2.26695791535089 +raf 2.23964529322017 3.32862668882732 3.76815263500844 5.30826769740121 4.70048036579242 2.26695791535089 3.41772668361337 6.5206211275587 2.16791018966744 2.58021682959233 2.19499988231411 +raf 2.80336038090653 3.50855589998265 2.04122032885964 4.78749174278205 3.8308129500026 2.64617479738412 3.3178157727231 6.02586597382531 1.96009478404727 1.79009141212736 2.56494935746154 +raf 4.11087386417331 3.70622809244855 2.14124194258528 4.95582705760126 3.23867845216438 3.13113691056019 3.69635146895264 5.54126354515843 1.7630170003624 0.647103242058538 2.36085400111802 +raf 4.15575319035074 3.55248682920838 0 5.48479693349065 2.98568193770049 2.07819075977818 2.9338568698359 7.02464903045364 2.84490938381941 3.43720781918519 1.19694818938897 +raf 3.82209829790016 2.4932054526027 1.43031124653666 5.2257466737132 3.04927304048202 2.76000994003292 3.00568260440716 5.73979291217923 2.37024374146786 2.3887627892351 2.77881927199042 +raf 3.66867674679642 2.30258509299405 2.4932054526027 3.65065824129374 3.88567903008854 3.01553490085017 3.40119738166216 5.64897423816121 3.03974915897077 3.03013370027132 2.19499988231411 +raf 4.78749174278205 4.45201900649392 1.89761985992753 2.57261223020711 3.58073729549423 3.12236492448736 3.8308129500026 6.11589212548303 3.69635146895264 4.34380542185368 3.6163087612791 +raf 1.75440368268429 0.00995033085316809 0.792992515529661 6.28785856016178 3.6609942506244 2.82137888640921 2.73436750941958 6.13339804299665 1.68268837417369 2.47653840011748 2.2213750375685 +raf 3.56104608260405 2.34180580614733 3.8308129500026 5.66642668811243 4.48863636973214 0.62057648772511 1.86252854011626 5.08140436498446 2.92316158071916 3.37416870927424 2.98568193770049 +raf 2.97552956623647 3.8416005411316 3.77734810210154 4.47960696301275 3.67882911826043 3.03013370027132 3.63495111208838 5.63835466933375 2.18605127673809 2.37024374146786 0.0392207131532813 +raf 3.52636052461616 2.9338568698359 2.13179677201376 4.57779898919196 4.03777421073371 2.45958884180371 3.43720781918519 6.27852142416584 0.963174317773006 2.54160199346455 0.371563556432483 +raf 3.85862222870103 3.36384159511839 1.8531680973567 5.48479693349065 3.55248682920838 2.33214389523559 2.61006979274201 6.91671502035361 3.50855589998265 4.00186370942794 2.76000994003292 +raf 3.7864597824528 3.34638914516716 2.64617479738412 3.87743156065853 3.77734810210154 4.10098910494077 4.77912349311153 7.28550654852279 0.0953101798043249 0.53062825106217 1.74571553072665 +raf 4.77912349311153 3.38099467434464 0.431782416425538 0.231111720963387 2.56494935746154 2.2213750375685 3.09557760852371 7.07834157955767 2.7408400239252 3.23867845216438 2.43361335540045 +raf 3.98527346716774 3.17387845893747 2.79728133483015 4.37071287477361 4.0926765051214 3.72328088083127 4.15575319035074 7.01571242048723 2.84490938381941 3.09557760852371 2.68102152871429 +raf 5.0998664278242 4.28082412916472 2.36085400111802 5.27811465923052 3.91202300542815 3.25424296870549 3.63495111208838 6.25190388316589 2.34180580614733 2.86789890204411 0.559615787935423 +raf 3.74242022104197 3.10458667846607 2.67414864942653 5.82894561761021 4.15575319035074 1.66392609771817 2.36085400111802 5.94542060860658 2.37954613413017 2.2213750375685 2.14124194258528 +raf 4.26267987704132 4.20020495292158 1.4036429994545 2.28442112236637 3.15700042115011 2.72785282839839 2.88480071284671 6.36818718635049 2.80336038090653 3.23867845216438 1.95160817016995 +raf 4.0926765051214 3.4904285153901 2.43361335540045 5.01727983681492 2.86220088092947 3.03013370027132 3.23080439573347 5.2257466737132 3.12236492448736 3.60549784517489 1.37624402526639 +raf 3.72328088083127 3.36384159511839 3.05870707271538 2.80336038090653 4.43438186500781 3.37416870927424 4.17284762371004 8.13094230223188 0.27763173659828 3.87743156065853 1.83418018511201 +raf 3.25424296870549 2.96010509591084 3.92986292355648 6.54821910276237 5.31811999384422 2.33214389523559 3.35340671782581 6.62936325343745 2.1770218700187 1.11514159061932 0.982078472412158 +raf 4.36182392735636 3.7864597824528 3.7864597824528 5.03043792139244 3.94931879017184 4.15575319035074 4.92725368515721 7.05185562295589 2.2935443483419 2.62466859216316 2.25758772706331 +raf 3.85014760171006 4.04830062372069 1.26694760348732 2.61006979274201 2.99573227355399 2.97552956623647 3.48124008933569 5.85507192220243 2.99573227355399 3.56104608260405 2.55722731136763 +raf 2.85070650150373 3.36384159511839 2.70805020110221 2.80336038090653 1.55603713570699 2.19499988231411 3.6163087612791 6.56526497003536 2.54160199346455 1.57484646766448 2.09556092355972 +raf 3.9759363311718 2.98568193770049 1.6094379124341 3.06805293513362 3.68887945411394 1.20597080698861 2.77881927199042 7.6004023345004 1.51072193949494 3.66867674679642 4.21803603456465 +raf 3.02042488614436 2.70805020110221 2.25758772706331 4.31748811353631 2.87919845729804 2.7408400239252 3.05870707271538 6.65544035036765 2.84490938381941 3.00568260440716 2.11384296839717 +raf 4.01096295328305 3.31054301339402 1.2947271675944 2.52572864430826 4.05698877567833 3.47196645255036 3.7864597824528 5.4510384535657 1.54756250871601 2.57261223020711 2.51769647261099 +raf 4.43438186500781 3.13983261752775 1.80828877117927 5.4249500174814 3.70622809244855 4.31748811353631 4.7361984483945 7.63626960337937 2.04122032885964 2.94968833505258 2.37954613413017 +raf 4.90527477843843 5.28826703069454 1.5830939370945 5.37063802812766 3.31054301339402 2.79728133483015 4.11087386417331 7.78030308790837 2.36085400111802 2.89591193827178 1.24990173621434 +raf 3.23080439573347 2.86220088092947 2.80336038090653 3.42751468997953 2.86789890204411 2.46809953147162 3.23080439573347 6.39526159811545 1.69927861643389 2.42480272571829 1.81645208181843 +raf 3.75185425327532 3.14845336057165 2.41591377830105 4.91998092582813 2.41591377830105 2.83321334405622 3.55248682920838 6.22455842927536 2.50143595173921 3.03013370027132 1.95160817016995 +raf 4.26267987704132 3.70622809244855 2.83321334405622 4.91265488573605 2.31253542384721 4.33598269617247 4.80402104473326 7.71735127218533 2.70805020110221 3.15700042115011 2.16791018966744 +raf 4.13676527810605 3.27336401015227 2.84490938381941 5.4971682252932 4.12874598893943 2.36085400111802 2.84490938381941 6.22455842927536 2.56494935746154 3.56104608260405 2.89591193827178 +raf 3.93963817246112 3.23867845216438 3.85014760171006 5.14749447681345 4.93447393313069 3.65065824129374 4.00186370942794 7.16857989726403 1.13462272619114 2.87919845729804 2.9391619220656 +raf 4.15575319035074 3.20274644293832 0.879626747502564 1.77155676191054 2.60268968544438 2.36085400111802 2.81540871942271 6.27852142416584 2.2935443483419 2.90690105984738 0 +raf 4.30000279919529 3.55248682920838 3.40119738166216 4.43438186500781 3.73289633953071 4.97673374242057 5.92692602597041 7.7621706071382 2.65324196460721 2.4932054526027 0.928219302739429 +raf 3.8416005411316 2.96010509591084 1.22377543162212 0.00995033085316809 0.139761942375159 2.87919845729804 3.69635146895264 5.87211778947542 2.4423470353692 2.63188884013665 1.6467336971778 +raf 3.82209829790016 2.70136121295141 2.73436750941958 6.06145691892802 4.07414185490458 1.69009581545155 3.09557760852371 5.31811999384422 2.65324196460721 3.04927304048202 3.23080439573347 +raf 4.46129981556839 3.59731226058845 1.81645208181843 4.70953020131233 3.13983261752775 3.91202300542815 4.3267781604434 6.90775527898214 2.79116510781272 3.2188758248682 2.47653840011748 +raf 3.41772668361337 3.13983261752775 2.98568193770049 4.17284762371004 3.26575941076705 2.42480272571829 3.12236492448736 5.77455154554441 0 2.45958884180371 2.73436750941958 +raf 3.56104608260405 2.21266038546606 3.24649099190117 2.92316158071916 3.51749783735832 3.82209829790016 4.30811095172371 6.56526497003536 2.87919845729804 3.64283551561253 3.35340671782581 +raf 5.35185813347607 4.47960696301275 2.47653840011748 5.05624580534831 3.19458313229916 3.82209829790016 4.55071400019203 7.44716835960004 2.64617479738412 2.01490302054226 2.61006979274201 +raf 3.77734810210154 3.06805293513362 1.66392609771817 5.71042701737487 3.35340671782581 3.58905911883173 4.47960696301275 7.58222919427646 2.9338568698359 3.24649099190117 2.31253542384721 +raf 2.9704144655697 2.62466859216316 1.96990565461153 3.10458667846607 3.62434093297637 2.50143595173921 3.55248682920838 6.46769872610435 2.96010509591084 3.48124008933569 2.51769647261099 +raf 4.77068462446567 4.16511363311031 2.34180580614733 4.85981240436167 1.09861228866811 1.90657514365664 2.70136121295141 6.14418563412565 1.21491274436427 0.693147180559945 0.470003629245736 +raf 4.16511363311031 3.21084365317094 2.37954613413017 5.03043792139244 3.58073729549423 4.70953020131233 5.44241771052179 7.04228617193974 2.28442112236637 2.9391619220656 1.80828877117927 +raf 3.77734810210154 3.2846635654062 3.4626060097908 4.19116874685764 2.9391619220656 2.92316158071916 3.4626060097908 5.94542060860658 2.51769647261099 2.96010509591084 2.3887627892351 +raf 4.39814601655377 3.67882911826043 4.00186370942794 5.44241771052179 4.67282883446191 1.870262530716 2.99573227355399 6.97073007814353 2.97552956623647 3.00568260440716 2.15871472257434 +raf 4.07414185490458 3.3357695763397 1.94304891677428 2.90690105984738 3.92197333628131 2.62466859216316 3.12236492448736 5.54907608489522 2.66025953726586 3.3178157727231 3.76815263500844 +raf 3.07731226054641 2.92316158071916 3.37416870927424 6.02586597382531 5.12396397940326 1.74571553072665 2.72785282839839 5.94542060860658 3.52636052461616 4.22683374526818 3.76815263500844 +raf 4.12874598893943 3.29953372788566 2.12226153886276 4.74493212836325 3.29953372788566 2.9338568698359 3.51749783735832 6.73696695800186 0.104360015324243 3.65065824129374 0.593326845277734 +raf 3.20274644293832 3.23867845216438 2.68784749378469 4.39814601655377 3.77734810210154 4.30000279919529 5.21493575760899 7.34858753092759 2.76000994003292 3.31054301339402 2.4932054526027 +raf 1.80828877117927 3.05870707271538 4.24563400976833 4.8283137373023 5.27811465923052 2.3887627892351 3.79548918917219 7.18690102041163 2.62466859216316 1.78170913337455 2.1770218700187 +raf 5.03695260241363 4.46129981556839 2.21266038546606 5.24174701505964 3.56953269648137 3.01553490085017 3.60549784517489 6.43133108193348 2.35137525716348 2.70136121295141 2.46809953147162 +raf 4.30000279919529 3.55248682920838 1.56444054650336 3.09557760852371 4.03777421073371 2.45958884180371 3.51749783735832 6.61069604471776 3.09557760852371 3.48124008933569 2.61006979274201 +raf 4.254193263164 3.62434093297637 3.75887182593397 4.91265488573605 4.0842942263686 3.60549784517489 4.31748811353631 6.28785856016178 3.23867845216438 3.3178157727231 2.24812890719799 +raf 4.34380542185368 3.27336401015227 2.61739583283408 6.21460809842219 4.3267781604434 2.46809953147162 3.59731226058845 6.18826412308259 2.9704144655697 3.14845336057165 2.2213750375685 +raf 2.46809953147162 3.11351530921037 2.23964529322017 4.80402104473326 2.55722731136763 3.6163087612791 4.00186370942794 6.50279004591562 2.23964529322017 2.67414864942653 1.30291275218084 +raf 2.89591193827178 3.12236492448736 2.97552956623647 5.97126183979046 4.96284463025991 2.86789890204411 3.6609942506244 6.5206211275587 2.42480272571829 2.47653840011748 2.60268968544438 +raf 3.48124008933569 3.24649099190117 2.55722731136763 5.73009978297357 4.28082412916472 3.50855589998265 4.3267781604434 7.3038432252777 2.07819075977818 2.88480071284671 4.86753445045558 +raf 3.90399083373088 3.8308129500026 2.33214389523559 6.11589212548303 4.19116874685764 2.86220088092947 3.13983261752775 5.96357934361845 3.01553490085017 3.10458667846607 2.32238772029023 +raf 3.73289633953071 3.17387845893747 1.7630170003624 6.24222326545517 4.24563400976833 1.48387468945875 2.58776403522771 5.05624580534831 2.57261223020711 3.17387845893747 1.99741770620125 +raf 3.02042488614436 3.48124008933569 2.40694510831829 5.66642668811243 4.17284762371004 2.98568193770049 3.53514535417189 5.82008293035236 2.72785282839839 2.14943391349987 2.33214389523559 +raf 4.07414185490458 2.86220088092947 2.27521389619791 2.24812890719799 3.31054301339402 3.32862668882732 3.92197333628131 6.32256523992728 2.94968833505258 3.2188758248682 2.34180580614733 +raf 3.72328088083127 3.27336401015227 1.12492959698548 3.19458313229916 2.97552956623647 3.40784192438082 3.87743156065853 5.95324333428778 2.14943391349987 2.14124194258528 2.09556092355972 +raf 3.55248682920838 2.80336038090653 2.76000994003292 5.03043792139244 3.72328088083127 1.55603713570699 2.2935443483419 6.84481547920826 2.32238772029023 1.88858365386359 2.19499988231411 +raf 2.99573227355399 2.94968833505258 3.19458313229916 6.35957386867238 4.57779898919196 2.37024374146786 3.29212628660779 6.72743172485086 1.95160817016995 2.62466859216316 1.67335123817775 +raf 5.18738580584075 3.32862668882732 1.44926916028128 4.98360662170834 3.82209829790016 2.92316158071916 3.47196645255036 6.26909628370626 1.28647402583768 0.62057648772511 1.94304891677428 +raf 3.94931879017184 3.40784192438082 1.24126858906963 5.6021188208797 3.88567903008854 3.14845336057165 3.68887945411394 6.04500531403601 2.43361335540045 3.56104608260405 2.85070650150373 +raf 4.52396013056255 4.24563400976833 4.01096295328305 5.92692602597041 4.86753445045558 4.24563400976833 4.70953020131233 6.92559519711047 0 1.90657514365664 1.708377860289 +raf 3.87743156065853 2.75366071235426 1.56444054650336 2.61006979274201 3.21084365317094 1.2947271675944 2.7408400239252 5.25227342804663 0 0 2.08691355651854 +raf 4.44382703557933 3.32862668882732 0.307484699747961 5.06259503302697 1.89761985992753 2.79728133483015 3.52636052461616 6.01615715969835 3.80443779474821 4.3267781604434 3.29212628660779 +raf 3.59731226058845 2.98568193770049 2.37954613413017 5.46806014113513 3.15700042115011 3.8308129500026 4.13676527810605 7.24921505711439 2.99573227355399 3.48124008933569 2.54160199346455 +raf 4.30000279919529 3.3178157727231 3.02042488614436 2.97552956623647 3.04927304048202 3.2846635654062 4.13676527810605 7.19593722647557 3.00568260440716 3.59731226058845 1.9154509415706 +raf 2.96010509591084 3.31054301339402 3.53514535417189 6.09807428216624 3.89385903480047 2.96010509591084 3.75887182593397 6.52941883826223 3.58905911883173 4.14630430115281 3.42751468997953 +raf 3.36384159511839 3.07731226054641 1.51072193949494 3.12236492448736 2.01490302054226 1.50185270175416 3.08648663682246 6.96129604591017 2.37954613413017 2.68784749378469 2.51769647261099 +raf 3.92986292355648 4.78749174278205 2.25758772706331 3.79548918917219 2.65324196460721 3.91202300542815 4.49758497530815 6.56526497003536 3.09557760852371 3.29212628660779 2.64617479738412 +raf 4.29045944114839 3.35340671782581 2.11384296839717 1.9154509415706 3.23080439573347 3.26575941076705 3.41772668361337 5.66642668811243 2.41591377830105 2.9391619220656 2.23108909128898 +raf 4.12874598893943 3.29953372788566 1.94304891677428 2.57261223020711 4.0842942263686 3.60549784517489 3.89385903480047 6.67329796776765 3.67882911826043 4.3528552573736 3.96651119071222 +raf 3.55248682920838 3.21084365317094 2.82137888640921 5.23644196282995 3.9759363311718 2.30258509299405 2.4932054526027 6.19644412779452 3.13983261752775 3.23867845216438 2.37024374146786 +raf 4.19116874685764 4.15575319035074 2.77258872223978 4.92725368515721 3.2846635654062 2.77258872223978 3.55248682920838 6.22455842927536 2.484906649788 1.30291275218084 2.68102152871429 +raf 3.29212628660779 2.85070650150373 2.54160199346455 4.50645421304893 2.99573227355399 2.31253542384721 3.3178157727231 6.01615715969835 2.13179677201376 2.24812890719799 2.84490938381941 +raf 4.36182392735636 3.04927304048202 2.20386912005489 5.57594910314632 3.9759363311718 5.05624580534831 5.80211837537706 7.51914995766982 2.42480272571829 2.85070650150373 2.60268968544438 +raf 3.62434093297637 3.43720781918519 1.86252854011626 5.64897423816121 3.54385368206368 2.92316158071916 3.54385368206368 6.32256523992728 3.19458313229916 2.484906649788 1.96990565461153 +raf 4.01096295328305 2.37954613413017 1.43031124653666 3.81330703248899 3.05870707271538 3.40784192438082 4.07414185490458 6.1527326947041 2.41591377830105 2.08691355651854 2.58021682959233 +raf 4.01998014693324 3.21084365317094 2.02419306744936 6.20657592672493 4.01998014693324 2.79728133483015 3.74242022104197 6.08904487544685 3.04927304048202 3.60549784517489 2.1770218700187 +raf 3.89385903480047 2.91235066461494 2.33214389523559 3.9759363311718 2.45958884180371 2.67414864942653 3.40784192438082 6.07073772800249 2.24812890719799 2.84490938381941 2.23108909128898 +raf 4.11903717481247 3.04927304048202 1.88858365386359 2.67414864942653 3.40119738166216 2.32238772029023 2.70805020110221 5.83773044716594 2.36085400111802 2.92316158071916 2.71469474382088 +raf 1.21491274436427 2.45958884180371 3.03974915897077 4.06560209335645 3.8308129500026 3.29212628660779 3.75185425327532 5.99146454710798 0.53062825106217 1.69927861643389 1.01523067972906 +raf 5.19849703126583 4.54223038621422 1.96009478404727 3.09557760852371 4.20020495292158 3.81330703248899 4.16511363311031 6.80903930604298 2.14943391349987 2.40694510831829 1.34807314829969 +raf 2.77258872223978 3.24649099190117 2.07819075977818 4.96284463025991 1.80828877117927 3.14845336057165 3.86702563949741 6.89871453432999 0 0.845868267577609 0 +raf 3.29953372788566 3.73289633953071 2.30258509299405 4.76217393479776 3.14845336057165 3.55248682920838 3.92197333628131 5.89989735358249 0 2.79728133483015 2.39789527279837 +raf 4.87519732320115 4.28082412916472 1.79840401194672 5.26269018890489 3.96651119071222 2.47653840011748 3.17387845893747 5.74620319054015 1.92424865227413 2.05027016437956 2.4423470353692 +raf 4.18205014264121 3.43720781918519 2.84490938381941 4.82028156560504 1.99741770620125 4.60517018598809 5.72031177660741 7.67229245562876 3.53514535417189 3.8416005411316 2.61739583283408 +raf 1.88858365386359 2.9338568698359 3.34638914516716 4.20916023665068 4.46129981556839 1.67335123817775 3.24649099190117 7.40245152081824 0 1.62727783056243 2.27521389619791 +raf 3.3178157727231 2.92316158071916 0 5.67675380226828 1.55603713570699 0.854415328156068 1.08856195281461 0 2.11384296839717 2.61006979274201 2.68102152871429 +raf 4.26267987704132 3.6609942506244 2.25758772706331 5.19849703126583 3.73289633953071 3.65065824129374 4.69134788222914 6.57507584059962 2.52572864430826 2.53369681395743 2.37024374146786 +raf 4.58700621536042 3.60549784517489 0.593326845277734 3.36384159511839 2.81540871942271 3.21084365317094 3.75185425327532 5.89164421182577 2.84490938381941 3.47196645255036 2.56494935746154 +raf 3.92197333628131 3.15700042115011 1.94304891677428 2.50143595173921 3.6609942506244 3.35340671782581 4.16511363311031 6.95272864462487 3.43720781918519 3.87743156065853 2.58776403522771 +raf 4.71849887129509 3.86702563949741 2.23108909128898 6.26909628370626 5.20948615284142 2.3887627892351 3.29953372788566 6.26909628370626 2.57261223020711 2.68102152871429 1.75440368268429 +raf 4.42484663185681 3.9926809084456 0.609765571620894 1.51072193949494 2.72785282839839 1.94304891677428 2.9391619220656 6.63856778916652 3.13113691056019 3.25424296870549 0.774727167552368 +raf 3.50855589998265 3.20274644293832 2.4932054526027 5.0998664278242 3.55248682920838 3.86702563949741 4.45201900649392 7.75319426988434 3.16547504814109 3.77734810210154 3.26575941076705 +raf 4.66343909411207 3.86702563949741 2.08691355651854 2.23964529322017 3.6609942506244 2.45958884180371 3.13983261752775 6.40357419793482 2.4423470353692 2.50143595173921 2.2935443483419 +raf 3.23080439573347 3.68887945411394 1.42069578783722 5.04342511691925 3.3178157727231 2.51769647261099 2.98568193770049 6.56526497003536 2.18605127673809 2.91235066461494 2.23108909128898 +raf 2.37954613413017 2.9704144655697 2.31253542384721 5.0998664278242 3.86702563949741 2.90690105984738 3.4626060097908 5.91889385427315 3.19458313229916 3.56104608260405 1.98787434815435 +raf 1.15057202759882 1.44926916028128 2.9704144655697 3.47196645255036 3.68887945411394 1.54756250871601 3.87743156065853 6.23244801655052 3.19458313229916 3.37416870927424 2.68784749378469 +raf 4.38077585277223 3.52636052461616 2.56494935746154 5.34233425196481 3.92986292355648 2.42480272571829 3.19458313229916 6.18826412308259 2.79728133483015 2.92316158071916 2.47653840011748 +raf 4.53367418428302 3.80443779474821 4.05698877567833 6.21460809842219 4.91265488573605 3.71357206670431 4.33598269617247 7.70841066725737 2.99573227355399 3.23080439573347 2.21266038546606 +raf 3.62434093297637 2.90690105984738 2.79116510781272 0.139761942375159 2.2213750375685 2.60268968544438 3.23080439573347 5.89164421182577 1.92424865227413 3.03974915897077 3.21084365317094 +raf 3.58073729549423 2.77881927199042 3.02042488614436 3.92986292355648 4.40671924726425 3.04927304048202 3.36384159511839 5.85507192220243 2.18605127673809 3.2846635654062 1.51951320490611 +raf 4.67282883446191 3.40119738166216 2.52572864430826 5.29831736654804 3.03013370027132 2.06812778177956 3.98527346716774 7.63626960337937 2.58776403522771 3.51749783735832 0.943905898907128 +raf 4.62497281328427 3.48124008933569 2.03339760317843 5.50533153593236 4.0842942263686 3.37416870927424 3.79548918917219 5.76519110278484 2.72785282839839 2.65324196460721 2.34180580614733 +raf 3.4904285153901 3.2846635654062 2.47653840011748 5.27811465923052 3.92197333628131 2.52572864430826 2.85070650150373 6.29526600143965 3.29953372788566 3.40119738166216 2.05923883436232 +raf 4.60517018598809 3.29953372788566 3.54385368206368 5.98141421125448 4.63472898822964 4.16511363311031 4.82028156560504 7.33953769540767 2.99573227355399 3.4626060097908 2.51769647261099 +raf 4.50645421304893 4.06560209335645 2.64617479738412 5.72031177660741 3.2846635654062 3.51749783735832 4.10098910494077 7.00669522683704 0 2.01490302054226 1.8531680973567 +raf 4.60517018598809 3.24649099190117 4.3528552573736 5.50533153593236 3.6163087612791 2.08691355651854 2.16791018966744 6.23244801655052 2.76000994003292 3.35340671782581 3.68887945411394 +raf 4.3267781604434 3.39114704580865 2.01490302054226 5.00394630594546 3.37416870927424 3.6163087612791 4.07414185490458 5.8111409929767 2.07819075977818 3.12236492448736 2.11384296839717 +raf 3.98527346716774 3.03013370027132 4.0842942263686 5.82008293035236 5.40717177146012 2.58021682959233 3.43720781918519 6.27852142416584 3.39114704580865 3.70622809244855 2.4932054526027 +raf 4.50645421304893 3.79548918917219 1.79840401194672 5.13579843705026 3.07731226054641 2.79116510781272 3.25424296870549 6.52941883826223 2.61006979274201 2.68784749378469 2.10413415427021 +raf 4.24563400976833 3.85862222870103 2.40694510831829 5.91889385427315 2.9391619220656 1.52822785700856 3.27336401015227 6.44888939414686 2.58021682959233 3.2188758248682 2.25758772706331 +raf 5.26269018890489 4.11087386417331 2.23108909128898 2.76000994003292 3.39114704580865 2.34180580614733 3.21084365317094 6.50279004591562 2.54160199346455 3.07731226054641 1.88858365386359 +raf 4.45201900649392 3.10458667846607 2.82137888640921 4.20020495292158 3.60549784517489 3.23080439573347 3.94931879017184 6.30444880242198 3.25424296870549 3.4626060097908 2.88480071284671 +raf 4.21803603456465 2.70136121295141 4.38949864951258 5.46806014113513 4.11087386417331 3.62434093297637 4.20020495292158 7.88833450073865 2.72785282839839 3.67882911826043 2.51769647261099 +raf 2.94968833505258 2.28442112236637 2.484906649788 2.37024374146786 3.31054301339402 4.28082412916472 4.50645421304893 6.75460409948796 2.26695791535089 2.85070650150373 3.02042488614436 +raf 2.77881927199042 2.72785282839839 2.63188884013665 4.29045944114839 3.20274644293832 2.82137888640921 3.40784192438082 5.95324333428778 2.73436750941958 3.25424296870549 3.15700042115011 +raf 4.56017282005736 3.36384159511839 2.03339760317843 2.65324196460721 3.16547504814109 2.58021682959233 3.42751468997953 6.59304453414244 2.67414864942653 3.55248682920838 3.73289633953071 +raf 3.89385903480047 3.05870707271538 0.60431596685333 5.6937321388027 3.90399083373088 3.19458313229916 3.8416005411316 7.51043055637801 3.49953328238302 3.64283551561253 2.83321334405622 +raf 2.9391619220656 3.26575941076705 3.21084365317094 5.57594910314632 4.24563400976833 3.43720781918519 4.54223038621422 7.0335064842877 2.55722731136763 2.26695791535089 2.30258509299405 +raf 4.30811095172371 3.59731226058845 1.69009581545155 5.4971682252932 3.51749783735832 2.50143595173921 3.03013370027132 5.45958551414416 1.7630170003624 3.2188758248682 4.78749174278205 +raf 3.24649099190117 3.20274644293832 2.9704144655697 4.76217393479776 4.37071287477361 2.30258509299405 3.24649099190117 6.68336094576627 2.84490938381941 3.26575941076705 2.76000994003292 +raf 4.11087386417331 3.43720781918519 2.76000994003292 4.97673374242057 3.73289633953071 3.32862668882732 3.82209829790016 5.88332238848828 2.68102152871429 2.63188884013665 1.75440368268429 +raf 3.29953372788566 2.79728133483015 3.63495111208838 6.31354804627709 4.38949864951258 3.03974915897077 3.69635146895264 6.00881318544259 2.37024374146786 2.97552956623647 2.50143595173921 +raf 5.01727983681492 3.88567903008854 3.60549784517489 4.48863636973214 4.33598269617247 3.08648663682246 3.6609942506244 5.94542060860658 2.43361335540045 2.92316158071916 1.93441576962958 +raf 5.18738580584075 4.34380542185368 2.58776403522771 5.52146091786225 3.74242022104197 3.34638914516716 3.85862222870103 6.19644412779452 2.77258872223978 2.28442112236637 2.2213750375685 +raf 5.03695260241363 4.91265488573605 2.84490938381941 3.75185425327532 4.36182392735636 1.45628673293993 3.15700042115011 6.90775527898214 2.85070650150373 2.51769647261099 1.77155676191054 +raf 4.30000279919529 3.58905911883173 1.23256026117785 1.17865499634165 0.00995033085316809 1.99741770620125 2.77881927199042 7.14124512235049 2.85070650150373 2.42480272571829 2.90690105984738 +raf 4.56017282005736 3.75887182593397 3.70622809244855 3.69635146895264 4.06560209335645 2.18605127673809 2.81540871942271 6.25958146406492 2.76000994003292 2.73436750941958 1.95160817016995 +raf 4.01096295328305 3.93963817246112 2.89591193827178 4.41642806139121 3.01553490085017 2.36085400111802 3.05870707271538 6.71901315438526 2.14943391349987 3.27336401015227 1.86252854011626 +raf 3.59731226058845 2.35137525716348 3.14845336057165 5.35185813347607 3.35340671782581 2.42480272571829 3.90399083373088 7.87016594646984 2.484906649788 3.01553490085017 1.06125650212434 +raf 3.41772668361337 2.75366071235426 2.75366071235426 4.94875989037817 3.3178157727231 2.7408400239252 3.01553490085017 5.83773044716594 1.75440368268429 2.91235066461494 2.37954613413017 +raf 5.06259503302697 3.6163087612791 2.76000994003292 4.50645421304893 3.36384159511839 1.66392609771817 2.4932054526027 6.81783057145415 1.74571553072665 2.92316158071916 2.33214389523559 +raf 3.90399083373088 3.4626060097908 1.7630170003624 5.72031177660741 3.6609942506244 2.97552956623647 3.13983261752775 5.6021188208797 3.08648663682246 3.36384159511839 1.6094379124341 +raf 4.49758497530815 3.58073729549423 3.12236492448736 6.46769872610435 4.70953020131233 1.26694760348732 1.08856195281461 3.35340671782581 2.2935443483419 3.03013370027132 0.576613364303994 +raf 3.58073729549423 2.89591193827178 2.25758772706331 4.76217393479776 3.31054301339402 2.16791018966744 2.75366071235426 6.50279004591562 2.36085400111802 3.05870707271538 2.04122032885964 +raf 4.21803603456465 3.36384159511839 2.42480272571829 4.23700086262362 3.3178157727231 3.9926809084456 4.55071400019203 7.05185562295589 2.4423470353692 2.88480071284671 2.47653840011748 +raf 4.48863636973214 3.45315712059287 2.70805020110221 3.4904285153901 3.73289633953071 3.31054301339402 3.77734810210154 5.93753620508243 2.27521389619791 2.42480272571829 0.00995033085316809 +raf 4.05698877567833 3.07731226054641 3.58905911883173 6.37672694789863 4.77068462446567 3.31054301339402 3.77734810210154 6.03548143252476 2.68102152871429 3.29212628660779 1.6094379124341 +raf 4.44382703557933 3.64283551561253 2.87919845729804 5.74620319054015 3.8308129500026 4.79579054559674 5.54126354515843 7.39326309476384 2.46809953147162 2.61006979274201 2.16791018966744 +raf 3.21084365317094 3.06805293513362 1.54756250871601 4.55071400019203 3.13983261752775 2.73436750941958 2.77881927199042 5.78382518232974 3.07731226054641 3.62434093297637 2.33214389523559 +raf 4.15575319035074 2.97552956623647 1.50185270175416 5.4249500174814 3.29953372788566 2.58021682959233 2.61739583283408 6.07073772800249 2.42480272571829 3.07731226054641 2.55722731136763 +raf 4.36182392735636 3.49953328238302 2.484906649788 5.61312810638807 3.01553490085017 3.29953372788566 3.53514535417189 5.63121178182137 3.11351530921037 3.58905911883173 1.86252854011626 +raf 4.30000279919529 3.4904285153901 3.94931879017184 6.26909628370626 5.05624580534831 3.23867845216438 4.10098910494077 6.98841318199959 2.21266038546606 2.484906649788 2.00552585872967 +raf 4.76217393479776 3.69635146895264 0.357674444271816 2.60268968544438 4.01096295328305 2.87919845729804 3.42751468997953 6.21460809842219 2.9391619220656 3.18221184049661 2.50959926237837 +raf 4.76217393479776 4.36182392735636 2.91235066461494 4.05698877567833 2.79728133483015 2.03339760317843 3.36384159511839 6.45833828334479 0.494696241836107 2.58021682959233 1.34025042261848 +raf 3.53514535417189 3.02042488614436 2.77258872223978 3.17387845893747 3.88567903008854 3.06805293513362 4.22683374526818 7.01571242048723 2.79728133483015 2.14124194258528 2.23108909128898 +raf 5.18738580584075 3.54385368206368 3.26575941076705 3.39114704580865 2.7408400239252 1.90657514365664 4.13676527810605 7.06987412845857 3.15700042115011 3.3357695763397 1.74571553072665 +raf 4.66343909411207 3.66867674679642 2.88480071284671 4.61512051684126 3.64283551561253 3.90399083373088 4.53367418428302 7.25841215059531 2.7408400239252 3.45315712059287 2.47653840011748 +raf 3.66867674679642 2.87919845729804 3.26575941076705 6.05443934626937 4.66343909411207 4.70048036579242 5.14749447681345 7.08757370555797 2.19499988231411 2.58021682959233 2.73436750941958 +raf 4.27249074760558 3.24649099190117 1.74571553072665 5.50533153593236 3.87743156065853 2.77258872223978 4.38077585277223 7.20489251020467 2.61006979274201 3.03013370027132 1.19694818938897 +raf 2.63188884013665 3.04927304048202 2.72785282839839 5.45958551414416 3.81330703248899 3.18221184049661 3.38099467434464 5.77455154554441 2.71469474382088 2.02419306744936 1.44926916028128 +raf 4.5152454784601 4.38949864951258 1.54756250871601 5.25227342804663 3.79548918917219 3.88567903008854 4.23700086262362 5.93753620508243 2.77258872223978 3.49953328238302 2.7408400239252 +raf 3.92197333628131 2.61006979274201 2.36085400111802 4.7361984483945 2.98568193770049 2.89591193827178 3.34638914516716 6.00881318544259 0 1.7630170003624 0.576613364303994 +raf 3.52636052461616 2.75366071235426 2.27521389619791 5.4249500174814 3.50855589998265 3.20274644293832 3.76815263500844 6.36818718635049 2.57261223020711 3.11351530921037 2.9704144655697 +raf 3.88567903008854 2.9704144655697 3.10458667846607 4.79579054559674 3.76815263500844 4.70048036579242 5.79301360838414 7.01571242048723 3.23867845216438 3.11351530921037 2.97552956623647 +raf 4.43438186500781 3.54385368206368 3.29953372788566 4.44382703557933 3.85014760171006 2.14943391349987 3.03013370027132 6.44888939414686 2.58021682959233 2.62466859216316 1.17865499634165 +raf 3.79548918917219 2.89591193827178 2.36085400111802 4.97673374242057 3.73289633953071 2.37954613413017 3.37416870927424 5.33271879326537 2.484906649788 3.11351530921037 1.45628673293993 +raf 3.44361809754611 3.05870707271538 2.01490302054226 0 6.92559519711047 1.53901544813755 2.68784749378469 6.13339804299665 2.24812890719799 2.82137888640921 2.70136121295141 +raf 4.37071287477361 4.0842942263686 2.37024374146786 5.06259503302697 3.59731226058845 2.3887627892351 3.52636052461616 6.46769872610435 2.94968833505258 3.29212628660779 2.2213750375685 +raf 3.75185425327532 3.07731226054641 2.94968833505258 5.3890717298165 3.09557760852371 3.06805293513362 4.02891675689965 7.24064969425547 2.32238772029023 2.25758772706331 2.53369681395743 +raf 3.93963817246112 3.6609942506244 3.24649099190117 2.99573227355399 2.04122032885964 3.48124008933569 4.28082412916472 7.07834157955767 2.80336038090653 3.45315712059287 2.52572864430826 +raf 4.15575319035074 3.93963817246112 2.32238772029023 3.69635146895264 3.2188758248682 3.8308129500026 4.58700621536042 7.3304052118444 2.58776403522771 2.84490938381941 1.92424865227413 +raf 2.65324196460721 2.91235066461494 3.9926809084456 5.95324333428778 5.37063802812766 2.83321334405622 3.3178157727231 6.36818718635049 2.37954613413017 2.64617479738412 2.51769647261099 +raf 3.75887182593397 3.01553490085017 1.75440368268429 5.36129216570943 3.19458313229916 4.70048036579242 5.75574221358691 7.51914995766982 2.37024374146786 2.98568193770049 2.25758772706331 +raf 3.27336401015227 2.84490938381941 2.41591377830105 5.31811999384422 3.67882911826043 3.77734810210154 4.30811095172371 7.0335064842877 3.44361809754611 3.82209829790016 2.3887627892351 +raf 1.82616089594539 1.5830939370945 1.45628673293993 5.39816270151775 2.70136121295141 3.34638914516716 3.85862222870103 5.99146454710798 2.7408400239252 3.09557760852371 1.96990565461153 +raf 3.45315712059287 3.03013370027132 1.59127394180643 5.61312810638807 3.54385368206368 3.00568260440716 4.19116874685764 8.24800570160062 3.17387845893747 3.14845336057165 1.83418018511201 +raf 4.36182392735636 3.24649099190117 2.37024374146786 6.14418563412565 3.8416005411316 2.46809953147162 2.86789890204411 5.8111409929767 2.08691355651854 2.84490938381941 2.92316158071916 +raf 3.40119738166216 2.23108909128898 3.35340671782581 4.87519732320115 4.03777421073371 3.72328088083127 4.49758497530815 7.74413662762799 2.9338568698359 3.32862668882732 1.75440368268429 +raf 3.92197333628131 2.9338568698359 1.95160817016995 2.91235066461494 3.19458313229916 2.73436750941958 3.2188758248682 5.6021188208797 2.9704144655697 3.41772668361337 2.21266038546606 +raf 3.17387845893747 2.99573227355399 0.982078472412158 1.27815220250019 2.42480272571829 2.81540871942271 3.29212628660779 5.75574221358691 2.83321334405622 3.25424296870549 2.41591377830105 +raf 4.30000279919529 3.14845336057165 1.96990565461153 3.05870707271538 2.9391619220656 2.7408400239252 3.16547504814109 6.37672694789863 2.79728133483015 2.57261223020711 1.90657514365664 +raf 2.39789527279837 2.68784749378469 2.94968833505258 3.98527346716774 3.4904285153901 2.77258872223978 2.9391619220656 6.29526600143965 3.01553490085017 2.87919845729804 3.20274644293832 +raf 4.18205014264121 3.23080439573347 2.71469474382088 4.76217393479776 3.17387845893747 2.92316158071916 3.14845336057165 6.16120732169508 2.42480272571829 2.79116510781272 2.12226153886276 +raf 3.07731226054641 2.10413415427021 2.68102152871429 5.30826769740121 3.15700042115011 2.90690105984738 3.41772668361337 6.20657592672493 2.77258872223978 3.21084365317094 2.47653840011748 +raf 4.15575319035074 2.91235066461494 2.2213750375685 5.77455154554441 3.93963817246112 3.07731226054641 4.43438186500781 7.3038432252777 2.4932054526027 3.14845336057165 2.14943391349987 +raf 4.64439089914137 4.10098910494077 2.05923883436232 5.06259503302697 3.60549784517489 3.15700042115011 3.73289633953071 5.82894561761021 2.00552585872967 2.80336038090653 2.51769647261099 +raf 3.24649099190117 2.91235066461494 1.79840401194672 5.8111409929767 3.4904285153901 4.38077585277223 4.8283137373023 7.02464903045364 2.64617479738412 2.26695791535089 1.4036429994545 +raf 2.85070650150373 3.07731226054641 2.36085400111802 5.37989735354046 3.73289633953071 2.57261223020711 3.13113691056019 6.18826412308259 3.47196645255036 3.58905911883173 2.21266038546606 +raf 2.13179677201376 3.60549784517489 2.31253542384721 6.03548143252476 3.81330703248899 2.65324196460721 3.25424296870549 6.57507584059962 1.6467336971778 3.27336401015227 4.00186370942794 +raf 4.05698877567833 2.80336038090653 2.4423470353692 5.45958551414416 3.48124008933569 3.21084365317094 3.4626060097908 6.07993319509559 2.11384296839717 3.34638914516716 3.16547504814109 +raf 4.5152454784601 4.64439089914137 2.05027016437956 4.97673374242057 4.11087386417331 4.254193263164 4.92725368515721 6.88959130835447 2.99573227355399 3.45315712059287 1.79840401194672 +raf 4.38077585277223 3.59731226058845 2.37024374146786 2.79116510781272 3.6163087612791 2.14124194258528 3.04927304048202 6.65544035036765 2.9338568698359 3.64283551561253 4.89034912822175 +raf 4.39814601655377 3.48124008933569 3.08648663682246 4.0842942263686 3.65065824129374 2.20386912005489 3.14845336057165 5.99146454710798 2.30258509299405 3.13983261752775 1.33236601909433 +raf 4.67282883446191 3.41772668361337 2.88480071284671 5.48479693349065 4.20020495292158 1.66392609771817 2.9391619220656 5.89164421182577 3.05870707271538 3.35340671782581 2.67414864942653 +raf 4.59612944133594 3.58905911883173 1.04380405217311 2.76000994003292 3.3357695763397 3.08648663682246 3.89385903480047 7.13249755166004 3.13113691056019 3.23867845216438 2.34180580614733 +raf 4.54223038621422 3.81330703248899 3.05870707271538 3.23080439573347 3.35340671782581 2.53369681395743 3.43720781918519 6.16961073249146 1.90657514365664 3.01553490085017 0.470003629245736 +raf 3.6609942506244 2.91235066461494 2.77881927199042 6.04500531403601 4.22683374526818 3.03974915897077 3.68887945411394 6.25190388316589 2.24812890719799 3.14845336057165 0 +raf 4.36182392735636 3.03974915897077 1.63705307946707 5.54126354515843 3.42751468997953 3.09557760852371 3.59731226058845 5.97126183979046 2.99573227355399 3.64283551561253 1.81645208181843 +raf 3.49953328238302 3.27336401015227 2.34180580614733 3.19458313229916 3.45315712059287 3.44361809754611 3.96651119071222 6.01615715969835 2.68784749378469 2.4932054526027 2.23964529322017 +raf 4.10098910494077 3.11351530921037 2.70136121295141 4.66343909411207 3.43720781918519 4.13676527810605 4.43438186500781 6.91671502035361 2.65324196460721 2.06812778177956 1.04380405217311 +raf 4.254193263164 3.13983261752775 2.73436750941958 4.97673374242057 3.67882911826043 4.21803603456465 4.66343909411207 7.15070145759253 3.07731226054641 3.47196645255036 1.01523067972906 +raf 3.94931879017184 3.38099467434464 2.37024374146786 4.72738781871234 3.62434093297637 3.52636052461616 4.07414185490458 6.53958595561767 2.06812778177956 0.86288995514704 2.24812890719799 +raf 4.54223038621422 3.31054301339402 2.23964529322017 3.47196645255036 4.05698877567833 3.43720781918519 4.33598269617247 7.19593722647557 2.81540871942271 3.24649099190117 1.14103300455206 +raf 4.54223038621422 3.40784192438082 2.25758772706331 5.77455154554441 3.87743156065853 2.67414864942653 3.19458313229916 6.83625927727707 0.165514438477573 1.75440368268429 2.21266038546606 +raf 3.49953328238302 2.23108909128898 2.68102152871429 5.73979291217923 3.9926809084456 2.35137525716348 3.41772668361337 7.33953769540767 3.16547504814109 3.85014760171006 2.23964529322017 +raf 3.63495111208838 2.97552956623647 2.84490938381941 4.5152454784601 3.25424296870549 3.43720781918519 3.80443779474821 6.33150184989369 1.10525683138678 2.90690105984738 2.71469474382088 +raf 3.81330703248899 3.32862668882732 3.27336401015227 4.91265488573605 3.93963817246112 2.14943391349987 3.07731226054641 6.12468339089421 3.37416870927424 3.72328088083127 2.57261223020711 +raf 4.65396035015752 4.38949864951258 2.06812778177956 5.43372200355424 3.74242022104197 1.69009581545155 3.13113691056019 7.22256601882217 2.37954613413017 2.98568193770049 0.254642218373581 +raf 4.31748811353631 3.4626060097908 2.51769647261099 4.77912349311153 3.49953328238302 3.4626060097908 3.67882911826043 6.00881318544259 3.48124008933569 3.27336401015227 2.31253542384721 +raf 4.58700621536042 3.06805293513362 2.484906649788 5.96357934361845 3.89385903480047 2.64617479738412 3.19458313229916 6.7093043402583 2.90690105984738 4.12874598893943 3.39114704580865 +raf 4.36182392735636 3.21084365317094 2.19499988231411 4.70953020131233 3.79548918917219 2.14943391349987 2.96010509591084 6.92559519711047 2.1770218700187 2.82137888640921 2.12226153886276 +raf 4.99043258677874 3.43720781918519 2.4423470353692 4.85981240436167 4.03777421073371 3.85862222870103 4.99043258677874 7.45645455517621 1.59127394180643 1.45628673293993 3.05870707271538 +raf 2.67414864942653 2.56494935746154 2.16791018966744 3.06805293513362 3.31054301339402 1.7630170003624 3.6609942506244 7.09672137849476 3.39114704580865 4.14630430115281 4.05698877567833 +raf 4.79579054559674 3.51749783735832 3.10458667846607 5.41610040220442 4.28082412916472 4.71849887129509 5.37989735354046 7.22256601882217 0.494696241836107 3.18221184049661 1.33236601909433 +raf 4.49758497530815 3.4904285153901 2.83321334405622 3.16547504814109 3.55248682920838 3.6163087612791 3.90399083373088 6.13339804299665 3.13113691056019 3.37416870927424 2.2935443483419 +raf 3.44361809754611 2.57261223020711 2.7408400239252 5.03043792139244 3.29953372788566 2.73436750941958 3.03974915897077 5.8636311755981 2.18605127673809 2.56494935746154 1.52822785700856 +raf 3.32862668882732 2.87919845729804 2.4423470353692 5.11799381241676 3.11351530921037 1.53901544813755 2.98568193770049 6.92559519711047 3.29953372788566 3.6609942506244 2.81540871942271 +raf 4.0926765051214 2.79728133483015 3.23867845216438 6.70073110954781 4.66343909411207 3.15700042115011 3.9926809084456 6.78219205600679 2.96010509591084 3.38099467434464 1.95160817016995 +raf 3.79548918917219 3.03013370027132 2.21266038546606 4.8283137373023 3.00568260440716 2.32238772029023 3.13113691056019 5.80211837537706 2.9704144655697 2.83321334405622 2.24812890719799 +raf 4.44382703557933 3.13113691056019 3.15700042115011 5.45958551414416 4.36182392735636 3.51749783735832 4.07414185490458 6.19644412779452 2.09556092355972 1.80828877117927 1.65441127807683 +raf 5.25227342804663 4.43438186500781 0 6.61069604471776 3.2188758248682 3.42751468997953 3.7864597824528 6.84481547920826 2.92316158071916 3.09557760852371 1.10525683138678 +raf 4.66343909411207 3.13113691056019 2.64617479738412 6.1527326947041 4.46129981556839 3.03974915897077 3.53514535417189 6.29526600143965 2.3887627892351 3.02042488614436 1.88858365386359 +raf 3.69635146895264 2.97552956623647 2.83321334405622 4.38077585277223 3.66867674679642 3.51749783735832 4.7361984483945 7.81601383915903 3.13983261752775 3.55248682920838 2.39789527279837 +raf 4.01998014693324 3.90399083373088 2.19499988231411 4.95582705760126 3.37416870927424 2.99573227355399 3.75887182593397 6.54821910276237 2.66025953726586 2.71469474382088 2.41591377830105 +raf 3.81330703248899 3.37416870927424 3.16547504814109 2.9338568698359 2.86220088092947 3.49953328238302 4.05698877567833 6.35957386867238 1.34025042261848 1.96009478404727 1.8531680973567 +raf 4.68213122712422 4.38077585277223 2.9391619220656 3.58073729549423 2.87919845729804 1.69009581545155 2.12226153886276 4.20020495292158 2.58776403522771 3.38099467434464 2.60268968544438 +raf 4.68213122712422 3.93963817246112 2.60268968544438 5.12396397940326 3.20274644293832 1.86252854011626 2.83321334405622 6.07993319509559 2.7408400239252 3.3178157727231 1.78170913337455 +raf 4.0926765051214 2.94968833505258 2.43361335540045 5.21493575760899 3.54385368206368 2.96010509591084 4.11087386417331 7.1777824161952 1.96990565461153 2.37954613413017 2.34180580614733 +raf 4.24563400976833 3.10458667846607 2.76000994003292 3.56104608260405 2.25758772706331 2.25758772706331 3.45315712059287 6.87212810133899 2.68102152871429 3.34638914516716 2.19499988231411 +raf 4.44382703557933 3.3178157727231 2.88480071284671 5.12396397940326 2.52572864430826 2.72785282839839 3.6609942506244 6.25190388316589 3.29212628660779 3.59731226058845 2.04122032885964 +raf 4.78749174278205 3.87743156065853 3.26575941076705 5.77455154554441 4.62497281328427 2.13179677201376 2.79116510781272 6.5206211275587 3.43720781918519 3.65065824129374 2.46809953147162 +raf 5.01727983681492 3.79548918917219 3.73289633953071 4.14630430115281 4.31748811353631 2.77258872223978 3.20274644293832 5.99893656194668 3.44361809754611 3.37416870927424 3.23867845216438 +raf 4.78749174278205 4.59612944133594 2.4423470353692 4.0926765051214 3.25424296870549 3.37416870927424 3.79548918917219 5.84643877505772 3.2188758248682 3.65065824129374 1.86252854011626 +raf 4.87519732320115 4.74493212836325 2.33214389523559 4.90527477843843 4.01096295328305 2.2935443483419 2.98568193770049 6.39526159811545 2.50959926237837 2.23964529322017 2.68784749378469 +raf 4.89034912822175 4.04830062372069 2.70805020110221 5.40717177146012 3.80443779474821 2.66025953726586 3.14845336057165 5.95324333428778 2.77258872223978 3.24649099190117 2.58776403522771 +raf 4.66343909411207 3.56953269648137 3.04927304048202 5.34233425196481 3.75185425327532 3.20274644293832 4.47960696301275 8.28399930424853 2.60268968544438 2.70805020110221 0 +raf 3.13113691056019 2.88480071284671 2.32238772029023 4.45201900649392 3.98527346716774 3.96651119071222 4.46129981556839 6.70073110954781 2.37954613413017 2.31253542384721 0.845868267577609 +raf 3.58073729549423 2.82137888640921 2.37954613413017 5.10594547390058 3.41772668361337 2.53369681395743 2.50959926237837 5.51342874616498 2.27521389619791 2.58776403522771 2.35137525716348 +raf 3.85014760171006 3.80443779474821 2.75366071235426 3.26575941076705 3.71357206670431 2.75366071235426 3.40119738166216 5.96357934361845 3.03974915897077 3.13983261752775 2.42480272571829 +raf 3.6609942506244 3.29212628660779 3.29212628660779 3.45315712059287 3.85014760171006 3.2846635654062 4.11087386417331 7.04228617193974 2.86220088092947 3.52636052461616 0 +raf 4.00186370942794 3.34638914516716 2.53369681395743 5.52146091786225 3.41772668361337 3.20274644293832 3.56104608260405 5.96357934361845 2.57261223020711 3.4904285153901 2.4423470353692 +raf 3.8416005411316 3.01553490085017 3.53514535417189 5.5683445037611 4.15575319035074 2.42480272571829 3.16547504814109 5.54126354515843 2.58021682959233 3.02042488614436 1.44926916028128 +raf 4.36182392735636 3.4904285153901 2.26695791535089 5.29831736654804 3.90399083373088 3.17387845893747 3.4626060097908 5.35185813347607 2.62466859216316 2.65324196460721 2.43361335540045 +raf 3.89385903480047 3.21084365317094 2.3887627892351 3.36384159511839 2.99573227355399 3.71357206670431 4.36182392735636 6.91671502035361 2.58776403522771 3.16547504814109 2.33214389523559 +raf 4.0842942263686 2.90690105984738 2.82137888640921 3.36384159511839 2.46809953147162 3.54385368206368 3.8308129500026 5.92692602597041 2.87919845729804 3.17387845893747 2.66025953726586 +raf 4.69134788222914 3.64283551561253 1.41098697371026 5.28826703069454 3.23080439573347 1.84371920815877 2.15871472257434 6.67329796776765 3.4626060097908 3.62434093297637 1.45628673293993 +raf 4.36182392735636 4.33598269617247 1.75440368268429 0.802001585472027 0.113328685307003 1.6094379124341 2.37954613413017 6.38687931936265 2.89591193827178 2.86789890204411 2.62466859216316 +raf 3.66867674679642 2.50959926237837 2.58021682959233 4.85981240436167 3.48124008933569 2.35137525716348 3.31054301339402 6.46769872610435 3.76815263500844 4.254193263164 2.86220088092947 +raf 4.48863636973214 3.55248682920838 2.02419306744936 5.68357976733868 3.92986292355648 1.57484646766448 2.94968833505258 6.47543271670409 3.69635146895264 4.18205014264121 3.14845336057165 +raf 4.30811095172371 2.87919845729804 2.57261223020711 3.08648663682246 3.20274644293832 1.92424865227413 3.05870707271538 6.49375383985169 2.3887627892351 2.71469474382088 0.989541193613748 +raf 3.85862222870103 3.13113691056019 3.2846635654062 3.41772668361337 3.6163087612791 1.32175583998232 3.26575941076705 5.63835466933375 2.66025953726586 3.63495111208838 0.99694863489161 +raf 4.10098910494077 3.21084365317094 2.58776403522771 2.92316158071916 3.9759363311718 2.20386912005489 3.44361809754611 6.21460809842219 3.12236492448736 2.72785282839839 2.05027016437956 +raf 4.38949864951258 3.03974915897077 3.08648663682246 2.70805020110221 0.756121979721334 3.2846635654062 3.62434093297637 6.02586597382531 2.54160199346455 2.86220088092947 1.6467336971778 +raf 3.06805293513362 2.89591193827178 2.47653840011748 3.36384159511839 2.54160199346455 2.50959926237837 3.08648663682246 5.72031177660741 1.84371920815877 0.908258560176891 2.06812778177956 +raf 5.24174701505964 4.11087386417331 3.4904285153901 4.44382703557933 4.47049528266149 1.53901544813755 2.3887627892351 6.85329909318608 2.64617479738412 2.57261223020711 0.609765571620894 +raf 3.45315712059287 2.82137888640921 3.67882911826043 5.82894561761021 4.45201900649392 3.90399083373088 4.43438186500781 7.27655640271871 2.77258872223978 2.98568193770049 2.1770218700187 +raf 4.74493212836325 3.60549784517489 0 6.07073772800249 3.65065824129374 1.80828877117927 3.13983261752775 6.26909628370626 2.80336038090653 3.40119738166216 1.94304891677428 +raf 4.7361984483945 4.0842942263686 2.97552956623647 2.33214389523559 4.65396035015752 3.59731226058845 4.3267781604434 6.98007594056176 0.86288995514704 0.828551817566148 2.19499988231411 +raf 2.88480071284671 3.23080439573347 2.4932054526027 4.16511363311031 3.23080439573347 2.58776403522771 3.29212628660779 6.04500531403601 2.53369681395743 3.31054301339402 1.56444054650336 +raf 3.66867674679642 2.67414864942653 2.53369681395743 5.61312810638807 3.98527346716774 2.34180580614733 2.37954613413017 6.57507584059962 2.73436750941958 3.44361809754611 2.61739583283408 +raf 4.83628190695148 4.95582705760126 2.94968833505258 5.09375020080676 2.71469474382088 3.29212628660779 3.6609942506244 6.36818718635049 0.542324290825362 2.57261223020711 2.50959926237837 +raf 3.58073729549423 3.12236492448736 2.91235066461494 4.56017282005736 2.77258872223978 3.15700042115011 3.81330703248899 5.94542060860658 3.11351530921037 3.35340671782581 2.80336038090653 +raf 5.33271879326537 4.03777421073371 2.63188884013665 4.91998092582813 2.58776403522771 3.9759363311718 4.80402104473326 7.08757370555797 3.07731226054641 3.66867674679642 2.67414864942653 +raf 4.12874598893943 3.3178157727231 3.15700042115011 3.90399083373088 3.65065824129374 3.19458313229916 4.04830062372069 6.85329909318608 3.02042488614436 2.36085400111802 2.68102152871429 +raf 4.61512051684126 3.66867674679642 1.82616089594539 5.33271879326537 3.08648663682246 2.9338568698359 3.3357695763397 5.89989735358249 3.00568260440716 3.45315712059287 2.58021682959233 +raf 2.71469474382088 2.68784749378469 1.84371920815877 2.11384296839717 2.79728133483015 2.84490938381941 3.13113691056019 6.00881318544259 2.71469474382088 3.13113691056019 1.4036429994545 +raf 4.65396035015752 4.65396035015752 2.43361335540045 4.95582705760126 3.82209829790016 2.7408400239252 3.56104608260405 6.47543271670409 1.02604159583327 0.00995033085316809 1.18784342239605 +raf 4.13676527810605 3.50855589998265 2.45958884180371 4.77912349311153 3.79548918917219 3.20274644293832 3.96651119071222 7.99598047476376 2.62466859216316 3.07731226054641 1.53901544813755 +raf 3.41772668361337 3.32862668882732 3.20274644293832 3.55248682920838 2.61006979274201 2.54160199346455 4.21803603456465 4.81218435537242 2.50143595173921 2.71469474382088 2.24812890719799 +raf 1.79009141212736 2.96010509591084 2.02419306744936 5.37063802812766 3.56104608260405 3.40119738166216 3.4626060097908 5.6937321388027 2.82137888640921 2.92316158071916 1.83418018511201 +raf 2.1770218700187 1.60140574073684 3.23867845216438 2.05027016437956 3.75185425327532 3.04927304048202 3.43720781918519 5.98141421125448 4.00186370942794 4.99043258677874 4.24563400976833 +raf 3.6163087612791 3.03974915897077 2.39789527279837 4.96284463025991 3.37416870927424 1.03318448334565 3.24649099190117 6.55677835615804 3.3178157727231 3.54385368206368 2.19499988231411 +raf 2.79116510781272 2.24812890719799 2.24812890719799 3.24649099190117 3.21084365317094 2.51769647261099 3.13113691056019 5.6021188208797 3.42751468997953 3.43720781918519 2.84490938381941 +raf 3.20274644293832 3.58073729549423 2.03339760317843 4.47049528266149 2.79116510781272 2.2935443483419 2.86220088092947 6.74641212857337 2.86220088092947 2.90690105984738 2.3887627892351 +raf 4.3267781604434 3.04927304048202 3.32862668882732 4.41642806139121 3.86702563949741 3.11351530921037 3.56953269648137 5.50533153593236 3.24649099190117 3.77734810210154 2.34180580614733 +raf 4.38949864951258 3.52636052461616 2.40694510831829 6.60258789218934 4.29045944114839 3.64283551561253 4.20020495292158 5.82894561761021 1.45628673293993 1.84371920815877 3.11351530921037 +raf 3.49953328238302 2.41591377830105 2.76000994003292 5.03695260241363 3.13983261752775 3.43720781918519 4.11903717481247 6.63856778916652 2.86789890204411 3.08648663682246 2.65324196460721 +raf 3.50855589998265 2.75366071235426 3.06805293513362 3.13983261752775 1.88858365386359 1.41098697371026 3.3178157727231 6.36818718635049 3.02042488614436 3.16547504814109 2.35137525716348 +raf 3.53514535417189 2.79728133483015 2.86789890204411 4.02891675689965 3.85014760171006 1.79009141212736 2.36085400111802 5.37063802812766 3.75887182593397 4.22683374526818 2.89591193827178 +raf 3.80443779474821 3.01553490085017 2.21266038546606 5.15329159449778 3.77734810210154 2.07819075977818 2.57261223020711 6.05443934626937 3.39114704580865 3.8416005411316 2.72785282839839 +raf 3.59731226058845 2.79116510781272 2.2935443483419 5.05624580534831 3.81330703248899 2.26695791535089 2.4423470353692 6.4393503711001 1.05082162483176 0 2.36085400111802 +raf 4.92725368515721 3.66867674679642 3.39114704580865 3.65065824129374 3.32862668882732 2.84490938381941 3.45315712059287 6.16961073249146 2.46809953147162 3.20274644293832 1.99741770620125 +raf 4.22683374526818 3.54385368206368 2.37024374146786 5.33271879326537 3.96651119071222 2.62466859216316 3.13113691056019 5.74620319054015 2.86789890204411 2.51769647261099 2.24812890719799 +raf 2.61739583283408 2.01490302054226 3.29953372788566 3.94931879017184 3.59731226058845 2.73436750941958 3.6163087612791 6.89871453432999 3.87743156065853 3.94931879017184 2.61006979274201 +raf 4.3267781604434 3.80443779474821 2.65324196460721 4.96284463025991 3.60549784517489 1.19694818938897 3.55248682920838 7.09672137849476 2.90690105984738 3.4904285153901 2.37024374146786 +raf 3.58073729549423 3.60549784517489 2.41591377830105 4.90527477843843 4.39814601655377 2.70805020110221 3.21084365317094 6.63856778916652 2.54160199346455 3.53514535417189 2.86789890204411 +raf 4.24563400976833 3.35340671782581 2.14943391349987 2.76000994003292 3.6163087612791 2.12226153886276 3.12236492448736 6.07993319509559 3.44361809754611 3.88567903008854 3.89385903480047 +raf 4.22683374526818 3.67882911826043 1.33236601909433 2.94968833505258 3.39114704580865 2.05027016437956 2.9338568698359 5.66642668811243 1.33236601909433 1.32175583998232 3.23080439573347 +raf 3.6609942506244 2.77258872223978 2.4932054526027 4.87519732320115 3.56104608260405 2.27521389619791 3.23867845216438 5.89164421182577 2.9704144655697 3.15700042115011 2.54160199346455 +raf 3.56104608260405 3.39114704580865 3.3357695763397 4.03777421073371 2.64617479738412 2.70805020110221 2.99573227355399 6.45833828334479 2.65324196460721 3.15700042115011 2.62466859216316 +raf 3.39114704580865 3.00568260440716 2.04122032885964 4.8283137373023 3.58905911883173 1.87946504964716 2.75366071235426 6.21460809842219 2.9391619220656 3.2188758248682 1.5830939370945 +raf 4.11903717481247 3.17387845893747 2.90690105984738 4.47049528266149 2.86220088092947 2.98568193770049 3.25424296870549 5.54126354515843 3.54385368206368 3.91202300542815 2.53369681395743 +raf 4.85981240436167 3.75887182593397 2.85070650150373 4.13676527810605 3.71357206670431 3.55248682920838 4.28082412916472 6.43133108193348 2.13179677201376 2.77258872223978 1.74571553072665 +raf 4.5152454784601 3.3178157727231 0.0295588022415444 5.14749447681345 1.98787434815435 3.54385368206368 3.70622809244855 6.00881318544259 2.80336038090653 3.21084365317094 2.76000994003292 +raf 4.20020495292158 3.16547504814109 2.67414864942653 5.2257466737132 3.7864597824528 2.99573227355399 3.6163087612791 6.07993319509559 3.02042488614436 3.44361809754611 1.93441576962958 +raf 4.37071287477361 3.43720781918519 3.79548918917219 4.99043258677874 4.3528552573736 2.60268968544438 2.81540871942271 6.34035930372775 2.63188884013665 2.53369681395743 2.79116510781272 +raf 4.11087386417331 3.75185425327532 1.52822785700856 0.405465108108164 1.62727783056243 2.2213750375685 3.05870707271538 6.25958146406492 1.32175583998232 0.746687947487975 1.98787434815435 +raf 3.94931879017184 2.82137888640921 2.23964529322017 5.23644196282995 3.29212628660779 1.59127394180643 2.35137525716348 5.55682806169954 1.67335123817775 0 2.30258509299405 +raf 2.61739583283408 2.28442112236637 2.65324196460721 5.10594547390058 3.15700042115011 3.26575941076705 3.4904285153901 5.95324333428778 2.51769647261099 3.03974915897077 2.70136121295141 +raf 3.11351530921037 2.65324196460721 1.89761985992753 5.62040086571715 3.44361809754611 2.98568193770049 4.06560209335645 7.3125534981026 0.727548607277278 1.69009581545155 2.40694510831829 +raf 3.8308129500026 3.08648663682246 2.42480272571829 2.91235066461494 4.47960696301275 2.39789527279837 2.91235066461494 6.50279004591562 3.34638914516716 3.6609942506244 2.60268968544438 +raf 2.61739583283408 3.25424296870549 3.38099467434464 3.75887182593397 3.47196645255036 2.64617479738412 4.20916023665068 6.06145691892802 1.06125650212434 0.457424847038875 0.231111720963387 +raf 3.31054301339402 2.64617479738412 2.80336038090653 4.27249074760558 2.46809953147162 2.88480071284671 3.96651119071222 6.78219205600679 2.76000994003292 2.89591193827178 3.2188758248682 +raf 4.30000279919529 3.40119738166216 3.04927304048202 5.5683445037611 4.47049528266149 3.4626060097908 3.96651119071222 5.65599181081985 2.9391619220656 2.84490938381941 1.45628673293993 +raf 2.84490938381941 3.08648663682246 2.99573227355399 4.05698877567833 3.52636052461616 2.77258872223978 3.41772668361337 6.25958146406492 3.63495111208838 4.06560209335645 3.14845336057165 +raf 4.0842942263686 3.03013370027132 1.41098697371026 5.79301360838414 3.23867845216438 1.06125650212434 0.792992515529661 4.39814601655377 2.90690105984738 3.48124008933569 2.24812890719799 +raf 4.20916023665068 3.40784192438082 3.59731226058845 5.73979291217923 4.13676527810605 2.77258872223978 3.48124008933569 6.1527326947041 3.15700042115011 3.4904285153901 2.77258872223978 +raf 3.66867674679642 2.9391619220656 3.76815263500844 5.89164421182577 4.38077585277223 1.62727783056243 2.9391619220656 6.36818718635049 2.67414864942653 3.11351530921037 2.25758772706331 +raf 4.21803603456465 3.44361809754611 2.62466859216316 3.95699637107088 3.42751468997953 3.00568260440716 3.45315712059287 5.63121178182137 1.66392609771817 2.84490938381941 1.50185270175416 +raf 3.95699637107088 3.82209829790016 2.96010509591084 5.47646355193151 3.38099467434464 2.52572864430826 3.64283551561253 6.70073110954781 2.88480071284671 3.36384159511839 1.69927861643389 +raf 4.48863636973214 3.64283551561253 2.51769647261099 5.35185813347607 3.58905911883173 3.13983261752775 4.39814601655377 7.0335064842877 2.9704144655697 2.90690105984738 2.76000994003292 +raf 3.9926809084456 3.03013370027132 3.21084365317094 6.57507584059962 4.68213122712422 2.63188884013665 4.59612944133594 7.13249755166004 3.93963817246112 4.06560209335645 2.61739583283408 +raf 3.94931879017184 4.07414185490458 2.2935443483419 4.67282883446191 2.54160199346455 2.4932054526027 3.56104608260405 6.880384082186 2.9391619220656 3.32862668882732 2.42480272571829 +raf 3.44361809754611 2.34180580614733 2.35137525716348 4.67282883446191 3.63495111208838 2.9391619220656 3.53514535417189 6.05443934626937 2.72785282839839 2.08691355651854 1.10525683138678 +raf 4.24563400976833 3.54385368206368 2.98568193770049 3.53514535417189 2.88480071284671 0.576613364303994 0.00995033085316809 4.33598269617247 3.35340671782581 3.88567903008854 3.3357695763397 +raf 3.36384159511839 3.38099467434464 2.03339760317843 5.26269018890489 3.9926809084456 3.07731226054641 3.32862668882732 6.05443934626937 3.03013370027132 3.41772668361337 2.21266038546606 +raf 4.56017282005736 3.89385903480047 2.64617479738412 5.55682806169954 3.91202300542815 4.00186370942794 4.72738781871234 7.3038432252777 3.38099467434464 3.90399083373088 2.27521389619791 +raf 3.85862222870103 3.07731226054641 2.07819075977818 4.88280192258637 2.72785282839839 2.52572864430826 3.43720781918519 5.84643877505772 1.19694818938897 0.879626747502564 1.01523067972906 +raf 4.11903717481247 3.70622809244855 2.05027016437956 3.12236492448736 3.63495111208838 2.70805020110221 3.47196645255036 6.08904487544685 2.14124194258528 3.44361809754611 2.24812890719799 +raf 3.70622809244855 3.2188758248682 1.95160817016995 1.32175583998232 3.00568260440716 2.92316158071916 3.32862668882732 6.07073772800249 3.8416005411316 4.06560209335645 2.83321334405622 +raf 3.8308129500026 3.39114704580865 3.44361809754611 6.60258789218934 5.04342511691925 1.80828877117927 3.17387845893747 7.35755620091035 3.53514535417189 3.86702563949741 3.02042488614436 +raf 3.4904285153901 2.94968833505258 3.9759363311718 4.97673374242057 4.56954300834494 2.484906649788 3.13983261752775 6.29526600143965 3.14845336057165 3.52636052461616 1.56444054650336 +raf 4.54223038621422 3.14845336057165 2.65324196460721 3.86702563949741 3.82209829790016 2.50143595173921 3.87743156065853 8.02322468471667 2.55722731136763 3.19458313229916 2.04122032885964 +raf 4.20916023665068 3.50855589998265 4.21803603456465 6.03548143252476 4.92725368515721 2.77258872223978 3.20274644293832 5.99893656194668 2.89591193827178 3.19458313229916 1.37624402526639 +raf 3.6163087612791 2.46809953147162 1.4747630091075 2.89591193827178 3.44361809754611 3.72328088083127 4.3528552573736 7.14124512235049 3.03974915897077 3.65065824129374 2.41591377830105 +raf 3.64283551561253 3.11351530921037 2.86220088092947 6.09807428216624 4.91265488573605 1.12492959698548 2.54160199346455 6.66440902035041 2.9704144655697 3.51749783735832 2.76000994003292 +raf 3.03013370027132 3.12236492448736 2.7408400239252 4.71849887129509 2.97552956623647 3.87743156065853 4.80402104473326 7.27655640271871 2.73436750941958 2.83321334405622 2.9704144655697 +raf 2.61006979274201 2.61739583283408 1.69927861643389 1.78170913337455 2.68102152871429 3.27336401015227 3.9759363311718 7.3038432252777 2.94968833505258 3.64283551561253 2.11384296839717 +raf 5.15329159449778 5.26269018890489 2.37024374146786 5.66642668811243 4.01998014693324 3.29953372788566 3.86702563949741 7.35755620091035 3.03974915897077 3.47196645255036 1.90657514365664 +raf 2.68784749378469 2.92316158071916 4.14630430115281 5.26269018890489 4.00186370942794 3.52636052461616 4.16511363311031 6.49375383985169 3.23080439573347 3.70622809244855 0.27002713721306 +raf 4.31748811353631 3.2188758248682 2.36085400111802 5.19849703126583 3.75887182593397 1.81645208181843 3.13113691056019 7.38461038317697 2.79728133483015 3.38099467434464 2.41591377830105 +raf 4.45201900649392 4.20916023665068 2.36085400111802 5.24174701505964 3.69635146895264 2.68784749378469 3.35340671782581 5.80211837537706 1.10525683138678 0.27002713721306 2.60268968544438 +raf 4.47049528266149 3.79548918917219 2.23108909128898 3.08648663682246 3.76815263500844 1.01523067972906 2.46809953147162 6.73696695800186 2.84490938381941 3.55248682920838 2.61006979274201 +raf 3.64283551561253 3.19458313229916 1.96990565461153 5.37989735354046 3.39114704580865 2.61006979274201 3.23080439573347 6.19644412779452 3.42751468997953 3.75185425327532 3.13983261752775 +raf 3.64283551561253 3.18221184049661 2.83321334405622 4.52396013056255 3.6609942506244 3.24649099190117 3.58905911883173 6.46769872610435 0.727548607277278 3.36384159511839 4.18205014264121 +raf 3.68887945411394 2.50143595173921 1.82616089594539 5.30826769740121 3.12236492448736 4.36182392735636 4.79579054559674 7.07834157955767 3.3357695763397 3.52636052461616 2.61739583283408 +raf 4.3528552573736 3.03974915897077 2.98568193770049 2.91235066461494 2.4423470353692 2.81540871942271 3.64283551561253 6.04500531403601 3.2188758248682 3.10458667846607 3.04927304048202 +raf 4.30811095172371 3.39114704580865 0.357674444271816 5.35185813347607 3.53514535417189 2.60268968544438 3.3178157727231 5.99893656194668 0.657520002916794 1.25846098961001 1.87946504964716 +raf 3.73289633953071 3.00568260440716 3.77734810210154 5.84643877505772 4.7361984483945 2.87919845729804 3.85014760171006 7.39326309476384 3.59731226058845 4.39814601655377 4.37071287477361 +raf 3.89385903480047 3.09557760852371 2.61739583283408 4.83628190695148 3.13983261752775 2.3887627892351 3.47196645255036 6.19644412779452 3.03013370027132 3.15700042115011 2.24812890719799 +raf 3.91202300542815 3.29953372788566 2.9338568698359 4.39814601655377 3.71357206670431 2.42480272571829 3.43720781918519 6.33150184989369 3.13113691056019 3.05870707271538 0 +raf 3.37416870927424 3.82209829790016 2.89591193827178 5.07517381523383 2.9338568698359 2.67414864942653 2.80336038090653 6.07993319509559 2.88480071284671 3.53514535417189 2.56494935746154 +raf 4.38949864951258 3.60549784517489 0 6.11589212548303 4.21803603456465 2.4932054526027 3.51749783735832 6.31354804627709 2.84490938381941 2.80336038090653 1.4655675420144 +raf 4.18205014264121 3.47196645255036 2.00552585872967 2.61739583283408 2.23964529322017 2.70136121295141 3.3357695763397 6.40357419793482 2.86220088092947 3.3357695763397 1.48387468945875 +raf 5.18738580584075 4.01998014693324 2.79116510781272 4.38949864951258 3.3178157727231 1.50185270175416 2.9391619220656 7.09672137849476 3.40119738166216 3.47196645255036 2.64617479738412 +raf 3.52636052461616 3.18221184049661 2.33214389523559 5.15329159449778 3.71357206670431 2.32238772029023 3.13983261752775 5.95324333428778 3.11351530921037 3.34638914516716 2.35137525716348 +raf 4.01998014693324 3.56953269648137 3.93963817246112 5.31811999384422 3.76815263500844 2.51769647261099 2.65324196460721 5.97126183979046 0.378436435720245 0.727548607277278 2.61739583283408 +raf 4.38949864951258 3.59731226058845 0.322083499169113 4.68213122712422 2.77258872223978 2.35137525716348 3.08648663682246 6.21460809842219 3.03013370027132 3.18221184049661 2.47653840011748 +raf 3.44361809754611 3.4904285153901 2.63188884013665 5.23644196282995 3.59731226058845 2.15871472257434 3.26575941076705 6.62007320653036 2.90690105984738 3.51749783735832 2.16791018966744 +raf 3.90399083373088 3.47196645255036 3.86702563949741 6.18826412308259 4.55071400019203 3.07731226054641 3.47196645255036 6.29526600143965 2.98568193770049 3.71357206670431 2.53369681395743 +raf 5.11799381241676 4.37071287477361 2.60268968544438 3.18221184049661 2.68784749378469 3.06805293513362 3.37416870927424 6.02586597382531 0 0 1.95160817016995 +raf 4.27249074760558 3.92986292355648 3.88567903008854 4.53367418428302 4.01998014693324 2.2935443483419 3.34638914516716 6.22455842927536 2.50143595173921 2.39789527279837 0.62057648772511 +raf 4.19116874685764 3.85862222870103 3.21084365317094 4.83628190695148 3.89385903480047 3.15700042115011 3.90399083373088 6.51174532964473 0 2.36085400111802 0.99694863489161 +raf 3.96651119071222 2.68102152871429 2.60268968544438 5.00394630594546 3.81330703248899 2.7408400239252 3.23867845216438 5.95324333428778 3.08648663682246 3.11351530921037 2.72785282839839 +raf 4.81218435537242 3.31054301339402 2.16791018966744 5.61312810638807 3.15700042115011 3.56104608260405 4.95582705760126 7.54644627374602 3.29212628660779 3.85862222870103 1.51951320490611 +raf 3.85862222870103 3.11351530921037 1.89761985992753 5.57594910314632 3.38099467434464 1.71739505393919 3.29212628660779 6.81783057145415 2.60268968544438 3.08648663682246 2.88480071284671 +raf 3.06805293513362 2.89591193827178 0.00995033085316809 6.54821910276237 4.01998014693324 3.08648663682246 3.51749783735832 6.12468339089421 3.06805293513362 3.03013370027132 1.87946504964716 +raf 3.74242022104197 2.60268968544438 3.15700042115011 3.56104608260405 3.27336401015227 2.86789890204411 3.56953269648137 6.45833828334479 3.09557760852371 3.47196645255036 2.16791018966744 +raf 2.26695791535089 2.77881927199042 2.71469474382088 5.46806014113513 3.2188758248682 2.60268968544438 3.2188758248682 5.7037824746562 3.12236492448736 2.85070650150373 0.631271776841858 +raf 3.36384159511839 3.06805293513362 3.69635146895264 5.90808293816893 4.70953020131233 3.09557760852371 3.54385368206368 5.91889385427315 3.01553490085017 3.37416870927424 1.79840401194672 +raf 4.54223038621422 3.79548918917219 2.55722731136763 5.37989735354046 3.25424296870549 2.90690105984738 3.66867674679642 6.03548143252476 3.03974915897077 3.23080439573347 2.02419306744936 +raf 4.24563400976833 3.03974915897077 2.37954613413017 5.07517381523383 3.58073729549423 1.99741770620125 2.61006979274201 6.11589212548303 3.63495111208838 3.58073729549423 2.79116510781272 +raf 3.73289633953071 2.68102152871429 3.51749783735832 6.19644412779452 4.63472898822964 3.59731226058845 4.10098910494077 5.76519110278484 3.2846635654062 3.20274644293832 2.00552585872967 +raf 2.484906649788 3.05870707271538 3.00568260440716 4.39814601655377 2.84490938381941 2.31253542384721 3.21084365317094 6.13339804299665 3.29953372788566 3.66867674679642 2.2213750375685 +raf 3.43720781918519 3.17387845893747 2.28442112236637 5.18738580584075 3.55248682920838 4.16511363311031 4.96284463025991 6.91671502035361 2.85070650150373 2.99573227355399 1.48387468945875 +raf 4.12874598893943 3.40784192438082 2.58776403522771 5.32300997913841 3.03974915897077 3.86702563949741 4.29045944114839 6.94408720822953 3.2188758248682 3.37416870927424 0.559615787935423 +raf 2.70136121295141 2.82137888640921 2.47653840011748 4.67282883446191 3.85014760171006 2.80336038090653 3.88567903008854 6.34035930372775 3.07731226054641 3.49953328238302 2.18605127673809 +raf 3.52636052461616 3.14845336057165 2.36085400111802 5.28826703069454 3.34638914516716 2.71469474382088 3.40119738166216 6.8001700683022 2.86789890204411 3.05870707271538 2.33214389523559 +raf 4.23700086262362 2.96010509591084 2.24812890719799 5.66642668811243 3.24649099190117 2.35137525716348 2.76000994003292 6.02586597382531 2.89591193827178 2.79728133483015 2.58021682959233 +raf 3.92986292355648 3.03013370027132 2.06812778177956 4.96284463025991 2.91235066461494 3.60549784517489 4.42484663185681 6.92559519711047 3.80443779474821 4.18205014264121 3.20274644293832 +raf 3.6609942506244 3.29953372788566 1.53901544813755 1.86252854011626 2.58021682959233 2.4423470353692 3.66867674679642 6.13339804299665 2.77258872223978 2.99573227355399 1.97823903617067 +raf 4.47960696301275 3.19458313229916 2.484906649788 5.41610040220442 4.01096295328305 3.24649099190117 4.33598269617247 7.24921505711439 3.64283551561253 3.93963817246112 2.53369681395743 +raf 4.67282883446191 3.9926809084456 3.10458667846607 4.64439089914137 0 2.4423470353692 2.90690105984738 6.25958146406492 3.06805293513362 3.19458313229916 2.16791018966744 +raf 4.00186370942794 3.31054301339402 2.66025953726586 5.4510384535657 3.76815263500844 1.7263316639056 2.50143595173921 6.37672694789863 3.04927304048202 3.29953372788566 2.11384296839717 +raf 2.34180580614733 1.51951320490611 2.13179677201376 4.66343909411207 3.40784192438082 1.65441127807683 3.06805293513362 7.07834157955767 3.07731226054641 3.69635146895264 2.37024374146786 +raf 4.0926765051214 2.11384296839717 2.43361335540045 3.93963817246112 3.13113691056019 3.94931879017184 4.59612944133594 6.97073007814353 2.98568193770049 3.55248682920838 3.17387845893747 +raf 4.61512051684126 3.23080439573347 2.37954613413017 4.03777421073371 3.58905911883173 3.40784192438082 4.70048036579242 7.43838353004431 2.61006979274201 3.40119738166216 2.35137525716348 +raf 2.68102152871429 3.36384159511839 1.96009478404727 3.9759363311718 1.79009141212736 2.06812778177956 2.84490938381941 6.09807428216624 2.14124194258528 3.38099467434464 2.73436750941958 +raf 4.96284463025991 4.20916023665068 2.41591377830105 6.55677835615804 4.56017282005736 0.99694863489161 3.00568260440716 6.49375383985169 2.66025953726586 3.11351530921037 0.00995033085316809 +raf 4.56954300834494 3.39114704580865 1.73518911773966 4.83628190695148 3.08648663682246 3.6163087612791 3.98527346716774 6.91671502035361 3.27336401015227 3.6609942506244 2.484906649788 +raf 4.63472898822964 4.49758497530815 2.58776403522771 5.11799381241676 3.7864597824528 2.90690105984738 3.14845336057165 6.21460809842219 0 0.0392207131532813 2.36085400111802 +raf 3.59731226058845 2.88480071284671 2.31253542384721 4.52396013056255 3.2846635654062 3.58073729549423 3.9759363311718 5.77455154554441 3.54385368206368 3.90399083373088 2.41591377830105 +raf 4.20020495292158 4.39814601655377 2.9704144655697 5.36129216570943 4.79579054559674 1.7630170003624 1.9154509415706 5.63121178182137 2.83321334405622 3.68887945411394 3.92197333628131 +raf 4.16511363311031 3.56104608260405 3.06805293513362 2.86789890204411 0.398776119957368 3.23867845216438 3.53514535417189 5.78382518232974 3.18221184049661 3.62434093297637 2.64617479738412 +raf 4.70048036579242 3.52636052461616 0.89199803930511 1.57484646766448 7.15070145759253 3.15700042115011 3.32862668882732 6.22455842927536 3.06805293513362 3.15700042115011 2.68784749378469 +raf 3.13983261752775 3.40784192438082 2.30258509299405 5.99893656194668 4.3267781604434 3.16547504814109 3.59731226058845 5.96357934361845 2.97552956623647 3.51749783735832 1.87946504964716 +raf 4.97673374242057 3.48124008933569 2.89591193827178 4.66343909411207 3.42751468997953 1.39376637595859 2.7408400239252 6.67329796776765 3.40784192438082 3.69635146895264 2.60268968544438 +raf 3.88567903008854 2.85070650150373 1.95160817016995 3.4904285153901 4.5152454784601 3.03013370027132 3.75185425327532 5.82894561761021 3.80443779474821 4.16511363311031 2.91235066461494 +raf 2.9338568698359 2.58776403522771 1.4747630091075 5.8636311755981 2.88480071284671 2.14124194258528 3.00568260440716 6.23244801655052 1.26694760348732 0.00995033085316809 0.182321556793955 +raf 4.16511363311031 3.43720781918519 1.14103300455206 5.34233425196481 3.26575941076705 3.34638914516716 3.51749783735832 5.72031177660741 3.24649099190117 3.45315712059287 2.9704144655697 +raf 3.56104608260405 2.94968833505258 2.58776403522771 5.31811999384422 2.99573227355399 2.05027016437956 2.36085400111802 6.14418563412565 1.75440368268429 2.77258872223978 1.9154509415706 +raf 3.39114704580865 3.13113691056019 3.39114704580865 3.89385903480047 3.35340671782581 2.52572864430826 2.61739583283408 6.66440902035041 2.83321334405622 2.70136121295141 2.32238772029023 +raf 3.96651119071222 2.65324196460721 2.51769647261099 4.88280192258637 3.49953328238302 3.75185425327532 4.58700621536042 6.62007320653036 3.21084365317094 3.7864597824528 3.38099467434464 +raf 3.52636052461616 2.87919845729804 3.03974915897077 5.51342874616498 3.50855589998265 1.56444054650336 2.60268968544438 6.61069604471776 3.2846635654062 3.59731226058845 2.72785282839839 +raf 3.75887182593397 2.67414864942653 2.64617479738412 3.92986292355648 3.19458313229916 3.48124008933569 3.92197333628131 5.84643877505772 3.03974915897077 3.55248682920838 1.38629436111989 +raf 3.50855589998265 3.31054301339402 3.98527346716774 4.04830062372069 3.48124008933569 3.7864597824528 4.55071400019203 7.52833176670725 2.60268968544438 3.39114704580865 2.75366071235426 +raf 4.70953020131233 3.64283551561253 2.77881927199042 5.57594910314632 4.18205014264121 3.2188758248682 3.49953328238302 6.07993319509559 0 1.34807314829969 1.63705307946707 +raf 4.43438186500781 3.40784192438082 2.60268968544438 5.13579843705026 3.73289633953071 2.40694510831829 3.2188758248682 6.07993319509559 3.12236492448736 3.56953269648137 2.37954613413017 +raf 3.63495111208838 3.03974915897077 2.55722731136763 4.48863636973214 2.9704144655697 3.38099467434464 3.65065824129374 5.31811999384422 3.64283551561253 3.8308129500026 2.46809953147162 +raf 4.16511363311031 3.53514535417189 2.07819075977818 5.45958551414416 3.18221184049661 3.11351530921037 3.62434093297637 5.73979291217923 3.00568260440716 3.12236492448736 2.20386912005489 +raf 3.79548918917219 3.09557760852371 0.357674444271816 5.73009978297357 3.35340671782581 3.11351530921037 4.62497281328427 6.90775527898214 3.3357695763397 3.63495111208838 2.08691355651854 +raf 3.60549784517489 3.03013370027132 3.18221184049661 3.8416005411316 0.231111720963387 2.70805020110221 3.3357695763397 6.35957386867238 3.06805293513362 3.40119738166216 2.36085400111802 +raf 4.70953020131233 3.75887182593397 1.90657514365664 5.44241771052179 3.41772668361337 3.29212628660779 3.3357695763397 5.80211837537706 2.77258872223978 3.07731226054641 2.19499988231411 +raf 3.75185425327532 2.79116510781272 0.819779831493311 5.6021188208797 2.88480071284671 2.20386912005489 3.16547504814109 6.28785856016178 3.29953372788566 3.71357206670431 2.65324196460721 +raf 2.52572864430826 3.47196645255036 1.93441576962958 5.4971682252932 3.29212628660779 2.37954613413017 3.11351530921037 5.90808293816893 1.99741770620125 2.76000994003292 2.56494935746154 +raf 3.3357695763397 3.41772668361337 0.989541193613748 5.47646355193151 2.76000994003292 1.82616089594539 2.96010509591084 6.67329796776765 2.99573227355399 3.75185425327532 1.14103300455206 +raf 4.42484663185681 4.31748811353631 2.70136121295141 5.21493575760899 3.34638914516716 3.15700042115011 3.74242022104197 6.06145691892802 3.4904285153901 3.71357206670431 2.47653840011748 +raf 4.47049528266149 3.66867674679642 4.01998014693324 5.7037824746562 4.71849887129509 2.77881927199042 3.66867674679642 7.68109900153636 2.68102152871429 2.71469474382088 1.16938135955632 +raf 3.38099467434464 3.39114704580865 2.83321334405622 5.76519110278484 4.00186370942794 3.49953328238302 3.81330703248899 5.94542060860658 2.90690105984738 2.92316158071916 2.09556092355972 +raf 3.89385903480047 3.11351530921037 2.33214389523559 5.0998664278242 3.70622809244855 2.85070650150373 3.29953372788566 6.03548143252476 3.12236492448736 3.14845336057165 2.01490302054226 +raf 4.80402104473326 4.44382703557933 3.8308129500026 5.37063802812766 3.82209829790016 3.02042488614436 3.58073729549423 6.35957386867238 3.29212628660779 3.12236492448736 2.40694510831829 +raf 3.3357695763397 2.87919845729804 0.631271776841858 5.41610040220442 3.05870707271538 2.92316158071916 3.51749783735832 5.68357976733868 3.44361809754611 3.70622809244855 3.03013370027132 +raf 2.96010509591084 2.85070650150373 1.63705307946707 2.484906649788 3.06805293513362 2.52572864430826 3.40784192438082 6.18001665365257 2.88480071284671 3.15700042115011 2.67414864942653 +raf 1.2947271675944 2.3887627892351 2.73436750941958 4.04830062372069 2.83321334405622 1.93441576962958 3.02042488614436 6.1527326947041 1.02604159583327 0.00995033085316809 1.45628673293993 +raf 3.23867845216438 0.22314355131421 2.70805020110221 5.43372200355424 4.0926765051214 2.67414864942653 3.23080439573347 5.59471137960184 3.31054301339402 3.58073729549423 3.3178157727231 +raf 3.44361809754611 3.12236492448736 3.25424296870549 5.73979291217923 3.85014760171006 4.16511363311031 4.90527477843843 7.79811262882979 3.11351530921037 3.39114704580865 2.70805020110221 +raf 2.81540871942271 1.68268837417369 2.23108909128898 5.06259503302697 3.94931879017184 1.69009581545155 3.03974915897077 6.880384082186 2.90690105984738 3.39114704580865 2.01490302054226 +raf 4.27249074760558 2.9704144655697 3.82209829790016 6.16120732169508 4.68213122712422 3.64283551561253 5.00394630594546 7.28550654852279 3.29212628660779 3.72328088083127 2.24812890719799 +raf 3.62434093297637 2.33214389523559 1.81645208181843 5.03043792139244 3.40119738166216 2.86789890204411 3.44361809754611 6.09807428216624 2.87919845729804 3.03013370027132 2.68784749378469 +raf 1.24126858906963 0.385262400790645 2.97552956623647 4.29045944114839 3.35340671782581 3.95699637107088 4.77068462446567 7.4205789054108 2.1770218700187 2.79728133483015 2.04122032885964 +raf 3.55248682920838 3.05870707271538 3.25424296870549 7.06987412845857 5.27811465923052 3.43720781918519 3.74242022104197 5.73979291217923 3.03013370027132 3.21084365317094 2.3887627892351 +raf 3.17387845893747 2.87919845729804 1.18784342239605 0.542324290825362 1.4655675420144 3.40784192438082 3.91202300542815 5.63835466933375 3.03013370027132 3.31054301339402 0.989541193613748 +raf 3.27336401015227 3.37416870927424 1.24126858906963 6.06145691892802 3.71357206670431 3.21084365317094 3.4626060097908 6.02586597382531 2.84490938381941 3.43720781918519 2.47653840011748 +raf 2.85070650150373 2.76000994003292 2.98568193770049 5.48479693349065 4.07414185490458 3.90399083373088 4.39814601655377 7.12367278520461 0.398776119957368 1.75440368268429 1.6094379124341 +raf 4.30000279919529 3.23080439573347 1.6467336971778 5.18178355029209 3.56104608260405 2.08691355651854 3.66867674679642 6.98007594056176 3.15700042115011 3.68887945411394 2.60268968544438 +raf 4.17284762371004 3.15700042115011 2.56494935746154 5.50533153593236 3.45315712059287 3.16547504814109 4.11087386417331 6.12468339089421 2.84490938381941 3.53514535417189 2.28442112236637 +raf 3.98527346716774 2.67414864942653 3.8308129500026 4.57779898919196 4.20020495292158 2.71469474382088 3.12236492448736 5.89164421182577 3.12236492448736 2.79728133483015 1.4747630091075 +raf 3.90399083373088 3.16547504814109 1.79009141212736 3.02042488614436 3.32862668882732 2.43361335540045 2.64617479738412 5.94542060860658 2.72785282839839 3.39114704580865 1.96009478404727 +raf 0.300104592450338 2.1770218700187 2.19499988231411 5.05624580534831 3.50855589998265 3.64283551561253 5.07517381523383 7.3125534981026 3.25424296870549 3.60549784517489 2.52572864430826 +raf 3.92986292355648 2.71469474382088 1.96009478404727 4.3267781604434 3.86702563949741 1.10525683138678 2.61006979274201 6.50279004591562 3.11351530921037 3.52636052461616 1.69927861643389 +raf 3.21084365317094 2.26695791535089 2.94968833505258 5.82894561761021 4.13676527810605 4.01998014693324 5.50533153593236 6.95272864462487 3.72328088083127 3.85862222870103 2.58021682959233 +raf 4.46129981556839 3.26575941076705 2.41591377830105 4.77912349311153 3.07731226054641 1.79009141212736 2.79116510781272 6.52941883826223 3.36384159511839 3.51749783735832 2.70136121295141 +raf 3.55248682920838 2.4423470353692 3.23867845216438 5.77455154554441 4.28082412916472 2.84490938381941 3.74242022104197 6.41345895716736 2.79116510781272 3.20274644293832 2.484906649788 +raf 4.10098910494077 2.80336038090653 1.88858365386359 5.10594547390058 2.83321334405622 2.54160199346455 3.89385903480047 8.22094116828139 3.23867845216438 3.62434093297637 2.81540871942271 +raf 3.9926809084456 3.31054301339402 2.9704144655697 5.73009978297357 4.02891675689965 3.4626060097908 4.01096295328305 6.80903930604298 2.77881927199042 3.76815263500844 2.72785282839839 +raf 4.06560209335645 3.35340671782581 2.80336038090653 4.84418708645859 3.67882911826043 1.56444054650336 2.76000994003292 6.40357419793482 1.4655675420144 2.67414864942653 0.371563556432483 +raf 4.18205014264121 2.82137888640921 2.32238772029023 4.04830062372069 2.79728133483015 3.10458667846607 3.68887945411394 5.6937321388027 3.25424296870549 3.64283551561253 2.31253542384721 +raf 4.20916023665068 3.03013370027132 1.67335123817775 6.34035930372775 4.17284762371004 3.56953269648137 4.38949864951258 6.89871453432999 2.73436750941958 2.94968833505258 2.31253542384721 +raf 4.69134788222914 3.4626060097908 3.10458667846607 5.03695260241363 3.70622809244855 2.50959926237837 3.01553490085017 6.42162226780652 3.01553490085017 3.62434093297637 2.70136121295141 +raf 4.84418708645859 4.22683374526818 2.26695791535089 1.71739505393919 3.55248682920838 2.61006979274201 3.58905911883173 6.16961073249146 2.96010509591084 3.15700042115011 2.23964529322017 +raf 4.74493212836325 3.63495111208838 3.06805293513362 4.22683374526818 3.23080439573347 2.83321334405622 3.64283551561253 5.62040086571715 3.04927304048202 3.43720781918519 1.75440368268429 +raf 3.05870707271538 2.60268968544438 3.59731226058845 4.12874598893943 3.87743156065853 2.1770218700187 3.41772668361337 5.94542060860658 3.42751468997953 3.67882911826043 0.703097511413113 +raf 2.67414864942653 2.9391619220656 1.708377860289 2.36085400111802 2.47653840011748 3.39114704580865 3.8308129500026 6.24222326545517 0.0676586484738149 3.6163087612791 1.62727783056243 +raf 4.03777421073371 3.16547504814109 1.97823903617067 4.82028156560504 3.6163087612791 3.40784192438082 4.05698877567833 5.65599181081985 3.05870707271538 3.51749783735832 1.30291275218084 +raf 3.27336401015227 2.97552956623647 0.60431596685333 2.2935443483419 2.2935443483419 3.03013370027132 3.88567903008854 6.85329909318608 3.00568260440716 3.18221184049661 1.43983512804792 +raf 2.23964529322017 1.79840401194672 3.54385368206368 4.47049528266149 3.3357695763397 2.97552956623647 3.4626060097908 5.68357976733868 3.38099467434464 3.60549784517489 2.47653840011748 +raf 2.57261223020711 2.84490938381941 1.56444054650336 2.94968833505258 4.16511363311031 2.37954613413017 2.90690105984738 5.92692602597041 2.7408400239252 3.27336401015227 0.99694863489161 +raf 4.14630430115281 3.3357695763397 3.24649099190117 4.38949864951258 4.01096295328305 2.75366071235426 3.00568260440716 6.30444880242198 3.03974915897077 3.53514535417189 2.2213750375685 +raf 3.87743156065853 3.14845336057165 2.1770218700187 4.86753445045558 2.64617479738412 2.63188884013665 3.24649099190117 5.92692602597041 3.16547504814109 3.29212628660779 2.64617479738412 +raf 3.45315712059287 2.81540871942271 2.64617479738412 3.6163087612791 1.36609165380237 2.46809953147162 3.40119738166216 5.99146454710798 3.24649099190117 3.4626060097908 2.98568193770049 +raf 3.4626060097908 3.20274644293832 2.65324196460721 5.09375020080676 3.14845336057165 3.6163087612791 4.43438186500781 7.34858753092759 1.27815220250019 0.165514438477573 2.01490302054226 +raf 3.71357206670431 2.86220088092947 2.65324196460721 5.30826769740121 3.58905911883173 4.00186370942794 4.49758497530815 7.33953769540767 3.04927304048202 3.50855589998265 2.02419306744936 +raf 2.82137888640921 2.87919845729804 1.75440368268429 4.83628190695148 3.49953328238302 2.62466859216316 3.03974915897077 5.64897423816121 3.43720781918519 3.74242022104197 2.53369681395743 +raf 3.79548918917219 2.52572864430826 1.69927861643389 4.71849887129509 3.3178157727231 2.18605127673809 2.7408400239252 5.98141421125448 2.45958884180371 3.01553490085017 1.82616089594539 +raf 0 2.37024374146786 0.00995033085316809 0.412109650826833 1.67335123817775 2.50959926237837 4.04830062372069 7.63626960337937 2.64617479738412 3.48124008933569 2.37024374146786 +raf 2.97552956623647 1.73518911773966 0 5.65599181081985 3.23080439573347 3.63495111208838 4.20020495292158 6.7093043402583 3.60549784517489 3.90399083373088 2.58021682959233 +raf 3.2846635654062 2.9391619220656 0.928219302739429 3.04927304048202 3.09557760852371 2.13179677201376 2.73436750941958 5.85507192220243 2.9338568698359 3.14845336057165 2.2213750375685 +raf 3.52636052461616 3.2188758248682 2.15871472257434 5.03695260241363 3.56953269648137 3.36384159511839 3.62434093297637 6.18001665365257 3.36384159511839 3.77734810210154 2.60268968544438 +raf 4.30811095172371 3.58073729549423 2.60268968544438 5.14749447681345 3.93963817246112 1.7630170003624 3.19458313229916 5.76519110278484 3.32862668882732 3.69635146895264 2.47653840011748 +raf 3.79548918917219 3.79548918917219 1.4036429994545 5.76519110278484 3.45315712059287 3.13983261752775 3.79548918917219 6.58340922215876 0.300104592450338 1.32175583998232 2.15871472257434 +raf 3.17387845893747 3.39114704580865 2.50959926237837 4.56017282005736 2.9338568698359 1.8531680973567 2.91235066461494 5.55682806169954 2.77258872223978 3.43720781918519 2.64617479738412 +raf 3.10458667846607 3.54385368206368 1.66392609771817 5.8111409929767 3.47196645255036 4.29045944114839 5.15329159449778 7.20489251020467 3.15700042115011 4.03777421073371 5.15329159449778 +raf 4.77068462446567 3.18221184049661 2.08691355651854 5.33271879326537 4.11903717481247 2.98568193770049 3.91202300542815 6.16961073249146 2.9391619220656 3.56953269648137 2.30258509299405 +raf 4.69134788222914 3.65065824129374 2.14943391349987 4.83628190695148 3.06805293513362 2.31253542384721 3.07731226054641 6.05443934626937 3.18221184049661 3.3357695763397 2.9391619220656 +raf 4.30000279919529 3.03013370027132 1.94304891677428 6.11589212548303 4.05698877567833 3.02042488614436 3.79548918917219 6.46769872610435 3.05870707271538 3.4904285153901 2.43361335540045 +raf 3.25424296870549 3.13983261752775 2.33214389523559 5.04342511691925 2.90690105984738 2.86220088092947 2.90690105984738 5.90808293816893 3.43720781918519 3.72328088083127 1.48387468945875 +raf 4.3267781604434 3.53514535417189 3.09557760852371 5.2257466737132 4.52396013056255 3.69635146895264 4.56017282005736 6.87212810133899 2.80336038090653 2.99573227355399 2.14943391349987 +raf 3.63495111208838 1.90657514365664 0.845868267577609 5.59471137960184 3.74242022104197 3.14845336057165 3.70622809244855 6.10702288774225 3.77734810210154 4.10098910494077 2.80336038090653 +raf 3.72328088083127 3.07731226054641 2.46809953147162 4.16511363311031 2.77258872223978 2.9704144655697 3.11351530921037 5.73979291217923 3.04927304048202 3.67882911826043 1.4655675420144 +raf 4.50645421304893 3.38099467434464 2.86220088092947 2.91235066461494 1.09861228866811 3.55248682920838 3.71357206670431 6.48463523563525 3.01553490085017 3.23080439573347 2.42480272571829 +raf 2.94968833505258 3.70622809244855 3.14845336057165 4.68213122712422 4.06560209335645 2.2935443483419 3.75185425327532 7.28550654852279 2.83321334405622 3.35340671782581 2.4423470353692 +raf 4.14630430115281 3.58905911883173 2.56494935746154 5.34233425196481 3.16547504814109 1.92424865227413 2.80336038090653 6.85329909318608 3.43720781918519 3.69635146895264 2.65324196460721 +raf 4.31748811353631 3.45315712059287 3.3178157727231 5.73009978297357 3.96651119071222 4.46129981556839 5.03695260241363 6.92559519711047 2.79728133483015 3.26575941076705 0.989541193613748 +raf 3.60549784517489 3.19458313229916 2.11384296839717 2.99573227355399 3.54385368206368 1.35840915763035 2.51769647261099 5.74620319054015 0.792992515529661 0.139761942375159 1.4655675420144 +raf 3.75185425327532 2.68784749378469 2.42480272571829 3.20274644293832 3.67882911826043 1.57484646766448 3.11351530921037 7.3304052118444 3.23867845216438 3.4626060097908 1.84371920815877 +raf 3.72328088083127 3.53514535417189 2.70136121295141 5.18178355029209 3.67882911826043 3.3178157727231 3.75887182593397 5.68357976733868 3.44361809754611 3.54385368206368 1.57484646766448 +raf 3.00568260440716 2.87919845729804 2.20386912005489 5.18178355029209 3.59731226058845 2.45958884180371 3.38099467434464 6.51174532964473 0 2.37024374146786 2.30258509299405 +raf 2.58021682959233 2.21266038546606 2.84490938381941 4.99043258677874 3.55248682920838 3.07731226054641 3.69635146895264 6.51174532964473 3.23867845216438 3.51749783735832 2.90690105984738 +raf 2.90690105984738 2.42480272571829 2.84490938381941 4.94875989037817 3.7864597824528 4.26267987704132 4.7361984483945 7.02464903045364 3.31054301339402 3.3178157727231 2.42480272571829 +raf 2.47653840011748 1.51072193949494 2.02419306744936 5.14749447681345 3.64283551561253 2.37954613413017 2.91235066461494 6.02586597382531 0.854415328156068 2.24812890719799 2.37954613413017 +raf 3.98527346716774 3.23867845216438 3.3178157727231 5.35185813347607 4.02891675689965 3.51749783735832 4.05698877567833 6.21460809842219 2.92316158071916 3.12236492448736 2.34180580614733 +raf 2.30258509299405 2.32238772029023 2.55722731136763 3.96651119071222 2.20386912005489 3.67882911826043 4.60517018598809 6.95272864462487 3.15700042115011 3.75887182593397 2.82137888640921 +raf 4.06560209335645 3.4904285153901 3.2188758248682 2.1770218700187 3.74242022104197 1.74571553072665 3.81330703248899 6.26909628370626 3.40784192438082 3.67882911826043 1.37624402526639 +raf 4.55071400019203 3.91202300542815 2.87919845729804 5.75574221358691 4.01998014693324 3.90399083373088 4.58700621536042 7.67229245562876 2.89591193827178 3.6163087612791 1.87946504964716 +raf 3.31054301339402 3.06805293513362 2.19499988231411 2.42480272571829 3.4626060097908 3.76815263500844 4.18205014264121 6.47543271670409 3.29953372788566 3.74242022104197 2.18605127673809 +raf 3.6163087612791 2.70805020110221 4.03777421073371 5.03695260241363 4.43438186500781 3.58073729549423 5.16478597392351 7.6004023345004 3.10458667846607 3.59731226058845 2.64617479738412 +raf 5.03043792139244 4.67282883446191 2.57261223020711 5.07517381523383 3.4904285153901 2.23964529322017 2.99573227355399 6.27852142416584 0.683096844706444 1.42069578783722 2.45958884180371 +raf 3.94931879017184 2.33214389523559 2.67414864942653 5.6021188208797 3.9926809084456 2.09556092355972 2.52572864430826 5.89164421182577 3.3178157727231 3.58073729549423 2.43361335540045 +raf 4.36182392735636 3.25424296870549 0 5.94542060860658 3.49953328238302 3.00568260440716 3.76815263500844 7.02464903045364 1.33236601909433 2.94968833505258 3.27336401015227 +raf 4.24563400976833 3.19458313229916 2.1770218700187 5.33271879326537 3.40784192438082 3.06805293513362 3.48124008933569 5.95324333428778 3.16547504814109 3.6163087612791 2.70805020110221 +raf 4.66343909411207 3.81330703248899 2.40694510831829 5.10594547390058 3.79548918917219 2.484906649788 3.23080439573347 5.8636311755981 2.23964529322017 3.68887945411394 3.82209829790016 +raf 5.31811999384422 4.3267781604434 3.07731226054641 5.18738580584075 4.05698877567833 1.51951320490611 2.96010509591084 5.88332238848828 2.88480071284671 3.19458313229916 1.870262530716 +raf 3.9759363311718 3.05870707271538 2.21266038546606 4.94875989037817 3.69635146895264 4.02891675689965 4.80402104473326 6.91671502035361 0.357674444271816 0.00995033085316809 0.19062035960865 +raf 3.80443779474821 3.09557760852371 1.98787434815435 3.67882911826043 3.25424296870549 1.35840915763035 2.53369681395743 6.38687931936265 3.24649099190117 3.6163087612791 2.47653840011748 +raf 3.64283551561253 2.77258872223978 1.77155676191054 3.98527346716774 1.93441576962958 3.08648663682246 3.9926809084456 6.51174532964473 3.06805293513362 3.11351530921037 1.11514159061932 +raf 2.10413415427021 2.2935443483419 3.23867845216438 4.70953020131233 3.47196645255036 3.05870707271538 3.60549784517489 5.83773044716594 3.65065824129374 4.05698877567833 2.03339760317843 +raf 4.54223038621422 3.8308129500026 1.89761985992753 4.83628190695148 3.34638914516716 3.3178157727231 3.72328088083127 5.8636311755981 0 1.93441576962958 2.06812778177956 +raf 3.4904285153901 2.91235066461494 2.61739583283408 5.12396397940326 3.51749783735832 2.42480272571829 3.50855589998265 6.72743172485086 3.36384159511839 3.81330703248899 2.61739583283408 +raf 4.38949864951258 3.70622809244855 2.86220088092947 4.78749174278205 3.9759363311718 2.40694510831829 3.01553490085017 5.80211837537706 3.15700042115011 3.27336401015227 1.75440368268429 +raf 2.02419306744936 3.15700042115011 2.81540871942271 4.94875989037817 3.47196645255036 2.37954613413017 2.84490938381941 6.51174532964473 3.26575941076705 3.87743156065853 2.09556092355972 +raf 3.36384159511839 2.94968833505258 1.75440368268429 6.35088571671474 4.54223038621422 2.97552956623647 3.40119738166216 5.36129216570943 3.13983261752775 3.23080439573347 1.93441576962958 +raf 2.28442112236637 2.00552585872967 3.01553490085017 4.60517018598809 2.14943391349987 3.69635146895264 4.57779898919196 6.98841318199959 3.10458667846607 3.37416870927424 2.56494935746154 +raf 4.54223038621422 3.6609942506244 2.52572864430826 4.96284463025991 3.48124008933569 3.09557760852371 3.68887945411394 5.53338948872752 3.4904285153901 3.56953269648137 2.75366071235426 +raf 3.69635146895264 3.21084365317094 1.74571553072665 2.66025953726586 3.85862222870103 3.02042488614436 3.29953372788566 5.97126183979046 3.21084365317094 3.53514535417189 2.79116510781272 +raf 3.58073729549423 3.55248682920838 1.86252854011626 5.57594910314632 3.74242022104197 3.13113691056019 3.56104608260405 5.84643877505772 3.86702563949741 4.39814601655377 3.06805293513362 +raf 4.19116874685764 3.32862668882732 1.81645208181843 5.64897423816121 3.93963817246112 4.11087386417331 4.5152454784601 6.24222326545517 3.26575941076705 3.38099467434464 2.484906649788 +raf 3.73289633953071 2.9704144655697 2.9391619220656 5.6021188208797 4.27249074760558 2.97552956623647 3.56953269648137 5.94542060860658 2.09556092355972 2.50143595173921 4.04830062372069 +raf 3.03974915897077 3.3178157727231 1.60140574073684 5.58724865840025 3.58073729549423 3.19458313229916 3.65065824129374 6.30444880242198 3.18221184049661 3.31054301339402 1.8531680973567 +raf 2.79728133483015 2.18605127673809 0.712949807856125 6.06145691892802 4.01096295328305 3.60549784517489 4.30811095172371 6.21460809842219 3.45315712059287 3.40784192438082 2.20386912005489 +raf 4.0842942263686 3.47196645255036 1.03318448334565 5.47646355193151 2.50143595173921 1.5830939370945 2.65324196460721 5.26269018890489 3.04927304048202 3.52636052461616 1.96990565461153 +raf 3.4904285153901 2.84490938381941 3.56953269648137 6.03548143252476 4.57779898919196 3.3357695763397 3.77734810210154 5.92692602597041 2.30258509299405 2.24812890719799 2.23964529322017 +raf 3.80443779474821 2.99573227355399 0.593326845277734 2.31253542384721 2.97552956623647 2.86789890204411 3.41772668361337 5.82894561761021 3.07731226054641 3.44361809754611 2.54160199346455 +raf 4.39814601655377 2.81540871942271 1.77155676191054 5.47646355193151 2.9704144655697 3.24649099190117 4.23700086262362 7.42952084278646 3.49953328238302 3.8416005411316 2.09556092355972 +raf 4.91265488573605 4.26267987704132 3.07731226054641 3.98527346716774 3.4626060097908 2.86220088092947 3.34638914516716 5.92692602597041 3.41772668361337 3.64283551561253 2.4932054526027 +raf 3.15700042115011 2.79116510781272 2.86789890204411 2.92316158071916 2.11384296839717 3.14845336057165 3.75185425327532 5.4510384535657 2.37954613413017 3.70622809244855 3.06805293513362 +raf 4.05698877567833 2.70805020110221 3.35340671782581 5.95324333428778 5.03695260241363 1.43983512804792 3.50855589998265 7.0604763659998 3.53514535417189 3.8308129500026 2.14943391349987 +raf 3.70622809244855 2.77881927199042 3.32862668882732 4.30811095172371 2.9391619220656 2.33214389523559 2.70136121295141 6.07073772800249 3.39114704580865 3.40784192438082 2.40694510831829 +raf 3.82209829790016 2.73436750941958 2.55722731136763 4.97673374242057 2.92316158071916 3.15700042115011 3.29212628660779 5.54907608489522 3.35340671782581 3.36384159511839 2.37954613413017 +raf 1.90657514365664 2.99573227355399 3.95699637107088 5.73979291217923 5.01727983681492 2.41591377830105 3.15700042115011 6.30444880242198 2.87919845729804 3.27336401015227 1.6467336971778 +raf 4.8283137373023 4.81218435537242 2.43361335540045 5.63121178182137 2.71469474382088 3.40784192438082 3.37416870927424 5.82894561761021 3.03974915897077 2.7408400239252 0.783901543828409 +raf 4.44382703557933 3.50855589998265 3.82209829790016 5.89164421182577 4.24563400976833 3.13983261752775 3.92197333628131 5.67675380226828 3.34638914516716 3.96651119071222 2.77881927199042 +raf 5.2257466737132 5.10594547390058 0.476234178996372 5.47646355193151 0.322083499169113 3.14845336057165 3.70622809244855 6.16120732169508 3.81330703248899 4.70953020131233 4.01096295328305 +raf 3.95699637107088 3.6609942506244 1.79840401194672 3.23080439573347 2.70136121295141 2.77881927199042 3.41772668361337 5.82008293035236 3.52636052461616 4.0842942263686 2.16791018966744 +raf 4.56954300834494 3.40784192438082 2.67414864942653 5.25227342804663 4.40671924726425 1.66392609771817 2.09556092355972 6.08904487544685 3.12236492448736 3.43720781918519 2.37954613413017 +raf 3.36384159511839 2.82137888640921 2.27521389619791 5.10594547390058 3.51749783735832 2.52572864430826 3.4904285153901 6.77308037565554 3.25424296870549 3.55248682920838 1.08856195281461 +raf 4.65396035015752 3.69635146895264 2.15871472257434 5.50533153593236 3.42751468997953 3.63495111208838 4.14630430115281 7.02464903045364 2.99573227355399 3.32862668882732 2.18605127673809 +raf 5.00394630594546 3.59731226058845 3.29212628660779 3.82209829790016 3.80443779474821 2.90690105984738 3.53514535417189 5.46806014113513 2.77258872223978 3.2846635654062 0 +raf 3.06805293513362 1.89761985992753 2.2213750375685 4.83628190695148 3.01553490085017 3.75185425327532 4.15575319035074 5.62040086571715 3.37416870927424 3.56953269648137 2.14943391349987 +raf 3.92197333628131 3.65065824129374 2.70805020110221 5.32300997913841 3.60549784517489 3.3357695763397 3.86702563949741 5.55682806169954 2.75366071235426 3.24649099190117 3.31054301339402 +raf 4.60517018598809 3.88567903008854 2.36085400111802 5.0998664278242 2.1770218700187 3.14845336057165 3.69635146895264 5.87211778947542 0.693147180559945 1.80828877117927 1.4747630091075 +raf 4.38949864951258 3.44361809754611 2.9338568698359 4.70048036579242 3.63495111208838 3.26575941076705 3.88567903008854 5.66642668811243 2.7408400239252 3.6163087612791 2.45958884180371 +raf 4.03777421073371 3.2846635654062 2.61739583283408 4.8283137373023 3.02042488614436 2.1770218700187 3.3178157727231 6.29526600143965 3.03013370027132 3.03013370027132 2.07819075977818 +raf 4.39814601655377 3.3357695763397 2.60268968544438 5.74620319054015 3.26575941076705 3.04927304048202 3.69635146895264 5.62040086571715 3.51749783735832 3.79548918917219 1.95160817016995 +raf 3.80443779474821 3.13113691056019 3.12236492448736 5.13579843705026 3.40784192438082 1.93441576962958 2.97552956623647 5.62040086571715 3.85014760171006 4.06560209335645 1.96009478404727 +raf 4.57779898919196 3.51749783735832 2.42480272571829 4.56954300834494 3.56953269648137 2.96010509591084 3.45315712059287 5.82894561761021 3.3178157727231 3.45315712059287 2.13179677201376 +raf 4.11087386417331 3.4626060097908 3.77734810210154 2.484906649788 3.8308129500026 3.51749783735832 3.88567903008854 5.96357934361845 3.4904285153901 3.62434093297637 2.67414864942653 +raf 4.16511363311031 3.49953328238302 2.04122032885964 5.31811999384422 3.55248682920838 2.77258872223978 3.37416870927424 5.52146091786225 3.23867845216438 3.43720781918519 1.89761985992753 +raf 4.78749174278205 3.70622809244855 3.3178157727231 4.24563400976833 4.06560209335645 4.76217393479776 5.14749447681345 7.50163445788341 0.582215619852664 1.24990173621434 2.75366071235426 +raf 3.03013370027132 1.88858365386359 3.87743156065853 6.25958146406492 4.86753445045558 2.83321334405622 3.79548918917219 5.82008293035236 3.02042488614436 3.13983261752775 2.32238772029023 +raf 3.43720781918519 2.71469474382088 3.81330703248899 4.3267781604434 3.85014760171006 2.54160199346455 3.4626060097908 6.1527326947041 2.91235066461494 3.68887945411394 1.82616089594539 +raf 3.23867845216438 3.3357695763397 2.23964529322017 2.62466859216316 4.11903717481247 3.32862668882732 4.22683374526818 7.26752542782817 2.94968833505258 3.47196645255036 3.17387845893747 +raf 4.24563400976833 3.16547504814109 2.65324196460721 3.71357206670431 3.80443779474821 2.20386912005489 3.39114704580865 7.53743003658651 3.37416870927424 3.36384159511839 1.53901544813755 +raf 1.6094379124341 2.92316158071916 2.58776403522771 5.11799381241676 3.95699637107088 3.92986292355648 5.4510384535657 8.05006542291597 3.82209829790016 4.01998014693324 3.02042488614436 +raf 4.28082412916472 3.72328088083127 1.98787434815435 3.62434093297637 1.43983512804792 1.84371920815877 3.23867845216438 7.50163445788341 0 1.90657514365664 2.13179677201376 +raf 3.69635146895264 3.29953372788566 0 6.75460409948796 2.20386912005489 2.85070650150373 3.54385368206368 5.27299955856375 2.80336038090653 3.35340671782581 2.2935443483419 +raf 2.07819075977818 3.38099467434464 2.2935443483419 4.49758497530815 3.43720781918519 4.10098910494077 4.53367418428302 6.28785856016178 2.84490938381941 3.12236492448736 2.10413415427021 +raf 4.20916023665068 3.2188758248682 3.15700042115011 1.4036429994545 3.3357695763397 3.92986292355648 4.48863636973214 6.92559519711047 2.86220088092947 3.11351530921037 2.28442112236637 +raf 4.0926765051214 2.9704144655697 3.50855589998265 4.74493212836325 3.92197333628131 1.90657514365664 2.41591377830105 5.83773044716594 3.20274644293832 3.47196645255036 1.82616089594539 +raf 3.63495111208838 2.97552956623647 2.63188884013665 4.77912349311153 3.77734810210154 2.70805020110221 4.00186370942794 6.26909628370626 3.50855589998265 3.6163087612791 2.41591377830105 +raf 4.29045944114839 3.63495111208838 2.58021682959233 2.9338568698359 3.54385368206368 2.61006979274201 4.07414185490458 6.92559519711047 3.05870707271538 3.32862668882732 2.24812890719799 +raf 4.31748811353631 3.35340671782581 3.40784192438082 6.16120732169508 5.14749447681345 1.71739505393919 3.42751468997953 6.24222326545517 2.76000994003292 2.91235066461494 1.33236601909433 +raf 3.49953328238302 3.08648663682246 2.18605127673809 5.12396397940326 3.53514535417189 3.13983261752775 3.66867674679642 5.75574221358691 3.04927304048202 3.27336401015227 1.16002091679675 +raf 3.13113691056019 2.76000994003292 2.55722731136763 4.77912349311153 3.53514535417189 4.69134788222914 5.39816270151775 6.93439720992856 2.36085400111802 2.56494935746154 1.90657514365664 +raf 2.42480272571829 2.86789890204411 3.90399083373088 4.70048036579242 3.75887182593397 3.3178157727231 3.86702563949741 5.66642668811243 3.2188758248682 3.75185425327532 1.97823903617067 +raf 3.89385903480047 2.70805020110221 2.40694510831829 4.95582705760126 3.49953328238302 2.55722731136763 2.83321334405622 5.73979291217923 1.53901544813755 2.81540871942271 3.92986292355648 +raf 3.63495111208838 3.65065824129374 3.38099467434464 3.65065824129374 3.31054301339402 2.87919845729804 3.93963817246112 6.41345895716736 2.88480071284671 3.6163087612791 2.51769647261099 +raf 1.86252854011626 2.79116510781272 1.67335123817775 5.37989735354046 3.47196645255036 1.6467336971778 3.62434093297637 5.84643877505772 3.08648663682246 3.24649099190117 2.19499988231411 +raf 4.02891675689965 3.38099467434464 2.05027016437956 2.92316158071916 3.66867674679642 3.18221184049661 3.56953269648137 5.96357934361845 3.51749783735832 3.52636052461616 2.68102152871429 +raf 4.44382703557933 3.62434093297637 2.46809953147162 3.08648663682246 3.3357695763397 3.29212628660779 3.45315712059287 5.59471137960184 2.62466859216316 3.44361809754611 3.41772668361337 +raf 4.49758497530815 4.42484663185681 2.9704144655697 2.15871472257434 2.15871472257434 3.77734810210154 4.05698877567833 6.01615715969835 2.66025953726586 2.71469474382088 2.2213750375685 +raf 4.30811095172371 3.47196645255036 0.00995033085316809 5.53338948872752 2.79728133483015 3.85862222870103 4.84418708645859 7.11476944836646 3.20274644293832 3.76815263500844 1.30291275218084 +raf 3.40119738166216 3.16547504814109 1.20597080698861 4.46129981556839 2.64617479738412 3.38099467434464 3.7864597824528 5.83773044716594 3.40784192438082 3.08648663682246 2.73436750941958 +raf 4.66343909411207 3.23867845216438 1.66392609771817 5.31811999384422 2.65324196460721 1.56444054650336 3.38099467434464 6.51174532964473 2.97552956623647 3.20274644293832 3.09557760852371 +raf 4.11903717481247 3.13983261752775 4.56954300834494 5.67675380226828 4.15575319035074 3.64283551561253 4.10098910494077 6.13339804299665 2.86789890204411 3.36384159511839 1.53901544813755 +raf 4.45201900649392 3.02042488614436 2.05923883436232 3.10458667846607 3.45315712059287 2.9391619220656 2.94968833505258 5.54126354515843 3.87743156065853 4.10098910494077 2.71469474382088 +raf 3.86702563949741 2.88480071284671 2.81540871942271 5.00394630594546 3.77734810210154 3.3178157727231 3.8416005411316 6.81783057145415 2.90690105984738 2.83321334405622 1.7263316639056 +raf 3.56953269648137 3.38099467434464 3.15700042115011 4.8283137373023 3.90399083373088 3.26575941076705 3.85862222870103 6.25958146406492 0.322083499169113 3.41772668361337 0.982078472412158 +raf 3.87743156065853 2.94968833505258 2.56494935746154 4.01096295328305 3.2846635654062 2.72785282839839 3.31054301339402 5.76519110278484 0.593326845277734 2.05027016437956 0.746687947487975 +raf 4.70953020131233 3.60549784517489 3.88567903008854 4.47049528266149 3.23080439573347 2.91235066461494 3.55248682920838 6.16961073249146 2.67414864942653 3.23867845216438 2.97552956623647 +raf 3.9759363311718 3.03974915897077 2.40694510831829 5.35185813347607 3.13113691056019 2.82137888640921 3.16547504814109 5.8636311755981 2.9704144655697 2.90690105984738 2.28442112236637 +raf 2.66025953726586 2.61006979274201 1.19694818938897 5.89164421182577 4.0842942263686 1.16002091679675 0.982078472412158 4.46129981556839 0.542324290825362 0 1.95160817016995 +raf 3.67882911826043 2.40694510831829 2.88480071284671 2.75366071235426 0.928219302739429 2.43361335540045 2.56494935746154 6.18826412308259 3.29212628660779 3.4626060097908 2.45958884180371 +raf 2.66025953726586 3.13983261752775 2.45958884180371 5.06259503302697 3.68887945411394 2.42480272571829 3.04927304048202 6.1527326947041 2.9391619220656 3.37416870927424 2.31253542384721 +raf 4.83628190695148 3.82209829790016 0.871293365943419 5.52146091786225 0.431782416425538 3.86702563949741 4.33598269617247 6.84481547920826 2.54160199346455 2.9338568698359 4.254193263164 +raf 3.4626060097908 2.85070650150373 2.67414864942653 3.41772668361337 4.28082412916472 2.26695791535089 2.84490938381941 6.31354804627709 2.94968833505258 2.86220088092947 2.14943391349987 +raf 4.02891675689965 3.40784192438082 2.2213750375685 4.26267987704132 3.2846635654062 3.10458667846607 3.64283551561253 5.89989735358249 3.23080439573347 3.14845336057165 2.98568193770049 +raf 4.87519732320115 4.44382703557933 3.23080439573347 5.25227342804663 4.47960696301275 2.58776403522771 3.3357695763397 6.01615715969835 2.34180580614733 2.70136121295141 1.86252854011626 +raf 3.55248682920838 2.37954613413017 2.00552585872967 5.03043792139244 3.71357206670431 3.12236492448736 4.23700086262362 7.06987412845857 3.24649099190117 3.63495111208838 1.49290409617815 +raf 3.41772668361337 2.55722731136763 2.86789890204411 4.17284762371004 2.68102152871429 3.01553490085017 3.45315712059287 5.98141421125448 3.11351530921037 3.67882911826043 2.35137525716348 +raf 2.15871472257434 3.03974915897077 2.56494935746154 3.8308129500026 4.28082412916472 2.77881927199042 3.04927304048202 5.82008293035236 2.88480071284671 3.10458667846607 2.28442112236637 +raf 3.8308129500026 2.77881927199042 2.27521389619791 3.54385368206368 1.23256026117785 3.41772668361337 3.70622809244855 5.93753620508243 3.44361809754611 3.76815263500844 2.56494935746154 +raf 4.0842942263686 3.49953328238302 3.51749783735832 4.71849887129509 2.75366071235426 2.66025953726586 3.65065824129374 6.55677835615804 0.693147180559945 2.3887627892351 1.79840401194672 +raf 4.53367418428302 3.10458667846607 2.18605127673809 5.35185813347607 4.04830062372069 3.9759363311718 4.56017282005736 7.3304052118444 3.4626060097908 3.82209829790016 1.75440368268429 +raf 3.65065824129374 3.11351530921037 2.77881927199042 6.10702288774225 4.40671924726425 3.55248682920838 3.77734810210154 6.32256523992728 2.88480071284671 3.04927304048202 1.79840401194672 +raf 4.59612944133594 3.77734810210154 2.24812890719799 6.24222326545517 4.67282883446191 2.58776403522771 2.99573227355399 6.33150184989369 3.17387845893747 3.63495111208838 2.68102152871429 +raf 4.33598269617247 3.12236492448736 2.68784749378469 5.21493575760899 3.85862222870103 3.29212628660779 3.87743156065853 5.8636311755981 3.37416870927424 3.7864597824528 2.90690105984738 +raf 4.66343909411207 4.20020495292158 1.7630170003624 5.23644196282995 3.40784192438082 2.1770218700187 3.16547504814109 6.21460809842219 3.08648663682246 3.56953269648137 2.73436750941958 +raf 4.71849887129509 3.3357695763397 2.66025953726586 4.81218435537242 2.99573227355399 1.15057202759882 2.91235066461494 7.0335064842877 2.79116510781272 3.62434093297637 3.29953372788566 +raf 4.65396035015752 4.06560209335645 2.05923883436232 5.16478597392351 4.01998014693324 2.06812778177956 2.61739583283408 6.11589212548303 3.13983261752775 3.29212628660779 2.71469474382088 +raf 4.55071400019203 3.26575941076705 1.79009141212736 2.77258872223978 3.58073729549423 1.39376637595859 2.72785282839839 6.18826412308259 3.42751468997953 3.27336401015227 1.6467336971778 +raf 4.47049528266149 5.03043792139244 2.14943391349987 2.60268968544438 4.11087386417331 3.2846635654062 3.58905911883173 5.98141421125448 3.58905911883173 3.81330703248899 2.86789890204411 +raf 4.78749174278205 3.71357206670431 0 4.39814601655377 2.61006979274201 3.13113691056019 3.65065824129374 5.6021188208797 3.08648663682246 3.13983261752775 2.05923883436232 +raf 3.95699637107088 3.2188758248682 2.73436750941958 4.43438186500781 3.2846635654062 3.09557760852371 3.21084365317094 5.63835466933375 3.05870707271538 3.29953372788566 2.77258872223978 +raf 2.9704144655697 3.27336401015227 0.828551817566148 3.75887182593397 2.52572864430826 3.23080439573347 3.52636052461616 5.63835466933375 2.58021682959233 3.54385368206368 3.32862668882732 +raf 4.52396013056255 3.36384159511839 0.0953101798043249 5.66642668811243 3.45315712059287 3.85014760171006 4.22683374526818 5.31811999384422 3.20274644293832 3.49953328238302 2.66025953726586 +raf 4.89034912822175 3.96651119071222 2.58776403522771 4.53367418428302 2.23964529322017 2.51769647261099 3.62434093297637 7.1777824161952 3.27336401015227 3.70622809244855 2.56494935746154 +raf 3.45315712059287 2.81540871942271 2.97552956623647 4.07414185490458 3.52636052461616 2.67414864942653 3.63495111208838 6.60258789218934 2.2935443483419 3.41772668361337 2.24812890719799 +raf 4.05698877567833 2.97552956623647 2.36085400111802 3.18221184049661 2.96010509591084 2.68784749378469 3.35340671782581 5.72031177660741 2.56494935746154 3.56953269648137 3.41772668361337 +raf 4.254193263164 3.23867845216438 2.55722731136763 3.87743156065853 2.41591377830105 2.90690105984738 3.70622809244855 5.89164421182577 2.79116510781272 3.00568260440716 1.51072193949494 +raf 4.20020495292158 3.15700042115011 0.756121979721334 6.42162226780652 4.40671924726425 2.26695791535089 3.39114704580865 6.04500531403601 3.36384159511839 3.17387845893747 2.56494935746154 +raf 3.45315712059287 2.51769647261099 2.90690105984738 5.06259503302697 3.18221184049661 1.75440368268429 3.03974915897077 6.87212810133899 3.25424296870549 3.09557760852371 2.50143595173921 +raf 4.46129981556839 3.18221184049661 2.43361335540045 5.31811999384422 3.6609942506244 3.94931879017184 4.50645421304893 6.51174532964473 3.43720781918519 3.60549784517489 2.31253542384721 +raf 4.77068462446567 3.4626060097908 2.39789527279837 3.74242022104197 3.05870707271538 3.14845336057165 3.86702563949741 5.8636311755981 2.7408400239252 2.97552956623647 2.18605127673809 +raf 4.11903717481247 2.82137888640921 2.33214389523559 3.70622809244855 3.34638914516716 1.31372366828506 2.4423470353692 6.92559519711047 3.50855589998265 3.92197333628131 2.50959926237837 +raf 3.55248682920838 2.77881927199042 1.708377860289 6.1527326947041 3.9759363311718 4.29045944114839 4.77912349311153 6.55677835615804 3.29212628660779 3.3357695763397 1.52822785700856 +raf 3.35340671782581 2.86220088092947 2.91235066461494 5.07517381523383 3.21084365317094 2.80336038090653 3.70622809244855 6.97073007814353 3.26575941076705 3.29212628660779 2.14124194258528 +raf 3.23867845216438 2.51769647261099 1.95160817016995 5.41610040220442 3.39114704580865 2.60268968544438 3.14845336057165 5.84643877505772 3.03974915897077 3.60549784517489 2.56494935746154 +raf 3.44361809754611 3.35340671782581 1.88858365386359 5.71042701737487 3.82209829790016 3.16547504814109 3.70622809244855 6.1527326947041 3.74242022104197 4.12874598893943 4.91265488573605 +raf 4.74493212836325 3.66867674679642 2.71469474382088 3.80443779474821 3.8308129500026 3.8308129500026 4.5152454784601 6.96129604591017 3.23080439573347 3.4904285153901 2.85070650150373 +raf 4.33598269617247 3.72328088083127 2.43361335540045 4.57779898919196 3.7864597824528 0.99694863489161 1.9154509415706 4.99043258677874 3.19458313229916 3.55248682920838 1.74571553072665 +raf 4.59612944133594 3.35340671782581 1.50185270175416 3.10458667846607 2.86789890204411 3.14845336057165 3.82209829790016 5.92692602597041 3.23080439573347 3.67882911826043 2.28442112236637 +raf 4.30811095172371 3.04927304048202 2.02419306744936 4.3528552573736 2.61006979274201 3.07731226054641 3.62434093297637 6.10702288774225 3.40119738166216 3.55248682920838 2.65324196460721 +raf 4.53367418428302 3.43720781918519 2.20386912005489 5.01727983681492 1.6094379124341 1.96990565461153 3.26575941076705 7.0335064842877 1.06125650212434 0 1.11514159061932 +raf 2.31253542384721 3.10458667846607 2.81540871942271 3.29953372788566 3.56953269648137 2.36085400111802 3.73289633953071 6.34035930372775 3.3357695763397 3.85862222870103 2.08691355651854 +raf 3.3178157727231 3.66867674679642 3.87743156065853 5.0998664278242 3.23080439573347 1.8531680973567 3.6609942506244 6.78219205600679 3.06805293513362 3.44361809754611 2.36085400111802 +raf 2.53369681395743 3.02042488614436 1.88858365386359 5.13579843705026 3.40119738166216 2.33214389523559 3.68887945411394 6.57507584059962 2.96010509591084 2.86220088092947 2.99573227355399 +raf 4.60517018598809 3.34638914516716 2.77258872223978 4.82028156560504 4.0842942263686 3.71357206670431 4.61512051684126 8.05896001776942 1.79009141212736 2.20386912005489 0.727548607277278 +raf 3.16547504814109 3.17387845893747 1.74571553072665 4.90527477843843 2.85070650150373 2.96010509591084 5.09375020080676 7.64539769942863 3.03013370027132 3.16547504814109 2.43361335540045 +raf 4.31748811353631 3.21084365317094 1.79009141212736 3.05870707271538 3.12236492448736 3.4904285153901 4.38077585277223 6.39526159811545 3.39114704580865 3.8416005411316 2.73436750941958 +raf 4.00186370942794 3.8416005411316 2.79116510781272 5.11799381241676 3.51749783735832 2.81540871942271 3.31054301339402 6.18001665365257 3.8308129500026 4.13676527810605 2.25758772706331 +raf 3.96651119071222 3.35340671782581 2.45958884180371 4.16511363311031 3.40119738166216 2.88480071284671 3.67882911826043 7.04228617193974 2.91235066461494 3.04927304048202 2.05923883436232 +raf 4.29045944114839 3.02042488614436 1.79009141212736 5.53338948872752 3.69635146895264 1.53901544813755 3.09557760852371 6.24222326545517 2.96010509591084 3.23080439573347 2.62466859216316 +raf 3.32862668882732 2.86220088092947 1.80828877117927 3.17387845893747 2.52572864430826 4.38077585277223 4.85981240436167 6.91671502035361 1.69009581545155 2.25758772706331 2.13179677201376 +raf 4.48863636973214 4.3528552573736 2.08691355651854 5.10594547390058 3.66867674679642 3.82209829790016 5.01727983681492 7.14124512235049 2.73436750941958 3.29953372788566 1.04380405217311 +raf 2.41591377830105 0.60431596685333 3.86702563949741 4.99043258677874 5.01063529409626 3.52636052461616 4.47960696301275 6.98841318199959 3.12236492448736 3.12236492448736 2.04122032885964 +raf 4.71849887129509 3.4904285153901 1.78170913337455 5.82008293035236 3.64283551561253 1.79009141212736 3.18221184049661 6.46769872610435 3.4626060097908 3.82209829790016 3.03013370027132 +raf 3.36384159511839 3.01553490085017 2.13179677201376 4.5152454784601 3.71357206670431 2.70136121295141 3.21084365317094 5.87211778947542 3.32862668882732 3.43720781918519 0.488580014818671 +raf 2.54160199346455 2.61739583283408 0 6.90775527898214 4.76217393479776 2.70136121295141 3.34638914516716 5.91889385427315 2.92316158071916 3.01553490085017 0.73716406597672 +raf 4.0926765051214 3.20274644293832 2.20386912005489 2.84490938381941 3.19458313229916 2.63188884013665 3.37416870927424 5.99893656194668 0.182321556793955 2.27521389619791 1.08856195281461 +raf 3.38099467434464 2.81540871942271 2.85070650150373 4.85981240436167 3.34638914516716 1.54756250871601 3.45315712059287 5.75574221358691 2.51769647261099 3.55248682920838 2.97552956623647 +raf 3.85862222870103 3.50855589998265 1.22377543162212 4.87519732320115 3.68887945411394 2.73436750941958 3.19458313229916 5.7037824746562 3.81330703248899 4.11087386417331 2.82137888640921 +raf 2.61006979274201 2.16791018966744 0 1.42069578783722 3.17387845893747 3.43720781918519 3.9759363311718 6.12468339089421 3.03013370027132 3.45315712059287 1.88858365386359 +raf 4.66343909411207 4.68213122712422 1.9154509415706 4.30811095172371 3.98527346716774 2.34180580614733 3.24649099190117 6.34035930372775 4.10098910494077 4.47960696301275 3.3357695763397 +raf 3.67882911826043 2.58021682959233 2.64617479738412 5.67675380226828 3.9926809084456 0 1.19694818938897 3.4626060097908 2.91235066461494 2.67414864942653 2.47653840011748 +raf 4.47960696301275 4.00186370942794 2.00552585872967 4.85981240436167 3.71357206670431 3.13113691056019 3.76815263500844 5.63121178182137 3.48124008933569 3.51749783735832 2.18605127673809 +raf 3.38099467434464 2.77881927199042 3.19458313229916 6.21460809842219 4.99043258677874 3.18221184049661 3.77734810210154 5.78382518232974 3.40784192438082 3.66867674679642 2.90690105984738 +raf 4.28082412916472 3.87743156065853 2.55722731136763 3.50855589998265 3.81330703248899 1.05082162483176 2.89591193827178 6.90775527898214 3.80443779474821 4.27249074760558 2.84490938381941 +raf 3.60549784517489 2.61739583283408 2.53369681395743 3.40784192438082 3.88567903008854 3.24649099190117 3.79548918917219 5.82894561761021 3.05870707271538 3.43720781918519 2.1770218700187 +raf 4.69134788222914 3.81330703248899 2.77881927199042 4.99043258677874 4.05698877567833 1.708377860289 2.7408400239252 5.75574221358691 3.75887182593397 4.20020495292158 2.90690105984738 +raf 3.31054301339402 2.98568193770049 1.21491274436427 5.47646355193151 3.75185425327532 4.70048036579242 5.18738580584075 7.24064969425547 3.39114704580865 3.8416005411316 2.54160199346455 +raf 3.25424296870549 3.40784192438082 0.559615787935423 5.97126183979046 3.04927304048202 2.33214389523559 3.13983261752775 5.91889385427315 3.23867845216438 2.83321334405622 2.27521389619791 +raf 2.77258872223978 2.05027016437956 1.96990565461153 4.20916023665068 3.29953372788566 3.20274644293832 3.87743156065853 5.83773044716594 2.73436750941958 2.87919845729804 2.34180580614733 +raf 4.77068462446567 4.03777421073371 2.77258872223978 2.98568193770049 3.37416870927424 2.90690105984738 3.34638914516716 6.00881318544259 3.11351530921037 3.72328088083127 2.21266038546606 +raf 3.59731226058845 2.89591193827178 2.04122032885964 3.01553490085017 3.00568260440716 2.50959926237837 3.76815263500844 6.41345895716736 2.484906649788 2.79116510781272 1.97823903617067 +raf 3.56953269648137 2.68102152871429 2.80336038090653 3.50855589998265 3.47196645255036 1.39376637595859 2.82137888640921 5.7037824746562 3.55248682920838 4.01998014693324 2.77881927199042 +raf 3.53514535417189 2.82137888640921 1.35840915763035 5.17048399503815 3.70622809244855 3.63495111208838 4.29045944114839 5.93753620508243 4.11903717481247 4.47960696301275 2.04122032885964 +raf 2.62466859216316 2.96010509591084 3.45315712059287 5.73979291217923 4.43438186500781 2.27521389619791 3.40784192438082 5.52146091786225 3.4626060097908 3.9926809084456 2.64617479738412 +raf 4.19116874685764 3.10458667846607 2.86789890204411 3.72328088083127 3.65065824129374 3.03974915897077 3.23080439573347 5.89989735358249 3.34638914516716 3.87743156065853 2.75366071235426 +raf 3.47196645255036 2.70136121295141 4.15575319035074 5.19849703126583 3.52636052461616 2.37024374146786 3.48124008933569 6.41345895716736 3.51749783735832 3.40119738166216 2.82137888640921 +raf 2.16791018966744 2.98568193770049 2.30258509299405 5.25227342804663 3.66867674679642 3.56104608260405 4.05698877567833 5.82008293035236 2.91235066461494 3.25424296870549 2.50959926237837 +raf 4.63472898822964 3.17387845893747 4.15575319035074 4.11087386417331 4.41642806139121 4.29045944114839 5.40717177146012 7.25841215059531 2.87919845729804 3.15700042115011 0.970778917158225 +raf 4.58700621536042 3.50855589998265 2.72785282839839 3.76815263500844 2.70805020110221 4.47960696301275 4.99043258677874 7.3038432252777 3.26575941076705 3.64283551561253 2.09556092355972 +raf 3.2188758248682 2.68102152871429 2.53369681395743 4.93447393313069 3.50855589998265 2.31253542384721 3.12236492448736 6.07073772800249 3.11351530921037 3.49953328238302 0.693147180559945 +raf 4.70048036579242 3.60549784517489 2.12226153886276 2.97552956623647 3.60549784517489 3.00568260440716 3.93963817246112 8.03203531439882 2.28442112236637 3.49953328238302 2.70805020110221 +raf 4.06560209335645 2.9338568698359 2.14943391349987 2.72785282839839 4.10098910494077 3.44361809754611 4.93447393313069 7.12367278520461 2.58776403522771 3.27336401015227 2.57261223020711 +raf 3.03974915897077 2.10413415427021 2.06812778177956 5.18178355029209 3.52636052461616 2.36085400111802 3.05870707271538 6.73696695800186 2.57261223020711 2.9704144655697 2.66025953726586 +raf 4.65396035015752 4.07414185490458 3.03013370027132 5.57594910314632 4.31748811353631 3.80443779474821 4.27249074760558 7.02464903045364 3.29212628660779 3.58905911883173 2.58021682959233 +raf 4.17284762371004 3.38099467434464 2.83321334405622 3.93963817246112 2.85070650150373 4.30811095172371 4.64439089914137 6.8627579130514 3.68887945411394 3.85014760171006 2.37954613413017 +raf 4.47960696301275 3.2188758248682 2.54160199346455 5.35185813347607 3.58073729549423 3.40119738166216 3.54385368206368 5.95324333428778 3.03974915897077 3.13983261752775 2.63188884013665 +raf 4.23700086262362 2.89591193827178 2.23964529322017 5.0998664278242 3.32862668882732 2.60268968544438 3.29212628660779 5.55682806169954 3.85862222870103 4.24563400976833 3.3178157727231 +raf 3.94931879017184 3.35340671782581 3.07731226054641 3.26575941076705 3.6609942506244 3.04927304048202 3.66867674679642 5.46806014113513 2.82137888640921 3.56953269648137 2.83321334405622 +raf 3.34638914516716 3.01553490085017 3.23080439573347 3.94931879017184 3.21084365317094 1.60140574073684 2.79116510781272 6.82654522355659 3.15700042115011 3.75185425327532 2.47653840011748 +raf 3.81330703248899 3.06805293513362 3.71357206670431 4.45201900649392 4.20020495292158 3.14845336057165 3.40784192438082 5.46806014113513 3.45315712059287 3.75185425327532 2.05923883436232 +raf 5.05624580534831 4.30000279919529 2.83321334405622 5.26269018890489 3.85862222870103 2.45958884180371 3.01553490085017 5.92692602597041 3.15700042115011 3.29212628660779 2.76000994003292 +raf 3.45315712059287 3.20274644293832 2.16791018966744 4.55071400019203 2.72785282839839 4.22683374526818 5.15329159449778 6.98841318199959 3.27336401015227 3.6163087612791 2.15871472257434 +raf 4.93447393313069 3.62434093297637 2.66025953726586 5.11799381241676 3.60549784517489 3.76815263500844 4.45201900649392 7.34858753092759 2.96010509591084 3.18221184049661 2.91235066461494 +raf 4.03777421073371 3.51749783735832 3.66867674679642 4.90527477843843 4.0926765051214 2.87919845729804 3.23080439573347 5.89989735358249 3.20274644293832 3.36384159511839 2.08691355651854 +raf 4.38077585277223 3.4626060097908 2.15871472257434 5.35185813347607 2.43361335540045 3.34638914516716 3.69635146895264 5.54907608489522 3.16547504814109 3.69635146895264 2.34180580614733 +raf 3.90399083373088 2.40694510831829 2.39789527279837 5.08140436498446 4.06560209335645 3.03974915897077 3.95699637107088 6.76388490856244 3.2188758248682 3.73289633953071 2.08691355651854 +raf 4.37071287477361 3.42751468997953 2.45958884180371 3.45315712059287 4.19116874685764 1.67335123817775 2.99573227355399 6.80903930604298 3.04927304048202 3.42751468997953 2.19499988231411 +raf 3.59731226058845 3.07731226054641 2.31253542384721 5.21493575760899 3.41772668361337 4.62497281328427 5.16478597392351 6.92559519711047 2.94968833505258 3.59731226058845 2.18605127673809 +raf 3.91202300542815 2.56494935746154 1.97823903617067 4.93447393313069 3.37416870927424 4.00186370942794 4.77068462446567 7.34858753092759 3.18221184049661 3.2846635654062 0.398776119957368 +raf 3.03013370027132 3.51749783735832 3.01553490085017 2.61006979274201 0 3.29953372788566 3.65065824129374 5.8111409929767 3.32862668882732 3.59731226058845 2.10413415427021 +raf 4.07414185490458 3.11351530921037 0.982078472412158 5.67675380226828 3.3178157727231 1.90657514365664 3.15700042115011 7.26752542782817 3.32862668882732 3.70622809244855 2.55722731136763 +raf 3.95699637107088 2.68102152871429 2.43361335540045 4.84418708645859 3.76815263500844 2.88480071284671 3.50855589998265 6.18001665365257 3.4904285153901 3.75185425327532 2.62466859216316 +raf 4.46129981556839 3.39114704580865 2.99573227355399 4.05698877567833 4.52396013056255 2.79728133483015 3.43720781918519 5.82894561761021 2.85070650150373 3.53514535417189 2.41591377830105 +raf 4.5152454784601 4.01096295328305 2.31253542384721 5.87211778947542 3.79548918917219 4.0926765051214 4.63472898822964 6.62936325343745 3.6609942506244 3.80443779474821 2.56494935746154 +raf 3.48124008933569 2.67414864942653 2.25758772706331 3.96651119071222 2.9338568698359 3.10458667846607 3.6163087612791 6.18001665365257 2.81540871942271 3.76815263500844 2.92316158071916 +raf 4.05698877567833 3.48124008933569 2.63188884013665 6.53958595561767 5.18738580584075 2.67414864942653 3.24649099190117 5.54907608489522 2.7408400239252 3.23867845216438 2.50959926237837 +raf 4.18205014264121 2.98568193770049 1.6467336971778 5.15329159449778 3.55248682920838 3.58073729549423 4.11903717481247 5.87211778947542 2.84490938381941 3.52636052461616 0.0198026272961797 +raf 4.17284762371004 3.13113691056019 2.94968833505258 6.55677835615804 4.66343909411207 1.53901544813755 2.91235066461494 6.62936325343745 2.91235066461494 3.26575941076705 1.69927861643389 +raf 1.73518911773966 2.87919845729804 0.27763173659828 5.2257466737132 3.65065824129374 3.24649099190117 3.42751468997953 6.25190388316589 3.11351530921037 3.29212628660779 2.36085400111802 +raf 4.05698877567833 3.48124008933569 2.68102152871429 4.68213122712422 3.36384159511839 2.61739583283408 3.65065824129374 5.8636311755981 2.92316158071916 2.86789890204411 2.57261223020711 +raf 5.24174701505964 5.03043792139244 2.4932054526027 4.92725368515721 3.3357695763397 1.9154509415706 2.71469474382088 6.48463523563525 3.71357206670431 4.0842942263686 1.99741770620125 +raf 3.4626060097908 3.29212628660779 4.15575319035074 5.73009978297357 4.92725368515721 1.41098697371026 3.11351530921037 5.61312810638807 3.53514535417189 4.19116874685764 3.8308129500026 +raf 3.40119738166216 2.39789527279837 2.04122032885964 4.84418708645859 3.52636052461616 2.9338568698359 3.47196645255036 5.90808293816893 2.81540871942271 3.39114704580865 1.78170913337455 +raf 2.79728133483015 2.63188884013665 1.77155676191054 2.94968833505258 3.58905911883173 4.46129981556839 4.78749174278205 6.98841318199959 3.69635146895264 3.92197333628131 2.90690105984738 +raf 3.8416005411316 2.90690105984738 2.36085400111802 2.83321334405622 3.92986292355648 3.63495111208838 4.15575319035074 6.14418563412565 3.55248682920838 3.91202300542815 2.90690105984738 +raf 3.3178157727231 3.04927304048202 2.67414864942653 4.77068462446567 3.69635146895264 4.88280192258637 5.33271879326537 6.38687931936265 3.71357206670431 3.88567903008854 1.79009141212736 +raf 4.13676527810605 2.91235066461494 2.2935443483419 5.30826769740121 3.59731226058845 5.97126183979046 6.30444880242198 6.63856778916652 3.32862668882732 3.85014760171006 2.72785282839839 +raf 4.52396013056255 3.85014760171006 2.9391619220656 4.81218435537242 3.02042488614436 0.19062035960865 0.00995033085316809 2.58776403522771 2.92316158071916 3.32862668882732 0.307484699747961 +raf 3.92986292355648 3.40784192438082 1.34807314829969 2.23964529322017 3.2846635654062 2.45958884180371 3.53514535417189 5.88332238848828 3.37416870927424 3.71357206670431 1.68268837417369 +raf 3.98527346716774 2.68784749378469 2.46809953147162 4.71849887129509 3.93963817246112 3.74242022104197 4.47960696301275 6.63856778916652 3.18221184049661 3.53514535417189 2.26695791535089 +raf 4.62497281328427 3.42751468997953 2.37954613413017 5.0998664278242 2.9338568698359 3.55248682920838 3.91202300542815 6.41345895716736 4.02891675689965 4.29045944114839 3.08648663682246 +raf 4.28082412916472 3.66867674679642 2.53369681395743 5.20948615284142 3.47196645255036 4.11087386417331 4.56017282005736 7.07834157955767 3.03013370027132 3.23080439573347 1.96990565461153 +raf 4.46129981556839 3.43720781918519 1.08856195281461 5.47646355193151 3.45315712059287 2.9338568698359 3.62434093297637 6.12468339089421 3.13113691056019 3.51749783735832 1.63705307946707 +raf 4.70048036579242 3.56104608260405 3.8308129500026 4.99043258677874 3.80443779474821 1.36609165380237 3.03974915897077 6.54821910276237 3.03013370027132 3.51749783735832 2.23108909128898 +raf 3.75185425327532 3.18221184049661 1.66392609771817 3.75185425327532 2.4423470353692 4.42484663185681 5.36129216570943 7.56423847517049 3.17387845893747 3.40784192438082 1.98787434815435 +raf 2.2935443483419 3.23867845216438 2.14943391349987 4.69134788222914 3.51749783735832 2.80336038090653 3.23080439573347 6.23244801655052 3.11351530921037 3.60549784517489 2.76000994003292 +raf 4.66343909411207 3.9926809084456 2.07819075977818 4.99043258677874 3.56104608260405 3.49953328238302 4.23700086262362 6.65544035036765 3.2846635654062 3.58073729549423 2.12226153886276 +raf 3.55248682920838 2.84490938381941 1.79840401194672 5.4971682252932 3.70622809244855 3.29212628660779 3.85862222870103 6.16120732169508 4.0926765051214 4.254193263164 3.19458313229916 +raf 1.43983512804792 2.02419306744936 3.2846635654062 5.73979291217923 4.20916023665068 2.66025953726586 3.47196645255036 5.77455154554441 2.9338568698359 3.2846635654062 2.41591377830105 +raf 3.9926809084456 3.19458313229916 2.03339760317843 3.24649099190117 4.05698877567833 3.08648663682246 3.4904285153901 6.07073772800249 3.32862668882732 3.9926809084456 1.78170913337455 +raf 3.59731226058845 2.67414864942653 0.512823626428664 5.31811999384422 3.91202300542815 2.84490938381941 3.29212628660779 6.13339804299665 2.79728133483015 3.40119738166216 2.56494935746154 +raf 4.3267781604434 2.9391619220656 2.43361335540045 5.08140436498446 3.58905911883173 2.77258872223978 3.40119738166216 4.89034912822175 3.06805293513362 3.09557760852371 2.58776403522771 +raf 3.38099467434464 3.10458667846607 3.2846635654062 6.12468339089421 3.89385903480047 2.10413415427021 3.05870707271538 6.08904487544685 3.03974915897077 3.71357206670431 2.16791018966744 +raf 3.90399083373088 2.77881927199042 2.09556092355972 5.18178355029209 2.87919845729804 2.16791018966744 3.59731226058845 6.36818718635049 3.08648663682246 3.58073729549423 1.93441576962958 +raf 1.55603713570699 2.9391619220656 2.89591193827178 2.70805020110221 2.05923883436232 2.23964529322017 2.89591193827178 5.79301360838414 2.9391619220656 3.03013370027132 2.09556092355972 +raf 4.02891675689965 3.6163087612791 2.14124194258528 3.41772668361337 3.82209829790016 3.88567903008854 4.85981240436167 6.54821910276237 0.802001585472027 2.06812778177956 2.58021682959233 +raf 4.44382703557933 3.35340671782581 2.40694510831829 4.61512051684126 4.12874598893943 2.35137525716348 3.29953372788566 7.1777824161952 3.29953372788566 3.6163087612791 2.37024374146786 +raf 2.65324196460721 2.73436750941958 3.51749783735832 4.56017282005736 4.20916023665068 2.9338568698359 3.50855589998265 5.53338948872752 3.09557760852371 3.39114704580865 1.51072193949494 +raf 4.78749174278205 4.04830062372069 2.37024374146786 4.77068462446567 3.38099467434464 2.02419306744936 3.32862668882732 6.76388490856244 3.03013370027132 3.6609942506244 2.33214389523559 +raf 3.8416005411316 3.03013370027132 2.19499988231411 2.63188884013665 3.71357206670431 3.01553490085017 4.01998014693324 7.43838353004431 3.14845336057165 3.58905911883173 1.8531680973567 +raf 3.39114704580865 3.03013370027132 2.08691355651854 5.36129216570943 3.63495111208838 3.17387845893747 3.89385903480047 5.4971682252932 3.87743156065853 4.21803603456465 3.06805293513362 +raf 4.38077585277223 3.26575941076705 2.37024374146786 4.83628190695148 2.90690105984738 1.02604159583327 2.88480071284671 6.81783057145415 3.18221184049661 2.9704144655697 2.71469474382088 +raf 2.75366071235426 3.39114704580865 2.43361335540045 4.52396013056255 3.92197333628131 1.55603713570699 2.58776403522771 6.56526497003536 0 0 1.67335123817775 +raf 5.00394630594546 4.70048036579242 3.00568260440716 5.29831736654804 3.10458667846607 2.58776403522771 3.50855589998265 6.67329796776765 2.61739583283408 3.29212628660779 3.4904285153901 +raf 4.45201900649392 3.17387845893747 3.34638914516716 4.95582705760126 4.71849887129509 4.20916023665068 5.18178355029209 6.89871453432999 2.77258872223978 3.23080439573347 0 +raf 3.95699637107088 3.6163087612791 1.03318448334565 5.67675380226828 3.58905911883173 2.75366071235426 4.0842942263686 7.43838353004431 3.06805293513362 3.23080439573347 2.28442112236637 +raf 5.07517381523383 5.05624580534831 3.13113691056019 4.38077585277223 4.34380542185368 1.66392609771817 3.09557760852371 6.74641212857337 3.20274644293832 2.85070650150373 2.43361335540045 +raf 4.59612944133594 2.97552956623647 2.81540871942271 2.14943391349987 3.58905911883173 3.17387845893747 3.81330703248899 5.64897423816121 3.34638914516716 3.69635146895264 1.97823903617067 +raf 3.44361809754611 2.94968833505258 2.33214389523559 4.64439089914137 3.18221184049661 3.21084365317094 3.4904285153901 5.40717177146012 0.425267735404344 1.79840401194672 1.32175583998232 +raf 2.66025953726586 3.09557760852371 2.60268968544438 4.53367418428302 3.73289633953071 2.7408400239252 3.01553490085017 5.4971682252932 2.86220088092947 3.40119738166216 2.63188884013665 +raf 4.47960696301275 3.96651119071222 3.29953372788566 4.01998014693324 3.7864597824528 3.51749783735832 3.95699637107088 5.88332238848828 2.60268968544438 3.74242022104197 4.57779898919196 +raf 3.6609942506244 3.00568260440716 2.05923883436232 4.82028156560504 3.10458667846607 2.62466859216316 3.40784192438082 5.71042701737487 2.84490938381941 2.65324196460721 2.4932054526027 +raf 5.16478597392351 3.89385903480047 2.76000994003292 5.08140436498446 3.40119738166216 3.58073729549423 4.02891675689965 5.59471137960184 2.9391619220656 3.20274644293832 2.79728133483015 +raf 4.8283137373023 4.11087386417331 2.67414864942653 5.15329159449778 3.13983261752775 3.40119738166216 3.87743156065853 5.64897423816121 3.62434093297637 3.59731226058845 2.9704144655697 +raf 3.27336401015227 2.61739583283408 2.02419306744936 1.45628673293993 2.67414864942653 2.62466859216316 3.45315712059287 5.85507192220243 1.01523067972906 2.40694510831829 1.38629436111989 +raf 3.9926809084456 3.10458667846607 2.56494935746154 5.08140436498446 4.13676527810605 3.4626060097908 3.82209829790016 5.64897423816121 3.2188758248682 3.37416870927424 1.59127394180643 +raf 2.58021682959233 1.9154509415706 2.33214389523559 5.18178355029209 3.37416870927424 3.11351530921037 3.64283551561253 5.8111409929767 2.61006979274201 3.3178157727231 2.34180580614733 +raf 2.99573227355399 3.13983261752775 2.67414864942653 5.18738580584075 3.54385368206368 2.42480272571829 3.40784192438082 5.62040086571715 2.34180580614733 2.4423470353692 1.4036429994545 +raf 3.4904285153901 3.03974915897077 2.81540871942271 6.44888939414686 4.78749174278205 1.26694760348732 3.38099467434464 7.40245152081824 3.10458667846607 3.54385368206368 1.81645208181843 +raf 3.41772668361337 3.87743156065853 1.7630170003624 5.11799381241676 2.90690105984738 2.77258872223978 3.19458313229916 6.03548143252476 3.47196645255036 3.75185425327532 2.82137888640921 +raf 4.3267781604434 3.35340671782581 2.61006979274201 4.77068462446567 3.63495111208838 4.0842942263686 4.65396035015752 7.67229245562876 2.77881927199042 2.92316158071916 1.6094379124341 +raf 3.92197333628131 2.99573227355399 2.37954613413017 5.16478597392351 3.26575941076705 3.27336401015227 3.44361809754611 5.82008293035236 3.14845336057165 3.52636052461616 1.82616089594539 +raf 3.55248682920838 3.01553490085017 2.81540871942271 3.13983261752775 2.55722731136763 3.64283551561253 3.95699637107088 6.00881318544259 1.67335123817775 2.36085400111802 0.631271776841858 +raf 3.42751468997953 2.50959926237837 3.40784192438082 5.05624580534831 4.15575319035074 2.9338568698359 3.59731226058845 5.54126354515843 2.72785282839839 3.25424296870549 0.357674444271816 +raf 4.02891675689965 3.31054301339402 1.81645208181843 5.41610040220442 4.27249074760558 2.7408400239252 3.19458313229916 5.85507192220243 2.64617479738412 3.02042488614436 2.47653840011748 +raf 2.79116510781272 2.23108909128898 2.50959926237837 4.37071287477361 3.91202300542815 1.48387468945875 3.04927304048202 5.6937321388027 3.23080439573347 3.51749783735832 1.96009478404727 +raf 2.9391619220656 1.78170913337455 2.50143595173921 4.79579054559674 3.40119738166216 2.97552956623647 3.59731226058845 5.58724865840025 2.88480071284671 3.3178157727231 2.66025953726586 +raf 3.89385903480047 2.2935443483419 0.451075619360217 6.04500531403601 2.73436750941958 2.91235066461494 3.41772668361337 6.16961073249146 3.49953328238302 4.11087386417331 2.00552585872967 +raf 3.01553490085017 2.70805020110221 4.21803603456465 5.01063529409626 2.58776403522771 4.21803603456465 4.82028156560504 7.42952084278646 3.24649099190117 3.60549784517489 1.79009141212736 +raf 3.17387845893747 3.51749783735832 3.09557760852371 2.64617479738412 3.77734810210154 2.94968833505258 3.69635146895264 5.4249500174814 3.36384159511839 3.72328088083127 2.20386912005489 +raf 4.26267987704132 3.10458667846607 1.22377543162212 1.02604159583327 3.18221184049661 3.70622809244855 4.56954300834494 7.45645455517621 2.71469474382088 3.29212628660779 2.42480272571829 +raf 3.31054301339402 3.18221184049661 3.17387845893747 2.16791018966744 3.41772668361337 2.24812890719799 3.15700042115011 6.49375383985169 1.17865499634165 2.03339760317843 1.75440368268429 +raf 3.23080439573347 3.34638914516716 2.37954613413017 4.47049528266149 3.73289633953071 2.18605127673809 2.9338568698359 6.02586597382531 2.70805020110221 3.23867845216438 1.4747630091075 +raf 2.53369681395743 3.26575941076705 3.02042488614436 5.19849703126583 4.3528552573736 4.11087386417331 4.67282883446191 7.66340766489348 2.84490938381941 3.08648663682246 2.79116510781272 +raf 5.10594547390058 3.62434093297637 2.79116510781272 5.40717177146012 4.20020495292158 2.35137525716348 3.03013370027132 6.08904487544685 3.23867845216438 3.63495111208838 2.79116510781272 +raf 4.16511363311031 3.29212628660779 3.53514535417189 6.03548143252476 4.72738781871234 3.23080439573347 4.20916023665068 7.15070145759253 3.23080439573347 3.69635146895264 2.90690105984738 +raf 3.60549784517489 2.12226153886276 1.97823903617067 6.36818718635049 4.88280192258637 3.20274644293832 4.00186370942794 5.8111409929767 3.13113691056019 3.67882911826043 2.67414864942653 +raf 4.43438186500781 3.87743156065853 2.3887627892351 4.8283137373023 2.89591193827178 2.88480071284671 3.58073729549423 5.82008293035236 3.07731226054641 3.25424296870549 2.07819075977818 +raf 2.15871472257434 3.11351530921037 1.66392609771817 5.52146091786225 3.65065824129374 2.99573227355399 3.62434093297637 6.51174532964473 1.05082162483176 1.16002091679675 2.60268968544438 +raf 2.02419306744936 1.59127394180643 0.970778917158225 5.91889385427315 2.94968833505258 2.7408400239252 3.53514535417189 5.4249500174814 3.06805293513362 3.17387845893747 2.32238772029023 +raf 3.41772668361337 3.62434093297637 2.19499988231411 4.59612944133594 3.36384159511839 2.28442112236637 3.03013370027132 6.35957386867238 2.79728133483015 3.19458313229916 2.70136121295141 +raf 2.06812778177956 3.07731226054641 2.20386912005489 5.24174701505964 2.9338568698359 4.13676527810605 4.56954300834494 7.54644627374602 2.02419306744936 1.95160817016995 3.90399083373088 +raf 1.96990565461153 2.79116510781272 2.56494935746154 4.64439089914137 3.66867674679642 1.62727783056243 2.81540871942271 6.62936325343745 2.71469474382088 2.9391619220656 0.398776119957368 +raf 4.66343909411207 3.53514535417189 3.4626060097908 4.07414185490458 4.20916023665068 2.66025953726586 3.70622809244855 5.63835466933375 2.90690105984738 3.18221184049661 2.23108909128898 +raf 4.55071400019203 4.41642806139121 2.55722731136763 4.97673374242057 3.36384159511839 3.17387845893747 4.14630430115281 7.33953769540767 3.18221184049661 3.6163087612791 2.36085400111802 +raf 4.04830062372069 3.24649099190117 2.77881927199042 3.72328088083127 3.39114704580865 3.03013370027132 3.32862668882732 5.55682806169954 3.52636052461616 3.75887182593397 2.11384296839717 +raf 2.79728133483015 3.03013370027132 1.9154509415706 2.66025953726586 3.41772668361337 1.9154509415706 2.76000994003292 6.1527326947041 2.42480272571829 3.03974915897077 3.55248682920838 +raf 4.22683374526818 3.86702563949741 2.20386912005489 3.25424296870549 3.49953328238302 3.75185425327532 4.29045944114839 7.06987412845857 3.48124008933569 3.77734810210154 2.12226153886276 +raf 2.66025953726586 2.7408400239252 2.64617479738412 4.79579054559674 3.31054301339402 3.3357695763397 3.8416005411316 6.42162226780652 2.92316158071916 3.13983261752775 2.2213750375685 +raf 4.46129981556839 3.40784192438082 1.51951320490611 6.32256523992728 4.5152454784601 3.02042488614436 3.52636052461616 5.99146454710798 3.11351530921037 3.74242022104197 2.4932054526027 +raf 3.38099467434464 3.75185425327532 1.78170913337455 2.9391619220656 3.40119738166216 4.3528552573736 4.80402104473326 6.97073007814353 2.87919845729804 2.96010509591084 1.51951320490611 +raf 3.60549784517489 3.16547504814109 3.3357695763397 5.72031177660741 4.56017282005736 1.07158361628019 2.64617479738412 6.91671502035361 3.19458313229916 3.59731226058845 2.15871472257434 +raf 4.20916023665068 3.48124008933569 2.87919845729804 5.19849703126583 3.3178157727231 2.53369681395743 3.13983261752775 6.07993319509559 3.75887182593397 4.15575319035074 1.51951320490611 +raf 3.4904285153901 2.77258872223978 2.32238772029023 3.55248682920838 2.484906649788 2.68102152871429 3.25424296870549 6.01615715969835 3.41772668361337 3.75185425327532 2.15871472257434 +raf 3.56104608260405 3.85862222870103 2.57261223020711 5.4249500174814 3.8416005411316 2.42480272571829 3.38099467434464 5.62040086571715 3.00568260440716 2.80336038090653 0.783901543828409 +raf 4.27249074760558 3.85862222870103 2.75366071235426 5.37063802812766 3.01553490085017 2.37024374146786 2.96010509591084 5.80211837537706 0.3293037471426 2.2213750375685 1.06125650212434 +raf 4.45201900649392 3.64283551561253 2.58021682959233 5.21493575760899 3.73289633953071 2.99573227355399 4.39814601655377 7.25841215059531 4.34380542185368 4.79579054559674 3.85014760171006 +raf 4.20020495292158 2.90690105984738 2.46809953147162 4.78749174278205 3.52636052461616 3.59731226058845 3.93963817246112 6.07993319509559 3.09557760852371 2.88480071284671 1.19694818938897 +raf 2.83321334405622 1.4747630091075 1.31372366828506 5.54907608489522 3.50855589998265 2.14943391349987 3.10458667846607 6.26909628370626 2.89591193827178 2.70136121295141 1.69927861643389 +raf 4.12874598893943 3.4904285153901 1.94304891677428 4.85981240436167 3.29953372788566 2.77258872223978 3.55248682920838 6.27852142416584 2.96010509591084 3.50855589998265 2.73436750941958 +raf 3.58073729549423 2.60268968544438 1.82616089594539 6.25190388316589 4.33598269617247 2.50959926237837 3.90399083373088 7.70841066725737 3.37416870927424 3.67882911826043 2.73436750941958 +raf 4.14630430115281 3.6163087612791 3.58073729549423 5.12396397940326 4.81218435537242 3.16547504814109 3.74242022104197 5.57594910314632 2.96010509591084 3.43720781918519 0.488580014818671 +raf 4.3267781604434 2.68102152871429 1.4655675420144 5.01727983681492 3.58073729549423 1.8531680973567 3.8416005411316 5.98141421125448 3.20274644293832 3.64283551561253 2.47653840011748 +raf 4.10098910494077 3.27336401015227 2.01490302054226 2.73436750941958 3.85014760171006 3.48124008933569 4.24563400976833 7.0604763659998 2.54160199346455 3.15700042115011 2.26695791535089 +raf 4.78749174278205 4.67282883446191 2.00552585872967 5.06259503302697 4.00186370942794 2.99573227355399 3.48124008933569 5.63121178182137 3.39114704580865 3.8416005411316 2.4423470353692 +raf 3.59731226058845 2.94968833505258 3.14845336057165 5.63121178182137 4.61512051684126 2.61006979274201 3.13113691056019 5.63121178182137 3.6163087612791 3.59731226058845 2.70136121295141 +raf 3.35340671782581 3.09557760852371 2.18605127673809 2.72785282839839 4.15575319035074 3.29212628660779 4.254193263164 6.54821910276237 3.05870707271538 3.54385368206368 1.62727783056243 +raf 2.15871472257434 2.7408400239252 2.67414864942653 3.73289633953071 3.02042488614436 3.08648663682246 3.68887945411394 5.35185813347607 3.37416870927424 3.55248682920838 3.01553490085017 +raf 3.92197333628131 2.7408400239252 1.36609165380237 6.25958146406492 4.19116874685764 1.08856195281461 2.4932054526027 7.05185562295589 2.79728133483015 3.29953372788566 1.97823903617067 +raf 3.65065824129374 3.41772668361337 2.57261223020711 3.05870707271538 3.19458313229916 2.81540871942271 4.0926765051214 6.77308037565554 3.36384159511839 3.25424296870549 2.79728133483015 +raf 2.23964529322017 2.87919845729804 1.15057202759882 5.43372200355424 3.54385368206368 2.23108909128898 2.61006979274201 6.22455842927536 3.58905911883173 4.02891675689965 2.79116510781272 +raf 2.91235066461494 2.36085400111802 2.25758772706331 4.46129981556839 3.09557760852371 3.52636052461616 3.75887182593397 5.73979291217923 3.13113691056019 3.2188758248682 1.82616089594539 +raf 3.29212628660779 2.90690105984738 1.62727783056243 5.17048399503815 3.53514535417189 3.47196645255036 3.79548918917219 5.88332238848828 3.07731226054641 3.48124008933569 2.20386912005489 +raf 2.94968833505258 3.07731226054641 2.12226153886276 5.0998664278242 4.0926765051214 1.45628673293993 3.65065824129374 6.88959130835447 3.50855589998265 3.75185425327532 2.05923883436232 +raf 3.56104608260405 2.484906649788 2.53369681395743 4.74493212836325 3.80443779474821 4.20020495292158 5.17048399503815 6.68336094576627 3.51749783735832 3.8416005411316 2.33214389523559 +raf 3.56104608260405 2.72785282839839 1.27815220250019 5.18738580584075 3.69635146895264 2.51769647261099 3.4904285153901 6.30444880242198 2.89591193827178 3.27336401015227 2.9338568698359 +raf 3.68887945411394 3.11351530921037 0 6.60258789218934 4.15575319035074 3.14845336057165 3.23080439573347 5.68357976733868 3.21084365317094 3.62434093297637 2.76000994003292 +raf 4.43438186500781 3.25424296870549 3.15700042115011 3.21084365317094 2.89591193827178 1.79009141212736 2.36085400111802 6.67329796776765 3.35340671782581 3.56104608260405 2.56494935746154 +raf 1.24126858906963 2.77881927199042 2.4423470353692 4.69134788222914 3.2846635654062 2.57261223020711 3.44361809754611 6.4393503711001 3.35340671782581 3.4626060097908 2.7408400239252 +raf 3.62434093297637 2.46809953147162 3.64283551561253 5.89989735358249 4.38077585277223 1.6467336971778 3.11351530921037 6.80903930604298 3.27336401015227 3.60549784517489 2.11384296839717 +raf 4.48863636973214 3.51749783735832 2.62466859216316 3.34638914516716 2.80336038090653 4.3267781604434 5.4249500174814 7.23128700432762 2.94968833505258 3.26575941076705 1.88858365386359 +raf 4.21803603456465 2.94968833505258 3.06805293513362 3.76815263500844 4.05698877567833 3.68887945411394 4.01096295328305 6.51174532964473 2.54160199346455 2.72785282839839 2.09556092355972 +raf 3.01553490085017 2.61739583283408 1.88858365386359 2.43361335540045 2.79728133483015 3.40784192438082 3.82209829790016 6.03548143252476 3.21084365317094 3.11351530921037 1.5830939370945 +raf 2.68784749378469 2.83321334405622 2.90690105984738 3.05870707271538 3.32862668882732 3.80443779474821 4.02891675689965 5.78382518232974 3.21084365317094 3.2846635654062 2.35137525716348 +raf 2.98568193770049 2.91235066461494 2.33214389523559 2.91235066461494 2.34180580614733 3.68887945411394 4.82028156560504 6.62007320653036 3.16547504814109 3.32862668882732 1.18784342239605 +raf 3.82209829790016 2.65324196460721 0 6.07993319509559 4.01096295328305 2.39789527279837 3.01553490085017 5.76519110278484 2.92316158071916 3.42751468997953 1.14103300455206 +raf 4.254193263164 4.01998014693324 4.06560209335645 5.28826703069454 4.03777421073371 2.36085400111802 2.23964529322017 5.88332238848828 3.18221184049661 2.82137888640921 2.54160199346455 +raf 1.4655675420144 0.00995033085316809 1.96990565461153 1.6094379124341 0.371563556432483 1.77155676191054 2.86220088092947 5.96357934361845 3.17387845893747 3.18221184049661 2.36085400111802 +raf 3.80443779474821 3.88567903008854 2.62466859216316 5.4249500174814 3.4904285153901 1.41098697371026 3.03013370027132 6.31354804627709 2.7408400239252 3.16547504814109 3.16547504814109 +raf 4.06560209335645 2.87919845729804 2.75366071235426 5.59471137960184 3.79548918917219 2.80336038090653 3.69635146895264 5.93753620508243 3.23867845216438 3.01553490085017 2.08691355651854 +raf 3.81330703248899 3.77734810210154 3.71357206670431 5.28826703069454 5.03043792139244 2.70136121295141 3.05870707271538 5.29831736654804 3.13113691056019 3.13113691056019 2.45958884180371 +raf 4.0926765051214 2.73436750941958 2.40694510831829 4.36182392735636 2.09556092355972 2.2935443483419 3.54385368206368 6.89871453432999 2.87919845729804 3.4626060097908 1.63705307946707 +raf 3.74242022104197 2.75366071235426 2.34180580614733 5.26269018890489 2.39789527279837 3.42751468997953 3.76815263500844 5.94542060860658 2.86789890204411 3.13983261752775 0.828551817566148 +raf 2.71469474382088 2.41591377830105 2.50143595173921 5.6021188208797 3.80443779474821 2.72785282839839 3.93963817246112 7.71735127218533 0 1.59127394180643 0.425267735404344 +raf 4.28082412916472 3.70622809244855 2.83321334405622 4.47960696301275 3.16547504814109 2.62466859216316 3.24649099190117 5.76519110278484 3.25424296870549 3.52636052461616 2.27521389619791 +raf 4.47049528266149 4.19116874685764 2.45958884180371 4.79579054559674 3.24649099190117 3.11351530921037 3.6163087612791 6.01615715969835 2.75366071235426 2.81540871942271 0.451075619360217 +raf 3.43720781918519 3.18221184049661 2.50959926237837 4.49758497530815 3.74242022104197 3.6609942506244 4.01998014693324 5.79301360838414 3.31054301339402 3.8308129500026 2.3887627892351 +raf 3.94931879017184 3.17387845893747 1.01523067972906 5.6021188208797 3.69635146895264 3.23080439573347 3.36384159511839 5.35185813347607 3.10458667846607 3.4904285153901 1.87946504964716 +raf 3.88567903008854 2.99573227355399 2.19499988231411 2.23108909128898 3.59731226058845 2.3887627892351 3.03974915897077 5.99893656194668 2.91235066461494 3.49953328238302 2.41591377830105 +raf 4.24563400976833 3.27336401015227 2.43361335540045 5.14749447681345 4.01998014693324 3.74242022104197 4.91265488573605 6.47543271670409 1.73518911773966 1.63705307946707 2.50143595173921 +raf 3.80443779474821 2.79728133483015 1.99741770620125 5.73009978297357 3.67882911826043 0.559615787935423 3.07731226054641 6.74641212857337 3.11351530921037 3.38099467434464 2.3887627892351 +raf 4.71849887129509 3.54385368206368 2.70136121295141 4.64439089914137 3.68887945411394 2.94968833505258 3.3357695763397 5.61312810638807 2.73436750941958 2.85070650150373 2.23964529322017 +raf 3.73289633953071 2.99573227355399 1.27815220250019 2.60268968544438 3.6609942506244 3.92986292355648 4.37071287477361 7.10578612948127 0 2.45958884180371 1.94304891677428 +raf 4.46129981556839 3.40119738166216 2.42480272571829 5.05624580534831 3.13983261752775 3.06805293513362 3.9759363311718 6.32256523992728 0.215111379616945 1.32175583998232 1.68268837417369 +raf 4.13676527810605 3.39114704580865 2.09556092355972 5.6021188208797 3.79548918917219 3.8416005411316 4.46129981556839 7.14124512235049 2.4932054526027 2.40694510831829 0.837247524533702 +raf 4.33598269617247 4.04830062372069 1.51072193949494 2.61739583283408 2.47653840011748 3.24649099190117 3.85014760171006 5.8636311755981 3.98527346716774 4.28082412916472 2.13179677201376 +raf 4.11903717481247 3.14845336057165 2.79116510781272 5.63835466933375 3.96651119071222 3.18221184049661 4.66343909411207 7.33953769540767 3.00568260440716 3.44361809754611 2.62466859216316 +pkc 5.17048399503815 5.68357976733868 5.82008293035236 6.46769872610435 2.27521389619791 2.91235066461494 4.61512051684126 1.79009141212736 4.53367418428302 6.22455842927536 4.95582705760126 +pkc 4.83628190695148 5.31811999384422 5.0998664278242 5.73009978297357 0.928219302739429 4.59612944133594 6.72743172485086 2.82137888640921 7.21376830811864 8.76966250811227 7.65444322647011 +pkc 6.07073772800249 6.56526497003536 5.4510384535657 6.04500531403601 2.15871472257434 3.17387845893747 5.01063529409626 1.13462272619114 4.5152454784601 6.18826412308259 5.30826769740121 +pkc 5.08140436498446 5.51342874616498 5.89164421182577 6.49375383985169 1.8531680973567 4.24563400976833 6.22455842927536 2.19499988231411 7.21376830811864 8.84159284680318 8.46379241468912 +pkc 5.01727983681492 5.54907608489522 4.53367418428302 5.14749447681345 2.66025953726586 3.85014760171006 5.97126183979046 3.27336401015227 4.24563400976833 6.04500531403601 6.03548143252476 +pkc 6.35957386867238 6.94408720822953 5.50533153593236 6.65544035036765 3.49953328238302 3.89385903480047 5.76519110278484 2.36085400111802 3.4904285153901 5.10594547390058 4.87519732320115 +pkc 5.72031177660741 6.18001665365257 7.27655640271871 7.67229245562876 4.49758497530815 3.63495111208838 5.45958551414416 2.25758772706331 5.51342874616498 7.26752542782817 6.62007320653036 +pkc 5.44241771052179 6.01615715969835 5.47646355193151 6.02586597382531 2.2935443483419 3.44361809754611 5.52146091786225 1.03318448334565 4.40671924726425 6.24222326545517 4.94875989037817 +pkc 7.46565531013406 7.72621265050753 4.59612944133594 5.21493575760899 1.67335123817775 3.87743156065853 5.91889385427315 1.88858365386359 5.97126183979046 7.68109900153636 6.79122146272619 +pkc 5.25227342804663 5.62040086571715 5.5683445037611 6.19644412779452 1.10525683138678 3.48124008933569 5.16478597392351 1.98787434815435 3.56953269648137 5.32300997913841 6.58340922215876 +pkc 6.18001665365257 6.57507584059962 6.92559519711047 7.50163445788341 4.254193263164 4.41642806139121 6.29526600143965 1.68268837417369 3.6163087612791 5.37063802812766 6.58340922215876 +pkc 5.52146091786225 6.05443934626937 5.16478597392351 5.89164421182577 0.488580014818671 3.74242022104197 5.61312810638807 2.55722731136763 3.56104608260405 5.25227342804663 4.90527477843843 +pkc 5.68357976733868 6.13339804299665 4.62497281328427 5.29831736654804 1.16002091679675 3.14845336057165 4.76217393479776 1.51951320490611 4.91998092582813 6.58340922215876 5.95324333428778 +pkc 2.84490938381941 3.7864597824528 5.48479693349065 5.99893656194668 1.92424865227413 2.61006979274201 5.03043792139244 1.9154509415706 4.0926765051214 5.89164421182577 4.98360662170834 +pkc 5.89989735358249 6.36818718635049 6.22455842927536 6.81783057145415 3.89385903480047 2.9391619220656 4.64439089914137 2.40694510831829 4.98360662170834 6.68336094576627 5.4249500174814 +pkc 6.92559519711047 7.39326309476384 4.70048036579242 5.34233425196481 1.37624402526639 3.98527346716774 5.99893656194668 1.05082162483176 3.9926809084456 5.73009978297357 5.64897423816121 +pkc 6.4393503711001 6.74641212857337 5.63835466933375 6.11589212548303 2.51769647261099 4.39814601655377 6.33150184989369 2.70805020110221 5.63121178182137 7.46565531013406 6.55677835615804 +pkc 5.16478597392351 5.57594910314632 4.11903717481247 4.82028156560504 1.32175583998232 4.12874598893943 6.05443934626937 1.97823903617067 5.25227342804663 6.98841318199959 5.84643877505772 +pkc 6.8001700683022 7.3125534981026 6.39526159811545 6.98841318199959 4.00186370942794 4.29045944114839 6.03548143252476 2.02419306744936 4.36182392735636 6.16120732169508 5.39816270151775 +pkc 6.01615715969835 6.63856778916652 5.12396397940326 5.89164421182577 2.21266038546606 3.17387845893747 4.91998092582813 2.39789527279837 5.26269018890489 6.92559519711047 6.80903930604298 +pkc 5.13579843705026 5.73979291217923 4.68213122712422 5.33271879326537 0.908258560176891 5.26269018890489 7.26752542782817 3.70622809244855 5.11799381241676 6.81783057145415 5.92692602597041 +pkc 5.08140436498446 5.65599181081985 6.06145691892802 6.76388490856244 1.48387468945875 3.55248682920838 5.62040086571715 0.215111379616945 4.13676527810605 5.50533153593236 4.68213122712422 +pkc 5.92692602597041 6.50279004591562 6.52941883826223 7.19593722647557 2.14124194258528 4.00186370942794 5.82894561761021 2.50143595173921 5.41610040220442 7.20489251020467 5.99893656194668 +pkc 2.57261223020711 2.34180580614733 5.88332238848828 6.30444880242198 2.12226153886276 4.01998014693324 5.74620319054015 2.31253542384721 4.49758497530815 6.32256523992728 5.03695260241363 +pkc 5.37989735354046 5.90808293816893 5.74620319054015 6.26909628370626 1.79840401194672 3.88567903008854 5.80211837537706 1.13462272619114 5.82008293035236 7.50163445788341 5.5683445037611 +pkc 4.77912349311153 5.10594547390058 5.89989735358249 6.40357419793482 2.36085400111802 4.17284762371004 6.22455842927536 2.70805020110221 3.88567903008854 5.75574221358691 5.34233425196481 +pkc 5.08140436498446 5.47646355193151 6.5206211275587 7.02464903045364 3.2188758248682 3.50855589998265 5.54907608489522 3.42751468997953 3.11351530921037 5.06259503302697 3.77734810210154 +pkc 3.66867674679642 4.05698877567833 6.02586597382531 6.68336094576627 1.08856195281461 4.16511363311031 5.8636311755981 2.62466859216316 4.89034912822175 6.54821910276237 4.76217393479776 +pkc 6.79122146272619 7.24921505711439 5.06259503302697 5.50533153593236 2.32238772029023 3.76815263500844 5.5683445037611 2.26695791535089 3.63495111208838 5.50533153593236 4.69134788222914 +pkc 4.40671924726425 4.94875989037817 5.78382518232974 6.36818718635049 1.8531680973567 3.80443779474821 5.54907608489522 2.18605127673809 6.77308037565554 8.37378460812088 6.69208374250663 +pkc 4.20916023665068 4.60517018598809 5.63121178182137 6.04500531403601 2.11384296839717 4.0926765051214 5.97126183979046 1.52822785700856 4.41642806139121 6.05443934626937 5.63835466933375 +pkc 5.90808293816893 6.36818718635049 5.90808293816893 6.5206211275587 1.65441127807683 4.23700086262362 6.22455842927536 2.04122032885964 2.87919845729804 4.59612944133594 3.85862222870103 +pkc 5.2257466737132 5.74620319054015 5.93753620508243 6.46769872610435 3.4626060097908 4.01096295328305 5.94542060860658 2.35137525716348 4.68213122712422 6.58340922215876 5.51342874616498 +pkc 7.12367278520461 7.49220304261874 6.92559519711047 7.40245152081824 3.79548918917219 4.02891675689965 5.90808293816893 2.67414864942653 4.10098910494077 5.83773044716594 5.14749447681345 +pkc 5.55682806169954 6.01615715969835 4.92725368515721 5.30826769740121 0.3293037471426 4.18205014264121 6.13339804299665 2.28442112236637 3.40784192438082 5.05624580534831 5.31811999384422 +pkc 6.06145691892802 6.51174532964473 4.65396035015752 5.29831736654804 1.37624402526639 4.28082412916472 6.1527326947041 2.98568193770049 6.71901315438526 8.31996102188653 7.3125534981026 +pkc 5.40717177146012 5.78382518232974 6.70073110954781 7.24921505711439 2.82137888640921 3.75185425327532 5.51342874616498 2.50143595173921 4.20020495292158 5.75574221358691 4.66343909411207 +pkc 4.50645421304893 4.90527477843843 6.18826412308259 6.93439720992856 4.11087386417331 4.68213122712422 6.59304453414244 1.96009478404727 2.81540871942271 4.49758497530815 3.45315712059287 +pkc 5.23644196282995 5.89164421182577 5.87211778947542 6.47543271670409 2.70136121295141 4.24563400976833 6.16961073249146 1.95160817016995 3.98527346716774 5.76519110278484 4.64439089914137 +pkc 5.6937321388027 6.24222326545517 5.77455154554441 6.44888939414686 0.157003748809665 3.07731226054641 4.67282883446191 2.2213750375685 3.41772668361337 5.28826703069454 4.7361984483945 +pkc 5.15329159449778 5.7037824746562 6.80903930604298 7.3664451483276 2.72785282839839 2.89591193827178 4.72738781871234 0.837247524533702 4.63472898822964 6.36818718635049 4.98360662170834 +pkc 5.82008293035236 6.29526600143965 6.32256523992728 6.93439720992856 0.845868267577609 2.86789890204411 4.65396035015752 4.41642806139121 5.4249500174814 7.11476944836646 6.60258789218934 +pkc 5.04342511691925 5.40717177146012 3.87743156065853 4.41642806139121 2.79116510781272 2.41591377830105 4.0926765051214 4.70048036579242 4.20916023665068 6.06145691892802 4.77912349311153 +pkc 6.880384082186 7.3125534981026 6.52941883826223 7.12367278520461 2.20386912005489 5.27811465923052 7.21376830811864 4.26267987704132 6.55677835615804 8.18507147753228 6.81783057145415 +pkc 5.8111409929767 6.26909628370626 4.43438186500781 5.07517381523383 3.02042488614436 3.53514535417189 5.47646355193151 1.78170913337455 4.254193263164 5.98141421125448 5.11799381241676 +pkc 4.11087386417331 4.33598269617247 4.81218435537242 5.62040086571715 2.63188884013665 4.38077585277223 6.21460809842219 2.14124194258528 6.59304453414244 8.23004431012611 7.69028602067677 +pkc 6.02586597382531 6.64639051484773 5.3890717298165 5.96357934361845 2.79728133483015 3.79548918917219 5.73009978297357 0.542324290825362 3.74242022104197 5.6937321388027 5.20948615284142 +pkc 5.4249500174814 5.98141421125448 5.19849703126583 5.78382518232974 2.27521389619791 3.12236492448736 4.7361984483945 0.512823626428664 6.88959130835447 8.46379241468912 7.37525577800975 +pkc 6.54821910276237 6.98841318199959 6.50279004591562 7.01571242048723 3.67882911826043 3.86702563949741 5.54126354515843 2.18605127673809 3.58905911883173 5.31811999384422 3.9759363311718 +pkc 5.4249500174814 5.83773044716594 5.13579843705026 5.82894561761021 3.02042488614436 3.70622809244855 5.36129216570943 2.2935443483419 5.4971682252932 7.18690102041163 7.10578612948127 +pkc 5.99146454710798 6.4393503711001 5.03043792139244 5.47646355193151 1.51072193949494 3.81330703248899 5.75574221358691 2.4932054526027 4.62497281328427 6.39526159811545 4.50645421304893 +pkc 5.14749447681345 5.6937321388027 7.09672137849476 7.56423847517049 2.88480071284671 4.76217393479776 6.58340922215876 2.20386912005489 3.42751468997953 5.25227342804663 4.40671924726425 +pkc 5.83773044716594 6.26909628370626 5.23644196282995 5.89989735358249 2.23964529322017 4.29045944114839 6.19644412779452 2.06812778177956 3.85862222870103 5.79301360838414 5.53338948872752 +pkc 4.48863636973214 5.01727983681492 4.8283137373023 5.65599181081985 1.54756250871601 3.38099467434464 5.25227342804663 1.55603713570699 4.11087386417331 5.84643877505772 4.87519732320115 +pkc 5.01727983681492 5.5683445037611 5.71042701737487 6.23244801655052 0.765467842139571 2.68784749378469 5.12396397940326 1.60140574073684 5.8636311755981 7.58222919427646 7.25841215059531 +pkc 3.7864597824528 4.46129981556839 4.8283137373023 5.37063802812766 1.9154509415706 3.9926809084456 5.96357934361845 2.80336038090653 2.71469474382088 4.34380542185368 6.8627579130514 +pkc 5.8636311755981 6.36818718635049 4.91998092582813 5.54907608489522 2.32238772029023 3.43720781918519 5.24174701505964 2.1770218700187 4.40671924726425 6.14418563412565 5.16478597392351 +pkc 7.7621706071382 8.21202580462344 7.00669522683704 7.51914995766982 2.27521389619791 3.85014760171006 5.59471137960184 2.2935443483419 4.74493212836325 6.77308037565554 4.89034912822175 +pkc 4.91998092582813 5.41610040220442 5.15329159449778 5.66642668811243 2.39789527279837 3.26575941076705 5.01063529409626 0 5.39816270151775 7.07834157955767 6.02586597382531 +pkc 6.19644412779452 6.70073110954781 4.79579054559674 5.5683445037611 0.00995033085316809 3.47196645255036 5.04342511691925 1.55603713570699 6.13339804299665 7.80710329012598 5.25227342804663 +pkc 4.91265488573605 5.18178355029209 5.57594910314632 6.10702288774225 2.03339760317843 3.3178157727231 5.39816270151775 2.20386912005489 5.63121178182137 7.35755620091035 6.60258789218934 +pkc 5.26269018890489 5.84643877505772 5.44241771052179 5.97126183979046 1.6094379124341 4.64439089914137 6.5206211275587 2.18605127673809 5.64897423816121 7.34858753092759 6.04500531403601 +pkc 5.6021188208797 5.97126183979046 4.85981240436167 5.50533153593236 2.77258872223978 3.6163087612791 5.44241771052179 2.46809953147162 4.33598269617247 6.25190388316589 5.19849703126583 +pkc 5.01727983681492 5.66642668811243 3.9759363311718 4.20916023665068 4.01998014693324 4.58700621536042 6.48463523563525 2.70136121295141 3.26575941076705 5.12396397940326 2.67414864942653 +pkc 6.26909628370626 6.76388490856244 5.44241771052179 5.97126183979046 2.96010509591084 4.61512051684126 6.57507584059962 2.51769647261099 5.4971682252932 7.38461038317697 5.85507192220243 +pkc 4.74493212836325 5.37063802812766 5.95324333428778 6.52941883826223 4.19116874685764 3.29212628660779 5.12396397940326 0.943905898907128 4.66343909411207 6.57507584059962 5.87211778947542 +pkc 4.95582705760126 5.37063802812766 5.19849703126583 5.90808293816893 2.58776403522771 3.08648663682246 5.07517381523383 1.35840915763035 5.82894561761021 7.55538194424027 7.18690102041163 +pkc 5.67675380226828 6.07993319509559 6.32256523992728 7.00669522683704 3.08648663682246 3.65065824129374 5.4510384535657 2.84490938381941 3.69635146895264 5.51342874616498 5.4249500174814 +pkc 4.254193263164 4.70048036579242 7.52833176670725 7.98718474823347 4.90527477843843 3.96651119071222 5.87211778947542 1.77155676191054 5.11799381241676 6.88959130835447 5.29831736654804 +pkc 4.84418708645859 5.41610040220442 5.15329159449778 5.78382518232974 1.11514159061932 3.86702563949741 5.72031177660741 3.32862668882732 5.28826703069454 7.09672137849476 6.46769872610435 +pkc 5.94542060860658 6.42162226780652 5.59471137960184 6.25190388316589 2.71469474382088 4.07414185490458 6.07073772800249 2.23964529322017 6.96129604591017 8.57168137670031 7.1777824161952 +pkc 4.254193263164 4.50645421304893 5.92692602597041 6.46769872610435 2.50959926237837 3.21084365317094 4.88280192258637 1.92424865227413 5.48479693349065 7.27655640271871 6.82654522355659 +pkc 6.22455842927536 6.87212810133899 5.48479693349065 6.10702288774225 0 4.47049528266149 6.35957386867238 2.58021682959233 5.74620319054015 7.39326309476384 6.13339804299665 +pkc 7.3125534981026 7.71735127218533 5.37989735354046 5.88332238848828 1.90657514365664 3.73289633953071 5.18178355029209 2.05923883436232 5.41610040220442 7.21376830811864 6.16961073249146 +pkc 5.47646355193151 5.93753620508243 5.54126354515843 6.04500531403601 0.494696241836107 4.17284762371004 6.1527326947041 1.11514159061932 4.50645421304893 6.36818718635049 5.27299955856375 +pkc 5.72031177660741 6.07993319509559 5.96357934361845 6.62936325343745 2.66025953726586 3.64283551561253 5.39816270151775 0.307484699747961 3.24649099190117 4.76217393479776 4.66343909411207 +pkc 5.89989735358249 6.34035930372775 4.86753445045558 5.46806014113513 2.30258509299405 4.18205014264121 5.82894561761021 3.02042488614436 7.0604763659998 8.6436496153688 7.22256601882217 +pkc 5.76519110278484 6.25958146406492 6.11589212548303 6.81783057145415 3.09557760852371 3.53514535417189 5.45958551414416 1.87946504964716 3.75887182593397 5.35185813347607 5.37989735354046 +pkc 5.32300997913841 5.72031177660741 6.62936325343745 7.18690102041163 2.61739583283408 2.94968833505258 4.55071400019203 4.254193263164 4.11903717481247 5.85507192220243 5.82008293035236 +pkc 7.94200680848986 8.33782726244791 5.74620319054015 6.39526159811545 2.62466859216316 3.59731226058845 5.48479693349065 2.19499988231411 4.59612944133594 6.46769872610435 5.4249500174814 +pkc 5.14749447681345 5.5683445037611 6.27852142416584 6.79122146272619 3.44361809754611 4.21803603456465 6.11589212548303 1.74571553072665 5.92692602597041 7.59135704669855 6.52941883826223 +pkc 4.53367418428302 4.91998092582813 5.73979291217923 6.45833828334479 1.8531680973567 4.42484663185681 6.39526159811545 2.15871472257434 4.56017282005736 6.25958146406492 5.50533153593236 +pkc 5.30826769740121 5.78382518232974 6.61069604471776 7.09672137849476 2.88480071284671 4.21803603456465 5.91889385427315 2.2935443483419 4.33598269617247 6.19644412779452 4.70953020131233 +pkc 5.18178355029209 5.64897423816121 5.67675380226828 6.24222326545517 0 4.16511363311031 6.00881318544259 2.83321334405622 4.17284762371004 5.91889385427315 5.26269018890489 +pkc 5.01727983681492 5.54907608489522 5.27299955856375 5.73979291217923 1.87946504964716 2.68784749378469 3.91202300542815 3.7864597824528 4.95582705760126 6.83625927727707 6.1527326947041 +pkc 5.41610040220442 5.94542060860658 4.56017282005736 5.14749447681345 0.0198026272961797 3.40784192438082 5.2257466737132 2.2213750375685 4.87519732320115 6.63856778916652 5.67675380226828 +pkc 5.17048399503815 5.64897423816121 6.99759598298193 7.51043055637801 3.7864597824528 0.727548607277278 3.62434093297637 2.54160199346455 3.6609942506244 5.57594910314632 4.38949864951258 +pkc 5.37063802812766 5.79301360838414 6.39526159811545 6.93439720992856 2.4423470353692 4.60517018598809 6.39526159811545 3.15700042115011 6.66440902035041 8.24800570160062 7.58222919427646 +pkc 6.1527326947041 6.66440902035041 5.26269018890489 5.82008293035236 2.41591377830105 3.43720781918519 5.16478597392351 2.4423470353692 3.79548918917219 5.54907608489522 4.84418708645859 +pkc 6.84481547920826 7.22256601882217 4.56954300834494 5.23644196282995 2.14943391349987 3.27336401015227 5.29831736654804 1.7263316639056 3.03974915897077 4.84418708645859 3.92986292355648 +pkc 4.85981240436167 5.51342874616498 5.41610040220442 5.92692602597041 1.68268837417369 3.80443779474821 5.94542060860658 0.774727167552368 3.81330703248899 5.52146091786225 5.43372200355424 +pkc 5.74620319054015 6.06145691892802 5.27299955856375 5.95324333428778 2.71469474382088 4.36182392735636 6.25958146406492 3.34638914516716 3.55248682920838 3.95699637107088 7.08757370555797 +pkc 6.07993319509559 6.69208374250663 4.81218435537242 5.4971682252932 1.51951320490611 3.90399083373088 5.65599181081985 4.47960696301275 6.880384082186 8.4368504387337 7.29437729928882 +pkc 5.4249500174814 5.99146454710798 7.34858753092759 7.83399634170946 4.78749174278205 4.48863636973214 6.31354804627709 3.4626060097908 5.23644196282995 7.13249755166004 5.84643877505772 +pkc 6.70073110954781 7.19593722647557 6.25190388316589 6.87212810133899 2.70805020110221 3.88567903008854 5.63121178182137 2.66025953726586 3.6609942506244 5.4971682252932 5.3890717298165 +pkc 4.85981240436167 5.43372200355424 6.40357419793482 6.90775527898214 3.25424296870549 3.75185425327532 5.41610040220442 2.3887627892351 6.35957386867238 7.99598047476376 6.45833828334479 +pkc 5.64897423816121 6.12468339089421 4.98360662170834 5.64897423816121 2.46809953147162 4.03777421073371 5.66642668811243 3.2846635654062 5.82894561761021 7.6182510978767 5.76519110278484 +pkc 5.4971682252932 5.74620319054015 5.76519110278484 6.29526600143965 1.16938135955632 4.30811095172371 6.10702288774225 2.61006979274201 5.54907608489522 7.32118855673948 6.76388490856244 +pkc 5.87211778947542 6.42162226780652 7.22256601882217 7.58222919427646 3.54385368206368 3.71357206670431 5.45958551414416 1.89761985992753 4.82028156560504 6.42162226780652 5.91889385427315 +pkc 5.90808293816893 6.41345895716736 5.11799381241676 5.67675380226828 2.58776403522771 3.95699637107088 6.04500531403601 1.80828877117927 3.00568260440716 3.85014760171006 7.22256601882217 +pkc 5.71042701737487 6.08904487544685 6.60258789218934 7.15070145759253 3.23080439573347 4.23700086262362 5.74620319054015 3.4626060097908 3.58073729549423 5.45958551414416 5.25227342804663 +pkc 5.26269018890489 5.82008293035236 4.19116874685764 4.58700621536042 2.19499988231411 4.29045944114839 6.07993319509559 3.01553490085017 5.44241771052179 7.24921505711439 6.82654522355659 +pkc 5.64897423816121 6.25958146406492 5.87211778947542 6.53958595561767 2.71469474382088 4.28082412916472 6.23244801655052 2.89591193827178 3.38099467434464 4.95582705760126 4.93447393313069 +pkc 4.53367418428302 4.7361984483945 5.93753620508243 6.61069604471776 2.56494935746154 4.97673374242057 6.92559519711047 2.62466859216316 4.64439089914137 6.55677835615804 5.62040086571715 +pkc 4.90527477843843 5.30826769740121 6.06145691892802 6.53958595561767 2.83321334405622 4.04830062372069 5.92692602597041 3.16547504814109 5.13579843705026 6.98841318199959 6.10702288774225 +pkc 7.21376830811864 7.63626960337937 4.7361984483945 5.4510384535657 1.5830939370945 3.56953269648137 5.08140436498446 2.33214389523559 4.68213122712422 6.42162226780652 5.29831736654804 +pkc 5.11799381241676 5.35185813347607 5.45958551414416 6.02586597382531 2.23108909128898 4.8283137373023 6.68336094576627 3.62434093297637 4.62497281328427 6.44888939414686 5.78382518232974 +pkc 6.34035930372775 6.64639051484773 4.27249074760558 4.94875989037817 1.88858365386359 3.53514535417189 5.33271879326537 1.60140574073684 3.85014760171006 5.71042701737487 5.18178355029209 +pkc 5.19849703126583 5.80211837537706 6.18001665365257 6.73696695800186 2.87919845729804 1.31372366828506 3.35340671782581 4.26267987704132 6.88959130835447 8.51779301148821 7.95997452808054 +pkc 6.25190388316589 6.79122146272619 5.62040086571715 6.37672694789863 1.94304891677428 4.68213122712422 6.44888939414686 1.63705307946707 2.97552956623647 4.54223038621422 5.07517381523383 +pkc 7.96901178110648 8.40088406901585 6.54821910276237 7.14124512235049 5.05624580534831 4.01096295328305 5.89989735358249 2.61006979274201 7.07834157955767 8.72469504674049 7.0335064842877 +pkc 5.29831736654804 5.7037824746562 5.66642668811243 6.20657592672493 1.77155676191054 4.15575319035074 5.90808293816893 2.20386912005489 4.53367418428302 6.33150184989369 5.76519110278484 +pkc 4.65396035015752 5.47646355193151 5.77455154554441 6.32256523992728 3.39114704580865 4.95582705760126 6.91671502035361 4.00186370942794 3.8308129500026 5.25227342804663 6.07993319509559 +pkc 5.63121178182137 6.19644412779452 1.53901544813755 2.47653840011748 2.7408400239252 4.02891675689965 5.91889385427315 2.47653840011748 5.23644196282995 7.00669522683704 6.93439720992856 +pkc 5.51342874616498 6.00881318544259 6.04500531403601 6.71901315438526 2.24812890719799 3.48124008933569 5.23644196282995 2.4932054526027 5.18738580584075 6.98007594056176 5.06259503302697 +pkc 6.43133108193348 6.93439720992856 5.43372200355424 6.14418563412565 1.75440368268429 2.70805020110221 4.79579054559674 1.52822785700856 2.88480071284671 4.86753445045558 4.20020495292158 +pkc 4.97673374242057 5.48479693349065 4.97673374242057 5.50533153593236 0.512823626428664 3.70622809244855 5.50533153593236 2.13179677201376 3.3178157727231 5.01063529409626 3.20274644293832 +pkc 4.64439089914137 5.25227342804663 5.29831736654804 5.89989735358249 2.2213750375685 4.37071287477361 5.95324333428778 2.14943391349987 6.54821910276237 8.14002395246292 7.42952084278646 +pkc 6.42162226780652 6.89871453432999 5.37989735354046 5.90808293816893 2.31253542384721 3.69635146895264 5.6937321388027 2.00552585872967 3.43720781918519 5.34233425196481 5.20948615284142 +pkc 6.53958595561767 6.97073007814353 6.7093043402583 7.74413662762799 4.38949864951258 4.5152454784601 6.23244801655052 3.55248682920838 3.75185425327532 5.6021188208797 4.23700086262362 +pkc 4.96284463025991 5.39816270151775 7.3664451483276 7.84306401669205 3.69635146895264 4.48863636973214 6.38687931936265 3.14845336057165 6.29526600143965 7.98718474823347 7.82524529143177 +pkc 5.25227342804663 5.64897423816121 3.79548918917219 4.26267987704132 2.61739583283408 4.20020495292158 5.90808293816893 2.37954613413017 2.87919845729804 4.48863636973214 6.87212810133899 +pkc 4.97673374242057 5.4971682252932 4.7361984483945 5.33271879326537 1.51951320490611 3.79548918917219 5.43372200355424 2.63188884013665 4.01096295328305 5.8111409929767 4.27249074760558 +pkc 6.98007594056176 7.39326309476384 5.62040086571715 6.25958146406492 2.36085400111802 4.27249074760558 6.10702288774225 2.40694510831829 1.13462272619114 3.69635146895264 6.70073110954781 +pkc 5.91889385427315 6.27852142416584 7.14124512235049 7.6004023345004 3.85014760171006 3.32862668882732 5.21493575760899 0.0861776962410524 4.7361984483945 6.59304453414244 5.33271879326537 +pkc 5.73979291217923 6.25190388316589 5.50533153593236 5.99893656194668 2.4423470353692 4.44382703557933 6.07993319509559 2.79728133483015 4.38949864951258 6.16961073249146 5.74620319054015 +pkc 5.3890717298165 5.8636311755981 1.21491274436427 2.72785282839839 3.41772668361337 4.3267781604434 6.23244801655052 2.7408400239252 3.96651119071222 5.84643877505772 5.71042701737487 +pkc 5.63835466933375 6.07073772800249 5.6021188208797 6.13339804299665 2.01490302054226 4.10098910494077 5.82894561761021 2.96010509591084 4.91998092582813 6.74641212857337 5.96357934361845 +pkc 5.52146091786225 6.08904487544685 5.37063802812766 6.03548143252476 2.35137525716348 3.23867845216438 5.24174701505964 0.00995033085316809 7.20489251020467 8.80552505270952 7.95997452808054 +pkc 5.64897423816121 6.07073772800249 5.88332238848828 6.36818718635049 2.23964529322017 2.91235066461494 4.63472898822964 1.61938824328727 4.58700621536042 6.41345895716736 4.87519732320115 +pkc 6.52941883826223 7.09672137849476 5.03043792139244 5.7037824746562 1.68268837417369 4.07414185490458 5.88332238848828 2.62466859216316 3.85862222870103 5.65599181081985 5.90808293816893 +pkc 4.27249074760558 4.91998092582813 6.99759598298193 7.4205789054108 3.40784192438082 3.29212628660779 5.27299955856375 2.25758772706331 4.83628190695148 6.76388490856244 5.45958551414416 +pkc 5.48479693349065 6.03548143252476 5.83773044716594 6.48463523563525 2.30258509299405 4.5152454784601 6.25190388316589 2.25758772706331 3.94931879017184 5.57594910314632 6.18001665365257 +pkc 4.95582705760126 5.36129216570943 5.21493575760899 5.65599181081985 2.76000994003292 2.81540871942271 4.98360662170834 1.75440368268429 0 2.58776403522771 2.55722731136763 +pkc 4.254193263164 4.60517018598809 7.4205789054108 7.80710329012598 4.72738781871234 4.54223038621422 6.34035930372775 3.67882911826043 4.18205014264121 5.93753620508243 4.5152454784601 +pkc 5.59471137960184 6.16120732169508 4.61512051684126 5.28826703069454 2.23108909128898 3.34638914516716 5.20948615284142 3.51749783735832 6.36818718635049 8.01400499477946 7.69938940625674 +pkc 5.73009978297357 6.23244801655052 6.32256523992728 6.82654522355659 2.71469474382088 3.76815263500844 5.18178355029209 2.1770218700187 3.88567903008854 5.71042701737487 4.47049528266149 +pkc 4.92725368515721 5.50533153593236 4.85981240436167 5.55682806169954 2.97552956623647 4.20916023665068 5.89164421182577 3.44361809754611 4.18205014264121 5.93753620508243 6.27852142416584 +pkc 5.82008293035236 6.27852142416584 4.71849887129509 5.25227342804663 1.4655675420144 4.36182392735636 6.21460809842219 1.77155676191054 3.7864597824528 5.57594910314632 5.21493575760899 +pkc 5.30826769740121 5.59471137960184 5.43372200355424 5.92692602597041 2.92316158071916 2.9338568698359 4.66343909411207 1.83418018511201 3.75887182593397 5.52146091786225 5.26269018890489 +pkc 4.82028156560504 5.37989735354046 4.64439089914137 5.2257466737132 3.64283551561253 3.92197333628131 5.80211837537706 3.04927304048202 4.11903717481247 5.99893656194668 6.68336094576627 +pkc 4.95582705760126 5.44241771052179 5.41610040220442 6.02586597382531 0 4.77912349311153 6.56526497003536 2.06812778177956 6.18826412308259 7.95997452808054 6.53958595561767 +pkc 5.73979291217923 6.26909628370626 5.13579843705026 5.63121178182137 2.51769647261099 4.61512051684126 6.51174532964473 3.03013370027132 3.56953269648137 5.2257466737132 4.99043258677874 +pkc 7.24064969425547 7.67229245562876 4.3267781604434 4.77912349311153 0.500775287912489 4.5152454784601 6.34035930372775 3.25424296870549 3.3178157727231 5.14749447681345 4.48863636973214 +pkc 7.38461038317697 7.7621706071382 5.47646355193151 5.92692602597041 0 3.7864597824528 5.41610040220442 2.26695791535089 4.53367418428302 6.4393503711001 4.0842942263686 +pkc 5.34233425196481 5.85507192220243 5.47646355193151 6.07993319509559 1.19694818938897 3.92986292355648 5.57594910314632 2.89591193827178 6.5206211275587 8.13094230223188 7.18690102041163 +pkc 5.01063529409626 5.51342874616498 5.74620319054015 6.41345895716736 2.60268968544438 4.01096295328305 5.6937321388027 4.56017282005736 4.02891675689965 5.87211778947542 5.09375020080676 +pkc 6.07073772800249 6.54821910276237 6.98841318199959 7.52833176670725 0.425267735404344 4.16511363311031 5.94542060860658 2.86220088092947 4.77068462446567 6.66440902035041 5.83773044716594 +pkc 6.55677835615804 7.20489251020467 5.94542060860658 6.36818718635049 1.89761985992753 4.27249074760558 6.07073772800249 2.15871472257434 5.37989735354046 7.11476944836646 6.20657592672493 +pkc 5.88332238848828 6.43133108193348 6.11589212548303 6.89871453432999 3.3357695763397 3.98527346716774 5.89164421182577 1.67335123817775 4.0926765051214 5.83773044716594 4.90527477843843 +pkc 5.10594547390058 5.57594910314632 6.37672694789863 7.02464903045364 1.83418018511201 4.64439089914137 6.41345895716736 3.32862668882732 3.8416005411316 5.68357976733868 4.67282883446191 +pkc 5.3890717298165 5.87211778947542 4.56954300834494 5.09375020080676 2.50143595173921 3.98527346716774 5.6021188208797 0 4.3267781604434 6.03548143252476 5.84643877505772 +pkc 5.28826703069454 5.73009978297357 5.07517381523383 5.72031177660741 1.32175583998232 4.36182392735636 6.56526497003536 4.48863636973214 3.89385903480047 5.72031177660741 4.94875989037817 +pkc 3.04927304048202 2.72785282839839 5.32300997913841 5.98141421125448 2.26695791535089 4.23700086262362 6.34035930372775 2.87919845729804 6.19644412779452 7.90617884039481 6.69208374250663 +pkc 5.73009978297357 6.1527326947041 4.99043258677874 5.43372200355424 1.4747630091075 3.54385368206368 5.19849703126583 1.07158361628019 4.67282883446191 6.39526159811545 5.54126354515843 +pkc 4.80402104473326 5.34233425196481 6.87212810133899 7.33953769540767 2.33214389523559 5.07517381523383 6.78219205600679 4.01096295328305 6.68336094576627 8.31996102188653 7.70841066725737 +pkc 6.45833828334479 7.01571242048723 5.23644196282995 5.85507192220243 2.35137525716348 3.75887182593397 5.76519110278484 2.24812890719799 5.65599181081985 7.41155628781116 5.43372200355424 +pkc 5.40717177146012 5.91889385427315 5.00394630594546 5.54907608489522 1.74571553072665 3.32862668882732 4.72738781871234 0.989541193613748 3.90399083373088 5.71042701737487 5.11799381241676 +pkc 6.25190388316589 6.87212810133899 5.20948615284142 5.79301360838414 1.97823903617067 2.4423470353692 4.68213122712422 1.41098697371026 4.01096295328305 5.93753620508243 5.18738580584075 +pkc 5.37063802812766 5.77455154554441 5.63835466933375 6.31354804627709 1.54756250871601 3.72328088083127 5.43372200355424 2.77258872223978 5.85507192220243 7.51043055637801 5.5683445037611 +pkc 5.15329159449778 5.82894561761021 6.41345895716736 7.11476944836646 1.92424865227413 4.39814601655377 6.21460809842219 2.77258872223978 4.69134788222914 6.42162226780652 5.04342511691925 +pkc 5.96357934361845 6.53958595561767 6.01615715969835 6.57507584059962 2.47653840011748 3.73289633953071 5.29831736654804 2.66025953726586 6.08904487544685 7.78030308790837 6.63856778916652 +pkc 5.8636311755981 6.42162226780652 5.20948615284142 5.54907608489522 1.69009581545155 3.3178157727231 5.28826703069454 1.95160817016995 6.32256523992728 8.02322468471667 6.37672694789863 +pkc 5.55682806169954 5.89164421182577 4.70048036579242 5.34233425196481 2.03339760317843 3.82209829790016 5.6021188208797 2.80336038090653 6.59304453414244 8.22094116828139 6.91671502035361 +pkc 5.40717177146012 5.89164421182577 6.01615715969835 6.59304453414244 2.46809953147162 4.70953020131233 6.49375383985169 2.68102152871429 5.71042701737487 7.40245152081824 6.4393503711001 +pkc 5.85507192220243 6.38687931936265 5.27299955856375 5.82008293035236 2.484906649788 3.65065824129374 5.3890717298165 2.68784749378469 4.37071287477361 6.18826412308259 5.10594547390058 +pkc 5.18738580584075 5.73009978297357 5.01063529409626 6.09807428216624 2.90690105984738 3.92197333628131 5.32300997913841 2.47653840011748 4.20916023665068 6.16961073249146 4.66343909411207 +pkc 5.8636311755981 6.33150184989369 4.99043258677874 5.6021188208797 1.48387468945875 3.49953328238302 5.58724865840025 1.35840915763035 5.99893656194668 7.72621265050753 6.89871453432999 +pkc 5.8636311755981 6.39526159811545 6.07073772800249 6.67329796776765 1.67335123817775 4.56954300834494 6.58340922215876 1.43031124653666 3.11351530921037 4.84418708645859 3.38099467434464 +pkc 5.78382518232974 6.30444880242198 5.07517381523383 5.52146091786225 2.33214389523559 2.77881927199042 4.70953020131233 2.14124194258528 4.52396013056255 6.25190388316589 5.8111409929767 +pkc 8.24800570160062 8.67060073804555 4.8283137373023 5.34233425196481 0.00995033085316809 4.63472898822964 6.26909628370626 2.30258509299405 4.55071400019203 6.35957386867238 5.58724865840025 +pkc 5.65599181081985 6.20657592672493 5.54126354515843 5.96357934361845 0.104360015324243 3.3357695763397 5.16478597392351 1.90657514365664 5.03695260241363 6.74641212857337 5.30826769740121 +pkc 6.06145691892802 6.58340922215876 5.51342874616498 6.02586597382531 2.45958884180371 4.04830062372069 5.67675380226828 2.70805020110221 5.95324333428778 7.65444322647011 7.14124512235049 +pkc 5.06259503302697 5.50533153593236 5.82894561761021 6.48463523563525 1.88858365386359 2.484906649788 4.17284762371004 5.03043792139244 4.87519732320115 6.63856778916652 5.46806014113513 +pkc 5.40717177146012 5.58724865840025 5.95324333428778 6.53958595561767 2.77258872223978 4.83628190695148 6.7093043402583 3.68887945411394 4.66343909411207 6.47543271670409 5.26269018890489 +pkc 5.03695260241363 5.47646355193151 5.6021188208797 6.21460809842219 0.00995033085316809 4.23700086262362 6.09807428216624 2.36085400111802 6.66440902035041 8.25686684897431 6.94408720822953 +pkc 6.06145691892802 6.50279004591562 6.07073772800249 6.67329796776765 3.03013370027132 3.52636052461616 5.41610040220442 1.10525683138678 6.18001665365257 7.78030308790837 6.98841318199959 +pkc 5.99146454710798 6.31354804627709 5.00394630594546 5.51342874616498 0.828551817566148 4.33598269617247 6.18001665365257 1.11514159061932 3.91202300542815 5.80211837537706 4.57779898919196 +pkc 4.94875989037817 5.37063802812766 4.3267781604434 5.01727983681492 1.42069578783722 4.38949864951258 6.14418563412565 3.10458667846607 5.13579843705026 6.96129604591017 5.91889385427315 +pkc 6.18001665365257 6.62936325343745 5.55682806169954 6.19644412779452 2.72785282839839 4.3267781604434 6.16120732169508 2.50959926237837 4.24563400976833 6.02586597382531 5.52146091786225 +pkc 5.06259503302697 5.54907608489522 4.48863636973214 5.18178355029209 2.10413415427021 4.64439089914137 6.36818718635049 2.43361335540045 5.35185813347607 7.18690102041163 7.29437729928882 +pkc 5.87211778947542 6.27852142416584 5.71042701737487 6.34035930372775 2.20386912005489 4.12874598893943 5.89164421182577 2.23964529322017 4.90527477843843 6.68336094576627 5.45958551414416 +pkc 7.50163445788341 7.88833450073865 5.7037824746562 6.24222326545517 2.76000994003292 3.67882911826043 5.55682806169954 1.96990565461153 3.85014760171006 5.78382518232974 5.48479693349065 +pkc 5.25227342804663 5.5683445037611 4.27249074760558 4.79579054559674 2.1770218700187 4.63472898822964 6.42162226780652 3.58905911883173 6.16120732169508 7.88833450073865 6.90775527898214 +pkc 5.47646355193151 5.93753620508243 5.35185813347607 5.89989735358249 2.08691355651854 2.27521389619791 4.45201900649392 0.438254930931155 4.5152454784601 6.29526600143965 4.72738781871234 +pkc 5.63835466933375 6.16961073249146 6.51174532964473 7.02464903045364 4.01998014693324 3.8308129500026 5.3890717298165 2.33214389523559 5.04342511691925 6.73696695800186 5.48479693349065 +pkc 5.75574221358691 6.22455842927536 5.97126183979046 6.62007320653036 1.870262530716 3.74242022104197 5.27811465923052 1.98787434815435 5.27299955856375 6.93439720992856 6.8001700683022 +pkc 5.96357934361845 6.52941883826223 6.73696695800186 7.26752542782817 2.80336038090653 4.20020495292158 6.26909628370626 1.43031124653666 5.06259503302697 6.880384082186 5.07517381523383 +pkc 5.6937321388027 6.24222326545517 5.17048399503815 5.8111409929767 1.77155676191054 4.95582705760126 6.69208374250663 2.32238772029023 4.71849887129509 6.60258789218934 5.54907608489522 +pkc 6.8627579130514 7.3125534981026 5.77455154554441 6.25958146406492 1.45628673293993 4.13676527810605 5.98141421125448 3.40119738166216 3.48124008933569 5.32300997913841 4.90527477843843 +pkc 6.94408720822953 7.26752542782817 5.48479693349065 6.07073772800249 1.25846098961001 5.30826769740121 7.10578612948127 4.42484663185681 3.9926809084456 5.63835466933375 4.52396013056255 +pkc 5.92692602597041 6.46769872610435 6.34035930372775 6.93439720992856 2.81540871942271 3.64283551561253 5.40717177146012 0.0769610411361284 7.00669522683704 8.6436496153688 6.87212810133899 +pkc 5.68357976733868 6.16961073249146 4.66343909411207 5.23644196282995 0.845868267577609 2.15871472257434 4.41642806139121 2.52572864430826 4.64439089914137 6.45833828334479 5.51342874616498 +pkc 5.33271879326537 5.8111409929767 5.41610040220442 6.00881318544259 2.37024374146786 3.64283551561253 5.5683445037611 2.11384296839717 3.55248682920838 5.08140436498446 4.3528552573736 +pkc 6.07073772800249 6.44888939414686 5.82894561761021 6.35088571671474 2.79728133483015 3.66867674679642 5.7037824746562 1.66392609771817 5.73009978297357 7.49220304261874 5.90808293816893 +pkc 5.73979291217923 6.22455842927536 5.89989735358249 6.53958595561767 1.84371920815877 3.38099467434464 5.23644196282995 2.12226153886276 4.88280192258637 6.59304453414244 6.76388490856244 +pkc 5.71042701737487 6.19644412779452 5.18738580584075 5.78382518232974 1.6094379124341 4.65396035015752 6.48463523563525 2.43361335540045 4.03777421073371 5.85507192220243 4.59612944133594 +pkc 7.47420480649612 7.83399634170946 5.71042701737487 6.37672694789863 2.67414864942653 4.38949864951258 6.34035930372775 2.35137525716348 4.33598269617247 6.18826412308259 5.62040086571715 +pkc 4.34380542185368 4.70048036579242 6.39526159811545 7.01571242048723 3.26575941076705 4.48863636973214 6.43133108193348 1.81645208181843 3.55248682920838 4.94875989037817 4.20916023665068 +pkc 5.34233425196481 5.74620319054015 5.07517381523383 5.75574221358691 2.31253542384721 4.82028156560504 6.72743172485086 2.72785282839839 3.53514535417189 5.19849703126583 4.96284463025991 +pkc 5.28826703069454 5.96357934361845 4.77912349311153 5.51342874616498 1.27815220250019 3.82209829790016 5.53338948872752 2.50143595173921 4.66343909411207 6.36818718635049 5.96357934361845 +pkc 5.3890717298165 5.95324333428778 8.73359406186306 9.11140362411616 5.73009978297357 2.96010509591084 4.86753445045558 1.61938824328727 5.55682806169954 7.18690102041163 5.25227342804663 +pkc 5.6937321388027 6.09807428216624 6.51174532964473 7.07834157955767 2.36085400111802 4.15575319035074 5.80211837537706 3.07731226054641 3.93963817246112 5.67675380226828 4.39814601655377 +pkc 5.06259503302697 5.62040086571715 5.11799381241676 5.67675380226828 2.50959926237837 4.26267987704132 6.03548143252476 1.42069578783722 3.85862222870103 5.57594910314632 4.97673374242057 +pkc 6.04500531403601 6.54821910276237 5.31811999384422 5.78382518232974 0.0861776962410524 4.3528552573736 6.25958146406492 1.73518911773966 6.01615715969835 7.71735127218533 6.90775527898214 +pkc 4.77068462446567 5.09375020080676 3.8416005411316 4.62497281328427 1.54756250871601 4.71849887129509 6.5206211275587 2.83321334405622 6.04500531403601 7.75319426988434 7.16857989726403 +pkc 5.37063802812766 5.91889385427315 7.37525577800975 7.91498300584839 4.0926765051214 4.07414185490458 5.87211778947542 2.12226153886276 3.68887945411394 5.35185813347607 3.9926809084456 +pkc 6.28785856016178 6.73696695800186 4.21803603456465 4.68213122712422 1.6467336971778 2.79728133483015 4.66343909411207 0 4.92725368515721 6.80903930604298 5.87211778947542 +pkc 5.41610040220442 5.85507192220243 6.12468339089421 6.69208374250663 2.35137525716348 4.40671924726425 6.30444880242198 1.15057202759882 3.89385903480047 5.83773044716594 5.13579843705026 +pkc 5.30826769740121 5.78382518232974 6.50279004591562 7.05185562295589 2.42480272571829 4.63472898822964 6.24222326545517 2.79116510781272 6.23244801655052 7.87929148508227 6.88959130835447 +pkc 6.49375383985169 6.88959130835447 5.40717177146012 5.96357934361845 3.10458667846607 4.89034912822175 6.65544035036765 2.61006979274201 3.51749783735832 3.92986292355648 6.99759598298193 +pkc 5.4971682252932 5.95324333428778 3.56953269648137 4.5152454784601 3.9926809084456 3.8416005411316 5.66642668811243 1.24126858906963 5.30826769740121 7.10578612948127 5.43372200355424 +pkc 5.99146454710798 6.25958146406492 6.39526159811545 6.98007594056176 2.36085400111802 5.28826703069454 7.20489251020467 2.4423470353692 6.48463523563525 8.0861025356691 7.19593722647557 +pkc 7.05185562295589 7.3664451483276 6.81783057145415 7.3304052118444 3.50855589998265 4.0926765051214 5.78382518232974 2.55722731136763 4.254193263164 6.07073772800249 5.47646355193151 +pkc 5.73979291217923 6.27852142416584 5.58724865840025 6.08904487544685 1.01523067972906 3.90399083373088 5.76519110278484 2.23108909128898 4.12874598893943 5.99893656194668 3.7864597824528 +pkc 5.59471137960184 5.88332238848828 2.23108909128898 3.51749783735832 2.9704144655697 4.68213122712422 6.70073110954781 3.11351530921037 4.66343909411207 6.35088571671474 5.19849703126583 +pkc 5.77455154554441 6.35957386867238 4.82028156560504 5.51342874616498 0.412109650826833 4.20020495292158 6.25958146406492 3.2846635654062 4.99043258677874 6.62936325343745 5.2257466737132 +pkc 5.84643877505772 6.36818718635049 6.00881318544259 6.55677835615804 2.50143595173921 3.8416005411316 5.3890717298165 4.63472898822964 6.71901315438526 8.29279885820037 7.50163445788341 +pkc 5.14749447681345 5.47646355193151 7.3304052118444 7.7621706071382 3.92197333628131 4.17284762371004 6.20657592672493 2.86220088092947 6.36818718635049 8.05006542291597 6.8627579130514 +pkc 5.44241771052179 5.84643877505772 5.20948615284142 5.80211837537706 2.88480071284671 4.65396035015752 6.39526159811545 2.57261223020711 3.94931879017184 5.83773044716594 5.7037824746562 +pkc 6.60258789218934 7.10578612948127 5.19849703126583 5.77455154554441 1.88858365386359 4.0926765051214 6.07073772800249 2.75366071235426 4.55071400019203 6.26909628370626 5.01063529409626 +pkc 5.8111409929767 6.35957386867238 5.4971682252932 6.03548143252476 1.5830939370945 3.86702563949741 5.71042701737487 0.371563556432483 4.78749174278205 6.50279004591562 6.58340922215876 +pkc 5.98141421125448 6.42162226780652 5.37063802812766 5.84643877505772 0.131028262406404 3.38099467434464 5.00394630594546 0.657520002916794 2.89591193827178 3.4904285153901 6.03548143252476 +pkc 5.32300997913841 5.68357976733868 5.18738580584075 5.78382518232974 1.93441576962958 3.65065824129374 5.45958551414416 2.58776403522771 6.84481547920826 8.49084921607663 7.55538194424027 +pkc 6.03548143252476 6.44888939414686 5.27811465923052 5.95324333428778 2.37954613413017 4.15575319035074 5.97126183979046 2.68102152871429 4.8283137373023 6.60258789218934 6.44888939414686 +pkc 5.63835466933375 6.05443934626937 4.90527477843843 5.4510384535657 2.58021682959233 3.45315712059287 5.24174701505964 2.26695791535089 3.72328088083127 5.51342874616498 3.8416005411316 +pkc 5.57594910314632 5.98141421125448 7.09672137849476 7.6182510978767 4.20020495292158 4.84418708645859 6.48463523563525 2.50959926237837 4.47960696301275 6.22455842927536 5.57594910314632 +pkc 6.72743172485086 7.15929190479756 6.59304453414244 7.25841215059531 3.29212628660779 3.85862222870103 5.82008293035236 3.75887182593397 3.11351530921037 4.62497281328427 4.85981240436167 +pkc 6.69208374250663 7.06987412845857 6.40357419793482 7.01571242048723 2.484906649788 4.47960696301275 6.36818718635049 2.35137525716348 5.10594547390058 6.78219205600679 6.29526600143965 +pkc 4.88280192258637 5.41610040220442 4.41642806139121 6.45833828334479 3.86702563949741 4.27249074760558 5.96357934361845 2.57261223020711 6.10702288774225 7.78030308790837 7.26752542782817 +pkc 6.36818718635049 6.82654522355659 6.27852142416584 6.77308037565554 3.29212628660779 3.04927304048202 5.24174701505964 0.908258560176891 6.16961073249146 7.87929148508227 7.10578612948127 +pkc 5.10594547390058 5.34233425196481 5.75574221358691 6.27852142416584 1.65441127807683 4.21803603456465 6.14418563412565 2.30258509299405 4.79579054559674 6.60258789218934 5.11799381241676 +pkc 5.07517381523383 5.51342874616498 5.92692602597041 6.55677835615804 2.14124194258528 3.31054301339402 4.95582705760126 1.50185270175416 4.76217393479776 6.59304453414244 4.98360662170834 +pkc 4.81218435537242 5.34233425196481 4.66343909411207 5.27811465923052 2.26695791535089 4.19116874685764 6.01615715969835 2.21266038546606 5.63835466933375 7.45645455517621 6.89871453432999 +pkc 6.95272864462487 7.3304052118444 5.74620319054015 6.45833828334479 1.81645208181843 3.74242022104197 5.7037824746562 2.84490938381941 5.16478597392351 7.04228617193974 5.97126183979046 +pkc 6.12468339089421 6.44888939414686 4.90527477843843 5.47646355193151 1.86252854011626 4.78749174278205 6.81783057145415 3.95699637107088 2.94968833505258 4.15575319035074 7.32118855673948 +pkc 6.95272864462487 7.39326309476384 5.73979291217923 6.29526600143965 2.90690105984738 4.34380542185368 6.46769872610435 1.41098697371026 4.90527477843843 6.77308037565554 5.57594910314632 +pkc 5.08140436498446 5.47646355193151 5.66642668811243 6.35088571671474 1.35840915763035 3.79548918917219 5.44241771052179 0.451075619360217 5.52146091786225 7.39326309476384 5.62040086571715 +pkc 4.55071400019203 4.92725368515721 5.01727983681492 5.41610040220442 1.82616089594539 4.22683374526818 6.05443934626937 2.05027016437956 4.47960696301275 6.26909628370626 4.65396035015752 +pkc 6.50279004591562 7.10578612948127 5.46806014113513 6.00881318544259 1.8531680973567 4.05698877567833 5.83773044716594 2.03339760317843 4.56954300834494 6.14418563412565 4.89034912822175 +pkc 5.05624580534831 5.43372200355424 4.61512051684126 5.36129216570943 3.74242022104197 4.62497281328427 6.43133108193348 2.68102152871429 4.31748811353631 6.23244801655052 5.11799381241676 +pkc 6.34035930372775 6.87212810133899 6.19644412779452 6.80903930604298 0.582215619852664 2.65324196460721 4.23700086262362 1.68268837417369 5.00394630594546 6.93439720992856 5.79301360838414 +pkc 5.44241771052179 5.91889385427315 6.7093043402583 7.48324441607385 3.25424296870549 4.79579054559674 6.75460409948796 2.4932054526027 4.96284463025991 6.85329909318608 6.92559519711047 +pkc 5.4971682252932 5.76519110278484 5.27299955856375 5.92692602597041 1.63705307946707 3.64283551561253 5.54126354515843 2.53369681395743 4.5152454784601 6.24222326545517 6.16961073249146 +pkc 5.50533153593236 5.91889385427315 5.68357976733868 6.25958146406492 1.79009141212736 4.41642806139121 6.16961073249146 2.3887627892351 4.23700086262362 5.91889385427315 5.33271879326537 +pkc 6.08904487544685 6.7093043402583 5.47646355193151 5.82894561761021 2.05027016437956 2.4932054526027 4.58700621536042 2.28442112236637 4.26267987704132 6.07073772800249 5.65599181081985 +pkc 5.68357976733868 6.12468339089421 5.64897423816121 6.08904487544685 3.06805293513362 3.42751468997953 4.82028156560504 2.43361335540045 4.60517018598809 6.53958595561767 6.07073772800249 +pkc 4.62497281328427 5.0998664278242 5.4510384535657 6.00881318544259 2.50143595173921 4.0842942263686 5.95324333428778 2.30258509299405 6.18826412308259 7.89729647259588 6.98007594056176 +pkc 5.10594547390058 5.52146091786225 5.7037824746562 6.34035930372775 2.35137525716348 5.08140436498446 6.89871453432999 2.06812778177956 2.34180580614733 3.77734810210154 6.87212810133899 +pkc 6.53958595561767 6.83625927727707 5.62040086571715 6.16961073249146 2.68102152871429 4.72738781871234 6.4393503711001 2.76000994003292 5.98141421125448 7.60936653795421 6.20657592672493 +pkc 6.45833828334479 6.88959130835447 4.71849887129509 5.32300997913841 2.10413415427021 4.21803603456465 6.18001665365257 1.69927861643389 4.0926765051214 5.83773044716594 7.24064969425547 +pkc 5.45958551414416 5.90808293816893 4.56954300834494 5.01063529409626 1.51072193949494 4.65396035015752 6.32256523992728 1.45628673293993 3.6163087612791 5.28826703069454 5.25227342804663 +pkc 5.51342874616498 6.06145691892802 5.4971682252932 6.11589212548303 2.10413415427021 3.71357206670431 5.29831736654804 1.93441576962958 4.86753445045558 6.64639051484773 5.54126354515843 +pkc 5.80211837537706 6.43133108193348 4.85981240436167 6.30444880242198 2.72785282839839 4.49758497530815 6.25958146406492 2.42480272571829 5.2257466737132 6.90775527898214 6.58340922215876 +pkc 6.880384082186 7.29437729928882 4.34380542185368 4.7361984483945 2.61006979274201 3.2188758248682 4.91998092582813 2.15871472257434 4.46129981556839 6.37672694789863 4.84418708645859 +pkc 5.74620319054015 6.19644412779452 5.10594547390058 6.49375383985169 3.12236492448736 4.29045944114839 6.21460809842219 2.66025953726586 4.37071287477361 6.28785856016178 5.5683445037611 +pkc 6.35957386867238 6.90775527898214 5.00394630594546 5.6021188208797 0.727548607277278 3.6609942506244 5.54907608489522 2.4423470353692 3.95699637107088 5.95324333428778 5.61312810638807 +pkc 6.62007320653036 7.16857989726403 5.95324333428778 6.50279004591562 1.68268837417369 3.75887182593397 5.57594910314632 2.06812778177956 4.36182392735636 6.06145691892802 5.64897423816121 +pkc 4.89034912822175 5.55682806169954 5.52146091786225 6.13339804299665 0 4.06560209335645 5.85507192220243 3.63495111208838 3.48124008933569 5.03695260241363 6.70073110954781 +pkc 5.90808293816893 6.44888939414686 7.52833176670725 7.96901178110648 4.53367418428302 4.56954300834494 6.36818718635049 2.09556092355972 4.77068462446567 6.5206211275587 4.92725368515721 +pkc 5.4249500174814 6.04500531403601 5.72031177660741 6.07993319509559 3.08648663682246 4.59612944133594 6.65544035036765 1.14103300455206 3.26575941076705 4.16511363311031 6.78219205600679 +pkc 6.16120732169508 6.60258789218934 5.37989735354046 5.72031177660741 1.708377860289 4.66343909411207 6.58340922215876 1.23256026117785 4.11087386417331 5.78382518232974 5.16478597392351 +pkc 5.29831736654804 5.68357976733868 7.02464903045364 7.52833176670725 4.56017282005736 2.88480071284671 4.81218435537242 2.66025953726586 3.77734810210154 5.52146091786225 4.70048036579242 +pkc 7.00669522683704 7.3304052118444 5.03043792139244 5.75574221358691 2.01490302054226 4.42484663185681 6.40357419793482 3.53514535417189 3.2188758248682 4.86753445045558 4.03777421073371 +pkc 4.53367418428302 4.88280192258637 6.16120732169508 6.62936325343745 3.21084365317094 4.17284762371004 6.07993319509559 2.18605127673809 4.65396035015752 6.32256523992728 5.21493575760899 +pkc 5.52146091786225 5.84643877505772 5.72031177660741 6.26909628370626 1.82616089594539 3.75887182593397 5.28826703069454 2.9338568698359 3.8416005411316 5.65599181081985 5.5683445037611 +pkc 7.13249755166004 7.51914995766982 6.19644412779452 6.82654522355659 2.484906649788 4.33598269617247 6.20657592672493 1.6094379124341 5.74620319054015 7.57353126274595 5.61312810638807 +pkc 5.5683445037611 6.18001665365257 4.90527477843843 5.48479693349065 1.31372366828506 4.47049528266149 6.27852142416584 2.15871472257434 2.42480272571829 3.98527346716774 4.43438186500781 +pkc 6.30444880242198 6.81783057145415 6.58340922215876 7.22256601882217 2.39789527279837 3.32862668882732 5.29831736654804 2.27521389619791 5.34233425196481 7.0604763659998 5.65599181081985 +pkc 5.30826769740121 5.82008293035236 4.49758497530815 5.27811465923052 2.11384296839717 4.5152454784601 6.1527326947041 3.15700042115011 3.81330703248899 5.61312810638807 4.85981240436167 +pkc 6.83625927727707 7.26752542782817 4.50645421304893 5.29831736654804 1.19694818938897 4.28082412916472 6.07993319509559 2.37024374146786 4.01096295328305 5.78382518232974 4.38949864951258 +pkc 6.32256523992728 6.84481547920826 5.59471137960184 6.19644412779452 2.52572864430826 2.87919845729804 4.57779898919196 2.57261223020711 7.38461038317697 8.92252495730139 7.71735127218533 +pkc 5.16478597392351 5.48479693349065 5.75574221358691 6.33150184989369 1.39376637595859 4.01998014693324 5.73009978297357 2.20386912005489 3.96651119071222 5.64897423816121 4.98360662170834 +pkc 5.93753620508243 6.25958146406492 4.17284762371004 4.79579054559674 0.982078472412158 4.02891675689965 5.65599181081985 1.79009141212736 5.32300997913841 7.02464903045364 6.91671502035361 +pkc 7.01571242048723 7.38461038317697 6.52941883826223 7.13249755166004 2.84490938381941 4.07414185490458 5.92692602597041 2.2935443483419 7.05185562295589 8.76060984757 7.6182510978767 +pkc 5.54907608489522 5.97126183979046 6.82654522355659 7.35755620091035 3.59731226058845 3.21084365317094 4.49758497530815 2.32238772029023 4.86753445045558 6.54821910276237 5.4510384535657 +pkc 4.89034912822175 5.45958551414416 6.31354804627709 6.91671502035361 1.88858365386359 4.31748811353631 5.99893656194668 2.39789527279837 4.26267987704132 5.92692602597041 5.30826769740121 +pkc 4.56954300834494 5.01063529409626 5.37063802812766 5.75574221358691 2.18605127673809 3.76815263500844 5.64897423816121 1.4747630091075 3.92197333628131 5.67675380226828 5.12396397940326 +pkc 7.51914995766982 7.93307977188041 6.25958146406492 6.83625927727707 2.96010509591084 3.92197333628131 5.58724865840025 1.74571553072665 3.95699637107088 5.65599181081985 5.01727983681492 +pkc 6.58340922215876 7.13249755166004 6.25190388316589 6.89871453432999 2.70136121295141 3.85014760171006 5.52146091786225 0 3.55248682920838 5.23644196282995 3.55248682920838 +pkc 4.84418708645859 5.2257466737132 5.98141421125448 6.57507584059962 2.47653840011748 3.36384159511839 5.30826769740121 2.66025953726586 4.46129981556839 6.18826412308259 5.94542060860658 +pkc 4.65396035015752 5.20948615284142 4.97673374242057 5.57594910314632 1.39376637595859 5.05624580534831 6.96129604591017 3.50855589998265 4.50645421304893 6.27852142416584 5.7037824746562 +pkc 5.28826703069454 5.82894561761021 4.74493212836325 5.26269018890489 0.667829372575655 3.16547504814109 5.21493575760899 2.05027016437956 5.99146454710798 7.81601383915903 6.62936325343745 +pkc 5.27811465923052 5.74620319054015 6.59304453414244 7.20489251020467 2.7408400239252 4.24563400976833 5.95324333428778 2.14943391349987 3.31054301339402 4.68213122712422 4.70953020131233 +pkc 5.84643877505772 6.33150184989369 5.29831736654804 5.80211837537706 2.14943391349987 1.71739505393919 3.02042488614436 4.38077585277223 3.7864597824528 5.5683445037611 4.47049528266149 +pkc 5.21493575760899 5.66642668811243 5.64897423816121 6.16961073249146 2.33214389523559 3.74242022104197 5.78382518232974 2.04122032885964 4.56017282005736 6.29526600143965 5.4971682252932 +pkc 5.30826769740121 6.25190388316589 5.78382518232974 6.18001665365257 2.04122032885964 3.82209829790016 5.4971682252932 2.43361335540045 4.78749174278205 6.43133108193348 5.65599181081985 +pkc 4.59612944133594 4.83628190695148 5.7037824746562 6.20657592672493 3.01553490085017 3.15700042115011 4.94875989037817 1.96009478404727 4.29045944114839 6.16961073249146 4.68213122712422 +pkc 5.6021188208797 5.99893656194668 6.07073772800249 6.54821910276237 3.06805293513362 3.34638914516716 5.01063529409626 2.77881927199042 5.21493575760899 6.8627579130514 4.98360662170834 +pkc 4.76217393479776 5.15329159449778 5.17048399503815 5.73979291217923 1.95160817016995 4.00186370942794 6.06145691892802 1.38629436111989 5.03695260241363 6.80903930604298 4.93447393313069 +pkc 4.05698877567833 4.7361984483945 5.99146454710798 6.59304453414244 1.86252854011626 3.72328088083127 5.18738580584075 2.53369681395743 5.99893656194668 7.66340766489348 7.79811262882979 +pkc 5.45958551414416 5.87211778947542 6.57507584059962 7.26752542782817 3.39114704580865 3.62434093297637 5.32300997913841 2.75366071235426 4.56954300834494 6.30444880242198 5.07517381523383 +pkc 6.46769872610435 6.91671502035361 6.71901315438526 7.29437729928882 4.38949864951258 3.4904285153901 5.07517381523383 1.89761985992753 4.0842942263686 5.82894561761021 4.38949864951258 +pkc 5.90808293816893 6.44888939414686 6.19644412779452 6.67329796776765 2.63188884013665 3.13113691056019 4.81218435537242 2.91235066461494 5.31811999384422 6.92559519711047 7.95997452808054 +pkc 5.74620319054015 6.13339804299665 3.92197333628131 4.95582705760126 4.27249074760558 3.65065824129374 5.6021188208797 2.10413415427021 3.85014760171006 5.63121178182137 4.82028156560504 +pkc 5.2257466737132 5.65599181081985 7.65444322647011 8.15794350710504 3.98527346716774 3.00568260440716 4.97673374242057 1.08856195281461 3.9926809084456 5.73979291217923 4.63472898822964 +pkc 5.29831736654804 5.65599181081985 5.58724865840025 6.16961073249146 2.07819075977818 4.10098910494077 5.92692602597041 1.93441576962958 5.40717177146012 7.10578612948127 7.51914995766982 +pkc 5.78382518232974 6.25190388316589 5.18178355029209 5.79301360838414 0.989541193613748 4.49758497530815 6.48463523563525 2.07819075977818 4.0842942263686 5.72031177660741 5.37989735354046 +pkc 6.61069604471776 7.02464903045364 4.54223038621422 5.11799381241676 2.32238772029023 3.71357206670431 5.75574221358691 1.78170913337455 5.24174701505964 7.11476944836646 5.46806014113513 +pkc 4.84418708645859 5.52146091786225 4.87519732320115 5.54907608489522 2.19499988231411 3.08648663682246 4.63472898822964 2.14943391349987 4.69134788222914 6.53958595561767 5.06259503302697 +pkc 4.68213122712422 5.11799381241676 5.64897423816121 6.1527326947041 2.20386912005489 4.11087386417331 5.73979291217923 1.11514159061932 3.75887182593397 5.37063802812766 4.3267781604434 +pkc 7.44716835960004 7.81601383915903 5.89989735358249 6.55677835615804 2.10413415427021 4.43438186500781 6.22455842927536 2.70136121295141 3.59731226058845 5.24174701505964 4.70953020131233 +pkc 5.8111409929767 6.26909628370626 5.04342511691925 5.64897423816121 1.44926916028128 4.59612944133594 6.32256523992728 3.00568260440716 4.42484663185681 6.28785856016178 5.18178355029209 +pkc 4.83628190695148 5.32300997913841 5.12396397940326 5.64897423816121 2.31253542384721 4.11087386417331 5.82894561761021 2.82137888640921 4.44382703557933 6.23244801655052 5.25227342804663 +pkc 4.92725368515721 5.54126354515843 3.9926809084456 4.50645421304893 1.63705307946707 3.75185425327532 5.7037824746562 0.908258560176891 5.06259503302697 6.84481547920826 5.53338948872752 +pkc 6.09807428216624 6.44888939414686 5.20948615284142 5.87211778947542 1.51072193949494 3.66867674679642 5.35185813347607 2.15871472257434 4.3267781604434 6.20657592672493 5.15329159449778 +pkc 6.74641212857337 7.1777824161952 5.96357934361845 6.44888939414686 1.4747630091075 4.15575319035074 5.85507192220243 4.24563400976833 5.48479693349065 7.24921505711439 6.88959130835447 +pkc 4.79579054559674 5.32300997913841 4.53367418428302 5.35185813347607 2.2935443483419 2.11384296839717 3.11351530921037 4.06560209335645 4.04830062372069 6.06145691892802 4.70953020131233 +pkc 7.75319426988434 8.13094230223188 5.79301360838414 6.34035930372775 2.51769647261099 4.70953020131233 6.57507584059962 2.20386912005489 5.01727983681492 6.96129604591017 5.46806014113513 +pkc 5.37989735354046 5.73009978297357 5.58724865840025 6.20657592672493 1.98787434815435 3.41772668361337 5.44241771052179 2.63188884013665 4.90527477843843 6.62007320653036 5.6937321388027 +pkc 4.99043258677874 5.37063802812766 5.21493575760899 5.78382518232974 1.74571553072665 3.03013370027132 4.94875989037817 0.53062825106217 3.67882911826043 5.54907608489522 5.48479693349065 +pkc 5.24174701505964 5.79301360838414 5.88332238848828 6.47543271670409 1.7630170003624 4.0926765051214 5.76519110278484 3.03013370027132 4.02891675689965 5.8636311755981 5.98141421125448 +pkc 5.12396397940326 5.51342874616498 6.30444880242198 6.89871453432999 2.86789890204411 3.94931879017184 5.77455154554441 2.53369681395743 3.65065824129374 5.54907608489522 4.30811095172371 +pkc 5.73979291217923 6.24222326545517 5.52146091786225 6.03548143252476 2.79728133483015 4.56017282005736 6.29526600143965 2.65324196460721 4.53367418428302 6.54821910276237 5.5683445037611 +pkc 7.60936653795421 8.07713663853845 4.64439089914137 5.18738580584075 0 4.81218435537242 6.64639051484773 3.56953269648137 3.56953269648137 5.48479693349065 4.76217393479776 +pkc 6.10702288774225 6.50279004591562 6.96129604591017 7.49220304261874 3.64283551561253 3.58905911883173 5.07517381523383 3.16547504814109 3.92986292355648 5.74620319054015 4.24563400976833 +pkc 5.54907608489522 5.87211778947542 6.68336094576627 7.41155628781116 3.68887945411394 3.68887945411394 5.66642668811243 2.31253542384721 6.97073007814353 8.50875771259514 7.1777824161952 +pkc 5.08140436498446 5.7037824746562 6.61069604471776 7.29437729928882 3.45315712059287 3.21084365317094 4.95582705760126 1.88858365386359 6.65544035036765 8.25686684897431 7.0604763659998 +pkc 5.93753620508243 6.40357419793482 5.80211837537706 6.44888939414686 2.4423470353692 4.57779898919196 6.27852142416584 2.39789527279837 4.39814601655377 6.12468339089421 5.4249500174814 +pkc 3.71357206670431 3.81330703248899 6.46769872610435 7.04228617193974 3.09557760852371 4.37071287477361 6.25190388316589 2.9704144655697 3.81330703248899 4.52396013056255 6.50279004591562 +pkc 5.4249500174814 5.89164421182577 4.92725368515721 5.53338948872752 0.819779831493311 4.02891675689965 5.97126183979046 1.89761985992753 5.28826703069454 7.10578612948127 5.63835466933375 +pkc 5.46806014113513 5.73979291217923 5.27811465923052 5.83773044716594 1.99741770620125 4.24563400976833 5.99146454710798 2.61006979274201 4.54223038621422 6.07993319509559 6.43133108193348 +pkc 7.3038432252777 7.70841066725737 6.61069604471776 7.24921505711439 2.72785282839839 4.66343909411207 6.54821910276237 3.3357695763397 4.93447393313069 6.68336094576627 5.77455154554441 +pkc 4.38077585277223 4.64439089914137 4.61512051684126 5.2257466737132 2.2213750375685 3.75185425327532 5.74620319054015 1.96990565461153 3.89385903480047 5.63835466933375 4.34380542185368 +pkc 6.69208374250663 7.10578612948127 5.20948615284142 5.82008293035236 0.00995033085316809 4.38949864951258 6.41345895716736 1.01523067972906 5.2257466737132 7.0335064842877 5.97126183979046 +pkc 5.03043792139244 5.65599181081985 6.33150184989369 6.95272864462487 2.40694510831829 4.94875989037817 6.81783057145415 2.06812778177956 4.77068462446567 6.54821910276237 7.42952084278646 +pkc 5.27299955856375 5.79301360838414 6.68336094576627 7.3304052118444 3.14845336057165 4.05698877567833 5.26269018890489 0.792992515529661 5.13579843705026 6.98841318199959 5.39816270151775 +pkc 5.4971682252932 5.99146454710798 4.77912349311153 5.37063802812766 1.92424865227413 4.12874598893943 5.95324333428778 1.95160817016995 3.90399083373088 5.7037824746562 4.84418708645859 +pkc 7.01571242048723 7.42952084278646 5.06259503302697 5.65599181081985 2.26695791535089 2.94968833505258 4.31748811353631 1.80828877117927 3.24649099190117 4.98360662170834 3.8308129500026 +pkc 6.28785856016178 6.63856778916652 7.72621265050753 8.19395302356374 4.5152454784601 4.40671924726425 6.16120732169508 3.16547504814109 6.5206211275587 8.17611034223734 7.06987412845857 +pkc 3.43720781918519 4.59612944133594 3.58073729549423 4.06560209335645 1.4655675420144 4.11903717481247 5.99893656194668 0 3.44361809754611 5.09375020080676 6.49375383985169 +pkc 6.20657592672493 6.59304453414244 4.95582705760126 5.64897423816121 0 3.47196645255036 5.27299955856375 3.8308129500026 4.34380542185368 5.98141421125448 4.91998092582813 +pkc 5.63121178182137 6.06145691892802 5.93753620508243 6.58340922215876 2.32238772029023 4.10098910494077 5.92692602597041 2.45958884180371 3.36384159511839 5.33271879326537 4.38949864951258 +pkc 7.3304052118444 7.69028602067677 5.63835466933375 6.18001665365257 2.36085400111802 2.9704144655697 4.41642806139121 2.02419306744936 5.0998664278242 6.76388490856244 7.67229245562876 +pkc 6.71901315438526 7.14124512235049 5.3890717298165 6.12468339089421 2.85070650150373 3.16547504814109 4.77068462446567 1.16938135955632 4.57779898919196 6.60258789218934 5.82008293035236 +pkc 5.55682806169954 5.90808293816893 4.82028156560504 5.30826769740121 2.34180580614733 2.94968833505258 4.85981240436167 1.45628673293993 3.82209829790016 5.53338948872752 6.64639051484773 +pkc 6.1527326947041 6.61069604471776 4.43438186500781 4.95582705760126 1.83418018511201 3.7864597824528 5.8111409929767 1.86252854011626 4.45201900649392 6.30444880242198 5.54126354515843 +pkc 7.08757370555797 7.46565531013406 5.4510384535657 6.13339804299665 2.92316158071916 3.51749783735832 5.12396397940326 2.06812778177956 6.18826412308259 7.82524529143177 7.3038432252777 +pkc 5.39816270151775 5.80211837537706 5.48479693349065 6.11589212548303 1.69927861643389 3.39114704580865 4.93447393313069 0.53062825106217 4.07414185490458 5.87211778947542 6.83625927727707 +pkc 4.53367418428302 4.91998092582813 5.17048399503815 5.77455154554441 2.64617479738412 3.85014760171006 5.66642668811243 0 4.41642806139121 6.16961073249146 5.48479693349065 +pkc 5.72031177660741 6.19644412779452 7.28550654852279 7.75319426988434 4.04830062372069 3.59731226058845 5.41610040220442 1.86252854011626 2.41591377830105 4.33598269617247 5.59471137960184 +pkc 5.44241771052179 5.91889385427315 5.08140436498446 5.66642668811243 2.08691355651854 4.61512051684126 6.38687931936265 2.45958884180371 4.13676527810605 5.99146454710798 5.29831736654804 +pkc 5.63835466933375 6.07073772800249 5.01063529409626 5.61312810638807 0.350656871613169 3.64283551561253 5.39816270151775 2.61006979274201 1.60140574073684 3.27336401015227 6.62007320653036 +pkc 4.39814601655377 4.66343909411207 6.04500531403601 6.70073110954781 1.06125650212434 3.77734810210154 5.4971682252932 2.64617479738412 6.39526159811545 8.07713663853845 6.85329909318608 +pkc 5.44241771052179 5.89989735358249 6.53958595561767 7.18690102041163 3.2188758248682 4.98360662170834 6.81783057145415 1.16938135955632 3.76815263500844 5.44241771052179 5.09375020080676 +pkc 5.63121178182137 6.16961073249146 4.8283137373023 5.41610040220442 2.62466859216316 3.6163087612791 5.39816270151775 4.7361984483945 5.06259503302697 6.880384082186 5.75574221358691 +pkc 5.6021188208797 6.25190388316589 7.15929190479756 7.69938940625674 5.36129216570943 4.57779898919196 6.54821910276237 2.24812890719799 5.72031177660741 7.48324441607385 7.07834157955767 +pkc 5.29831736654804 5.73009978297357 7.4205789054108 7.89729647259588 4.11087386417331 3.2188758248682 5.18178355029209 2.14124194258528 5.65599181081985 7.3038432252777 6.64639051484773 +pkc 4.58700621536042 5.10594547390058 6.05443934626937 6.56526497003536 3.25424296870549 4.00186370942794 5.76519110278484 0.518793793415168 6.90775527898214 8.52674740422105 7.65444322647011 +pkc 5.4510384535657 6.07993319509559 3.3178157727231 4.62497281328427 3.80443779474821 4.00186370942794 5.6937321388027 2.10413415427021 4.45201900649392 6.16120732169508 5.93753620508243 +pkc 4.92725368515721 5.33271879326537 4.94875989037817 5.62040086571715 0 3.9926809084456 5.85507192220243 2.61006979274201 5.63835466933375 7.3304052118444 6.65544035036765 +pkc 5.71042701737487 6.23244801655052 4.39814601655377 6.19644412779452 3.27336401015227 5.25227342804663 7.10578612948127 3.76815263500844 4.14630430115281 5.92692602597041 4.26267987704132 +pkc 4.96284463025991 5.54126354515843 5.18178355029209 5.74620319054015 0 2.75366071235426 3.87743156065853 3.59731226058845 4.28082412916472 6.11589212548303 5.43372200355424 +pkc 5.46806014113513 5.89989735358249 5.91889385427315 6.69208374250663 3.03013370027132 4.01096295328305 5.90808293816893 1.78170913337455 5.00394630594546 6.76388490856244 7.14124512235049 +pkc 4.87519732320115 5.40717177146012 6.53958595561767 7.23128700432762 2.68784749378469 4.63472898822964 6.63856778916652 2.36085400111802 5.25227342804663 7.14124512235049 5.53338948872752 +pkc 5.91889385427315 6.25190388316589 6.16961073249146 6.68336094576627 3.10458667846607 3.86702563949741 5.63835466933375 1.870262530716 4.11087386417331 5.95324333428778 4.97673374242057 +pkc 6.25958146406492 6.79122146272619 5.52146091786225 6.01615715969835 2.36085400111802 4.94875989037817 6.76388490856244 4.44382703557933 3.19458313229916 4.99043258677874 4.55071400019203 +pkc 5.78382518232974 6.29526600143965 5.5683445037611 6.16961073249146 2.99573227355399 4.37071287477361 6.06145691892802 1.24126858906963 3.06805293513362 4.77068462446567 4.82028156560504 +pkc 6.16120732169508 6.67329796776765 5.71042701737487 6.01615715969835 2.30258509299405 3.9759363311718 6.00881318544259 2.58021682959233 5.53338948872752 7.15929190479756 5.91889385427315 +pkc 5.01727983681492 5.5683445037611 5.33271879326537 5.91889385427315 2.86789890204411 4.45201900649392 6.25190388316589 2.73436750941958 4.11903717481247 5.4510384535657 5.76519110278484 +pkc 5.52146091786225 5.96357934361845 5.63835466933375 6.19644412779452 1.87946504964716 4.27249074760558 6.21460809842219 1.79840401194672 4.47960696301275 6.23244801655052 4.90527477843843 +pkc 6.03548143252476 6.51174532964473 6.65544035036765 7.25841215059531 1.31372366828506 3.20274644293832 5.10594547390058 0.871293365943419 3.9759363311718 5.75574221358691 5.17048399503815 +pkc 4.74493212836325 5.13579843705026 5.84643877505772 6.34035930372775 2.40694510831829 3.63495111208838 5.18178355029209 1.63705307946707 5.50533153593236 7.22256601882217 5.93753620508243 +pkc 6.61069604471776 7.00669522683704 5.35185813347607 5.89989735358249 0.215111379616945 4.34380542185368 6.08904487544685 1.78170913337455 4.91998092582813 6.8001700683022 5.89989735358249 +pkc 5.55682806169954 5.89164421182577 6.01615715969835 6.98007594056176 4.0926765051214 3.74242022104197 5.36129216570943 2.56494935746154 4.95582705760126 6.69208374250663 6.61069604471776 +pkc 6.20657592672493 6.62936325343745 5.01727983681492 5.7037824746562 1.81645208181843 4.42484663185681 6.37672694789863 0.451075619360217 3.70622809244855 5.59471137960184 4.79579054559674 +pkc 4.88280192258637 5.36129216570943 4.56954300834494 5.18178355029209 1.49290409617815 3.64283551561253 5.40717177146012 1.5830939370945 3.60549784517489 5.26269018890489 5.33271879326537 +pkc 5.73009978297357 6.08904487544685 6.16961073249146 6.81783057145415 2.76000994003292 3.9926809084456 5.96357934361845 1.48387468945875 3.13113691056019 4.87519732320115 5.27811465923052 +pkc 5.55682806169954 6.09807428216624 6.51174532964473 7.1777824161952 2.81540871942271 0 1.96009478404727 2.51769647261099 3.95699637107088 5.72031177660741 5.83773044716594 +pkc 5.95324333428778 6.45833828334479 6.68336094576627 7.34858753092759 3.18221184049661 4.38077585277223 6.28785856016178 2.62466859216316 4.03777421073371 5.82894561761021 4.34380542185368 +pkc 5.6937321388027 6.24222326545517 5.73009978297357 6.30444880242198 3.09557760852371 4.20916023665068 5.87211778947542 1.92424865227413 4.31748811353631 6.07073772800249 6.25190388316589 +pkc 5.85507192220243 6.30444880242198 5.06259503302697 5.46806014113513 0.00995033085316809 4.24563400976833 5.94542060860658 2.67414864942653 5.23644196282995 6.82654522355659 7.24064969425547 +pkc 5.6021188208797 6.11589212548303 6.14418563412565 6.65544035036765 2.42480272571829 4.20020495292158 5.93753620508243 2.26695791535089 4.23700086262362 5.96357934361845 5.16478597392351 +pkc 5.14749447681345 5.6021188208797 5.8636311755981 6.49375383985169 3.4626060097908 4.45201900649392 6.32256523992728 3.21084365317094 4.46129981556839 6.19644412779452 5.53338948872752 +pkc 6.56526497003536 7.08757370555797 6.10702288774225 6.64639051484773 2.70805020110221 3.85014760171006 5.78382518232974 1.52822785700856 3.85014760171006 5.6937321388027 3.73289633953071 +pkc 5.63835466933375 6.18001665365257 5.44241771052179 5.96357934361845 2.26695791535089 2.87919845729804 4.79579054559674 1.98787434815435 3.48124008933569 5.31811999384422 4.90527477843843 +pkc 5.82008293035236 6.23244801655052 5.44241771052179 6.09807428216624 1.8531680973567 2.35137525716348 4.11087386417331 1.96990565461153 5.2257466737132 7.10578612948127 5.51342874616498 +pkc 5.97126183979046 6.29526600143965 5.52146091786225 5.94542060860658 0.717839793150317 3.51749783735832 5.64897423816121 2.4423470353692 4.56017282005736 6.34035930372775 6.97073007814353 +pkc 5.44241771052179 5.89164421182577 4.95582705760126 5.51342874616498 1.77155676191054 4.45201900649392 6.36818718635049 3.2846635654062 2.84490938381941 4.44382703557933 3.92197333628131 +pkc 6.4393503711001 6.92559519711047 6.61069604471776 7.16857989726403 2.82137888640921 4.80402104473326 6.59304453414244 2.88480071284671 3.50855589998265 5.28826703069454 4.78749174278205 +pkc 6.59304453414244 7.09672137849476 5.73979291217923 6.25190388316589 2.94968833505258 3.86702563949741 5.62040086571715 2.19499988231411 4.11903717481247 5.8636311755981 5.89164421182577 +pkc 5.62040086571715 5.92692602597041 5.2257466737132 5.90808293816893 1.45628673293993 4.11903717481247 5.99146454710798 3.04927304048202 4.83628190695148 6.7093043402583 4.72738781871234 +pkc 6.25958146406492 6.81783057145415 4.92725368515721 5.40717177146012 2.05923883436232 4.34380542185368 6.21460809842219 2.32238772029023 5.73979291217923 7.55538194424027 5.85507192220243 +pkc 5.80211837537706 6.20657592672493 6.08904487544685 6.76388490856244 2.37954613413017 4.76217393479776 6.72743172485086 2.88480071284671 5.87211778947542 7.59135704669855 7.15070145759253 +pkc 5.25227342804663 5.76519110278484 5.85507192220243 6.60258789218934 0.00995033085316809 2.97552956623647 4.67282883446191 0.457424847038875 4.95582705760126 6.70073110954781 5.82894561761021 +pkc 6.90775527898214 7.3304052118444 6.52941883826223 7.07834157955767 3.03013370027132 3.25424296870549 4.96284463025991 1.71739505393919 4.70953020131233 6.54821910276237 5.32300997913841 +pkc 6.39526159811545 6.92559519711047 6.16120732169508 6.68336094576627 2.41591377830105 5.3890717298165 7.3125534981026 2.92316158071916 4.61512051684126 6.43133108193348 4.85981240436167 +pkc 4.63472898822964 5.04342511691925 4.64439089914137 5.30826769740121 0.314810739840034 4.26267987704132 6.24222326545517 1.69927861643389 3.98527346716774 5.63835466933375 4.78749174278205 +pkc 5.72031177660741 6.04500531403601 6.16961073249146 6.8001700683022 2.4423470353692 2.73436750941958 4.37071287477361 0.307484699747961 3.3357695763397 5.07517381523383 4.55071400019203 +pkc 5.62040086571715 5.98141421125448 5.37063802812766 6.02586597382531 2.23964529322017 3.82209829790016 5.80211837537706 1.05082162483176 4.20916023665068 5.87211778947542 5.27811465923052 +pkc 6.32256523992728 6.71901315438526 7.32118855673948 7.86134179559999 5.68357976733868 3.81330703248899 5.62040086571715 2.50143595173921 2.56494935746154 4.17284762371004 6.98841318199959 +pkc 4.65396035015752 5.29831736654804 6.18001665365257 6.83625927727707 1.74571553072665 4.31748811353631 6.09807428216624 2.58021682959233 3.86702563949741 5.78382518232974 5.14749447681345 +pkc 5.67675380226828 6.13339804299665 5.85507192220243 6.49375383985169 1.51951320490611 3.72328088083127 5.72031177660741 2.2935443483419 4.70953020131233 6.73696695800186 5.33271879326537 +pkc 4.86753445045558 5.4971682252932 5.4510384535657 5.99146454710798 1.6467336971778 4.58700621536042 6.41345895716736 3.01553490085017 3.9926809084456 5.85507192220243 4.95582705760126 +pkc 8.4368504387337 8.8685540405312 5.01727983681492 5.58724865840025 2.61739583283408 3.55248682920838 5.31811999384422 1.83418018511201 3.98527346716774 5.73979291217923 4.77068462446567 +pkc 5.77455154554441 6.16120732169508 6.34035930372775 6.99759598298193 2.62466859216316 3.76815263500844 5.27811465923052 0.412109650826833 3.2188758248682 4.19116874685764 6.35957386867238 +pkc 4.90527477843843 5.33271879326537 5.0998664278242 5.76519110278484 0.576613364303994 3.58073729549423 5.5683445037611 2.63188884013665 6.64639051484773 8.19395302356374 6.85329909318608 +pkc 5.27299955856375 5.63835466933375 7.4205789054108 7.84306401669205 4.58700621536042 3.70622809244855 5.4249500174814 2.54160199346455 4.33598269617247 6.05443934626937 5.88332238848828 +pkc 5.36129216570943 5.85507192220243 5.99146454710798 6.7093043402583 2.05923883436232 3.93963817246112 5.47646355193151 1.71739505393919 4.69134788222914 6.57507584059962 5.55682806169954 +pkc 6.16961073249146 6.880384082186 5.96357934361845 7.34858753092759 4.76217393479776 4.48863636973214 6.4393503711001 2.80336038090653 7.07834157955767 8.62568878756954 7.04228617193974 +pkc 5.41610040220442 5.83773044716594 5.91889385427315 6.43133108193348 2.54160199346455 2.4932054526027 3.98527346716774 4.91265488573605 4.27249074760558 5.99146454710798 5.73009978297357 +pkc 6.18826412308259 6.62936325343745 6.72743172485086 7.21376830811864 1.97823903617067 4.21803603456465 6.00881318544259 2.30258509299405 5.11799381241676 6.89871453432999 6.44888939414686 +pkc 5.53338948872752 5.90808293816893 4.56954300834494 5.13579843705026 1.16938135955632 4.80402104473326 6.31354804627709 3.12236492448736 3.40784192438082 5.06259503302697 5.89164421182577 +pkc 5.99146454710798 6.32256523992728 6.37672694789863 6.97073007814353 2.60268968544438 2.79728133483015 4.52396013056255 1.49290409617815 5.14749447681345 6.93439720992856 5.78382518232974 +pkc 5.36129216570943 5.94542060860658 5.77455154554441 6.38687931936265 2.02419306744936 4.03777421073371 5.79301360838414 1.51072193949494 4.85981240436167 6.62007320653036 5.58724865840025 +pkc 5.46806014113513 5.89164421182577 7.67229245562876 8.09498875930377 3.6163087612791 2.71469474382088 4.66343909411207 0 4.39814601655377 6.28785856016178 5.52146091786225 +pkc 5.53338948872752 6.07993319509559 5.00394630594546 5.71042701737487 2.31253542384721 3.59731226058845 5.4510384535657 1.88858365386359 3.4904285153901 5.40717177146012 4.40671924726425 +pkc 6.03548143252476 6.51174532964473 4.70048036579242 5.37989735354046 1.33236601909433 3.6163087612791 5.26269018890489 1.66392609771817 4.74493212836325 6.42162226780652 4.72738781871234 +pkc 5.27299955856375 5.78382518232974 5.52146091786225 6.07073772800249 2.1770218700187 4.96284463025991 6.94408720822953 4.43438186500781 4.05698877567833 5.85507192220243 4.88280192258637 +pkc 4.30811095172371 4.74493212836325 5.12396397940326 6.01615715969835 3.10458667846607 3.9926809084456 5.6937321388027 2.64617479738412 4.57779898919196 6.40357419793482 5.26269018890489 +pkc 4.66343909411207 5.01727983681492 5.84643877505772 6.38687931936265 1.97823903617067 2.72785282839839 4.3267781604434 2.25758772706331 4.45201900649392 5.89164421182577 5.89164421182577 +pkc 5.79301360838414 6.26909628370626 5.28826703069454 5.68357976733868 1.8531680973567 4.30811095172371 6.20657592672493 1.53901544813755 4.42484663185681 6.26909628370626 5.76519110278484 +pkc 5.33271879326537 5.73979291217923 6.09807428216624 6.70073110954781 2.40694510831829 3.79548918917219 5.72031177660741 2.32238772029023 4.8283137373023 6.63856778916652 5.50533153593236 +pkc 5.68357976733868 6.02586597382531 4.64439089914137 5.25227342804663 2.36085400111802 3.43720781918519 5.54126354515843 1.67335123817775 3.36384159511839 5.07517381523383 4.19116874685764 +pkc 5.01727983681492 5.67675380226828 7.20489251020467 7.71735127218533 4.83628190695148 4.10098910494077 5.72031177660741 2.66025953726586 4.47049528266149 6.31354804627709 7.37525577800975 +pkc 5.54907608489522 6.18826412308259 4.91265488573605 5.54126354515843 1.53901544813755 3.56104608260405 5.31811999384422 1.50185270175416 3.76815263500844 5.65599181081985 5.15329159449778 +pkc 4.65396035015752 5.01727983681492 6.62007320653036 7.37525577800975 3.20274644293832 4.83628190695148 6.77308037565554 3.56104608260405 4.69134788222914 6.55677835615804 4.44382703557933 +pkc 5.68357976733868 6.16120732169508 5.34233425196481 5.95324333428778 2.13179677201376 4.19116874685764 5.92692602597041 0.828551817566148 1.65441127807683 3.52636052461616 6.880384082186 +pkc 5.03695260241363 5.19849703126583 6.47543271670409 6.93439720992856 3.96651119071222 4.254193263164 6.21460809842219 1.96990565461153 4.38077585277223 6.18001665365257 5.5683445037611 +pkc 5.96357934361845 6.50279004591562 5.20948615284142 5.87211778947542 2.15871472257434 3.89385903480047 5.89989735358249 1.99741770620125 5.55682806169954 7.27655640271871 6.37672694789863 +pkc 4.70953020131233 5.08140436498446 6.21460809842219 6.76388490856244 3.20274644293832 4.33598269617247 6.09807428216624 1.8531680973567 2.2213750375685 3.53514535417189 6.25958146406492 +pkc 5.82894561761021 6.37672694789863 6.22455842927536 6.75460409948796 2.41591377830105 4.39814601655377 6.23244801655052 0.943905898907128 3.73289633953071 5.68357976733868 5.05624580534831 +pkc 4.52396013056255 4.86753445045558 5.91889385427315 6.62936325343745 3.06805293513362 4.40671924726425 6.19644412779452 2.11384296839717 5.08140436498446 6.85329909318608 5.92692602597041 +pkc 7.22256601882217 7.52833176670725 5.26269018890489 5.95324333428778 5.54907608489522 4.254193263164 6.01615715969835 1.73518911773966 3.89385903480047 5.73979291217923 4.43438186500781 +pkc 3.40119738166216 4.27249074760558 5.26269018890489 5.78382518232974 2.19499988231411 2.91235066461494 4.81218435537242 0.657520002916794 4.84418708645859 6.81783057145415 5.64897423816121 +pkc 5.87211778947542 6.25190388316589 6.53958595561767 7.1777824161952 2.62466859216316 4.76217393479776 6.69208374250663 3.44361809754611 5.09375020080676 6.89871453432999 6.18001665365257 +pkc 4.05698877567833 3.92197333628131 6.16120732169508 6.75460409948796 2.19499988231411 2.96010509591084 5.11799381241676 2.14943391349987 5.11799381241676 7.02464903045364 6.01615715969835 +pkc 5.30826769740121 5.71042701737487 4.30811095172371 4.54223038621422 2.484906649788 4.23700086262362 6.12468339089421 3.00568260440716 4.01998014693324 5.82894561761021 5.35185813347607 +pkc 5.75574221358691 6.10702288774225 5.75574221358691 6.37672694789863 2.86220088092947 3.47196645255036 5.30826769740121 1.7630170003624 3.9759363311718 5.79301360838414 4.87519732320115 +pkc 6.59304453414244 7.12367278520461 5.58724865840025 6.1527326947041 2.20386912005489 4.76217393479776 6.45833828334479 1.87946504964716 4.67282883446191 6.47543271670409 5.63121178182137 +pkc 7.49220304261874 7.90617884039481 5.6021188208797 6.18826412308259 0.322083499169113 3.52636052461616 5.09375020080676 2.05923883436232 5.43372200355424 7.24064969425547 6.65544035036765 +pkc 7.28550654852279 7.65444322647011 5.13579843705026 5.74620319054015 2.00552585872967 3.9759363311718 5.91889385427315 2.12226153886276 5.36129216570943 7.05185562295589 6.23244801655052 +pkc 5.80211837537706 6.25958146406492 5.25227342804663 5.78382518232974 2.30258509299405 3.85014760171006 5.87211778947542 2.484906649788 3.9926809084456 5.82894561761021 5.41610040220442 +pkc 6.94408720822953 7.38461038317697 5.63835466933375 6.16120732169508 2.64617479738412 3.31054301339402 4.88280192258637 0.683096844706444 6.07993319509559 7.75319426988434 6.98007594056176 +pkc 5.93753620508243 6.35088571671474 7.28550654852279 7.72621265050753 3.8416005411316 3.62434093297637 5.48479693349065 2.11384296839717 4.54223038621422 6.40357419793482 5.11799381241676 +pkc 6.5206211275587 6.92559519711047 5.55682806169954 6.00881318544259 2.97552956623647 4.38949864951258 6.12468339089421 3.08648663682246 4.87519732320115 6.84481547920826 5.36129216570943 +pkc 6.30444880242198 6.75460409948796 7.51914995766982 7.98718474823347 3.93963817246112 3.75887182593397 5.62040086571715 3.03974915897077 4.3528552573736 6.07073772800249 5.34233425196481 +pkc 2.67414864942653 3.48124008933569 6.48463523563525 7.07834157955767 2.79728133483015 3.91202300542815 5.92692602597041 0.350656871613169 3.56953269648137 5.35185813347607 4.50645421304893 +pkc 4.34380542185368 4.82028156560504 5.64897423816121 6.25958146406492 2.41591377830105 4.44382703557933 6.39526159811545 2.7408400239252 5.2257466737132 7.0604763659998 5.82008293035236 +pkc 6.25958146406492 6.76388490856244 4.66343909411207 5.28826703069454 1.31372366828506 3.60549784517489 5.37989735354046 0 5.06259503302697 6.83625927727707 5.77455154554441 +pkc 6.21460809842219 6.49375383985169 5.62040086571715 6.19644412779452 2.84490938381941 4.0926765051214 5.77455154554441 1.9154509415706 6.18826412308259 7.96901178110648 6.35088571671474 +pkc 5.44241771052179 6.05443934626937 5.40717177146012 5.93753620508243 1.80828877117927 4.66343909411207 6.23244801655052 2.33214389523559 4.5152454784601 6.34035930372775 5.29831736654804 +pkc 5.88332238848828 6.42162226780652 6.40357419793482 6.98841318199959 2.91235066461494 4.34380542185368 6.16120732169508 0.854415328156068 4.13676527810605 5.96357934361845 4.50645421304893 +pkc 5.57594910314632 6.03548143252476 6.12468339089421 6.77308037565554 2.34180580614733 3.9759363311718 5.84643877505772 0.73716406597672 2.08691355651854 3.6163087612791 6.94408720822953 +pkc 5.79301360838414 6.32256523992728 6.84481547920826 7.29437729928882 4.52396013056255 4.46129981556839 6.11589212548303 3.4626060097908 3.47196645255036 5.0998664278242 4.91998092582813 +pkc 5.30826769740121 5.74620319054015 6.64639051484773 7.16857989726403 3.29953372788566 5.20948615284142 7.12367278520461 4.19116874685764 6.99759598298193 8.61667646990119 7.10578612948127 +pkc 6.32256523992728 6.82654522355659 5.82008293035236 6.34035930372775 2.85070650150373 3.98527346716774 5.80211837537706 2.77258872223978 4.68213122712422 6.35088571671474 4.86753445045558 +pkc 4.87519732320115 5.47646355193151 5.14749447681345 5.76519110278484 2.05923883436232 3.62434093297637 5.39816270151775 2.42480272571829 4.56954300834494 6.36818718635049 5.50533153593236 +pkc 4.44382703557933 4.91998092582813 5.73979291217923 6.27852142416584 2.80336038090653 3.3357695763397 4.81218435537242 1.94304891677428 6.57507584059962 8.21202580462344 6.98007594056176 +pkc 4.79579054559674 5.10594547390058 6.61069604471776 7.24921505711439 1.71739505393919 2.79728133483015 5.21493575760899 4.14630430115281 4.72738781871234 6.52941883826223 5.50533153593236 +pkc 7.49220304261874 7.81601383915903 5.82894561761021 6.41345895716736 3.08648663682246 3.48124008933569 4.99043258677874 2.73436750941958 2.40694510831829 4.0926765051214 4.10098910494077 +pkc 6.24222326545517 6.55677835615804 5.75574221358691 6.49375383985169 1.71739505393919 4.38077585277223 5.94542060860658 2.36085400111802 5.32300997913841 7.14124512235049 6.33150184989369 +pkc 6.89871453432999 7.25841215059531 5.2257466737132 5.85507192220243 1.65441127807683 3.93963817246112 5.75574221358691 1.34025042261848 6.48463523563525 8.0861025356691 7.08757370555797 +pkc 6.1527326947041 6.72743172485086 4.69134788222914 5.45958551414416 2.9338568698359 3.82209829790016 5.62040086571715 2.60268968544438 4.86753445045558 6.73696695800186 5.36129216570943 +pkc 4.02891675689965 4.63472898822964 5.47646355193151 6.10702288774225 3.09557760852371 4.27249074760558 6.30444880242198 2.4932054526027 4.40671924726425 6.16120732169508 5.44241771052179 +pkc 4.88280192258637 5.37989735354046 5.73979291217923 6.44888939414686 0.512823626428664 4.38077585277223 6.20657592672493 1.30291275218084 3.37416870927424 4.91998092582813 6.8627579130514 +pkc 6.54821910276237 7.02464903045364 5.04342511691925 5.65599181081985 2.4932054526027 4.31748811353631 6.01615715969835 3.2846635654062 3.2188758248682 4.74493212836325 3.69635146895264 +pkc 4.29045944114839 4.71849887129509 4.68213122712422 5.4971682252932 2.33214389523559 3.23080439573347 4.70048036579242 1.8531680973567 4.26267987704132 6.18001665365257 5.24174701505964 +pkc 5.59471137960184 6.02586597382531 5.18738580584075 5.79301360838414 0.494696241836107 4.56017282005736 6.42162226780652 2.85070650150373 4.03777421073371 5.85507192220243 6.27852142416584 +pkc 5.54907608489522 5.98141421125448 5.45958551414416 5.95324333428778 0.99694863489161 4.65396035015752 6.38687931936265 3.67882911826043 3.82209829790016 5.51342874616498 4.39814601655377 +pkc 5.55682806169954 5.91889385427315 4.77068462446567 5.26269018890489 0.231111720963387 3.2846635654062 5.21493575760899 0 5.47646355193151 7.32118855673948 6.04500531403601 +pkc 5.01063529409626 5.48479693349065 4.95582705760126 5.55682806169954 2.23108909128898 3.77734810210154 5.55682806169954 2.53369681395743 4.16511363311031 5.99893656194668 5.55682806169954 +pkc 5.26269018890489 5.85507192220243 5.52146091786225 6.07993319509559 0.494696241836107 4.91998092582813 6.81783057145415 2.50959926237837 6.09807428216624 7.75319426988434 7.67229245562876 +pkc 5.39816270151775 5.95324333428778 6.63856778916652 7.1777824161952 2.23108909128898 3.86702563949741 5.43372200355424 2.87919845729804 2.77258872223978 4.11903717481247 7.35755620091035 +pkc 5.92692602597041 6.41345895716736 6.33150184989369 6.81783057145415 2.61739583283408 4.24563400976833 6.05443934626937 2.33214389523559 4.92725368515721 6.54821910276237 5.71042701737487 +pkc 4.21803603456465 4.57779898919196 6.42162226780652 7.11476944836646 2.88480071284671 2.32238772029023 4.43438186500781 3.92197333628131 5.07517381523383 6.78219205600679 5.3890717298165 +pkc 5.65599181081985 6.10702288774225 5.82008293035236 6.44888939414686 2.71469474382088 3.19458313229916 5.16478597392351 1.30291275218084 3.71357206670431 5.5683445037611 5.37063802812766 +pkc 5.68357976733868 6.25190388316589 5.93753620508243 6.60258789218934 2.33214389523559 3.40119738166216 5.16478597392351 1.81645208181843 4.52396013056255 6.44888939414686 5.59471137960184 +pkc 4.62497281328427 5.19849703126583 6.8001700683022 7.35755620091035 3.09557760852371 3.62434093297637 5.50533153593236 2.30258509299405 4.05698877567833 5.8111409929767 7.13249755166004 +pkc 5.04342511691925 5.21493575760899 5.73009978297357 6.21460809842219 2.91235066461494 3.94931879017184 5.90808293816893 2.10413415427021 5.18738580584075 6.95272864462487 5.17048399503815 +pkc 5.21493575760899 5.71042701737487 5.34233425196481 5.78382518232974 2.41591377830105 2.39789527279837 4.5152454784601 1.32175583998232 4.59612944133594 6.46769872610435 6.02586597382531 +pkc 5.7037824746562 6.24222326545517 5.83773044716594 6.41345895716736 1.95160817016995 3.52636052461616 4.95582705760126 1.870262530716 3.48124008933569 5.14749447681345 4.19116874685764 +pkc 6.75460409948796 7.21376830811864 5.4971682252932 6.07993319509559 2.94968833505258 3.52636052461616 4.84418708645859 1.95160817016995 3.87743156065853 5.7037824746562 4.23700086262362 +pkc 5.64897423816121 6.26909628370626 5.40717177146012 5.93753620508243 2.09556092355972 3.96651119071222 5.4510384535657 2.45958884180371 6.85329909318608 8.44591198941127 7.45645455517621 +pkc 5.5683445037611 5.87211778947542 6.70073110954781 7.22256601882217 4.20916023665068 2.92316158071916 4.67282883446191 1.92424865227413 2.64617479738412 4.10098910494077 6.4393503711001 +pkc 5.85507192220243 6.20657592672493 5.48479693349065 5.82008293035236 2.05923883436232 4.12874598893943 5.8111409929767 2.25758772706331 3.96651119071222 5.77455154554441 4.254193263164 +pkc 4.22683374526818 4.65396035015752 5.32300997913841 5.89989735358249 1.88858365386359 2.94968833505258 4.39814601655377 2.58776403522771 4.38077585277223 6.02586597382531 5.05624580534831 +pkc 5.4249500174814 6.01615715969835 5.37989735354046 6.02586597382531 0.73716406597672 3.88567903008854 5.87211778947542 1.63705307946707 3.8308129500026 5.63835466933375 6.61069604471776 +pkc 3.39114704580865 3.93963817246112 5.35185813347607 6.00881318544259 1.08856195281461 4.56017282005736 6.35088571671474 2.37954613413017 4.84418708645859 6.45833828334479 6.13339804299665 +pkc 5.33271879326537 5.74620319054015 5.47646355193151 5.96357934361845 2.76000994003292 2.75366071235426 3.94931879017184 1.69009581545155 3.80443779474821 5.75574221358691 5.10594547390058 +pkc 4.74493212836325 5.13579843705026 5.67675380226828 6.32256523992728 1.38629436111989 3.4904285153901 5.45958551414416 1.49290409617815 4.17284762371004 5.96357934361845 5.26269018890489 +pkc 5.2257466737132 5.7037824746562 4.22683374526818 5.5683445037611 2.58021682959233 3.13983261752775 5.09375020080676 1.44926916028128 3.89385903480047 5.82008293035236 5.19849703126583 +pkc 5.04342511691925 5.61312810638807 5.36129216570943 5.98141421125448 2.24812890719799 3.95699637107088 5.51342874616498 2.4932054526027 4.66343909411207 6.64639051484773 5.18738580584075 +pkc 5.19849703126583 5.6937321388027 5.01063529409626 5.6021188208797 0 4.20916023665068 5.97126183979046 2.37024374146786 3.85014760171006 5.52146091786225 6.78219205600679 +pkc 6.64639051484773 7.08757370555797 5.57594910314632 5.97126183979046 1.57484646766448 3.05870707271538 5.01063529409626 2.72785282839839 4.39814601655377 6.07073772800249 5.18738580584075 +pkc 4.70048036579242 5.2257466737132 3.51749783735832 4.0926765051214 3.63495111208838 4.66343909411207 6.50279004591562 2.62466859216316 4.81218435537242 6.50279004591562 5.6021188208797 +pkc 6.35957386867238 6.91671502035361 5.51342874616498 6.25958146406492 1.36609165380237 4.03777421073371 5.74620319054015 3.17387845893747 4.01998014693324 5.74620319054015 3.80443779474821 +pkc 5.51342874616498 6.04500531403601 5.06259503302697 5.58724865840025 2.41591377830105 3.89385903480047 5.57594910314632 1.708377860289 2.51769647261099 4.24563400976833 5.44241771052179 +pkc 5.47646355193151 5.92692602597041 5.20948615284142 5.71042701737487 1.71739505393919 3.70622809244855 5.4510384535657 1.4747630091075 5.52146091786225 7.24921505711439 6.22455842927536 +pkc 5.18178355029209 5.68357976733868 6.26909628370626 6.880384082186 2.80336038090653 3.08648663682246 4.42484663185681 0.0769610411361284 3.93963817246112 5.77455154554441 5.82894561761021 +pkc 5.11799381241676 5.66642668811243 5.73009978297357 6.28785856016178 1.11514159061932 3.39114704580865 5.0998664278242 1.22377543162212 6.7093043402583 8.34687925374656 6.81783057145415 +pkc 6.35957386867238 6.81783057145415 7.23128700432762 7.71735127218533 3.98527346716774 3.9926809084456 5.72031177660741 2.37024374146786 3.73289633953071 5.4971682252932 4.62497281328427 +pkc 5.46806014113513 5.8111409929767 5.73009978297357 6.24222326545517 0 4.77068462446567 6.72743172485086 3.04927304048202 5.45958551414416 7.21376830811864 6.44888939414686 +pkc 5.82894561761021 6.18001665365257 5.17048399503815 5.73979291217923 0.928219302739429 4.29045944114839 6.20657592672493 2.57261223020711 5.15329159449778 6.93439720992856 5.89164421182577 +pkc 5.7037824746562 6.25190388316589 4.53367418428302 5.10594547390058 2.46809953147162 3.82209829790016 5.63835466933375 2.9391619220656 4.46129981556839 6.43133108193348 5.85507192220243 +pkc 6.42162226780652 6.83625927727707 4.56017282005736 5.09375020080676 1.32175583998232 4.0842942263686 5.63835466933375 2.02419306744936 3.12236492448736 4.91998092582813 4.80402104473326 +pkc 6.77308037565554 7.22256601882217 6.00881318544259 6.48463523563525 2.52572864430826 3.92197333628131 5.93753620508243 0.908258560176891 4.58700621536042 6.32256523992728 5.37063802812766 +pkc 5.34233425196481 5.77455154554441 4.56017282005736 5.23644196282995 1.4747630091075 4.39814601655377 6.37672694789863 2.77881927199042 4.29045944114839 6.05443934626937 5.66642668811243 +pkc 4.20916023665068 4.72738781871234 5.59471137960184 7.0604763659998 4.15575319035074 2.04122032885964 2.67414864942653 4.78749174278205 4.0926765051214 5.89989735358249 4.66343909411207 +pkc 5.59471137960184 6.04500531403601 6.18001665365257 6.72743172485086 2.9391619220656 4.52396013056255 6.38687931936265 3.00568260440716 4.86753445045558 6.69208374250663 5.36129216570943 +pkc 6.91671502035361 7.3304052118444 6.00881318544259 6.66440902035041 2.2935443483419 3.35340671782581 5.28826703069454 2.77258872223978 6.19644412779452 7.91498300584839 7.14124512235049 +pkc 4.76217393479776 5.28826703069454 5.44241771052179 6.05443934626937 1.89761985992753 3.80443779474821 5.44241771052179 2.35137525716348 6.92559519711047 8.58073121222023 7.67229245562876 +pkc 4.56954300834494 4.59612944133594 5.29831736654804 5.82894561761021 1.11514159061932 4.24563400976833 6.19644412779452 2.51769647261099 6.23244801655052 7.95120715647297 7.13249755166004 +pkc 5.45958551414416 5.75574221358691 4.70048036579242 5.11799381241676 1.32175583998232 4.56017282005736 6.35957386867238 2.2935443483419 4.52396013056255 6.51174532964473 5.67675380226828 +pkc 6.30444880242198 6.83625927727707 5.72031177660741 6.18001665365257 2.40694510831829 3.92986292355648 5.65599181081985 0.609765571620894 4.18205014264121 5.91889385427315 5.77455154554441 +pkc 5.21493575760899 5.73979291217923 4.62497281328427 5.26269018890489 2.86789890204411 4.77912349311153 6.55677835615804 1.83418018511201 4.54223038621422 6.38687931936265 5.4510384535657 +pkc 6.19644412779452 6.70073110954781 6.45833828334479 7.15070145759253 3.3178157727231 3.49953328238302 5.39816270151775 0 3.70622809244855 5.61312810638807 4.64439089914137 +pkc 5.66642668811243 5.98141421125448 5.94542060860658 6.5206211275587 2.97552956623647 3.96651119071222 5.88332238848828 0.819779831493311 4.34380542185368 6.00881318544259 5.94542060860658 +pkc 5.21493575760899 5.76519110278484 5.08140436498446 5.71042701737487 1.67335123817775 3.67882911826043 5.51342874616498 2.64617479738412 3.94931879017184 5.77455154554441 4.66343909411207 +pkc 6.13339804299665 6.46769872610435 5.16478597392351 5.77455154554441 0.73716406597672 3.39114704580865 5.07517381523383 2.07819075977818 3.89385903480047 5.6937321388027 4.97673374242057 +pkc 5.09375020080676 5.45958551414416 4.50645421304893 5.18738580584075 0.693147180559945 4.20020495292158 5.92692602597041 2.4423470353692 3.58073729549423 5.23644196282995 5.66642668811243 +pkc 5.27811465923052 5.8111409929767 7.88833450073865 8.46379241468912 5.21493575760899 4.54223038621422 6.25190388316589 2.2213750375685 6.57507584059962 8.17611034223734 8.13094230223188 +pkc 4.64439089914137 4.96284463025991 5.58724865840025 6.20657592672493 1.50185270175416 4.70048036579242 6.62936325343745 2.85070650150373 4.94875989037817 6.70073110954781 5.84643877505772 +pkc 6.30444880242198 6.77308037565554 5.79301360838414 6.05443934626937 3.18221184049661 3.88567903008854 5.78382518232974 2.08691355651854 4.07414185490458 5.99893656194668 5.62040086571715 +pkc 5.87211778947542 6.38687931936265 5.73009978297357 6.22455842927536 1.7263316639056 3.03013370027132 5.01727983681492 2.04122032885964 4.77912349311153 6.72743172485086 4.99043258677874 +pkc 6.25958146406492 6.75460409948796 5.45958551414416 6.16961073249146 2.65324196460721 3.66867674679642 5.40717177146012 0.99694863489161 4.13676527810605 5.90808293816893 5.79301360838414 +pkc 6.28785856016178 6.73696695800186 5.89989735358249 6.35957386867238 1.28647402583768 3.21084365317094 5.3890717298165 2.75366071235426 6.36818718635049 8.02322468471667 7.12367278520461 +pkc 5.54126354515843 6.06145691892802 5.6021188208797 6.02586597382531 2.23108909128898 4.37071287477361 6.24222326545517 4.13676527810605 5.0998664278242 6.67329796776765 6.84481547920826 +pkc 5.28826703069454 5.85507192220243 5.37989735354046 6.07993319509559 1.95160817016995 4.3528552573736 6.27852142416584 4.52396013056255 3.77734810210154 5.6021188208797 4.99043258677874 +pkc 7.6004023345004 8.02322468471667 5.14749447681345 5.66642668811243 0.879626747502564 4.03777421073371 5.59471137960184 2.53369681395743 4.19116874685764 6.06145691892802 4.72738781871234 +pkc 5.31811999384422 5.0998664278242 5.7037824746562 6.29526600143965 2.37024374146786 3.11351530921037 4.91265488573605 1.31372366828506 3.92986292355648 5.35185813347607 5.73979291217923 +pkc 5.46806014113513 5.78382518232974 5.63835466933375 6.33150184989369 1.89761985992753 3.05870707271538 4.70953020131233 1.69009581545155 3.8308129500026 5.63835466933375 5.7037824746562 +pkc 6.46769872610435 6.98841318199959 6.21460809842219 6.74641212857337 2.41591377830105 3.82209829790016 5.89989735358249 0 4.27249074760558 6.07073772800249 5.88332238848828 +pkc 6.37672694789863 6.77308037565554 5.73009978297357 6.36818718635049 2.42480272571829 4.49758497530815 6.36818718635049 2.47653840011748 4.04830062372069 5.74620319054015 5.3890717298165 +pkc 7.3304052118444 7.77106708606541 5.43372200355424 5.98141421125448 2.23108909128898 3.31054301339402 5.28826703069454 1.73518911773966 3.90399083373088 5.76519110278484 4.37071287477361 +pkc 7.37525577800975 7.72621265050753 6.05443934626937 6.73696695800186 3.25424296870549 4.00186370942794 5.84643877505772 2.68784749378469 4.92725368515721 6.85329909318608 5.91889385427315 +pkc 5.53338948872752 5.78382518232974 5.61312810638807 6.10702288774225 3.2846635654062 3.29953372788566 4.91998092582813 1.21491274436427 4.78749174278205 6.67329796776765 5.3890717298165 +pkc 6.01615715969835 6.57507584059962 5.24174701505964 5.92692602597041 2.86789890204411 2.35137525716348 2.18605127673809 2.57261223020711 5.21493575760899 6.96129604591017 5.59471137960184 +pkc 8.12207437536222 8.50875771259514 6.01615715969835 6.44888939414686 3.35340671782581 3.06805293513362 4.42484663185681 4.31748811353631 3.27336401015227 4.98360662170834 4.38949864951258 +pkc 3.45315712059287 4.16511363311031 6.07993319509559 6.62936325343745 2.79728133483015 4.33598269617247 6.27852142416584 3.05870707271538 4.30811095172371 6.16120732169508 5.37063802812766 +pkc 5.15329159449778 5.63121178182137 7.27655640271871 7.79811262882979 4.254193263164 4.50645421304893 6.5206211275587 1.61938824328727 4.44382703557933 6.16120732169508 5.4510384535657 +pkc 6.59304453414244 7.09672137849476 5.4510384535657 5.93753620508243 2.24812890719799 3.94931879017184 5.09375020080676 2.89591193827178 5.27811465923052 6.98841318199959 5.96357934361845 +pkc 4.42484663185681 4.56954300834494 7.14124512235049 7.63626960337937 2.86789890204411 2.7408400239252 4.67282883446191 2.30258509299405 4.52396013056255 6.30444880242198 4.94875989037817 +pkc 5.21493575760899 5.75574221358691 5.35185813347607 5.83773044716594 0.0676586484738149 3.55248682920838 5.44241771052179 2.1770218700187 4.56954300834494 6.51174532964473 5.3890717298165 +pkc 4.59612944133594 4.82028156560504 6.00881318544259 6.62936325343745 3.04927304048202 0.871293365943419 2.13179677201376 2.45958884180371 5.28826703069454 7.08757370555797 5.75574221358691 +pkc 5.87211778947542 6.44888939414686 7.40245152081824 7.81601383915903 4.77068462446567 3.76815263500844 5.65599181081985 2.36085400111802 4.74493212836325 6.50279004591562 5.87211778947542 +pkc 5.57594910314632 6.00881318544259 5.10594547390058 6.1527326947041 4.68213122712422 4.03777421073371 5.99893656194668 2.2935443483419 3.4626060097908 5.4971682252932 4.47049528266149 +pkc 5.97126183979046 6.40357419793482 4.17284762371004 4.70048036579242 2.1770218700187 5.14749447681345 6.96129604591017 2.19499988231411 5.43372200355424 7.22256601882217 5.97126183979046 +pkc 6.16120732169508 6.62007320653036 3.95699637107088 4.40671924726425 1.24126858906963 3.85862222870103 5.54126354515843 2.03339760317843 6.75460409948796 8.37378460812088 6.93439720992856 +pkc 6.8627579130514 7.27655640271871 6.31354804627709 6.8627579130514 3.23867845216438 3.72328088083127 5.80211837537706 1.07840958135059 4.24563400976833 5.96357934361845 4.88280192258637 +pkc 6.01615715969835 6.46769872610435 5.23644196282995 5.75574221358691 1.89761985992753 3.19458313229916 4.94875989037817 2.34180580614733 6.95272864462487 8.59877317840866 7.72621265050753 +pkc 4.68213122712422 5.18738580584075 6.68336094576627 7.16857989726403 2.77881927199042 4.06560209335645 5.72031177660741 3.4904285153901 4.27249074760558 5.97126183979046 5.28826703069454 +pkc 5.41610040220442 5.88332238848828 5.82008293035236 6.35088571671474 2.79728133483015 3.89385903480047 5.77455154554441 3.94931879017184 4.87519732320115 6.53958595561767 5.72031177660741 +pkc 5.61312810638807 5.98141421125448 4.89034912822175 5.31811999384422 1.98787434815435 3.49953328238302 5.18178355029209 0.00995033085316809 2.36085400111802 4.38077585277223 5.77455154554441 +pkc 5.84643877505772 6.36818718635049 7.55538194424027 7.98718474823347 4.60517018598809 4.88280192258637 6.44888939414686 3.68887945411394 5.03043792139244 6.78219205600679 5.57594910314632 +pkc 7.32118855673948 7.68109900153636 5.2257466737132 5.77455154554441 2.68784749378469 2.91235066461494 4.43438186500781 1.86252854011626 4.24563400976833 5.99146454710798 4.64439089914137 +pkc 4.88280192258637 5.46806014113513 6.68336094576627 7.24921505711439 2.9391619220656 3.34638914516716 5.18178355029209 2.25758772706331 4.53367418428302 6.25190388316589 5.5683445037611 +pkc 4.57779898919196 5.08140436498446 5.19849703126583 5.84643877505772 1.56444054650336 3.92197333628131 5.8636311755981 0.488580014818671 6.29526600143965 8.07713663853845 6.11589212548303 +pkc 5.39816270151775 5.82894561761021 6.10702288774225 6.75460409948796 2.84490938381941 3.03013370027132 4.8283137373023 1.2947271675944 5.43372200355424 7.10578612948127 6.69208374250663 +pkc 5.54126354515843 6.03548143252476 5.4510384535657 5.94542060860658 2.12226153886276 4.06560209335645 5.78382518232974 1.65441127807683 4.17284762371004 6.21460809842219 4.90527477843843 +pkc 5.01063529409626 5.44241771052179 5.2257466737132 5.79301360838414 2.05027016437956 3.88567903008854 5.64897423816121 1.07840958135059 4.78749174278205 6.43133108193348 6.8001700683022 +pkc 5.53338948872752 5.99893656194668 4.56017282005736 5.0998664278242 2.4423470353692 4.30811095172371 6.29526600143965 2.80336038090653 4.10098910494077 5.82894561761021 4.91265488573605 +pkc 6.82654522355659 7.25841215059531 5.6937321388027 6.05443934626937 3.42751468997953 1.01523067972906 2.9704144655697 4.59612944133594 6.95272864462487 8.55371796609861 7.71735127218533 +pkc 5.35185813347607 5.64897423816121 5.64897423816121 6.39526159811545 2.40694510831829 4.71849887129509 6.48463523563525 3.55248682920838 4.15575319035074 5.89164421182577 5.16478597392351 +pkc 4.57779898919196 4.16511363311031 4.5152454784601 5.13579843705026 1.96990565461153 4.99043258677874 6.81783057145415 2.46809953147162 4.21803603456465 6.07073772800249 5.30826769740121 +pkc 5.11799381241676 5.53338948872752 5.32300997913841 5.93753620508243 2.10413415427021 2.58776403522771 4.29045944114839 2.54160199346455 3.98527346716774 5.68357976733868 5.25227342804663 +pkc 6.44888939414686 6.97073007814353 5.77455154554441 6.28785856016178 2.45958884180371 4.55071400019203 6.5206211275587 2.90690105984738 3.77734810210154 5.41610040220442 6.59304453414244 +pkc 4.44382703557933 5.01063529409626 6.85329909318608 7.37525577800975 2.92316158071916 4.47049528266149 6.33150184989369 2.3887627892351 4.11903717481247 6.05443934626937 5.74620319054015 +pkc 5.32300997913841 5.8111409929767 4.47049528266149 5.01727983681492 1.84371920815877 5.41610040220442 7.23128700432762 4.30811095172371 4.95582705760126 6.77308037565554 5.57594910314632 +pkc 5.71042701737487 6.18826412308259 6.20657592672493 6.78219205600679 3.12236492448736 3.3357695763397 4.98360662170834 3.03013370027132 3.15700042115011 4.98360662170834 4.79579054559674 +pkc 6.35088571671474 6.84481547920826 4.62497281328427 5.2257466737132 0.113328685307003 4.86753445045558 6.7093043402583 3.41772668361337 4.20020495292158 6.16961073249146 5.76519110278484 +pkc 5.59471137960184 5.89164421182577 5.4249500174814 5.85507192220243 2.67414864942653 4.91998092582813 6.90775527898214 3.40784192438082 5.55682806169954 7.28550654852279 5.72031177660741 +pkc 6.73696695800186 7.15070145759253 4.98360662170834 5.63121178182137 2.34180580614733 4.16511363311031 5.99146454710798 1.59127394180643 4.16511363311031 6.03548143252476 4.95582705760126 +pkc 7.34858753092759 7.69028602067677 6.58340922215876 7.1777824161952 3.16547504814109 3.43720781918519 5.28826703069454 2.1770218700187 6.81783057145415 8.44591198941127 6.77308037565554 +pkc 5.26269018890489 5.46806014113513 5.66642668811243 6.16961073249146 2.09556092355972 2.14124194258528 3.8308129500026 4.39814601655377 3.4904285153901 5.35185813347607 3.56104608260405 +pkc 5.61312810638807 5.98141421125448 5.31811999384422 5.87211778947542 0.703097511413113 4.3267781604434 5.91889385427315 2.2213750375685 4.01096295328305 5.73979291217923 5.4510384535657 +pkc 6.33150184989369 6.73696695800186 6.30444880242198 6.880384082186 2.60268968544438 3.92197333628131 5.68357976733868 2.40694510831829 3.9759363311718 5.85507192220243 5.16478597392351 +pkc 5.94542060860658 6.18826412308259 5.88332238848828 6.35088571671474 2.04122032885964 3.75887182593397 5.57594910314632 1.28647402583768 4.5152454784601 6.35957386867238 5.35185813347607 +pkc 7.05185562295589 7.43838353004431 5.54126354515843 6.14418563412565 2.15871472257434 3.17387845893747 4.86753445045558 2.16791018966744 4.29045944114839 6.12468339089421 5.16478597392351 +pkc 6.98007594056176 7.39326309476384 5.04342511691925 5.66642668811243 1.68268837417369 2.85070650150373 4.60517018598809 2.58776403522771 4.93447393313069 6.78219205600679 5.18178355029209 +pkc 5.68357976733868 5.99146454710798 5.20948615284142 5.78382518232974 1.09861228866811 3.32862668882732 5.17048399503815 0.928219302739429 5.05624580534831 6.79122146272619 5.89989735358249 +pkc 6.46769872610435 7.04228617193974 5.46806014113513 5.95324333428778 2.86789890204411 4.01096295328305 5.53338948872752 2.43361335540045 4.33598269617247 6.18826412308259 4.87519732320115 +pkc 3.10458667846607 3.21084365317094 5.29831736654804 5.83773044716594 1.97823903617067 3.70622809244855 5.63121178182137 2.53369681395743 3.51749783735832 5.29831736654804 4.91998092582813 +pkc 5.83773044716594 6.1527326947041 6.60258789218934 7.6182510978767 4.53367418428302 4.24563400976833 6.16961073249146 2.84490938381941 5.26269018890489 7.15070145759253 6.01615715969835 +pkc 5.07517381523383 5.33271879326537 5.48479693349065 6.07073772800249 1.9154509415706 2.33214389523559 4.3267781604434 1.4655675420144 2.64617479738412 4.28082412916472 5.48479693349065 +pkc 6.09807428216624 6.56526497003536 5.80211837537706 6.44888939414686 2.12226153886276 3.50855589998265 5.27811465923052 4.39814601655377 6.61069604471776 8.27486682068525 7.16857989726403 +pkc 4.19116874685764 4.56017282005736 5.54126354515843 6.12468339089421 2.37024374146786 2.79728133483015 4.57779898919196 2.40694510831829 4.22683374526818 5.97126183979046 5.59471137960184 +pkc 6.27852142416584 6.77308037565554 2.52572864430826 2.75366071235426 2.86220088092947 4.39814601655377 6.14418563412565 2.15871472257434 4.8283137373023 6.61069604471776 5.63835466933375 +pkc 4.85981240436167 5.26269018890489 4.254193263164 4.69134788222914 1.93441576962958 3.36384159511839 5.09375020080676 1.03318448334565 3.58073729549423 5.4971682252932 4.45201900649392 +pkc 5.15329159449778 5.48479693349065 5.48479693349065 6.03548143252476 2.45958884180371 5.09375020080676 6.95272864462487 1.77155676191054 7.00669522683704 8.69767973226446 7.79811262882979 +pkc 5.40717177146012 5.73979291217923 5.6937321388027 6.33150184989369 2.2935443483419 4.0842942263686 5.98141421125448 1.26694760348732 3.9759363311718 5.68357976733868 4.66343909411207 +pkc 4.79579054559674 5.16478597392351 4.0926765051214 5.23644196282995 3.60549784517489 3.66867674679642 5.52146091786225 1.43031124653666 4.3528552573736 6.03548143252476 5.33271879326537 +pkc 5.7037824746562 6.08904487544685 6.02586597382531 6.62936325343745 2.61739583283408 4.3528552573736 6.45833828334479 3.43720781918519 4.76217393479776 6.34035930372775 6.25190388316589 +pkc 5.50533153593236 6.01615715969835 6.03548143252476 6.4393503711001 2.70805020110221 4.76217393479776 6.56526497003536 3.13113691056019 4.19116874685764 6.10702288774225 5.98141421125448 +pkc 4.94875989037817 5.50533153593236 5.82894561761021 6.51174532964473 2.88480071284671 3.9759363311718 6.04500531403601 1.66392609771817 4.45201900649392 6.14418563412565 5.27811465923052 +pkc 5.18738580584075 5.82894561761021 4.8283137373023 5.36129216570943 1.65441127807683 4.21803603456465 6.21460809842219 2.27521389619791 3.19458313229916 4.83628190695148 5.31811999384422 +pkc 5.6937321388027 6.00881318544259 7.54644627374602 7.96901178110648 3.66867674679642 4.84418708645859 6.80903930604298 3.45315712059287 4.82028156560504 6.8001700683022 6.32256523992728 +pkc 5.26269018890489 5.54907608489522 5.55682806169954 5.92692602597041 2.65324196460721 4.0926765051214 5.8636311755981 1.86252854011626 5.24174701505964 6.85329909318608 7.0335064842877 +pkc 6.02586597382531 6.4393503711001 5.36129216570943 5.84643877505772 2.37024374146786 1.6467336971778 3.38099467434464 4.46129981556839 4.22683374526818 6.00881318544259 5.32300997913841 +pkc 4.5152454784601 4.66343909411207 5.75574221358691 6.35088571671474 1.32175583998232 4.8283137373023 6.75460409948796 4.29045944114839 4.46129981556839 6.38687931936265 5.67675380226828 +pkc 4.50645421304893 4.89034912822175 6.8627579130514 7.39326309476384 3.47196645255036 4.77912349311153 6.38687931936265 1.65441127807683 3.81330703248899 5.76519110278484 4.43438186500781 +pkc 6.67329796776765 7.16857989726403 5.54126354515843 6.08904487544685 2.33214389523559 4.37071287477361 6.00881318544259 4.41642806139121 5.8111409929767 7.55538194424027 7.0335064842877 +pkc 6.5206211275587 7.07834157955767 4.06560209335645 4.7361984483945 0 3.91202300542815 5.95324333428778 2.68102152871429 3.37416870927424 5.01063529409626 4.34380542185368 +pkc 4.70953020131233 5.20948615284142 6.08904487544685 6.77308037565554 1.93441576962958 3.10458667846607 4.82028156560504 0 4.30811095172371 6.18826412308259 5.87211778947542 +pkc 5.04342511691925 5.39816270151775 6.89871453432999 7.42952084278646 3.42751468997953 3.9759363311718 5.72031177660741 2.89591193827178 5.24174701505964 7.02464903045364 6.33150184989369 +pkc 6.57507584059962 7.04228617193974 5.04342511691925 5.47646355193151 0 4.20020495292158 6.23244801655052 1.86252854011626 4.55071400019203 6.24222326545517 6.49375383985169 +pkc 6.79122146272619 7.22256601882217 5.32300997913841 5.95324333428778 1.78170913337455 4.10098910494077 5.82008293035236 2.70805020110221 4.74493212836325 6.55677835615804 5.51342874616498 +pkc 5.26269018890489 5.74620319054015 4.20020495292158 4.66343909411207 1.26694760348732 3.08648663682246 4.78749174278205 0.672944473242426 1.34807314829969 3.79548918917219 3.66867674679642 +pkc 5.4971682252932 5.96357934361845 5.66642668811243 6.11589212548303 2.81540871942271 4.48863636973214 6.52941883826223 1.66392609771817 7.0335064842877 8.54480835844921 7.51043055637801 +pkc 5.07517381523383 5.44241771052179 5.43372200355424 5.99146454710798 2.67414864942653 4.30811095172371 6.34035930372775 1.56444054650336 5.0998664278242 6.94408720822953 5.50533153593236 +pkc 6.32256523992728 6.81783057145415 4.97673374242057 5.47646355193151 0 4.0842942263686 6.21460809842219 0.963174317773006 5.06259503302697 6.85329909318608 5.37989735354046 +pkc 5.39816270151775 5.95324333428778 5.63121178182137 6.28785856016178 1.96009478404727 4.82028156560504 6.63856778916652 3.23867845216438 5.52146091786225 7.16857989726403 5.05624580534831 +pkc 5.55682806169954 5.98141421125448 5.20948615284142 5.77455154554441 2.82137888640921 2.14124194258528 4.14630430115281 4.21803603456465 3.63495111208838 5.30826769740121 4.88280192258637 +pkc 5.90808293816893 6.32256523992728 6.48463523563525 7.06987412845857 3.25424296870549 3.13113691056019 5.13579843705026 2.47653840011748 6.30444880242198 7.99598047476376 6.77308037565554 +pkc 4.62497281328427 4.84418708645859 5.24174701505964 5.74620319054015 2.52572864430826 3.31054301339402 5.18738580584075 1.27815220250019 6.27852142416584 8.01400499477946 6.95272864462487 +pkc 7.6275443904885 8.04109100370863 6.23244801655052 6.87212810133899 2.89591193827178 3.58073729549423 5.41610040220442 2.18605127673809 3.69635146895264 5.33271879326537 5.05624580534831 +pkc 6.00881318544259 6.38687931936265 5.74620319054015 6.34035930372775 3.66867674679642 3.68887945411394 5.73979291217923 1.34025042261848 4.3267781604434 6.20657592672493 4.99043258677874 +pkc 6.60258789218934 7.00669522683704 5.98141421125448 6.56526497003536 3.05870707271538 5.05624580534831 6.81783057145415 3.31054301339402 5.18738580584075 6.95272864462487 5.71042701737487 +pkc 5.10594547390058 5.34233425196481 6.18826412308259 6.91671502035361 2.1770218700187 3.63495111208838 5.32300997913841 1.92424865227413 5.19849703126583 6.80903930604298 7.3038432252777 +pkc 5.73979291217923 6.13339804299665 5.25227342804663 5.94542060860658 1.96990565461153 3.26575941076705 5.03043792139244 2.81540871942271 3.92986292355648 5.7037824746562 5.20948615284142 +pkc 7.19593722647557 7.64539769942863 6.62936325343745 7.13249755166004 4.02891675689965 4.40671924726425 6.32256523992728 2.71469474382088 5.48479693349065 7.25841215059531 5.6937321388027 +pkc 5.23644196282995 5.82894561761021 4.74493212836325 5.41610040220442 2.61006979274201 3.73289633953071 5.68357976733868 2.58776403522771 3.6609942506244 5.32300997913841 3.66867674679642 +pkc 7.09672137849476 7.49220304261874 6.66440902035041 7.26752542782817 2.70136121295141 2.75366071235426 4.65396035015752 1.79840401194672 6.50279004591562 8.12207437536222 6.70073110954781 +pkc 7.21376830811864 7.64539769942863 5.18738580584075 5.7037824746562 2.36085400111802 2.65324196460721 4.70953020131233 2.3887627892351 4.66343909411207 6.48463523563525 5.05624580534831 +pkc 4.69134788222914 5.00394630594546 5.89164421182577 6.46769872610435 2.484906649788 4.65396035015752 6.56526497003536 2.61006979274201 3.4626060097908 5.23644196282995 5.37063802812766 +pkc 5.6021188208797 6.05443934626937 4.96284463025991 5.4510384535657 2.09556092355972 3.52636052461616 5.11799381241676 2.28442112236637 3.93963817246112 5.72031177660741 4.87519732320115 +pkc 4.74493212836325 5.15329159449778 5.75574221358691 6.40357419793482 2.30258509299405 3.95699637107088 5.74620319054015 0.89199803930511 4.28082412916472 6.03548143252476 5.63835466933375 +pkc 5.01727983681492 5.57594910314632 5.92692602597041 6.44888939414686 3.2188758248682 4.03777421073371 5.89164421182577 1.4655675420144 5.3890717298165 7.06987412845857 5.52146091786225 +pkc 5.89989735358249 6.24222326545517 5.57594910314632 6.18826412308259 0.231111720963387 3.92986292355648 5.77455154554441 2.61739583283408 4.48863636973214 6.35957386867238 5.47646355193151 +pkc 5.5683445037611 6.07993319509559 5.52146091786225 6.09807428216624 2.04122032885964 3.79548918917219 5.6937321388027 0.879626747502564 4.56017282005736 6.4393503711001 4.70953020131233 +pkc 5.37063802812766 5.89989735358249 4.82028156560504 5.3890717298165 1.23256026117785 4.40671924726425 6.25190388316589 2.36085400111802 3.41772668361337 5.06259503302697 3.85014760171006 +pkc 5.14749447681345 5.17048399503815 6.10702288774225 6.71901315438526 2.50959926237837 4.27249074760558 6.09807428216624 3.03013370027132 6.09807428216624 7.78030308790837 7.19593722647557 +pkc 5.48479693349065 5.95324333428778 6.7093043402583 7.34858753092759 2.71469474382088 3.53514535417189 5.32300997913841 1.74571553072665 4.13676527810605 5.7037824746562 5.57594910314632 +pkc 5.37989735354046 5.95324333428778 5.50533153593236 6.12468339089421 2.19499988231411 3.03013370027132 5.01063529409626 1.5830939370945 4.38077585277223 6.09807428216624 6.62007320653036 +pkc 7.09672137849476 7.48324441607385 7.12367278520461 7.65444322647011 3.80443779474821 3.95699637107088 5.57594910314632 2.24812890719799 4.85981240436167 6.65544035036765 6.80903930604298 +pkc 5.4249500174814 5.84643877505772 5.24174701505964 5.85507192220243 1.25846098961001 3.75185425327532 5.35185813347607 2.55722731136763 5.17048399503815 7.01571242048723 6.00881318544259 +pkc 4.22683374526818 4.77068462446567 2.62466859216316 4.13676527810605 4.05698877567833 4.54223038621422 6.25190388316589 2.9391619220656 4.66343909411207 6.27852142416584 7.43838353004431 +pkc 5.24174701505964 5.78382518232974 5.23644196282995 5.8636311755981 0.783901543828409 4.74493212836325 6.51174532964473 2.13179677201376 3.9759363311718 5.8111409929767 4.92725368515721 +pkc 5.80211837537706 6.21460809842219 6.46769872610435 7.0335064842877 2.27521389619791 4.33598269617247 6.33150184989369 2.73436750941958 6.79122146272619 8.33782726244791 7.10578612948127 +pkc 5.05624580534831 5.5683445037611 6.63856778916652 7.3038432252777 2.484906649788 4.34380542185368 6.35088571671474 1.94304891677428 6.63856778916652 8.23906533176927 7.33953769540767 +pkc 6.29526600143965 6.80903930604298 4.8283137373023 5.3890717298165 0.631271776841858 2.98568193770049 4.70953020131233 1.37624402526639 3.87743156065853 5.58724865840025 5.2257466737132 +pkc 6.62007320653036 6.99759598298193 5.99893656194668 6.50279004591562 2.67414864942653 4.03777421073371 5.92692602597041 2.50143595173921 7.02464903045364 8.59877317840866 7.59135704669855 +pkc 6.19644412779452 6.55677835615804 4.92725368515721 5.45958551414416 1.93441576962958 4.71849887129509 6.62007320653036 2.58021682959233 4.38077585277223 6.25190388316589 5.46806014113513 +pkc 6.97073007814353 7.39326309476384 5.98141421125448 6.55677835615804 2.63188884013665 4.84418708645859 6.68336094576627 1.71739505393919 4.26267987704132 6.12468339089421 4.19116874685764 +pkc 6.18826412308259 6.66440902035041 5.13579843705026 5.74620319054015 2.58776403522771 3.69635146895264 5.05624580534831 2.52572864430826 3.19458313229916 4.80402104473326 5.01727983681492 +pkc 5.34233425196481 5.68357976733868 4.77912349311153 5.37063802812766 0.542324290825362 4.61512051684126 6.39526159811545 3.47196645255036 4.19116874685764 5.83773044716594 5.8636311755981 +pkc 6.28785856016178 6.91671502035361 6.62007320653036 7.22256601882217 2.99573227355399 3.8416005411316 5.58724865840025 0.609765571620894 3.87743156065853 5.63121178182137 5.39816270151775 +pkc 5.5683445037611 5.84643877505772 4.92725368515721 5.3890717298165 2.00552585872967 3.64283551561253 5.28826703069454 1.98787434815435 3.56953269648137 5.10594547390058 5.64897423816121 +pkc 5.50533153593236 5.71042701737487 6.62007320653036 7.18690102041163 3.73289633953071 4.14630430115281 6.24222326545517 2.2213750375685 3.20274644293832 4.41642806139121 6.39526159811545 +pkc 5.33271879326537 5.63835466933375 5.48479693349065 6.04500531403601 2.14124194258528 2.88480071284671 4.68213122712422 2.05923883436232 5.79301360838414 7.47420480649612 6.19644412779452 +pkc 5.64897423816121 6.1527326947041 5.63835466933375 6.13339804299665 2.41591377830105 4.37071287477361 6.32256523992728 2.28442112236637 4.19116874685764 5.78382518232974 2.98568193770049 +pkc 5.54907608489522 5.68357976733868 7.38461038317697 7.86134179559999 4.04830062372069 3.63495111208838 5.29831736654804 4.45201900649392 4.39814601655377 6.16961073249146 6.71901315438526 +pkc 4.82028156560504 5.21493575760899 4.36182392735636 4.76217393479776 2.53369681395743 4.80402104473326 6.79122146272619 3.72328088083127 4.33598269617247 6.14418563412565 5.20948615284142 +pkc 6.73696695800186 7.16857989726403 5.95324333428778 6.50279004591562 2.9391619220656 4.24563400976833 6.16120732169508 1.38629436111989 4.18205014264121 5.8636311755981 4.98360662170834 +pkc 6.41345895716736 6.8627579130514 4.98360662170834 5.54907608489522 2.61739583283408 0.405465108108164 2.87919845729804 4.24563400976833 4.40671924726425 6.43133108193348 4.61512051684126 +pkc 7.02464903045364 7.49220304261874 6.07993319509559 6.62936325343745 3.42751468997953 5.08140436498446 6.92559519711047 2.73436750941958 3.93963817246112 5.82008293035236 5.34233425196481 +pkc 6.43133108193348 6.83625927727707 4.17284762371004 5.05624580534831 2.58776403522771 3.39114704580865 5.16478597392351 2.63188884013665 4.16511363311031 5.85507192220243 5.12396397940326 +pkc 5.74620319054015 6.21460809842219 4.22683374526818 4.61512051684126 2.40694510831829 2.46809953147162 4.42484663185681 4.88280192258637 3.50855589998265 5.01063529409626 5.01727983681492 +pkc 6.56526497003536 6.99759598298193 6.29526600143965 6.88959130835447 2.79116510781272 3.56104608260405 4.72738781871234 2.9704144655697 4.82028156560504 6.73696695800186 5.17048399503815 +pkc 6.70073110954781 7.21376830811864 4.98360662170834 5.77455154554441 5.52146091786225 4.82028156560504 6.60258789218934 3.96651119071222 4.18205014264121 5.94542060860658 4.86753445045558 +pkc 7.26752542782817 7.56423847517049 7.3038432252777 7.74413662762799 3.34638914516716 4.80402104473326 6.65544035036765 1.69009581545155 5.41610040220442 7.1777824161952 5.88332238848828 +pkc 4.41642806139121 4.96284463025991 5.58724865840025 6.18001665365257 0.73716406597672 4.04830062372069 5.82894561761021 2.87919845729804 5.89164421182577 7.63626960337937 7.16857989726403 +pkc 5.73979291217923 5.99146454710798 5.31811999384422 5.95324333428778 2.484906649788 4.61512051684126 6.54821910276237 1.80828877117927 4.13676527810605 6.05443934626937 4.48863636973214 +pkc 5.82894561761021 6.16120732169508 5.6021188208797 6.25190388316589 0.667829372575655 4.53367418428302 6.31354804627709 2.79728133483015 4.74493212836325 6.59304453414244 4.70048036579242 +pkc 6.08904487544685 6.58340922215876 5.64897423816121 6.14418563412565 2.56494935746154 4.28082412916472 6.02586597382531 2.484906649788 5.37989735354046 7.02464903045364 6.63856778916652 +pkc 6.07993319509559 6.41345895716736 3.55248682920838 4.05698877567833 3.86702563949741 4.37071287477361 6.47543271670409 2.76000994003292 6.18826412308259 7.87929148508227 7.20489251020467 +pkc 5.16478597392351 5.68357976733868 5.55682806169954 6.50279004591562 3.3178157727231 3.96651119071222 5.4510384535657 2.92316158071916 4.05698877567833 5.83773044716594 5.23644196282995 +pkc 4.68213122712422 4.93447393313069 7.3664451483276 7.70841066725737 3.85014760171006 3.88567903008854 5.82894561761021 2.58021682959233 4.00186370942794 5.85507192220243 4.76217393479776 +pkc 6.14418563412565 6.61069604471776 5.01727983681492 5.6021188208797 0.657520002916794 4.254193263164 5.84643877505772 3.92197333628131 4.42484663185681 6.31354804627709 4.72738781871234 +pkc 5.6937321388027 6.19644412779452 5.79301360838414 6.44888939414686 3.38099467434464 4.13676527810605 5.92692602597041 2.47653840011748 4.14630430115281 6.08904487544685 5.18738580584075 +pkc 6.46769872610435 6.82654522355659 5.37063802812766 5.94542060860658 1.84371920815877 4.0926765051214 6.04500531403601 2.07819075977818 4.83628190695148 6.56526497003536 5.27299955856375 +pkc 5.90808293816893 6.37672694789863 5.74620319054015 6.25958146406492 2.27521389619791 4.0926765051214 5.80211837537706 2.20386912005489 4.05698877567833 5.85507192220243 5.33271879326537 +pkc 4.64439089914137 5.08140436498446 5.65599181081985 6.25190388316589 1.96009478404727 5.00394630594546 6.84481547920826 2.91235066461494 3.77734810210154 5.54907608489522 6.37672694789863 +pkc 7.22256601882217 7.52833176670725 7.0335064842877 7.52833176670725 4.01998014693324 4.02891675689965 5.89164421182577 3.23867845216438 4.71849887129509 6.42162226780652 4.22683374526818 +pkc 5.5683445037611 5.96357934361845 4.87519732320115 5.3890717298165 0.99694863489161 3.71357206670431 5.36129216570943 2.97552956623647 6.67329796776765 8.33782726244791 7.67229245562876 +pkc 5.39816270151775 5.79301360838414 5.54126354515843 6.16961073249146 2.04122032885964 3.66867674679642 5.36129216570943 2.11384296839717 4.44382703557933 6.20657592672493 5.28826703069454 +pkc 5.52146091786225 5.89989735358249 6.07993319509559 6.68336094576627 2.58776403522771 4.04830062372069 5.87211778947542 2.89591193827178 5.14749447681345 6.93439720992856 6.66440902035041 +pkc 5.24174701505964 5.62040086571715 5.04342511691925 5.77455154554441 2.36085400111802 4.00186370942794 5.88332238848828 2.41591377830105 4.56954300834494 6.44888939414686 5.47646355193151 +pkc 5.63121178182137 6.04500531403601 4.57779898919196 5.73009978297357 3.27336401015227 4.59612944133594 6.24222326545517 1.93441576962958 4.59612944133594 6.30444880242198 6.09807428216624 +pkc 5.73979291217923 6.07993319509559 4.98360662170834 5.68357976733868 1.62727783056243 4.13676527810605 6.20657592672493 2.23964529322017 4.47960696301275 6.33150184989369 6.36818718635049 +pkc 3.88567903008854 4.21803603456465 6.49375383985169 7.08757370555797 3.58905911883173 3.80443779474821 5.76519110278484 2.83321334405622 4.40671924726425 6.31354804627709 5.63835466933375 +pkc 5.59471137960184 5.84643877505772 6.10702288774225 6.61069604471776 3.06805293513362 3.44361809754611 5.28826703069454 4.3267781604434 4.05698877567833 5.89164421182577 5.03695260241363 +pkc 5.34233425196481 5.57594910314632 5.83773044716594 6.43133108193348 2.25758772706331 4.00186370942794 5.89164421182577 2.35137525716348 4.23700086262362 6.02586597382531 5.68357976733868 +pkc 5.39816270151775 5.88332238848828 5.90808293816893 6.49375383985169 2.02419306744936 4.36182392735636 6.18826412308259 1.2947271675944 4.45201900649392 6.14418563412565 5.18738580584075 +pkc 7.16857989726403 7.51043055637801 5.47646355193151 6.05443934626937 3.00568260440716 4.12874598893943 6.01615715969835 2.50143595173921 4.34380542185368 6.18001665365257 5.63121178182137 +pkc 6.63856778916652 7.10578612948127 7.14124512235049 7.60936653795421 3.00568260440716 4.20916023665068 5.82894561761021 3.12236492448736 4.254193263164 5.99893656194668 5.28826703069454 +pkc 4.49758497530815 4.8283137373023 5.71042701737487 6.25958146406492 1.78170913337455 3.92197333628131 5.97126183979046 3.53514535417189 3.23867845216438 4.86753445045558 4.20916023665068 +pkc 5.54907608489522 5.99893656194668 5.58724865840025 6.21460809842219 2.70805020110221 3.45315712059287 5.51342874616498 0.438254930931155 4.07414185490458 5.75574221358691 4.38949864951258 +pkc 5.55682806169954 5.96357934361845 4.55071400019203 5.10594547390058 2.53369681395743 4.00186370942794 5.98141421125448 2.35137525716348 4.64439089914137 6.35088571671474 5.89164421182577 +pkc 5.05624580534831 4.99043258677874 4.53367418428302 5.14749447681345 2.99573227355399 4.68213122712422 6.48463523563525 2.89591193827178 6.18826412308259 7.87929148508227 6.44888939414686 +pkc 6.06145691892802 6.51174532964473 7.28550654852279 7.7621706071382 3.45315712059287 5.31811999384422 7.14124512235049 4.8283137373023 3.53514535417189 5.27299955856375 6.58340922215876 +pkc 5.44241771052179 5.64897423816121 4.69134788222914 5.34233425196481 1.81645208181843 4.77912349311153 6.54821910276237 2.15871472257434 4.31748811353631 5.96357934361845 5.4249500174814 +pkc 5.52146091786225 5.84643877505772 5.76519110278484 6.36818718635049 2.04122032885964 4.20916023665068 5.75574221358691 2.2935443483419 5.17048399503815 6.84481547920826 5.54126354515843 +pkc 4.47960696301275 5.01063529409626 5.31811999384422 6.03548143252476 1.5830939370945 4.00186370942794 5.61312810638807 2.79116510781272 4.03777421073371 5.65599181081985 4.68213122712422 +pkc 5.98141421125448 6.51174532964473 5.6937321388027 6.41345895716736 2.41591377830105 1.4655675420144 3.03974915897077 1.2947271675944 6.92559519711047 8.55371796609861 7.34858753092759 +pkc 6.08904487544685 6.64639051484773 5.44241771052179 5.92692602597041 1.68268837417369 3.23867845216438 5.03695260241363 2.33214389523559 4.0926765051214 5.85507192220243 4.52396013056255 +pkc 5.11799381241676 5.74620319054015 5.26269018890489 5.90808293816893 2.53369681395743 4.01096295328305 5.61312810638807 2.84490938381941 3.92986292355648 5.63121178182137 5.01063529409626 +pkc 4.58700621536042 5.26269018890489 4.74493212836325 5.41610040220442 1.51951320490611 4.53367418428302 6.67329796776765 3.59731226058845 4.24563400976833 6.11589212548303 4.93447393313069 +pkc 5.73979291217923 6.25190388316589 5.32300997913841 5.88332238848828 1.54756250871601 4.31748811353631 6.14418563412565 2.53369681395743 4.62497281328427 6.42162226780652 5.4510384535657 +pkc 7.22256601882217 7.55538194424027 3.09557760852371 4.00186370942794 4.05698877567833 4.64439089914137 6.28785856016178 2.96010509591084 6.99759598298193 8.58073121222023 7.24921505711439 +pkc 4.43438186500781 4.77912349311153 5.75574221358691 6.34035930372775 3.14845336057165 3.60549784517489 5.35185813347607 2.12226153886276 5.39816270151775 7.08757370555797 7.02464903045364 +pkc 6.18001665365257 6.64639051484773 4.89034912822175 5.58724865840025 2.27521389619791 4.3528552573736 6.32256523992728 2.51769647261099 5.08140436498446 6.77308037565554 6.32256523992728 +pkc 4.18205014264121 4.56017282005736 5.66642668811243 6.14418563412565 2.53369681395743 0.582215619852664 3.80443779474821 4.14630430115281 5.01063529409626 6.8627579130514 6.46769872610435 +pkc 6.72743172485086 7.18690102041163 4.5152454784601 5.19849703126583 1.59127394180643 4.0842942263686 6.06145691892802 1.66392609771817 4.83628190695148 6.7093043402583 5.33271879326537 +pkc 5.8111409929767 6.35088571671474 7.51043055637801 7.98718474823347 4.22683374526818 4.18205014264121 6.19644412779452 1.06125650212434 4.254193263164 6.12468339089421 5.03695260241363 +pkc 6.70073110954781 7.11476944836646 5.90808293816893 6.45833828334479 3.09557760852371 4.10098910494077 5.93753620508243 2.72785282839839 2.96010509591084 4.71849887129509 4.77912349311153 +pkc 5.4510384535657 5.92692602597041 5.87211778947542 6.44888939414686 1.44926916028128 4.3267781604434 6.19644412779452 2.68784749378469 4.48863636973214 6.16961073249146 4.94875989037817 +pkc 5.4510384535657 5.66642668811243 5.82894561761021 6.50279004591562 2.79728133483015 2.91235066461494 4.89034912822175 2.86220088092947 4.68213122712422 6.55677835615804 5.71042701737487 +pkc 4.8283137373023 5.32300997913841 5.12396397940326 5.65599181081985 2.36085400111802 4.93447393313069 6.7093043402583 2.67414864942653 4.13676527810605 5.91889385427315 4.87519732320115 +pkc 6.54821910276237 6.8627579130514 7.19593722647557 7.67229245562876 5.13579843705026 3.08648663682246 5.03043792139244 2.21266038546606 4.23700086262362 5.85507192220243 5.27299955856375 +pkc 5.88332238848828 6.37672694789863 5.43372200355424 6.07073772800249 1.55603713570699 1.68268837417369 3.23080439573347 4.254193263164 6.14418563412565 7.83399634170946 6.81783057145415 +pkc 6.08904487544685 6.58340922215876 5.01063529409626 5.61312810638807 2.4423470353692 3.50855589998265 5.37989735354046 1.89761985992753 4.16511363311031 5.82008293035236 5.43372200355424 +pkc 4.57779898919196 4.91265488573605 5.99893656194668 6.62936325343745 1.71739505393919 1.12492959698548 3.56104608260405 4.63472898822964 6.26909628370626 7.95997452808054 6.45833828334479 +pkc 7.44716835960004 7.7621706071382 4.77068462446567 5.27299955856375 1.79009141212736 3.6163087612791 5.48479693349065 1.5830939370945 4.85981240436167 6.52941883826223 5.52146091786225 +pkc 5.27811465923052 5.6937321388027 5.61312810638807 6.30444880242198 1.93441576962958 4.12874598893943 5.63121178182137 2.73436750941958 4.3528552573736 6.24222326545517 4.72738781871234 +pkc 5.48479693349065 5.98141421125448 5.19849703126583 5.72031177660741 1.79840401194672 4.70048036579242 6.41345895716736 2.23964529322017 4.0926765051214 5.88332238848828 5.09375020080676 +pkc 5.96357934361845 6.35957386867238 5.23644196282995 5.87211778947542 2.66025953726586 3.91202300542815 5.6021188208797 2.15871472257434 6.8627579130514 8.49984355308112 7.4205789054108 +pkc 5.54907608489522 6.13339804299665 6.68336094576627 7.22256601882217 4.02891675689965 2.00552585872967 2.83321334405622 0.173953307123438 4.19116874685764 6.13339804299665 5.54126354515843 +pkc 7.66340766489348 8.09498875930377 6.18001665365257 6.87212810133899 2.83321334405622 4.29045944114839 5.98141421125448 2.63188884013665 4.45201900649392 6.39526159811545 5.34233425196481 +pkc 5.15329159449778 5.45958551414416 4.74493212836325 5.27299955856375 1.7630170003624 4.12874598893943 5.89989735358249 2.04122032885964 3.81330703248899 5.63121178182137 4.3267781604434 +pkc 6.76388490856244 7.0604763659998 6.56526497003536 6.96129604591017 3.51749783735832 3.80443779474821 5.57594910314632 2.15871472257434 5.2257466737132 6.94408720822953 6.94408720822953 +pkc 5.41610040220442 5.8111409929767 5.24174701505964 5.82008293035236 1.99741770620125 5.06259503302697 7.04228617193974 3.70622809244855 4.90527477843843 6.63856778916652 5.01727983681492 +pkc 5.6021188208797 6.02586597382531 5.37989735354046 6.02586597382531 2.34180580614733 3.91202300542815 5.66642668811243 2.20386912005489 6.1527326947041 7.93307977188041 7.27655640271871 +pkc 6.03548143252476 6.45833828334479 7.38461038317697 7.93307977188041 4.34380542185368 4.11087386417331 5.92692602597041 1.95160817016995 4.81218435537242 6.60258789218934 6.09807428216624 +pkc 5.8111409929767 6.20657592672493 5.01727983681492 5.53338948872752 2.68784749378469 4.74493212836325 6.62007320653036 2.84490938381941 4.92725368515721 6.79122146272619 5.54126354515843 +pkc 5.89989735358249 6.35088571671474 5.84643877505772 6.42162226780652 2.09556092355972 3.6609942506244 5.4249500174814 1.48387468945875 6.5206211275587 8.14902386805177 6.72743172485086 +pkc 5.27299955856375 5.82008293035236 5.18738580584075 5.76519110278484 2.36085400111802 4.34380542185368 6.16961073249146 2.86220088092947 3.8416005411316 4.50645421304893 6.21460809842219 +pkc 5.01063529409626 5.58724865840025 4.88280192258637 5.54126354515843 1.89761985992753 2.08691355651854 4.20916023665068 0.0582689081239758 3.92986292355648 5.63835466933375 5.30826769740121 +pkc 5.96357934361845 6.4393503711001 7.16857989726403 7.55538194424027 3.50855589998265 4.20916023665068 6.25190388316589 3.40119738166216 3.92986292355648 5.68357976733868 5.24174701505964 +pkc 5.92692602597041 6.30444880242198 5.63835466933375 6.02586597382531 1.6467336971778 3.92197333628131 5.68357976733868 2.05923883436232 5.41610040220442 7.14124512235049 6.40357419793482 +pkc 5.39816270151775 5.79301360838414 5.47646355193151 6.11589212548303 2.08691355651854 2.23964529322017 3.18221184049661 0.542324290825362 1.69927861643389 3.64283551561253 5.77455154554441 +pkc 7.07834157955767 7.52833176670725 5.06259503302697 5.64897423816121 1.37624402526639 4.52396013056255 6.33150184989369 3.12236492448736 3.75887182593397 5.55682806169954 5.46806014113513 +pkc 7.23128700432762 7.53743003658651 6.98007594056176 7.59135704669855 4.42484663185681 3.82209829790016 5.73979291217923 1.90657514365664 3.91202300542815 5.58724865840025 5.4971682252932 +erk 3.66867674679642 2.18605127673809 1.44926916028128 2.2213750375685 0.631271776841858 3.25424296870549 3.8416005411316 5.40717177146012 1.10525683138678 3.45315712059287 4.18205014264121 +erk 3.75185425327532 3.00568260440716 2.4932054526027 0.371563556432483 3.68887945411394 3.40784192438082 3.94931879017184 5.57594910314632 1.78170913337455 2.64617479738412 2.77881927199042 +erk 1.77155676191054 2.88480071284671 1.23256026117785 0.783901543828409 2.89591193827178 4.65396035015752 5.7037824746562 7.56423847517049 1.94304891677428 3.02042488614436 2.55722731136763 +erk 3.53514535417189 2.9338568698359 1.2947271675944 0.53062825106217 2.80336038090653 5.8636311755981 6.25190388316589 7.14124512235049 2.90690105984738 4.0842942263686 3.58073729549423 +erk 3.20274644293832 2.77258872223978 1.93441576962958 2.23964529322017 2.08691355651854 2.75366071235426 3.98527346716774 5.84643877505772 2.23108909128898 2.89591193827178 2.52572864430826 +erk 3.58905911883173 2.75366071235426 0 4.18205014264121 3.44361809754611 3.41772668361337 4.19116874685764 6.77308037565554 2.43361335540045 3.26575941076705 2.15871472257434 +erk 1.03318448334565 2.33214389523559 1.4747630091075 0 1.83418018511201 3.41772668361337 4.65396035015752 6.18001665365257 2.84490938381941 3.4904285153901 1.86252854011626 +erk 3.81330703248899 2.63188884013665 1.9154509415706 2.50143595173921 2.61006979274201 3.29212628660779 3.67882911826043 6.35957386867238 2.75366071235426 3.71357206670431 3.6163087612791 +erk 2.72785282839839 3.24649099190117 1.21491274436427 1.25846098961001 2.47653840011748 2.26695791535089 2.86220088092947 5.94542060860658 2.2213750375685 3.25424296870549 2.65324196460721 +erk 3.69635146895264 2.88480071284671 1.03318448334565 0.774727167552368 0 3.89385903480047 4.34380542185368 7.35755620091035 2.86220088092947 3.47196645255036 1.65441127807683 +erk 4.17284762371004 3.9926809084456 0 3.06805293513362 2.04122032885964 0 0.438254930931155 3.92986292355648 2.54160199346455 3.63495111208838 0.982078472412158 +erk 3.40119738166216 3.09557760852371 1.5830939370945 0.113328685307003 2.2213750375685 1.36609165380237 3.8416005411316 5.15329159449778 2.84490938381941 3.2188758248682 2.36085400111802 +erk 3.41772668361337 3.11351530921037 2.58021682959233 0.00995033085316809 3.08648663682246 3.10458667846607 3.60549784517489 5.40717177146012 2.484906649788 3.26575941076705 3.2188758248682 +erk 3.2188758248682 3.52636052461616 0.828551817566148 0.00995033085316809 2.71469474382088 1.98787434815435 2.77881927199042 5.62040086571715 2.61006979274201 3.65065824129374 4.10098910494077 +erk 3.34638914516716 2.98568193770049 2.32238772029023 1.51951320490611 3.42751468997953 1.8531680973567 2.89591193827178 6.880384082186 3.08648663682246 3.86702563949741 2.9391619220656 +erk 4.18205014264121 4.03777421073371 0 0.879626747502564 0.717839793150317 4.83628190695148 5.31811999384422 7.69938940625674 2.4932054526027 3.01553490085017 3.17387845893747 +erk 3.56104608260405 2.92316158071916 1.16938135955632 1.03318448334565 3.27336401015227 3.23867845216438 5.14749447681345 5.29831736654804 3.29953372788566 3.69635146895264 2.71469474382088 +erk 3.53514535417189 3.02042488614436 2.14124194258528 0 3.40784192438082 3.69635146895264 4.86753445045558 6.79122146272619 3.09557760852371 4.33598269617247 3.93963817246112 +erk 4.11087386417331 3.6609942506244 1.24126858906963 1.6467336971778 3.26575941076705 2.484906649788 3.20274644293832 6.18826412308259 2.68784749378469 3.05870707271538 2.62466859216316 +erk 3.88567903008854 3.01553490085017 0.173953307123438 0.916290731874155 2.46809953147162 2.53369681395743 3.19458313229916 5.75574221358691 3.19458313229916 3.62434093297637 3.04927304048202 +erk 3.56953269648137 2.62466859216316 2.11384296839717 2.07819075977818 2.84490938381941 3.81330703248899 4.34380542185368 7.3304052118444 3.74242022104197 4.70048036579242 3.55248682920838 +erk 3.4626060097908 3.7864597824528 1.69009581545155 0.27002713721306 1.84371920815877 2.62466859216316 2.58776403522771 5.85507192220243 2.54160199346455 3.14845336057165 2.23964529322017 +erk 3.75185425327532 3.23867845216438 1.98787434815435 0 3.06805293513362 3.51749783735832 3.90399083373088 5.98141421125448 4.0842942263686 4.44382703557933 2.97552956623647 +erk 4.36182392735636 3.08648663682246 2.23108909128898 1.53901544813755 3.80443779474821 2.37024374146786 3.27336401015227 6.76388490856244 2.84490938381941 3.08648663682246 2.05923883436232 +erk 3.7864597824528 3.18221184049661 1.68268837417369 4.88280192258637 2.80336038090653 2.89591193827178 3.62434093297637 7.10578612948127 1.11514159061932 2.86789890204411 4.15575319035074 +erk 3.85862222870103 2.96010509591084 0 0.518793793415168 2.32238772029023 2.32238772029023 3.64283551561253 6.49375383985169 3.04927304048202 3.82209829790016 3.07731226054641 +erk 4.65396035015752 3.72328088083127 0.989541193613748 1.34025042261848 2.25758772706331 3.35340671782581 4.0926765051214 5.89164421182577 2.83321334405622 3.23867845216438 2.484906649788 +erk 4.02891675689965 3.6609942506244 2.484906649788 2.23964529322017 2.45958884180371 4.19116874685764 4.8283137373023 6.45833828334479 2.58021682959233 3.91202300542815 1.89761985992753 +erk 4.28082412916472 3.19458313229916 1.66392609771817 5.18738580584075 3.56104608260405 3.09557760852371 3.75185425327532 5.27811465923052 3.29212628660779 3.6609942506244 3.03013370027132 +erk 3.82209829790016 2.57261223020711 0.647103242058538 1.9154509415706 1.84371920815877 3.39114704580865 3.89385903480047 5.94542060860658 2.81540871942271 3.66867674679642 3.13113691056019 +erk 4.03777421073371 3.23867845216438 0.609765571620894 0 3.24649099190117 1.94304891677428 3.4626060097908 6.74641212857337 2.14124194258528 3.02042488614436 5.07517381523383 +erk 4.37071287477361 3.88567903008854 1.32175583998232 1.42069578783722 3.18221184049661 3.29953372788566 3.7864597824528 5.39816270151775 3.4626060097908 3.65065824129374 3.04927304048202 +erk 2.73436750941958 3.17387845893747 0.62057648772511 1.83418018511201 3.4904285153901 3.72328088083127 4.22683374526818 5.80211837537706 1.79009141212736 1.61938824328727 3.79548918917219 +erk 3.07731226054641 2.36085400111802 2.02419306744936 0.900161349944271 2.77881927199042 3.38099467434464 4.16511363311031 7.05185562295589 3.40784192438082 4.34380542185368 3.3357695763397 +erk 3.60549784517489 3.11351530921037 2.26695791535089 0.357674444271816 1.14103300455206 2.71469474382088 4.06560209335645 4.3267781604434 2.58021682959233 3.26575941076705 2.51769647261099 +erk 3.96651119071222 2.86220088092947 1.78170913337455 5.18738580584075 2.68102152871429 2.4423470353692 3.09557760852371 6.12468339089421 2.63188884013665 3.66867674679642 2.91235066461494 +erk 3.42751468997953 2.40694510831829 1.05082162483176 0.0582689081239758 2.92316158071916 3.20274644293832 3.7864597824528 6.21460809842219 2.94968833505258 3.63495111208838 3.05870707271538 +erk 3.04927304048202 3.03013370027132 3.13113691056019 1.53901544813755 2.57261223020711 2.33214389523559 3.09557760852371 5.8111409929767 3.03974915897077 3.47196645255036 2.75366071235426 +erk 3.27336401015227 3.18221184049661 2.23964529322017 1.19694818938897 3.21084365317094 2.67414864942653 3.73289633953071 6.80903930604298 2.57261223020711 3.42751468997953 2.33214389523559 +erk 3.60549784517489 3.25424296870549 2.32238772029023 0.672944473242426 3.58073729549423 3.8416005411316 4.70953020131233 6.85329909318608 3.13983261752775 3.91202300542815 3.56953269648137 +erk 3.00568260440716 2.76000994003292 2.20386912005489 1.49290409617815 2.2935443483419 2.9704144655697 4.70048036579242 7.21376830811864 2.80336038090653 3.58073729549423 2.87919845729804 +erk 3.88567903008854 3.75185425327532 1.25846098961001 1.90657514365664 1.99741770620125 2.46809953147162 3.16547504814109 5.16478597392351 3.90399083373088 4.44382703557933 2.42480272571829 +erk 3.77734810210154 2.1770218700187 2.1770218700187 1.00795792039998 1.92424865227413 3.02042488614436 3.3178157727231 5.63835466933375 2.56494935746154 3.18221184049661 2.89591193827178 +erk 3.6163087612791 3.19458313229916 0.989541193613748 1.09861228866811 2.9704144655697 3.07731226054641 3.71357206670431 5.85507192220243 2.12226153886276 3.19458313229916 2.28442112236637 +erk 4.23700086262362 3.29212628660779 2.73436750941958 1.16938135955632 3.00568260440716 3.2188758248682 4.42484663185681 6.46769872610435 2.76000994003292 3.27336401015227 2.18605127673809 +erk 3.68887945411394 3.25424296870549 1.69009581545155 1.43031124653666 2.09556092355972 2.56494935746154 3.38099467434464 5.52146091786225 0.802001585472027 3.05870707271538 3.63495111208838 +erk 3.41772668361337 2.73436750941958 0.970778917158225 4.99043258677874 3.86702563949741 4.11087386417331 4.87519732320115 7.48324441607385 3.08648663682246 3.7864597824528 2.9391619220656 +erk 3.70622809244855 2.67414864942653 0.86288995514704 0 3.27336401015227 3.14845336057165 4.00186370942794 6.70073110954781 2.7408400239252 3.08648663682246 2.80336038090653 +erk 4.03777421073371 3.45315712059287 2.23108909128898 1.06125650212434 3.24649099190117 3.89385903480047 4.64439089914137 6.54821910276237 1.22377543162212 1.49290409617815 0 +erk 4.46129981556839 4.8283137373023 2.11384296839717 2.36085400111802 3.85014760171006 4.30000279919529 5.13579843705026 8.05006542291597 3.04927304048202 4.14630430115281 3.24649099190117 +erk 3.3178157727231 2.87919845729804 1.78170913337455 1.82616089594539 3.4904285153901 4.05698877567833 4.70048036579242 6.98841318199959 1.81645208181843 3.31054301339402 4.53367418428302 +erk 4.15575319035074 3.16547504814109 3.03974915897077 2.86220088092947 2.4932054526027 3.52636052461616 3.95699637107088 5.87211778947542 3.2846635654062 3.93963817246112 3.50855589998265 +erk 3.4626060097908 3.02042488614436 0.582215619852664 5.10594547390058 4.28082412916472 2.84490938381941 3.49953328238302 6.58340922215876 2.7408400239252 3.6163087612791 4.37071287477361 +erk 3.87743156065853 2.90690105984738 0.837247524533702 0.73716406597672 2.90690105984738 2.77258872223978 3.21084365317094 5.97126183979046 3.21084365317094 4.04830062372069 3.15700042115011 +erk 3.76815263500844 2.71469474382088 0 0.27763173659828 1.80828877117927 3.80443779474821 4.36182392735636 7.42952084278646 2.30258509299405 3.54385368206368 2.65324196460721 +erk 3.17387845893747 2.89591193827178 1.80828877117927 1.97823903617067 2.84490938381941 2.30258509299405 3.73289633953071 1.73518911773966 2.97552956623647 3.3357695763397 2.21266038546606 +erk 3.2846635654062 2.9704144655697 0 0.113328685307003 2.41591377830105 3.72328088083127 4.27249074760558 6.67329796776765 2.98568193770049 3.59731226058845 3.26575941076705 +erk 4.0842942263686 2.86789890204411 1.2947271675944 1.56444054650336 3.29212628660779 3.90399083373088 4.72738781871234 6.78219205600679 2.51769647261099 3.41772668361337 2.14943391349987 +erk 2.09556092355972 3.19458313229916 2.51769647261099 0.0295588022415444 3.07731226054641 3.35340671782581 5.26269018890489 4.12874598893943 2.41591377830105 3.68887945411394 4.68213122712422 +erk 4.03777421073371 3.29212628660779 0.00995033085316809 0.989541193613748 2.75366071235426 2.50143595173921 3.35340671782581 5.55682806169954 2.72785282839839 3.56104608260405 1.54756250871601 +erk 4.29045944114839 3.40784192438082 1.870262530716 1.24126858906963 0 2.58776403522771 4.36182392735636 6.62936325343745 1.90657514365664 3.65065824129374 3.31054301339402 +erk 3.70622809244855 2.81540871942271 0.371563556432483 1.6467336971778 1.4036429994545 2.85070650150373 4.15575319035074 7.6275443904885 1.14103300455206 2.92316158071916 4.18205014264121 +erk 3.8416005411316 2.70805020110221 1.79840401194672 1.39376637595859 1.17865499634165 0.916290731874155 0.871293365943419 3.58905911883173 2.89591193827178 3.76815263500844 2.1770218700187 +erk 3.86702563949741 3.19458313229916 0.27763173659828 0 1.2947271675944 2.55722731136763 3.18221184049661 6.16120732169508 2.73436750941958 3.18221184049661 2.35137525716348 +erk 2.99573227355399 3.06805293513362 1.21491274436427 0 3.07731226054641 2.77881927199042 3.64283551561253 6.42162226780652 2.99573227355399 3.66867674679642 3.92986292355648 +erk 3.19458313229916 2.85070650150373 0.0582689081239758 3.70622809244855 2.62466859216316 2.67414864942653 3.26575941076705 5.65599181081985 2.70136121295141 3.39114704580865 2.50143595173921 +erk 2.98568193770049 2.79728133483015 1.17865499634165 1.94304891677428 2.77258872223978 3.8308129500026 4.56017282005736 6.18826412308259 0.99694863489161 4.52396013056255 1.708377860289 +erk 4.17284762371004 3.4904285153901 1.59127394180643 0.0861776962410524 0.457424847038875 2.65324196460721 3.15700042115011 6.06145691892802 2.4932054526027 3.76815263500844 1.98787434815435 +erk 3.98527346716774 3.65065824129374 0.371563556432483 5.54126354515843 3.95699637107088 3.36384159511839 4.11903717481247 6.04500531403601 2.3887627892351 3.29212628660779 1.7630170003624 +erk 4.3267781604434 3.43720781918519 1.65441127807683 0.00995033085316809 2.89591193827178 2.37954613413017 3.47196645255036 6.18001665365257 1.00795792039998 2.484906649788 4.00186370942794 +erk 4.47049528266149 3.7864597824528 0 0 2.62466859216316 2.57261223020711 3.4904285153901 5.45958551414416 3.64283551561253 4.3267781604434 3.53514535417189 +erk 3.72328088083127 3.08648663682246 3.03013370027132 0.936093359170335 2.9338568698359 2.30258509299405 3.2846635654062 6.02586597382531 1.24126858906963 2.94968833505258 3.40119738166216 +erk 3.79548918917219 3.25424296870549 2.57261223020711 1.89761985992753 2.86789890204411 4.46129981556839 5.10594547390058 7.56423847517049 2.67414864942653 3.48124008933569 2.97552956623647 +erk 3.8308129500026 2.9338568698359 0.943905898907128 0.683096844706444 2.67414864942653 3.79548918917219 4.69134788222914 6.34035930372775 3.19458313229916 3.52636052461616 2.65324196460721 +erk 4.00186370942794 3.29212628660779 1.4655675420144 0.99694863489161 2.40694510831829 3.02042488614436 4.44382703557933 7.18690102041163 2.83321334405622 3.58073729549423 2.71469474382088 +erk 4.77912349311153 3.66867674679642 0 1.83418018511201 3.07731226054641 4.01998014693324 5.00394630594546 7.20489251020467 2.52572864430826 3.60549784517489 1.74571553072665 +erk 2.45958884180371 3.42751468997953 1.04380405217311 1.84371920815877 2.36085400111802 4.19116874685764 4.46129981556839 6.82654522355659 0.412109650826833 3.07731226054641 4.38949864951258 +erk 4.3267781604434 3.94931879017184 1.97823903617067 5.11799381241676 2.94968833505258 3.40119738166216 4.53367418428302 7.52833176670725 0.576613364303994 3.41772668361337 3.67882911826043 +erk 4.04830062372069 3.11351530921037 0.746687947487975 0.936093359170335 2.03339760317843 3.29212628660779 3.87743156065853 5.74620319054015 3.05870707271538 3.96651119071222 3.01553490085017 +erk 2.79728133483015 3.06805293513362 1.708377860289 1.34807314829969 3.12236492448736 2.50143595173921 4.24563400976833 7.3664451483276 0.908258560176891 2.86789890204411 4.56954300834494 +erk 4.04830062372069 3.38099467434464 1.62727783056243 1.43983512804792 2.86789890204411 2.16791018966744 3.53514535417189 6.47543271670409 2.28442112236637 3.29212628660779 2.80336038090653 +erk 4.03777421073371 3.52636052461616 0 2.03339760317843 2.36085400111802 3.37416870927424 4.47960696301275 7.38461038317697 1.71739505393919 3.52636052461616 4.66343909411207 +erk 4.48863636973214 4.07414185490458 1.60140574073684 0 2.41591377830105 2.66025953726586 3.3357695763397 5.76519110278484 0.871293365943419 2.94968833505258 4.254193263164 +erk 3.85862222870103 3.24649099190117 1.870262530716 0.667829372575655 0 4.10098910494077 5.17048399503815 7.13249755166004 3.62434093297637 4.5152454784601 3.67882911826043 +erk 3.94931879017184 2.57261223020711 2.21266038546606 0.582215619852664 1.59127394180643 3.40784192438082 4.30811095172371 6.54821910276237 3.11351530921037 4.33598269617247 3.66867674679642 +erk 3.31054301339402 2.3887627892351 1.05082162483176 1.41098697371026 1.77155676191054 4.22683374526818 4.85981240436167 7.28550654852279 3.00568260440716 3.58073729549423 2.18605127673809 +erk 4.42484663185681 3.51749783735832 0.350656871613169 0.00995033085316809 2.52572864430826 4.30811095172371 4.77912349311153 6.14418563412565 2.47653840011748 3.4626060097908 1.80828877117927 +erk 2.62466859216316 2.51769647261099 2.63188884013665 1.98787434815435 2.55722731136763 1.69009581545155 2.77881927199042 6.37672694789863 2.72785282839839 3.74242022104197 2.37024374146786 +erk 4.0926765051214 3.02042488614436 1.93441576962958 0 2.89591193827178 2.70805020110221 3.35340671782581 5.74620319054015 3.15700042115011 4.19116874685764 2.89591193827178 +erk 4.02891675689965 3.03974915897077 2.13179677201376 1.05082162483176 0.657520002916794 3.2188758248682 4.00186370942794 7.05185562295589 2.25758772706331 3.8416005411316 4.30000279919529 +erk 4.68213122712422 3.32862668882732 2.3887627892351 2.02419306744936 2.04122032885964 3.74242022104197 4.78749174278205 6.82654522355659 3.23080439573347 3.92986292355648 2.3887627892351 +erk 3.39114704580865 3.17387845893747 2.50143595173921 4.34380542185368 3.45315712059287 4.41642806139121 5.0998664278242 7.51043055637801 3.02042488614436 3.42751468997953 2.85070650150373 +erk 4.12874598893943 2.85070650150373 1.6094379124341 0.00995033085316809 0.727548607277278 2.87919845729804 3.59731226058845 5.6021188208797 2.56494935746154 3.32862668882732 1.96009478404727 +erk 3.85014760171006 3.01553490085017 1.94304891677428 1.34807314829969 2.51769647261099 2.19499988231411 3.00568260440716 6.16120732169508 3.79548918917219 4.85981240436167 3.7864597824528 +erk 4.47960696301275 4.43438186500781 1.5830939370945 0.00995033085316809 1.9154509415706 3.36384159511839 3.68887945411394 6.8627579130514 3.43720781918519 4.19116874685764 3.29212628660779 +erk 3.64283551561253 3.01553490085017 2.71469474382088 1.59127394180643 2.98568193770049 3.82209829790016 4.92725368515721 7.70841066725737 2.81540871942271 3.77734810210154 4.29045944114839 +erk 3.64283551561253 3.11351530921037 0.963174317773006 0 2.80336038090653 3.4904285153901 4.41642806139121 7.0604763659998 1.24990173621434 3.03974915897077 3.79548918917219 +erk 4.11087386417331 3.43720781918519 0.636576829071551 0 3.36384159511839 3.92986292355648 4.40671924726425 6.28785856016178 2.01490302054226 2.9338568698359 2.34180580614733 +erk 3.03974915897077 2.76000994003292 0.0392207131532813 0.262364264467491 2.88480071284671 2.79728133483015 3.19458313229916 5.5683445037611 3.23867845216438 3.98527346716774 3.35340671782581 +erk 3.96651119071222 3.29212628660779 2.83321334405622 0.139761942375159 3.58073729549423 2.16791018966744 3.43720781918519 6.57507584059962 2.75366071235426 3.3357695763397 3.08648663682246 +erk 4.16511363311031 2.98568193770049 1.88858365386359 0.350656871613169 2.37024374146786 3.34638914516716 3.68887945411394 5.8111409929767 1.10525683138678 3.06805293513362 4.12874598893943 +erk 3.88567903008854 2.90690105984738 1.9154509415706 0.00995033085316809 2.60268968544438 2.4423470353692 3.13113691056019 5.88332238848828 3.05870707271538 3.75185425327532 3.39114704580865 +erk 4.06560209335645 2.7408400239252 1.78170913337455 0.22314355131421 1.08856195281461 3.2188758248682 3.95699637107088 5.89989735358249 0.73716406597672 3.21084365317094 4.30811095172371 +erk 4.13676527810605 2.79116510781272 1.66392609771817 0.970778917158225 0 3.16547504814109 3.80443779474821 5.15329159449778 3.03013370027132 3.4626060097908 3.04927304048202 +erk 4.12874598893943 3.21084365317094 1.05082162483176 0.00995033085316809 2.4932054526027 4.30811095172371 4.97673374242057 6.59304453414244 2.77881927199042 3.58073729549423 1.7630170003624 +erk 3.38099467434464 3.6609942506244 1.36609165380237 0.173953307123438 1.43983512804792 1.75440368268429 3.40119738166216 6.81783057145415 3.62434093297637 4.20020495292158 2.9704144655697 +erk 4.93447393313069 3.91202300542815 0 0.951657875711446 2.43361335540045 2.91235066461494 3.7864597824528 5.67675380226828 2.86220088092947 3.85862222870103 4.77068462446567 +erk 5.15329159449778 5.0998664278242 2.02419306744936 0 1.25846098961001 2.66025953726586 3.2846635654062 6.19644412779452 0.165514438477573 6.55677835615804 4.34380542185368 +erk 3.07731226054641 2.99573227355399 1.95160817016995 0 0.631271776841858 3.3178157727231 3.95699637107088 5.84643877505772 2.68784749378469 3.56953269648137 2.85070650150373 +erk 4.27249074760558 3.41772668361337 0 1.00795792039998 2.47653840011748 3.9759363311718 5.01727983681492 7.06987412845857 3.23867845216438 3.82209829790016 2.87919845729804 +erk 4.254193263164 3.50855589998265 1.51951320490611 1.00795792039998 1.97823903617067 2.46809953147162 2.64617479738412 5.88332238848828 3.8416005411316 4.43438186500781 3.58905911883173 +erk 2.96010509591084 3.48124008933569 2.34180580614733 1.18784342239605 2.70136121295141 2.68102152871429 2.94968833505258 6.19644412779452 2.84490938381941 3.15700042115011 2.37954613413017 +erk 4.06560209335645 3.51749783735832 2.24812890719799 1.48387468945875 2.66025953726586 1.95160817016995 3.34638914516716 6.16961073249146 2.88480071284671 3.58073729549423 2.50143595173921 +erk 4.34380542185368 3.18221184049661 2.18605127673809 0.00995033085316809 2.90690105984738 2.81540871942271 4.14630430115281 7.13249755166004 2.72785282839839 3.50855589998265 1.93441576962958 +erk 4.31748811353631 3.18221184049661 0 0.73716406597672 2.76000994003292 4.22683374526818 4.88280192258637 7.73543335249969 1.78170913337455 3.49953328238302 4.92725368515721 +erk 3.54385368206368 2.98568193770049 0 1.93441576962958 2.87919845729804 2.81540871942271 3.44361809754611 5.68357976733868 3.23867845216438 4.42484663185681 3.40119738166216 +erk 4.40671924726425 3.51749783735832 0.27763173659828 1.15057202759882 2.55722731136763 3.72328088083127 4.53367418428302 6.62936325343745 3.31054301339402 4.37071287477361 3.6609942506244 +erk 4.01096295328305 3.31054301339402 1.24126858906963 0.951657875711446 2.90690105984738 2.97552956623647 3.48124008933569 5.36129216570943 3.24649099190117 4.20916023665068 4.20020495292158 +erk 4.53367418428302 4.13676527810605 0.0582689081239758 1.94304891677428 0.703097511413113 1.84371920815877 3.6163087612791 6.21460809842219 0.657520002916794 2.94968833505258 4.05698877567833 +erk 5.01727983681492 5.03043792139244 2.27521389619791 0.00995033085316809 3.08648663682246 4.21803603456465 4.88280192258637 7.85205020726589 4.50645421304893 4.7361984483945 3.23867845216438 +erk 4.53367418428302 4.19116874685764 0.89199803930511 1.82616089594539 0.916290731874155 4.19116874685764 4.85981240436167 7.53743003658651 1.4747630091075 3.03974915897077 4.05698877567833 +erk 3.9926809084456 3.23080439573347 2.14943391349987 1.10525683138678 3.3178157727231 2.92316158071916 3.55248682920838 5.61312810638807 1.36609165380237 2.9391619220656 4.45201900649392 +erk 4.72738781871234 4.05698877567833 2.45958884180371 1.28647402583768 2.99573227355399 3.79548918917219 4.33598269617247 6.23244801655052 1.51072193949494 3.17387845893747 5.07517381523383 +erk 3.75887182593397 3.60549784517489 1.71739505393919 1.27815220250019 2.1770218700187 3.27336401015227 4.62497281328427 7.27655640271871 2.86789890204411 3.40784192438082 2.76000994003292 +erk 3.27336401015227 2.64617479738412 2.37024374146786 1.79009141212736 1.7263316639056 2.08691355651854 2.86220088092947 5.97126183979046 2.79116510781272 3.82209829790016 2.7408400239252 +erk 4.92725368515721 5.17048399503815 2.65324196460721 0 1.98787434815435 3.64283551561253 4.07414185490458 5.50533153593236 4.14630430115281 4.47049528266149 2.80336038090653 +erk 3.87743156065853 3.27336401015227 0.982078472412158 1.870262530716 2.90690105984738 4.50645421304893 5.51342874616498 6.81783057145415 1.77155676191054 3.94931879017184 4.77912349311153 +erk 3.9926809084456 2.94968833505258 1.69009581545155 0.746687947487975 3.39114704580865 4.64439089914137 5.84643877505772 7.94200680848986 2.64617479738412 2.85070650150373 0.879626747502564 +erk 4.34380542185368 3.94931879017184 0.285178942233662 1.22377543162212 2.85070650150373 3.98527346716774 4.5152454784601 6.70073110954781 2.92316158071916 3.3178157727231 2.37954613413017 +erk 2.36085400111802 3.20274644293832 0.792992515529661 2.10413415427021 2.30258509299405 2.70805020110221 3.92197333628131 6.33150184989369 2.84490938381941 3.88567903008854 2.32238772029023 +erk 4.36182392735636 3.67882911826043 1.80828877117927 0.00995033085316809 2.55722731136763 2.81540871942271 3.88567903008854 4.81218435537242 2.90690105984738 3.6163087612791 1.83418018511201 +erk 4.10098910494077 3.39114704580865 2.35137525716348 0 0 3.3178157727231 3.92986292355648 6.4393503711001 3.62434093297637 4.38077585277223 3.79548918917219 +erk 3.21084365317094 3.50855589998265 0.285178942233662 0.438254930931155 0.810930216216329 3.73289633953071 4.80402104473326 6.54821910276237 2.81540871942271 3.7864597824528 4.56017282005736 +erk 3.9926809084456 2.35137525716348 0.746687947487975 0.00995033085316809 3.13113691056019 1.79840401194672 2.97552956623647 6.04500531403601 2.34180580614733 3.17387845893747 1.32175583998232 +erk 4.63472898822964 3.40119738166216 1.18784342239605 1.49290409617815 2.10413415427021 3.91202300542815 4.38949864951258 7.23128700432762 0.548121408509688 2.94968833505258 4.38077585277223 +erk 2.82137888640921 3.17387845893747 1.79009141212736 1.59127394180643 2.66025953726586 1.94304891677428 3.95699637107088 6.30444880242198 0.22314355131421 2.30258509299405 3.8308129500026 +erk 4.43438186500781 3.69635146895264 1.9154509415706 0.00995033085316809 2.86789890204411 2.97552956623647 3.62434093297637 5.50533153593236 2.61739583283408 3.56953269648137 4.36182392735636 +erk 4.03777421073371 3.64283551561253 0.746687947487975 0.928219302739429 2.55722731136763 2.81540871942271 3.65065824129374 6.25958146406492 3.40119738166216 4.23700086262362 3.75887182593397 +erk 3.89385903480047 3.37416870927424 0.928219302739429 0.350656871613169 1.74571553072665 2.92316158071916 3.88567903008854 7.0604763659998 3.32862668882732 3.70622809244855 3.08648663682246 +erk 0.765467842139571 2.50959926237837 1.32175583998232 0.593326845277734 2.81540871942271 3.23080439573347 4.40671924726425 6.90775527898214 2.94968833505258 3.66867674679642 2.3887627892351 +erk 4.93447393313069 3.88567903008854 1.79840401194672 0 3.44361809754611 2.4423470353692 3.53514535417189 4.47049528266149 2.54160199346455 3.39114704580865 2.65324196460721 +erk 3.87743156065853 3.17387845893747 1.83418018511201 1.79840401194672 2.36085400111802 2.90690105984738 3.79548918917219 6.56526497003536 0.989541193613748 2.94968833505258 3.85862222870103 +erk 2.31253542384721 2.79116510781272 1.68268837417369 0.207014169384326 3.04927304048202 2.60268968544438 3.54385368206368 5.66642668811243 3.26575941076705 3.93963817246112 3.12236492448736 +erk 4.40671924726425 4.12874598893943 1.37624402526639 0.0769610411361284 2.61006979274201 0.951657875711446 3.40784192438082 3.32862668882732 0.871293365943419 2.87919845729804 4.43438186500781 +erk 2.484906649788 2.84490938381941 1.57484646766448 1.34807314829969 0.828551817566148 1.7630170003624 3.15700042115011 6.83625927727707 4.01998014693324 4.59612944133594 3.27336401015227 +erk 3.3357695763397 2.86789890204411 0.488580014818671 0.00995033085316809 2.84490938381941 2.94968833505258 3.3357695763397 5.39816270151775 3.74242022104197 4.7361984483945 4.30000279919529 +erk 4.47049528266149 3.02042488614436 1.43031124653666 0.0295588022415444 0.307484699747961 4.0842942263686 5.08140436498446 6.98841318199959 2.87919845729804 3.56953269648137 2.64617479738412 +erk 4.5152454784601 3.48124008933569 1.51951320490611 0 2.27521389619791 2.84490938381941 3.58905911883173 5.72031177660741 3.18221184049661 4.13676527810605 3.44361809754611 +erk 2.36085400111802 0.457424847038875 1.92424865227413 1.44926916028128 2.484906649788 3.25424296870549 4.11087386417331 6.8001700683022 3.47196645255036 4.3267781604434 3.69635146895264 +erk 4.62497281328427 3.51749783735832 1.81645208181843 0.542324290825362 2.82137888640921 4.72738781871234 5.80211837537706 8.03203531439882 2.53369681395743 3.44361809754611 2.61006979274201 +erk 3.50855589998265 2.88480071284671 1.7630170003624 0 2.57261223020711 1.89761985992753 3.68887945411394 5.74620319054015 1.71739505393919 3.35340671782581 4.21803603456465 +erk 4.01998014693324 3.69635146895264 2.70805020110221 0.0198026272961797 3.07731226054641 4.23700086262362 4.86753445045558 7.24064969425547 3.16547504814109 3.55248682920838 2.13179677201376 +erk 4.50645421304893 3.6163087612791 0.989541193613748 0.215111379616945 1.59127394180643 2.1770218700187 3.12236492448736 6.25190388316589 2.47653840011748 2.90690105984738 2.64617479738412 +erk 4.30811095172371 3.27336401015227 1.870262530716 0.300104592450338 2.68784749378469 2.39789527279837 3.45315712059287 6.87212810133899 2.9338568698359 3.50855589998265 2.7408400239252 +erk 3.8308129500026 3.87743156065853 1.23256026117785 0.518793793415168 2.484906649788 3.4904285153901 4.56017282005736 6.31354804627709 1.01523067972906 3.50855589998265 4.59612944133594 +erk 5.03043792139244 4.77912349311153 1.06125650212434 0 3.11351530921037 2.61739583283408 3.03013370027132 6.11589212548303 2.36085400111802 3.23080439573347 2.65324196460721 +erk 2.98568193770049 2.73436750941958 1.37624402526639 1.96009478404727 1.4747630091075 2.9704144655697 3.59731226058845 6.16120732169508 2.91235066461494 3.64283551561253 2.06812778177956 +erk 3.69635146895264 3.16547504814109 2.08691355651854 0 2.80336038090653 2.00552585872967 3.44361809754611 6.99759598298193 2.61006979274201 3.40784192438082 2.39789527279837 +erk 3.45315712059287 2.79728133483015 0 0.810930216216329 0.00995033085316809 3.05870707271538 3.85862222870103 6.98007594056176 3.13113691056019 4.11087386417331 3.07731226054641 +erk 2.70805020110221 3.04927304048202 1.65441127807683 1.26694760348732 2.53369681395743 3.8308129500026 4.69134788222914 7.84306401669205 0.810930216216329 1.69009581545155 1.7630170003624 +erk 4.3528552573736 3.04927304048202 2.66025953726586 1.04380405217311 3.34638914516716 3.31054301339402 3.7864597824528 5.32300997913841 2.4932054526027 3.14845336057165 2.50143595173921 +erk 4.06560209335645 3.15700042115011 1.66392609771817 2.27521389619791 3.37416870927424 3.01553490085017 3.80443779474821 6.47543271670409 2.31253542384721 3.12236492448736 2.67414864942653 +erk 3.92197333628131 3.19458313229916 1.43031124653666 0.173953307123438 2.50959926237837 2.85070650150373 3.81330703248899 7.24921505711439 2.61739583283408 3.58073729549423 2.55722731136763 +erk 4.81218435537242 4.22683374526818 0.548121408509688 0.285178942233662 1.73518911773966 2.89591193827178 3.58905911883173 5.94542060860658 2.2935443483419 2.9391619220656 2.2935443483419 +erk 4.01096295328305 2.81540871942271 0 0 2.11384296839717 3.40784192438082 4.70953020131233 7.24921505711439 1.55603713570699 2.53369681395743 4.33598269617247 +erk 4.41642806139121 3.3178157727231 0 0.774727167552368 2.70805020110221 1.708377860289 3.10458667846607 6.18826412308259 2.77881927199042 3.67882911826043 1.9154509415706 +erk 3.8416005411316 2.23108909128898 0 1.74571553072665 2.94968833505258 3.17387845893747 3.68887945411394 5.73009978297357 2.50143595173921 3.36384159511839 1.45628673293993 +erk 4.19116874685764 4.27249074760558 1.62727783056243 0.89199803930511 3.04927304048202 3.76815263500844 4.68213122712422 7.55538194424027 3.64283551561253 4.43438186500781 3.31054301339402 +erk 3.93963817246112 3.21084365317094 2.9338568698359 2.28442112236637 3.24649099190117 3.18221184049661 3.86702563949741 7.01571242048723 1.18784342239605 2.9391619220656 4.03777421073371 +erk 4.11087386417331 3.12236492448736 1.43031124653666 1.6094379124341 0.476234178996372 2.54160199346455 3.13113691056019 5.39816270151775 2.77881927199042 3.41772668361337 2.62466859216316 +erk 4.56017282005736 3.76815263500844 0 0.657520002916794 2.79116510781272 2.20386912005489 3.63495111208838 6.35957386867238 2.82137888640921 3.54385368206368 3.04927304048202 +erk 3.75887182593397 3.29212628660779 0.00995033085316809 0.207014169384326 2.4423470353692 3.26575941076705 3.52636052461616 5.82894561761021 2.63188884013665 3.26575941076705 2.4932054526027 +erk 4.46129981556839 3.98527346716774 0 1.4747630091075 3.00568260440716 3.81330703248899 4.86753445045558 6.90775527898214 3.48124008933569 4.0842942263686 2.86789890204411 +erk 4.30000279919529 3.54385368206368 1.13462272619114 5.06259503302697 3.48124008933569 3.23080439573347 3.80443779474821 5.57594910314632 0.928219302739429 2.76000994003292 4.17284762371004 +erk 4.66343909411207 3.8416005411316 0.943905898907128 1.08856195281461 3.11351530921037 2.31253542384721 3.62434093297637 6.41345895716736 0 4.01096295328305 1.38629436111989 +erk 2.9338568698359 3.24649099190117 1.69927861643389 1.36609165380237 3.4626060097908 2.32238772029023 2.75366071235426 5.8636311755981 2.47653840011748 3.70622809244855 3.51749783735832 +erk 3.3178157727231 3.54385368206368 0 0.00995033085316809 2.50143595173921 1.77155676191054 2.77881927199042 5.95324333428778 2.70136121295141 3.16547504814109 2.76000994003292 +erk 4.14630430115281 4.27249074760558 2.13179677201376 0.672944473242426 3.54385368206368 4.29045944114839 5.18738580584075 7.39326309476384 2.7408400239252 3.38099467434464 2.3887627892351 +erk 3.86702563949741 3.52636052461616 2.02419306744936 1.04380405217311 3.19458313229916 3.06805293513362 3.75887182593397 5.54907608489522 2.4423470353692 3.49953328238302 2.24812890719799 +erk 4.30811095172371 3.19458313229916 0.792992515529661 0.683096844706444 2.77258872223978 4.21803603456465 4.79579054559674 5.4249500174814 2.01490302054226 2.9391619220656 4.42484663185681 +erk 4.54223038621422 3.69635146895264 1.63705307946707 1.03318448334565 3.50855589998265 2.9338568698359 3.67882911826043 5.48479693349065 3.11351530921037 3.56104608260405 2.76000994003292 +erk 4.12874598893943 3.00568260440716 2.05027016437956 0 2.46809953147162 3.4626060097908 3.85862222870103 5.45958551414416 3.29953372788566 4.30000279919529 2.9338568698359 +erk 4.49758497530815 3.75887182593397 2.08691355651854 0 2.23964529322017 2.99573227355399 3.34638914516716 5.99146454710798 3.3357695763397 4.15575319035074 3.19458313229916 +erk 4.01998014693324 4.13676527810605 0.783901543828409 1.708377860289 3.54385368206368 2.39789527279837 4.36182392735636 7.92407232492342 3.87743156065853 4.62497281328427 3.73289633953071 +erk 4.50645421304893 3.45315712059287 2.91235066461494 1.63705307946707 3.39114704580865 3.3178157727231 3.88567903008854 5.26269018890489 3.6609942506244 4.45201900649392 4.05698877567833 +erk 2.57261223020711 3.43720781918519 2.39789527279837 0 3.08648663682246 2.4423470353692 3.29953372788566 5.99146454710798 0.900161349944271 3.17387845893747 4.22683374526818 +erk 4.20020495292158 3.16547504814109 1.18784342239605 0 3.01553490085017 2.2213750375685 3.9759363311718 6.71901315438526 2.62466859216316 3.96651119071222 4.86753445045558 +erk 2.76000994003292 3.24649099190117 0.2390169004705 1.12492959698548 2.81540871942271 3.6163087612791 4.11087386417331 6.02586597382531 2.97552956623647 3.44361809754611 2.50959926237837 +erk 2.84490938381941 3.6163087612791 2.64617479738412 1.19694818938897 3.36384159511839 2.60268968544438 3.45315712059287 6.19644412779452 3.27336401015227 4.3528552573736 3.39114704580865 +erk 4.50645421304893 3.81330703248899 2.484906649788 0.00995033085316809 3.41772668361337 3.3357695763397 3.87743156065853 5.43372200355424 0.371563556432483 3.88567903008854 1.35840915763035 +erk 2.64617479738412 2.4423470353692 1.16002091679675 0 3.03974915897077 2.51769647261099 4.83628190695148 5.24174701505964 3.14845336057165 3.53514535417189 2.86789890204411 +erk 4.45201900649392 3.05870707271538 0.451075619360217 0.343589704390077 1.61938824328727 4.14630430115281 5.19849703126583 7.45645455517621 3.16547504814109 3.92197333628131 5.01063529409626 +erk 4.11087386417331 2.86789890204411 0.470003629245736 0.048790164169432 1.56444054650336 3.54385368206368 4.19116874685764 6.01615715969835 3.7864597824528 4.79579054559674 4.50645421304893 +erk 4.88280192258637 5.14749447681345 0.765467842139571 0.810930216216329 2.15871472257434 2.79728133483015 3.49953328238302 6.05443934626937 3.64283551561253 4.17284762371004 3.08648663682246 +erk 4.13676527810605 3.63495111208838 0.165514438477573 0.667829372575655 2.67414864942653 2.85070650150373 3.4904285153901 5.91889385427315 0.0198026272961797 3.2846635654062 3.96651119071222 +erk 3.7864597824528 3.69635146895264 0.431782416425538 0 3.00568260440716 4.254193263164 4.83628190695148 6.42162226780652 3.43720781918519 4.30811095172371 3.68887945411394 +erk 4.67282883446191 4.85981240436167 2.76000994003292 0.0295588022415444 2.3887627892351 3.90399083373088 4.59612944133594 7.16857989726403 3.34638914516716 3.92986292355648 3.43720781918519 +erk 3.9926809084456 2.70136121295141 2.23964529322017 0 2.60268968544438 3.56104608260405 4.61512051684126 6.70073110954781 2.58021682959233 3.69635146895264 3.06805293513362 +erk 3.49953328238302 3.27336401015227 0.774727167552368 0 2.68102152871429 3.07731226054641 3.71357206670431 6.85329909318608 1.95160817016995 3.29953372788566 2.23964529322017 +erk 3.15700042115011 2.92316158071916 1.59127394180643 0.693147180559945 1.87946504964716 3.15700042115011 4.19116874685764 7.69028602067677 2.9704144655697 3.43720781918519 1.8531680973567 +erk 4.04830062372069 3.36384159511839 0.00995033085316809 1.708377860289 1.77155676191054 2.9704144655697 3.53514535417189 5.37063802812766 1.09861228866811 2.77881927199042 4.22683374526818 +erk 4.11087386417331 2.97552956623647 1.00795792039998 0.0582689081239758 2.50959926237837 2.51769647261099 3.29212628660779 5.7037824746562 1.51951320490611 2.34180580614733 4.24563400976833 +erk 3.6609942506244 2.88480071284671 0.693147180559945 1.16002091679675 3.24649099190117 1.51072193949494 3.3357695763397 6.52941883826223 3.3178157727231 4.02891675689965 3.06805293513362 +erk 4.57779898919196 3.85014760171006 0 0.765467842139571 3.2846635654062 3.64283551561253 4.91998092582813 7.60936653795421 2.87919845729804 3.6163087612791 3.12236492448736 +erk 4.77068462446567 4.64439089914137 2.82137888640921 0.756121979721334 2.80336038090653 3.3178157727231 3.6609942506244 5.99893656194668 3.40119738166216 3.94931879017184 2.86220088092947 +erk 3.9759363311718 3.36384159511839 1.49290409617815 1.23256026117785 2.90690105984738 2.20386912005489 3.07731226054641 6.1527326947041 2.58021682959233 3.3178157727231 2.10413415427021 +erk 6.09807428216624 4.49758497530815 0.00995033085316809 1.28647402583768 2.64617479738412 2.4932054526027 3.54385368206368 6.83625927727707 3.10458667846607 3.81330703248899 2.39789527279837 +erk 3.64283551561253 2.73436750941958 1.80828877117927 1.30291275218084 3.39114704580865 2.35137525716348 3.44361809754611 6.40357419793482 3.4904285153901 4.44382703557933 3.29953372788566 +erk 4.03777421073371 3.25424296870549 0.60431596685333 1.37624402526639 3.07731226054641 2.60268968544438 3.26575941076705 6.54821910276237 3.10458667846607 3.98527346716774 1.44926916028128 +erk 4.31748811353631 3.9926809084456 2.41591377830105 0.73716406597672 2.484906649788 2.85070650150373 3.54385368206368 6.25190388316589 1.75440368268429 3.62434093297637 5.03695260241363 +erk 2.97552956623647 3.31054301339402 1.77155676191054 0 3.38099467434464 3.75185425327532 4.49758497530815 7.15070145759253 3.68887945411394 4.53367418428302 3.94931879017184 +erk 4.0842942263686 3.41772668361337 1.54756250871601 0.425267735404344 2.55722731136763 3.37416870927424 4.3267781604434 5.58724865840025 2.70805020110221 3.19458313229916 1.51951320490611 +erk 4.28082412916472 2.71469474382088 2.00552585872967 1.7630170003624 3.43720781918519 3.00568260440716 3.51749783735832 5.71042701737487 3.55248682920838 4.30000279919529 3.56104608260405 +erk 3.90399083373088 3.2188758248682 1.34807314829969 0.0953101798043249 2.84490938381941 1.44926916028128 1.94304891677428 5.19849703126583 1.35840915763035 3.03974915897077 4.50645421304893 +erk 4.45201900649392 3.62434093297637 0 0.00995033085316809 2.21266038546606 3.82209829790016 4.254193263164 5.41610040220442 3.36384159511839 4.29045944114839 3.91202300542815 +erk 3.8416005411316 2.85070650150373 1.94304891677428 0.165514438477573 1.03318448334565 4.76217393479776 5.40717177146012 6.26909628370626 3.24649099190117 3.60549784517489 3.39114704580865 +erk 4.21803603456465 3.56953269648137 1.69927861643389 0.636576829071551 2.64617479738412 2.89591193827178 4.87519732320115 4.85981240436167 2.94968833505258 3.85862222870103 2.9391619220656 +erk 3.36384159511839 3.13113691056019 0.27002713721306 0 1.90657514365664 2.46809953147162 3.42751468997953 6.20657592672493 2.66025953726586 3.6163087612791 2.25758772706331 +erk 4.56954300834494 4.10098910494077 0.56531380905006 0.131028262406404 2.21266038546606 3.44361809754611 5.06259503302697 6.98841318199959 3.58905911883173 4.20916023665068 3.49953328238302 +erk 4.3528552573736 3.27336401015227 0.900161349944271 1.6094379124341 2.31253542384721 3.8416005411316 4.18205014264121 5.67675380226828 2.73436750941958 3.74242022104197 3.09557760852371 +erk 3.70622809244855 2.94968833505258 0.438254930931155 1.37624402526639 1.39376637595859 3.32862668882732 3.8308129500026 5.63835466933375 3.16547504814109 3.42751468997953 3.31054301339402 +erk 4.29045944114839 3.77734810210154 1.27815220250019 0 2.9338568698359 4.87519732320115 5.44241771052179 7.07834157955767 2.21266038546606 2.89591193827178 2.45958884180371 +erk 3.63495111208838 3.05870707271538 1.66392609771817 0.00995033085316809 2.9391619220656 3.6163087612791 4.02891675689965 5.67675380226828 1.24126858906963 2.28442112236637 4.0926765051214 +erk 4.47960696301275 3.81330703248899 2.40694510831829 0 2.87919845729804 3.62434093297637 4.31748811353631 7.07834157955767 3.62434093297637 4.16511363311031 2.70136121295141 +erk 2.73436750941958 3.16547504814109 1.59127394180643 0 0.810930216216329 3.53514535417189 4.13676527810605 7.48324441607385 2.96010509591084 3.93963817246112 3.08648663682246 +erk 4.28082412916472 3.91202300542815 1.66392609771817 0.00995033085316809 3.2188758248682 3.53514535417189 4.50645421304893 7.18690102041163 3.50855589998265 4.18205014264121 3.3178157727231 +erk 4.44382703557933 3.15700042115011 2.16791018966744 0.00995033085316809 2.92316158071916 2.11384296839717 3.14845336057165 6.57507584059962 1.43031124653666 2.27521389619791 1.42069578783722 +erk 2.90690105984738 2.65324196460721 1.34807314829969 2.07819075977818 2.91235066461494 3.92986292355648 4.65396035015752 6.91671502035361 3.63495111208838 4.02891675689965 3.13983261752775 +erk 4.13676527810605 3.23867845216438 1.96009478404727 0.0582689081239758 1.20597080698861 3.07731226054641 3.52636052461616 5.7037824746562 2.00552585872967 3.6609942506244 4.00186370942794 +erk 2.10413415427021 2.88480071284671 0.0295588022415444 0.438254930931155 3.07731226054641 3.73289633953071 4.66343909411207 7.46565531013406 3.37416870927424 3.94931879017184 2.81540871942271 +erk 4.47960696301275 3.39114704580865 2.62466859216316 1.17865499634165 2.58021682959233 3.45315712059287 4.07414185490458 6.50279004591562 3.10458667846607 3.82209829790016 2.62466859216316 +erk 2.37954613413017 3.15700042115011 1.99741770620125 2.31253542384721 2.50143595173921 2.94968833505258 3.76815263500844 6.92559519711047 2.71469474382088 3.17387845893747 2.90690105984738 +erk 4.00186370942794 3.20274644293832 1.93441576962958 0.139761942375159 2.87919845729804 3.85014760171006 4.56017282005736 7.53743003658651 0 0 2.04122032885964 +erk 4.04830062372069 3.16547504814109 1.96009478404727 2.26695791535089 2.2213750375685 3.80443779474821 4.83628190695148 7.07834157955767 1.24990173621434 2.91235066461494 4.3528552573736 +erk 3.3357695763397 3.7864597824528 0.0769610411361284 1.28647402583768 2.26695791535089 3.77734810210154 4.47049528266149 6.31354804627709 2.54160199346455 3.23867845216438 1.90657514365664 +erk 3.04927304048202 2.76000994003292 2.00552585872967 0.908258560176891 3.06805293513362 2.62466859216316 3.58905911883173 6.66440902035041 3.23080439573347 3.81330703248899 4.40671924726425 +erk 4.36182392735636 4.05698877567833 1.71739505393919 0 1.06125650212434 1.68268837417369 2.87919845729804 6.55677835615804 2.9338568698359 3.37416870927424 2.18605127673809 +erk 1.94304891677428 3.34638914516716 2.27521389619791 0 1.92424865227413 3.54385368206368 4.19116874685764 5.87211778947542 3.14845336057165 3.75185425327532 3.13113691056019 +erk 4.18205014264121 3.11351530921037 0 0.00995033085316809 2.4423470353692 4.11087386417331 4.56017282005736 6.8627579130514 2.70136121295141 3.40119738166216 3.04927304048202 +erk 4.06560209335645 3.20274644293832 1.38629436111989 1.60140574073684 3.18221184049661 1.78170913337455 3.53514535417189 6.77308037565554 1.42069578783722 2.82137888640921 4.69134788222914 +erk 2.77881927199042 2.72785282839839 0.104360015324243 0 2.66025953726586 2.35137525716348 3.87743156065853 7.47420480649612 1.43983512804792 3.02042488614436 3.92986292355648 +erk 3.52636052461616 3.38099467434464 1.16938135955632 1.01523067972906 2.21266038546606 2.94968833505258 3.40119738166216 6.08904487544685 2.99573227355399 3.82209829790016 2.61006979274201 +erk 2.66025953726586 2.82137888640921 0.593326845277734 1.74571553072665 3.3178157727231 2.55722731136763 3.51749783735832 6.25958146406492 3.86702563949741 4.66343909411207 4.07414185490458 +erk 4.22683374526818 3.35340671782581 0.62057648772511 0.647103242058538 0 3.02042488614436 3.72328088083127 5.72031177660741 3.27336401015227 4.07414185490458 3.48124008933569 +erk 4.14630430115281 3.37416870927424 0.900161349944271 0.647103242058538 0.350656871613169 3.24649099190117 4.00186370942794 5.82008293035236 3.49953328238302 4.37071287477361 3.45315712059287 +erk 4.60517018598809 4.04830062372069 1.82616089594539 0.215111379616945 3.2846635654062 3.15700042115011 3.54385368206368 5.73009978297357 2.54160199346455 3.11351530921037 0.727548607277278 +erk 4.63472898822964 3.72328088083127 1.79840401194672 2.35137525716348 2.55722731136763 1.74571553072665 3.09557760852371 6.21460809842219 3.04927304048202 3.7864597824528 3.19458313229916 +erk 4.12874598893943 3.11351530921037 2.37024374146786 0.518793793415168 2.86220088092947 4.5152454784601 5.10594547390058 6.1527326947041 2.47653840011748 3.25424296870549 2.72785282839839 +erk 4.39814601655377 3.85862222870103 0.0769610411361284 0 2.20386912005489 2.03339760317843 3.56104608260405 6.61069604471776 2.96010509591084 3.67882911826043 3.05870707271538 +erk 4.24563400976833 2.97552956623647 0 2.04122032885964 2.77258872223978 4.30811095172371 5.08140436498446 6.60258789218934 2.55722731136763 3.48124008933569 2.61739583283408 +erk 3.75887182593397 3.03974915897077 1.54756250871601 0.22314355131421 3.26575941076705 3.18221184049661 4.18205014264121 6.69208374250663 1.15057202759882 2.53369681395743 4.45201900649392 +erk 4.28082412916472 4.31748811353631 1.09861228866811 0.683096844706444 1.87946504964716 3.9926809084456 4.77068462446567 6.93439720992856 3.32862668882732 4.20916023665068 3.29953372788566 +erk 3.86702563949741 2.9391619220656 1.92424865227413 1.65441127807683 1.07840958135059 3.56953269648137 4.30811095172371 6.80903930604298 3.19458313229916 4.27249074760558 2.97552956623647 +erk 4.29045944114839 3.68887945411394 1.74571553072665 0.00995033085316809 3.45315712059287 3.52636052461616 4.43438186500781 7.42952084278646 1.26694760348732 3.40119738166216 4.53367418428302 +erk 3.8308129500026 3.58073729549423 2.42480272571829 0.2390169004705 2.47653840011748 3.6163087612791 4.57779898919196 6.63856778916652 2.84490938381941 3.74242022104197 2.45958884180371 +erk 2.24812890719799 1.51951320490611 0.385262400790645 1.61938824328727 1.43031124653666 5.73979291217923 6.46769872610435 7.57353126274595 2.57261223020711 3.40784192438082 2.58776403522771 +erk 4.31748811353631 3.34638914516716 1.89761985992753 1.96990565461153 2.91235066461494 2.58021682959233 4.93447393313069 4.88280192258637 2.86220088092947 3.67882911826043 2.16791018966744 +erk 3.25424296870549 3.74242022104197 1.05082162483176 0.00995033085316809 3.05870707271538 2.39789527279837 3.25424296870549 6.06145691892802 3.2188758248682 3.76815263500844 1.69927861643389 +erk 3.68887945411394 3.41772668361337 2.36085400111802 3.56104608260405 3.53514535417189 3.51749783735832 4.56017282005736 7.88833450073865 3.21084365317094 3.75185425327532 2.57261223020711 +erk 3.94931879017184 2.87919845729804 0 0.00995033085316809 2.33214389523559 3.58905911883173 4.28082412916472 7.64539769942863 2.10413415427021 2.85070650150373 3.4904285153901 +erk 4.56017282005736 4.11903717481247 2.41591377830105 0.00995033085316809 3.65065824129374 2.91235066461494 3.98527346716774 6.18001665365257 1.20597080698861 2.11384296839717 3.70622809244855 +erk 3.90399083373088 2.89591193827178 2.3887627892351 0.845868267577609 3.2188758248682 3.00568260440716 3.56104608260405 5.87211778947542 2.62466859216316 3.25424296870549 2.06812778177956 +erk 5.88332238848828 5.89989735358249 2.58776403522771 0 3.47196645255036 2.41591377830105 3.01553490085017 6.19644412779452 2.60268968544438 3.66867674679642 2.61006979274201 +erk 4.26267987704132 3.85862222870103 1.08856195281461 1.13462272619114 2.80336038090653 3.3178157727231 3.56104608260405 5.48479693349065 0 4.22683374526818 1.45628673293993 +erk 4.12874598893943 3.63495111208838 0.405465108108164 0 2.34180580614733 4.20916023665068 4.90527477843843 6.59304453414244 2.40694510831829 3.07731226054641 2.10413415427021 +erk 1.43031124653666 3.08648663682246 1.50185270175416 0.802001585472027 2.73436750941958 3.8416005411316 4.57779898919196 7.6182510978767 3.07731226054641 3.81330703248899 2.94968833505258 +erk 2.65324196460721 1.96009478404727 2.36085400111802 1.42069578783722 2.2935443483419 3.52636052461616 4.01096295328305 5.73009978297357 3.06805293513362 4.16511363311031 3.07731226054641 +erk 4.29045944114839 3.09557760852371 2.23108909128898 0.00995033085316809 2.51769647261099 3.34638914516716 3.64283551561253 5.85507192220243 2.61739583283408 3.44361809754611 2.84490938381941 +erk 3.17387845893747 3.11351530921037 0.819779831493311 0.943905898907128 2.62466859216316 3.8416005411316 4.41642806139121 6.37672694789863 0.53062825106217 3.98527346716774 0.693147180559945 +erk 2.75366071235426 2.79116510781272 1.68268837417369 4.54223038621422 3.12236492448736 3.48124008933569 4.19116874685764 6.48463523563525 3.74242022104197 4.67282883446191 3.54385368206368 +erk 3.58905911883173 3.67882911826043 0.62057648772511 1.69009581545155 0 3.69635146895264 4.61512051684126 7.10578612948127 3.56104608260405 4.34380542185368 3.47196645255036 +erk 4.24563400976833 3.08648663682246 2.24812890719799 0.00995033085316809 2.85070650150373 3.20274644293832 4.11087386417331 5.6937321388027 2.27521389619791 3.36384159511839 2.57261223020711 +erk 3.87743156065853 2.94968833505258 1.7630170003624 0.00995033085316809 2.79728133483015 3.72328088083127 4.86753445045558 6.68336094576627 3.41772668361337 4.01096295328305 3.2188758248682 +erk 4.92725368515721 4.8283137373023 1.92424865227413 0.936093359170335 2.23108909128898 2.20386912005489 1.68268837417369 4.89034912822175 2.9391619220656 3.65065824129374 1.22377543162212 +erk 4.12874598893943 3.66867674679642 1.53901544813755 1.21491274436427 2.09556092355972 3.3357695763397 4.23700086262362 7.15070145759253 3.34638914516716 3.92986292355648 2.65324196460721 +erk 4.15575319035074 3.18221184049661 0.00995033085316809 1.14103300455206 3.2846635654062 2.7408400239252 4.30000279919529 7.65444322647011 0 1.07840958135059 1.15057202759882 +erk 4.56017282005736 3.95699637107088 1.79009141212736 0 3.42751468997953 1.8531680973567 3.00568260440716 3.27336401015227 3.16547504814109 3.45315712059287 3.37416870927424 +erk 2.05923883436232 3.26575941076705 2.30258509299405 2.13179677201376 2.81540871942271 1.99741770620125 2.68102152871429 5.51342874616498 2.58021682959233 3.13983261752775 3.41772668361337 +erk 3.91202300542815 2.85070650150373 0 1.20597080698861 3.03013370027132 2.70136121295141 3.52636052461616 5.75574221358691 2.89591193827178 3.96651119071222 3.50855589998265 +erk 2.484906649788 2.51769647261099 1.53901544813755 0 1.12492959698548 3.2846635654062 4.18205014264121 6.88959130835447 3.41772668361337 3.64283551561253 2.23108909128898 +erk 4.27249074760558 3.41772668361337 2.46809953147162 0.00995033085316809 2.77258872223978 3.52636052461616 4.07414185490458 6.34035930372775 3.18221184049661 3.91202300542815 3.14845336057165 +erk 2.87919845729804 3.20274644293832 0.207014169384326 0.00995033085316809 2.56494935746154 2.1770218700187 3.15700042115011 6.73696695800186 2.42480272571829 3.80443779474821 4.46129981556839 +erk 3.53514535417189 3.40119738166216 0 0 2.98568193770049 4.07414185490458 4.7361984483945 6.78219205600679 3.14845336057165 4.03777421073371 3.7864597824528 +erk 3.29953372788566 3.21084365317094 2.68102152871429 0.871293365943419 3.17387845893747 2.50959926237837 4.26267987704132 7.25841215059531 0.845868267577609 3.13113691056019 4.34380542185368 +erk 4.01998014693324 3.55248682920838 0.559615787935423 1.36609165380237 1.7263316639056 3.79548918917219 4.38077585277223 6.96129604591017 3.29212628660779 3.82209829790016 2.86220088092947 +erk 4.254193263164 3.4904285153901 0.0392207131532813 0.631271776841858 2.16791018966744 3.01553490085017 3.76815263500844 6.59304453414244 2.51769647261099 3.05870707271538 0 +erk 4.00186370942794 3.3357695763397 0.139761942375159 1.52822785700856 3.27336401015227 3.3357695763397 3.8308129500026 5.92692602597041 3.94931879017184 4.21803603456465 0.512823626428664 +erk 3.40784192438082 3.20274644293832 1.89761985992753 0.582215619852664 0 3.02042488614436 3.76815263500844 6.19644412779452 0.828551817566148 1.92424865227413 1.43031124653666 +erk 2.00552585872967 3.38099467434464 2.14124194258528 0.350656871613169 1.56444054650336 3.63495111208838 4.57779898919196 7.43838353004431 1.90657514365664 2.53369681395743 1.708377860289 +erk 3.74242022104197 3.68887945411394 1.37624402526639 0 2.58021682959233 3.38099467434464 3.85014760171006 6.16120732169508 3.23867845216438 3.85862222870103 3.08648663682246 +erk 3.38099467434464 3.09557760852371 1.34807314829969 1.30291275218084 1.95160817016995 3.38099467434464 4.30000279919529 7.06987412845857 2.31253542384721 3.24649099190117 2.65324196460721 +erk 4.86753445045558 4.76217393479776 2.05027016437956 0.0582689081239758 3.29953372788566 3.54385368206368 4.07414185490458 6.03548143252476 1.24126858906963 2.99573227355399 4.56017282005736 +erk 4.57779898919196 3.93963817246112 2.06812778177956 0.717839793150317 2.61006979274201 2.64617479738412 3.38099467434464 6.19644412779452 4.5152454784601 4.93447393313069 3.3357695763397 +erk 4.34380542185368 4.5152454784601 0.431782416425538 0 2.86789890204411 3.43720781918519 3.59731226058845 5.75574221358691 2.70136121295141 3.60549784517489 2.14943391349987 +erk 3.26575941076705 2.7408400239252 2.04122032885964 1.33236601909433 2.86220088092947 2.68784749378469 3.58905911883173 5.91889385427315 1.96990565461153 2.15871472257434 0 +erk 3.7864597824528 2.72785282839839 1.23256026117785 0.879626747502564 1.77155676191054 2.86220088092947 3.76815263500844 5.85507192220243 3.56953269648137 4.42484663185681 3.63495111208838 +erk 4.11087386417331 3.47196645255036 1.16938135955632 0 2.42480272571829 3.12236492448736 3.82209829790016 5.63835466933375 2.23108909128898 2.91235066461494 1.708377860289 +erk 4.41642806139121 3.92197333628131 2.10413415427021 0.672944473242426 2.89591193827178 3.4904285153901 4.01096295328305 6.04500531403601 2.89591193827178 3.49953328238302 2.56494935746154 +erk 4.78749174278205 3.58073729549423 1.59127394180643 1.08856195281461 2.81540871942271 2.9338568698359 3.52636052461616 5.91889385427315 2.77258872223978 3.52636052461616 1.79840401194672 +erk 3.94931879017184 3.8308129500026 2.58021682959233 0.00995033085316809 2.91235066461494 1.90657514365664 2.56494935746154 6.16120732169508 3.19458313229916 3.92197333628131 4.3528552573736 +erk 2.91235066461494 2.89591193827178 1.870262530716 0 2.27521389619791 2.10413415427021 3.23080439573347 6.30444880242198 2.12226153886276 3.23867845216438 0.89199803930511 +erk 5.03695260241363 3.98527346716774 1.86252854011626 0 1.82616089594539 3.51749783735832 4.05698877567833 7.0604763659998 2.63188884013665 2.62466859216316 1.93441576962958 +erk 3.85014760171006 3.29953372788566 1.7630170003624 0.00995033085316809 2.64617479738412 2.42480272571829 3.67882911826043 6.58340922215876 3.38099467434464 3.87743156065853 3.3178157727231 +erk 4.52396013056255 3.45315712059287 2.05027016437956 0.457424847038875 1.57484646766448 2.86220088092947 3.18221184049661 6.48463523563525 2.98568193770049 3.70622809244855 1.7630170003624 +erk 4.17284762371004 3.20274644293832 1.4655675420144 0 2.86220088092947 1.80828877117927 2.94968833505258 6.62936325343745 3.27336401015227 3.92197333628131 2.30258509299405 +erk 3.63495111208838 2.91235066461494 1.4655675420144 0.22314355131421 2.484906649788 3.52636052461616 4.60517018598809 6.81783057145415 1.86252854011626 3.42751468997953 4.68213122712422 +erk 3.62434093297637 3.39114704580865 0.593326845277734 0.00995033085316809 1.7263316639056 3.32862668882732 3.91202300542815 5.66642668811243 2.68784749378469 3.3357695763397 0 +erk 4.14630430115281 3.54385368206368 1.708377860289 0.879626747502564 3.21084365317094 2.87919845729804 3.4904285153901 6.57507584059962 2.73436750941958 3.25424296870549 2.86789890204411 +erk 2.19499988231411 3.09557760852371 2.07819075977818 1.28647402583768 2.00552585872967 4.36182392735636 4.97673374242057 6.51174532964473 1.92424865227413 2.98568193770049 0 +erk 3.75887182593397 2.70805020110221 0.139761942375159 0.00995033085316809 3.11351530921037 1.6467336971778 2.98568193770049 6.37672694789863 3.47196645255036 4.0926765051214 2.66025953726586 +erk 4.24563400976833 3.01553490085017 1.65441127807683 0.00995033085316809 1.04380405217311 4.03777421073371 4.84418708645859 6.54821910276237 2.81540871942271 3.4904285153901 2.86789890204411 +erk 2.55722731136763 3.01553490085017 1.16002091679675 0.00995033085316809 2.10413415427021 2.15871472257434 3.4626060097908 6.48463523563525 2.9338568698359 3.44361809754611 2.45958884180371 +erk 4.66343909411207 3.18221184049661 1.51072193949494 0.00995033085316809 2.88480071284671 4.11903717481247 4.70953020131233 7.4205789054108 3.4904285153901 4.38077585277223 3.2846635654062 +erk 4.0926765051214 3.16547504814109 0.470003629245736 1.10525683138678 2.80336038090653 2.86789890204411 3.74242022104197 5.59471137960184 2.9391619220656 3.73289633953071 2.89591193827178 +erk 5.14749447681345 3.49953328238302 1.77155676191054 5.15329159449778 3.85862222870103 3.18221184049661 3.4904285153901 5.63121178182137 3.4626060097908 4.02891675689965 3.36384159511839 +erk 3.67882911826043 2.89591193827178 1.57484646766448 0 3.07731226054641 2.61739583283408 3.56953269648137 5.28826703069454 3.48124008933569 4.43438186500781 4.10098910494077 +erk 2.99573227355399 3.13983261752775 0.936093359170335 1.16938135955632 3.11351530921037 2.83321334405622 4.13676527810605 7.13249755166004 1.25846098961001 3.60549784517489 4.21803603456465 +erk 4.0842942263686 3.29212628660779 2.64617479738412 0.756121979721334 2.65324196460721 3.71357206670431 4.48863636973214 6.44888939414686 2.89591193827178 3.7864597824528 3.27336401015227 +erk 4.40671924726425 3.26575941076705 0.00995033085316809 0.262364264467491 2.4932054526027 3.31054301339402 4.24563400976833 7.47420480649612 3.52636052461616 3.92197333628131 2.14124194258528 +erk 4.18205014264121 3.56104608260405 1.99741770620125 0.542324290825362 2.23964529322017 2.19499988231411 3.12236492448736 6.16120732169508 2.27521389619791 3.23867845216438 2.68784749378469 +erk 4.60517018598809 3.79548918917219 0.00995033085316809 1.84371920815877 2.36085400111802 3.21084365317094 3.94931879017184 6.18826412308259 0.936093359170335 2.28442112236637 3.87743156065853 +erk 4.80402104473326 3.8308129500026 0.27763173659828 0.285178942233662 2.79728133483015 3.8308129500026 4.5152454784601 7.7621706071382 3.13113691056019 3.8416005411316 2.70805020110221 +erk 4.01998014693324 3.13113691056019 1.16938135955632 1.89761985992753 2.54160199346455 2.70136121295141 3.9759363311718 6.96129604591017 2.83321334405622 3.56104608260405 2.25758772706331 +erk 4.60517018598809 4.04830062372069 1.44926916028128 0.00995033085316809 2.58776403522771 2.45958884180371 3.37416870927424 5.77455154554441 3.04927304048202 3.45315712059287 2.61739583283408 +erk 3.03013370027132 2.61006979274201 2.13179677201376 1.67335123817775 1.43983512804792 2.9391619220656 4.03777421073371 7.80710329012598 2.23964529322017 2.98568193770049 0.683096844706444 +erk 4.63472898822964 3.56104608260405 0 0.00995033085316809 2.46809953147162 2.61739583283408 3.23867845216438 5.94542060860658 2.70136121295141 3.23867845216438 2.11384296839717 +erk 4.21803603456465 3.01553490085017 0 0.819779831493311 2.3887627892351 2.91235066461494 3.42751468997953 5.32300997913841 2.58021682959233 3.69635146895264 2.85070650150373 +erk 4.66343909411207 3.2846635654062 2.34180580614733 0.0769610411361284 0 3.08648663682246 3.6163087612791 5.57594910314632 2.88480071284671 3.58073729549423 3.63495111208838 +erk 4.58700621536042 3.40119738166216 1.69927861643389 0.819779831493311 2.45958884180371 1.24126858906963 2.97552956623647 6.7093043402583 3.68887945411394 4.27249074760558 3.68887945411394 +erk 4.30811095172371 3.06805293513362 0.559615787935423 0.113328685307003 1.18784342239605 2.89591193827178 4.27249074760558 7.6004023345004 3.37416870927424 3.95699637107088 2.20386912005489 +erk 3.82209829790016 3.52636052461616 1.69927861643389 1.20597080698861 2.08691355651854 2.70136121295141 3.03013370027132 5.41610040220442 2.65324196460721 3.66867674679642 3.03974915897077 +erk 4.18205014264121 3.4626060097908 1.48387468945875 1.24126858906963 2.25758772706331 3.77734810210154 4.37071287477361 6.82654522355659 3.3357695763397 3.92986292355648 3.3178157727231 +erk 4.21803603456465 3.20274644293832 0.916290731874155 0.00995033085316809 2.54160199346455 3.05870707271538 3.80443779474821 6.25958146406492 3.2846635654062 3.85014760171006 2.31253542384721 +erk 4.55071400019203 3.59731226058845 1.9154509415706 0.207014169384326 1.69927861643389 2.68102152871429 3.40784192438082 6.34035930372775 4.72738781871234 5.16478597392351 3.63495111208838 +erk 4.03777421073371 3.44361809754611 2.05027016437956 1.4036429994545 2.19499988231411 4.38949864951258 4.96284463025991 6.32256523992728 2.75366071235426 3.6163087612791 2.71469474382088 +erk 4.01096295328305 3.19458313229916 0.548121408509688 1.8531680973567 2.26695791535089 2.66025953726586 3.39114704580865 5.79301360838414 0.900161349944271 2.61739583283408 4.31748811353631 +erk 2.64617479738412 2.94968833505258 1.21491274436427 0.756121979721334 1.88858365386359 1.95160817016995 3.29212628660779 6.55677835615804 3.3178157727231 3.80443779474821 2.42480272571829 +erk 4.31748811353631 2.90690105984738 1.18784342239605 0.00995033085316809 2.73436750941958 3.20274644293832 3.65065824129374 5.16478597392351 2.7408400239252 3.50855589998265 4.48863636973214 +erk 4.49758497530815 3.75887182593397 1.84371920815877 0 1.32175583998232 3.03013370027132 3.80443779474821 5.6021188208797 3.04927304048202 3.65065824129374 2.57261223020711 +erk 4.22683374526818 3.24649099190117 1.22377543162212 0.22314355131421 1.74571553072665 2.05923883436232 3.03013370027132 3.3178157727231 2.77258872223978 3.50855589998265 2.46809953147162 +erk 0.113328685307003 3.12236492448736 1.8531680973567 0 2.65324196460721 3.23080439573347 3.74242022104197 6.10702288774225 3.20274644293832 3.92197333628131 2.57261223020711 +erk 3.77734810210154 3.34638914516716 2.32238772029023 0.207014169384326 2.68102152871429 2.87919845729804 3.67882911826043 5.82008293035236 2.94968833505258 3.71357206670431 2.54160199346455 +erk 2.35137525716348 3.13983261752775 0.963174317773006 0.048790164169432 2.61739583283408 2.89591193827178 3.70622809244855 5.66642668811243 3.19458313229916 3.90399083373088 3.76815263500844 +erk 3.85862222870103 2.79116510781272 0.609765571620894 0.667829372575655 2.05027016437956 3.48124008933569 4.04830062372069 6.09807428216624 3.02042488614436 3.74242022104197 3.13113691056019 +erk 3.9759363311718 3.06805293513362 1.92424865227413 1.07158361628019 3.66867674679642 2.94968833505258 4.01998014693324 6.5206211275587 4.17284762371004 4.7361984483945 3.86702563949741 +erk 3.72328088083127 3.18221184049661 2.46809953147162 0.438254930931155 2.12226153886276 2.2935443483419 4.06560209335645 5.96357934361845 0.951657875711446 2.77881927199042 4.38077585277223 +erk 5.55682806169954 5.14749447681345 0 0.343589704390077 2.7408400239252 3.06805293513362 3.75185425327532 6.00881318544259 3.66867674679642 4.30000279919529 3.87743156065853 +erk 4.59612944133594 3.8416005411316 1.67335123817775 0.262364264467491 3.02042488614436 2.3887627892351 3.48124008933569 6.14418563412565 1.95160817016995 3.08648663682246 0.982078472412158 +erk 4.06560209335645 3.3178157727231 2.04122032885964 1.45628673293993 1.87946504964716 1.87946504964716 2.7408400239252 3.36384159511839 2.80336038090653 3.43720781918519 2.77881927199042 +erk 4.00186370942794 3.50855589998265 2.27521389619791 0.774727167552368 2.98568193770049 3.8416005411316 4.45201900649392 6.40357419793482 3.45315712059287 4.00186370942794 3.27336401015227 +erk 3.89385903480047 2.9338568698359 1.78170913337455 1.28647402583768 1.05082162483176 4.44382703557933 4.86753445045558 6.93439720992856 2.73436750941958 3.75887182593397 4.21803603456465 +erk 4.13676527810605 3.65065824129374 2.13179677201376 1.33236601909433 2.02419306744936 4.96284463025991 5.35185813347607 6.77308037565554 3.39114704580865 3.88567903008854 2.68102152871429 +erk 3.9759363311718 3.41772668361337 1.26694760348732 2.23108909128898 2.72785282839839 3.58905911883173 4.46129981556839 7.6182510978767 3.48124008933569 4.3528552573736 3.14845336057165 +erk 4.26267987704132 3.16547504814109 2.54160199346455 1.19694818938897 2.50143595173921 2.16791018966744 2.86220088092947 6.30444880242198 2.50143595173921 3.39114704580865 2.18605127673809 +erk 5.13579843705026 3.77734810210154 0.62057648772511 0.667829372575655 1.10525683138678 3.53514535417189 4.39814601655377 4.20916023665068 3.75887182593397 4.52396013056255 4.15575319035074 +erk 4.11087386417331 2.70136121295141 1.19694818938897 0.928219302739429 3.09557760852371 2.97552956623647 3.86702563949741 5.46806014113513 0.982078472412158 2.92316158071916 2.61739583283408 +erk 4.34380542185368 2.87919845729804 0 1.6467336971778 0.582215619852664 3.66867674679642 4.24563400976833 7.0335064842877 0.86288995514704 2.96010509591084 4.04830062372069 +erk 3.11351530921037 3.11351530921037 2.35137525716348 0.982078472412158 2.60268968544438 2.34180580614733 3.26575941076705 6.10702288774225 2.61739583283408 3.16547504814109 1.99741770620125 +erk 4.20020495292158 3.32862668882732 1.41098697371026 0 2.86220088092947 2.89591193827178 3.3357695763397 6.01615715969835 1.63705307946707 2.41591377830105 4.46129981556839 +erk 2.50143595173921 2.34180580614733 1.97823903617067 0.231111720963387 2.42480272571829 2.16791018966744 3.41772668361337 5.18738580584075 3.10458667846607 3.75887182593397 2.79116510781272 +erk 4.30000279919529 2.9391619220656 1.30291275218084 0.307484699747961 2.9338568698359 2.05923883436232 2.80336038090653 6.07073772800249 0 2.24812890719799 1.59127394180643 +erk 4.58700621536042 3.4626060097908 2.52572864430826 1.05082162483176 3.06805293513362 2.4932054526027 3.6609942506244 3.58073729549423 3.67882911826043 4.56954300834494 3.53514535417189 +erk 2.35137525716348 2.61006979274201 0.845868267577609 0.00995033085316809 2.31253542384721 2.7408400239252 3.56953269648137 5.99146454710798 3.23867845216438 3.85862222870103 3.23867845216438 +erk 4.41642806139121 3.40119738166216 2.28442112236637 1.65441127807683 3.16547504814109 2.07819075977818 3.02042488614436 6.41345895716736 2.77258872223978 3.75887182593397 3.14845336057165 +erk 2.52572864430826 2.66025953726586 0 0.00995033085316809 1.03318448334565 3.71357206670431 4.11903717481247 5.73979291217923 2.56494935746154 3.44361809754611 2.75366071235426 +erk 4.17284762371004 3.52636052461616 0.837247524533702 0.371563556432483 2.94968833505258 2.01490302054226 2.77258872223978 5.99146454710798 1.2947271675944 3.16547504814109 4.13676527810605 +erk 2.90690105984738 2.7408400239252 1.11514159061932 1.51072193949494 3.24649099190117 3.40784192438082 4.03777421073371 7.3038432252777 3.37416870927424 4.24563400976833 3.29212628660779 +erk 4.04830062372069 3.51749783735832 0 1.04380405217311 2.18605127673809 4.38077585277223 5.03043792139244 7.10578612948127 1.82616089594539 2.56494935746154 1.6467336971778 +erk 4.0926765051214 3.56104608260405 2.15871472257434 0.285178942233662 2.70136121295141 1.9154509415706 3.38099467434464 2.484906649788 2.64617479738412 3.60549784517489 2.58776403522771 +erk 3.90399083373088 2.72785282839839 0.3293037471426 0.00995033085316809 3.35340671782581 3.21084365317094 4.26267987704132 7.6182510978767 2.27521389619791 3.13983261752775 3.29212628660779 +erk 2.88480071284671 2.89591193827178 1.41098697371026 0 3.03974915897077 3.18221184049661 3.58073729549423 5.71042701737487 2.9391619220656 3.69635146895264 2.60268968544438 +erk 4.24563400976833 3.4904285153901 1.28647402583768 0.518793793415168 2.32238772029023 2.47653840011748 3.27336401015227 6.05443934626937 0.657520002916794 3.03013370027132 3.7864597824528 +erk 3.69635146895264 3.26575941076705 1.89761985992753 0 2.52572864430826 2.41591377830105 3.79548918917219 6.66440902035041 2.91235066461494 3.51749783735832 2.52572864430826 +erk 4.38077585277223 3.32862668882732 1.35840915763035 0 2.62466859216316 3.90399083373088 4.93447393313069 7.04228617193974 2.61006979274201 3.41772668361337 2.08691355651854 +erk 4.54223038621422 3.53514535417189 0 0 2.04122032885964 2.1770218700187 3.19458313229916 6.44888939414686 1.7263316639056 2.4932054526027 4.74493212836325 +erk 4.66343909411207 3.29212628660779 1.83418018511201 1.16938135955632 1.5830939370945 2.51769647261099 3.6163087612791 6.24222326545517 3.23867845216438 3.66867674679642 2.24812890719799 +erk 1.96009478404727 3.07731226054641 1.50185270175416 1.08856195281461 2.91235066461494 3.08648663682246 4.61512051684126 7.11476944836646 3.11351530921037 3.88567903008854 3.54385368206368 +erk 4.04830062372069 3.39114704580865 0.703097511413113 1.05082162483176 2.7408400239252 2.484906649788 3.06805293513362 5.55682806169954 2.40694510831829 3.09557760852371 2.40694510831829 +erk 4.21803603456465 3.9759363311718 1.57484646766448 1.55603713570699 1.68268837417369 4.14630430115281 4.71849887129509 7.3038432252777 3.67882911826043 4.18205014264121 3.39114704580865 +erk 2.64617479738412 3.51749783735832 0.357674444271816 0 2.82137888640921 3.51749783735832 4.05698877567833 6.01615715969835 1.99741770620125 3.19458313229916 2.00552585872967 +erk 4.02891675689965 3.26575941076705 1.92424865227413 1.17865499634165 2.58021682959233 4.22683374526818 4.79579054559674 6.4393503711001 3.3357695763397 4.30000279919529 3.82209829790016 +erk 4.53367418428302 3.41772668361337 0.542324290825362 0 2.80336038090653 1.90657514365664 3.52636052461616 6.57507584059962 3.92197333628131 4.67282883446191 4.0926765051214 +erk 3.91202300542815 3.43720781918519 0.62057648772511 0.582215619852664 2.03339760317843 2.94968833505258 3.49953328238302 5.58724865840025 1.20597080698861 3.04927304048202 4.02891675689965 +erk 3.73289633953071 3.13983261752775 0 0.0582689081239758 2.4932054526027 3.02042488614436 3.49953328238302 5.67675380226828 3.56104608260405 4.20020495292158 3.25424296870549 +erk 5.13579843705026 4.95582705760126 3.2846635654062 5.13579843705026 3.66867674679642 3.66867674679642 4.3267781604434 6.77308037565554 2.37024374146786 2.99573227355399 2.25758772706331 +erk 4.11903717481247 3.62434093297637 1.56444054650336 0.810930216216329 2.9338568698359 3.05870707271538 3.41772668361337 5.61312810638807 2.41591377830105 2.83321334405622 1.80828877117927 +erk 4.68213122712422 3.8308129500026 1.77155676191054 0 2.25758772706331 3.27336401015227 3.36384159511839 5.75574221358691 3.58905911883173 4.22683374526818 4.00186370942794 +erk 4.38949864951258 2.92316158071916 0.828551817566148 0.56531380905006 2.13179677201376 3.23080439573347 3.90399083373088 5.74620319054015 3.44361809754611 4.33598269617247 2.28442112236637 +erk 2.36085400111802 2.86220088092947 0.451075619360217 0.609765571620894 2.65324196460721 2.71469474382088 3.88567903008854 7.32118855673948 3.4626060097908 4.04830062372069 2.21266038546606 +erk 4.26267987704132 3.11351530921037 2.37024374146786 0.425267735404344 3.44361809754611 2.77881927199042 3.55248682920838 6.06145691892802 1.20597080698861 2.2213750375685 1.79009141212736 +erk 2.81540871942271 2.58776403522771 1.90657514365664 0 2.05027016437956 3.13113691056019 3.65065824129374 5.99893656194668 0.576613364303994 1.22377543162212 1.81645208181843 +erk 5.08140436498446 3.74242022104197 1.78170913337455 0.559615787935423 0.398776119957368 1.98787434815435 2.73436750941958 6.62007320653036 2.86220088092947 3.44361809754611 3.01553490085017 +erk 4.11903717481247 3.23867845216438 1.81645208181843 0.900161349944271 2.58776403522771 3.53514535417189 4.03777421073371 5.89989735358249 0.928219302739429 2.84490938381941 4.00186370942794 +erk 3.4626060097908 3.16547504814109 0.22314355131421 0.53062825106217 2.91235066461494 3.66867674679642 4.11903717481247 6.40357419793482 3.02042488614436 3.65065824129374 2.77258872223978 +erk 2.9704144655697 2.00552585872967 0.343589704390077 0.122217632724249 2.56494935746154 3.15700042115011 3.76815263500844 5.95324333428778 3.26575941076705 3.95699637107088 3.58905911883173 +erk 3.92197333628131 2.97552956623647 1.21491274436427 1.73518911773966 0.657520002916794 3.03013370027132 3.60549784517489 6.06145691892802 2.86220088092947 3.73289633953071 2.35137525716348 +erk 3.72328088083127 2.90690105984738 1.30291275218084 1.44926916028128 2.86220088092947 3.00568260440716 3.38099467434464 5.95324333428778 3.40119738166216 4.13676527810605 3.40784192438082 +erk 3.92197333628131 3.05870707271538 1.43031124653666 1.12492959698548 2.77881927199042 2.63188884013665 3.45315712059287 6.22455842927536 2.83321334405622 3.59731226058845 2.66025953726586 +erk 3.58905911883173 3.4626060097908 0.207014169384326 2.16791018966744 2.2213750375685 2.09556092355972 3.18221184049661 5.87211778947542 3.2188758248682 4.06560209335645 3.4626060097908 +erk 4.46129981556839 3.56104608260405 1.5830939370945 0.647103242058538 0.431782416425538 4.45201900649392 5.21493575760899 7.09672137849476 2.00552585872967 3.40119738166216 4.67282883446191 +erk 4.52396013056255 4.14630430115281 1.25846098961001 1.20597080698861 2.9704144655697 2.41591377830105 3.43720781918519 6.12468339089421 2.98568193770049 3.38099467434464 2.4932054526027 +erk 3.60549784517489 2.88480071284671 0.908258560176891 1.42069578783722 2.55722731136763 3.66867674679642 4.14630430115281 6.75460409948796 3.3357695763397 3.8416005411316 1.90657514365664 +erk 4.27249074760558 3.08648663682246 0.819779831493311 1.61938824328727 2.39789527279837 3.29212628660779 3.85862222870103 5.8111409929767 3.63495111208838 4.23700086262362 3.01553490085017 +erk 4.38949864951258 3.4626060097908 2.1770218700187 0 2.65324196460721 3.03974915897077 3.59731226058845 6.07073772800249 3.63495111208838 4.12874598893943 2.79728133483015 +erk 2.61006979274201 3.70622809244855 0.765467842139571 1.62727783056243 2.61739583283408 2.97552956623647 3.43720781918519 5.54907608489522 3.19458313229916 3.72328088083127 3.32862668882732 +erk 4.01998014693324 3.45315712059287 1.9154509415706 5.52146091786225 4.40671924726425 2.03339760317843 2.89591193827178 6.24222326545517 3.10458667846607 3.73289633953071 2.68784749378469 +erk 3.16547504814109 2.68784749378469 0.19062035960865 0.908258560176891 0 2.07819075977818 2.98568193770049 6.18826412308259 3.27336401015227 4.06560209335645 3.13983261752775 +erk 4.07414185490458 2.85070650150373 1.66392609771817 0 0.0953101798043249 3.8416005411316 3.98527346716774 5.55682806169954 3.32862668882732 4.38949864951258 5.21493575760899 +erk 3.60549784517489 2.64617479738412 1.94304891677428 0 2.11384296839717 2.66025953726586 3.59731226058845 6.21460809842219 3.9759363311718 4.61512051684126 4.3528552573736 +erk 4.21803603456465 2.98568193770049 0.285178942233662 0 1.66392609771817 3.01553490085017 3.48124008933569 5.72031177660741 3.53514535417189 4.06560209335645 3.04927304048202 +erk 3.85862222870103 3.2188758248682 0.00995033085316809 0.765467842139571 3.54385368206368 3.36384159511839 4.11087386417331 7.48324441607385 2.82137888640921 3.49953328238302 3.32862668882732 +erk 2.40694510831829 2.62466859216316 2.68784749378469 1.62727783056243 2.24812890719799 3.7864597824528 4.46129981556839 6.58340922215876 3.27336401015227 4.43438186500781 3.88567903008854 +erk 4.04830062372069 2.88480071284671 1.87946504964716 0 2.65324196460721 2.40694510831829 3.40784192438082 6.50279004591562 2.86789890204411 3.7864597824528 3.42751468997953 +erk 4.17284762371004 3.2846635654062 0 0 3.12236492448736 3.70622809244855 4.29045944114839 7.6275443904885 1.01523067972906 2.61739583283408 3.86702563949741 +erk 4.21803603456465 3.67882911826043 2.7408400239252 1.88858365386359 2.86220088092947 2.9338568698359 3.75185425327532 2.89591193827178 3.63495111208838 4.46129981556839 3.58073729549423 +erk 4.34380542185368 3.41772668361337 1.50185270175416 0.900161349944271 2.90690105984738 3.20274644293832 3.73289633953071 5.71042701737487 2.56494935746154 2.9338568698359 3.92986292355648 +erk 4.5152454784601 3.42751468997953 2.03339760317843 1.78170913337455 2.31253542384721 1.84371920815877 2.35137525716348 5.7037824746562 1.870262530716 2.61739583283408 4.02891675689965 +erk 2.10413415427021 2.50143595173921 0.457424847038875 1.77155676191054 2.41591377830105 2.42480272571829 2.94968833505258 5.79301360838414 1.07840958135059 2.50959926237837 3.24649099190117 +erk 4.24563400976833 3.21084365317094 0 0.989541193613748 2.88480071284671 3.37416870927424 4.11903717481247 7.0335064842877 3.04927304048202 3.47196645255036 2.86220088092947 +erk 3.63495111208838 2.9704144655697 0 1.07840958135059 1.8531680973567 4.54223038621422 5.12396397940326 6.49375383985169 1.57484646766448 3.15700042115011 4.24563400976833 +erk 2.12226153886276 2.56494935746154 1.7630170003624 0 3.47196645255036 3.21084365317094 3.64283551561253 5.73009978297357 0.989541193613748 2.27521389619791 3.3178157727231 +erk 5.08140436498446 4.72738781871234 1.34025042261848 0.746687947487975 2.88480071284671 3.35340671782581 4.17284762371004 6.25958146406492 2.86789890204411 3.74242022104197 2.61006979274201 +erk 3.7864597824528 3.29212628660779 2.10413415427021 0 2.37954613413017 1.44926916028128 3.00568260440716 6.50279004591562 3.16547504814109 4.31748811353631 2.79116510781272 +erk 4.16511363311031 3.25424296870549 1.75440368268429 1.28647402583768 2.92316158071916 2.34180580614733 3.68887945411394 6.7093043402583 3.03013370027132 3.69635146895264 2.56494935746154 +erk 4.00186370942794 2.46809953147162 1.43031124653666 0 3.43720781918519 4.20020495292158 5.03695260241363 7.56423847517049 3.03013370027132 4.04830062372069 3.17387845893747 +erk 4.0842942263686 3.58905911883173 2.24812890719799 1.86252854011626 2.25758772706331 4.37071287477361 4.97673374242057 6.82654522355659 3.48124008933569 4.20020495292158 3.60549784517489 +erk 4.47960696301275 3.52636052461616 0 5.11799381241676 3.56104608260405 2.98568193770049 3.73289633953071 5.48479693349065 0.494696241836107 2.50143595173921 3.75887182593397 +erk 4.02891675689965 3.86702563949741 2.02419306744936 1.2947271675944 2.14943391349987 1.708377860289 2.3887627892351 5.11799381241676 3.58905911883173 4.23700086262362 3.07731226054641 +erk 3.3178157727231 3.05870707271538 1.44926916028128 0.631271776841858 2.47653840011748 2.23964529322017 2.97552956623647 6.71901315438526 1.75440368268429 2.61006979274201 4.36182392735636 +erk 4.36182392735636 3.45315712059287 1.870262530716 1.23256026117785 1.02604159583327 2.3887627892351 3.2188758248682 6.02586597382531 2.45958884180371 3.53514535417189 4.29045944114839 +erk 4.254193263164 3.68887945411394 0.943905898907128 0.500775287912489 1.23256026117785 3.15700042115011 3.75887182593397 5.97126183979046 0.871293365943419 2.43361335540045 3.76815263500844 +erk 4.38949864951258 3.40119738166216 2.9338568698359 0.500775287912489 2.73436750941958 2.98568193770049 4.00186370942794 5.63835466933375 3.06805293513362 3.71357206670431 2.63188884013665 +erk 4.47960696301275 3.62434093297637 1.98787434815435 0.451075619360217 0.582215619852664 4.27249074760558 5.2257466737132 7.08757370555797 3.34638914516716 3.79548918917219 2.7408400239252 +erk 3.77734810210154 3.6163087612791 1.68268837417369 0.819779831493311 2.10413415427021 1.80828877117927 2.62466859216316 6.34035930372775 2.4423470353692 3.56953269648137 2.58021682959233 +erk 4.89034912822175 4.62497281328427 1.90657514365664 0.00995033085316809 2.21266038546606 4.37071287477361 4.93447393313069 6.62007320653036 0.60431596685333 3.43720781918519 4.57779898919196 +erk 2.65324196460721 3.23867845216438 2.10413415427021 0.00995033085316809 3.12236492448736 4.05698877567833 4.47049528266149 6.93439720992856 2.68784749378469 3.63495111208838 1.79840401194672 +erk 4.02891675689965 3.21084365317094 1.32175583998232 1.61938824328727 2.3887627892351 2.54160199346455 3.40784192438082 5.43372200355424 1.53901544813755 2.70136121295141 4.18205014264121 +erk 4.5152454784601 3.11351530921037 0 0.828551817566148 2.06812778177956 1.75440368268429 2.62466859216316 6.77308037565554 2.92316158071916 3.51749783735832 2.50143595173921 +erk 4.254193263164 3.4626060097908 1.88858365386359 0 2.484906649788 3.81330703248899 4.61512051684126 7.69028602067677 2.45958884180371 3.3178157727231 2.77881927199042 +erk 4.77068462446567 4.0926765051214 2.24812890719799 1.07840958135059 1.90657514365664 2.9391619220656 4.0842942263686 6.53958595561767 3.50855589998265 3.94931879017184 3.4626060097908 +erk 4.01096295328305 3.09557760852371 0.104360015324243 0 0.854415328156068 2.91235066461494 3.92986292355648 5.96357934361845 2.11384296839717 3.73289633953071 4.47049528266149 +erk 4.10098910494077 4.04830062372069 1.97823903617067 0 2.13179677201376 4.53367418428302 5.10594547390058 7.57353126274595 1.6094379124341 2.81540871942271 4.36182392735636 +erk 4.28082412916472 3.09557760852371 1.26694760348732 0.00995033085316809 2.56494935746154 2.33214389523559 3.23867845216438 5.8111409929767 1.43031124653666 3.04927304048202 4.42484663185681 +erk 4.07414185490458 3.58073729549423 1.04380405217311 1.99741770620125 2.77258872223978 3.13113691056019 3.48124008933569 5.68357976733868 3.00568260440716 3.68887945411394 2.4423470353692 +erk 4.79579054559674 3.6609942506244 2.73436750941958 3.23080439573347 3.20274644293832 3.3178157727231 3.82209829790016 5.84643877505772 2.76000994003292 3.69635146895264 2.57261223020711 +erk 4.88280192258637 4.01096295328305 2.83321334405622 1.9154509415706 2.58776403522771 2.23964529322017 3.25424296870549 6.25958146406492 3.24649099190117 4.07414185490458 3.32862668882732 +erk 4.70953020131233 3.59731226058845 1.94304891677428 0 2.72785282839839 3.34638914516716 3.9926809084456 5.35185813347607 1.53901544813755 3.51749783735832 4.60517018598809 +erk 2.42480272571829 3.05870707271538 0.431782416425538 0 2.77881927199042 4.16511363311031 4.78749174278205 6.42162226780652 2.9391619220656 3.6163087612791 3.15700042115011 +erk 4.00186370942794 2.77881927199042 1.62727783056243 1.61938824328727 3.11351530921037 2.03339760317843 2.90690105984738 6.21460809842219 3.19458313229916 3.75185425327532 2.40694510831829 +erk 4.49758497530815 3.64283551561253 2.54160199346455 0.970778917158225 2.89591193827178 3.05870707271538 3.85014760171006 5.76519110278484 2.51769647261099 3.08648663682246 2.50959926237837 +erk 4.37071287477361 2.80336038090653 1.80828877117927 0.494696241836107 2.7408400239252 2.07819075977818 3.38099467434464 5.95324333428778 3.47196645255036 4.21803603456465 3.07731226054641 +erk 4.18205014264121 3.59731226058845 1.02604159583327 0.657520002916794 2.77881927199042 3.2846635654062 3.71357206670431 5.66642668811243 0.53062825106217 2.76000994003292 4.05698877567833 +erk 5.79301360838414 5.84643877505772 0 0 3.14845336057165 2.63188884013665 3.64283551561253 5.6021188208797 3.72328088083127 4.36182392735636 2.98568193770049 +erk 4.50645421304893 3.24649099190117 1.99741770620125 0 3.23080439573347 1.99741770620125 3.03013370027132 5.93753620508243 3.37416870927424 4.26267987704132 4.77068462446567 +erk 4.77912349311153 4.33598269617247 1.95160817016995 0.774727167552368 2.19499988231411 3.21084365317094 3.71357206670431 5.83773044716594 2.01490302054226 3.9926809084456 3.88567903008854 +erk 4.21803603456465 3.26575941076705 0.89199803930511 0 2.79116510781272 3.52636052461616 4.30811095172371 6.38687931936265 3.09557760852371 3.75887182593397 1.80828877117927 +erk 4.02891675689965 2.19499988231411 2.18605127673809 1.63705307946707 3.56104608260405 2.87919845729804 4.10098910494077 7.22256601882217 3.25424296870549 3.62434093297637 2.39789527279837 +erk 3.23867845216438 2.82137888640921 2.36085400111802 0.00995033085316809 2.46809953147162 3.87743156065853 4.76217393479776 6.11589212548303 3.69635146895264 4.31748811353631 4.15575319035074 +erk 3.85014760171006 4.42484663185681 2.1770218700187 0.951657875711446 1.30291275218084 3.19458313229916 3.68887945411394 5.4249500174814 3.18221184049661 3.41772668361337 2.68102152871429 +erk 3.58905911883173 2.81540871942271 1.90657514365664 1.34807314829969 2.9391619220656 3.54385368206368 4.04830062372069 6.44888939414686 0.989541193613748 3.2188758248682 4.5152454784601 +erk 4.12874598893943 3.60549784517489 2.37954613413017 0.774727167552368 2.65324196460721 2.70805020110221 3.48124008933569 5.94542060860658 3.07731226054641 3.75185425327532 3.13983261752775 +erk 3.4904285153901 3.12236492448736 2.15871472257434 0.451075619360217 2.90690105984738 3.73289633953071 3.95699637107088 5.85507192220243 2.91235066461494 3.71357206670431 3.12236492448736 +erk 3.47196645255036 2.77258872223978 0.636576829071551 0 3.10458667846607 2.20386912005489 3.14845336057165 5.99893656194668 1.7630170003624 3.05870707271538 4.13676527810605 +erk 4.70048036579242 3.9759363311718 1.35840915763035 0 2.66025953726586 2.52572864430826 3.49953328238302 5.67675380226828 3.4626060097908 4.3267781604434 4.23700086262362 +erk 4.7361984483945 5.05624580534831 2.68784749378469 1.09861228866811 3.54385368206368 2.23108909128898 2.80336038090653 6.25958146406492 2.91235066461494 3.75185425327532 2.73436750941958 +erk 3.73289633953071 2.9338568698359 2.9338568698359 2.00552585872967 3.23080439573347 2.37024374146786 2.97552956623647 6.06145691892802 3.05870707271538 4.01096295328305 2.89591193827178 +erk 4.62497281328427 3.27336401015227 2.09556092355972 0.0769610411361284 2.97552956623647 3.93963817246112 4.48863636973214 6.88959130835447 3.70622809244855 4.52396013056255 4.00186370942794 +erk 4.53367418428302 3.29953372788566 1.33236601909433 0.559615787935423 3.03974915897077 2.83321334405622 3.39114704580865 6.36818718635049 3.56953269648137 4.11087386417331 3.47196645255036 +erk 4.66343909411207 3.17387845893747 2.16791018966744 0.165514438477573 3.3357695763397 2.14124194258528 3.29212628660779 6.57507584059962 2.87919845729804 3.48124008933569 2.65324196460721 +erk 4.3267781604434 3.4626060097908 1.59127394180643 1.60140574073684 2.9338568698359 3.6163087612791 4.20020495292158 6.41345895716736 3.18221184049661 4.07414185490458 3.77734810210154 +erk 4.81218435537242 4.254193263164 2.20386912005489 0.00995033085316809 2.64617479738412 3.24649099190117 3.85862222870103 5.47646355193151 3.01553490085017 3.80443779474821 3.19458313229916 +erk 3.85014760171006 3.27336401015227 0.582215619852664 0.0198026272961797 3.24649099190117 3.58905911883173 4.44382703557933 7.38461038317697 3.38099467434464 4.07414185490458 3.05870707271538 +erk 4.254193263164 3.85862222870103 1.21491274436427 0.207014169384326 2.61739583283408 2.60268968544438 3.01553490085017 6.43133108193348 3.40119738166216 4.27249074760558 4.93447393313069 +erk 4.10098910494077 2.68102152871429 1.26694760348732 0.451075619360217 1.39376637595859 1.79840401194672 1.95160817016995 3.35340671782581 2.72785282839839 3.45315712059287 2.10413415427021 +erk 4.61512051684126 3.48124008933569 2.23964529322017 0.254642218373581 2.63188884013665 2.62466859216316 3.72328088083127 6.16961073249146 3.19458313229916 3.98527346716774 4.56954300834494 +erk 4.41642806139121 3.17387845893747 2.30258509299405 1.96990565461153 2.62466859216316 3.4904285153901 3.68887945411394 5.37063802812766 1.17865499634165 2.58776403522771 4.34380542185368 +erk 4.45201900649392 3.40119738166216 2.4423470353692 0 2.47653840011748 2.18605127673809 3.03974915897077 6.34035930372775 2.9704144655697 3.62434093297637 1.51951320490611 +erk 3.02042488614436 2.88480071284671 0 1.57484646766448 3.27336401015227 2.53369681395743 2.98568193770049 5.91889385427315 2.4932054526027 3.53514535417189 2.67414864942653 +erk 2.89591193827178 3.17387845893747 1.24990173621434 0.00995033085316809 2.11384296839717 2.9704144655697 3.8308129500026 6.03548143252476 1.92424865227413 3.24649099190117 4.42484663185681 +erk 4.47960696301275 3.29953372788566 2.50143595173921 0.00995033085316809 1.27815220250019 3.02042488614436 3.39114704580865 5.97126183979046 2.77881927199042 3.73289633953071 2.89591193827178 +erk 4.63472898822964 3.7864597824528 1.25846098961001 0.322083499169113 2.97552956623647 2.35137525716348 3.01553490085017 5.98141421125448 2.7408400239252 3.58905911883173 3.4904285153901 +erk 3.49953328238302 2.85070650150373 1.708377860289 1.30291275218084 1.92424865227413 1.73518911773966 3.55248682920838 6.19644412779452 3.03013370027132 3.51749783735832 3.07731226054641 +erk 2.35137525716348 3.17387845893747 1.20597080698861 1.05082162483176 3.27336401015227 1.7263316639056 3.34638914516716 6.65544035036765 3.23080439573347 4.07414185490458 3.4626060097908 +erk 4.3528552573736 3.37416870927424 0.00995033085316809 0.182321556793955 2.68784749378469 2.1770218700187 3.47196645255036 6.25958146406492 2.52572864430826 3.44361809754611 4.88280192258637 +erk 3.95699637107088 3.38099467434464 1.14103300455206 0.207014169384326 0.657520002916794 3.94931879017184 4.99043258677874 6.84481547920826 2.47653840011748 3.19458313229916 2.484906649788 +erk 3.74242022104197 3.63495111208838 1.00795792039998 0.00995033085316809 3.50855589998265 2.72785282839839 3.32862668882732 6.39526159811545 3.09557760852371 3.98527346716774 2.72785282839839 +erk 4.26267987704132 3.42751468997953 2.13179677201376 1.39376637595859 2.71469474382088 2.52572864430826 3.56953269648137 5.0998664278242 1.11514159061932 2.9391619220656 4.48863636973214 +erk 3.98527346716774 3.64283551561253 2.13179677201376 0 3.21084365317094 3.09557760852371 3.82209829790016 5.54907608489522 2.05027016437956 1.59127394180643 4.12874598893943 +erk 4.34380542185368 3.55248682920838 0.385262400790645 0.518793793415168 2.94968833505258 3.55248682920838 4.14630430115281 7.3038432252777 3.96651119071222 4.45201900649392 3.42751468997953 +erk 2.65324196460721 2.52572864430826 2.27521389619791 0.00995033085316809 2.60268968544438 3.07731226054641 3.94931879017184 5.76519110278484 0 3.86702563949741 1.41098697371026 +erk 3.53514535417189 3.07731226054641 2.35137525716348 0.300104592450338 2.67414864942653 3.03974915897077 3.48124008933569 5.57594910314632 1.52822785700856 3.02042488614436 3.92197333628131 +erk 4.3528552573736 3.76815263500844 1.708377860289 0 1.31372366828506 3.13113691056019 3.71357206670431 5.47646355193151 2.75366071235426 3.59731226058845 2.05923883436232 +erk 4.20020495292158 3.74242022104197 2.15871472257434 1.2947271675944 2.58776403522771 2.96010509591084 4.27249074760558 6.53958595561767 2.9338568698359 3.85862222870103 2.3887627892351 +erk 4.21803603456465 3.42751468997953 1.90657514365664 0.198850858745165 2.85070650150373 4.13676527810605 4.64439089914137 6.30444880242198 0.542324290825362 3.75887182593397 1.19694818938897 +erk 4.13676527810605 2.66025953726586 1.07158361628019 1.13462272619114 2.2213750375685 2.86220088092947 3.55248682920838 6.35957386867238 2.72785282839839 3.74242022104197 2.25758772706331 +erk 4.10098910494077 2.98568193770049 0 0.667829372575655 3.55248682920838 1.56444054650336 3.04927304048202 6.53958595561767 3.50855589998265 4.42484663185681 3.40784192438082 +erk 4.41642806139121 3.62434093297637 0 1.98787434815435 0.113328685307003 2.72785282839839 3.20274644293832 5.98141421125448 2.70136121295141 3.55248682920838 2.19499988231411 +erk 4.38077585277223 4.17284762371004 1.88858365386359 0.00995033085316809 0 2.99573227355399 3.49953328238302 5.8111409929767 2.45958884180371 3.18221184049661 1.88858365386359 +erk 4.3528552573736 3.56104608260405 1.96990565461153 0 2.73436750941958 3.10458667846607 3.8416005411316 5.7037824746562 1.69009581545155 3.15700042115011 4.60517018598809 +erk 4.58700621536042 3.36384159511839 1.88858365386359 0 2.2935443483419 3.91202300542815 4.65396035015752 6.27852142416584 0.908258560176891 3.39114704580865 4.02891675689965 +erk 4.3267781604434 3.17387845893747 0 0.494696241836107 3.29212628660779 2.96010509591084 3.55248682920838 5.73979291217923 3.08648663682246 3.71357206670431 2.77881927199042 +erk 4.20916023665068 3.29212628660779 2.15871472257434 2.2935443483419 3.11351530921037 3.50855589998265 4.62497281328427 6.60258789218934 4.12874598893943 4.70953020131233 4.11087386417331 +erk 4.43438186500781 3.86702563949741 2.70136121295141 3.88567903008854 3.53514535417189 3.29212628660779 3.65065824129374 5.58724865840025 3.19458313229916 4.06560209335645 3.75185425327532 +erk 4.49758497530815 3.08648663682246 2.60268968544438 0.837247524533702 3.11351530921037 2.79116510781272 4.07414185490458 7.70841066725737 3.06805293513362 3.88567903008854 3.02042488614436 +erk 4.5152454784601 3.2846635654062 0.322083499169113 0.871293365943419 2.57261223020711 2.84490938381941 3.48124008933569 5.2257466737132 2.76000994003292 3.91202300542815 2.91235066461494 +erk 4.19116874685764 3.2188758248682 1.88858365386359 1.04380405217311 2.06812778177956 2.39789527279837 3.48124008933569 5.6937321388027 3.52636052461616 4.254193263164 3.85862222870103 +erk 4.27249074760558 3.9759363311718 1.45628673293993 1.80828877117927 3.88567903008854 2.50959926237837 3.23867845216438 5.82008293035236 2.73436750941958 3.54385368206368 2.2213750375685 +erk 5.13579843705026 3.73289633953071 1.708377860289 0.343589704390077 3.17387845893747 3.18221184049661 3.63495111208838 5.65599181081985 0.3293037471426 3.40784192438082 1.51072193949494 +erk 3.6163087612791 2.88480071284671 2.3887627892351 0 3.14845336057165 3.31054301339402 3.79548918917219 5.74620319054015 1.62727783056243 2.9338568698359 3.91202300542815 +erk 4.24563400976833 3.38099467434464 2.12226153886276 0.3293037471426 3.03013370027132 1.32175583998232 2.08691355651854 5.71042701737487 3.02042488614436 3.8416005411316 2.23964529322017 +erk 3.91202300542815 3.23867845216438 0.712949807856125 4.28082412916472 3.36384159511839 3.43720781918519 4.15575319035074 7.51914995766982 3.02042488614436 3.52636052461616 1.96009478404727 +erk 4.30811095172371 3.56953269648137 1.74571553072665 1.25846098961001 2.87919845729804 2.92316158071916 3.4904285153901 5.4971682252932 1.79009141212736 3.16547504814109 4.70953020131233 +erk 4.38077585277223 4.07414185490458 2.07819075977818 0.970778917158225 1.20597080698861 2.36085400111802 3.17387845893747 5.97126183979046 3.86702563949741 4.23700086262362 3.56953269648137 +erk 4.29045944114839 3.39114704580865 1.78170913337455 1.45628673293993 2.50959926237837 2.61006979274201 4.97673374242057 5.03695260241363 3.16547504814109 3.88567903008854 2.7408400239252 +erk 3.66867674679642 2.99573227355399 1.09861228866811 1.18784342239605 2.9338568698359 3.41772668361337 4.18205014264121 7.4205789054108 3.60549784517489 4.47049528266149 4.52396013056255 +erk 4.70953020131233 4.67282883446191 1.51072193949494 1.68268837417369 2.20386912005489 2.50959926237837 3.00568260440716 5.76519110278484 0.854415328156068 4.65396035015752 1.66392609771817 +erk 3.92986292355648 3.40119738166216 2.4932054526027 0.582215619852664 3.07731226054641 0.494696241836107 2.99573227355399 6.64639051484773 3.37416870927424 4.20020495292158 2.9338568698359 +erk 3.27336401015227 3.23867845216438 2.36085400111802 1.18784342239605 3.60549784517489 3.2188758248682 3.73289633953071 5.67675380226828 2.79116510781272 3.67882911826043 2.73436750941958 +erk 4.49758497530815 4.05698877567833 1.54756250871601 0.139761942375159 2.89591193827178 3.11351530921037 3.69635146895264 5.6021188208797 2.37954613413017 3.09557760852371 2.24812890719799 +erk 4.36182392735636 3.77734810210154 1.32175583998232 1.54756250871601 2.45958884180371 2.84490938381941 3.4626060097908 5.35185813347607 4.30811095172371 4.71849887129509 3.36384159511839 +erk 3.98527346716774 2.86220088092947 1.57484646766448 0.00995033085316809 1.38629436111989 3.72328088083127 4.26267987704132 7.08757370555797 1.63705307946707 2.81540871942271 4.26267987704132 +erk 2.02419306744936 3.47196645255036 2.13179677201376 0.00995033085316809 2.01490302054226 2.64617479738412 3.41772668361337 5.72031177660741 3.53514535417189 4.15575319035074 2.70136121295141 +erk 3.03974915897077 3.16547504814109 2.47653840011748 1.43983512804792 3.21084365317094 4.47049528266149 5.08140436498446 6.52941883826223 2.36085400111802 3.23867845216438 2.65324196460721 +erk 4.3267781604434 3.17387845893747 1.86252854011626 0 2.99573227355399 2.75366071235426 3.52636052461616 6.16120732169508 3.19458313229916 4.01096295328305 3.04927304048202 +erk 4.19116874685764 3.55248682920838 2.75366071235426 1.89761985992753 2.9338568698359 2.70136121295141 3.45315712059287 5.63835466933375 1.60140574073684 3.34638914516716 4.49758497530815 +erk 3.93963817246112 2.89591193827178 2.21266038546606 0 1.90657514365664 3.21084365317094 3.94931879017184 5.82008293035236 3.21084365317094 4.254193263164 4.0926765051214 +erk 4.86753445045558 3.89385903480047 2.58776403522771 1.82616089594539 1.33236601909433 3.76815263500844 4.37071287477361 6.64639051484773 1.02604159583327 2.84490938381941 4.18205014264121 +erk 4.88280192258637 4.34380542185368 0.783901543828409 0.476234178996372 1.708377860289 1.93441576962958 2.98568193770049 5.93753620508243 2.68102152871429 3.52636052461616 2.66025953726586 +erk 4.12874598893943 2.68784749378469 1.57484646766448 0.3293037471426 2.32238772029023 3.26575941076705 3.76815263500844 6.25958146406492 3.08648663682246 3.35340671782581 2.4423470353692 +erk 2.57261223020711 2.36085400111802 1.92424865227413 1.07158361628019 1.61938824328727 3.16547504814109 3.69635146895264 5.82894561761021 1.51072193949494 3.16547504814109 4.70953020131233 +erk 3.98527346716774 3.26575941076705 1.62727783056243 0.0582689081239758 0 2.62466859216316 3.39114704580865 5.68357976733868 2.53369681395743 3.36384159511839 1.8531680973567 +erk 3.9926809084456 3.13983261752775 1.75440368268429 0.970778917158225 2.00552585872967 3.53514535417189 4.0926765051214 6.14418563412565 0.73716406597672 4.02891675689965 1.43983512804792 +erk 4.11087386417331 2.9391619220656 1.69009581545155 1.09861228866811 2.40694510831829 2.61006979274201 2.79116510781272 6.05443934626937 3.01553490085017 3.91202300542815 2.88480071284671 +erk 4.00186370942794 2.9391619220656 1.10525683138678 1.4747630091075 2.62466859216316 3.07731226054641 3.58073729549423 5.45958551414416 2.64617479738412 3.24649099190117 2.37954613413017 +erk 4.20020495292158 2.96010509591084 0.900161349944271 0.0582689081239758 3.23080439573347 2.37024374146786 3.58905911883173 6.04500531403601 2.46809953147162 3.24649099190117 2.2935443483419 +erk 4.3267781604434 3.37416870927424 0.756121979721334 0 2.92316158071916 2.35137525716348 2.66025953726586 5.62040086571715 4.06560209335645 4.45201900649392 3.40119738166216 +erk 3.95699637107088 2.71469474382088 2.4932054526027 1.708377860289 2.06812778177956 1.97823903617067 2.83321334405622 5.79301360838414 0.173953307123438 2.23964529322017 3.9759363311718 +erk 4.34380542185368 3.35340671782581 2.41591377830105 1.18784342239605 2.79728133483015 2.68102152871429 3.58073729549423 5.87211778947542 3.23080439573347 3.73289633953071 2.58776403522771 +erk 3.8308129500026 2.9338568698359 0 1.81645208181843 2.26695791535089 3.27336401015227 3.8416005411316 5.47646355193151 2.41591377830105 3.31054301339402 2.2935443483419 +erk 5.16478597392351 4.34380542185368 1.31372366828506 0.845868267577609 2.42480272571829 2.31253542384721 3.29212628660779 6.37672694789863 3.19458313229916 3.62434093297637 3.24649099190117 +erk 3.35340671782581 3.3178157727231 2.11384296839717 0 2.70136121295141 2.54160199346455 3.48124008933569 6.42162226780652 2.68102152871429 3.4626060097908 2.24812890719799 +erk 4.56954300834494 3.68887945411394 0 1.17865499634165 2.71469474382088 3.29953372788566 3.87743156065853 6.62936325343745 3.21084365317094 3.77734810210154 2.99573227355399 +erk 4.63472898822964 3.56104608260405 2.00552585872967 1.870262530716 2.99573227355399 3.8308129500026 4.47960696301275 6.4393503711001 0.548121408509688 4.3267781604434 1.20597080698861 +erk 1.89761985992753 2.55722731136763 0.765467842139571 2.07819075977818 2.84490938381941 2.45958884180371 3.89385903480047 6.24222326545517 1.53901544813755 3.18221184049661 4.14630430115281 +erk 2.58776403522771 3.00568260440716 2.10413415427021 0.774727167552368 3.07731226054641 1.86252854011626 3.34638914516716 3.15700042115011 2.50143595173921 3.16547504814109 1.98787434815435 +erk 4.97673374242057 3.9759363311718 2.04122032885964 0.3293037471426 0.609765571620894 3.92986292355648 4.72738781871234 6.73696695800186 3.10458667846607 3.7864597824528 4.16511363311031 +erk 2.67414864942653 3.03013370027132 0.322083499169113 1.7263316639056 3.29212628660779 3.21084365317094 3.65065824129374 5.64897423816121 4.06560209335645 5.08140436498446 3.69635146895264 +erk 4.57779898919196 3.58905911883173 0.56531380905006 0.746687947487975 3.05870707271538 0.837247524533702 3.11351530921037 6.05443934626937 1.24126858906963 3.52636052461616 4.56017282005736 +erk 2.92316158071916 2.87919845729804 0 0.00995033085316809 2.91235066461494 3.27336401015227 3.47196645255036 5.57594910314632 3.40784192438082 3.96651119071222 3.23080439573347 +erk 4.15575319035074 3.11351530921037 1.55603713570699 0.104360015324243 3.02042488614436 2.61739583283408 3.34638914516716 6.26909628370626 2.4423470353692 3.00568260440716 0.518793793415168 +erk 4.44382703557933 3.08648663682246 0.0769610411361284 0 2.01490302054226 2.16791018966744 2.9338568698359 5.87211778947542 1.7630170003624 2.88480071284671 4.63472898822964 +erk 4.23700086262362 2.79728133483015 1.79009141212736 0.19062035960865 2.61739583283408 2.68784749378469 3.52636052461616 5.63835466933375 0.819779831493311 2.98568193770049 4.42484663185681 +erk 4.37071287477361 3.72328088083127 0 0.542324290825362 2.05027016437956 1.94304891677428 3.12236492448736 6.40357419793482 2.65324196460721 3.2188758248682 2.68102152871429 +erk 4.42484663185681 2.9704144655697 2.02419306744936 0.0769610411361284 1.01523067972906 2.88480071284671 3.50855589998265 5.75574221358691 2.81540871942271 3.29212628660779 2.73436750941958 +erk 0.378436435720245 1.34025042261848 1.708377860289 1.7630170003624 2.46809953147162 3.9759363311718 4.67282883446191 7.51914995766982 3.08648663682246 4.11087386417331 2.94968833505258 +erk 4.47049528266149 3.13113691056019 0.802001585472027 0 2.61739583283408 2.24812890719799 2.68784749378469 6.16961073249146 2.30258509299405 3.19458313229916 2.25758772706331 +erk 4.29045944114839 4.11903717481247 2.24812890719799 1.37624402526639 2.73436750941958 1.96990565461153 2.61739583283408 5.48479693349065 3.59731226058845 4.33598269617247 3.89385903480047 +erk 4.50645421304893 4.0926765051214 2.14124194258528 1.00795792039998 2.09556092355972 2.2935443483419 3.45315712059287 6.55677835615804 2.67414864942653 3.60549784517489 4.30811095172371 +erk 3.92197333628131 3.03974915897077 0.631271776841858 0.647103242058538 2.68784749378469 3.53514535417189 4.67282883446191 6.96129604591017 1.53901544813755 3.48124008933569 4.74493212836325 +erk 4.94875989037817 4.93447393313069 2.14943391349987 0.00995033085316809 2.50959926237837 2.05923883436232 3.23080439573347 6.67329796776765 3.03974915897077 3.72328088083127 2.92316158071916 +erk 2.55722731136763 2.54160199346455 1.67335123817775 1.16938135955632 2.61739583283408 3.93963817246112 4.39814601655377 6.51174532964473 2.79116510781272 3.67882911826043 2.94968833505258 +erk 5.17048399503815 3.59731226058845 0.27763173659828 1.77155676191054 3.02042488614436 2.46809953147162 3.50855589998265 5.54126354515843 2.83321334405622 3.49953328238302 3.38099467434464 +erk 3.47196645255036 2.58021682959233 1.42069578783722 0.879626747502564 2.70805020110221 2.68102152871429 3.35340671782581 6.45833828334479 4.00186370942794 4.29045944114839 3.17387845893747 +erk 2.86789890204411 2.10413415427021 1.52822785700856 0 1.9154509415706 3.20274644293832 3.93963817246112 5.26269018890489 3.03013370027132 3.51749783735832 1.5830939370945 +erk 4.11087386417331 3.85014760171006 1.51072193949494 0.300104592450338 2.02419306744936 3.26575941076705 3.94931879017184 5.87211778947542 3.69635146895264 4.3267781604434 3.82209829790016 +erk 3.89385903480047 3.53514535417189 1.18784342239605 0 0.783901543828409 3.15700042115011 3.64283551561253 5.57594910314632 3.58905911883173 4.13676527810605 4.56017282005736 +erk 3.45315712059287 2.15871472257434 2.07819075977818 0 2.08691355651854 3.63495111208838 4.43438186500781 7.38461038317697 2.14124194258528 4.02891675689965 5.47646355193151 +erk 4.76217393479776 4.03777421073371 1.94304891677428 1.25846098961001 2.40694510831829 2.3887627892351 3.68887945411394 6.88959130835447 1.96990565461153 2.71469474382088 3.13113691056019 +erk 4.43438186500781 3.8308129500026 1.49290409617815 0.00995033085316809 2.4423470353692 1.79009141212736 2.64617479738412 2.92316158071916 3.04927304048202 4.0926765051214 5.61312810638807 +erk 3.75887182593397 2.50143595173921 2.57261223020711 1.34025042261848 2.92316158071916 3.81330703248899 4.31748811353631 6.48463523563525 1.52822785700856 2.23108909128898 2.14943391349987 +erk 4.29045944114839 3.23867845216438 0.879626747502564 0.207014169384326 2.91235066461494 3.07731226054641 3.91202300542815 6.27852142416584 2.94968833505258 3.4626060097908 2.96010509591084 +erk 4.38077585277223 3.95699637107088 1.89761985992753 0.518793793415168 0.982078472412158 2.2935443483419 3.13983261752775 6.23244801655052 4.29045944114839 4.95582705760126 3.40784192438082 +erk 4.07414185490458 2.57261223020711 2.34180580614733 0.00995033085316809 1.69927861643389 3.13983261752775 3.76815263500844 5.8111409929767 1.79840401194672 3.20274644293832 4.56017282005736 +erk 2.97552956623647 3.29953372788566 2.70136121295141 0.00995033085316809 2.91235066461494 3.38099467434464 3.87743156065853 5.88332238848828 2.1770218700187 3.51749783735832 4.20020495292158 +erk 3.93963817246112 2.79116510781272 0.2390169004705 1.4036429994545 2.57261223020711 3.24649099190117 3.7864597824528 5.61312810638807 2.71469474382088 3.52636052461616 2.26695791535089 +erk 3.52636052461616 2.62466859216316 1.54756250871601 1.870262530716 3.05870707271538 2.79116510781272 3.82209829790016 5.99893656194668 1.59127394180643 2.92316158071916 4.11903717481247 +erk 4.26267987704132 3.05870707271538 1.90657514365664 1.03318448334565 2.4932054526027 3.80443779474821 4.26267987704132 5.76519110278484 2.98568193770049 3.6163087612791 3.2188758248682 +erk 4.7361984483945 3.26575941076705 2.30258509299405 1.11514159061932 1.45628673293993 2.9391619220656 3.60549784517489 5.80211837537706 1.2947271675944 3.51749783735832 4.49758497530815 +erk 3.90399083373088 3.41772668361337 1.98787434815435 0.703097511413113 1.69927861643389 3.04927304048202 3.71357206670431 5.46806014113513 2.67414864942653 3.55248682920838 2.35137525716348 +erk 3.98527346716774 3.05870707271538 1.44926916028128 0.559615787935423 2.02419306744936 1.5830939370945 1.79009141212736 6.11589212548303 2.73436750941958 3.27336401015227 2.28442112236637 +erk 3.58905911883173 2.87919845729804 1.63705307946707 1.23256026117785 2.26695791535089 2.68784749378469 3.45315712059287 5.95324333428778 2.75366071235426 3.43720781918519 2.41591377830105 +erk 4.39814601655377 4.16511363311031 0.712949807856125 0 2.7408400239252 3.79548918917219 4.49758497530815 6.36818718635049 2.41591377830105 3.77734810210154 1.79840401194672 +erk 4.53367418428302 3.48124008933569 1.59127394180643 2.14943391349987 3.29953372788566 3.06805293513362 3.89385903480047 7.20489251020467 2.46809953147162 3.63495111208838 4.3267781604434 +erk 3.42751468997953 2.81540871942271 1.99741770620125 1.10525683138678 2.26695791535089 2.92316158071916 3.45315712059287 5.6937321388027 3.09557760852371 3.39114704580865 1.96009478404727 +erk 4.38949864951258 3.48124008933569 2.27521389619791 0 2.58776403522771 3.23080439573347 3.34638914516716 5.43372200355424 3.4904285153901 3.85862222870103 2.37024374146786 +erk 4.0842942263686 2.72785282839839 0.00995033085316809 0.86288995514704 2.97552956623647 2.75366071235426 3.71357206670431 5.59471137960184 2.40694510831829 3.09557760852371 1.86252854011626 +erk 4.0926765051214 3.18221184049661 0.518793793415168 0.398776119957368 0.900161349944271 3.23867845216438 3.96651119071222 5.94542060860658 2.2213750375685 3.54385368206368 4.55071400019203 +erk 4.20020495292158 2.9338568698359 1.54756250871601 0 1.75440368268429 3.71357206670431 4.49758497530815 7.41155628781116 3.23867845216438 3.87743156065853 2.63188884013665 +erk 4.30811095172371 2.92316158071916 1.22377543162212 0.00995033085316809 2.04122032885964 3.00568260440716 3.60549784517489 5.45958551414416 3.40784192438082 4.38077585277223 4.3267781604434 +erk 2.68102152871429 3.24649099190117 1.24126858906963 0.00995033085316809 3.11351530921037 3.29212628660779 3.7864597824528 5.50533153593236 3.41772668361337 3.91202300542815 2.77881927199042 +erk 4.39814601655377 3.40784192438082 1.62727783056243 1.06125650212434 2.73436750941958 2.68784749378469 3.39114704580865 6.46769872610435 1.41098697371026 2.68784749378469 3.11351530921037 +erk 3.56953269648137 3.11351530921037 1.63705307946707 0.00995033085316809 2.98568193770049 3.8308129500026 4.55071400019203 7.37525577800975 1.67335123817775 3.23867845216438 4.49758497530815 +erk 3.71357206670431 2.23108909128898 0 0 1.73518911773966 3.35340671782581 3.68887945411394 5.61312810638807 2.9338568698359 4.0842942263686 3.14845336057165 +erk 4.39814601655377 3.65065824129374 2.13179677201376 0.113328685307003 0 2.82137888640921 3.59731226058845 6.25190388316589 3.3178157727231 3.96651119071222 2.57261223020711 +erk 4.30000279919529 3.65065824129374 2.46809953147162 0.00995033085316809 2.10413415427021 3.27336401015227 4.00186370942794 6.89871453432999 2.55722731136763 3.74242022104197 2.52572864430826 +erk 2.87919845729804 2.96010509591084 2.79116510781272 0.727548607277278 3.01553490085017 2.05923883436232 2.01490302054226 5.92692602597041 3.23867845216438 3.85862222870103 2.50959926237837 +erk 4.0926765051214 3.87743156065853 2.9391619220656 3.17387845893747 3.37416870927424 1.77155676191054 3.43720781918519 6.62007320653036 2.33214389523559 3.67882911826043 5.27811465923052 +erk 4.67282883446191 3.48124008933569 1.5830939370945 0.647103242058538 1.96009478404727 1.04380405217311 2.80336038090653 6.19644412779452 3.34638914516716 4.21803603456465 3.23867845216438 +erk 1.98787434815435 2.47653840011748 1.8531680973567 1.51951320490611 2.32238772029023 2.41591377830105 2.96010509591084 6.26909628370626 2.2935443483419 3.56953269648137 3.62434093297637 +erk 4.07414185490458 3.12236492448736 1.18784342239605 1.24126858906963 2.00552585872967 2.50959926237837 3.58905911883173 5.58724865840025 1.19694818938897 3.2188758248682 4.31748811353631 +erk 3.95699637107088 2.50143595173921 1.95160817016995 1.04380405217311 3.43720781918519 2.77258872223978 3.71357206670431 6.22455842927536 2.42480272571829 3.49953328238302 1.90657514365664 +erk 4.11903717481247 3.13983261752775 2.16791018966744 1.98787434815435 2.26695791535089 2.61739583283408 3.66867674679642 5.99146454710798 3.39114704580865 3.8416005411316 2.77258872223978 +erk 3.98527346716774 3.15700042115011 0.908258560176891 1.7630170003624 1.44926916028128 3.73289633953071 4.01998014693324 5.34233425196481 2.4932054526027 3.08648663682246 2.72785282839839 +erk 4.55071400019203 3.79548918917219 1.61938824328727 0.951657875711446 2.94968833505258 3.40119738166216 3.9759363311718 6.41345895716736 3.29953372788566 3.95699637107088 2.62466859216316 +erk 4.15575319035074 3.34638914516716 0.951657875711446 2.06812778177956 1.48387468945875 1.36609165380237 3.3178157727231 6.73696695800186 0.943905898907128 2.37954613413017 2.10413415427021 +erk 3.50855589998265 3.49953328238302 1.99741770620125 1.37624402526639 0 4.26267987704132 4.78749174278205 5.72031177660741 2.72785282839839 3.75887182593397 4.41642806139121 +erk 4.10098910494077 3.11351530921037 0.879626747502564 1.20597080698861 1.98787434815435 2.86220088092947 3.02042488614436 5.64897423816121 3.74242022104197 4.48863636973214 4.254193263164 +erk 4.14630430115281 3.23867845216438 0.73716406597672 1.54756250871601 1.60140574073684 4.19116874685764 4.88280192258637 6.64639051484773 2.9391619220656 3.6609942506244 4.56017282005736 +erk 4.3528552573736 3.21084365317094 1.6094379124341 0.00995033085316809 1.93441576962958 2.9338568698359 3.34638914516716 5.39816270151775 2.2935443483419 2.80336038090653 2.11384296839717 +erk 4.0842942263686 3.31054301339402 1.68268837417369 0.908258560176891 1.708377860289 2.16791018966744 2.61006979274201 6.13339804299665 2.50959926237837 2.98568193770049 2.54160199346455 +erk 2.7408400239252 2.45958884180371 0.810930216216329 0.89199803930511 3.02042488614436 3.16547504814109 3.89385903480047 5.4510384535657 2.32238772029023 3.98527346716774 4.20916023665068 +erk 2.92316158071916 2.42480272571829 0.951657875711446 0 0.173953307123438 2.73436750941958 3.19458313229916 6.05443934626937 3.01553490085017 3.80443779474821 2.19499988231411 +erk 2.79728133483015 3.01553490085017 1.24126858906963 2.19499988231411 1.98787434815435 3.25424296870549 3.3357695763397 5.63121178182137 1.4747630091075 3.20274644293832 4.54223038621422 +erk 2.91235066461494 3.4626060097908 0 0.500775287912489 0.27002713721306 3.40784192438082 4.10098910494077 7.06987412845857 1.83418018511201 3.17387845893747 4.61512051684126 +erk 4.0926765051214 2.62466859216316 0.746687947487975 0.631271776841858 2.3887627892351 3.91202300542815 4.57779898919196 7.57353126274595 0.900161349944271 1.96990565461153 4.37071287477361 +erk 4.47049528266149 3.23867845216438 1.79009141212736 0 1.51951320490611 3.76815263500844 4.48863636973214 7.51914995766982 1.96009478404727 4.14630430115281 3.02042488614436 +erk 3.60549784517489 2.97552956623647 0.609765571620894 0.99694863489161 2.30258509299405 2.10413415427021 3.15700042115011 6.10702288774225 1.05082162483176 3.13113691056019 4.66343909411207 +erk 2.86220088092947 2.96010509591084 1.48387468945875 0 1.52822785700856 1.57484646766448 2.97552956623647 6.62007320653036 1.43983512804792 2.9338568698359 4.54223038621422 +erk 3.80443779474821 3.41772668361337 2.13179677201376 1.9154509415706 3.10458667846607 1.16938135955632 3.2188758248682 6.7093043402583 2.484906649788 3.4626060097908 2.9391619220656 +erk 3.74242022104197 3.07731226054641 2.09556092355972 0.0198026272961797 0.60431596685333 2.64617479738412 2.94968833505258 5.71042701737487 3.2188758248682 3.65065824129374 2.79116510781272 +erk 4.24563400976833 3.11351530921037 1.74571553072665 0.00995033085316809 2.77881927199042 3.56953269648137 3.81330703248899 5.74620319054015 3.03013370027132 3.9759363311718 3.02042488614436 +erk 1.49290409617815 1.80828877117927 2.10413415427021 0 3.91202300542815 2.86789890204411 2.9704144655697 6.07993319509559 2.7408400239252 3.52636052461616 3.12236492448736 +erk 2.57261223020711 3.32862668882732 2.51769647261099 0 2.37954613413017 3.67882911826043 4.71849887129509 6.61069604471776 3.13113691056019 3.4904285153901 3.07731226054641 +erk 4.50645421304893 3.59731226058845 2.18605127673809 0 0.672944473242426 2.07819075977818 2.66025953726586 5.79301360838414 2.70805020110221 3.38099467434464 2.68784749378469 +erk 4.44382703557933 2.79116510781272 1.15057202759882 0.0861776962410524 1.93441576962958 4.15575319035074 5.18738580584075 6.8001700683022 1.4747630091075 2.66025953726586 4.3528552573736 +erk 4.15575319035074 3.31054301339402 1.51951320490611 0.56531380905006 2.73436750941958 1.23256026117785 2.98568193770049 5.89164421182577 3.60549784517489 4.41642806139121 3.35340671782581 +erk 2.40694510831829 2.91235066461494 1.86252854011626 0.00995033085316809 2.94968833505258 2.99573227355399 3.64283551561253 5.90808293816893 3.32862668882732 3.9926809084456 3.64283551561253 +erk 4.30811095172371 3.34638914516716 2.4423470353692 1.44926916028128 2.80336038090653 4.95582705760126 5.25227342804663 6.14418563412565 0.951657875711446 2.3887627892351 4.23700086262362 +erk 4.47049528266149 3.73289633953071 0 0.99694863489161 2.28442112236637 3.40784192438082 4.14630430115281 5.98141421125448 0 4.66343909411207 2.30258509299405 +erk 4.48863636973214 3.19458313229916 0.963174317773006 0.765467842139571 1.52822785700856 1.87946504964716 3.23867845216438 3.23080439573347 2.68784749378469 3.72328088083127 1.79840401194672 +erk 4.79579054559674 4.3528552573736 1.26694760348732 0 2.67414864942653 1.88858365386359 2.96010509591084 6.49375383985169 3.26575941076705 3.75185425327532 2.66025953726586 +erk 4.14630430115281 3.3178157727231 2.34180580614733 3.04927304048202 3.58073729549423 1.96990565461153 3.82209829790016 7.21376830811864 1.74571553072665 3.89385903480047 4.95582705760126 +erk 4.15575319035074 3.42751468997953 1.59127394180643 0.0198026272961797 2.47653840011748 4.43438186500781 5.01063529409626 6.11589212548303 3.62434093297637 4.24563400976833 3.75185425327532 +erk 4.34380542185368 3.49953328238302 1.6467336971778 1.4036429994545 2.81540871942271 2.56494935746154 3.48124008933569 6.08904487544685 3.23080439573347 3.92197333628131 3.13113691056019 +erk 2.21266038546606 2.15871472257434 1.77155676191054 2.10413415427021 3.04927304048202 3.63495111208838 4.33598269617247 6.52941883826223 3.13983261752775 3.55248682920838 2.85070650150373 +erk 3.93963817246112 2.99573227355399 1.9154509415706 0.00995033085316809 2.47653840011748 2.30258509299405 3.38099467434464 6.01615715969835 3.05870707271538 3.49953328238302 3.00568260440716 +erk 4.29045944114839 3.23080439573347 2.70136121295141 1.53901544813755 3.87743156065853 1.54756250871601 3.09557760852371 6.16961073249146 3.32862668882732 3.77734810210154 2.05027016437956 +erk 4.54223038621422 3.55248682920838 1.708377860289 0.636576829071551 1.65441127807683 3.81330703248899 4.94875989037817 6.82654522355659 3.21084365317094 3.98527346716774 3.40119738166216 +erk 3.89385903480047 3.23080439573347 1.93441576962958 0.131028262406404 2.66025953726586 2.50959926237837 3.63495111208838 6.66440902035041 3.39114704580865 4.31748811353631 3.54385368206368 +erk 3.77734810210154 2.92316158071916 1.04380405217311 0.00995033085316809 2.66025953726586 3.19458313229916 4.04830062372069 6.79122146272619 1.83418018511201 0.900161349944271 1.31372366828506 +erk 4.01998014693324 3.50855589998265 0 1.89761985992753 2.00552585872967 3.01553490085017 3.68887945411394 6.41345895716736 3.40119738166216 3.8308129500026 2.37024374146786 +erk 4.12874598893943 3.13983261752775 1.25846098961001 1.02604159583327 3.66867674679642 2.42480272571829 2.75366071235426 5.99146454710798 1.02604159583327 3.55248682920838 4.20020495292158 +erk 3.94931879017184 3.32862668882732 2.87919845729804 4.42484663185681 3.85862222870103 3.47196645255036 4.66343909411207 7.23128700432762 2.67414864942653 3.29953372788566 2.61739583283408 +erk 3.40119738166216 2.03339760317843 2.11384296839717 1.708377860289 2.9391619220656 3.11351530921037 3.47196645255036 5.77455154554441 3.11351530921037 3.75887182593397 3.20274644293832 +erk 2.23964529322017 3.29212628660779 2.62466859216316 0.900161349944271 2.79116510781272 2.7408400239252 3.29212628660779 5.46806014113513 2.43361335540045 3.01553490085017 2.9338568698359 +erk 3.64283551561253 2.77881927199042 2.68102152871429 0.431782416425538 3.17387845893747 3.39114704580865 3.87743156065853 5.71042701737487 2.97552956623647 4.07414185490458 3.39114704580865 +erk 4.20020495292158 3.3178157727231 0.343589704390077 0.00995033085316809 3.3357695763397 3.02042488614436 3.55248682920838 5.4510384535657 1.97823903617067 3.85014760171006 5.08140436498446 +erk 3.64283551561253 2.96010509591084 2.35137525716348 1.02604159583327 2.81540871942271 2.81540871942271 3.44361809754611 6.57507584059962 2.55722731136763 3.51749783735832 2.25758772706331 +erk 3.51749783735832 2.58776403522771 1.42069578783722 0 2.84490938381941 2.9391619220656 3.62434093297637 5.92692602597041 0 4.20020495292158 2.60268968544438 +erk 2.71469474382088 2.84490938381941 1.88858365386359 0.657520002916794 2.79728133483015 3.27336401015227 3.7864597824528 5.63835466933375 1.16002091679675 2.86789890204411 3.92986292355648 +erk 4.10098910494077 3.13113691056019 2.20386912005489 0.00995033085316809 0.936093359170335 3.07731226054641 3.72328088083127 5.4510384535657 2.58776403522771 3.64283551561253 2.3887627892351 +erk 3.4626060097908 2.55722731136763 1.84371920815877 1.36609165380237 1.83418018511201 3.9759363311718 4.62497281328427 6.80903930604298 3.47196645255036 4.15575319035074 4.67282883446191 +erk 4.33598269617247 3.72328088083127 1.77155676191054 1.63705307946707 2.55722731136763 4.12874598893943 4.76217393479776 6.09807428216624 2.54160199346455 3.16547504814109 1.34807314829969 +erk 3.92197333628131 3.18221184049661 1.35840915763035 1.65441127807683 3.27336401015227 3.73289633953071 4.62497281328427 6.65544035036765 2.27521389619791 3.40784192438082 2.51769647261099 +erk 4.01096295328305 2.9338568698359 1.79840401194672 1.79009141212736 2.63188884013665 3.37416870927424 4.10098910494077 6.09807428216624 2.60268968544438 3.40119738166216 1.9154509415706 +erk 4.20020495292158 2.99573227355399 2.4423470353692 1.42069578783722 2.30258509299405 1.69927861643389 3.05870707271538 6.04500531403601 2.39789527279837 3.58073729549423 4.41642806139121 +erk 3.74242022104197 3.4904285153901 0.819779831493311 1.18784342239605 3.20274644293832 3.75185425327532 4.82028156560504 7.13249755166004 3.58905911883173 4.3267781604434 4.67282883446191 +erk 3.64283551561253 2.98568193770049 2.70136121295141 0 1.75440368268429 1.51951320490611 3.64283551561253 6.35088571671474 3.03974915897077 3.95699637107088 2.83321334405622 +erk 4.19116874685764 2.9338568698359 0 0.518793793415168 2.7408400239252 2.484906649788 2.83321334405622 6.03548143252476 2.4423470353692 3.37416870927424 2.03339760317843 +erk 4.02891675689965 3.03974915897077 2.00552585872967 0 2.9391619220656 2.3887627892351 3.29953372788566 6.10702288774225 2.9704144655697 3.41772668361337 2.26695791535089 +erk 5.16478597392351 4.59612944133594 2.07819075977818 1.88858365386359 0.916290731874155 3.6163087612791 4.19116874685764 6.31354804627709 2.97552956623647 3.39114704580865 3.3357695763397 +erk 2.86220088092947 3.41772668361337 2.58021682959233 1.18784342239605 3.02042488614436 2.63188884013665 3.00568260440716 5.6021188208797 2.13179677201376 3.2188758248682 4.47960696301275 +erk 4.40671924726425 3.76815263500844 0.62057648772511 0 2.58021682959233 2.98568193770049 4.00186370942794 7.68109900153636 2.41591377830105 2.88480071284671 2.16791018966744 +erk 3.95699637107088 2.23964529322017 0.470003629245736 1.53901544813755 2.35137525716348 2.4932054526027 3.77734810210154 6.16120732169508 2.83321334405622 3.37416870927424 2.45958884180371 +erk 2.88480071284671 2.82137888640921 2.26695791535089 2.08691355651854 2.66025953726586 2.96010509591084 3.45315712059287 6.56526497003536 3.14845336057165 3.85862222870103 2.99573227355399 +erk 3.7864597824528 2.86789890204411 1.2947271675944 0 3.18221184049661 2.91235066461494 4.05698877567833 6.72743172485086 3.40784192438082 3.8416005411316 2.14943391349987 +erk 4.19116874685764 3.13983261752775 1.12492959698548 0.207014169384326 3.12236492448736 3.34638914516716 4.01096295328305 6.88959130835447 1.90657514365664 3.59731226058845 4.39814601655377 +erk 2.89591193827178 2.9391619220656 2.23108909128898 0.559615787935423 2.31253542384721 3.06805293513362 3.63495111208838 5.54126354515843 1.71739505393919 2.54160199346455 1.6094379124341 +erk 4.36182392735636 3.02042488614436 1.07840958135059 1.13462272619114 3.32862668882732 2.65324196460721 3.36384159511839 6.20657592672493 2.19499988231411 3.3178157727231 4.41642806139121 +erk 1.95160817016995 2.9704144655697 2.21266038546606 0.0582689081239758 2.57261223020711 2.58776403522771 3.40784192438082 6.56526497003536 3.3357695763397 3.79548918917219 2.39789527279837 +erk 4.26267987704132 3.27336401015227 1.16002091679675 1.03318448334565 0.385262400790645 3.3357695763397 3.85014760171006 5.84643877505772 3.21084365317094 3.72328088083127 3.50855589998265 +erk 2.84490938381941 3.15700042115011 1.39376637595859 0.343589704390077 3.17387845893747 2.94968833505258 3.52636052461616 5.58724865840025 1.78170913337455 2.76000994003292 4.46129981556839 +erk 4.47049528266149 3.41772668361337 2.33214389523559 0.451075619360217 2.92316158071916 3.2846635654062 3.68887945411394 5.8111409929767 3.49953328238302 4.29045944114839 3.53514535417189 +erk 3.56104608260405 3.04927304048202 2.67414864942653 0.104360015324243 1.88858365386359 2.42480272571829 3.41772668361337 6.82654522355659 2.53369681395743 3.63495111208838 1.92424865227413 +erk 4.30811095172371 3.23867845216438 1.07158361628019 0.00995033085316809 2.72785282839839 1.4036429994545 3.56953269648137 6.18826412308259 1.99741770620125 3.3178157727231 4.06560209335645 +erk 3.82209829790016 2.97552956623647 1.86252854011626 1.7630170003624 2.46809953147162 1.32175583998232 3.13983261752775 6.37672694789863 2.91235066461494 3.76815263500844 4.3267781604434 +erk 4.02891675689965 2.79728133483015 2.14943391349987 1.50185270175416 1.6094379124341 2.83321334405622 4.84418708645859 6.88959130835447 2.73436750941958 3.40784192438082 2.55722731136763 +erk 4.03777421073371 3.47196645255036 0.00995033085316809 0 0.559615787935423 1.30291275218084 2.65324196460721 6.10702288774225 2.46809953147162 3.48124008933569 1.92424865227413 +erk 3.50855589998265 4.01096295328305 1.68268837417369 1.4747630091075 2.32238772029023 3.15700042115011 3.86702563949741 5.75574221358691 3.06805293513362 3.8308129500026 2.25758772706331 +erk 4.38077585277223 3.9759363311718 2.33214389523559 0.173953307123438 2.54160199346455 3.51749783735832 4.03777421073371 5.44241771052179 3.18221184049661 3.89385903480047 2.84490938381941 +erk 4.46129981556839 4.07414185490458 1.69009581545155 1.07840958135059 2.51769647261099 2.9391619220656 3.49953328238302 6.16961073249146 2.90690105984738 3.56104608260405 1.96009478404727 +erk 3.74242022104197 3.07731226054641 2.57261223020711 2.67414864942653 2.32238772029023 3.52636052461616 4.20916023665068 5.80211837537706 3.36384159511839 4.01998014693324 2.94968833505258 +erk 3.86702563949741 3.39114704580865 2.43361335540045 1.92424865227413 2.47653840011748 2.89591193827178 3.39114704580865 5.55682806169954 2.05027016437956 3.06805293513362 1.6467336971778 +erk 1.18784342239605 2.02419306744936 1.79840401194672 1.4036429994545 2.4423470353692 3.40119738166216 4.46129981556839 6.97073007814353 2.94968833505258 3.7864597824528 2.87919845729804 +erk 3.38099467434464 2.13179677201376 2.06812778177956 0.357674444271816 2.68102152871429 1.7263316639056 3.17387845893747 6.46769872610435 2.87919845729804 3.4904285153901 2.82137888640921 +erk 3.69635146895264 3.13113691056019 0.371563556432483 0.00995033085316809 1.66392609771817 3.2188758248682 3.62434093297637 5.87211778947542 3.49953328238302 4.15575319035074 3.51749783735832 +erk 4.40671924726425 4.48863636973214 0.900161349944271 0.00995033085316809 2.46809953147162 2.67414864942653 3.49953328238302 6.41345895716736 2.77881927199042 3.47196645255036 2.98568193770049 +erk 3.72328088083127 3.35340671782581 1.93441576962958 0.86288995514704 1.60140574073684 3.42751468997953 4.11903717481247 6.45833828334479 2.43361335540045 3.14845336057165 1.708377860289 +erk 2.31253542384721 3.27336401015227 1.03318448334565 0 2.80336038090653 3.13983261752775 3.92986292355648 6.32256523992728 3.56953269648137 4.3528552573736 3.64283551561253 +erk 4.29045944114839 3.4626060097908 1.6094379124341 0 2.34180580614733 3.13113691056019 3.8308129500026 5.7037824746562 1.61938824328727 3.25424296870549 4.26267987704132 +erk 4.01096295328305 4.33598269617247 2.09556092355972 1.05082162483176 2.77881927199042 2.19499988231411 3.26575941076705 6.24222326545517 3.23080439573347 3.87743156065853 2.43361335540045 +erk 3.9926809084456 2.79728133483015 2.50143595173921 0.113328685307003 2.19499988231411 2.4423470353692 3.66867674679642 5.92692602597041 3.17387845893747 3.56953269648137 2.7408400239252 +erk 4.03777421073371 2.9338568698359 1.69927861643389 0.62057648772511 2.20386912005489 2.20386912005489 3.03974915897077 6.31354804627709 0 3.49953328238302 4.38077585277223 +erk 3.58905911883173 3.79548918917219 3.51749783735832 4.99043258677874 4.19116874685764 2.90690105984738 3.36384159511839 5.23644196282995 0.854415328156068 2.92316158071916 4.20916023665068 +erk 4.30811095172371 3.16547504814109 2.23964529322017 1.79009141212736 2.07819075977818 3.6163087612791 4.15575319035074 6.8627579130514 1.51072193949494 2.76000994003292 4.49758497530815 +erk 3.07731226054641 3.60549784517489 1.4036429994545 0 3.13983261752775 3.55248682920838 4.13676527810605 5.93753620508243 3.50855589998265 4.27249074760558 2.90690105984738 +erk 4.47960696301275 3.75887182593397 2.43361335540045 5.11799381241676 3.73289633953071 3.00568260440716 3.68887945411394 5.77455154554441 2.57261223020711 3.43720781918519 2.26695791535089 +erk 4.19116874685764 2.96010509591084 2.37954613413017 0 2.81540871942271 2.63188884013665 3.64283551561253 5.54126354515843 2.77881927199042 3.40784192438082 2.41591377830105 +erk 4.21803603456465 3.4904285153901 0.774727167552368 0.00995033085316809 1.95160817016995 2.28442112236637 3.58905911883173 6.42162226780652 3.29212628660779 3.69635146895264 2.21266038546606 +erk 3.6163087612791 2.72785282839839 2.9391619220656 3.13983261752775 2.94968833505258 2.76000994003292 3.50855589998265 5.64897423816121 3.3178157727231 3.47196645255036 2.60268968544438 +erk 4.29045944114839 3.72328088083127 1.07840958135059 0.908258560176891 1.63705307946707 3.94931879017184 4.61512051684126 6.79122146272619 3.29953372788566 4.13676527810605 2.9338568698359 +erk 4.17284762371004 3.76815263500844 1.80828877117927 0 3.34638914516716 2.30258509299405 3.13113691056019 6.19644412779452 2.50143595173921 3.25424296870549 1.88858365386359 +erk 3.56953269648137 2.67414864942653 1.60140574073684 1.71739505393919 1.6467336971778 1.93441576962958 3.73289633953071 4.18205014264121 3.10458667846607 3.9926809084456 3.58073729549423 +erk 2.34180580614733 2.28442112236637 1.78170913337455 0 2.81540871942271 3.3357695763397 3.90399083373088 5.80211837537706 1.83418018511201 3.19458313229916 2.35137525716348 +erk 4.44382703557933 3.02042488614436 1.10525683138678 0.0676586484738149 2.83321334405622 2.07819075977818 3.13983261752775 5.75574221358691 3.89385903480047 4.22683374526818 2.77258872223978 +erk 4.15575319035074 3.53514535417189 1.20597080698861 0 2.66025953726586 2.70805020110221 4.15575319035074 6.83625927727707 0 2.99573227355399 4.21803603456465 +erk 1.28647402583768 0.765467842139571 0.900161349944271 1.2947271675944 2.35137525716348 3.64283551561253 4.53367418428302 7.6275443904885 2.61739583283408 2.79728133483015 2.25758772706331 +erk 3.67882911826043 3.01553490085017 1.59127394180643 0.00995033085316809 2.13179677201376 2.61006979274201 3.26575941076705 4.91265488573605 1.24990173621434 2.53369681395743 4.12874598893943 +erk 3.77734810210154 2.52572864430826 1.28647402583768 0.989541193613748 1.90657514365664 1.80828877117927 3.3357695763397 6.36818718635049 3.41772668361337 3.89385903480047 2.76000994003292 +erk 4.11087386417331 3.36384159511839 2.33214389523559 0.00995033085316809 3.03013370027132 4.70953020131233 5.21493575760899 6.19644412779452 2.52572864430826 3.6163087612791 1.96009478404727 +erk 3.14845336057165 3.31054301339402 2.20386912005489 0.00995033085316809 1.93441576962958 3.2188758248682 4.3528552573736 6.16961073249146 3.66867674679642 4.69134788222914 3.26575941076705 +erk 4.16511363311031 2.71469474382088 1.24990173621434 0.783901543828409 0.672944473242426 3.34638914516716 4.50645421304893 7.52833176670725 3.16547504814109 3.67882911826043 3.15700042115011 +erk 3.52636052461616 2.68784749378469 0.908258560176891 0.970778917158225 2.77881927199042 3.7864597824528 4.45201900649392 7.01571242048723 0.62057648772511 2.9704144655697 3.24649099190117 +erk 4.28082412916472 3.92986292355648 1.07158361628019 1.04380405217311 2.61739583283408 3.45315712059287 4.13676527810605 6.16120732169508 2.80336038090653 3.40119738166216 1.56444054650336 +erk 4.15575319035074 3.07731226054641 2.05027016437956 0.457424847038875 3.06805293513362 2.67414864942653 3.3357695763397 5.94542060860658 2.64617479738412 3.49953328238302 2.97552956623647 +erk 4.33598269617247 2.92316158071916 1.86252854011626 0.385262400790645 3.05870707271538 3.85862222870103 4.77912349311153 7.78030308790837 0.970778917158225 2.86220088092947 4.13676527810605 +erk 5.25227342804663 4.21803603456465 0 0.314810739840034 0.657520002916794 3.76815263500844 4.14630430115281 6.31354804627709 2.31253542384721 3.54385368206368 2.484906649788 +erk 3.40119738166216 2.77258872223978 2.33214389523559 2.02419306744936 0.802001585472027 3.34638914516716 3.9926809084456 6.67329796776765 2.10413415427021 2.80336038090653 2.28442112236637 +erk 4.11903717481247 3.13983261752775 0.378436435720245 0.122217632724249 0.0392207131532813 2.46809953147162 3.42751468997953 6.30444880242198 2.9338568698359 3.58905911883173 2.61739583283408 +erk 3.16547504814109 3.11351530921037 1.81645208181843 0.89199803930511 2.61739583283408 1.708377860289 3.64283551561253 6.31354804627709 3.62434093297637 4.46129981556839 4.07414185490458 +erk 4.50645421304893 3.59731226058845 1.55603713570699 0.00995033085316809 2.97552956623647 3.14845336057165 3.40119738166216 5.6021188208797 3.29212628660779 3.70622809244855 2.79116510781272 +erk 3.31054301339402 3.29212628660779 2.10413415427021 0.963174317773006 2.14124194258528 2.9391619220656 3.6163087612791 5.50533153593236 3.60549784517489 4.21803603456465 3.55248682920838 +erk 4.0842942263686 3.4904285153901 1.96990565461153 1.97823903617067 3.06805293513362 2.25758772706331 3.38099467434464 5.50533153593236 4.03777421073371 4.68213122712422 4.17284762371004 +erk 0 2.01490302054226 2.87919845729804 1.55603713570699 2.51769647261099 1.89761985992753 3.48124008933569 6.31354804627709 1.62727783056243 3.47196645255036 4.04830062372069 +erk 2.77881927199042 2.88480071284671 0.60431596685333 0.00995033085316809 2.33214389523559 3.9759363311718 4.55071400019203 6.29526600143965 2.86789890204411 3.74242022104197 2.77881927199042 +erk 4.01998014693324 3.45315712059287 2.08691355651854 0.989541193613748 2.80336038090653 2.23108909128898 3.3357695763397 6.91671502035361 2.3887627892351 3.43720781918519 2.61739583283408 +erk 3.54385368206368 2.73436750941958 0.215111379616945 1.42069578783722 2.80336038090653 2.89591193827178 3.42751468997953 5.48479693349065 2.52572864430826 3.05870707271538 2.53369681395743 +erk 4.04830062372069 3.50855589998265 1.5830939370945 0.00995033085316809 2.35137525716348 2.34180580614733 3.85014760171006 7.24921505711439 3.81330703248899 3.92986292355648 3.07731226054641 +erk 4.05698877567833 3.13113691056019 1.51951320490611 0.470003629245736 3.4904285153901 1.81645208181843 2.64617479738412 5.54126354515843 2.10413415427021 3.74242022104197 5.57594910314632 +erk 4.21803603456465 3.59731226058845 2.67414864942653 1.63705307946707 2.33214389523559 3.82209829790016 4.38949864951258 6.8001700683022 2.91235066461494 3.53514535417189 3.10458667846607 +erk 4.36182392735636 3.75185425327532 2.11384296839717 0.405465108108164 3.00568260440716 3.90399083373088 4.57779898919196 6.66440902035041 2.61739583283408 2.94968833505258 2.20386912005489 +erk 3.44361809754611 2.81540871942271 2.32238772029023 1.62727783056243 3.01553490085017 3.11351530921037 3.87743156065853 6.71901315438526 1.82616089594539 3.18221184049661 4.55071400019203 +erk 2.01490302054226 3.10458667846607 2.07819075977818 1.41098697371026 2.61739583283408 2.73436750941958 3.07731226054641 5.35185813347607 3.69635146895264 4.33598269617247 3.29953372788566 +erk 3.65065824129374 3.17387845893747 0.314810739840034 0.792992515529661 1.45628673293993 3.51749783735832 4.11087386417331 6.59304453414244 2.30258509299405 2.88480071284671 1.86252854011626 +erk 4.3528552573736 4.31748811353631 2.13179677201376 0.131028262406404 3.41772668361337 3.2188758248682 4.01998014693324 5.75574221358691 3.75887182593397 4.11087386417331 2.64617479738412 +erk 3.8308129500026 3.66867674679642 1.8531680973567 0.131028262406404 2.66025953726586 1.10525683138678 2.9704144655697 6.71901315438526 1.10525683138678 2.80336038090653 4.42484663185681 +erk 4.40671924726425 3.29212628660779 1.19694818938897 2.09556092355972 3.15700042115011 2.09556092355972 3.16547504814109 6.41345895716736 3.01553490085017 3.51749783735832 3.09557760852371 +erk 4.44382703557933 3.18221184049661 1.77155676191054 0.828551817566148 2.9338568698359 2.4423470353692 3.11351530921037 6.07993319509559 1.69927861643389 3.75887182593397 4.50645421304893 +erk 4.38949864951258 3.82209829790016 0.837247524533702 1.24126858906963 2.97552956623647 3.37416870927424 3.32862668882732 5.8111409929767 2.39789527279837 3.19458313229916 2.89591193827178 +erk 4.41642806139121 3.24649099190117 1.98787434815435 0.62057648772511 2.37024374146786 2.21266038546606 3.14845336057165 5.85507192220243 3.03013370027132 3.80443779474821 3.16547504814109 +erk 4.10098910494077 3.56953269648137 1.93441576962958 0.3293037471426 2.61739583283408 3.00568260440716 4.21803603456465 7.32118855673948 3.6163087612791 3.69635146895264 2.41591377830105 +erk 4.85981240436167 4.12874598893943 2.09556092355972 0.00995033085316809 3.18221184049661 4.78749174278205 5.37989735354046 6.5206211275587 2.75366071235426 3.67882911826043 2.56494935746154 +erk 4.19116874685764 3.3357695763397 2.4423470353692 1.34025042261848 2.12226153886276 1.03318448334565 2.4423470353692 5.76519110278484 3.08648663682246 3.69635146895264 3.09557760852371 +erk 3.96651119071222 3.29953372788566 1.19694818938897 1.35840915763035 0.970778917158225 3.08648663682246 3.79548918917219 6.05443934626937 2.50143595173921 3.51749783735832 1.42069578783722 +erk 3.62434093297637 3.29212628660779 2.73436750941958 0 0.488580014818671 2.58021682959233 4.01096295328305 7.23128700432762 3.26575941076705 3.86702563949741 3.45315712059287 +erk 4.05698877567833 3.53514535417189 1.5830939370945 0.667829372575655 2.68102152871429 2.82137888640921 3.4904285153901 5.66642668811243 2.58021682959233 3.17387845893747 3.09557760852371 +erk 4.85981240436167 3.93963817246112 0.727548607277278 1.48387468945875 2.2213750375685 3.23867845216438 3.50855589998265 5.4249500174814 0.576613364303994 3.67882911826043 2.14124194258528 +erk 3.40784192438082 3.02042488614436 1.14103300455206 2.16791018966744 1.27815220250019 2.50959926237837 3.31054301339402 5.85507192220243 3.10458667846607 3.76815263500844 1.6094379124341 +erk 4.28082412916472 3.03974915897077 1.27815220250019 0.00995033085316809 3.20274644293832 4.36182392735636 4.92725368515721 7.3038432252777 3.47196645255036 3.81330703248899 2.71469474382088 +erk 4.07414185490458 3.55248682920838 1.24990173621434 5.90808293816893 3.67882911826043 2.87919845729804 3.32862668882732 5.80211837537706 3.14845336057165 3.94931879017184 4.58700621536042 +erk 4.27249074760558 3.3178157727231 1.59127394180643 1.37624402526639 2.12226153886276 3.05870707271538 3.53514535417189 5.61312810638807 3.40119738166216 4.14630430115281 2.58776403522771 +erk 4.00186370942794 2.98568193770049 1.16002091679675 0 3.16547504814109 2.79116510781272 5.17048399503815 4.72738781871234 2.46809953147162 3.9759363311718 4.36182392735636 +erk 3.2188758248682 3.2188758248682 2.72785282839839 0.828551817566148 3.47196645255036 3.03974915897077 3.73289633953071 5.4249500174814 1.66392609771817 2.99573227355399 4.41642806139121 +erk 3.07731226054641 2.46809953147162 1.04380405217311 0.828551817566148 2.2935443483419 3.06805293513362 3.62434093297637 5.58724865840025 3.45315712059287 4.15575319035074 4.21803603456465 +erk 4.0842942263686 3.43720781918519 1.88858365386359 0 0.425267735404344 2.79728133483015 3.16547504814109 5.93753620508243 0.457424847038875 2.09556092355972 0.936093359170335 +erk 3.72328088083127 3.19458313229916 0.879626747502564 0 2.54160199346455 4.20916023665068 4.90527477843843 6.4393503711001 2.90690105984738 3.37416870927424 2.56494935746154 +erk 3.86702563949741 3.25424296870549 1.96990565461153 0 2.80336038090653 3.13983261752775 3.70622809244855 5.93753620508243 1.23256026117785 3.40119738166216 1.4036429994545 +erk 3.04927304048202 2.9338568698359 1.38629436111989 1.34807314829969 1.13462272619114 4.01998014693324 4.45201900649392 6.07073772800249 3.92197333628131 4.69134788222914 3.96651119071222 +erk 3.81330703248899 2.98568193770049 2.79728133483015 1.56444054650336 2.12226153886276 1.86252854011626 2.86220088092947 6.41345895716736 2.53369681395743 3.21084365317094 2.3887627892351 +erk 4.20020495292158 3.40119738166216 0.431782416425538 2.07819075977818 3.23080439573347 3.42751468997953 3.92197333628131 5.66642668811243 2.41591377830105 2.91235066461494 1.41098697371026 +erk 3.65065824129374 3.13113691056019 1.96990565461153 1.52822785700856 3.13113691056019 4.63472898822964 5.43372200355424 6.38687931936265 3.38099467434464 4.17284762371004 1.60140574073684 +erk 4.80402104473326 3.51749783735832 0.254642218373581 1.5830939370945 2.39789527279837 1.36609165380237 3.03013370027132 5.59471137960184 2.94968833505258 3.65065824129374 2.64617479738412 +erk 3.62434093297637 3.17387845893747 1.96009478404727 1.48387468945875 1.73518911773966 2.33214389523559 2.97552956623647 5.67675380226828 3.37416870927424 3.74242022104197 2.9338568698359 +erk 4.39814601655377 3.20274644293832 0 1.69009581545155 2.41591377830105 1.870262530716 2.92316158071916 6.14418563412565 3.01553490085017 3.74242022104197 3.2188758248682 +erk 3.42751468997953 3.02042488614436 2.08691355651854 0.385262400790645 3.36384159511839 3.39114704580865 3.85862222870103 6.48463523563525 2.53369681395743 3.44361809754611 2.04122032885964 +erk 3.40119738166216 2.97552956623647 1.01523067972906 0.86288995514704 0 3.03013370027132 3.59731226058845 6.72743172485086 3.14845336057165 3.75887182593397 3.19458313229916 +erk 3.01553490085017 3.82209829790016 1.06125650212434 0.27002713721306 1.88858365386359 3.02042488614436 3.69635146895264 5.52146091786225 2.37024374146786 3.8416005411316 4.55071400019203 +erk 2.40694510831829 3.73289633953071 1.44926916028128 2.05027016437956 2.2213750375685 2.94968833505258 3.3178157727231 5.34233425196481 0.647103242058538 4.45201900649392 1.15057202759882 +erk 5.17048399503815 4.54223038621422 1.95160817016995 1.36609165380237 2.61739583283408 3.35340671782581 3.71357206670431 5.52146091786225 2.47653840011748 3.15700042115011 2.75366071235426 +erk 3.98527346716774 3.13983261752775 0.048790164169432 0.3293037471426 3.38099467434464 1.44926916028128 3.19458313229916 6.10702288774225 2.35137525716348 3.32862668882732 1.65441127807683 +erk 3.79548918917219 3.16547504814109 1.9154509415706 1.22377543162212 2.52572864430826 3.4626060097908 4.04830062372069 5.39816270151775 3.8308129500026 4.18205014264121 3.6609942506244 +erk 4.11087386417331 3.9759363311718 2.16791018966744 0.00995033085316809 2.94968833505258 1.77155676191054 3.62434093297637 7.19593722647557 3.00568260440716 3.60549784517489 2.2935443483419 +erk 4.19116874685764 2.9704144655697 0.559615787935423 0 2.83321334405622 1.13462272619114 1.67335123817775 5.23644196282995 2.9391619220656 3.6609942506244 2.55722731136763 +erk 4.0926765051214 3.4626060097908 0 0.00995033085316809 3.03974915897077 3.20274644293832 3.72328088083127 5.47646355193151 2.83321334405622 3.35340671782581 2.61006979274201 +erk 3.92197333628131 3.39114704580865 1.62727783056243 1.16002091679675 2.40694510831829 3.24649099190117 4.10098910494077 6.05443934626937 0.810930216216329 1.62727783056243 4.37071287477361 +erk 4.24563400976833 3.10458667846607 2.65324196460721 0.970778917158225 2.79116510781272 3.6163087612791 4.62497281328427 7.91498300584839 3.24649099190117 4.05698877567833 3.62434093297637 +erk 4.66343909411207 3.40784192438082 0.00995033085316809 1.63705307946707 2.36085400111802 2.70136121295141 3.42751468997953 6.12468339089421 1.37624402526639 3.52636052461616 4.7361984483945 +erk 1.80828877117927 3.58073729549423 2.45958884180371 1.04380405217311 1.52822785700856 5.01063529409626 5.43372200355424 6.66440902035041 2.81540871942271 3.4904285153901 4.47960696301275 +erk 2.27521389619791 2.86220088092947 1.43031124653666 1.7263316639056 1.53901544813755 3.10458667846607 3.59731226058845 5.77455154554441 3.13983261752775 4.12874598893943 4.37071287477361 +erk 3.86702563949741 3.53514535417189 2.43361335540045 1.94304891677428 3.24649099190117 3.90399083373088 4.58700621536042 6.28785856016178 3.11351530921037 3.4626060097908 2.11384296839717 +erk 4.63472898822964 4.24563400976833 3.49953328238302 2.05027016437956 3.75887182593397 2.77258872223978 3.79548918917219 7.01571242048723 3.23080439573347 3.77734810210154 2.54160199346455 +erk 4.30811095172371 3.65065824129374 1.13462272619114 0.00995033085316809 2.51769647261099 2.73436750941958 3.52636052461616 6.28785856016178 3.40784192438082 4.16511363311031 3.14845336057165 +erk 4.28082412916472 2.9391619220656 1.78170913337455 1.73518911773966 0.89199803930511 2.23108909128898 3.16547504814109 6.32256523992728 3.8308129500026 4.3528552573736 3.4904285153901 +erk 2.47653840011748 3.90399083373088 2.12226153886276 1.12492959698548 2.10413415427021 3.37416870927424 5.30826769740121 5.25227342804663 2.63188884013665 3.62434093297637 2.34180580614733 +erk 3.4626060097908 2.55722731136763 0.683096844706444 0.00995033085316809 1.32175583998232 3.85862222870103 4.63472898822964 7.56423847517049 3.92197333628131 4.69134788222914 4.01096295328305 +erk 3.87743156065853 2.94968833505258 1.12492959698548 0.672944473242426 2.09556092355972 2.62466859216316 3.80443779474821 7.0335064842877 3.09557760852371 3.73289633953071 1.93441576962958 +erk 4.31748811353631 3.29953372788566 0.900161349944271 0.00995033085316809 2.85070650150373 3.6609942506244 4.52396013056255 6.64639051484773 3.08648663682246 3.56953269648137 3.08648663682246 +erk 4.30811095172371 3.27336401015227 2.04122032885964 1.98787434815435 0.457424847038875 2.36085400111802 3.24649099190117 5.99146454710798 2.13179677201376 2.91235066461494 1.88858365386359 +erk 4.06560209335645 3.32862668882732 2.13179677201376 0.00995033085316809 1.53901544813755 3.13113691056019 4.00186370942794 5.84643877505772 2.70136121295141 3.20274644293832 1.83418018511201 +erk 3.89385903480047 3.13983261752775 0.60431596685333 0.53062825106217 2.70805020110221 3.85014760171006 4.64439089914137 7.63626960337937 3.66867674679642 4.29045944114839 3.65065824129374 +erk 4.37071287477361 3.15700042115011 1.65441127807683 1.53901544813755 2.72785282839839 2.76000994003292 3.48124008933569 5.93753620508243 3.2188758248682 4.05698877567833 3.37416870927424 +erk 4.64439089914137 4.17284762371004 2.47653840011748 0 3.15700042115011 4.00186370942794 4.71849887129509 6.55677835615804 2.86789890204411 3.60549784517489 2.50959926237837 +erk 3.75887182593397 3.66867674679642 2.3887627892351 1.19694818938897 2.50959926237837 3.58905911883173 4.33598269617247 6.18826412308259 2.61739583283408 3.44361809754611 2.40694510831829 +erk 4.47049528266149 3.66867674679642 0.00995033085316809 1.4036429994545 1.62727783056243 4.12874598893943 4.70953020131233 5.89989735358249 2.56494935746154 3.4904285153901 3.00568260440716 +erk 3.98527346716774 2.9391619220656 1.6094379124341 0.431782416425538 2.84490938381941 3.10458667846607 3.6609942506244 5.24174701505964 3.34638914516716 4.36182392735636 2.99573227355399 +erk 3.88567903008854 3.40119738166216 2.23108909128898 0.512823626428664 0.810930216216329 3.00568260440716 3.60549784517489 6.07993319509559 1.4036429994545 4.20916023665068 0.943905898907128 +erk 3.69635146895264 3.13113691056019 1.24126858906963 1.83418018511201 2.64617479738412 3.38099467434464 5.34233425196481 7.34858753092759 3.32862668882732 3.98527346716774 3.17387845893747 +erk 4.40671924726425 3.74242022104197 1.38629436111989 1.67335123817775 2.20386912005489 2.07819075977818 2.91235066461494 5.95324333428778 2.68784749378469 2.56494935746154 1.96990565461153 +erk 3.58073729549423 2.68784749378469 2.23964529322017 2.46809953147162 3.82209829790016 3.11351530921037 3.59731226058845 5.39816270151775 0.963174317773006 3.17387845893747 4.22683374526818 +erk 3.65065824129374 3.00568260440716 2.79728133483015 2.13179677201376 3.10458667846607 3.3178157727231 3.90399083373088 5.52146091786225 3.02042488614436 3.89385903480047 2.85070650150373 +erk 3.98527346716774 3.31054301339402 1.11514159061932 0.518793793415168 3.21084365317094 3.14845336057165 3.80443779474821 5.88332238848828 3.27336401015227 4.10098910494077 3.74242022104197 +erk 4.02891675689965 2.98568193770049 2.2935443483419 1.5830939370945 1.90657514365664 3.2846635654062 3.71357206670431 5.39816270151775 3.34638914516716 3.68887945411394 2.27521389619791 +erk 3.94931879017184 2.52572864430826 1.45628673293993 0.165514438477573 2.05923883436232 2.63188884013665 3.34638914516716 5.64897423816121 3.09557760852371 4.01998014693324 2.73436750941958 +erk 4.04830062372069 3.16547504814109 2.25758772706331 0.60431596685333 2.24812890719799 2.86789890204411 3.90399083373088 6.57507584059962 3.09557760852371 3.69635146895264 2.4932054526027 +erk 4.70048036579242 4.18205014264121 2.12226153886276 0.00995033085316809 3.01553490085017 2.89591193827178 3.49953328238302 5.98141421125448 3.58073729549423 4.19116874685764 2.96010509591084 +erk 4.11087386417331 3.71357206670431 1.37624402526639 1.36609165380237 2.98568193770049 3.3178157727231 3.79548918917219 5.87211778947542 3.36384159511839 4.23700086262362 3.55248682920838 +erk 4.254193263164 3.20274644293832 0 1.51072193949494 3.75887182593397 4.37071287477361 5.04342511691925 7.70841066725737 1.37624402526639 2.484906649788 3.50855589998265 +erk 4.13676527810605 3.13983261752775 1.20597080698861 1.19694818938897 2.66025953726586 2.67414864942653 3.3178157727231 5.87211778947542 2.87919845729804 3.40784192438082 1.22377543162212 +erk 4.72738781871234 4.29045944114839 0 0.27002713721306 2.4423470353692 2.16791018966744 3.43720781918519 6.18826412308259 3.68887945411394 4.38077585277223 3.77734810210154 +erk 4.5152454784601 3.2188758248682 1.4655675420144 0.378436435720245 2.90690105984738 2.00552585872967 2.85070650150373 6.07073772800249 1.8531680973567 3.54385368206368 5.16478597392351 +pip2 7.79811262882979 8.21202580462344 2.79728133483015 3.68887945411394 2.41591377830105 0 3.73289633953071 4.65396035015752 1.8531680973567 3.16547504814109 4.3528552573736 +pip2 4.7361984483945 5.07517381523383 2.46809953147162 3.47196645255036 2.61006979274201 1.34025042261848 3.64283551561253 4.77912349311153 1.97823903617067 3.80443779474821 2.76000994003292 +pip2 6.32256523992728 6.85329909318608 2.04122032885964 2.92316158071916 3.59731226058845 1.6467336971778 4.17284762371004 4.92725368515721 0.717839793150317 2.99573227355399 2.51769647261099 +pip2 6.45833828334479 6.81783057145415 2.47653840011748 4.0842942263686 2.9391619220656 0.900161349944271 3.7864597824528 4.67282883446191 0.198850858745165 2.88480071284671 1.99741770620125 +pip2 5.75574221358691 6.13339804299665 1.59127394180643 4.30000279919529 3.20274644293832 1.54756250871601 3.41772668361337 7.60936653795421 3.25424296870549 3.90399083373088 2.76000994003292 +pip2 5.19849703126583 5.63121178182137 1.52822785700856 5.63835466933375 3.92986292355648 1.65441127807683 3.92986292355648 5.37063802812766 0.542324290825362 3.3357695763397 2.56494935746154 +pip2 5.36129216570943 5.79301360838414 3.29212628660779 5.07517381523383 4.0926765051214 0.113328685307003 4.22683374526818 4.56017282005736 2.00552585872967 3.31054301339402 1.7630170003624 +pip2 4.93447393313069 5.24174701505964 0.916290731874155 6.12468339089421 3.47196645255036 0.470003629245736 4.65396035015752 5.99893656194668 0.53062825106217 3.47196645255036 2.2935443483419 +pip2 5.15329159449778 5.61312810638807 2.14943391349987 3.91202300542815 3.42751468997953 0.22314355131421 3.13983261752775 3.87743156065853 3.18221184049661 4.33598269617247 3.10458667846607 +pip2 5.77455154554441 6.21460809842219 2.7408400239252 3.15700042115011 2.20386912005489 0.60431596685333 3.64283551561253 3.60549784517489 0 3.16547504814109 2.26695791535089 +pip2 7.6004023345004 7.91498300584839 2.484906649788 2.97552956623647 2.91235066461494 0 4.11087386417331 4.47960696301275 2.14124194258528 3.2846635654062 4.96284463025991 +pip2 5.96357934361845 6.37672694789863 2.40694510831829 4.40671924726425 2.61006979274201 3.38099467434464 4.77912349311153 8.31996102188653 0 3.45315712059287 2.05923883436232 +pip2 4.80402104473326 5.19849703126583 2.9704144655697 2.26695791535089 0.727548607277278 0.431782416425538 3.82209829790016 4.56954300834494 1.80828877117927 3.16547504814109 1.41098697371026 +pip2 6.23244801655052 6.58340922215876 2.37024374146786 4.01096295328305 2.94968833505258 1.32175583998232 4.41642806139121 4.91998092582813 0 3.49953328238302 2.47653840011748 +pip2 5.4249500174814 5.8111409929767 3.07731226054641 3.56953269648137 2.64617479738412 1.36609165380237 4.78749174278205 5.59471137960184 2.20386912005489 4.01096295328305 2.83321334405622 +pip2 4.59612944133594 4.71849887129509 2.4423470353692 4.254193263164 3.20274644293832 1.22377543162212 4.53367418428302 5.84643877505772 2.2213750375685 3.6609942506244 5.6021188208797 +pip2 5.16478597392351 5.44241771052179 2.41591377830105 4.70048036579242 3.75185425327532 2.50959926237837 4.94875989037817 8.24800570160062 0 3.53514535417189 1.33236601909433 +pip2 7.29437729928882 7.66340766489348 2.39789527279837 1.69927861643389 2.99573227355399 0 3.14845336057165 4.36182392735636 0 2.37954613413017 1.82616089594539 +pip2 5.31811999384422 5.87211778947542 3.00568260440716 3.48124008933569 3.14845336057165 0.27763173659828 3.14845336057165 4.63472898822964 2.70136121295141 3.86702563949741 3.10458667846607 +pip2 7.0604763659998 7.42952084278646 2.53369681395743 2.80336038090653 1.10525683138678 1.14103300455206 4.43438186500781 5.85507192220243 0 3.38099467434464 2.7408400239252 +pip2 5.08140436498446 5.59471137960184 2.66025953726586 3.08648663682246 2.88480071284671 3.44361809754611 5.30826769740121 8.37378460812088 1.54756250871601 3.39114704580865 2.53369681395743 +pip2 5.61312810638807 6.01615715969835 2.65324196460721 5.45958551414416 4.31748811353631 0.774727167552368 4.15575319035074 4.83628190695148 2.82137888640921 3.95699637107088 3.02042488614436 +pip2 5.51342874616498 5.96357934361845 2.32238772029023 4.41642806139121 3.50855589998265 2.47653840011748 4.24563400976833 7.51043055637801 0.139761942375159 3.82209829790016 2.71469474382088 +pip2 5.91889385427315 6.37672694789863 2.80336038090653 5.93753620508243 4.16511363311031 0.879626747502564 4.70048036579242 5.80211837537706 0.593326845277734 3.05870707271538 2.72785282839839 +pip2 6.95272864462487 7.35755620091035 2.60268968544438 2.91235066461494 1.7630170003624 0 3.47196645255036 4.56017282005736 2.70805020110221 3.9759363311718 3.12236492448736 +pip2 5.65599181081985 5.92692602597041 2.87919845729804 3.50855589998265 2.31253542384721 2.04122032885964 4.0842942263686 5.87211778947542 2.47653840011748 3.80443779474821 2.63188884013665 +pip2 5.05624580534831 5.61312810638807 0.62057648772511 2.92316158071916 3.16547504814109 0 5.13579843705026 5.93753620508243 0 2.53369681395743 2.20386912005489 +pip2 6.13339804299665 6.58340922215876 2.50959926237837 2.71469474382088 2.53369681395743 2.484906649788 3.62434093297637 6.60258789218934 2.36085400111802 3.85862222870103 2.50959926237837 +pip2 5.63835466933375 6.02586597382531 3.11351530921037 3.43720781918519 3.07731226054641 1.84371920815877 4.34380542185368 5.6021188208797 1.4036429994545 3.32862668882732 0.512823626428664 +pip2 6.43133108193348 6.97073007814353 2.79728133483015 3.58905911883173 3.03013370027132 1.870262530716 4.0842942263686 7.54644627374602 3.03974915897077 4.07414185490458 3.36384159511839 +pip2 5.59471137960184 6.05443934626937 2.86220088092947 3.17387845893747 0.819779831493311 0.343589704390077 2.39789527279837 2.37954613413017 0.86288995514704 3.63495111208838 1.71739505393919 +pip2 5.72031177660741 6.09807428216624 2.33214389523559 2.99573227355399 2.14943391349987 0 2.96010509591084 4.66343909411207 0 3.2846635654062 1.75440368268429 +pip2 4.66343909411207 4.95582705760126 2.39789527279837 4.10098910494077 2.9704144655697 0.0861776962410524 4.89034912822175 5.89164421182577 1.35840915763035 3.63495111208838 1.78170913337455 +pip2 3.90399083373088 3.90399083373088 2.62466859216316 4.15575319035074 2.9704144655697 3.32862668882732 4.60517018598809 7.29437729928882 0.494696241836107 3.56104608260405 2.26695791535089 +pip2 4.56017282005736 4.91265488573605 2.57261223020711 3.23080439573347 2.43361335540045 1.05082162483176 3.74242022104197 5.40717177146012 3.35340671782581 4.85981240436167 4.31748811353631 +pip2 5.88332238848828 6.1527326947041 2.23108909128898 5.12396397940326 3.43720781918519 0 2.61006979274201 4.47049528266149 0 2.9338568698359 2.08691355651854 +pip2 5.19849703126583 5.6021188208797 3.25424296870549 4.90527477843843 3.87743156065853 1.93441576962958 4.79579054559674 5.95324333428778 3.7864597824528 4.70953020131233 3.92197333628131 +pip2 5.27811465923052 5.77455154554441 2.43361335540045 3.40784192438082 3.42751468997953 1.36609165380237 4.74493212836325 6.18826412308259 1.69927861643389 4.0842942263686 2.09556092355972 +pip2 4.0842942263686 4.28082412916472 2.36085400111802 3.07731226054641 1.61938824328727 3.63495111208838 5.06259503302697 8.02322468471667 1.24990173621434 3.6163087612791 2.26695791535089 +pip2 4.7361984483945 4.97673374242057 2.05027016437956 4.87519732320115 3.40119738166216 0 3.48124008933569 4.67282883446191 2.47653840011748 3.51749783735832 2.85070650150373 +pip2 5.01727983681492 5.46806014113513 2.64617479738412 3.31054301339402 2.85070650150373 0.871293365943419 3.74242022104197 5.31811999384422 0 3.59731226058845 2.90690105984738 +pip2 6.07073772800249 6.50279004591562 1.96009478404727 2.36085400111802 3.4904285153901 0.693147180559945 4.42484663185681 5.8111409929767 1.48387468945875 2.64617479738412 2.02419306744936 +pip2 6.70073110954781 7.09672137849476 2.65324196460721 4.28082412916472 3.3178157727231 1.20597080698861 4.3267781604434 5.4510384535657 0.900161349944271 2.4423470353692 1.67335123817775 +pip2 5.15329159449778 5.4971682252932 3.09557760852371 2.9391619220656 2.86789890204411 0 3.87743156065853 4.58700621536042 1.06125650212434 2.92316158071916 2.56494935746154 +pip2 5.61312810638807 6.07073772800249 2.09556092355972 4.98360662170834 3.45315712059287 0.746687947487975 4.16511363311031 5.77455154554441 0.982078472412158 4.67282883446191 5.85507192220243 +pip2 4.80402104473326 5.44241771052179 2.05027016437956 4.94875989037817 1.90657514365664 0 3.76815263500844 4.72738781871234 2.50143595173921 3.40119738166216 3.40784192438082 +pip2 7.05185562295589 7.43838353004431 1.71739505393919 5.04342511691925 2.63188884013665 1.43983512804792 3.96651119071222 7.41155628781116 0.86288995514704 2.77258872223978 1.69009581545155 +pip2 5.03695260241363 5.10594547390058 2.26695791535089 5.20948615284142 3.58905911883173 1.22377543162212 4.70953020131233 5.75574221358691 3.89385903480047 4.50645421304893 3.74242022104197 +pip2 5.47646355193151 5.85507192220243 2.30258509299405 2.83321334405622 3.42751468997953 0.951657875711446 3.4904285153901 4.62497281328427 0.157003748809665 2.484906649788 0.307484699747961 +pip2 5.87211778947542 6.11589212548303 2.33214389523559 2.98568193770049 2.72785282839839 0.756121979721334 5.04342511691925 5.76519110278484 0.500775287912489 3.07731226054641 1.2947271675944 +pip2 6.23244801655052 6.68336094576627 2.70136121295141 2.62466859216316 2.24812890719799 3.2846635654062 4.89034912822175 8.34687925374656 2.45958884180371 4.00186370942794 3.36384159511839 +pip2 7.09672137849476 7.45645455517621 2.52572864430826 2.88480071284671 2.7408400239252 3.47196645255036 5.21493575760899 8.48177324618498 0.936093359170335 3.50855589998265 2.4423470353692 +pip2 6.51174532964473 6.96129604591017 2.98568193770049 3.10458667846607 2.1770218700187 0.215111379616945 3.27336401015227 3.51749783735832 0.343589704390077 3.70622809244855 0 +pip2 4.13676527810605 4.23700086262362 2.68784749378469 3.35340671782581 3.16547504814109 0.198850858745165 4.20020495292158 4.29045944114839 1.56444054650336 3.56104608260405 2.43361335540045 +pip2 4.82028156560504 5.17048399503815 2.70805020110221 3.25424296870549 3.45315712059287 0 3.43720781918519 4.82028156560504 0.982078472412158 3.39114704580865 2.53369681395743 +pip2 6.64639051484773 6.98841318199959 2.62466859216316 2.94968833505258 2.11384296839717 3.31054301339402 4.97673374242057 8.7516327024723 1.19694818938897 3.62434093297637 5.0998664278242 +pip2 4.60517018598809 4.83628190695148 2.91235066461494 3.48124008933569 2.05923883436232 2.37954613413017 4.70953020131233 5.24174701505964 1.870262530716 3.82209829790016 2.39789527279837 +pip2 5.99893656194668 6.41345895716736 1.84371920815877 4.66343909411207 2.52572864430826 2.77881927199042 5.2257466737132 6.99759598298193 1.10525683138678 3.40784192438082 2.76000994003292 +pip2 5.54907608489522 6.01615715969835 1.94304891677428 3.06805293513362 3.87743156065853 0 3.65065824129374 4.00186370942794 3.00568260440716 3.95699637107088 3.29953372788566 +pip2 7.15929190479756 7.51043055637801 2.30258509299405 3.92986292355648 3.74242022104197 1.28647402583768 4.0926765051214 5.20948615284142 3.51749783735832 4.56954300834494 3.87743156065853 +pip2 4.94875989037817 5.43372200355424 1.73518911773966 2.60268968544438 3.69635146895264 0.0295588022415444 5.4510384535657 6.08904487544685 0 2.97552956623647 2.08691355651854 +pip2 4.01998014693324 4.71849887129509 2.68102152871429 3.01553490085017 2.05027016437956 0.631271776841858 2.81540871942271 2.3887627892351 1.31372366828506 2.36085400111802 1.37624402526639 +pip2 5.16478597392351 5.37989735354046 2.21266038546606 4.30000279919529 3.3357695763397 0.405465108108164 3.4626060097908 4.13676527810605 1.43031124653666 3.85862222870103 2.9704144655697 +pip2 7.11476944836646 7.43838353004431 2.55722731136763 4.95582705760126 3.77734810210154 1.04380405217311 3.51749783735832 4.37071287477361 2.33214389523559 3.65065824129374 3.24649099190117 +pip2 5.50533153593236 5.8636311755981 2.36085400111802 2.83321334405622 2.91235066461494 0 3.31054301339402 3.88567903008854 2.41591377830105 3.8416005411316 4.99043258677874 +pip2 2.54160199346455 2.88480071284671 2.57261223020711 4.02891675689965 2.64617479738412 0.131028262406404 3.4904285153901 3.82209829790016 1.15057202759882 3.49953328238302 2.4423470353692 +pip2 5.74620319054015 6.09807428216624 2.75366071235426 2.79116510781272 0.00995033085316809 0.165514438477573 3.38099467434464 3.60549784517489 0 2.58021682959233 1.79840401194672 +pip2 4.20916023665068 4.66343909411207 2.67414864942653 3.13113691056019 2.73436750941958 3.02042488614436 4.27249074760558 6.78219205600679 1.6467336971778 2.79728133483015 1.99741770620125 +pip2 6.20657592672493 6.64639051484773 2.53369681395743 2.66025953726586 2.2213750375685 0.86288995514704 3.3178157727231 3.81330703248899 2.46809953147162 3.55248682920838 2.96010509591084 +pip2 5.90808293816893 6.37672694789863 2.98568193770049 4.86753445045558 3.93963817246112 2.84490938381941 4.21803603456465 7.80710329012598 2.96010509591084 3.80443779474821 2.14943391349987 +pip2 5.31811999384422 5.4971682252932 2.91235066461494 3.3178157727231 3.25424296870549 0 3.74242022104197 4.40671924726425 1.79009141212736 1.7263316639056 1.32175583998232 +pip2 4.91998092582813 5.20948615284142 2.07819075977818 1.39376637595859 2.31253542384721 0.215111379616945 2.50143595173921 4.44382703557933 1.12492959698548 3.05870707271538 4.33598269617247 +pip2 5.72031177660741 6.31354804627709 1.38629436111989 5.20948615284142 3.20274644293832 0.963174317773006 3.3357695763397 5.04342511691925 0.457424847038875 3.86702563949741 2.45958884180371 +pip2 5.33271879326537 5.80211837537706 0.0953101798043249 2.45958884180371 1.83418018511201 2.19499988231411 3.80443779474821 5.64897423816121 1.49290409617815 3.71357206670431 2.19499988231411 +pip2 5.37063802812766 5.82008293035236 3.7864597824528 4.69134788222914 4.47049528266149 1.35840915763035 3.23867845216438 7.48324441607385 0 2.45958884180371 0 +pip2 5.8111409929767 6.10702288774225 2.47653840011748 4.47049528266149 3.06805293513362 1.56444054650336 4.40671924726425 7.49220304261874 3.52636052461616 4.41642806139121 4.03777421073371 +pip2 4.78749174278205 5.37063802812766 2.77258872223978 3.12236492448736 1.56444054650336 1.02604159583327 4.19116874685764 5.63121178182137 2.18605127673809 3.40119738166216 3.15700042115011 +pip2 5.73009978297357 6.14418563412565 1.63705307946707 1.07158361628019 2.36085400111802 1.09861228866811 3.74242022104197 5.48479693349065 0.819779831493311 2.79116510781272 2.50959926237837 +pip2 3.74242022104197 3.8416005411316 2.65324196460721 3.08648663682246 2.67414864942653 1.80828877117927 4.37071287477361 7.06987412845857 3.01553490085017 4.0842942263686 3.48124008933569 +pip2 3.67882911826043 4.0842942263686 2.26695791535089 3.04927304048202 2.36085400111802 0.647103242058538 2.64617479738412 4.01998014693324 0 2.4423470353692 2.02419306744936 +pip2 5.34233425196481 5.6021188208797 3.15700042115011 3.45315712059287 2.36085400111802 1.98787434815435 4.61512051684126 5.37989735354046 2.68784749378469 3.29953372788566 1.54756250871601 +pip2 5.63835466933375 5.99146454710798 2.27521389619791 3.13983261752775 3.41772668361337 3.23867845216438 5.03043792139244 7.6275443904885 3.65065824129374 4.37071287477361 5.46806014113513 +pip2 4.88280192258637 5.23644196282995 2.9391619220656 2.86220088092947 1.08856195281461 4.01096295328305 5.3890717298165 8.35585004100747 2.37954613413017 3.65065824129374 4.66343909411207 +pip2 6.07073772800249 6.45833828334479 2.07819075977818 4.86753445045558 3.2846635654062 0.672944473242426 4.30811095172371 5.37063802812766 1.4036429994545 3.14845336057165 2.50143595173921 +pip2 5.20948615284142 5.41610040220442 3.6609942506244 4.60517018598809 4.24563400976833 0 4.02891675689965 4.69134788222914 0.451075619360217 3.3357695763397 1.86252854011626 +pip2 5.73009978297357 6.24222326545517 2.61739583283408 4.0926765051214 1.92424865227413 1.55603713570699 4.21803603456465 5.67675380226828 2.2935443483419 4.61512051684126 5.14749447681345 +pip2 4.84418708645859 5.27299955856375 2.65324196460721 2.87919845729804 3.04927304048202 0.512823626428664 3.16547504814109 4.30811095172371 2.81540871942271 4.11087386417331 2.41591377830105 +pip2 7.15070145759253 7.51043055637801 2.16791018966744 2.77258872223978 1.708377860289 1.5830939370945 3.67882911826043 4.60517018598809 3.13983261752775 4.02891675689965 2.76000994003292 +pip2 5.2257466737132 5.45958551414416 3.53514535417189 4.78749174278205 3.87743156065853 0.717839793150317 4.48863636973214 5.21493575760899 3.4626060097908 4.77912349311153 3.90399083373088 +pip2 4.65396035015752 5.04342511691925 2.84490938381941 2.96010509591084 1.92424865227413 0 3.4626060097908 4.91998092582813 0 2.55722731136763 2.18605127673809 +pip2 5.78382518232974 6.19644412779452 3.56953269648137 4.24563400976833 2.60268968544438 0 3.76815263500844 4.66343909411207 2.57261223020711 3.74242022104197 4.55071400019203 +pip2 4.24563400976833 4.69134788222914 2.47653840011748 3.90399083373088 2.39789527279837 0.727548607277278 4.72738781871234 5.57594910314632 2.4423470353692 3.62434093297637 2.36085400111802 +pip2 6.92559519711047 7.27655640271871 1.4036429994545 4.80402104473326 2.58776403522771 1.12492959698548 2.68102152871429 4.16511363311031 1.35840915763035 3.3178157727231 2.63188884013665 +pip2 4.33598269617247 4.04830062372069 3.03974915897077 4.69134788222914 4.71849887129509 3.35340671782581 4.91998092582813 7.6275443904885 1.33236601909433 3.80443779474821 2.31253542384721 +pip2 4.0842942263686 4.14630430115281 3.35340671782581 4.11903717481247 3.32862668882732 0.425267735404344 3.6163087612791 4.93447393313069 3.15700042115011 3.98527346716774 3.08648663682246 +pip2 5.83773044716594 6.39526159811545 2.79116510781272 3.9759363311718 2.63188884013665 0.53062825106217 3.48124008933569 4.91998092582813 1.36609165380237 3.3178157727231 1.17865499634165 +pip2 5.6937321388027 5.99893656194668 1.75440368268429 3.13113691056019 1.98787434815435 1.21491274436427 4.69134788222914 5.79301360838414 1.2947271675944 3.12236492448736 1.81645208181843 +pip2 6.37672694789863 6.82654522355659 3.11351530921037 3.49953328238302 3.02042488614436 3.19458313229916 4.254193263164 7.15929190479756 1.99741770620125 3.93963817246112 4.58700621536042 +pip2 6.67329796776765 7.08757370555797 3.85014760171006 2.56494935746154 3.29212628660779 0.476234178996372 3.35340671782581 3.9759363311718 3.79548918917219 4.47960696301275 3.2188758248682 +pip2 5.45958551414416 5.82894561761021 2.82137888640921 2.71469474382088 2.87919845729804 0.00995033085316809 3.49953328238302 4.07414185490458 0.157003748809665 3.48124008933569 1.69927861643389 +pip2 5.13579843705026 5.47646355193151 1.93441576962958 4.20916023665068 2.39789527279837 2.77258872223978 4.14630430115281 7.3038432252777 4.04830062372069 4.93447393313069 3.51749783735832 +pip2 6.46769872610435 6.90775527898214 1.88858365386359 0.385262400790645 5.03695260241363 0.631271776841858 4.0926765051214 5.3890717298165 3.48124008933569 4.19116874685764 3.35340671782581 +pip2 5.64897423816121 6.02586597382531 2.83321334405622 3.01553490085017 2.12226153886276 0.854415328156068 3.3357695763397 3.56953269648137 0 3.48124008933569 2.57261223020711 +pip2 6.45833828334479 6.8627579130514 2.9391619220656 3.92197333628131 3.8416005411316 2.2935443483419 4.53367418428302 7.23128700432762 0.300104592450338 3.49953328238302 2.77881927199042 +pip2 5.45958551414416 5.8111409929767 2.34180580614733 4.11087386417331 2.42480272571829 0 4.254193263164 5.48479693349065 0 2.25758772706331 2.4932054526027 +pip2 5.41610040220442 5.82894561761021 2.62466859216316 4.03777421073371 3.60549784517489 0.756121979721334 4.06560209335645 5.54126354515843 0.712949807856125 3.38099467434464 0.667829372575655 +pip2 5.94542060860658 6.33150184989369 4.87519732320115 4.54223038621422 6.64639051484773 0.113328685307003 3.43720781918519 4.62497281328427 0.476234178996372 2.89591193827178 1.15057202759882 +pip2 7.91498300584839 8.27486682068525 2.70136121295141 2.40694510831829 1.79840401194672 0.943905898907128 4.36182392735636 5.39816270151775 0.500775287912489 2.89591193827178 1.22377543162212 +pip2 6.8001700683022 7.24921505711439 2.05027016437956 2.63188884013665 3.40784192438082 2.50959926237837 4.3528552573736 7.49220304261874 2.62466859216316 3.81330703248899 2.83321334405622 +pip2 5.26269018890489 5.57594910314632 3.02042488614436 2.9704144655697 2.88480071284671 2.9391619220656 4.11087386417331 7.02464903045364 0.746687947487975 2.57261223020711 4.11903717481247 +pip2 3.75887182593397 3.53514535417189 4.76217393479776 5.3890717298165 4.0926765051214 1.19694818938897 3.41772668361337 4.5152454784601 2.73436750941958 3.4904285153901 5.27299955856375 +pip2 7.29437729928882 7.63626960337937 3.55248682920838 3.36384159511839 2.97552956623647 2.04122032885964 3.90399083373088 7.74413662762799 2.37024374146786 3.69635146895264 4.22683374526818 +pip2 4.57779898919196 4.83628190695148 3.98527346716774 5.23644196282995 4.66343909411207 0 3.8308129500026 4.79579054559674 0.746687947487975 3.32862668882732 4.82028156560504 +pip2 4.45201900649392 4.81218435537242 2.79728133483015 4.63472898822964 2.50959926237837 0 4.15575319035074 5.48479693349065 0.00995033085316809 2.98568193770049 1.22377543162212 +pip2 4.52396013056255 4.5152454784601 3.82209829790016 4.38077585277223 3.6163087612791 0 4.93447393313069 5.23644196282995 2.55722731136763 3.90399083373088 2.14124194258528 +pip2 7.05185562295589 7.46565531013406 2.7408400239252 5.03695260241363 3.31054301339402 0.845868267577609 4.3267781604434 5.51342874616498 1.4036429994545 3.39114704580865 2.18605127673809 +pip2 5.14749447681345 5.63121178182137 1.79009141212736 3.3357695763397 3.85014760171006 1.82616089594539 4.28082412916472 5.78382518232974 1.31372366828506 3.4904285153901 2.14943391349987 +pip2 4.96284463025991 5.43372200355424 2.67414864942653 3.2188758248682 2.99573227355399 0.828551817566148 3.40784192438082 4.11903717481247 1.26694760348732 2.81540871942271 2.35137525716348 +pip2 5.31811999384422 5.73009978297357 3.26575941076705 3.13983261752775 1.708377860289 1.69009581545155 4.06560209335645 5.17048399503815 2.51769647261099 4.38949864951258 5.06259503302697 +pip2 5.11799381241676 5.66642668811243 2.83321334405622 3.49953328238302 2.58021682959233 1.51951320490611 4.94875989037817 5.78382518232974 2.50143595173921 3.47196645255036 4.71849887129509 +pip2 6.42162226780652 6.88959130835447 3.36384159511839 3.79548918917219 3.44361809754611 2.25758772706331 5.25227342804663 7.4205789054108 0.165514438477573 1.99741770620125 2.03339760317843 +pip2 5.40717177146012 5.8636311755981 2.77881927199042 5.09375020080676 4.01998014693324 2.37954613413017 4.88280192258637 7.35755620091035 2.23108909128898 3.55248682920838 2.63188884013665 +pip2 4.28082412916472 4.66343909411207 2.75366071235426 3.23080439573347 2.61006979274201 0 3.90399083373088 4.48863636973214 2.50143595173921 3.74242022104197 2.58021682959233 +pip2 5.7037824746562 6.10702288774225 3.12236492448736 3.25424296870549 1.74571553072665 2.42480272571829 4.21803603456465 7.24921505711439 1.43983512804792 3.87743156065853 2.484906649788 +pip2 3.44361809754611 3.54385368206368 2.02419306744936 5.01063529409626 3.04927304048202 0.27002713721306 4.77068462446567 5.54907608489522 3.43720781918519 4.07414185490458 3.10458667846607 +pip2 4.59612944133594 5.21493575760899 2.32238772029023 4.48863636973214 3.52636052461616 0.19062035960865 3.91202300542815 4.78749174278205 2.75366071235426 3.92986292355648 4.15575319035074 +pip2 3.66867674679642 3.64283551561253 2.20386912005489 4.38949864951258 3.2188758248682 0.385262400790645 4.19116874685764 5.27299955856375 0.636576829071551 3.92986292355648 0 +pip2 6.81783057145415 7.22256601882217 1.43031124653666 2.7408400239252 4.15575319035074 0.631271776841858 3.89385903480047 4.96284463025991 0.746687947487975 3.38099467434464 1.4036429994545 +pip2 4.69134788222914 5.17048399503815 2.76000994003292 6.880384082186 4.58700621536042 1.18784342239605 4.04830062372069 5.63121178182137 3.63495111208838 4.20916023665068 1.52822785700856 +pip2 4.46129981556839 4.39814601655377 4.48863636973214 5.50533153593236 4.70953020131233 0 3.51749783735832 4.38949864951258 2.43361335540045 3.56104608260405 4.27249074760558 +pip2 3.58073729549423 3.56104608260405 3.13983261752775 4.56017282005736 3.48124008933569 1.13462272619114 4.31748811353631 5.66642668811243 1.23256026117785 3.23080439573347 2.18605127673809 +pip2 6.18826412308259 6.52941883826223 2.56494935746154 2.91235066461494 1.54756250871601 1.6094379124341 4.79579054559674 5.97126183979046 2.87919845729804 3.73289633953071 2.84490938381941 +pip2 6.16961073249146 6.58340922215876 2.91235066461494 3.05870707271538 0 2.51769647261099 4.5152454784601 7.82524529143177 0.548121408509688 3.67882911826043 2.52572864430826 +pip2 7.90617884039481 8.26590733415575 2.63188884013665 4.55071400019203 3.68887945411394 0.582215619852664 5.27299955856375 6.02586597382531 2.23964529322017 3.73289633953071 3.20274644293832 +pip2 4.36182392735636 5.32300997913841 2.99573227355399 2.91235066461494 2.83321334405622 0.139761942375159 3.11351530921037 4.24563400976833 0.0198026272961797 3.77734810210154 2.05923883436232 +pip2 5.99146454710798 6.30444880242198 2.60268968544438 4.01998014693324 2.71469474382088 1.00795792039998 3.43720781918519 4.99043258677874 2.55722731136763 4.06560209335645 3.4904285153901 +pip2 6.25190388316589 6.59304453414244 2.58021682959233 4.17284762371004 3.16547504814109 1.87946504964716 3.40784192438082 7.43838353004431 3.20274644293832 3.87743156065853 2.60268968544438 +pip2 5.41610040220442 5.72031177660741 3.51749783735832 4.06560209335645 3.42751468997953 1.98787434815435 4.03777421073371 7.45645455517621 0.908258560176891 2.23964529322017 2.18605127673809 +pip2 5.26269018890489 5.58724865840025 2.86789890204411 4.47960696301275 4.16511363311031 0 2.50959926237837 4.97673374242057 0.0676586484738149 2.68784749378469 0.756121979721334 +pip2 5.37063802812766 5.72031177660741 1.41098697371026 1.54756250871601 2.36085400111802 0.746687947487975 2.94968833505258 3.72328088083127 1.25846098961001 3.64283551561253 1.79840401194672 +pip2 3.91202300542815 3.8308129500026 3.03013370027132 2.42480272571829 2.87919845729804 0 4.02891675689965 5.53338948872752 0.908258560176891 3.9926809084456 2.47653840011748 +pip2 3.8416005411316 4.54223038621422 2.32238772029023 2.10413415427021 3.41772668361337 3.38099467434464 4.38949864951258 6.8627579130514 1.13462272619114 2.86220088092947 0.845868267577609 +pip2 7.25841215059531 7.56423847517049 2.66025953726586 4.77912349311153 3.82209829790016 0.792992515529661 4.59612944133594 5.37063802812766 0 2.25758772706331 2.09556092355972 +pip2 3.70622809244855 4.22683374526818 2.9391619220656 3.40119738166216 3.10458667846607 0.970778917158225 2.40694510831829 4.52396013056255 0.86288995514704 4.01998014693324 2.79728133483015 +pip2 3.3178157727231 2.37024374146786 2.83321334405622 2.86220088092947 2.16791018966744 0 3.44361809754611 3.98527346716774 0.845868267577609 3.76815263500844 1.39376637595859 +pip2 7.6182510978767 7.93307977188041 3.16547504814109 3.55248682920838 3.07731226054641 2.51769647261099 4.67282883446191 6.78219205600679 0.970778917158225 3.32862668882732 0.693147180559945 +pip2 6.11589212548303 6.49375383985169 4.91265488573605 5.48479693349065 3.88567903008854 0.963174317773006 3.9759363311718 5.15329159449778 1.7263316639056 3.91202300542815 4.97673374242057 +pip2 5.89989735358249 6.46769872610435 2.68784749378469 4.81218435537242 2.86789890204411 0.215111379616945 3.67882911826043 4.74493212836325 3.13983261752775 4.54223038621422 3.88567903008854 +pip2 3.73289633953071 3.34638914516716 3.10458667846607 3.24649099190117 0.207014169384326 0.451075619360217 3.70622809244855 5.27299955856375 3.65065824129374 4.62497281328427 3.96651119071222 +pip2 5.26269018890489 5.73009978297357 2.68784749378469 3.8308129500026 3.05870707271538 0.86288995514704 2.77881927199042 4.13676527810605 2.98568193770049 3.7864597824528 2.90690105984738 +pip2 6.97073007814353 7.3304052118444 4.76217393479776 5.63835466933375 4.54223038621422 1.15057202759882 3.11351530921037 4.70048036579242 3.82209829790016 4.30811095172371 3.04927304048202 +pip2 5.36129216570943 5.73009978297357 2.72785282839839 3.96651119071222 3.49953328238302 0 2.9704144655697 5.01727983681492 2.10413415427021 4.01096295328305 3.43720781918519 +pip2 5.26269018890489 5.66642668811243 3.03974915897077 4.254193263164 3.64283551561253 2.06812778177956 4.21803603456465 5.68357976733868 2.41591377830105 3.68887945411394 3.11351530921037 +pip2 5.36129216570943 5.73979291217923 1.4655675420144 5.27811465923052 4.40671924726425 1.24126858906963 3.56953269648137 4.82028156560504 0.173953307123438 2.53369681395743 0.703097511413113 +pip2 5.82894561761021 6.21460809842219 3.21084365317094 4.44382703557933 3.66867674679642 0.854415328156068 3.2188758248682 2.77258872223978 2.23108909128898 3.92197333628131 3.19458313229916 +pip2 7.0335064842877 7.3664451483276 0 2.2935443483419 2.75366071235426 0.307484699747961 3.75887182593397 4.56954300834494 0.792992515529661 2.99573227355399 4.01998014693324 +pip2 4.88280192258637 5.28826703069454 1.11514159061932 3.12236492448736 4.03777421073371 0.828551817566148 4.28082412916472 5.37063802812766 3.13983261752775 4.38949864951258 3.74242022104197 +pip2 4.66343909411207 5.14749447681345 2.61006979274201 3.90399083373088 3.70622809244855 1.49290409617815 4.98360662170834 5.97126183979046 2.05923883436232 3.96651119071222 3.53514535417189 +pip2 4.05698877567833 4.28082412916472 3.2846635654062 4.00186370942794 3.77734810210154 1.8531680973567 3.56104608260405 5.51342874616498 2.28442112236637 3.42751468997953 2.36085400111802 +pip2 6.8627579130514 7.23128700432762 2.81540871942271 3.03974915897077 2.62466859216316 2.39789527279837 3.90399083373088 7.33953769540767 0.548121408509688 3.71357206670431 2.33214389523559 +pip2 6.39526159811545 6.8001700683022 3.01553490085017 2.66025953726586 1.02604159583327 0.425267735404344 3.41772668361337 4.91265488573605 0.165514438477573 3.56104608260405 1.88858365386359 +pip2 5.44241771052179 5.8636311755981 2.99573227355399 4.66343909411207 3.52636052461616 0.215111379616945 3.62434093297637 4.53367418428302 1.54756250871601 3.34638914516716 4.66343909411207 +pip2 6.54821910276237 7.00669522683704 3.08648663682246 3.06805293513362 1.61938824328727 1.10525683138678 4.92725368515721 5.88332238848828 3.8308129500026 4.53367418428302 3.39114704580865 +pip2 6.90775527898214 7.32118855673948 2.82137888640921 4.66343909411207 3.18221184049661 1.92424865227413 4.14630430115281 5.6021188208797 1.41098697371026 3.14845336057165 2.86789890204411 +pip2 5.23644196282995 5.67675380226828 2.43361335540045 4.53367418428302 2.64617479738412 0 3.65065824129374 4.85981240436167 0.0392207131532813 2.86789890204411 2.08691355651854 +pip2 4.02891675689965 4.03777421073371 2.47653840011748 4.78749174278205 3.44361809754611 0 4.04830062372069 5.09375020080676 1.22377543162212 2.63188884013665 2.55722731136763 +pip2 5.0998664278242 5.36129216570943 2.76000994003292 6.31354804627709 4.19116874685764 0 3.24649099190117 4.50645421304893 1.67335123817775 4.3528552573736 5.16478597392351 +pip2 6.91671502035361 7.25841215059531 3.04927304048202 3.2846635654062 3.9759363311718 1.870262530716 4.20916023665068 5.84643877505772 0 3.45315712059287 0.582215619852664 +pip2 6.13339804299665 6.66440902035041 3.00568260440716 3.18221184049661 2.00552585872967 0.0953101798043249 3.00568260440716 4.47049528266149 0.494696241836107 2.94968833505258 0.928219302739429 +pip2 5.6937321388027 6.07993319509559 2.04122032885964 2.91235066461494 2.86789890204411 3.16547504814109 4.3528552573736 6.880384082186 0 3.80443779474821 2.54160199346455 +pip2 5.0998664278242 5.59471137960184 4.0926765051214 4.20916023665068 3.13983261752775 0 4.77068462446567 5.40717177146012 0 2.16791018966744 0.412109650826833 +pip2 6.47543271670409 6.93439720992856 2.83321334405622 3.85862222870103 2.86220088092947 0 4.03777421073371 4.98360662170834 3.01553490085017 3.85014760171006 2.28442112236637 +pip2 4.86753445045558 5.21493575760899 2.79728133483015 3.8308129500026 3.16547504814109 0.438254930931155 4.0926765051214 4.49758497530815 0 3.60549784517489 2.65324196460721 +pip2 5.27811465923052 5.65599181081985 2.40694510831829 2.83321334405622 1.6094379124341 3.12236492448736 4.43438186500781 7.74413662762799 1.02604159583327 2.31253542384721 1.99741770620125 +pip2 5.44241771052179 5.78382518232974 2.62466859216316 3.94931879017184 3.10458667846607 1.00795792039998 3.94931879017184 4.85981240436167 1.13462272619114 3.15700042115011 1.88858365386359 +pip2 3.17387845893747 3.48124008933569 2.73436750941958 1.39376637595859 3.14845336057165 1.63705307946707 3.90399083373088 7.53743003658651 1.27815220250019 4.04830062372069 1.9154509415706 +pip2 4.86753445045558 5.25227342804663 3.75185425327532 5.5683445037611 4.54223038621422 0 4.70048036579242 5.68357976733868 0.357674444271816 3.37416870927424 1.98787434815435 +pip2 4.80402104473326 4.18205014264121 2.80336038090653 2.86220088092947 2.24812890719799 0.285178942233662 4.77068462446567 5.64897423816121 0.322083499169113 3.6163087612791 2.09556092355972 +pip2 5.53338948872752 5.91889385427315 2.88480071284671 3.48124008933569 3.4626060097908 1.94304891677428 4.17284762371004 5.50533153593236 0.350656871613169 3.67882911826043 4.76217393479776 +pip2 5.75574221358691 6.09807428216624 2.77881927199042 3.12236492448736 3.71357206670431 1.51951320490611 3.56953269648137 5.36129216570943 0.165514438477573 3.17387845893747 1.69009581545155 +pip2 3.3178157727231 3.9926809084456 3.2846635654062 4.26267987704132 3.55248682920838 0.300104592450338 4.38949864951258 5.4249500174814 3.90399083373088 4.43438186500781 3.58905911883173 +pip2 7.02464903045364 7.34858753092759 2.56494935746154 4.42484663185681 3.72328088083127 0 3.9759363311718 4.55071400019203 1.45628673293993 3.53514535417189 2.70136121295141 +pip2 5.11799381241676 5.54126354515843 2.68102152871429 4.07414185490458 1.66392609771817 0.746687947487975 4.37071287477361 5.46806014113513 0 2.68784749378469 2.68102152871429 +pip2 5.03043792139244 5.51342874616498 3.3178157727231 3.10458667846607 2.66025953726586 1.43983512804792 3.49953328238302 6.68336094576627 0 3.71357206670431 2.27521389619791 +pip2 5.37989735354046 5.25227342804663 3.88567903008854 4.02891675689965 2.9338568698359 2.86789890204411 5.13579843705026 6.89871453432999 0 3.2846635654062 2.37024374146786 +pip2 5.48479693349065 5.76519110278484 2.46809953147162 4.81218435537242 3.7864597824528 2.05027016437956 3.85862222870103 7.19593722647557 1.09861228866811 3.95699637107088 3.03974915897077 +pip2 6.07073772800249 6.37672694789863 2.7408400239252 2.67414864942653 2.58021682959233 1.4655675420144 2.86789890204411 4.26267987704132 1.05082162483176 3.10458667846607 1.24126858906963 +pip2 7.15070145759253 7.50163445788341 2.71469474382088 2.94968833505258 2.65324196460721 2.80336038090653 4.79579054559674 7.00669522683704 0.405465108108164 4.00186370942794 2.39789527279837 +pip2 4.45201900649392 4.82028156560504 2.79728133483015 3.98527346716774 3.27336401015227 1.75440368268429 4.56954300834494 5.62040086571715 1.43031124653666 2.88480071284671 4.23700086262362 +pip2 3.40119738166216 3.73289633953071 2.50143595173921 2.89591193827178 2.91235066461494 0 3.74242022104197 5.46806014113513 0.559615787935423 3.53514535417189 1.6094379124341 +pip2 5.4249500174814 5.75574221358691 3.23867845216438 4.02891675689965 3.44361809754611 1.00795792039998 3.03013370027132 4.11903717481247 2.91235066461494 4.12874598893943 3.24649099190117 +pip2 4.16511363311031 4.37071287477361 3.04927304048202 3.50855589998265 1.73518911773966 0.854415328156068 3.85862222870103 4.26267987704132 1.60140574073684 2.87919845729804 2.21266038546606 +pip2 6.83625927727707 7.1777824161952 2.52572864430826 3.16547504814109 0.262364264467491 1.62727783056243 3.79548918917219 4.44382703557933 0.494696241836107 2.66025953726586 2.34180580614733 +pip2 6.14418563412565 6.65544035036765 2.80336038090653 2.9338568698359 2.36085400111802 0.0769610411361284 4.16511363311031 5.09375020080676 2.79728133483015 3.94931879017184 3.40784192438082 +pip2 6.94408720822953 7.25841215059531 3.03013370027132 2.52572864430826 2.94968833505258 0 4.21803603456465 4.96284463025991 0.936093359170335 2.41591377830105 2.03339760317843 +pip2 4.45201900649392 4.67282883446191 2.67414864942653 3.56104608260405 2.16791018966744 0.307484699747961 2.86789890204411 3.91202300542815 1.27815220250019 3.6609942506244 0.936093359170335 +pip2 6.1527326947041 6.55677835615804 2.84490938381941 3.07731226054641 1.7263316639056 0 3.64283551561253 4.00186370942794 1.11514159061932 3.21084365317094 2.88480071284671 +pip2 6.51174532964473 6.84481547920826 3.18221184049661 3.21084365317094 0.727548607277278 2.02419306744936 4.71849887129509 7.3125534981026 1.39376637595859 3.10458667846607 1.95160817016995 +pip2 4.41642806139121 4.63472898822964 2.86220088092947 2.97552956623647 2.39789527279837 1.9154509415706 3.9759363311718 7.67229245562876 3.34638914516716 4.20020495292158 4.63472898822964 +pip2 4.43438186500781 4.95582705760126 2.26695791535089 4.95582705760126 2.12226153886276 0.371563556432483 4.83628190695148 5.8636311755981 1.2947271675944 3.37416870927424 4.70953020131233 +pip2 5.7037824746562 6.09807428216624 2.91235066461494 2.81540871942271 2.53369681395743 3.25424296870549 5.06259503302697 7.44716835960004 2.86789890204411 3.93963817246112 3.02042488614436 +pip2 5.03695260241363 5.24174701505964 1.69927861643389 3.27336401015227 3.03974915897077 2.51769647261099 4.69134788222914 7.26752542782817 0.765467842139571 3.98527346716774 2.39789527279837 +pip2 6.73696695800186 7.12367278520461 3.86702563949741 4.56017282005736 2.43361335540045 0.314810739840034 4.42484663185681 5.59471137960184 0.425267735404344 3.63495111208838 1.95160817016995 +pip2 5.73009978297357 6.30444880242198 2.75366071235426 4.03777421073371 3.40119738166216 0.73716406597672 3.41772668361337 5.11799381241676 0 2.57261223020711 0.631271776841858 +pip2 4.97673374242057 5.0998664278242 2.75366071235426 5.26269018890489 2.40694510831829 1.41098697371026 4.5152454784601 5.96357934361845 2.46809953147162 3.55248682920838 2.56494935746154 +pip2 5.19849703126583 5.6021188208797 1.37624402526639 2.83321334405622 3.25424296870549 0.542324290825362 4.70048036579242 5.5683445037611 0 3.29212628660779 1.61938824328727 +pip2 7.49220304261874 7.78030308790837 2.85070650150373 3.93963817246112 3.45315712059287 0.0861776962410524 3.26575941076705 4.82028156560504 1.92424865227413 3.58073729549423 1.28647402583768 +pip2 4.20020495292158 4.47960696301275 2.86789890204411 3.29953372788566 2.96010509591084 0.131028262406404 2.86220088092947 4.39814601655377 1.21491274436427 3.05870707271538 2.2935443483419 +pip2 5.48479693349065 5.92692602597041 2.9391619220656 2.86220088092947 1.8531680973567 0.0392207131532813 4.69134788222914 5.37989735354046 2.47653840011748 3.4626060097908 2.16791018966744 +pip2 7.13249755166004 7.47420480649612 2.62466859216316 4.19116874685764 2.7408400239252 1.35840915763035 5.10594547390058 6.35088571671474 0.982078472412158 3.60549784517489 1.81645208181843 +pip2 4.87519732320115 5.36129216570943 3.2846635654062 6.18826412308259 4.46129981556839 1.17865499634165 3.88567903008854 4.99043258677874 2.65324196460721 4.05698877567833 4.40671924726425 +pip2 3.96651119071222 4.29045944114839 2.41591377830105 4.49758497530815 2.73436750941958 0 3.03013370027132 4.3528552573736 0.405465108108164 1.8531680973567 2.01490302054226 +pip2 7.3304052118444 7.70841066725737 3.40119738166216 3.96651119071222 4.254193263164 2.92316158071916 3.8308129500026 7.06987412845857 3.07731226054641 4.28082412916472 3.74242022104197 +pip2 6.81783057145415 7.16857989726403 2.40694510831829 3.8416005411316 2.3887627892351 1.42069578783722 3.6609942506244 5.00394630594546 0.56531380905006 3.42751468997953 1.82616089594539 +pip2 4.12874598893943 4.27249074760558 2.55722731136763 4.44382703557933 3.27336401015227 0.609765571620894 3.76815263500844 4.11087386417331 0.476234178996372 3.39114704580865 2.61739583283408 +pip2 5.61312810638807 6.05443934626937 2.23108909128898 2.96010509591084 2.41591377830105 0 2.84490938381941 3.80443779474821 1.38629436111989 3.29212628660779 2.79728133483015 +pip2 3.6609942506244 3.59731226058845 3.03974915897077 3.6163087612791 2.68784749378469 1.12492959698548 4.33598269617247 5.55682806169954 2.02419306744936 3.98527346716774 2.27521389619791 +pip2 4.06560209335645 4.47049528266149 2.75366071235426 4.56954300834494 2.97552956623647 3.10458667846607 4.97673374242057 6.8627579130514 0.494696241836107 3.2846635654062 2.77258872223978 +pip2 5.07517381523383 5.54907608489522 2.7408400239252 4.16511363311031 3.40119738166216 1.92424865227413 3.8416005411316 7.7621706071382 0.431782416425538 3.55248682920838 2.50143595173921 +pip2 5.4249500174814 5.66642668811243 2.10413415427021 5.15329159449778 3.23080439573347 2.09556092355972 5.04342511691925 6.10702288774225 0.2390169004705 3.80443779474821 2.86789890204411 +pip2 4.14630430115281 4.48863636973214 3.01553490085017 3.15700042115011 4.29045944114839 0.357674444271816 3.69635146895264 5.11799381241676 0 3.05870707271538 1.870262530716 +pip2 5.05624580534831 5.44241771052179 2.9338568698359 2.75366071235426 2.70805020110221 3.23867845216438 4.57779898919196 6.62936325343745 1.11514159061932 2.30258509299405 2.05923883436232 +pip2 3.48124008933569 4.34380542185368 2.37024374146786 3.2188758248682 2.98568193770049 0 3.15700042115011 4.54223038621422 0 3.34638914516716 1.84371920815877 +pip2 5.34233425196481 5.8111409929767 3.06805293513362 2.47653840011748 1.98787434815435 0.431782416425538 3.94931879017184 5.0998664278242 3.42751468997953 4.74493212836325 4.03777421073371 +pip2 6.30444880242198 6.80903930604298 3.29212628660779 5.76519110278484 3.92986292355648 0.215111379616945 4.82028156560504 5.82894561761021 2.2935443483419 3.52636052461616 3.00568260440716 +pip2 5.06259503302697 5.31811999384422 2.07819075977818 3.17387845893747 2.58021682959233 0.576613364303994 3.73289633953071 5.15329159449778 1.10525683138678 3.19458313229916 1.708377860289 +pip2 5.44241771052179 5.59471137960184 3.21084365317094 3.12236492448736 3.72328088083127 0.371563556432483 2.46809953147162 4.36182392735636 2.10413415427021 3.4904285153901 2.21266038546606 +pip2 4.92725368515721 5.26269018890489 2.84490938381941 4.22683374526818 3.37416870927424 3.26575941076705 5.4249500174814 7.67229245562876 1.09861228866811 2.84490938381941 1.65441127807683 +pip2 7.13249755166004 7.48324441607385 3.6609942506244 3.95699637107088 3.04927304048202 1.38629436111989 3.21084365317094 4.91998092582813 0.871293365943419 3.54385368206368 2.33214389523559 +pip2 6.83625927727707 7.24064969425547 3.74242022104197 4.89034912822175 5.74620319054015 0.165514438477573 4.80402104473326 5.20948615284142 0.0392207131532813 3.48124008933569 1.15057202759882 +pip2 4.86753445045558 5.28826703069454 2.80336038090653 2.37954613413017 3.13113691056019 1.00795792039998 3.42751468997953 4.5152454784601 2.37954613413017 3.48124008933569 1.7630170003624 +pip2 4.63472898822964 5.17048399503815 3.38099467434464 4.20020495292158 4.36182392735636 0.512823626428664 3.02042488614436 4.20020495292158 0.405465108108164 3.88567903008854 1.6094379124341 +pip2 4.36182392735636 4.55071400019203 2.2213750375685 3.2188758248682 3.75185425327532 1.45628673293993 4.16511363311031 5.34233425196481 0 2.97552956623647 1.69009581545155 +pip2 5.44241771052179 5.77455154554441 2.64617479738412 3.07731226054641 2.65324196460721 0 4.20020495292158 4.13676527810605 2.71469474382088 4.0926765051214 2.67414864942653 +pip2 6.44888939414686 6.73696695800186 3.2188758248682 4.47960696301275 4.0926765051214 2.484906649788 4.01096295328305 7.46565531013406 0 4.11903717481247 2.61006979274201 +pip2 5.35185813347607 5.65599181081985 2.96010509591084 3.31054301339402 0.963174317773006 0 3.51749783735832 4.98360662170834 0.412109650826833 3.87743156065853 2.52572864430826 +pip2 7.11476944836646 7.51914995766982 2.50143595173921 2.70805020110221 2.76000994003292 0 3.16547504814109 4.83628190695148 0.593326845277734 3.06805293513362 1.82616089594539 +pip2 4.48863636973214 4.98360662170834 2.484906649788 3.41772668361337 1.9154509415706 0 4.06560209335645 5.40717177146012 1.55603713570699 2.72785282839839 2.04122032885964 +pip2 5.27299955856375 5.59471137960184 3.19458313229916 4.86753445045558 3.88567903008854 0 4.18205014264121 4.98360662170834 3.38099467434464 4.54223038621422 3.63495111208838 +pip2 4.01096295328305 3.47196645255036 0.672944473242426 5.7037824746562 3.42751468997953 1.63705307946707 4.5152454784601 6.67329796776765 2.36085400111802 3.4626060097908 2.90690105984738 +pip2 7.04228617193974 7.38461038317697 2.35137525716348 4.97673374242057 2.54160199346455 3.00568260440716 4.11903717481247 7.11476944836646 1.27815220250019 3.43720781918519 2.14124194258528 +pip2 5.2257466737132 5.71042701737487 0 5.6021188208797 2.79116510781272 1.94304891677428 3.79548918917219 6.10702288774225 0.451075619360217 2.86789890204411 1.80828877117927 +pip2 6.96129604591017 7.39326309476384 2.33214389523559 3.56953269648137 4.17284762371004 1.52822785700856 3.38099467434464 3.37416870927424 0.182321556793955 3.48124008933569 1.52822785700856 +pip2 6.18001665365257 6.60258789218934 2.61739583283408 4.01096295328305 3.08648663682246 0.943905898907128 4.5152454784601 5.67675380226828 0 3.42751468997953 2.71469474382088 +pip2 3.96651119071222 4.46129981556839 1.98787434815435 3.3178157727231 3.75887182593397 1.04380405217311 3.8308129500026 4.64439089914137 0.131028262406404 3.03013370027132 1.42069578783722 +pip2 4.56017282005736 4.91998092582813 3.08648663682246 3.62434093297637 2.57261223020711 0.431782416425538 3.72328088083127 4.81218435537242 0.182321556793955 2.77258872223978 2.19499988231411 +pip2 5.35185813347607 5.77455154554441 3.75185425327532 3.81330703248899 2.61006979274201 2.36085400111802 4.44382703557933 6.00881318544259 0 3.80443779474821 1.870262530716 +pip2 5.71042701737487 6.07993319509559 2.54160199346455 3.66867674679642 2.88480071284671 0 3.9759363311718 5.12396397940326 1.28647402583768 3.92986292355648 4.38077585277223 +pip2 7.15070145759253 7.51914995766982 2.9704144655697 5.03043792139244 3.14845336057165 0 4.37071287477361 5.6021188208797 0 3.24649099190117 1.69927861643389 +pip2 6.27852142416584 6.70073110954781 1.78170913337455 2.51769647261099 3.02042488614436 0 3.47196645255036 4.18205014264121 0.405465108108164 3.01553490085017 0.845868267577609 +pip2 6.84481547920826 7.26752542782817 3.48124008933569 3.23867845216438 3.6163087612791 1.07840958135059 3.35340671782581 4.58700621536042 0.457424847038875 3.10458667846607 4.33598269617247 +pip2 4.21803603456465 4.54223038621422 3.39114704580865 2.79728133483015 1.06125650212434 1.01523067972906 4.01096295328305 5.06259503302697 1.60140574073684 3.93963817246112 2.14943391349987 +pip2 5.18178355029209 5.64897423816121 2.97552956623647 3.87743156065853 2.89591193827178 1.33236601909433 3.79548918917219 7.16857989726403 3.67882911826043 4.13676527810605 3.36384159511839 +pip2 7.3125534981026 7.64539769942863 3.26575941076705 3.96651119071222 4.66343909411207 1.23256026117785 4.89034912822175 5.80211837537706 1.34807314829969 3.41772668361337 2.79116510781272 +pip2 5.41610040220442 5.84643877505772 3.15700042115011 3.98527346716774 4.43438186500781 2.9704144655697 4.45201900649392 7.28550654852279 0.871293365943419 3.2188758248682 1.90657514365664 +pip2 5.73009978297357 6.11589212548303 3.01553490085017 2.7408400239252 0 1.57484646766448 4.41642806139121 5.89989735358249 1.2947271675944 2.73436750941958 2.84490938381941 +pip2 5.16478597392351 5.57594910314632 2.53369681395743 2.84490938381941 2.91235066461494 0.792992515529661 3.67882911826043 6.76388490856244 0 3.44361809754611 0 +pip2 5.28826703069454 5.57594910314632 1.22377543162212 3.69635146895264 1.7630170003624 0.182321556793955 3.69635146895264 4.94875989037817 1.28647402583768 3.63495111208838 2.61739583283408 +pip2 4.38949864951258 4.65396035015752 3.25424296870549 2.75366071235426 3.23080439573347 1.51951320490611 4.76217393479776 5.4510384535657 2.80336038090653 3.71357206670431 2.90690105984738 +pip2 4.18205014264121 4.29045944114839 3.14845336057165 3.47196645255036 2.77258872223978 1.05082162483176 4.13676527810605 4.76217393479776 0 3.26575941076705 2.07819075977818 +pip2 3.80443779474821 4.30811095172371 3.19458313229916 2.50959926237837 3.38099467434464 1.34025042261848 5.18178355029209 5.8636311755981 1.37624402526639 2.61006979274201 2.07819075977818 +pip2 5.31811999384422 5.93753620508243 3.05870707271538 3.86702563949741 4.47960696301275 3.09557760852371 4.78749174278205 7.33953769540767 2.37024374146786 3.62434093297637 2.90690105984738 +pip2 5.40717177146012 5.89989735358249 2.37954613413017 3.45315712059287 3.56104608260405 0.548121408509688 3.6163087612791 4.96284463025991 1.43031124653666 2.76000994003292 0.631271776841858 +pip2 4.47049528266149 5.11799381241676 3.23867845216438 5.93753620508243 4.20020495292158 0 3.82209829790016 4.05698877567833 3.49953328238302 4.05698877567833 3.76815263500844 +pip2 6.16961073249146 6.64639051484773 2.73436750941958 4.45201900649392 3.09557760852371 0.385262400790645 4.43438186500781 5.79301360838414 0.0769610411361284 3.09557760852371 1.60140574073684 +pip2 4.07414185490458 4.8283137373023 2.02419306744936 5.27811465923052 3.31054301339402 1.03318448334565 2.84490938381941 4.58700621536042 1.44926916028128 3.02042488614436 2.70136121295141 +pip2 4.99043258677874 5.17048399503815 2.41591377830105 3.55248682920838 3.60549784517489 1.82616089594539 3.9926809084456 7.28550654852279 2.79116510781272 4.01998014693324 3.47196645255036 +pip2 4.01096295328305 4.06560209335645 2.90690105984738 3.03974915897077 2.19499988231411 0.99694863489161 3.34638914516716 4.68213122712422 0.86288995514704 3.39114704580865 0.457424847038875 +pip2 5.44241771052179 5.83773044716594 2.79116510781272 4.0842942263686 3.02042488614436 1.08856195281461 3.40119738166216 4.82028156560504 0.982078472412158 3.13113691056019 1.34025042261848 +pip2 5.77455154554441 6.16961073249146 2.61006979274201 2.75366071235426 1.51951320490611 0 3.25424296870549 4.19116874685764 0 3.35340671782581 2.30258509299405 +pip2 5.48479693349065 5.79301360838414 2.58021682959233 4.55071400019203 3.24649099190117 0.936093359170335 3.17387845893747 5.03043792139244 0.982078472412158 2.2935443483419 1.2947271675944 +pip2 5.18178355029209 5.54907608489522 1.75440368268429 2.55722731136763 3.41772668361337 2.65324196460721 4.38949864951258 7.55538194424027 1.79009141212736 3.74242022104197 2.36085400111802 +pip2 5.95324333428778 6.35957386867238 2.09556092355972 5.04342511691925 3.82209829790016 1.33236601909433 4.89034912822175 6.02586597382531 1.27815220250019 3.19458313229916 1.43983512804792 +pip2 5.7037824746562 6.05443934626937 3.04927304048202 3.02042488614436 2.4932054526027 1.31372366828506 4.11087386417331 5.61312810638807 0.262364264467491 3.18221184049661 2.03339760317843 +pip2 4.84418708645859 5.14749447681345 2.88480071284671 4.03777421073371 3.03974915897077 2.04122032885964 3.60549784517489 6.92559519711047 0 3.27336401015227 2.32238772029023 +pip2 4.93447393313069 5.4249500174814 2.32238772029023 3.18221184049661 3.13113691056019 0.73716406597672 4.79579054559674 5.82008293035236 0.810930216216329 3.43720781918519 1.62727783056243 +pip2 5.4971682252932 5.77455154554441 2.68784749378469 2.484906649788 1.34025042261848 0.56531380905006 4.00186370942794 4.77068462446567 1.50185270175416 4.07414185490458 3.40784192438082 +pip2 7.10578612948127 7.49220304261874 0.928219302739429 5.94542060860658 3.4904285153901 1.06125650212434 3.81330703248899 4.97673374242057 0.727548607277278 3.4904285153901 2.19499988231411 +pip2 5.26269018890489 5.73979291217923 2.33214389523559 3.36384159511839 4.34380542185368 3.75185425327532 5.82008293035236 7.95997452808054 0.122217632724249 3.44361809754611 1.78170913337455 +pip2 6.33150184989369 6.80903930604298 2.7408400239252 2.90690105984738 2.4932054526027 0.173953307123438 3.56104608260405 4.44382703557933 1.96009478404727 3.65065824129374 2.83321334405622 +pip2 4.03777421073371 3.85862222870103 2.61006979274201 4.94875989037817 3.8416005411316 0.56531380905006 3.79548918917219 5.08140436498446 0.636576829071551 3.53514535417189 2.51769647261099 +pip2 5.05624580534831 5.40717177146012 3.12236492448736 5.37989735354046 4.27249074760558 0.457424847038875 4.0842942263686 4.7361984483945 0.198850858745165 2.96010509591084 2.35137525716348 +pip2 6.03548143252476 6.35957386867238 2.81540871942271 3.48124008933569 1.71739505393919 2.4932054526027 5.15329159449778 7.4205789054108 2.21266038546606 4.16511363311031 1.96009478404727 +pip2 2.85070650150373 3.35340671782581 2.43361335540045 4.01998014693324 3.03974915897077 0.548121408509688 3.88567903008854 5.5683445037611 1.12492959698548 2.99573227355399 1.51072193949494 +pip2 7.26752542782817 7.6004023345004 3.25424296870549 3.13983261752775 2.56494935746154 1.59127394180643 4.34380542185368 7.33953769540767 0 3.12236492448736 2.11384296839717 +pip2 4.61512051684126 5.11799381241676 3.8308129500026 5.74620319054015 4.19116874685764 4.22683374526818 6.39526159811545 8.69767973226446 1.9154509415706 3.2188758248682 1.69927861643389 +pip2 5.53338948872752 5.84643877505772 2.56494935746154 4.76217393479776 3.59731226058845 2.61739583283408 3.9759363311718 5.7037824746562 3.53514535417189 4.33598269617247 3.2846635654062 +pip2 6.07993319509559 6.44888939414686 3.47196645255036 3.9759363311718 2.72785282839839 0.916290731874155 3.4904285153901 5.5683445037611 2.30258509299405 3.44361809754611 2.53369681395743 +pip2 4.03777421073371 3.82209829790016 2.70136121295141 4.81218435537242 3.95699637107088 0.916290731874155 3.86702563949741 5.13579843705026 0.783901543828409 3.06805293513362 1.75440368268429 +pip2 6.25190388316589 6.63856778916652 2.62466859216316 3.9759363311718 3.36384159511839 0.104360015324243 3.87743156065853 4.43438186500781 2.53369681395743 4.01998014693324 3.44361809754611 +pip2 4.91998092582813 5.53338948872752 1.48387468945875 2.61739583283408 2.61739583283408 1.94304891677428 1.59127394180643 5.78382518232974 0.989541193613748 2.42480272571829 2.70136121295141 +pip2 5.67675380226828 6.04500531403601 2.58776403522771 3.23080439573347 1.67335123817775 0 5.17048399503815 5.7037824746562 1.27815220250019 3.38099467434464 4.44382703557933 +pip2 4.15575319035074 4.26267987704132 2.54160199346455 2.75366071235426 0 0 3.7864597824528 3.92986292355648 1.4036429994545 3.69635146895264 4.79579054559674 +pip2 5.88332238848828 6.29526600143965 3.26575941076705 3.87743156065853 2.08691355651854 1.42069578783722 3.93963817246112 7.33953769540767 0.173953307123438 3.45315712059287 2.00552585872967 +pip2 7.70841066725737 8.07713663853845 2.80336038090653 2.84490938381941 2.50143595173921 0.00995033085316809 3.70622809244855 4.52396013056255 1.08856195281461 4.01096295328305 1.96990565461153 +pip2 6.60258789218934 6.98841318199959 2.88480071284671 3.74242022104197 2.71469474382088 0.307484699747961 4.03777421073371 5.14749447681345 0.647103242058538 3.13113691056019 4.56954300834494 +pip2 5.4249500174814 5.8111409929767 3.17387845893747 4.15575319035074 2.85070650150373 2.68784749378469 4.17284762371004 7.34858753092759 1.42069578783722 3.6163087612791 4.81218435537242 +pip2 5.0998664278242 5.4971682252932 2.63188884013665 2.68102152871429 0 0.60431596685333 4.27249074760558 5.01063529409626 1.01523067972906 3.29212628660779 1.63705307946707 +pip2 5.44241771052179 5.84643877505772 2.83321334405622 3.82209829790016 2.7408400239252 0.488580014818671 3.48124008933569 4.77068462446567 2.83321334405622 4.41642806139121 3.16547504814109 +pip2 3.68887945411394 3.94931879017184 2.86789890204411 5.0998664278242 4.03777421073371 0.357674444271816 4.02891675689965 4.80402104473326 1.24126858906963 3.34638914516716 1.53901544813755 +pip2 5.28826703069454 5.68357976733868 3.11351530921037 2.19499988231411 2.32238772029023 0.819779831493311 4.59612944133594 6.8627579130514 0.916290731874155 3.23867845216438 2.50959926237837 +pip2 4.94875989037817 5.39816270151775 2.60268968544438 4.17284762371004 3.4626060097908 1.06125650212434 4.38949864951258 5.26269018890489 0.371563556432483 3.2188758248682 2.37954613413017 +pip2 7.1777824161952 7.51043055637801 2.92316158071916 4.62497281328427 3.14845336057165 0.73716406597672 3.52636052461616 4.91998092582813 0.774727167552368 3.08648663682246 2.20386912005489 +pip2 5.12396397940326 5.59471137960184 2.36085400111802 5.08140436498446 2.96010509591084 0.683096844706444 3.89385903480047 5.18178355029209 0.22314355131421 2.4932054526027 1.69009581545155 +pip2 3.90399083373088 3.8308129500026 2.43361335540045 2.70805020110221 1.6094379124341 2.89591193827178 5.16478597392351 7.08757370555797 0 3.01553490085017 2.30258509299405 +pip2 5.44241771052179 5.76519110278484 2.4423470353692 4.99043258677874 3.2846635654062 3.56104608260405 4.99043258677874 7.97796809312855 0.765467842139571 3.60549784517489 2.09556092355972 +pip2 5.18738580584075 5.54126354515843 2.9391619220656 3.01553490085017 2.23964529322017 0.254642218373581 3.77734810210154 3.79548918917219 1.73518911773966 3.75185425327532 4.62497281328427 +pip2 4.66343909411207 4.91265488573605 2.75366071235426 2.4932054526027 3.18221184049661 1.07840958135059 5.18178355029209 6.18826412308259 1.24990173621434 3.4904285153901 4.46129981556839 +pip2 6.32256523992728 6.73696695800186 2.61006979274201 4.47049528266149 3.56953269648137 0 4.17284762371004 4.40671924726425 0 2.24812890719799 1.56444054650336 +pip2 4.55071400019203 4.91998092582813 3.14845336057165 2.2213750375685 3.68887945411394 1.38629436111989 3.09557760852371 6.01615715969835 0.0676586484738149 3.92986292355648 2.87919845729804 +pip2 7.69028602067677 8.02322468471667 3.73289633953071 3.86702563949741 2.9704144655697 0.488580014818671 2.83321334405622 4.23700086262362 0 2.89591193827178 1.35840915763035 +pip2 5.79301360838414 5.99893656194668 2.09556092355972 3.03974915897077 2.86220088092947 0 2.89591193827178 4.40671924726425 0.0769610411361284 3.06805293513362 2.56494935746154 +pip2 5.82894561761021 6.41345895716736 2.66025953726586 3.62434093297637 2.47653840011748 2.15871472257434 4.82028156560504 7.24921505711439 0 2.86789890204411 1.4036429994545 +pip2 4.61512051684126 5.7037824746562 3.12236492448736 2.56494935746154 2.3887627892351 0.357674444271816 2.73436750941958 4.13676527810605 1.07158361628019 2.94968833505258 2.79728133483015 +pip2 5.07517381523383 5.43372200355424 2.76000994003292 3.88567903008854 1.57484646766448 0 4.01998014693324 5.18738580584075 3.07731226054641 3.96651119071222 3.02042488614436 +pip2 5.99893656194668 6.43133108193348 2.484906649788 2.76000994003292 0.73716406597672 3.20274644293832 6.24222326545517 7.6182510978767 0.879626747502564 3.36384159511839 1.05082162483176 +pip2 5.66642668811243 5.48479693349065 1.96990565461153 5.00394630594546 1.95160817016995 1.05082162483176 3.8308129500026 5.39816270151775 1.42069578783722 3.23867845216438 4.70048036579242 +pip2 6.23244801655052 6.68336094576627 3.3357695763397 3.44361809754611 3.03974915897077 3.23867845216438 4.93447393313069 7.78030308790837 0.00995033085316809 3.07731226054641 2.13179677201376 +pip2 6.49375383985169 6.89871453432999 3.9926809084456 4.61512051684126 2.99573227355399 1.13462272619114 3.53514535417189 5.20948615284142 1.30291275218084 3.13983261752775 2.16791018966744 +pip2 6.35957386867238 6.84481547920826 2.76000994003292 3.70622809244855 2.19499988231411 2.33214389523559 4.8283137373023 7.35755620091035 0.19062035960865 3.51749783735832 2.39789527279837 +pip2 4.0926765051214 4.19116874685764 3.70622809244855 5.13579843705026 3.73289633953071 0 3.54385368206368 5.03695260241363 1.41098697371026 3.64283551561253 2.50959926237837 +pip2 5.53338948872752 5.88332238848828 2.7408400239252 3.03013370027132 3.53514535417189 1.39376637595859 4.53367418428302 5.58724865840025 0 3.50855589998265 1.99741770620125 +pip2 5.4971682252932 5.89164421182577 2.76000994003292 3.3178157727231 1.60140574073684 4.38949864951258 5.43372200355424 7.91498300584839 3.13983261752775 3.8416005411316 3.29953372788566 +pip2 6.27852142416584 6.73696695800186 2.32238772029023 4.99043258677874 3.4626060097908 1.45628673293993 4.43438186500781 5.28826703069454 0.916290731874155 3.02042488614436 1.69009581545155 +pip2 5.31811999384422 5.73009978297357 3.12236492448736 3.51749783735832 2.64617479738412 3.2846635654062 4.56954300834494 6.78219205600679 2.01490302054226 3.43720781918519 2.40694510831829 +pip2 5.50533153593236 6.04500531403601 2.77881927199042 2.64617479738412 0.712949807856125 1.60140574073684 3.89385903480047 5.30826769740121 0.576613364303994 3.88567903008854 1.79009141212736 +pip2 7.42952084278646 7.78030308790837 2.84490938381941 4.70048036579242 3.52636052461616 0.559615787935423 4.01998014693324 4.91998092582813 0.73716406597672 3.68887945411394 2.15871472257434 +pip2 7.3125534981026 7.70841066725737 2.60268968544438 4.84418708645859 2.9704144655697 0.0953101798043249 2.46809953147162 4.27249074760558 0.908258560176891 3.02042488614436 0.398776119957368 +pip2 4.17284762371004 4.59612944133594 3.55248682920838 3.76815263500844 4.24563400976833 1.73518911773966 4.92725368515721 6.01615715969835 1.52822785700856 2.54160199346455 0.494696241836107 +pip2 5.5683445037611 5.99146454710798 2.65324196460721 4.80402104473326 0.488580014818671 0.27002713721306 4.36182392735636 5.25227342804663 0 3.03974915897077 2.28442112236637 +pip2 4.46129981556839 4.30811095172371 2.13179677201376 4.91265488573605 2.79116510781272 3.18221184049661 4.28082412916472 6.93439720992856 0 3.26575941076705 1.66392609771817 +pip2 6.5206211275587 6.88959130835447 2.23964529322017 4.87519732320115 2.11384296839717 2.25758772706331 4.29045944114839 5.54126354515843 1.23256026117785 3.58905911883173 0.928219302739429 +pip2 7.27655640271871 7.64539769942863 3.2846635654062 3.6163087612791 2.24812890719799 0.845868267577609 4.37071287477361 5.35185813347607 2.66025953726586 3.75887182593397 3.40119738166216 +pip2 6.35088571671474 6.78219205600679 2.51769647261099 2.4423470353692 1.38629436111989 2.2213750375685 4.18205014264121 5.66642668811243 0.2390169004705 2.70136121295141 2.00552585872967 +pip2 6.77308037565554 7.16857989726403 2.70805020110221 2.34180580614733 2.80336038090653 0.139761942375159 2.73436750941958 4.46129981556839 0.89199803930511 3.68887945411394 2.60268968544438 +pip2 6.62007320653036 7.04228617193974 2.53369681395743 2.67414864942653 2.43361335540045 2.51769647261099 3.85862222870103 6.84481547920826 2.39789527279837 3.03013370027132 2.15871472257434 +pip2 4.10098910494077 4.57779898919196 2.23108909128898 0.900161349944271 2.79116510781272 0.385262400790645 3.18221184049661 4.38077585277223 0 2.86789890204411 2.12226153886276 +pip2 5.79301360838414 6.14418563412565 2.68784749378469 3.67882911826043 3.90399083373088 1.88858365386359 4.10098910494077 5.10594547390058 0.837247524533702 3.87743156065853 2.7408400239252 +pip2 3.75887182593397 3.66867674679642 2.68102152871429 3.01553490085017 2.77881927199042 0 3.19458313229916 3.85014760171006 0 3.10458667846607 2.01490302054226 +pip2 6.16120732169508 6.68336094576627 2.79728133483015 2.99573227355399 3.23867845216438 2.58021682959233 4.02891675689965 7.21376830811864 0.476234178996372 3.63495111208838 2.08691355651854 +pip2 5.27811465923052 5.58724865840025 3.75887182593397 4.18205014264121 4.64439089914137 2.41591377830105 4.0926765051214 6.04500531403601 0.582215619852664 3.60549784517489 2.68784749378469 +pip2 4.78749174278205 5.03043792139244 2.3887627892351 2.62466859216316 2.36085400111802 0 3.87743156065853 4.20916023665068 0.378436435720245 4.11903717481247 2.94968833505258 +pip2 5.4249500174814 5.82894561761021 2.32238772029023 3.09557760852371 1.2947271675944 0 3.49953328238302 3.4626060097908 0.672944473242426 3.20274644293832 1.80828877117927 +pip2 5.82894561761021 6.20657592672493 3.12236492448736 3.25424296870549 4.3267781604434 0.378436435720245 3.59731226058845 5.36129216570943 0.727548607277278 2.97552956623647 0.512823626428664 +pip2 5.89989735358249 6.29526600143965 1.27815220250019 3.05870707271538 3.53514535417189 2.37954613413017 4.83628190695148 6.09807428216624 0.207014169384326 3.08648663682246 2.1770218700187 +pip2 6.01615715969835 6.33150184989369 2.85070650150373 3.06805293513362 2.55722731136763 0 4.23700086262362 5.00394630594546 0.438254930931155 3.12236492448736 2.35137525716348 +pip2 4.01096295328305 4.44382703557933 1.79840401194672 3.00568260440716 1.6094379124341 0.672944473242426 4.21803603456465 4.83628190695148 1.53901544813755 3.11351530921037 2.10413415427021 +pip2 4.99043258677874 5.45958551414416 1.88858365386359 3.10458667846607 3.85014760171006 0.727548607277278 3.85862222870103 5.01727983681492 0.182321556793955 2.53369681395743 1.55603713570699 +pip2 5.04342511691925 5.4249500174814 3.52636052461616 3.90399083373088 1.98787434815435 1.00795792039998 3.58905911883173 4.99043258677874 0.908258560176891 3.20274644293832 0.970778917158225 +pip2 5.64897423816121 5.99146454710798 2.9704144655697 3.4626060097908 1.27815220250019 0.0676586484738149 4.12874598893943 5.25227342804663 0 2.4932054526027 2.75366071235426 +pip2 7.73543335249969 8.14002395246292 3.56104608260405 3.75185425327532 2.9391619220656 0.357674444271816 3.41772668361337 6.99759598298193 0.837247524533702 3.40119738166216 1.90657514365664 +pip2 5.87211778947542 6.25958146406492 2.64617479738412 3.25424296870549 2.80336038090653 0.73716406597672 4.54223038621422 5.68357976733868 1.73518911773966 3.40784192438082 1.81645208181843 +pip2 4.67282883446191 4.50645421304893 2.25758772706331 4.16511363311031 3.41772668361337 0 4.07414185490458 5.15329159449778 0.871293365943419 2.68102152871429 1.57484646766448 +pip2 4.93447393313069 5.10594547390058 2.68102152871429 3.07731226054641 2.39789527279837 0.314810739840034 4.21803603456465 4.91998092582813 0 2.64617479738412 0.717839793150317 +pip2 4.87519732320115 5.21493575760899 2.36085400111802 2.37954613413017 0.488580014818671 1.02604159583327 3.52636052461616 4.70953020131233 0.845868267577609 2.83321334405622 0.900161349944271 +pip2 4.39814601655377 4.93447393313069 3.05870707271538 3.03974915897077 2.12226153886276 0 2.53369681395743 3.91202300542815 0.113328685307003 3.81330703248899 2.55722731136763 +pip2 5.44241771052179 5.82008293035236 3.91202300542815 4.18205014264121 3.59731226058845 0 4.15575319035074 4.18205014264121 1.51072193949494 2.50959926237837 1.60140574073684 +pip2 3.90399083373088 4.00186370942794 3.29953372788566 5.82008293035236 3.64283551561253 1.59127394180643 3.86702563949741 6.93439720992856 0.703097511413113 2.50143595173921 2.10413415427021 +pip2 6.25958146406492 6.71901315438526 2.58021682959233 4.30000279919529 2.73436750941958 0 4.77912349311153 5.63121178182137 0.182321556793955 3.63495111208838 1.90657514365664 +pip2 5.12396397940326 5.4971682252932 2.99573227355399 2.87919845729804 3.07731226054641 0.494696241836107 4.63472898822964 5.51342874616498 0 3.3178157727231 2.1770218700187 +pip2 6.68336094576627 7.07834157955767 2.96010509591084 2.76000994003292 2.85070650150373 0 3.11351530921037 3.8416005411316 0 2.81540871942271 0.928219302739429 +pip2 5.85507192220243 6.08904487544685 3.91202300542815 5.79301360838414 4.37071287477361 0.703097511413113 3.3357695763397 4.06560209335645 0 2.7408400239252 1.4036429994545 +pip2 4.57779898919196 4.56017282005736 1.2947271675944 1.04380405217311 7.0604763659998 2.01490302054226 5.07517381523383 6.06145691892802 1.05082162483176 3.77734810210154 2.01490302054226 +pip2 5.37989735354046 5.99893656194668 3.05870707271538 2.70805020110221 3.08648663682246 2.25758772706331 4.01096295328305 7.28550654852279 1.51951320490611 3.68887945411394 2.62466859216316 +pip2 6.48463523563525 6.85329909318608 2.80336038090653 3.17387845893747 3.19458313229916 0 3.87743156065853 5.0998664278242 0.819779831493311 2.36085400111802 0.89199803930511 +pip2 4.27249074760558 4.74493212836325 3.2188758248682 3.60549784517489 2.35137525716348 1.12492959698548 4.27249074760558 5.55682806169954 0 2.7408400239252 2.04122032885964 +pip2 5.36129216570943 5.73979291217923 2.07819075977818 3.67882911826043 3.90399083373088 1.33236601909433 5.32300997913841 6.14418563412565 0.385262400790645 3.12236492448736 0 +pip2 5.52146091786225 5.91889385427315 2.98568193770049 5.51342874616498 4.38077585277223 1.56444054650336 5.01727983681492 5.79301360838414 0.99694863489161 2.25758772706331 2.30258509299405 +pip2 6.77308037565554 7.19593722647557 3.26575941076705 3.42751468997953 1.97823903617067 0 3.34638914516716 3.8308129500026 0.398776119957368 2.86789890204411 1.96009478404727 +pip2 5.8111409929767 6.25190388316589 2.1770218700187 2.99573227355399 3.62434093297637 1.66392609771817 4.96284463025991 5.98141421125448 1.13462272619114 2.77881927199042 1.30291275218084 +pip2 5.2257466737132 5.45958551414416 3.23867845216438 4.11087386417331 3.13113691056019 2.1770218700187 4.83628190695148 7.3304052118444 2.53369681395743 3.85014760171006 3.19458313229916 +pip2 4.47960696301275 4.5152454784601 2.64617479738412 2.58776403522771 2.18605127673809 2.19499988231411 4.57779898919196 6.92559519711047 0 2.91235066461494 0.60431596685333 +pip2 6.62936325343745 7.02464903045364 2.88480071284671 2.60268968544438 1.54756250871601 1.45628673293993 3.37416870927424 4.88280192258637 1.69009581545155 3.80443779474821 2.58776403522771 +pip2 5.07517381523383 5.54126354515843 3.60549784517489 4.42484663185681 3.21084365317094 1.41098697371026 3.42751468997953 5.25227342804663 0.792992515529661 3.31054301339402 2.05027016437956 +pip2 6.10702288774225 6.5206211275587 2.61739583283408 2.61006979274201 2.07819075977818 2.21266038546606 4.44382703557933 7.64539769942863 0.943905898907128 3.98527346716774 1.87946504964716 +pip2 3.70622809244855 3.50855589998265 2.47653840011748 2.62466859216316 3.29212628660779 0.0953101798043249 4.47049528266149 5.27811465923052 1.41098697371026 3.20274644293832 1.44926916028128 +pip2 3.24649099190117 4.72738781871234 2.28442112236637 3.00568260440716 3.51749783735832 1.41098697371026 4.72738781871234 5.95324333428778 2.90690105984738 4.03777421073371 4.20916023665068 +pip2 5.50533153593236 5.82894561761021 2.9391619220656 3.20274644293832 2.37954613413017 1.34025042261848 3.49953328238302 4.65396035015752 3.58073729549423 4.49758497530815 3.71357206670431 +pip2 3.74242022104197 4.29045944114839 2.96010509591084 4.02891675689965 3.92197333628131 1.7263316639056 4.21803603456465 7.48324441607385 0 3.03974915897077 1.4655675420144 +pip2 4.65396035015752 4.93447393313069 3.40784192438082 3.64283551561253 2.82137888640921 0.982078472412158 4.43438186500781 5.5683445037611 0 2.61006979274201 1.01523067972906 +pip2 6.31354804627709 6.76388490856244 3.13983261752775 3.72328088083127 2.60268968544438 0 3.85014760171006 4.55071400019203 0.845868267577609 3.89385903480047 2.484906649788 +pip2 6.87212810133899 7.28550654852279 2.47653840011748 3.16547504814109 2.9338568698359 3.29212628660779 4.54223038621422 7.15070145759253 0.783901543828409 3.58073729549423 1.99741770620125 +pip2 5.89989735358249 6.31354804627709 3.07731226054641 3.73289633953071 3.40784192438082 0.982078472412158 2.32238772029023 4.60517018598809 0.27763173659828 3.50855589998265 2.33214389523559 +pip2 5.40717177146012 5.74620319054015 2.73436750941958 4.34380542185368 3.38099467434464 1.2947271675944 4.254193263164 7.47420480649612 0.431782416425538 2.86220088092947 1.68268837417369 +pip2 4.14630430115281 4.70048036579242 3.70622809244855 5.83773044716594 4.36182392735636 0 4.44382703557933 5.54126354515843 1.22377543162212 3.62434093297637 3.58905911883173 +pip2 7.0604763659998 7.45645455517621 3.42751468997953 3.74242022104197 3.12236492448736 1.51951320490611 3.53514535417189 5.34233425196481 1.22377543162212 3.03013370027132 1.30291275218084 +pip2 4.87519732320115 5.16478597392351 2.41591377830105 2.86789890204411 1.97823903617067 0 3.4904285153901 3.66867674679642 0.371563556432483 3.4904285153901 2.70805020110221 +pip2 5.4971682252932 5.83773044716594 4.14630430115281 5.07517381523383 3.62434093297637 0.157003748809665 4.31748811353631 5.24174701505964 0 2.7408400239252 1.98787434815435 +pip2 2.53369681395743 3.25424296870549 2.61739583283408 3.8308129500026 3.41772668361337 1.51072193949494 4.78749174278205 5.88332238848828 2.7408400239252 4.13676527810605 3.2846635654062 +pip2 6.48463523563525 6.93439720992856 3.49953328238302 3.41772668361337 2.65324196460721 2.90690105984738 4.00186370942794 7.3125534981026 1.10525683138678 2.37024374146786 0.27763173659828 +pip2 5.53338948872752 5.82894561761021 3.68887945411394 6.08904487544685 4.66343909411207 0 4.99043258677874 5.85507192220243 0.717839793150317 3.19458313229916 1.60140574073684 +pip2 4.27249074760558 4.7361984483945 0.500775287912489 1.07840958135059 3.09557760852371 1.30291275218084 4.37071287477361 5.18178355029209 0.703097511413113 1.96009478404727 1.6094379124341 +pip2 7.07834157955767 7.47420480649612 3.56953269648137 3.75887182593397 3.87743156065853 0.871293365943419 4.29045944114839 5.53338948872752 0 3.4626060097908 2.53369681395743 +pip2 4.7361984483945 5.27811465923052 2.37024374146786 3.10458667846607 3.6163087612791 2.01490302054226 3.58073729549423 5.58724865840025 0.99694863489161 4.10098910494077 3.16547504814109 +pip2 6.26909628370626 6.66440902035041 2.35137525716348 3.27336401015227 3.06805293513362 0 3.34638914516716 4.40671924726425 2.91235066461494 3.65065824129374 2.35137525716348 +pip2 5.71042701737487 6.09807428216624 2.03339760317843 1.83418018511201 1.49290409617815 2.30258509299405 3.96651119071222 7.21376830811864 0.254642218373581 3.50855589998265 2.10413415427021 +pip2 3.94931879017184 4.14630430115281 2.92316158071916 3.71357206670431 3.3357695763397 3.21084365317094 4.15575319035074 6.81783057145415 2.15871472257434 3.52636052461616 2.53369681395743 +pip2 6.07993319509559 6.43133108193348 3.66867674679642 4.11087386417331 2.06812778177956 0 3.96651119071222 3.94931879017184 0.683096844706444 2.63188884013665 1.83418018511201 +pip2 3.80443779474821 4.07414185490458 2.83321334405622 4.74493212836325 3.69635146895264 1.07840958135059 4.78749174278205 5.71042701737487 2.33214389523559 3.6609942506244 1.96990565461153 +pip2 4.38077585277223 4.27249074760558 2.76000994003292 4.11087386417331 3.31054301339402 0.559615787935423 3.05870707271538 4.70048036579242 0.837247524533702 2.81540871942271 0.746687947487975 +pip2 4.54223038621422 4.97673374242057 2.46809953147162 6.01615715969835 4.13676527810605 1.60140574073684 4.5152454784601 5.40717177146012 3.49953328238302 4.38077585277223 3.03974915897077 +pip2 5.73009978297357 6.11589212548303 3.3357695763397 4.98360662170834 3.74242022104197 1.11514159061932 4.11087386417331 5.03695260241363 0.198850858745165 3.05870707271538 1.43031124653666 +pip2 5.4249500174814 6.10702288774225 3.18221184049661 4.55071400019203 3.58073729549423 3.04927304048202 4.21803603456465 7.93307977188041 0.916290731874155 3.6163087612791 1.56444054650336 +pip2 4.83628190695148 5.03695260241363 3.50855589998265 3.74242022104197 2.28442112236637 3.17387845893747 4.80402104473326 7.27655640271871 0.99694863489161 2.60268968544438 1.69927861643389 +pip2 4.27249074760558 4.55071400019203 2.68784749378469 3.98527346716774 2.57261223020711 1.03318448334565 4.57779898919196 5.75574221358691 0.756121979721334 3.15700042115011 2.23108909128898 +pip2 3.67882911826043 4.01998014693324 2.25758772706331 5.51342874616498 3.3357695763397 2.4932054526027 4.89034912822175 7.21376830811864 0.53062825106217 3.9759363311718 2.53369681395743 +pip2 6.61069604471776 7.0335064842877 2.67414864942653 5.58724865840025 4.33598269617247 0.0392207131532813 3.18221184049661 4.67282883446191 2.05923883436232 3.89385903480047 4.72738781871234 +pip2 4.64439089914137 4.93447393313069 2.50959926237837 3.69635146895264 2.7408400239252 0 2.87919845729804 4.67282883446191 0 3.89385903480047 1.88858365386359 +pip2 6.8627579130514 7.25841215059531 2.36085400111802 3.02042488614436 2.4932054526027 1.24126858906963 3.77734810210154 5.30826769740121 0.350656871613169 4.11903717481247 2.80336038090653 +pip2 5.43372200355424 5.68357976733868 2.37954613413017 3.56953269648137 3.39114704580865 1.92424865227413 3.20274644293832 4.20916023665068 0.262364264467491 3.39114704580865 2.05027016437956 +pip2 6.11589212548303 6.35088571671474 2.50959926237837 4.85981240436167 3.7864597824528 2.07819075977818 4.96284463025991 6.08904487544685 1.74571553072665 3.8308129500026 2.67414864942653 +pip2 5.87211778947542 6.22455842927536 2.19499988231411 5.0998664278242 2.9391619220656 0.60431596685333 5.16478597392351 6.25190388316589 0.371563556432483 2.4932054526027 2.45958884180371 +pip2 6.30444880242198 6.7093043402583 2.58776403522771 3.18221184049661 2.92316158071916 1.43983512804792 3.8308129500026 5.24174701505964 2.73436750941958 3.80443779474821 3.17387845893747 +pip2 5.03043792139244 5.44241771052179 2.61739583283408 3.03013370027132 3.45315712059287 0.810930216216329 4.33598269617247 5.61312810638807 0.122217632724249 2.9704144655697 1.22377543162212 +pip2 5.18178355029209 5.66642668811243 2.09556092355972 5.44241771052179 3.45315712059287 2.99573227355399 4.16511363311031 6.87212810133899 0.0295588022415444 3.16547504814109 1.870262530716 +pip2 5.18738580584075 5.31811999384422 2.33214389523559 4.90527477843843 2.71469474382088 3.94931879017184 5.62040086571715 8.00503334463711 2.67414864942653 3.71357206670431 2.10413415427021 +pip2 6.09807428216624 6.50279004591562 3.03974915897077 3.14845336057165 3.17387845893747 0.837247524533702 3.27336401015227 3.9759363311718 0.900161349944271 2.51769647261099 1.87946504964716 +pip2 6.82654522355659 7.23128700432762 2.58776403522771 2.85070650150373 2.13179677201376 1.20597080698861 3.92197333628131 5.07517381523383 0 4.0926765051214 1.69009581545155 +pip2 2.63188884013665 2.90690105984738 2.79728133483015 3.03974915897077 1.94304891677428 0.0295588022415444 3.15700042115011 3.87743156065853 0.494696241836107 3.25424296870549 1.2947271675944 +pip2 5.71042701737487 6.09807428216624 2.92316158071916 3.40119738166216 4.21803603456465 1.41098697371026 3.71357206670431 5.2257466737132 0.0676586484738149 3.6609942506244 2.50143595173921 +pip2 6.98007594056176 7.33953769540767 2.61006979274201 4.70048036579242 3.08648663682246 2.484906649788 4.77912349311153 8.42792472365806 0 1.96990565461153 0.131028262406404 +pip2 5.26269018890489 4.91265488573605 2.2935443483419 5.28826703069454 3.56104608260405 1.27815220250019 3.85014760171006 5.31811999384422 0.951657875711446 3.51749783735832 1.7263316639056 +pip2 5.11799381241676 5.35185813347607 2.37954613413017 4.64439089914137 3.45315712059287 3.63495111208838 4.80402104473326 8.17611034223734 1.04380405217311 3.59731226058845 1.84371920815877 +pip2 5.62040086571715 6.07073772800249 2.4423470353692 2.82137888640921 2.14943391349987 0.300104592450338 3.29212628660779 4.82028156560504 0 3.36384159511839 4.78749174278205 +pip2 5.5683445037611 5.89989735358249 2.50143595173921 3.40119738166216 3.6163087612791 4.47049528266149 5.40717177146012 8.14002395246292 0 2.83321334405622 1.9154509415706 +pip2 5.61312810638807 5.92692602597041 0.231111720963387 5.77455154554441 3.68887945411394 0 3.17387845893747 4.45201900649392 1.03318448334565 2.30258509299405 1.42069578783722 +pip2 5.88332238848828 6.29526600143965 3.13983261752775 4.39814601655377 3.23080439573347 0 3.81330703248899 4.87519732320115 1.6467336971778 4.02891675689965 4.50645421304893 +pip2 5.94542060860658 6.37672694789863 3.09557760852371 3.3178157727231 1.74571553072665 2.36085400111802 4.77912349311153 7.38461038317697 0 3.4904285153901 1.45628673293993 +pip2 7.1777824161952 7.58222919427646 2.67414864942653 4.63472898822964 3.71357206670431 2.2213750375685 3.79548918917219 6.880384082186 1.88858365386359 2.87919845729804 3.94931879017184 +pip2 4.34380542185368 4.55071400019203 2.39789527279837 2.81540871942271 3.4904285153901 0 3.67882911826043 4.10098910494077 0.0769610411361284 3.42751468997953 2.09556092355972 +pip2 5.24174701505964 5.64897423816121 2.82137888640921 4.07414185490458 3.25424296870549 2.91235066461494 4.23700086262362 7.04228617193974 0 2.97552956623647 1.99741770620125 +pip2 6.42162226780652 6.87212810133899 3.03974915897077 2.43361335540045 2.30258509299405 0 3.40784192438082 3.39114704580865 0.500775287912489 3.43720781918519 0 +pip2 6.03548143252476 6.45833828334479 3.68887945411394 3.89385903480047 3.92986292355648 1.61938824328727 5.08140436498446 6.25958146406492 0 2.39789527279837 0.0953101798043249 +pip2 5.41610040220442 5.82894561761021 2.35137525716348 2.98568193770049 4.11903717481247 0 4.45201900649392 4.91998092582813 0.157003748809665 3.29212628660779 1.9154509415706 +pip2 5.19849703126583 5.6021188208797 2.62466859216316 2.25758772706331 3.00568260440716 2.77258872223978 5.31811999384422 8.40983067308774 0.916290731874155 3.44361809754611 4.21803603456465 +pip2 4.14630430115281 4.38077585277223 3.12236492448736 4.42484663185681 3.75185425327532 2.26695791535089 4.53367418428302 7.46565531013406 0.262364264467491 3.43720781918519 2.00552585872967 +pip2 5.96357934361845 6.05443934626937 3.60549784517489 4.77912349311153 3.13983261752775 0 3.60549784517489 4.47049528266149 2.484906649788 3.77734810210154 3.03974915897077 +pip2 6.12468339089421 6.52941883826223 1.87946504964716 3.55248682920838 3.24649099190117 0.207014169384326 4.68213122712422 5.40717177146012 0 3.23867845216438 4.39814601655377 +pip2 3.66867674679642 3.76815263500844 4.28082412916472 4.99043258677874 3.05870707271538 3.20274644293832 4.71849887129509 6.29526600143965 0.936093359170335 2.27521389619791 2.28442112236637 +pip2 5.34233425196481 5.73979291217923 1.9154509415706 3.90399083373088 2.96010509591084 2.80336038090653 5.18178355029209 5.25227342804663 1.32175583998232 3.43720781918519 3.07731226054641 +pip2 6.50279004591562 6.90775527898214 2.65324196460721 2.77258872223978 2.36085400111802 1.03318448334565 3.11351530921037 4.00186370942794 0 3.29953372788566 2.55722731136763 +pip2 3.48124008933569 3.77734810210154 2.42480272571829 4.79579054559674 2.87919845729804 3.18221184049661 4.92725368515721 8.28399930424853 0.879626747502564 2.81540871942271 1.82616089594539 +pip2 4.254193263164 4.68213122712422 3.00568260440716 2.9704144655697 3.02042488614436 2.79116510781272 4.00186370942794 6.85329909318608 0 2.75366071235426 1.19694818938897 +pip2 5.20948615284142 5.6021188208797 1.81645208181843 5.37063802812766 2.94968833505258 0 3.09557760852371 1.2947271675944 3.2846635654062 4.24563400976833 4.52396013056255 +pip2 6.18826412308259 6.58340922215876 2.37024374146786 3.69635146895264 3.41772668361337 0 4.48863636973214 5.09375020080676 0.0676586484738149 3.58905911883173 2.35137525716348 +pip2 7.3664451483276 7.74413662762799 3.82209829790016 3.88567903008854 2.46809953147162 0.86288995514704 4.3528552573736 5.55682806169954 1.99741770620125 3.70622809244855 1.61938824328727 +pip2 3.89385903480047 4.63472898822964 3.05870707271538 2.73436750941958 1.66392609771817 3.29212628660779 4.3267781604434 6.97073007814353 1.4655675420144 3.80443779474821 2.07819075977818 +pip2 5.67675380226828 6.00881318544259 2.94968833505258 3.85862222870103 2.63188884013665 2.00552585872967 3.74242022104197 5.7037824746562 1.6094379124341 3.34638914516716 2.2935443483419 +pip2 5.73009978297357 6.13339804299665 2.86220088092947 2.43361335540045 2.32238772029023 1.74571553072665 4.87519732320115 8.13094230223188 0 2.61006979274201 2.06812778177956 +pip2 4.70953020131233 5.12396397940326 2.68784749378469 2.07819075977818 2.05027016437956 0 3.01553490085017 3.81330703248899 0 2.32238772029023 1.6467336971778 +pip2 5.82008293035236 6.31354804627709 2.98568193770049 3.59731226058845 3.2188758248682 0 4.70953020131233 5.40717177146012 0.683096844706444 2.55722731136763 1.53901544813755 +pip2 4.76217393479776 4.95582705760126 2.89591193827178 2.68784749378469 2.28442112236637 1.7263316639056 4.48863636973214 5.39816270151775 1.01523067972906 2.71469474382088 1.25846098961001 +pip2 5.92692602597041 6.30444880242198 2.62466859216316 4.47049528266149 2.70136121295141 0 5.03043792139244 5.46806014113513 0.693147180559945 3.25424296870549 1.36609165380237 +pip2 5.89989735358249 6.51174532964473 4.15575319035074 4.93447393313069 3.15700042115011 0.989541193613748 4.0926765051214 5.21493575760899 0 3.8308129500026 1.98787434815435 +pip2 5.20948615284142 5.58724865840025 2.58776403522771 2.81540871942271 0.879626747502564 0.139761942375159 3.36384159511839 4.47960696301275 0 2.9391619220656 0.131028262406404 +pip2 4.44382703557933 4.86753445045558 2.61006979274201 2.55722731136763 2.53369681395743 1.00795792039998 3.08648663682246 5.18738580584075 0.22314355131421 3.09557760852371 2.1770218700187 +pip2 4.53367418428302 4.92725368515721 2.23108909128898 5.89164421182577 4.49758497530815 1.51951320490611 4.13676527810605 5.25227342804663 1.06125650212434 3.52636052461616 2.23964529322017 +pip2 5.26269018890489 5.63121178182137 3.32862668882732 3.70622809244855 2.34180580614733 0.693147180559945 4.23700086262362 5.10594547390058 1.69927861643389 2.79116510781272 2.09556092355972 +pip2 3.13113691056019 3.56953269648137 2.80336038090653 3.04927304048202 3.14845336057165 0 4.21803603456465 5.24174701505964 0.837247524533702 3.56953269648137 2.484906649788 +pip2 5.97126183979046 6.32256523992728 2.79728133483015 5.27811465923052 2.67414864942653 0.476234178996372 4.11903717481247 5.14749447681345 1.61938824328727 3.91202300542815 1.97823903617067 +pip2 6.87212810133899 7.29437729928882 0.774727167552368 2.77258872223978 3.8308129500026 0.157003748809665 3.67882911826043 4.86753445045558 0 2.80336038090653 1.35840915763035 +pip2 6.57507584059962 7.01571242048723 3.93963817246112 4.11903717481247 2.71469474382088 0.717839793150317 4.47960696301275 5.54907608489522 0.207014169384326 3.51749783735832 0.609765571620894 +pip2 5.26269018890489 5.63121178182137 3.01553490085017 3.03013370027132 1.9154509415706 2.23964529322017 3.88567903008854 6.88959130835447 0 2.88480071284671 2.27521389619791 +pip2 5.94542060860658 6.20657592672493 2.77258872223978 3.91202300542815 3.23080439573347 1.45628673293993 4.38949864951258 5.4510384535657 0 2.35137525716348 0.765467842139571 +pip2 5.50533153593236 5.83773044716594 2.37954613413017 4.76217393479776 3.70622809244855 1.31372366828506 4.56954300834494 5.4510384535657 0.451075619360217 2.51769647261099 2.26695791535089 +pip2 6.03548143252476 6.4393503711001 2.2213750375685 4.26267987704132 3.3357695763397 0.631271776841858 4.68213122712422 5.62040086571715 0 2.18605127673809 2.63188884013665 +pip2 5.4249500174814 5.77455154554441 3.01553490085017 2.4423470353692 2.3887627892351 1.16938135955632 3.89385903480047 4.87519732320115 0 2.75366071235426 2.2213750375685 +pip2 4.91998092582813 5.4510384535657 3.40119738166216 4.42484663185681 4.254193263164 1.36609165380237 3.88567903008854 5.05624580534831 0.819779831493311 3.34638914516716 1.33236601909433 +pip2 6.29526600143965 6.65544035036765 2.75366071235426 3.25424296870549 2.88480071284671 0.378436435720245 3.95699637107088 4.92725368515721 0 3.45315712059287 2.68102152871429 +pip2 5.12396397940326 5.54907608489522 3.09557760852371 4.50645421304893 3.62434093297637 0 4.03777421073371 4.31748811353631 0.683096844706444 3.34638914516716 0.0582689081239758 +pip2 5.5683445037611 5.90808293816893 1.4655675420144 2.87919845729804 4.12874598893943 0 3.54385368206368 4.95582705760126 0 2.88480071284671 1.12492959698548 +pip2 5.46806014113513 5.94542060860658 2.98568193770049 2.77881927199042 2.81540871942271 3.21084365317094 4.37071287477361 6.77308037565554 3.56104608260405 5.03043792139244 4.04830062372069 +pip2 5.67675380226828 6.16961073249146 3.81330703248899 4.39814601655377 3.03974915897077 1.08856195281461 3.47196645255036 4.01096295328305 3.14845336057165 4.23700086262362 3.3178157727231 +pip2 6.22455842927536 6.55677835615804 0.385262400790645 5.5683445037611 3.60549784517489 1.6094379124341 4.45201900649392 6.00881318544259 0 2.9704144655697 4.0926765051214 +pip2 5.40717177146012 5.90808293816893 1.9154509415706 3.51749783735832 3.11351530921037 1.5830939370945 3.52636052461616 4.91998092582813 0.0582689081239758 2.36085400111802 2.36085400111802 +pip2 5.13579843705026 5.53338948872752 2.73436750941958 2.76000994003292 2.23964529322017 2.31253542384721 4.05698877567833 7.48324441607385 0.3293037471426 3.45315712059287 2.58021682959233 +pip2 5.67675380226828 5.99146454710798 2.98568193770049 4.04830062372069 3.7864597824528 3.15700042115011 5.14749447681345 6.93439720992856 0 2.92316158071916 0.672944473242426 +pip2 3.85862222870103 3.75887182593397 3.07731226054641 3.34638914516716 2.9704144655697 1.4747630091075 3.52636052461616 4.18205014264121 1.26694760348732 3.54385368206368 1.49290409617815 +pip2 4.59612944133594 5.06259503302697 2.99573227355399 2.90690105984738 1.26694760348732 3.67882911826043 4.89034912822175 8.4368504387337 0 2.58021682959233 0 +pip2 5.17048399503815 5.25227342804663 3.02042488614436 3.16547504814109 1.74571553072665 0.300104592450338 3.17387845893747 3.75185425327532 0.113328685307003 2.33214389523559 0 +pip2 6.8001700683022 7.16857989726403 3.73289633953071 3.64283551561253 2.30258509299405 0.774727167552368 4.0842942263686 4.90527477843843 1.57484646766448 3.85862222870103 2.05027016437956 +pip2 5.37989735354046 5.72031177660741 2.46809953147162 3.81330703248899 4.18205014264121 2.2213750375685 4.86753445045558 6.10702288774225 1.9154509415706 3.85862222870103 2.04122032885964 +pip2 5.99893656194668 6.43133108193348 2.79728133483015 4.74493212836325 3.07731226054641 2.60268968544438 4.254193263164 7.32118855673948 1.36609165380237 2.25758772706331 2.21266038546606 +pip2 5.05624580534831 5.27811465923052 3.56953269648137 4.84418708645859 3.96651119071222 3.2188758248682 5.11799381241676 6.880384082186 2.61006979274201 3.98527346716774 3.10458667846607 +pip2 6.13339804299665 6.62007320653036 2.61739583283408 4.13676527810605 2.62466859216316 0 3.9926809084456 4.81218435537242 0.470003629245736 2.79116510781272 1.21491274436427 +pip2 6.70073110954781 7.05185562295589 2.40694510831829 4.3267781604434 3.76815263500844 0 4.42484663185681 5.54126354515843 0.0769610411361284 3.03013370027132 1.57484646766448 +pip2 5.89989735358249 6.27852142416584 0.802001585472027 1.79840401194672 3.29212628660779 0 3.15700042115011 4.40671924726425 1.88858365386359 3.77734810210154 2.24812890719799 +pip2 5.39816270151775 5.79301360838414 3.40784192438082 3.8416005411316 2.79116510781272 1.03318448334565 3.35340671782581 4.23700086262362 0 3.24649099190117 2.16791018966744 +pip2 4.74493212836325 5.15329159449778 3.58073729549423 6.23244801655052 4.12874598893943 0.488580014818671 2.92316158071916 4.30000279919529 0.810930216216329 3.73289633953071 2.14943391349987 +pip2 7.24064969425547 7.65444322647011 3.14845336057165 3.50855589998265 1.71739505393919 0.908258560176891 2.98568193770049 4.63472898822964 1.93441576962958 3.87743156065853 3.24649099190117 +pip2 4.30811095172371 4.94875989037817 4.39814601655377 5.18738580584075 3.53514535417189 0 3.69635146895264 4.91265488573605 0.837247524533702 3.62434093297637 1.99741770620125 +pip2 6.29526600143965 6.70073110954781 2.68102152871429 2.89591193827178 2.90690105984738 1.49290409617815 4.84418708645859 7.51914995766982 1.36609165380237 2.75366071235426 1.52822785700856 +pip2 5.89989735358249 6.27852142416584 2.77881927199042 3.92197333628131 3.16547504814109 1.35840915763035 4.254193263164 5.2257466737132 0 2.30258509299405 1.12492959698548 +pip2 5.03043792139244 5.45958551414416 3.63495111208838 4.98360662170834 3.76815263500844 1.41098697371026 5.28826703069454 6.27852142416584 0.412109650826833 2.83321334405622 1.04380405217311 +pip2 7.24064969425547 7.60936653795421 0.703097511413113 4.31748811353631 2.60268968544438 0 3.47196645255036 4.19116874685764 3.38099467434464 4.41642806139121 4.13676527810605 +pip2 7.34858753092759 7.77106708606541 2.53369681395743 5.20948615284142 3.00568260440716 0.936093359170335 4.41642806139121 5.4510384535657 0 3.27336401015227 1.96990565461153 +pip2 5.01063529409626 5.47646355193151 2.24812890719799 4.49758497530815 3.00568260440716 3.58905911883173 4.99043258677874 7.89729647259588 0.576613364303994 3.31054301339402 2.55722731136763 +pip2 4.26267987704132 4.38949864951258 1.74571553072665 0.431782416425538 3.20274644293832 0 5.03043792139244 6.03548143252476 0 2.60268968544438 1.78170913337455 +pip2 6.39526159811545 6.71901315438526 1.31372366828506 3.24649099190117 2.82137888640921 2.79116510781272 5.27811465923052 4.96284463025991 1.20597080698861 3.18221184049661 2.58776403522771 +pip2 5.14749447681345 5.31811999384422 2.86789890204411 2.77258872223978 2.63188884013665 0 3.4626060097908 3.9759363311718 0 2.97552956623647 2.00552585872967 +pip2 4.28082412916472 4.55071400019203 2.65324196460721 4.42484663185681 3.45315712059287 2.39789527279837 4.80402104473326 5.82008293035236 2.87919845729804 4.18205014264121 3.3178157727231 +pip2 5.4971682252932 5.8636311755981 2.13179677201376 4.68213122712422 3.2188758248682 0.703097511413113 4.0842942263686 5.36129216570943 0.62057648772511 3.04927304048202 1.04380405217311 +pip2 5.97126183979046 6.26909628370626 2.70805020110221 2.79116510781272 0.231111720963387 0.765467842139571 3.72328088083127 4.36182392735636 0 2.77258872223978 1.16938135955632 +pip2 5.30826769740121 5.6021188208797 2.32238772029023 3.4626060097908 3.72328088083127 0.631271776841858 4.30000279919529 5.67675380226828 0.936093359170335 3.2188758248682 1.92424865227413 +pip2 5.61312810638807 6.04500531403601 3.49953328238302 5.45958551414416 4.00186370942794 0 3.80443779474821 4.70048036579242 1.2947271675944 3.60549784517489 1.708377860289 +pip2 5.06259503302697 5.55682806169954 2.24812890719799 3.47196645255036 2.9704144655697 1.28647402583768 3.95699637107088 6.98007594056176 0 4.24563400976833 1.68268837417369 +pip2 6.44888939414686 6.90775527898214 2.68102152871429 3.73289633953071 2.62466859216316 1.93441576962958 4.88280192258637 7.06987412845857 1.39376637595859 2.83321334405622 2.42480272571829 +pip2 5.44241771052179 5.8636311755981 2.64617479738412 3.07731226054641 2.03339760317843 0 4.74493212836325 5.43372200355424 0.756121979721334 2.9704144655697 2.76000994003292 +pip2 7.00669522683704 7.34858753092759 2.70136121295141 4.77912349311153 3.06805293513362 0.845868267577609 4.77912349311153 5.99893656194668 0 3.73289633953071 1.6094379124341 +pip2 5.53338948872752 6.01615715969835 4.0926765051214 4.61512051684126 3.14845336057165 0 3.13113691056019 4.59612944133594 1.19694818938897 3.95699637107088 2.40694510831829 +pip2 5.63835466933375 6.05443934626937 2.67414864942653 4.00186370942794 2.77881927199042 2.83321334405622 4.0842942263686 6.75460409948796 0.672944473242426 3.29212628660779 1.870262530716 +pip2 5.51342874616498 5.92692602597041 2.41591377830105 3.3357695763397 4.36182392735636 0.254642218373581 4.58700621536042 5.53338948872752 0 2.09556092355972 1.01523067972906 +pip2 4.0842942263686 4.59612944133594 3.03013370027132 3.71357206670431 2.51769647261099 2.88480071284671 4.54223038621422 6.35088571671474 0.683096844706444 3.98527346716774 2.35137525716348 +pip2 1.49290409617815 2.45958884180371 2.05923883436232 2.58021682959233 3.51749783735832 0.104360015324243 3.47196645255036 2.54160199346455 0.438254930931155 4.11087386417331 2.66025953726586 +pip2 3.37416870927424 3.09557760852371 1.20597080698861 0.56531380905006 2.90690105984738 3.02042488614436 4.07414185490458 6.8001700683022 0 3.32862668882732 2.11384296839717 +pip2 6.07993319509559 6.37672694789863 2.39789527279837 3.89385903480047 3.29953372788566 1.20597080698861 3.29212628660779 4.68213122712422 2.62466859216316 4.11087386417331 2.60268968544438 +pip2 5.23644196282995 5.45958551414416 2.62466859216316 2.94968833505258 2.62466859216316 1.04380405217311 4.37071287477361 5.82008293035236 1.30291275218084 2.77881927199042 2.05027016437956 +pip2 5.89989735358249 6.26909628370626 2.34180580614733 3.2846635654062 3.18221184049661 1.51951320490611 3.71357206670431 7.43838353004431 0 3.35340671782581 2.00552585872967 +pip2 4.79579054559674 5.01063529409626 2.85070650150373 5.03695260241363 4.06560209335645 1.05082162483176 3.4904285153901 5.10594547390058 0 3.6609942506244 2.77258872223978 +pip2 5.7037824746562 5.99146454710798 3.37416870927424 5.96357934361845 5.15329159449778 0 4.17284762371004 5.51342874616498 0.802001585472027 3.06805293513362 2.03339760317843 +pip2 5.33271879326537 5.68357976733868 2.73436750941958 3.05870707271538 1.77155676191054 1.66392609771817 5.2257466737132 6.16120732169508 0.350656871613169 3.26575941076705 1.5830939370945 +pip2 5.50533153593236 5.85507192220243 2.16791018966744 4.20020495292158 2.70136121295141 1.44926916028128 3.23867845216438 5.28826703069454 1.42069578783722 2.70136121295141 3.91202300542815 +pip2 6.20657592672493 6.64639051484773 3.00568260440716 3.29212628660779 2.21266038546606 2.56494935746154 4.76217393479776 7.83399634170946 0 3.36384159511839 1.07158361628019 +pip2 7.29437729928882 7.65444322647011 2.72785282839839 0.86288995514704 2.25758772706331 0.476234178996372 2.90690105984738 4.10098910494077 0.548121408509688 3.75887182593397 4.23700086262362 +pip2 3.85862222870103 4.0926765051214 3.6609942506244 5.92692602597041 4.05698877567833 0.908258560176891 4.20916023665068 5.18178355029209 1.35840915763035 3.2846635654062 2.3887627892351 +pip2 6.62936325343745 7.04228617193974 0.963174317773006 6.29526600143965 4.01998014693324 1.16002091679675 3.9926809084456 4.91998092582813 0 3.43720781918519 1.28647402583768 +pip2 5.24174701505964 5.6937321388027 0.774727167552368 2.46809953147162 2.70136121295141 1.54756250871601 4.27249074760558 7.27655640271871 0.62057648772511 3.87743156065853 2.50959926237837 +pip2 6.43133108193348 6.87212810133899 3.3357695763397 4.5152454784601 3.60549784517489 1.37624402526639 2.9704144655697 4.48863636973214 0.792992515529661 2.77258872223978 1.34807314829969 +pip2 4.90527477843843 5.48479693349065 2.43361335540045 3.88567903008854 2.67414864942653 1.89761985992753 5.32300997913841 6.55677835615804 0.0295588022415444 2.43361335540045 0 +pip2 5.87211778947542 6.25190388316589 1.59127394180643 5.05624580534831 3.00568260440716 0 2.66025953726586 4.81218435537242 0.636576829071551 3.14845336057165 0.99694863489161 +pip2 5.54126354515843 5.99893656194668 3.8308129500026 3.95699637107088 1.6467336971778 0 4.67282883446191 5.43372200355424 0.593326845277734 3.40119738166216 1.5830939370945 +pip2 4.14630430115281 4.12874598893943 2.86220088092947 2.54160199346455 2.13179677201376 0.928219302739429 2.28442112236637 4.13676527810605 1.26694760348732 2.51769647261099 1.98787434815435 +pip2 4.94875989037817 5.26269018890489 3.82209829790016 4.00186370942794 3.08648663682246 2.87919845729804 4.91998092582813 7.79811262882979 0 3.16547504814109 1.53901544813755 +pip2 6.4393503711001 6.93439720992856 2.40694510831829 3.31054301339402 1.66392609771817 0.494696241836107 3.91202300542815 4.23700086262362 0.113328685307003 2.32238772029023 2.19499988231411 +pip2 6.84481547920826 7.23128700432762 2.3887627892351 2.76000994003292 2.61006979274201 1.89761985992753 4.05698877567833 5.73009978297357 0.99694863489161 2.90690105984738 1.870262530716 +pip2 6.92559519711047 7.25841215059531 2.46809953147162 3.15700042115011 1.61938824328727 1.6094379124341 5.18738580584075 6.29526600143965 0.048790164169432 3.11351530921037 2.56494935746154 +pip2 3.19458313229916 2.91235066461494 1.30291275218084 0.512823626428664 2.50143595173921 2.09556092355972 3.48124008933569 5.18738580584075 0.73716406597672 2.9338568698359 1.23256026117785 +pip2 5.94542060860658 6.42162226780652 3.03974915897077 2.82137888640921 0 0.285178942233662 2.99573227355399 4.11903717481247 0.371563556432483 2.56494935746154 1.51951320490611 +pip2 5.71042701737487 6.13339804299665 2.08691355651854 2.67414864942653 0 0 3.73289633953071 4.82028156560504 0.548121408509688 2.28442112236637 0.89199803930511 +pip2 3.48124008933569 3.69635146895264 2.09556092355972 5.08140436498446 3.96651119071222 0.314810739840034 4.26267987704132 5.45958551414416 1.08856195281461 2.88480071284671 1.49290409617815 +pip2 4.70048036579242 5.05624580534831 3.10458667846607 5.01727983681492 4.03777421073371 3.54385368206368 5.11799381241676 6.96129604591017 0.371563556432483 2.84490938381941 2.05027016437956 +pip2 6.87212810133899 7.22256601882217 2.65324196460721 2.76000994003292 2.81540871942271 2.56494935746154 4.36182392735636 5.71042701737487 0 3.11351530921037 2.2213750375685 +pip2 6.01615715969835 6.36818718635049 2.55722731136763 2.62466859216316 0 0.542324290825362 2.57261223020711 4.01998014693324 0.576613364303994 3.23867845216438 0 +pip2 7.58222919427646 7.90617884039481 2.60268968544438 3.2188758248682 2.35137525716348 0.951657875711446 3.80443779474821 5.23644196282995 3.54385368206368 4.27249074760558 2.99573227355399 +pip2 7.26752542782817 7.63626960337937 2.68102152871429 3.38099467434464 2.62466859216316 0.99694863489161 3.7864597824528 4.62497281328427 1.51072193949494 3.52636052461616 2.14124194258528 +pip2 5.37063802812766 5.89164421182577 1.98787434815435 2.89591193827178 3.56104608260405 1.10525683138678 3.25424296870549 5.14749447681345 0.300104592450338 3.03974915897077 1.73518911773966 +pip2 5.6937321388027 6.22455842927536 2.97552956623647 3.95699637107088 3.47196645255036 3.79548918917219 4.69134788222914 7.22256601882217 1.07158361628019 3.19458313229916 2.14943391349987 +pip2 5.41610040220442 5.90808293816893 1.38629436111989 3.02042488614436 2.14124194258528 0.802001585472027 4.18205014264121 5.54126354515843 2.15871472257434 3.55248682920838 1.73518911773966 +pip2 3.77734810210154 4.01998014693324 2.90690105984738 4.56954300834494 3.3178157727231 0 3.75185425327532 4.23700086262362 2.66025953726586 3.75887182593397 3.15700042115011 +pip2 5.26269018890489 5.5683445037611 4.10098910494077 4.78749174278205 3.64283551561253 3.35340671782581 4.96284463025991 8.69767973226446 2.60268968544438 3.75185425327532 2.84490938381941 +pip2 7.75319426988434 8.09498875930377 2.41591377830105 3.79548918917219 2.85070650150373 0 3.42751468997953 3.62434093297637 0 3.08648663682246 2.70805020110221 +pip2 6.28785856016178 6.77308037565554 2.39789527279837 3.67882911826043 2.86789890204411 1.05082162483176 4.85981240436167 5.51342874616498 0.943905898907128 3.8308129500026 2.67414864942653 +pip2 5.41610040220442 5.68357976733868 2.58021682959233 3.15700042115011 1.9154509415706 1.4036429994545 5.04342511691925 6.25190388316589 0.746687947487975 2.79116510781272 0.00995033085316809 +pip2 3.25424296870549 4.17284762371004 3.76815263500844 4.01998014693324 2.02419306744936 3.13113691056019 4.19116874685764 6.83625927727707 2.65324196460721 3.70622809244855 2.94968833505258 +pip2 5.98141421125448 6.56526497003536 3.29212628660779 5.37063802812766 3.94931879017184 1.84371920815877 3.71357206670431 7.27655640271871 3.51749783735832 4.70048036579242 4.02891675689965 +pip2 5.13579843705026 5.51342874616498 2.53369681395743 3.20274644293832 3.51749783735832 1.7630170003624 3.77734810210154 7.00669522683704 0 3.13113691056019 0.3293037471426 +pip2 4.88280192258637 5.24174701505964 3.09557760852371 4.45201900649392 2.94968833505258 0.518793793415168 3.77734810210154 5.18178355029209 0.542324290825362 3.60549784517489 1.31372366828506 +pip2 7.42952084278646 7.81601383915903 2.77258872223978 2.75366071235426 1.5830939370945 2.19499988231411 3.8416005411316 7.24064969425547 0 3.12236492448736 0.470003629245736 +pip2 4.95582705760126 5.32300997913841 0.2390169004705 2.57261223020711 3.4904285153901 0.254642218373581 4.254193263164 4.84418708645859 0.343589704390077 3.45315712059287 2.50959926237837 +pip2 5.48479693349065 5.89164421182577 2.87919845729804 3.40119738166216 2.72785282839839 0 2.9391619220656 3.92197333628131 1.16938135955632 2.86789890204411 2.24812890719799 +pip2 6.25958146406492 6.70073110954781 2.79116510781272 3.42751468997953 2.9391619220656 1.16002091679675 3.13113691056019 4.16511363311031 0.104360015324243 2.96010509591084 1.32175583998232 +pip2 4.30811095172371 4.78749174278205 2.94968833505258 4.74493212836325 2.70805020110221 0.165514438477573 3.74242022104197 4.77068462446567 0 3.13113691056019 2.42480272571829 +pip2 5.64897423816121 6.05443934626937 2.87919845729804 2.79728133483015 2.45958884180371 0 3.85862222870103 4.19116874685764 2.40694510831829 4.30811095172371 2.99573227355399 +pip2 4.0842942263686 4.0926765051214 2.01490302054226 5.07517381523383 2.37954613413017 0.951657875711446 3.62434093297637 7.1777824161952 0.963174317773006 2.53369681395743 1.34807314829969 +pip2 5.5683445037611 5.90808293816893 4.01998014693324 4.91998092582813 2.89591193827178 0 4.42484663185681 5.26269018890489 1.08856195281461 3.02042488614436 2.02419306744936 +pip2 6.04500531403601 6.48463523563525 0.854415328156068 6.14418563412565 3.75887182593397 3.17387845893747 4.52396013056255 7.94200680848986 0.500775287912489 3.45315712059287 1.9154509415706 +pip2 4.46129981556839 4.98360662170834 3.77734810210154 3.6609942506244 1.36609165380237 0 4.34380542185368 4.69134788222914 0 2.60268968544438 0.989541193613748 +pip2 5.51342874616498 5.96357934361845 1.96990565461153 2.99573227355399 3.17387845893747 1.36609165380237 4.15575319035074 5.79301360838414 1.94304891677428 3.87743156065853 3.62434093297637 +pip2 5.40717177146012 5.71042701737487 3.29953372788566 5.13579843705026 3.62434093297637 0.916290731874155 4.14630430115281 4.86753445045558 0 3.36384159511839 1.95160817016995 +pip2 4.66343909411207 4.72738781871234 2.50959926237837 4.26267987704132 3.68887945411394 0 3.23867845216438 3.8308129500026 0 2.71469474382088 1.69009581545155 +pip2 4.8283137373023 5.21493575760899 0.845868267577609 1.63705307946707 1.71739505393919 1.20597080698861 3.85862222870103 4.98360662170834 0 3.2846635654062 1.77155676191054 +pip2 5.19849703126583 5.36129216570943 2.47653840011748 3.9759363311718 2.36085400111802 0.207014169384326 4.97673374242057 5.78382518232974 0.53062825106217 2.98568193770049 2.11384296839717 +pip2 6.34035930372775 6.69208374250663 2.9338568698359 3.71357206670431 2.92316158071916 0.122217632724249 3.45315712059287 4.74493212836325 1.50185270175416 3.10458667846607 2.50959926237837 +pip2 7.79811262882979 8.13094230223188 2.46809953147162 2.56494935746154 1.65441127807683 0 3.29212628660779 4.83628190695148 1.31372366828506 2.76000994003292 2.31253542384721 +pip2 5.82894561761021 6.19644412779452 2.47653840011748 3.09557760852371 2.20386912005489 2.27521389619791 4.254193263164 7.6275443904885 0 2.79728133483015 1.60140574073684 +pip2 6.11589212548303 6.52941883826223 2.2935443483419 2.70805020110221 2.37954613413017 2.28442112236637 4.69134788222914 5.77455154554441 0.438254930931155 2.36085400111802 2.07819075977818 +pip2 4.87519732320115 5.29831736654804 2.68102152871429 2.77881927199042 2.50959926237837 2.484906649788 5.25227342804663 7.45645455517621 0.908258560176891 3.03013370027132 2.28442112236637 +pip2 4.69134788222914 5.04342511691925 2.27521389619791 4.55071400019203 3.06805293513362 1.870262530716 3.6609942506244 4.94875989037817 0 3.80443779474821 1.49290409617815 +pip2 1.75440368268429 2.86789890204411 2.15871472257434 3.92986292355648 3.68887945411394 0.476234178996372 3.92197333628131 5.06259503302697 0.300104592450338 2.87919845729804 2.36085400111802 +pip2 7.49220304261874 7.89729647259588 3.20274644293832 3.19458313229916 2.64617479738412 0 3.92986292355648 3.96651119071222 1.33236601909433 2.9391619220656 2.57261223020711 +pip2 5.72031177660741 6.16961073249146 3.25424296870549 3.52636052461616 1.48387468945875 0.357674444271816 3.56104608260405 4.00186370942794 0 3.55248682920838 2.36085400111802 +pip2 6.49375383985169 6.85329909318608 4.05698877567833 4.07414185490458 1.94304891677428 2.55722731136763 4.06560209335645 7.26752542782817 1.04380405217311 2.27521389619791 0.970778917158225 +pip2 7.59135704669855 7.92407232492342 4.38077585277223 6.38687931936265 4.94875989037817 0.405465108108164 3.66867674679642 5.37989735354046 1.77155676191054 2.82137888640921 2.04122032885964 +pip2 4.0926765051214 4.58700621536042 1.8531680973567 3.85862222870103 3.03013370027132 1.51951320490611 3.71357206670431 7.06987412845857 0.048790164169432 3.47196645255036 2.14124194258528 +pip2 6.72743172485086 7.09672137849476 2.484906649788 3.03013370027132 1.86252854011626 1.63705307946707 5.31811999384422 6.38687931936265 0.60431596685333 3.24649099190117 2.01490302054226 +pip2 6.54821910276237 7.04228617193974 0.810930216216329 2.62466859216316 2.35137525716348 0 3.70622809244855 4.77068462446567 3.02042488614436 4.29045944114839 3.75887182593397 +pip2 5.13579843705026 5.33271879326537 1.16002091679675 2.58021682959233 3.34638914516716 0.828551817566148 4.60517018598809 5.62040086571715 1.30291275218084 3.47196645255036 2.10413415427021 +pip2 4.30811095172371 4.48863636973214 3.42751468997953 3.92197333628131 4.11087386417331 1.24990173621434 4.56017282005736 5.7037824746562 2.66025953726586 3.66867674679642 2.9338568698359 +pip2 5.53338948872752 5.87211778947542 1.98787434815435 3.01553490085017 2.75366071235426 0 2.70805020110221 3.34638914516716 1.94304891677428 3.87743156065853 5.55682806169954 +pip2 5.27811465923052 5.63835466933375 2.63188884013665 3.67882911826043 2.83321334405622 0 3.29953372788566 4.47049528266149 0 3.26575941076705 2.24812890719799 +pip2 4.14630430115281 4.46129981556839 2.65324196460721 2.61006979274201 2.00552585872967 0.104360015324243 3.12236492448736 4.20916023665068 1.66392609771817 3.44361809754611 2.75366071235426 +pip2 6.08904487544685 6.51174532964473 2.58021682959233 2.70136121295141 2.62466859216316 3.17387845893747 3.9759363311718 6.89871453432999 2.25758772706331 3.4904285153901 4.97673374242057 +pip2 3.74242022104197 3.81330703248899 2.79116510781272 4.58700621536042 3.60549784517489 3.06805293513362 4.7361984483945 7.95997452808054 0 2.9391619220656 2.03339760317843 +pip2 5.63121178182137 5.85507192220243 2.14124194258528 3.41772668361337 2.33214389523559 3.43720781918519 4.50645421304893 7.75319426988434 1.66392609771817 3.54385368206368 5.01727983681492 +pip2 5.82008293035236 6.23244801655052 2.70805020110221 4.66343909411207 3.41772668361337 0.712949807856125 5.00394630594546 5.96357934361845 0.854415328156068 3.16547504814109 2.62466859216316 +pip2 2.25758772706331 2.43361335540045 3.06805293513362 4.71849887129509 4.07414185490458 0.756121979721334 4.18205014264121 5.18738580584075 1.06125650212434 3.4626060097908 2.10413415427021 +pip2 5.68357976733868 5.99146454710798 3.98527346716774 4.38949864951258 3.08648663682246 0 3.3178157727231 4.29045944114839 2.1770218700187 3.91202300542815 2.79728133483015 +pip2 4.76217393479776 5.01727983681492 2.68784749378469 4.3528552573736 3.14845336057165 0.928219302739429 3.47196645255036 4.44382703557933 0.703097511413113 2.52572864430826 2.02419306744936 +pip2 6.56526497003536 6.98841318199959 2.61006979274201 2.58021682959233 0.00995033085316809 1.60140574073684 2.58021682959233 3.37416870927424 0 3.23867845216438 2.4932054526027 +pip2 6.26909628370626 6.71901315438526 2.70805020110221 2.52572864430826 0 0.0582689081239758 3.98527346716774 4.77912349311153 0.943905898907128 3.12236492448736 0.970778917158225 +pip2 4.3267781604434 4.70953020131233 2.66025953726586 4.38077585277223 3.14845336057165 1.34025042261848 3.75887182593397 5.31811999384422 2.92316158071916 3.89385903480047 2.76000994003292 +pip2 3.75887182593397 4.27249074760558 3.16547504814109 5.71042701737487 4.66343909411207 0.810930216216329 4.03777421073371 5.03043792139244 1.12492959698548 4.05698877567833 2.42480272571829 +pip2 5.53338948872752 5.92692602597041 3.40119738166216 3.86702563949741 2.65324196460721 0.963174317773006 3.87743156065853 5.10594547390058 1.73518911773966 2.81540871942271 1.61938824328727 +pip2 5.57594910314632 6.12468339089421 1.34807314829969 2.64617479738412 3.72328088083127 0 3.67882911826043 4.49758497530815 0.582215619852664 3.26575941076705 1.23256026117785 +pip2 5.89164421182577 6.29526600143965 2.4423470353692 2.85070650150373 3.3178157727231 0.672944473242426 3.9926809084456 4.18205014264121 0.2390169004705 3.16547504814109 1.708377860289 +pip2 5.45958551414416 5.8111409929767 2.87919845729804 2.62466859216316 2.64617479738412 1.4036429994545 4.62497281328427 5.85507192220243 0.908258560176891 2.47653840011748 0 +pip2 3.54385368206368 3.71357206670431 3.56953269648137 5.18178355029209 4.04830062372069 2.72785282839839 4.12874598893943 6.96129604591017 0.73716406597672 2.91235066461494 2.1770218700187 +pip2 4.84418708645859 5.3890717298165 3.40119738166216 3.92197333628131 2.70136121295141 1.02604159583327 2.92316158071916 4.29045944114839 1.14103300455206 3.3357695763397 1.83418018511201 +pip2 5.58724865840025 5.89164421182577 2.89591193827178 3.7864597824528 2.94968833505258 0 2.97552956623647 4.14630430115281 0.774727167552368 3.29953372788566 2.00552585872967 +pip2 4.13676527810605 4.15575319035074 1.57484646766448 4.95582705760126 3.26575941076705 0.27763173659828 4.37071287477361 5.73009978297357 1.17865499634165 3.6609942506244 2.27521389619791 +pip2 5.91889385427315 6.39526159811545 2.3887627892351 4.67282883446191 2.88480071284671 0 3.59731226058845 4.37071287477361 1.5830939370945 3.42751468997953 2.2935443483419 +pip2 6.98841318199959 7.38461038317697 2.92316158071916 2.43361335540045 2.52572864430826 0 2.94968833505258 4.70953020131233 1.17865499634165 2.36085400111802 1.79840401194672 +pip2 7.91498300584839 8.26590733415575 2.42480272571829 4.46129981556839 2.58776403522771 2.94968833505258 4.16511363311031 6.98007594056176 1.31372366828506 3.40119738166216 1.87946504964716 +pip2 5.48479693349065 5.90808293816893 2.79728133483015 5.7037824746562 4.23700086262362 1.08856195281461 3.77734810210154 4.78749174278205 2.54160199346455 3.52636052461616 4.67282883446191 +pip2 7.12367278520461 7.49220304261874 2.42480272571829 4.36182392735636 2.9704144655697 0.582215619852664 2.70805020110221 3.42751468997953 1.16938135955632 3.07731226054641 2.15871472257434 +pip2 3.76815263500844 4.29045944114839 2.61739583283408 3.75185425327532 4.61512051684126 1.03318448334565 4.63472898822964 5.89164421182577 0.703097511413113 2.77258872223978 2.27521389619791 +pip2 4.28082412916472 4.50645421304893 4.16511363311031 5.06259503302697 3.2188758248682 1.50185270175416 4.36182392735636 5.51342874616498 2.51769647261099 3.65065824129374 2.88480071284671 +pip2 6.49375383985169 6.94408720822953 2.33214389523559 4.3528552573736 2.64617479738412 0.431782416425538 3.02042488614436 4.10098910494077 1.23256026117785 2.89591193827178 1.59127394180643 +pip2 5.67675380226828 6.12468339089421 3.77734810210154 5.8111409929767 4.52396013056255 1.07840958135059 4.23700086262362 5.4249500174814 0.262364264467491 2.63188884013665 1.4036429994545 +pip2 4.5152454784601 4.89034912822175 2.45958884180371 4.71849887129509 3.67882911826043 0 3.3357695763397 4.34380542185368 2.98568193770049 4.01998014693324 2.88480071284671 +pip2 4.86753445045558 5.04342511691925 3.71357206670431 4.21803603456465 2.89591193827178 2.07819075977818 3.51749783735832 4.70953020131233 0.746687947487975 2.75366071235426 1.37624402526639 +pip2 4.70953020131233 4.96284463025991 2.12226153886276 2.77881927199042 3.67882911826043 2.32238772029023 4.07414185490458 7.58222919427646 4.41642806139121 4.71849887129509 3.25424296870549 +pip2 3.41772668361337 3.41772668361337 2.80336038090653 2.99573227355399 1.15057202759882 0.500775287912489 3.29953372788566 6.71901315438526 1.49290409617815 3.4626060097908 4.0842942263686 +pip2 5.76519110278484 6.04500531403601 1.75440368268429 4.48863636973214 3.65065824129374 0.693147180559945 3.91202300542815 5.27299955856375 0 3.68887945411394 1.60140574073684 +pip2 6.35957386867238 6.80903930604298 2.36085400111802 4.93447393313069 3.29212628660779 2.28442112236637 4.19116874685764 7.34858753092759 0.56531380905006 3.00568260440716 2.39789527279837 +pip2 6.10702288774225 6.46769872610435 1.6094379124341 4.70953020131233 2.90690105984738 0.951657875711446 4.43438186500781 5.14749447681345 0 2.73436750941958 1.17865499634165 +pip2 4.76217393479776 5.36129216570943 2.72785282839839 5.06259503302697 3.7864597824528 1.14103300455206 5.08140436498446 5.92692602597041 2.53369681395743 3.76815263500844 2.79728133483015 +pip2 6.42162226780652 6.84481547920826 2.43361335540045 4.15575319035074 2.70136121295141 3.08648663682246 4.20916023665068 7.26752542782817 0 3.00568260440716 2.83321334405622 +pip2 5.74620319054015 6.08904487544685 2.89591193827178 3.58905911883173 3.03013370027132 1.65441127807683 3.11351530921037 5.27299955856375 1.35840915763035 2.97552956623647 2.61006979274201 +pip2 4.3528552573736 4.58700621536042 3.27336401015227 3.94931879017184 3.60549784517489 1.41098697371026 4.3267781604434 5.32300997913841 1.41098697371026 3.34638914516716 2.15871472257434 +pip2 5.03043792139244 5.41610040220442 2.67414864942653 2.52572864430826 2.4423470353692 0 3.43720781918519 3.41772668361337 0 3.2846635654062 1.78170913337455 +pip2 5.90808293816893 6.28785856016178 2.96010509591084 3.70622809244855 2.65324196460721 1.12492959698548 4.12874598893943 7.34858753092759 0 2.94968833505258 2.00552585872967 +pip2 5.85507192220243 6.27852142416584 2.89591193827178 2.86789890204411 2.484906649788 1.81645208181843 3.8308129500026 5.00394630594546 1.93441576962958 3.38099467434464 5.11799381241676 +pip2 6.95272864462487 7.3038432252777 2.9391619220656 2.89591193827178 2.7408400239252 0.62057648772511 3.44361809754611 4.72738781871234 0 2.86789890204411 1.94304891677428 +pip2 5.8111409929767 6.27852142416584 3.4626060097908 3.73289633953071 0.62057648772511 0 3.11351530921037 3.13113691056019 0.285178942233662 3.79548918917219 2.45958884180371 +pip2 6.82654522355659 7.24921505711439 3.34638914516716 3.55248682920838 2.4932054526027 2.68102152871429 3.91202300542815 6.40357419793482 0.300104592450338 2.71469474382088 2.72785282839839 +pip2 4.50645421304893 4.64439089914137 1.37624402526639 2.3887627892351 2.87919845729804 3.94931879017184 5.36129216570943 8.85950548451913 0 2.82137888640921 2.2213750375685 +pip2 6.92559519711047 7.3038432252777 2.57261223020711 3.17387845893747 3.25424296870549 1.69009581545155 3.80443779474821 7.49220304261874 0.854415328156068 2.72785282839839 2.60268968544438 +pip2 5.32300997913841 5.66642668811243 2.80336038090653 4.26267987704132 3.68887945411394 0.810930216216329 4.22683374526818 5.10594547390058 0.936093359170335 3.40784192438082 0 +pip2 5.36129216570943 5.80211837537706 1.28647402583768 5.66642668811243 4.0926765051214 0 3.35340671782581 4.01096295328305 0.285178942233662 2.15871472257434 1.83418018511201 +pip2 5.10594547390058 5.50533153593236 2.61006979274201 2.08691355651854 2.76000994003292 0 3.34638914516716 4.91265488573605 0 3.19458313229916 1.43031124653666 +pip2 5.29831736654804 5.59471137960184 2.62466859216316 2.9338568698359 3.08648663682246 0.425267735404344 4.77912349311153 5.96357934361845 0 3.80443779474821 2.484906649788 +pip2 6.81783057145415 7.25841215059531 2.89591193827178 4.84418708645859 3.90399083373088 0.0198026272961797 3.88567903008854 5.11799381241676 1.05082162483176 3.40784192438082 2.99573227355399 +pip2 4.96284463025991 5.63835466933375 2.9704144655697 3.54385368206368 2.1770218700187 0.62057648772511 5.27811465923052 5.90808293816893 0.683096844706444 4.20020495292158 2.20386912005489 +pip2 4.95582705760126 5.53338948872752 2.57261223020711 2.62466859216316 2.01490302054226 0.963174317773006 3.74242022104197 4.47960696301275 0.173953307123438 3.79548918917219 1.78170913337455 +pip2 5.43372200355424 5.79301360838414 2.85070650150373 2.77258872223978 0.0392207131532813 1.99741770620125 3.7864597824528 7.21376830811864 1.18784342239605 3.41772668361337 2.05923883436232 +pip2 7.48324441607385 7.82524529143177 2.36085400111802 4.70953020131233 3.14845336057165 2.33214389523559 4.95582705760126 7.57353126274595 0 3.56953269648137 0 +pip2 4.45201900649392 4.84418708645859 3.29212628660779 3.66867674679642 2.50959926237837 2.79116510781272 3.95699637107088 7.23128700432762 0.837247524533702 3.16547504814109 2.26695791535089 +pip2 5.4249500174814 5.77455154554441 2.21266038546606 3.01553490085017 2.60268968544438 0.56531380905006 4.12874598893943 5.06259503302697 0.683096844706444 3.16547504814109 2.51769647261099 +pip2 5.76519110278484 6.02586597382531 2.61739583283408 0 2.70136121295141 0 5.09375020080676 5.62040086571715 0 3.08648663682246 2.33214389523559 +pip2 6.37672694789863 6.81783057145415 2.12226153886276 4.76217393479776 3.40784192438082 0.765467842139571 3.31054301339402 5.01063529409626 3.58905911883173 4.29045944114839 3.39114704580865 +pip2 5.40717177146012 5.74620319054015 1.19694818938897 2.82137888640921 2.9391619220656 0.357674444271816 4.10098910494077 5.03043792139244 1.07158361628019 3.6163087612791 1.82616089594539 +pip2 7.13249755166004 7.46565531013406 2.02419306744936 1.96990565461153 3.51749783735832 1.37624402526639 4.23700086262362 5.27811465923052 0.27002713721306 3.29953372788566 0.900161349944271 +pip2 5.39816270151775 5.59471137960184 3.4904285153901 2.41591377830105 3.40119738166216 2.27521389619791 4.44382703557933 7.38461038317697 0.307484699747961 2.67414864942653 2.14124194258528 +pip2 6.02586597382531 6.42162226780652 2.62466859216316 3.24649099190117 2.86220088092947 1.31372366828506 4.01096295328305 5.46806014113513 1.92424865227413 3.4904285153901 3.16547504814109 +pip2 5.34233425196481 5.71042701737487 3.16547504814109 2.86789890204411 1.65441127807683 2.42480272571829 4.62497281328427 7.65444322647011 1.37624402526639 3.26575941076705 0 +pip2 6.19644412779452 6.62007320653036 3.05870707271538 2.72785282839839 2.26695791535089 1.63705307946707 4.76217393479776 6.00881318544259 1.24126858906963 3.85014760171006 1.63705307946707 +pip2 6.87212810133899 7.34858753092759 1.73518911773966 4.05698877567833 3.19458313229916 1.2947271675944 4.30000279919529 5.54126354515843 0.122217632724249 3.62434093297637 1.01523067972906 +pip2 5.88332238848828 6.38687931936265 2.30258509299405 2.36085400111802 0 0 3.72328088083127 4.76217393479776 2.21266038546606 3.77734810210154 3.55248682920838 +pip2 7.53743003658651 7.89729647259588 3.13983261752775 3.3178157727231 1.55603713570699 2.2213750375685 4.3528552573736 5.77455154554441 0 3.13113691056019 2.64617479738412 +pip2 5.67675380226828 6.07073772800249 4.03777421073371 4.81218435537242 4.01998014693324 1.79840401194672 5.47646355193151 7.37525577800975 0.3293037471426 3.44361809754611 1.51951320490611 +pip2 5.01727983681492 5.20948615284142 3.86702563949741 3.62434093297637 1.75440368268429 0 3.40119738166216 3.41772668361337 0 2.76000994003292 1.43031124653666 +pip2 6.96129604591017 7.32118855673948 1.57484646766448 2.19499988231411 3.02042488614436 1.63705307946707 4.24563400976833 7.24921505711439 0 3.59731226058845 2.30258509299405 +pip2 5.52146091786225 5.89164421182577 2.97552956623647 4.44382703557933 3.31054301339402 3.16547504814109 4.40671924726425 7.37525577800975 1.41098697371026 4.01998014693324 2.2935443483419 +pip2 4.61512051684126 5.03043792139244 2.77881927199042 3.38099467434464 1.79840401194672 1.14103300455206 4.07414185490458 5.28826703069454 1.22377543162212 3.03013370027132 2.05027016437956 +pip2 4.91265488573605 5.18738580584075 2.67414864942653 3.11351530921037 2.9704144655697 0 3.79548918917219 4.62497281328427 0 2.9391619220656 1.94304891677428 +pip2 3.48124008933569 3.52636052461616 2.32238772029023 3.2846635654062 3.4626060097908 3.86702563949741 4.99043258677874 7.6004023345004 0.385262400790645 3.32862668882732 2.37954613413017 +pip2 6.76388490856244 7.09672137849476 2.85070650150373 3.4626060097908 3.48124008933569 0.73716406597672 2.92316158071916 6.53958595561767 0 3.15700042115011 1.25846098961001 +pip2 5.13579843705026 5.44241771052179 3.72328088083127 4.68213122712422 3.39114704580865 1.34807314829969 4.3267781604434 5.41610040220442 0.19062035960865 3.20274644293832 1.37624402526639 +pip2 4.78749174278205 5.53338948872752 2.33214389523559 4.24563400976833 2.83321334405622 1.74571553072665 3.53514535417189 6.95272864462487 0 3.43720781918519 1.00795792039998 +pip2 5.21493575760899 5.55682806169954 1.68268837417369 4.87519732320115 3.16547504814109 2.39789527279837 3.92197333628131 7.01571242048723 2.62466859216316 4.27249074760558 3.18221184049661 +pip2 3.7864597824528 3.70622809244855 2.54160199346455 4.04830062372069 2.92316158071916 0 3.96651119071222 4.28082412916472 0 2.79728133483015 1.4036429994545 +pip2 5.32300997913841 5.7037824746562 3.52636052461616 4.61512051684126 4.20020495292158 0.576613364303994 3.68887945411394 4.91265488573605 0.727548607277278 3.10458667846607 2.05923883436232 +pip2 4.60517018598809 5.18178355029209 2.87919845729804 5.10594547390058 3.21084365317094 0 4.40671924726425 5.25227342804663 0.157003748809665 3.70622809244855 2.02419306744936 +pip2 5.06259503302697 5.53338948872752 2.87919845729804 3.08648663682246 2.30258509299405 1.83418018511201 4.50645421304893 5.82008293035236 1.07158361628019 3.23080439573347 0.783901543828409 +pip2 7.56423847517049 7.93307977188041 2.14943391349987 4.87519732320115 3.8308129500026 0 3.13113691056019 4.36182392735636 0.631271776841858 3.6609942506244 0.774727167552368 +pip2 2.36085400111802 3.82209829790016 2.28442112236637 4.44382703557933 2.58021682959233 0.73716406597672 4.30000279919529 6.80903930604298 0.667829372575655 3.03013370027132 0.756121979721334 +pip2 5.6021188208797 6.05443934626937 2.57261223020711 4.20916023665068 3.2846635654062 1.02604159583327 3.82209829790016 5.10594547390058 0.559615787935423 2.7408400239252 1.42069578783722 +pip2 6.13339804299665 6.49375383985169 3.03974915897077 3.82209829790016 3.2846635654062 1.09861228866811 4.01096295328305 4.64439089914137 1.68268837417369 3.16547504814109 2.41591377830105 +pip2 1.55603713570699 1.45628673293993 1.7630170003624 3.06805293513362 2.68784749378469 1.28647402583768 2.68102152871429 3.26575941076705 1.02604159583327 4.01998014693324 2.13179677201376 +pip2 4.36182392735636 5.26269018890489 2.16791018966744 2.36085400111802 1.87946504964716 1.79840401194672 3.59731226058845 7.75319426988434 0.871293365943419 2.58021682959233 2.37954613413017 +pip2 5.73009978297357 6.16961073249146 2.51769647261099 5.32300997913841 3.42751468997953 3.35340671782581 4.88280192258637 8.45489216521886 0.908258560176891 3.10458667846607 1.44926916028128 +pip2 5.82008293035236 6.21460809842219 2.07819075977818 4.64439089914137 2.50959926237837 0.476234178996372 3.85862222870103 4.52396013056255 0 3.06805293513362 1.51951320490611 +pip2 6.04500531403601 6.42162226780652 2.16791018966744 4.33598269617247 3.25424296870549 1.96009478404727 3.93963817246112 6.72743172485086 0.765467842139571 1.27815220250019 2.51769647261099 +pip2 6.10702288774225 6.44888939414686 2.62466859216316 3.58905911883173 2.97552956623647 2.52572864430826 4.23700086262362 6.91671502035361 2.73436750941958 3.75185425327532 2.91235066461494 +pip2 3.50855589998265 3.3178157727231 2.28442112236637 3.54385368206368 2.71469474382088 0.845868267577609 3.56953269648137 5.31811999384422 0.0392207131532813 3.32862668882732 3.27336401015227 +pip2 4.47049528266149 4.55071400019203 2.2935443483419 4.10098910494077 2.91235066461494 0.792992515529661 4.20916023665068 5.10594547390058 0 2.75366071235426 2.3887627892351 +pip2 5.0998664278242 5.48479693349065 2.4932054526027 2.90690105984738 2.65324196460721 0 3.70622809244855 4.48863636973214 1.26694760348732 3.52636052461616 1.27815220250019 +pip2 4.34380542185368 4.7361984483945 2.64617479738412 3.29953372788566 2.75366071235426 1.15057202759882 3.91202300542815 7.82524529143177 0.559615787935423 2.84490938381941 0 +pip2 4.58700621536042 5.12396397940326 3.21084365317094 4.01096295328305 2.20386912005489 2.04122032885964 4.00186370942794 7.22256601882217 0.548121408509688 3.69635146895264 1.62727783056243 +pip2 3.48124008933569 3.6163087612791 3.8308129500026 6.96129604591017 5.8636311755981 0.559615787935423 4.03777421073371 5.0998664278242 2.70805020110221 3.72328088083127 2.30258509299405 +pip2 6.72743172485086 7.10578612948127 2.14124194258528 3.90399083373088 2.88480071284671 2.14124194258528 4.83628190695148 5.96357934361845 0.231111720963387 3.72328088083127 2.23964529322017 +pip2 4.63472898822964 5.2257466737132 2.10413415427021 5.24174701505964 3.21084365317094 1.4655675420144 3.10458667846607 4.34380542185368 0 3.44361809754611 2.50959926237837 +pip2 4.76217393479776 5.05624580534831 2.10413415427021 2.79728133483015 3.3357695763397 2.70805020110221 4.61512051684126 5.87211778947542 0.951657875711446 3.7864597824528 2.2935443483419 +pip2 6.91671502035361 7.33953769540767 4.01096295328305 4.37071287477361 2.34180580614733 1.11514159061932 3.39114704580865 6.54821910276237 0.727548607277278 2.43361335540045 1.28647402583768 +pip2 6.65544035036765 7.12367278520461 2.01490302054226 4.43438186500781 2.62466859216316 2.58776403522771 4.24563400976833 7.51914995766982 1.81645208181843 3.08648663682246 2.06812778177956 +pip2 6.01615715969835 6.55677835615804 1.79009141212736 4.65396035015752 3.35340671782581 1.32175583998232 3.37416870927424 4.93447393313069 0.27002713721306 3.42751468997953 1.49290409617815 +pip2 7.09672137849476 7.42952084278646 2.75366071235426 2.61739583283408 2.62466859216316 2.08691355651854 3.92197333628131 7.24064969425547 0.712949807856125 3.2188758248682 4.34380542185368 +pip2 5.07517381523383 5.40717177146012 0 5.31811999384422 2.20386912005489 0.307484699747961 3.58905911883173 3.92197333628131 0.982078472412158 2.9391619220656 2.39789527279837 +pip2 5.67675380226828 6.04500531403601 2.92316158071916 4.78749174278205 4.0926765051214 1.15057202759882 4.77912349311153 5.51342874616498 1.37624402526639 3.4626060097908 2.4423470353692 +pip2 5.45958551414416 5.89164421182577 1.08856195281461 3.14845336057165 3.50855589998265 0 3.75887182593397 4.11087386417331 0.425267735404344 3.13983261752775 1.96009478404727 +pip2 5.23644196282995 5.54126354515843 3.72328088083127 4.45201900649392 3.16547504814109 0.350656871613169 3.27336401015227 4.31748811353631 0 2.96010509591084 2.23964529322017 +pip2 6.80903930604298 7.26752542782817 2.71469474382088 2.96010509591084 1.42069578783722 0.285178942233662 4.31748811353631 4.99043258677874 0.647103242058538 2.97552956623647 2.37954613413017 +pip2 3.23867845216438 3.21084365317094 3.85862222870103 4.68213122712422 4.05698877567833 1.89761985992753 3.88567903008854 5.76519110278484 0 3.51749783735832 2.23108909128898 +pip2 5.43372200355424 5.78382518232974 2.61739583283408 4.41642806139121 3.06805293513362 1.45628673293993 2.92316158071916 4.12874598893943 1.02604159583327 3.40784192438082 0 +pip2 5.95324333428778 6.41345895716736 3.7864597824528 4.18205014264121 3.36384159511839 0.756121979721334 3.29953372788566 4.11087386417331 0.0392207131532813 3.29953372788566 2.3887627892351 +pip2 6.72743172485086 7.09672137849476 2.37954613413017 2.73436750941958 2.03339760317843 3.17387845893747 4.254193263164 6.88959130835447 3.35340671782581 3.92197333628131 2.90690105984738 +pip2 4.52396013056255 5.06259503302697 1.97823903617067 4.8283137373023 3.9759363311718 0.215111379616945 4.50645421304893 5.72031177660741 1.25846098961001 2.68784749378469 2.4423470353692 +pip2 5.62040086571715 5.98141421125448 2.55722731136763 2.96010509591084 1.89761985992753 0.412109650826833 4.68213122712422 5.63835466933375 0.215111379616945 3.18221184049661 2.2935443483419 +pip2 2.23964529322017 2.484906649788 4.36182392735636 5.10594547390058 3.85862222870103 2.37024374146786 4.02891675689965 7.90617884039481 1.34025042261848 3.52636052461616 0.828551817566148 +pip2 4.98360662170834 5.25227342804663 3.13113691056019 3.21084365317094 2.27521389619791 3.00568260440716 4.17284762371004 7.01571242048723 0 3.34638914516716 2.87919845729804 +pip2 6.67329796776765 7.05185562295589 2.27521389619791 4.69134788222914 3.58905911883173 0 3.91202300542815 4.70953020131233 0 2.76000994003292 2.31253542384721 +pip2 7.56423847517049 7.89729647259588 2.84490938381941 5.93753620508243 5.16478597392351 1.07840958135059 3.05870707271538 4.22683374526818 0.457424847038875 3.09557760852371 1.08856195281461 +pip2 5.73979291217923 6.08904487544685 2.55722731136763 3.21084365317094 3.2846635654062 0 3.90399083373088 4.40671924726425 0.60431596685333 2.00552585872967 1.23256026117785 +pip2 5.66642668811243 6.04500531403601 1.86252854011626 5.28826703069454 3.21084365317094 2.72785282839839 4.0842942263686 7.33953769540767 0 3.04927304048202 2.40694510831829 +pip2 3.50855589998265 3.88567903008854 2.94968833505258 3.62434093297637 2.98568193770049 0.22314355131421 3.75887182593397 4.5152454784601 0.783901543828409 3.03974915897077 2.06812778177956 +pip2 6.26909628370626 6.78219205600679 3.44361809754611 6.41345895716736 4.91265488573605 1.51072193949494 3.54385368206368 7.45645455517621 0 2.94968833505258 2.27521389619791 +pip2 5.54126354515843 5.89989735358249 2.89591193827178 2.61739583283408 2.70805020110221 1.97823903617067 4.3267781604434 7.72621265050753 0.989541193613748 3.06805293513362 2.58776403522771 +pip2 4.0926765051214 4.30000279919529 2.80336038090653 6.16961073249146 5.06259503302697 1.2947271675944 3.71357206670431 5.39816270151775 0 3.03974915897077 1.96009478404727 +pip2 5.18178355029209 5.73009978297357 2.73436750941958 4.97673374242057 3.2188758248682 1.16002091679675 3.55248682920838 5.06259503302697 0 2.61006979274201 2.36085400111802 +pip2 7.1777824161952 7.54644627374602 2.82137888640921 5.33271879326537 3.9926809084456 1.71739505393919 3.8308129500026 7.39326309476384 1.28647402583768 3.56953269648137 3.71357206670431 +pip2 3.92986292355648 4.63472898822964 4.04830062372069 4.67282883446191 2.19499988231411 1.16002091679675 4.57779898919196 5.50533153593236 2.77881927199042 3.76815263500844 2.90690105984738 +pip2 7.22256601882217 7.56423847517049 2.05027016437956 5.54907608489522 3.15700042115011 2.24812890719799 5.05624580534831 5.87211778947542 0.425267735404344 2.81540871942271 1.34807314829969 +pip2 5.92692602597041 6.37672694789863 2.61006979274201 2.91235066461494 2.77881927199042 0.139761942375159 4.34380542185368 5.28826703069454 2.9391619220656 4.05698877567833 2.94968833505258 +pip2 4.99043258677874 5.3890717298165 2.54160199346455 3.68887945411394 2.85070650150373 1.62727783056243 3.90399083373088 5.4510384535657 0 3.56953269648137 1.96009478404727 +pip2 5.03043792139244 5.46806014113513 2.82137888640921 4.02891675689965 3.00568260440716 0.350656871613169 3.43720781918519 3.56104608260405 1.16002091679675 2.32238772029023 0.518793793415168 +pip2 5.34233425196481 5.67675380226828 3.24649099190117 4.72738781871234 3.87743156065853 0.908258560176891 3.65065824129374 4.8283137373023 1.49290409617815 3.70622809244855 4.48863636973214 +pip2 5.63121178182137 6.02586597382531 2.51769647261099 3.29212628660779 2.15871472257434 1.50185270175416 4.06560209335645 4.86753445045558 1.4036429994545 3.36384159511839 1.57484646766448 +pip2 6.88959130835447 7.26752542782817 3.20274644293832 3.56104608260405 1.7263316639056 0.900161349944271 3.81330703248899 5.37989735354046 2.65324196460721 3.66867674679642 2.2935443483419 +pip2 6.62007320653036 7.05185562295589 1.89761985992753 4.63472898822964 3.92197333628131 0.62057648772511 3.36384159511839 4.66343909411207 0 3.79548918917219 2.30258509299405 +pip2 6.25190388316589 6.69208374250663 2.2935443483419 4.30000279919529 2.50143595173921 1.28647402583768 4.49758497530815 5.73009978297357 0.879626747502564 3.18221184049661 1.20597080698861 +pip2 5.13579843705026 5.65599181081985 2.96010509591084 1.10525683138678 3.05870707271538 0.73716406597672 3.24649099190117 4.00186370942794 0.27002713721306 3.40119738166216 2.79116510781272 +pip2 5.4971682252932 5.88332238848828 3.17387845893747 3.12236492448736 2.67414864942653 0.783901543828409 3.79548918917219 5.26269018890489 2.35137525716348 3.40784192438082 3.52636052461616 +pip2 6.38687931936265 6.85329909318608 0.431782416425538 5.99893656194668 4.02891675689965 0.451075619360217 3.96651119071222 5.03695260241363 0.207014169384326 3.38099467434464 2.01490302054226 +pip2 3.92986292355648 4.11087386417331 3.71357206670431 4.69134788222914 2.70805020110221 0.810930216216329 4.03777421073371 7.37525577800975 3.6163087612791 3.9926809084456 3.34638914516716 +pip2 4.50645421304893 4.80402104473326 4.10098910494077 4.91998092582813 2.52572864430826 1.22377543162212 4.62497281328427 5.76519110278484 0.712949807856125 2.32238772029023 1.49290409617815 +pip2 5.90808293816893 6.30444880242198 3.43720781918519 3.63495111208838 1.75440368268429 0.609765571620894 3.87743156065853 7.0335064842877 1.27815220250019 3.56953269648137 1.7630170003624 +pip2 6.56526497003536 6.93439720992856 2.68784749378469 2.41591377830105 1.80828877117927 0.122217632724249 3.94931879017184 5.05624580534831 0 3.09557760852371 1.75440368268429 +pip2 4.48863636973214 4.87519732320115 2.00552585872967 4.50645421304893 2.04122032885964 0 3.4626060097908 2.71469474382088 2.12226153886276 3.4626060097908 2.63188884013665 +pip2 6.25958146406492 6.70073110954781 2.77881927199042 1.7630170003624 3.31054301339402 0.357674444271816 5.00394630594546 5.84643877505772 2.01490302054226 4.11903717481247 3.07731226054641 +pip2 5.35185813347607 5.73979291217923 2.46809953147162 2.86220088092947 2.89591193827178 1.71739505393919 4.41642806139121 5.89989735358249 0.908258560176891 3.86702563949741 2.28442112236637 +pip2 6.08904487544685 6.56526497003536 4.87519732320115 4.70953020131233 6.60258789218934 2.76000994003292 4.27249074760558 7.15070145759253 1.22377543162212 3.41772668361337 2.02419306744936 +pip2 4.02891675689965 4.60517018598809 2.68102152871429 2.77881927199042 1.78170913337455 0.631271776841858 4.05698877567833 5.27299955856375 0.22314355131421 2.86220088092947 1.7263316639056 +pip2 5.36129216570943 5.82894561761021 2.51769647261099 4.36182392735636 3.12236492448736 0.165514438477573 3.68887945411394 5.18178355029209 1.10525683138678 3.47196645255036 2.39789527279837 +pip2 5.80211837537706 6.06145691892802 1.39376637595859 2.76000994003292 4.11903717481247 1.67335123817775 4.48863636973214 5.89989735358249 1.53901544813755 4.03777421073371 5.32300997913841 +pip2 5.5683445037611 5.87211778947542 3.55248682920838 5.3890717298165 4.26267987704132 0 4.06560209335645 5.15329159449778 0.774727167552368 3.04927304048202 0.900161349944271 +pip2 4.33598269617247 4.38077585277223 3.59731226058845 5.26269018890489 4.02891675689965 0 3.49953328238302 4.43438186500781 1.67335123817775 2.01490302054226 2.39789527279837 +pip2 7.3125534981026 7.64539769942863 2.41591377830105 5.15329159449778 3.79548918917219 1.24126858906963 5.07517381523383 6.36818718635049 1.02604159583327 3.11351530921037 1.95160817016995 +pip2 3.91202300542815 4.03777421073371 2.81540871942271 2.58776403522771 1.90657514365664 0 2.7408400239252 4.22683374526818 0.916290731874155 2.65324196460721 1.99741770620125 +pip2 5.41610040220442 5.74620319054015 2.35137525716348 4.48863636973214 3.58905911883173 1.21491274436427 4.24563400976833 5.58724865840025 0 3.3178157727231 1.20597080698861 +pip2 5.41610040220442 5.88332238848828 2.87919845729804 2.72785282839839 1.68268837417369 3.43720781918519 4.44382703557933 6.96129604591017 0.672944473242426 2.9391619220656 0.048790164169432 +pip2 4.55071400019203 5.11799381241676 2.72785282839839 3.02042488614436 2.51769647261099 1.22377543162212 3.9926809084456 5.01727983681492 0 3.75185425327532 2.71469474382088 +pip2 5.24174701505964 5.84643877505772 3.24649099190117 4.91998092582813 3.95699637107088 2.12226153886276 4.07414185490458 7.3125534981026 0.774727167552368 2.77258872223978 2.42480272571829 +pip2 6.05443934626937 6.49375383985169 1.56444054650336 3.02042488614436 3.8416005411316 1.69009581545155 4.81218435537242 5.48479693349065 2.15871472257434 3.4626060097908 0.810930216216329 +pip2 5.14749447681345 5.65599181081985 2.87919845729804 2.65324196460721 0.2390169004705 0 4.91998092582813 5.58724865840025 0.431782416425538 2.52572864430826 0.582215619852664 +pip2 6.19644412779452 6.55677835615804 2.4932054526027 4.42484663185681 3.26575941076705 3.27336401015227 5.50533153593236 9.09335701649036 0 2.81540871942271 2.1770218700187 +pip2 5.73979291217923 6.07993319509559 2.34180580614733 5.53338948872752 3.42751468997953 0.56531380905006 4.86753445045558 5.77455154554441 0.231111720963387 2.1770218700187 1.10525683138678 +pip2 3.53514535417189 4.07414185490458 2.15871472257434 2.65324196460721 2.86220088092947 0.56531380905006 3.25424296870549 4.04830062372069 0.0582689081239758 3.05870707271538 2.37024374146786 +pip2 7.11476944836646 7.47420480649612 2.27521389619791 4.49758497530815 2.88480071284671 0.951657875711446 3.70622809244855 4.36182392735636 0 3.58073729549423 2.13179677201376 +pip2 4.49758497530815 4.94875989037817 2.61006979274201 2.42480272571829 0.837247524533702 0.828551817566148 3.48124008933569 4.19116874685764 0.712949807856125 2.57261223020711 1.4655675420144 +pip2 6.04500531403601 6.32256523992728 3.37416870927424 4.7361984483945 3.68887945411394 2.01490302054226 4.00186370942794 7.18690102041163 3.29953372788566 4.78749174278205 3.64283551561253 +pip2 5.15329159449778 5.6937321388027 2.23964529322017 2.88480071284671 2.14124194258528 1.82616089594539 4.26267987704132 5.76519110278484 0.300104592450338 2.92316158071916 1.2947271675944 +pip2 5.71042701737487 6.09807428216624 2.58776403522771 3.24649099190117 0.928219302739429 1.96990565461153 4.50645421304893 7.04228617193974 0.122217632724249 1.7263316639056 1.7630170003624 +pip2 5.37063802812766 5.92692602597041 1.57484646766448 4.00186370942794 2.01490302054226 0 3.89385903480047 5.09375020080676 0.727548607277278 2.9391619220656 1.84371920815877 +pip2 5.36129216570943 5.71042701737487 2.80336038090653 2.79728133483015 3.87743156065853 0 3.65065824129374 4.58700621536042 0 2.96010509591084 1.34807314829969 +pip2 5.85507192220243 6.30444880242198 2.21266038546606 4.95582705760126 2.84490938381941 0.672944473242426 4.0926765051214 5.10594547390058 1.52822785700856 3.23867845216438 1.73518911773966 +pip2 4.0842942263686 4.34380542185368 2.35137525716348 2.77258872223978 3.26575941076705 0.982078472412158 2.75366071235426 4.01096295328305 0.647103242058538 3.69635146895264 2.14124194258528 +pip2 4.17284762371004 4.53367418428302 1.96990565461153 4.70953020131233 3.76815263500844 0.802001585472027 3.92197333628131 4.89034912822175 1.43031124653666 3.37416870927424 2.03339760317843 +pip2 6.98841318199959 7.33953769540767 3.13983261752775 4.10098910494077 3.91202300542815 0.582215619852664 3.77734810210154 4.04830062372069 1.2947271675944 3.70622809244855 2.16791018966744 +pip2 5.63121178182137 5.93753620508243 2.61006979274201 2.62466859216316 1.50185270175416 0.908258560176891 4.24563400976833 4.61512051684126 0.307484699747961 3.8416005411316 1.35840915763035 +pip2 5.13579843705026 5.37063802812766 2.84490938381941 3.21084365317094 2.14943391349987 1.63705307946707 4.79579054559674 5.85507192220243 1.81645208181843 2.68784749378469 2.18605127673809 +pip2 4.67282883446191 5.21493575760899 2.80336038090653 5.6937321388027 4.15575319035074 2.21266038546606 3.88567903008854 7.26752542782817 3.01553490085017 3.80443779474821 2.88480071284671 +pip2 6.72743172485086 7.18690102041163 2.91235066461494 2.37954613413017 2.19499988231411 0.810930216216329 4.10098910494077 5.32300997913841 0.0861776962410524 2.07819075977818 0.548121408509688 +pip2 6.09807428216624 6.42162226780652 1.77155676191054 4.33598269617247 2.97552956623647 1.89761985992753 3.92986292355648 5.57594910314632 0.802001585472027 2.84490938381941 1.52822785700856 +pip2 4.81218435537242 5.19849703126583 2.85070650150373 3.8308129500026 3.2188758248682 0.0676586484738149 2.9391619220656 4.64439089914137 0 3.59731226058845 2.61739583283408 +pip2 6.49375383985169 6.98007594056176 2.71469474382088 3.05870707271538 2.4932054526027 0.357674444271816 3.13983261752775 4.0842942263686 0.0295588022415444 1.69927861643389 1.45628673293993 +pip2 5.99893656194668 6.45833828334479 2.62466859216316 3.4626060097908 3.58905911883173 0.231111720963387 3.37416870927424 4.15575319035074 1.04380405217311 2.53369681395743 1.80828877117927 +pip2 5.12396397940326 5.4510384535657 2.77881927199042 4.11087386417331 3.35340671782581 0.56531380905006 3.56953269648137 4.87519732320115 2.67414864942653 3.81330703248899 3.12236492448736 +pip2 5.73979291217923 6.18001665365257 2.50143595173921 2.20386912005489 2.14943391349987 0.0295588022415444 4.14630430115281 5.36129216570943 3.64283551561253 4.30811095172371 2.53369681395743 +pip2 7.10578612948127 7.51043055637801 4.16511363311031 4.58700621536042 2.35137525716348 0 3.2846635654062 4.44382703557933 0.2390169004705 3.13113691056019 3.03013370027132 +pip2 5.76519110278484 6.19644412779452 3.43720781918519 5.12396397940326 3.55248682920838 0.3293037471426 4.3267781604434 4.85981240436167 0.908258560176891 3.24649099190117 2.14943391349987 +pip2 5.45958551414416 5.75574221358691 2.60268968544438 4.3267781604434 2.77258872223978 0.62057648772511 4.47049528266149 5.31811999384422 0 2.77881927199042 2.35137525716348 +pip2 4.33598269617247 4.8283137373023 1.99741770620125 5.09375020080676 2.75366071235426 1.09861228866811 3.86702563949741 4.95582705760126 0 3.21084365317094 1.69927861643389 +pip2 6.06145691892802 6.50279004591562 1.4036429994545 2.73436750941958 3.24649099190117 0 3.85014760171006 4.47049528266149 1.02604159583327 3.43720781918519 3.89385903480047 +pip2 6.07073772800249 6.41345895716736 2.68784749378469 4.68213122712422 3.94931879017184 0.451075619360217 4.70048036579242 5.59471137960184 1.97823903617067 3.66867674679642 2.34180580614733 +pip2 3.47196645255036 4.254193263164 2.61739583283408 4.28082412916472 2.86789890204411 0.703097511413113 3.45315712059287 4.40671924726425 3.87743156065853 4.93447393313069 4.0926765051214 +pip2 3.69635146895264 3.8416005411316 2.42480272571829 2.88480071284671 1.78170913337455 1.07158361628019 4.88280192258637 5.63121178182137 0.802001585472027 2.57261223020711 1.708377860289 +pip2 5.6021188208797 6.03548143252476 2.90690105984738 5.00394630594546 3.65065824129374 3.16547504814109 4.31748811353631 7.16857989726403 0.667829372575655 3.17387845893747 2.484906649788 +pip2 5.74620319054015 6.23244801655052 2.24812890719799 3.55248682920838 3.40784192438082 0.548121408509688 3.50855589998265 4.254193263164 0.0769610411361284 3.15700042115011 1.45628673293993 +pip2 5.65599181081985 5.99893656194668 2.47653840011748 4.38949864951258 3.92986292355648 0.254642218373581 4.58700621536042 5.65599181081985 0.371563556432483 3.71357206670431 2.37024374146786 +pip2 5.51342874616498 5.88332238848828 2.05027016437956 4.42484663185681 3.06805293513362 0 3.19458313229916 4.01998014693324 0.500775287912489 2.9391619220656 1.56444054650336 +pip2 4.17284762371004 4.44382703557933 2.43361335540045 4.66343909411207 3.58905911883173 0.802001585472027 4.97673374242057 5.53338948872752 0 2.41591377830105 1.23256026117785 +pip2 7.26752542782817 7.63626960337937 2.09556092355972 3.42751468997953 4.37071287477361 1.5830939370945 3.03974915897077 5.09375020080676 0.0861776962410524 2.14124194258528 1.98787434815435 +pip2 5.6021188208797 6.03548143252476 1.94304891677428 2.52572864430826 3.38099467434464 0 3.81330703248899 4.17284762371004 0.0953101798043249 2.85070650150373 2.25758772706331 +pip2 4.05698877567833 4.5152454784601 2.84490938381941 2.75366071235426 1.87946504964716 1.59127394180643 3.56104608260405 4.80402104473326 0.27763173659828 3.00568260440716 1.50185270175416 +pip2 5.84643877505772 6.38687931936265 2.75366071235426 2.4932054526027 2.97552956623647 0 4.07414185490458 5.06259503302697 0.576613364303994 3.47196645255036 1.4655675420144 +pip2 4.77912349311153 5.05624580534831 2.60268968544438 4.79579054559674 3.69635146895264 0.989541193613748 3.88567903008854 5.14749447681345 2.50143595173921 3.37416870927424 3.65065824129374 +pip2 5.41610040220442 5.87211778947542 2.79728133483015 2.99573227355399 2.2213750375685 3.02042488614436 5.33271879326537 8.01400499477946 3.03974915897077 4.43438186500781 3.8416005411316 +pip2 4.70953020131233 4.99043258677874 1.33236601909433 2.37024374146786 3.39114704580865 2.03339760317843 3.91202300542815 6.98007594056176 0.746687947487975 2.98568193770049 1.02604159583327 +observational 2.68102152871429 2.92316158071916 2.90690105984738 2.79116510781272 1.15057202759882 1.51951320490611 2.81540871942271 6.16120732169508 1.92424865227413 3.26575941076705 3.35340671782581 +observational 2.84490938381941 3.67882911826043 2.71469474382088 2.60268968544438 1.870262530716 1.61938824328727 2.92316158071916 6.34035930372775 2.7408400239252 4.31748811353631 2.2935443483419 +observational 2.76000994003292 2.71469474382088 1.32175583998232 5.25227342804663 1.31372366828506 2.03339760317843 2.97552956623647 6.64639051484773 2.50143595173921 3.04927304048202 2.484906649788 +observational 2.23964529322017 2.68784749378469 2.11384296839717 4.31748811353631 2.77881927199042 2.79728133483015 3.06805293513362 5.53338948872752 2.55722731136763 3.62434093297637 0.693147180559945 +observational 2.28442112236637 1.79840401194672 0.792992515529661 5.18738580584075 3.03013370027132 3.29212628660779 3.31054301339402 5.95324333428778 2.31253542384721 3.11351530921037 1.71739505393919 +observational 2.26695791535089 2.36085400111802 3.65065824129374 4.01096295328305 3.09557760852371 1.73518911773966 2.56494935746154 5.53338948872752 2.45958884180371 2.15871472257434 2.79728133483015 +observational 3.51749783735832 2.97552956623647 2.18605127673809 3.34638914516716 3.03974915897077 1.92424865227413 2.9338568698359 7.0335064842877 2.87919845729804 3.20274644293832 1.66392609771817 +observational 2.9338568698359 2.97552956623647 4.22683374526818 5.32300997913841 2.85070650150373 2.96010509591084 3.44361809754611 5.72031177660741 1.96990565461153 2.87919845729804 1.7630170003624 +observational 3.66867674679642 2.84490938381941 4.39814601655377 5.32300997913841 3.37416870927424 2.98568193770049 3.31054301339402 5.84643877505772 2.27521389619791 2.98568193770049 2.94968833505258 +observational 2.77881927199042 2.73436750941958 2.45958884180371 2.79728133483015 2.26695791535089 1.98787434815435 2.47653840011748 6.25190388316589 3.56953269648137 4.16511363311031 3.08648663682246 +observational 3.8416005411316 2.50143595173921 2.43361335540045 3.40784192438082 4.15575319035074 1.57484646766448 2.41591377830105 6.38687931936265 1.93441576962958 2.79116510781272 1.90657514365664 +observational 3.92986292355648 3.18221184049661 1.11514159061932 6.19644412779452 4.38077585277223 3.56104608260405 3.7864597824528 6.30444880242198 2.60268968544438 3.27336401015227 2.47653840011748 +observational 3.35340671782581 3.00568260440716 2.23108909128898 2.4932054526027 1.14103300455206 2.64617479738412 2.84490938381941 6.36818718635049 1.45628673293993 2.97552956623647 4.30000279919529 +observational 2.57261223020711 3.68887945411394 2.87919845729804 2.47653840011748 1.52822785700856 1.84371920815877 3.81330703248899 6.97073007814353 3.18221184049661 3.7864597824528 2.30258509299405 +observational 3.88567903008854 3.11351530921037 3.29212628660779 6.24222326545517 5.03695260241363 2.57261223020711 3.06805293513362 6.72743172485086 3.32862668882732 4.36182392735636 3.48124008933569 +observational 3.6163087612791 2.9704144655697 2.82137888640921 2.82137888640921 0.518793793415168 2.86220088092947 3.43720781918519 6.28785856016178 3.03013370027132 3.8416005411316 2.66025953726586 +observational 2.42480272571829 1.82616089594539 2.83321334405622 2.58776403522771 0.207014169384326 2.23108909128898 2.66025953726586 6.12468339089421 2.7408400239252 3.37416870927424 2.65324196460721 +observational 3.86702563949741 2.89591193827178 1.7630170003624 3.86702563949741 1.87946504964716 2.68784749378469 2.98568193770049 4.45201900649392 2.92316158071916 3.86702563949741 3.27336401015227 +observational 2.86220088092947 3.38099467434464 2.34180580614733 2.68102152871429 1.39376637595859 3.37416870927424 3.56953269648137 5.80211837537706 2.4932054526027 3.23867845216438 3.06805293513362 +observational 3.64283551561253 3.02042488614436 1.88858365386359 2.88480071284671 3.17387845893747 2.42480272571829 3.3178157727231 6.85329909318608 3.18221184049661 3.85862222870103 2.87919845729804 +observational 0.936093359170335 2.51769647261099 0.60431596685333 5.29831736654804 2.81540871942271 1.11514159061932 2.76000994003292 6.48463523563525 3.00568260440716 3.60549784517489 2.37024374146786 +observational 3.96651119071222 3.05870707271538 0 3.04927304048202 0.19062035960865 1.97823903617067 2.96010509591084 6.30444880242198 2.68102152871429 3.4626060097908 0 +observational 3.73289633953071 3.81330703248899 1.44926916028128 5.05624580534831 3.17387845893747 3.17387845893747 3.76815263500844 5.87211778947542 2.68102152871429 3.26575941076705 2.62466859216316 +observational 4.20916023665068 3.21084365317094 1.94304891677428 2.80336038090653 3.39114704580865 2.62466859216316 3.81330703248899 7.86134179559999 1.7630170003624 2.92316158071916 3.29212628660779 +observational 2.61739583283408 2.31253542384721 0.982078472412158 3.52636052461616 1.13462272619114 2.41591377830105 3.35340671782581 7.59135704669855 2.96010509591084 3.62434093297637 3.27336401015227 +observational 2.70805020110221 3.67882911826043 2.70136121295141 6.02586597382531 4.34380542185368 1.88858365386359 1.90657514365664 5.99146454710798 3.14845336057165 3.70622809244855 4.3528552573736 +observational 3.08648663682246 2.90690105984738 0 4.48863636973214 1.77155676191054 1.35840915763035 2.51769647261099 6.19644412779452 2.20386912005489 3.31054301339402 2.81540871942271 +observational 4.21803603456465 3.68887945411394 1.68268837417369 2.62466859216316 4.14630430115281 0.727548607277278 2.71469474382088 6.58340922215876 2.86789890204411 3.70622809244855 2.86789890204411 +observational 2.32238772029023 2.60268968544438 2.70805020110221 3.52636052461616 3.27336401015227 0.548121408509688 1.83418018511201 4.66343909411207 2.35137525716348 2.9391619220656 3.23867845216438 +observational 2.76000994003292 3.09557760852371 1.62727783056243 3.00568260440716 3.79548918917219 2.05027016437956 3.27336401015227 6.39526159811545 2.52572864430826 3.41772668361337 3.17387845893747 +observational 4.44382703557933 4.66343909411207 2.47653840011748 4.21803603456465 2.42480272571829 3.04927304048202 3.48124008933569 5.96357934361845 2.30258509299405 3.32862668882732 2.61739583283408 +observational 4.05698877567833 2.80336038090653 0.657520002916794 5.05624580534831 2.63188884013665 2.92316158071916 3.19458313229916 6.19644412779452 2.57261223020711 2.9391619220656 2.9704144655697 +observational 2.25758772706331 3.19458313229916 1.59127394180643 5.21493575760899 2.86789890204411 2.41591377830105 2.9391619220656 6.77308037565554 1.21491274436427 2.55722731136763 4.71849887129509 +observational 3.32862668882732 3.31054301339402 2.21266038546606 4.22683374526818 2.61739583283408 2.56494935746154 3.29212628660779 6.26909628370626 2.51769647261099 2.97552956623647 2.31253542384721 +observational 2.87919845729804 2.84490938381941 3.2188758248682 3.43720781918519 0.828551817566148 2.96010509591084 3.25424296870549 5.73979291217923 2.85070650150373 3.39114704580865 2.9391619220656 +observational 3.55248682920838 2.70805020110221 1.96009478404727 1.65441127807683 3.06805293513362 3.05870707271538 3.56104608260405 6.36818718635049 2.71469474382088 3.52636052461616 3.23867845216438 +observational 4.3267781604434 2.86789890204411 2.40694510831829 3.40119738166216 1.65441127807683 3.35340671782581 3.8416005411316 5.41610040220442 2.73436750941958 3.68887945411394 2.91235066461494 +observational 3.65065824129374 2.77258872223978 2.24812890719799 4.91265488573605 3.37416870927424 2.19499988231411 2.34180580614733 5.13579843705026 2.88480071284671 3.51749783735832 2.83321334405622 +observational 3.53514535417189 3.59731226058845 3.77734810210154 4.15575319035074 2.97552956623647 1.68268837417369 2.81540871942271 5.80211837537706 3.02042488614436 3.70622809244855 2.26695791535089 +observational 3.01553490085017 2.75366071235426 2.77258872223978 3.19458313229916 1.63705307946707 1.56444054650336 1.65441127807683 5.0998664278242 2.57261223020711 3.15700042115011 2.42480272571829 +observational 3.11351530921037 2.9704144655697 1.84371920815877 5.23644196282995 2.64617479738412 2.28442112236637 2.56494935746154 6.51174532964473 1.84371920815877 3.16547504814109 4.65396035015752 +observational 4.29045944114839 3.18221184049661 2.66025953726586 4.41642806139121 1.14103300455206 2.9391619220656 3.44361809754611 5.95324333428778 2.99573227355399 3.60549784517489 2.60268968544438 +observational 3.52636052461616 2.37954613413017 4.37071287477361 5.10594547390058 2.80336038090653 1.7630170003624 2.85070650150373 5.58724865840025 3.02042488614436 4.10098910494077 4.53367418428302 +observational 3.91202300542815 3.23867845216438 3.85862222870103 5.54907608489522 3.03013370027132 0 1.4036429994545 5.23644196282995 1.34025042261848 2.91235066461494 4.48863636973214 +observational 3.88567903008854 3.23867845216438 2.77881927199042 4.80402104473326 4.20916023665068 3.35340671782581 3.72328088083127 6.28785856016178 2.90690105984738 3.82209829790016 2.7408400239252 +observational 4.11087386417331 3.23867845216438 1.5830939370945 5.33271879326537 3.8416005411316 3.18221184049661 3.32862668882732 5.94542060860658 0 2.71469474382088 4.56954300834494 +observational 4.16511363311031 3.50855589998265 2.60268968544438 3.35340671782581 0 2.9391619220656 3.51749783735832 5.99893656194668 1.34807314829969 2.16791018966744 4.29045944114839 +observational 4.18205014264121 3.39114704580865 1.99741770620125 4.84418708645859 3.03013370027132 2.56494935746154 3.47196645255036 6.4393503711001 3.19458313229916 3.87743156065853 3.19458313229916 +observational 3.77734810210154 2.58776403522771 2.90690105984738 3.13983261752775 1.9154509415706 2.12226153886276 1.75440368268429 5.29831736654804 1.71739505393919 2.52572864430826 2.71469474382088 +observational 3.50855589998265 3.14845336057165 1.68268837417369 5.28826703069454 4.20020495292158 2.36085400111802 3.20274644293832 6.52941883826223 2.89591193827178 3.50855589998265 2.10413415427021 +observational 2.60268968544438 2.37024374146786 2.23964529322017 1.27815220250019 3.39114704580865 1.59127394180643 3.53514535417189 5.4249500174814 2.61739583283408 3.49953328238302 2.50143595173921 +observational 2.45958884180371 1.4747630091075 2.54160199346455 3.8308129500026 3.11351530921037 1.60140574073684 2.90690105984738 6.81783057145415 2.83321334405622 3.85014760171006 2.84490938381941 +observational 2.52572864430826 2.96010509591084 2.66025953726586 4.01998014693324 3.4904285153901 1.11514159061932 2.34180580614733 5.61312810638807 1.22377543162212 3.2846635654062 4.7361984483945 +observational 4.43438186500781 3.56104608260405 2.41591377830105 2.90690105984738 4.14630430115281 1.4655675420144 2.25758772706331 5.78382518232974 0.879626747502564 5.91889385427315 3.29212628660779 +observational 3.64283551561253 2.76000994003292 1.73518911773966 4.91265488573605 2.89591193827178 3.49953328238302 4.23700086262362 5.93753620508243 3.13113691056019 4.26267987704132 3.76815263500844 +observational 3.3357695763397 2.2213750375685 1.78170913337455 4.88280192258637 2.89591193827178 3.23867845216438 3.8416005411316 6.32256523992728 2.86789890204411 3.40119738166216 2.58021682959233 +observational 2.45958884180371 2.16791018966744 3.29212628660779 3.74242022104197 2.70805020110221 2.85070650150373 3.17387845893747 6.16120732169508 1.51951320490611 2.58021682959233 3.07731226054641 +observational 0 1.24126858906963 1.7630170003624 1.20597080698861 1.14103300455206 2.45958884180371 3.21084365317094 5.8636311755981 3.10458667846607 3.87743156065853 2.9391619220656 +observational 4.91265488573605 3.88567903008854 1.23256026117785 2.94968833505258 3.2188758248682 1.50185270175416 2.92316158071916 5.61312810638807 3.17387845893747 3.7864597824528 1.69009581545155 +observational 2.9704144655697 2.62466859216316 2.16791018966744 2.70136121295141 3.19458313229916 2.52572864430826 3.19458313229916 6.44888939414686 3.56953269648137 4.17284762371004 2.91235066461494 +observational 3.75887182593397 2.51769647261099 2.39789527279837 2.20386912005489 1.54756250871601 2.46809953147162 3.45315712059287 5.72031177660741 0.727548607277278 2.86220088092947 4.40671924726425 +observational 1.66392609771817 1.71739505393919 2.79116510781272 3.10458667846607 2.9391619220656 3.03013370027132 3.34638914516716 6.14418563412565 2.83321334405622 3.3178157727231 2.66025953726586 +observational 4.37071287477361 3.92197333628131 3.20274644293832 3.98527346716774 3.68887945411394 2.37024374146786 3.04927304048202 6.09807428216624 2.94968833505258 3.73289633953071 2.37954613413017 +observational 4.39814601655377 2.82137888640921 1.42069578783722 6.09807428216624 4.12874598893943 1.67335123817775 3.00568260440716 6.99759598298193 1.62727783056243 3.14845336057165 3.95699637107088 +observational 3.47196645255036 3.29212628660779 1.03318448334565 1.03318448334565 0.500775287912489 3.51749783735832 4.02891675689965 6.83625927727707 3.56104608260405 3.8308129500026 2.23108909128898 +observational 3.68887945411394 2.99573227355399 2.65324196460721 4.44382703557933 2.9391619220656 1.79840401194672 2.50959926237837 5.93753620508243 1.6094379124341 2.7408400239252 4.30811095172371 +observational 2.97552956623647 3.00568260440716 2.65324196460721 2.67414864942653 0.412109650826833 2.43361335540045 2.63188884013665 6.18001665365257 1.65441127807683 2.73436750941958 4.87519732320115 +observational 3.92986292355648 3.3357695763397 1.83418018511201 5.45958551414416 2.67414864942653 1.61938824328727 2.61739583283408 6.46769872610435 3.2846635654062 3.75887182593397 3.03974915897077 +observational 3.72328088083127 3.29953372788566 2.14943391349987 3.59731226058845 3.74242022104197 2.68102152871429 3.31054301339402 5.99146454710798 2.9338568698359 4.04830062372069 4.02891675689965 +observational 4.07414185490458 3.4626060097908 1.4036429994545 2.65324196460721 1.37624402526639 2.03339760317843 2.41591377830105 5.44241771052179 2.79116510781272 3.66867674679642 2.86220088092947 +observational 4.17284762371004 3.04927304048202 2.3887627892351 4.14630430115281 2.9704144655697 3.29953372788566 3.73289633953071 6.13339804299665 2.14124194258528 2.99573227355399 2.45958884180371 +observational 4.12874598893943 3.4904285153901 2.43361335540045 2.89591193827178 3.12236492448736 2.37024374146786 3.85014760171006 7.58222919427646 1.94304891677428 2.72785282839839 1.74571553072665 +observational 3.47196645255036 3.3357695763397 2.99573227355399 2.97552956623647 1.16002091679675 2.11384296839717 2.72785282839839 4.70048036579242 3.16547504814109 4.06560209335645 2.25758772706331 +observational 4.15575319035074 4.16511363311031 0.810930216216329 5.44241771052179 2.9391619220656 2.9338568698359 3.67882911826043 6.73696695800186 2.86789890204411 3.63495111208838 2.99573227355399 +observational 3.09557760852371 3.2846635654062 1.2947271675944 3.27336401015227 2.36085400111802 2.65324196460721 3.27336401015227 6.60258789218934 3.41772668361337 3.75887182593397 2.81540871942271 +observational 4.14630430115281 3.6609942506244 2.31253542384721 4.20020495292158 2.64617479738412 1.97823903617067 2.72785282839839 5.82894561761021 1.25846098961001 3.64283551561253 4.86753445045558 +observational 4.88280192258637 4.00186370942794 2.30258509299405 3.7864597824528 4.69134788222914 2.60268968544438 3.40119738166216 5.58724865840025 3.29953372788566 3.85014760171006 2.92316158071916 +observational 3.29212628660779 3.19458313229916 3.12236492448736 2.84490938381941 1.86252854011626 3.06805293513362 3.3178157727231 6.00881318544259 2.81540871942271 3.82209829790016 4.81218435537242 +observational 3.66867674679642 2.86789890204411 4.0842942263686 4.77912349311153 2.54160199346455 2.79728133483015 3.35340671782581 5.74620319054015 4.00186370942794 4.30811095172371 2.96010509591084 +observational 3.75887182593397 2.86789890204411 0.357674444271816 4.12874598893943 2.55722731136763 2.92316158071916 4.38949864951258 8.61667646990119 2.32238772029023 3.05870707271538 2.75366071235426 +observational 4.61512051684126 4.60517018598809 2.35137525716348 4.18205014264121 3.31054301339402 2.10413415427021 2.88480071284671 6.10702288774225 2.30258509299405 2.67414864942653 1.52822785700856 +observational 4.29045944114839 3.13983261752775 1.69009581545155 4.52396013056255 2.68102152871429 1.44926916028128 3.40784192438082 6.89871453432999 3.42751468997953 4.30811095172371 3.59731226058845 +observational 3.23867845216438 3.15700042115011 2.61006979274201 4.84418708645859 2.87919845729804 2.09556092355972 1.87946504964716 5.71042701737487 1.82616089594539 2.63188884013665 4.05698877567833 +observational 3.51749783735832 2.82137888640921 2.52572864430826 2.54160199346455 2.79116510781272 1.708377860289 2.77258872223978 5.57594910314632 2.82137888640921 3.53514535417189 0.982078472412158 +observational 5.32300997913841 4.26267987704132 2.20386912005489 4.38077585277223 2.82137888640921 3.17387845893747 3.03013370027132 6.08904487544685 2.65324196460721 3.43720781918519 3.02042488614436 +observational 3.18221184049661 3.3357695763397 3.12236492448736 4.55071400019203 3.60549784517489 2.88480071284671 3.51749783735832 5.99146454710798 3.25424296870549 4.01096295328305 3.43720781918519 +observational 3.52636052461616 3.05870707271538 2.94968833505258 2.23964529322017 1.69009581545155 2.62466859216316 3.09557760852371 6.16961073249146 2.97552956623647 4.10098910494077 3.58905911883173 +observational 4.04830062372069 3.15700042115011 2.37024374146786 3.81330703248899 3.96651119071222 2.1770218700187 3.03013370027132 7.32118855673948 2.36085400111802 3.19458313229916 2.54160199346455 +observational 4.01096295328305 3.10458667846607 2.86789890204411 3.11351530921037 2.23964529322017 3.16547504814109 3.3178157727231 5.92692602597041 3.20274644293832 3.98527346716774 3.11351530921037 +observational 4.34380542185368 3.04927304048202 2.50143595173921 3.09557760852371 1.14103300455206 1.88858365386359 3.13113691056019 6.09807428216624 3.29212628660779 3.64283551561253 2.33214389523559 +observational 4.0842942263686 3.72328088083127 2.27521389619791 2.70136121295141 1.81645208181843 2.20386912005489 3.01553490085017 6.21460809842219 3.40784192438082 4.03777421073371 2.67414864942653 +observational 2.23964529322017 3.32862668882732 2.56494935746154 3.11351530921037 2.86220088092947 2.9704144655697 3.29212628660779 6.05443934626937 3.35340671782581 3.59731226058845 2.92316158071916 +observational 2.80336038090653 3.50855589998265 0 5.99893656194668 3.56953269648137 2.77258872223978 3.49953328238302 6.56526497003536 2.79728133483015 3.38099467434464 2.9704144655697 +observational 4.11087386417331 3.70622809244855 2.60268968544438 2.67414864942653 1.7630170003624 2.07819075977818 2.61006979274201 6.62936325343745 2.42480272571829 3.17387845893747 1.99741770620125 +observational 4.15575319035074 3.55248682920838 2.1770218700187 4.45201900649392 2.86220088092947 2.68784749378469 3.29212628660779 6.40357419793482 1.07158361628019 2.82137888640921 4.16511363311031 +observational 3.82209829790016 2.4932054526027 4.38949864951258 4.50645421304893 3.14845336057165 2.05923883436232 2.75366071235426 5.89164421182577 4.17284762371004 4.60517018598809 2.80336038090653 +observational 3.66867674679642 2.30258509299405 1.49290409617815 2.70805020110221 3.3178157727231 2.36085400111802 2.87919845729804 6.07993319509559 2.46809953147162 3.35340671782581 3.69635146895264 +observational 4.78749174278205 4.45201900649392 2.27521389619791 4.7361984483945 2.58776403522771 2.08691355651854 2.76000994003292 6.35957386867238 1.92424865227413 3.04927304048202 4.3267781604434 +observational 1.75440368268429 0.00995033085316809 2.1770218700187 4.10098910494077 3.43720781918519 2.7408400239252 3.44361809754611 6.59304453414244 1.19694818938897 2.76000994003292 4.02891675689965 +observational 3.56104608260405 2.34180580614733 2.32238772029023 2.34180580614733 3.27336401015227 2.37954613413017 3.27336401015227 6.40357419793482 3.03974915897077 3.87743156065853 2.80336038090653 +observational 2.97552956623647 3.8416005411316 0.488580014818671 3.63495111208838 2.01490302054226 2.57261223020711 2.96010509591084 6.26909628370626 3.08648663682246 4.10098910494077 3.79548918917219 +observational 3.52636052461616 2.9338568698359 3.75887182593397 4.49758497530815 3.80443779474821 1.52822785700856 2.88480071284671 6.51174532964473 3.24649099190117 3.89385903480047 3.23867845216438 +observational 3.85862222870103 3.36384159511839 2.21266038546606 2.9704144655697 4.30000279919529 2.96010509591084 3.3178157727231 6.11589212548303 1.20597080698861 3.02042488614436 4.11903717481247 +observational 3.7864597824528 3.34638914516716 2.84490938381941 3.11351530921037 2.60268968544438 2.58776403522771 3.00568260440716 5.74620319054015 3.16547504814109 3.50855589998265 2.67414864942653 +observational 4.77912349311153 3.38099467434464 2.77881927199042 2.72785282839839 2.28442112236637 2.92316158071916 3.35340671782581 5.98141421125448 3.90399083373088 4.16511363311031 2.9338568698359 +observational 3.98527346716774 3.17387845893747 2.1770218700187 4.57779898919196 3.20274644293832 1.37624402526639 2.02419306744936 5.03043792139244 2.71469474382088 3.3357695763397 2.75366071235426 +observational 5.0998664278242 4.28082412916472 1.35840915763035 2.43361335540045 3.70622809244855 2.3887627892351 3.37416870927424 7.56423847517049 3.23867845216438 3.72328088083127 3.24649099190117 +observational 3.74242022104197 3.10458667846607 0.307484699747961 3.65065824129374 3.06805293513362 3.18221184049661 3.67882911826043 6.37672694789863 3.01553490085017 3.52636052461616 2.79728133483015 +observational 4.26267987704132 4.20020495292158 1.59127394180643 2.43361335540045 2.65324196460721 1.6094379124341 2.77258872223978 5.84643877505772 2.90690105984738 3.50855589998265 2.58021682959233 +observational 4.0926765051214 3.4904285153901 2.54160199346455 2.52572864430826 2.86220088092947 3.67882911826043 4.11087386417331 6.78219205600679 3.47196645255036 4.29045944114839 3.2846635654062 +observational 3.72328088083127 3.36384159511839 2.72785282839839 3.40784192438082 2.56494935746154 2.92316158071916 3.71357206670431 6.32256523992728 1.5830939370945 3.29953372788566 4.27249074760558 +observational 3.25424296870549 2.96010509591084 2.60268968544438 2.99573227355399 1.61938824328727 2.73436750941958 3.49953328238302 6.62936325343745 3.32862668882732 4.02891675689965 2.62466859216316 +observational 4.36182392735636 3.7864597824528 2.79116510781272 2.80336038090653 1.15057202759882 4.55071400019203 5.28826703069454 6.96129604591017 1.89761985992753 2.79116510781272 2.86220088092947 +observational 3.85014760171006 4.04830062372069 2.23964529322017 5.0998664278242 3.96651119071222 2.23108909128898 2.68102152871429 6.45833828334479 2.30258509299405 3.39114704580865 2.24812890719799 +observational 2.85070650150373 3.36384159511839 2.32238772029023 4.47960696301275 2.28442112236637 3.12236492448736 3.18221184049661 5.79301360838414 3.08648663682246 3.63495111208838 2.64617479738412 +observational 3.9759363311718 2.98568193770049 2.58021682959233 3.53514535417189 3.09557760852371 2.25758772706331 2.79116510781272 6.45833828334479 0.845868267577609 2.484906649788 3.9759363311718 +observational 3.02042488614436 2.70805020110221 2.33214389523559 2.53369681395743 3.38099467434464 3.52636052461616 4.254193263164 7.47420480649612 1.30291275218084 2.84490938381941 4.84418708645859 +observational 4.01096295328305 3.31054301339402 4.01998014693324 4.87519732320115 3.43720781918519 2.32238772029023 3.03013370027132 5.92692602597041 2.15871472257434 3.14845336057165 3.29212628660779 +observational 4.43438186500781 3.13983261752775 1.19694818938897 5.73979291217923 3.23867845216438 1.5830939370945 2.34180580614733 5.4971682252932 2.31253542384721 3.38099467434464 4.05698877567833 +observational 4.90527477843843 5.28826703069454 1.68268837417369 4.78749174278205 2.61739583283408 2.27521389619791 3.13983261752775 6.25190388316589 2.31253542384721 3.29212628660779 2.63188884013665 +observational 3.23080439573347 2.86220088092947 1.81645208181843 4.83628190695148 3.16547504814109 1.94304891677428 2.9338568698359 4.03777421073371 2.11384296839717 2.68784749378469 2.32238772029023 +observational 3.75185425327532 3.14845336057165 2.79728133483015 3.68887945411394 0.559615787935423 1.87946504964716 2.35137525716348 6.41345895716736 2.47653840011748 3.25424296870549 3.82209829790016 +observational 4.26267987704132 3.70622809244855 2.56494935746154 5.05624580534831 3.69635146895264 1.6467336971778 2.43361335540045 0 1.01523067972906 3.04927304048202 4.30811095172371 +observational 4.13676527810605 3.27336401015227 2.2213750375685 2.76000994003292 4.11903717481247 1.83418018511201 2.2935443483419 5.73979291217923 1.08856195281461 2.85070650150373 4.82028156560504 +observational 3.93963817246112 3.23867845216438 2.03339760317843 4.3528552573736 3.13983261752775 2.65324196460721 3.13113691056019 5.73979291217923 3.3178157727231 3.80443779474821 2.79728133483015 +observational 4.15575319035074 3.20274644293832 3.11351530921037 2.54160199346455 3.03013370027132 2.70136121295141 3.29212628660779 6.48463523563525 1.95160817016995 3.15700042115011 4.5152454784601 +observational 4.30000279919529 3.55248682920838 2.96010509591084 4.44382703557933 3.85862222870103 2.19499988231411 3.03013370027132 6.28785856016178 3.18221184049661 3.41772668361337 2.83321334405622 +observational 3.8416005411316 2.96010509591084 2.60268968544438 3.62434093297637 4.81218435537242 2.20386912005489 2.64617479738412 6.57507584059962 0.943905898907128 3.00568260440716 4.66343909411207 +observational 3.82209829790016 2.70136121295141 1.77155676191054 2.68102152871429 3.2188758248682 3.06805293513362 3.58905911883173 6.09807428216624 1.89761985992753 2.73436750941958 3.90399083373088 +observational 4.46129981556839 3.59731226058845 0 6.13339804299665 3.60549784517489 3.74242022104197 4.00186370942794 5.4249500174814 1.77155676191054 2.62466859216316 3.75185425327532 +observational 3.41772668361337 3.13983261752775 1.83418018511201 5.05624580534831 2.2935443483419 2.15871472257434 3.03974915897077 5.46806014113513 3.15700042115011 3.58905911883173 1.67335123817775 +observational 3.56104608260405 2.21266038546606 2.84490938381941 2.51769647261099 1.28647402583768 2.9338568698359 3.52636052461616 6.66440902035041 2.99573227355399 3.67882911826043 2.71469474382088 +observational 5.35185813347607 4.47960696301275 1.77155676191054 5.32300997913841 2.88480071284671 3.27336401015227 3.52636052461616 5.72031177660741 2.70136121295141 3.71357206670431 2.46809953147162 +observational 3.77734810210154 3.06805293513362 2.35137525716348 3.39114704580865 3.26575941076705 2.43361335540045 2.9704144655697 6.04500531403601 2.45958884180371 3.67882911826043 2.2213750375685 +observational 2.9704144655697 2.62466859216316 2.96010509591084 2.64617479738412 0.2390169004705 1.65441127807683 3.51749783735832 6.95272864462487 3.47196645255036 4.31748811353631 3.75185425327532 +observational 4.77068462446567 4.16511363311031 3.56953269648137 4.60517018598809 4.79579054559674 3.07731226054641 3.58905911883173 6.82654522355659 0.215111379616945 3.52636052461616 0 +observational 4.16511363311031 3.21084365317094 4.5152454784601 5.23644196282995 3.92197333628131 0.672944473242426 2.62466859216316 6.25958146406492 1.44926916028128 3.11351530921037 4.80402104473326 +observational 3.77734810210154 3.2846635654062 3.90399083373088 4.0926765051214 2.45958884180371 2.46809953147162 3.72328088083127 8.16706817834124 3.67882911826043 4.42484663185681 4.28082412916472 +observational 4.39814601655377 3.67882911826043 2.92316158071916 3.07731226054641 1.49290409617815 1.69927861643389 2.89591193827178 4.21803603456465 1.18784342239605 2.66025953726586 4.254193263164 +observational 4.07414185490458 3.3357695763397 2.9391619220656 3.6609942506244 3.77734810210154 1.60140574073684 2.87919845729804 6.33150184989369 3.29212628660779 4.04830062372069 3.03974915897077 +observational 3.07731226054641 2.92316158071916 2.40694510831829 2.9704144655697 2.54160199346455 2.97552956623647 3.52636052461616 5.72031177660741 2.86789890204411 3.40119738166216 2.50143595173921 +observational 4.12874598893943 3.29953372788566 0.963174317773006 5.18178355029209 3.3357695763397 4.06560209335645 4.48863636973214 7.3304052118444 3.53514535417189 4.15575319035074 3.03974915897077 +observational 3.20274644293832 3.23867845216438 2.36085400111802 2.89591193827178 0.27002713721306 0.774727167552368 3.4626060097908 1.10525683138678 2.54160199346455 3.41772668361337 3.02042488614436 +observational 1.80828877117927 3.05870707271538 0.636576829071551 5.27811465923052 3.69635146895264 3.9759363311718 4.53367418428302 7.08757370555797 3.00568260440716 3.39114704580865 0.86288995514704 +observational 5.03695260241363 4.46129981556839 3.52636052461616 5.82008293035236 5.07517381523383 3.23867845216438 3.85862222870103 7.3038432252777 1.18784342239605 3.56104608260405 5.44241771052179 +observational 4.30000279919529 3.55248682920838 3.19458313229916 5.80211837537706 4.254193263164 1.37624402526639 2.37954613413017 6.05443934626937 2.02419306744936 3.31054301339402 3.01553490085017 +observational 4.254193263164 3.62434093297637 1.87946504964716 2.15871472257434 1.89761985992753 2.50959926237837 2.60268968544438 5.7037824746562 3.07731226054641 3.92197333628131 2.4932054526027 +observational 4.34380542185368 3.27336401015227 2.87919845729804 2.65324196460721 2.63188884013665 3.52636052461616 3.9759363311718 6.19644412779452 1.86252854011626 2.62466859216316 2.34180580614733 +observational 2.46809953147162 3.11351530921037 1.74571553072665 2.19499988231411 2.53369681395743 1.96009478404727 3.02042488614436 6.85329909318608 2.90690105984738 3.51749783735832 3.02042488614436 +observational 2.89591193827178 3.12236492448736 1.4036429994545 5.09375020080676 2.50143595173921 2.64617479738412 3.34638914516716 6.41345895716736 1.98787434815435 2.37024374146786 1.43031124653666 +observational 3.48124008933569 3.24649099190117 1.87946504964716 5.57594910314632 4.11087386417331 2.2213750375685 2.68102152871429 6.25958146406492 3.13983261752775 3.66867674679642 2.9338568698359 +observational 3.90399083373088 3.8308129500026 2.20386912005489 3.86702563949741 3.2188758248682 1.99741770620125 2.80336038090653 6.08904487544685 2.31253542384721 2.61006979274201 1.82616089594539 +observational 3.73289633953071 3.17387845893747 1.51072193949494 2.67414864942653 3.47196645255036 2.50959926237837 3.18221184049661 6.08904487544685 2.88480071284671 3.37416870927424 2.51769647261099 +observational 3.02042488614436 3.48124008933569 2.31253542384721 4.01998014693324 2.9338568698359 1.30291275218084 3.20274644293832 5.73979291217923 0.810930216216329 2.9338568698359 4.22683374526818 +observational 4.07414185490458 2.86220088092947 2.61006979274201 3.17387845893747 0.810930216216329 1.81645208181843 2.51769647261099 5.57594910314632 1.10525683138678 3.13113691056019 4.44382703557933 +observational 3.72328088083127 3.27336401015227 3.80443779474821 4.70048036579242 3.20274644293832 1.31372366828506 1.15057202759882 6.50279004591562 1.12492959698548 2.41591377830105 3.93963817246112 +observational 3.55248682920838 2.80336038090653 1.4655675420144 4.28082412916472 3.25424296870549 3.67882911826043 4.254193263164 7.11476944836646 2.53369681395743 3.41772668361337 3.74242022104197 +observational 2.99573227355399 2.94968833505258 2.32238772029023 2.66025953726586 2.81540871942271 3.04927304048202 2.97552956623647 5.78382518232974 3.07731226054641 3.6609942506244 3.02042488614436 +observational 5.18738580584075 3.32862668882732 1.870262530716 2.32238772029023 2.06812778177956 2.05027016437956 2.33214389523559 6.4393503711001 2.76000994003292 3.12236492448736 2.83321334405622 +observational 3.94931879017184 3.40784192438082 2.16791018966744 4.56954300834494 3.23080439573347 1.93441576962958 2.70805020110221 6.18001665365257 2.31253542384721 3.35340671782581 3.31054301339402 +observational 4.52396013056255 4.24563400976833 2.63188884013665 2.88480071284671 2.55722731136763 2.84490938381941 3.3178157727231 6.19644412779452 2.75366071235426 3.55248682920838 2.88480071284671 +observational 3.87743156065853 2.75366071235426 2.31253542384721 4.47049528266149 2.39789527279837 3.3357695763397 3.89385903480047 6.31354804627709 3.25424296870549 3.8416005411316 2.82137888640921 +observational 4.44382703557933 3.32862668882732 2.84490938381941 6.07993319509559 4.67282883446191 2.79116510781272 3.32862668882732 6.43133108193348 3.10458667846607 3.66867674679642 3.32862668882732 +observational 3.59731226058845 2.98568193770049 1.8531680973567 2.68784749378469 3.21084365317094 3.7864597824528 5.20948615284142 7.09672137849476 2.03339760317843 3.32862668882732 4.70953020131233 +observational 4.30000279919529 3.3178157727231 2.42480272571829 3.24649099190117 3.2846635654062 2.89591193827178 3.36384159511839 5.4510384535657 1.45628673293993 3.3178157727231 4.8283137373023 +observational 2.96010509591084 3.31054301339402 2.61739583283408 4.87519732320115 3.93963817246112 2.43361335540045 2.89591193827178 6.51174532964473 1.69927861643389 2.34180580614733 3.06805293513362 +observational 3.36384159511839 3.07731226054641 2.45958884180371 4.26267987704132 3.05870707271538 2.58776403522771 3.06805293513362 6.85329909318608 3.32862668882732 3.79548918917219 2.28442112236637 +observational 3.92986292355648 4.78749174278205 3.31054301339402 3.62434093297637 3.00568260440716 3.01553490085017 3.66867674679642 6.14418563412565 1.99741770620125 2.84490938381941 3.31054301339402 +observational 4.29045944114839 3.35340671782581 2.64617479738412 3.14845336057165 1.23256026117785 5.93753620508243 6.59304453414244 8.25686684897431 2.70136121295141 3.51749783735832 2.80336038090653 +observational 4.12874598893943 3.29953372788566 2.47653840011748 3.05870707271538 2.18605127673809 1.96990565461153 3.50855589998265 6.93439720992856 1.63705307946707 2.16791018966744 4.21803603456465 +observational 3.55248682920838 3.21084365317094 4.70953020131233 5.39816270151775 3.35340671782581 3.77734810210154 4.26267987704132 7.46565531013406 3.12236492448736 3.89385903480047 2.75366071235426 +observational 4.19116874685764 4.15575319035074 2.2935443483419 4.47960696301275 3.24649099190117 1.870262530716 2.88480071284671 6.59304453414244 2.90690105984738 3.63495111208838 2.14124194258528 +observational 3.29212628660779 2.85070650150373 1.93441576962958 2.88480071284671 2.90690105984738 1.9154509415706 2.85070650150373 6.57507584059962 3.2846635654062 3.72328088083127 3.41772668361337 +observational 4.36182392735636 3.04927304048202 2.13179677201376 3.47196645255036 3.69635146895264 1.75440368268429 2.88480071284671 5.36129216570943 2.35137525716348 3.16547504814109 2.41591377830105 +observational 3.62434093297637 3.43720781918519 2.79116510781272 2.86220088092947 1.79009141212736 1.67335123817775 2.39789527279837 5.79301360838414 3.07731226054641 3.54385368206368 2.47653840011748 +observational 4.01096295328305 2.37954613413017 1.80828877117927 2.08691355651854 2.92316158071916 2.54160199346455 3.89385903480047 7.13249755166004 3.36384159511839 3.85014760171006 3.21084365317094 +observational 4.01998014693324 3.21084365317094 2.23108909128898 4.7361984483945 2.73436750941958 2.32238772029023 2.84490938381941 6.02586597382531 2.84490938381941 3.48124008933569 2.57261223020711 +observational 3.89385903480047 2.91235066461494 2.68102152871429 3.16547504814109 1.870262530716 1.54756250871601 2.54160199346455 4.91265488573605 1.36609165380237 3.2188758248682 4.84418708645859 +observational 4.11903717481247 3.04927304048202 2.39789527279837 2.61006979274201 3.51749783735832 1.71739505393919 3.81330703248899 7.08757370555797 2.87919845729804 3.58073729549423 2.7408400239252 +observational 1.21491274436427 2.45958884180371 3.04927304048202 4.00186370942794 1.708377860289 3.07731226054641 3.29953372788566 7.00669522683704 2.53369681395743 3.60549784517489 4.65396035015752 +observational 5.19849703126583 4.54223038621422 2.16791018966744 4.99043258677874 2.96010509591084 2.9338568698359 2.92316158071916 5.87211778947542 2.02419306744936 2.75366071235426 4.29045944114839 +observational 2.77258872223978 3.24649099190117 2.77881927199042 4.40671924726425 2.67414864942653 1.57484646766448 2.52572864430826 5.76519110278484 3.35340671782581 3.85862222870103 2.09556092355972 +observational 3.29953372788566 3.73289633953071 2.58776403522771 2.89591193827178 2.76000994003292 2.00552585872967 2.80336038090653 6.33150184989369 3.41772668361337 3.87743156065853 3.02042488614436 +observational 4.87519732320115 4.28082412916472 2.24812890719799 2.86220088092947 3.11351530921037 2.23108909128898 2.71469474382088 6.27852142416584 2.23964529322017 3.4904285153901 5.18178355029209 +observational 4.18205014264121 3.43720781918519 2.71469474382088 2.84490938381941 0.970778917158225 3.08648663682246 3.39114704580865 6.30444880242198 3.2846635654062 3.79548918917219 2.85070650150373 +observational 1.88858365386359 2.9338568698359 0.131028262406404 4.94875989037817 2.50959926237837 3.11351530921037 3.12236492448736 6.07993319509559 2.91235066461494 3.13983261752775 2.35137525716348 +observational 3.3178157727231 2.92316158071916 2.86789890204411 2.58021682959233 2.75366071235426 2.9338568698359 3.62434093297637 6.22455842927536 1.80828877117927 3.07731226054641 3.07731226054641 +observational 4.26267987704132 3.6609942506244 1.7263316639056 1.99741770620125 1.74571553072665 2.15871472257434 2.96010509591084 6.84481547920826 2.54160199346455 3.40784192438082 2.70805020110221 +observational 4.58700621536042 3.60549784517489 2.63188884013665 3.43720781918519 3.85862222870103 2.92316158071916 3.3178157727231 5.84643877505772 2.86220088092947 3.56953269648137 2.97552956623647 +observational 3.92197333628131 3.15700042115011 2.05027016437956 2.36085400111802 3.73289633953071 2.25758772706331 2.97552956623647 6.46769872610435 3.18221184049661 3.98527346716774 2.75366071235426 +observational 4.71849887129509 3.86702563949741 1.04380405217311 5.26269018890489 3.67882911826043 1.44926916028128 2.68102152871429 6.71901315438526 2.31253542384721 2.9338568698359 4.254193263164 +observational 4.42484663185681 3.9926809084456 2.57261223020711 3.04927304048202 2.10413415427021 3.15700042115011 3.59731226058845 6.05443934626937 3.18221184049661 3.87743156065853 3.20274644293832 +observational 3.50855589998265 3.20274644293832 1.20597080698861 2.87919845729804 1.9154509415706 2.15871472257434 2.55722731136763 6.94408720822953 3.34638914516716 3.64283551561253 3.14845336057165 +observational 4.66343909411207 3.86702563949741 1.88858365386359 2.40694510831829 3.75887182593397 4.63472898822964 5.54126354515843 7.59135704669855 3.36384159511839 3.79548918917219 3.08648663682246 +observational 3.23080439573347 3.68887945411394 2.62466859216316 2.86789890204411 2.02419306744936 2.23108909128898 2.86220088092947 6.70073110954781 1.92424865227413 2.75366071235426 1.42069578783722 +observational 2.37954613413017 2.9704144655697 2.52572864430826 4.67282883446191 2.89591193827178 1.30291275218084 2.62466859216316 6.58340922215876 2.37024374146786 2.81540871942271 3.92986292355648 +observational 1.15057202759882 1.44926916028128 2.4932054526027 4.29045944114839 3.29212628660779 5.07517381523383 5.33271879326537 7.15070145759253 2.23964529322017 3.15700042115011 3.2846635654062 +observational 4.38077585277223 3.52636052461616 2.16791018966744 3.10458667846607 4.30000279919529 2.63188884013665 3.16547504814109 6.20657592672493 3.08648663682246 3.87743156065853 2.46809953147162 +observational 4.53367418428302 3.80443779474821 2.26695791535089 3.34638914516716 2.77258872223978 2.85070650150373 3.15700042115011 6.42162226780652 3.16547504814109 3.80443779474821 2.11384296839717 +observational 3.62434093297637 2.90690105984738 2.72785282839839 2.77881927199042 2.33214389523559 1.28647402583768 2.96010509591084 7.09672137849476 3.21084365317094 3.76815263500844 3.40119738166216 +observational 3.58073729549423 2.77881927199042 2.36085400111802 2.12226153886276 2.41591377830105 3.13113691056019 3.49953328238302 5.03695260241363 3.06805293513362 3.69635146895264 2.66025953726586 +observational 4.67282883446191 3.40119738166216 2.15871472257434 3.64283551561253 2.28442112236637 1.83418018511201 2.09556092355972 6.14418563412565 1.77155676191054 3.3178157727231 5.04342511691925 +observational 4.62497281328427 3.48124008933569 1.75440368268429 5.6937321388027 3.38099467434464 0.900161349944271 2.57261223020711 3.71357206670431 2.72785282839839 3.20274644293832 2.96010509591084 +observational 3.4904285153901 3.2846635654062 2.71469474382088 3.38099467434464 2.23964529322017 3.82209829790016 4.15575319035074 7.04228617193974 2.77258872223978 3.34638914516716 2.28442112236637 +observational 4.60517018598809 3.29953372788566 2.09556092355972 4.55071400019203 3.12236492448736 1.48387468945875 2.68784749378469 5.54907608489522 2.55722731136763 3.48124008933569 3.89385903480047 +observational 4.50645421304893 4.06560209335645 1.48387468945875 4.88280192258637 2.61006979274201 2.79728133483015 4.22683374526818 8.25686684897431 3.2846635654062 4.26267987704132 3.67882911826043 +observational 4.60517018598809 3.24649099190117 0 5.48479693349065 3.51749783735832 2.9704144655697 3.38099467434464 6.31354804627709 3.18221184049661 3.85014760171006 3.32862668882732 +observational 4.3267781604434 3.39114704580865 2.23108909128898 5.01727983681492 3.4904285153901 2.64617479738412 3.89385903480047 6.30444880242198 3.03974915897077 3.69635146895264 2.43361335540045 +observational 3.98527346716774 3.03013370027132 2.62466859216316 4.41642806139121 3.44361809754611 1.12492959698548 2.54160199346455 5.92692602597041 2.9391619220656 3.42751468997953 1.95160817016995 +observational 4.50645421304893 3.79548918917219 1.63705307946707 2.45958884180371 3.93963817246112 2.90690105984738 3.32862668882732 5.78382518232974 3.82209829790016 4.20916023665068 3.27336401015227 +observational 4.24563400976833 3.85862222870103 2.9338568698359 4.90527477843843 3.16547504814109 2.08691355651854 3.60549784517489 7.48324441607385 2.2935443483419 3.19458313229916 2.82137888640921 +observational 5.26269018890489 4.11087386417331 3.36384159511839 4.30811095172371 3.56104608260405 3.29953372788566 3.70622809244855 5.55682806169954 3.69635146895264 3.98527346716774 2.42480272571829 +observational 4.45201900649392 3.10458667846607 1.97823903617067 4.64439089914137 3.29212628660779 3.15700042115011 3.65065824129374 6.23244801655052 3.41772668361337 4.06560209335645 3.56953269648137 +observational 4.21803603456465 2.70136121295141 2.37024374146786 3.71357206670431 2.99573227355399 3.53514535417189 3.92986292355648 5.82008293035236 2.96010509591084 3.54385368206368 3.09557760852371 +observational 2.94968833505258 2.28442112236637 0.792992515529661 1.6094379124341 2.52572864430826 1.31372366828506 3.00568260440716 7.45645455517621 0.951657875711446 3.42751468997953 4.94875989037817 +observational 2.77881927199042 2.72785282839839 3.4626060097908 3.92986292355648 3.47196645255036 3.03974915897077 3.49953328238302 5.85507192220243 3.23080439573347 3.85014760171006 3.19458313229916 +observational 4.56017282005736 3.36384159511839 0.609765571620894 2.67414864942653 3.90399083373088 3.12236492448736 4.01998014693324 6.80903930604298 2.00552585872967 3.36384159511839 4.82028156560504 +observational 3.89385903480047 3.05870707271538 1.59127394180643 4.49758497530815 3.07731226054641 0.963174317773006 2.88480071284671 6.85329909318608 2.27521389619791 3.85014760171006 5.57594910314632 +observational 2.9391619220656 3.26575941076705 2.37024374146786 5.04342511691925 3.13983261752775 2.52572864430826 3.29953372788566 6.34035930372775 2.75366071235426 3.25424296870549 3.62434093297637 +observational 4.30811095172371 3.59731226058845 3.03974915897077 2.20386912005489 1.82616089594539 0.908258560176891 2.61739583283408 6.19644412779452 1.55603713570699 2.79728133483015 4.27249074760558 +observational 3.24649099190117 3.20274644293832 2.36085400111802 3.58073729549423 2.30258509299405 2.71469474382088 3.56953269648137 6.54821910276237 3.6163087612791 3.9759363311718 2.79728133483015 +observational 4.11087386417331 3.43720781918519 2.06812778177956 2.03339760317843 3.58073729549423 2.75366071235426 3.36384159511839 6.41345895716736 3.19458313229916 3.67882911826043 2.82137888640921 +observational 3.29953372788566 2.79728133483015 2.50143595173921 4.90527477843843 3.11351530921037 2.10413415427021 2.98568193770049 6.62936325343745 2.86220088092947 3.77734810210154 0.837247524533702 +observational 5.01727983681492 3.88567903008854 2.37954613413017 3.39114704580865 4.17284762371004 1.77155676191054 3.06805293513362 6.52941883826223 0 4.46129981556839 1.11514159061932 +observational 5.18738580584075 4.34380542185368 2.40694510831829 5.33271879326537 3.81330703248899 1.42069578783722 2.11384296839717 4.89034912822175 2.54160199346455 2.96010509591084 3.59731226058845 +observational 5.03695260241363 4.91265488573605 3.20274644293832 3.27336401015227 1.56444054650336 0.792992515529661 2.54160199346455 6.23244801655052 3.16547504814109 3.44361809754611 2.1770218700187 +observational 4.30000279919529 3.58905911883173 3.32862668882732 5.05624580534831 4.11087386417331 2.55722731136763 2.77258872223978 5.46806014113513 1.66392609771817 2.91235066461494 4.20020495292158 +observational 4.56017282005736 3.75887182593397 2.26695791535089 4.30811095172371 3.81330703248899 2.56494935746154 4.254193263164 7.50163445788341 3.18221184049661 3.92197333628131 2.79116510781272 +observational 4.01096295328305 3.93963817246112 2.86789890204411 2.90690105984738 2.81540871942271 2.86220088092947 2.9704144655697 5.76519110278484 0.609765571620894 2.53369681395743 4.21803603456465 +observational 3.59731226058845 2.35137525716348 2.35137525716348 2.9704144655697 2.2935443483419 2.75366071235426 3.27336401015227 5.99146454710798 1.36609165380237 2.83321334405622 4.01998014693324 +observational 3.41772668361337 2.75366071235426 1.51951320490611 2.9391619220656 3.48124008933569 2.47653840011748 2.55722731136763 6.48463523563525 1.74571553072665 2.2935443483419 4.0842942263686 +observational 5.06259503302697 3.6163087612791 2.81540871942271 3.03974915897077 1.53901544813755 2.68784749378469 2.86789890204411 5.92692602597041 2.73436750941958 3.11351530921037 3.01553490085017 +observational 3.90399083373088 3.4626060097908 3.66867674679642 5.50533153593236 4.23700086262362 1.98787434815435 2.80336038090653 6.12468339089421 2.50143595173921 2.76000994003292 1.90657514365664 +observational 4.49758497530815 3.58073729549423 2.73436750941958 3.94931879017184 2.65324196460721 3.24649099190117 4.02891675689965 7.0604763659998 2.85070650150373 3.10458667846607 1.93441576962958 +observational 3.58073729549423 2.89591193827178 2.32238772029023 2.88480071284671 3.13983261752775 3.70622809244855 4.254193263164 7.37525577800975 2.23108909128898 3.01553490085017 0.879626747502564 +observational 4.21803603456465 3.36384159511839 2.70805020110221 2.82137888640921 2.53369681395743 1.93441576962958 2.9338568698359 6.79122146272619 2.07819075977818 2.97552956623647 4.44382703557933 +observational 4.48863636973214 3.45315712059287 2.72785282839839 3.72328088083127 4.30000279919529 3.74242022104197 3.96651119071222 5.93753620508243 3.00568260440716 3.92986292355648 3.39114704580865 +observational 4.05698877567833 3.07731226054641 1.43031124653666 4.16511363311031 2.23964529322017 1.63705307946707 4.23700086262362 7.18690102041163 3.4904285153901 4.02891675689965 2.47653840011748 +observational 4.44382703557933 3.64283551561253 2.84490938381941 2.98568193770049 1.12492959698548 2.50143595173921 3.4904285153901 6.79122146272619 1.4747630091075 3.19458313229916 4.46129981556839 +observational 3.21084365317094 3.06805293513362 1.18784342239605 5.15329159449778 2.31253542384721 3.62434093297637 4.03777421073371 6.54821910276237 3.05870707271538 3.56104608260405 2.45958884180371 +observational 4.15575319035074 2.97552956623647 2.68784749378469 3.58905911883173 3.8308129500026 2.40694510831829 3.93963817246112 7.19593722647557 2.1770218700187 2.40694510831829 3.73289633953071 +observational 4.36182392735636 3.49953328238302 2.96010509591084 3.25424296870549 1.35840915763035 2.86789890204411 3.06805293513362 6.03548143252476 3.26575941076705 4.01998014693324 2.96010509591084 +observational 4.30000279919529 3.4904285153901 0.802001585472027 2.87919845729804 2.79116510781272 3.43720781918519 3.80443779474821 5.58724865840025 3.32862668882732 3.85014760171006 3.20274644293832 +observational 4.76217393479776 3.69635146895264 2.41591377830105 4.91998092582813 3.03013370027132 3.14845336057165 3.56104608260405 6.47543271670409 2.21266038546606 2.4932054526027 4.23700086262362 +observational 4.76217393479776 4.36182392735636 2.42480272571829 2.43361335540045 1.82616089594539 0.494696241836107 1.87946504964716 6.51174532964473 1.07158361628019 3.12236492448736 3.85862222870103 +observational 3.53514535417189 3.02042488614436 1.78170913337455 3.95699637107088 2.9391619220656 1.93441576962958 2.89591193827178 6.28785856016178 4.11087386417331 4.5152454784601 2.12226153886276 +observational 5.18738580584075 3.54385368206368 2.40694510831829 2.66025953726586 0 4.11087386417331 5.16478597392351 7.3125534981026 1.43983512804792 3.02042488614436 4.76217393479776 +observational 4.66343909411207 3.66867674679642 1.00795792039998 5.04342511691925 1.99741770620125 2.83321334405622 3.54385368206368 6.32256523992728 3.31054301339402 4.01998014693324 3.8416005411316 +observational 3.66867674679642 2.87919845729804 1.73518911773966 5.32300997913841 4.16511363311031 2.68784749378469 3.43720781918519 5.82894561761021 3.26575941076705 3.9926809084456 4.24563400976833 +observational 4.27249074760558 3.24649099190117 2.77258872223978 2.51769647261099 2.94968833505258 3.19458313229916 3.32862668882732 5.61312810638807 1.33236601909433 3.14845336057165 4.44382703557933 +observational 2.63188884013665 3.04927304048202 2.76000994003292 3.58073729549423 2.80336038090653 2.45958884180371 2.70805020110221 7.18690102041163 2.56494935746154 3.16547504814109 2.57261223020711 +observational 4.5152454784601 4.38949864951258 1.870262530716 4.20916023665068 2.91235066461494 2.14943391349987 2.33214389523559 6.14418563412565 1.07158361628019 3.07731226054641 4.70048036579242 +observational 3.92197333628131 2.61006979274201 2.50143595173921 2.72785282839839 3.08648663682246 3.02042488614436 3.29212628660779 5.89989735358249 3.14845336057165 3.7864597824528 2.98568193770049 +observational 3.52636052461616 2.75366071235426 2.484906649788 4.39814601655377 3.32862668882732 2.70805020110221 3.40784192438082 6.21460809842219 1.65441127807683 2.67414864942653 4.30811095172371 +observational 3.88567903008854 2.9704144655697 3.24649099190117 2.67414864942653 1.5830939370945 3.09557760852371 3.54385368206368 6.02586597382531 3.41772668361337 3.98527346716774 2.68102152871429 +observational 4.43438186500781 3.54385368206368 2.30258509299405 2.72785282839839 2.55722731136763 2.05027016437956 3.11351530921037 5.92692602597041 3.53514535417189 3.9759363311718 3.07731226054641 +observational 3.79548918917219 2.89591193827178 2.9338568698359 3.73289633953071 3.01553490085017 2.89591193827178 3.09557760852371 6.14418563412565 3.17387845893747 3.69635146895264 3.04927304048202 +observational 3.44361809754611 3.05870707271538 2.33214389523559 3.49953328238302 4.39814601655377 2.77881927199042 3.15700042115011 6.37672694789863 3.05870707271538 3.73289633953071 3.05870707271538 +observational 4.37071287477361 4.0842942263686 3.19458313229916 3.55248682920838 1.24126858906963 3.11351530921037 3.74242022104197 6.04500531403601 3.14845336057165 3.54385368206368 2.66025953726586 +observational 3.75185425327532 3.07731226054641 2.45958884180371 3.69635146895264 1.00795792039998 2.35137525716348 3.2188758248682 6.41345895716736 2.08691355651854 3.56953269648137 4.59612944133594 +observational 3.93963817246112 3.6609942506244 2.58776403522771 2.75366071235426 1.8531680973567 2.87919845729804 3.37416870927424 6.43133108193348 0.500775287912489 2.80336038090653 4.46129981556839 +observational 4.15575319035074 3.93963817246112 2.20386912005489 2.58776403522771 2.10413415427021 2.70136121295141 3.20274644293832 6.25958146406492 3.26575941076705 3.70622809244855 2.9338568698359 +observational 2.65324196460721 2.91235066461494 2.9338568698359 4.17284762371004 3.14845336057165 2.23964529322017 3.08648663682246 6.62936325343745 3.45315712059287 3.86702563949741 2.71469474382088 +observational 3.75887182593397 3.01553490085017 3.6163087612791 4.76217393479776 4.42484663185681 2.62466859216316 3.08648663682246 6.35957386867238 2.57261223020711 3.50855589998265 5.14749447681345 +observational 3.27336401015227 2.84490938381941 2.28442112236637 5.0998664278242 3.42751468997953 1.73518911773966 2.77258872223978 7.10578612948127 1.60140574073684 2.94968833505258 4.46129981556839 +observational 1.82616089594539 1.5830939370945 3.89385903480047 4.19116874685764 3.04927304048202 1.87946504964716 2.82137888640921 6.81783057145415 2.91235066461494 3.40784192438082 2.2935443483419 +observational 3.45315712059287 3.03013370027132 2.61739583283408 2.79116510781272 1.51072193949494 2.9704144655697 3.42751468997953 6.10702288774225 3.50855589998265 3.80443779474821 2.58776403522771 +observational 4.36182392735636 3.24649099190117 2.52572864430826 3.34638914516716 3.89385903480047 3.18221184049661 3.44361809754611 5.84643877505772 2.19499988231411 3.20274644293832 2.28442112236637 +observational 3.40119738166216 2.23108909128898 2.92316158071916 2.96010509591084 2.60268968544438 2.09556092355972 3.49953328238302 6.14418563412565 1.83418018511201 3.52636052461616 4.67282883446191 +observational 3.92197333628131 2.9338568698359 2.82137888640921 3.17387845893747 2.79728133483015 3.2188758248682 3.17387845893747 5.4249500174814 0.819779831493311 2.4423470353692 4.57779898919196 +observational 3.17387845893747 2.99573227355399 2.14124194258528 4.59612944133594 2.90690105984738 1.66392609771817 3.00568260440716 6.70073110954781 2.58021682959233 3.48124008933569 2.97552956623647 +observational 4.30000279919529 3.14845336057165 2.77258872223978 3.49953328238302 3.90399083373088 1.4655675420144 1.87946504964716 4.66343909411207 1.21491274436427 3.72328088083127 4.77912349311153 +observational 2.39789527279837 2.68784749378469 2.76000994003292 3.75887182593397 2.90690105984738 2.77258872223978 3.50855589998265 5.89164421182577 3.63495111208838 4.03777421073371 3.81330703248899 +observational 4.18205014264121 3.23080439573347 2.50959926237837 4.97673374242057 2.98568193770049 1.39376637595859 2.66025953726586 6.81783057145415 1.51951320490611 3.11351530921037 4.3528552573736 +observational 3.07731226054641 2.10413415427021 2.23108909128898 2.86220088092947 4.14630430115281 2.00552585872967 2.75366071235426 6.06145691892802 1.98787434815435 2.86789890204411 4.07414185490458 +observational 4.15575319035074 2.91235066461494 1.95160817016995 4.96284463025991 3.16547504814109 3.90399083373088 4.18205014264121 7.26752542782817 0.845868267577609 2.79728133483015 4.10098910494077 +observational 4.64439089914137 4.10098910494077 0.746687947487975 5.15329159449778 2.68784749378469 2.46809953147162 2.71469474382088 6.01615715969835 3.27336401015227 3.92986292355648 2.9704144655697 +observational 3.24649099190117 2.91235066461494 2.08691355651854 3.09557760852371 3.79548918917219 2.84490938381941 3.26575941076705 5.64897423816121 3.3357695763397 3.79548918917219 3.13983261752775 +observational 2.85070650150373 3.07731226054641 3.56104608260405 3.62434093297637 3.10458667846607 2.11384296839717 2.40694510831829 6.27852142416584 1.00795792039998 2.58776403522771 4.57779898919196 +observational 2.13179677201376 3.60549784517489 3.18221184049661 3.13113691056019 2.23964529322017 2.68784749378469 3.01553490085017 6.52941883826223 2.52572864430826 2.71469474382088 1.62727783056243 +observational 4.05698877567833 2.80336038090653 2.41591377830105 4.42484663185681 2.46809953147162 3.44361809754611 3.7864597824528 7.49220304261874 2.89591193827178 3.56953269648137 2.45958884180371 +observational 4.5152454784601 4.64439089914137 3.6609942506244 4.254193263164 3.26575941076705 3.51749783735832 4.13676527810605 6.8627579130514 2.43361335540045 3.16547504814109 2.37024374146786 +observational 4.38077585277223 3.59731226058845 2.09556092355972 4.54223038621422 2.13179677201376 2.2935443483419 2.81540871942271 6.46769872610435 2.99573227355399 3.66867674679642 1.98787434815435 +observational 4.39814601655377 3.48124008933569 2.03339760317843 3.58073729549423 1.2947271675944 2.2213750375685 2.86220088092947 5.99146454710798 3.85014760171006 4.254193263164 3.3178157727231 +observational 4.67282883446191 3.41772668361337 0.667829372575655 2.24812890719799 2.06812778177956 4.00186370942794 4.40671924726425 7.28550654852279 3.15700042115011 3.75887182593397 2.57261223020711 +observational 4.59612944133594 3.58905911883173 2.81540871942271 2.88480071284671 2.86220088092947 0.488580014818671 3.06805293513362 6.8627579130514 3.44361809754611 3.95699637107088 3.11351530921037 +observational 4.54223038621422 3.81330703248899 1.59127394180643 3.13983261752775 2.36085400111802 2.4932054526027 2.07819075977818 6.53958595561767 2.12226153886276 3.07731226054641 4.41642806139121 +observational 3.6609942506244 2.91235066461494 2.61739583283408 2.70136121295141 2.35137525716348 2.14943391349987 3.14845336057165 6.01615715969835 1.86252854011626 2.484906649788 4.38949864951258 +observational 4.36182392735636 3.03974915897077 2.25758772706331 2.83321334405622 3.82209829790016 2.82137888640921 3.20274644293832 6.26909628370626 3.26575941076705 3.79548918917219 1.95160817016995 +observational 3.49953328238302 3.27336401015227 2.71469474382088 2.39789527279837 2.71469474382088 2.92316158071916 3.32862668882732 6.71901315438526 3.06805293513362 3.6163087612791 2.36085400111802 +observational 4.10098910494077 3.11351530921037 2.52572864430826 3.4626060097908 0.717839793150317 3.03974915897077 3.53514535417189 6.25190388316589 1.88858365386359 2.4932054526027 4.16511363311031 +observational 4.254193263164 3.13983261752775 1.81645208181843 5.80211837537706 3.90399083373088 3.55248682920838 4.254193263164 7.1777824161952 2.77881927199042 3.49953328238302 2.58021682959233 +observational 3.94931879017184 3.38099467434464 4.11087386417331 4.79579054559674 4.38077585277223 2.28442112236637 3.32862668882732 7.15070145759253 2.36085400111802 3.19458313229916 1.69927861643389 +observational 4.54223038621422 3.31054301339402 1.708377860289 2.80336038090653 3.26575941076705 2.36085400111802 2.66025953726586 5.31811999384422 1.69927861643389 2.94968833505258 4.69134788222914 +observational 4.54223038621422 3.40784192438082 0.631271776841858 6.04500531403601 3.24649099190117 1.36609165380237 2.80336038090653 6.57507584059962 0 4.74493212836325 2.00552585872967 +observational 3.49953328238302 2.23108909128898 2.70136121295141 2.53369681395743 2.05923883436232 2.84490938381941 4.3267781604434 7.85205020726589 2.72785282839839 3.60549784517489 2.96010509591084 +observational 3.63495111208838 2.97552956623647 0 5.21493575760899 3.21084365317094 2.96010509591084 3.42751468997953 6.37672694789863 3.01553490085017 3.35340671782581 3.26575941076705 +observational 3.81330703248899 3.32862668882732 1.7263316639056 4.47049528266149 2.73436750941958 1.44926916028128 2.94968833505258 6.76388490856244 3.01553490085017 3.6609942506244 3.27336401015227 +observational 4.65396035015752 4.38949864951258 2.91235066461494 2.19499988231411 2.01490302054226 2.79116510781272 3.26575941076705 6.02586597382531 2.39789527279837 2.58021682959233 2.35137525716348 +observational 4.31748811353631 3.4626060097908 2.45958884180371 4.53367418428302 2.77258872223978 1.16938135955632 2.73436750941958 4.56017282005736 2.46809953147162 3.49953328238302 3.74242022104197 +observational 4.58700621536042 3.06805293513362 2.00552585872967 4.31748811353631 3.02042488614436 1.93441576962958 2.37954613413017 6.20657592672493 3.32862668882732 3.88567903008854 2.81540871942271 +observational 4.36182392735636 3.21084365317094 1.77155676191054 5.09375020080676 3.29212628660779 2.56494935746154 3.2188758248682 6.45833828334479 3.29953372788566 3.80443779474821 2.61006979274201 +observational 4.99043258677874 3.43720781918519 2.85070650150373 2.94968833505258 2.4423470353692 2.45958884180371 3.14845336057165 6.39526159811545 3.59731226058845 4.04830062372069 2.65324196460721 +observational 2.67414864942653 2.56494935746154 1.95160817016995 2.88480071284671 0.518793793415168 2.2213750375685 3.12236492448736 6.09807428216624 2.77258872223978 3.56953269648137 2.36085400111802 +observational 4.79579054559674 3.51749783735832 1.42069578783722 4.50645421304893 3.38099467434464 1.83418018511201 1.95160817016995 5.19849703126583 2.16791018966744 3.20274644293832 4.50645421304893 +observational 4.49758497530815 3.4904285153901 2.10413415427021 3.60549784517489 3.56104608260405 2.55722731136763 3.2846635654062 6.57507584059962 0.774727167552368 2.45958884180371 3.21084365317094 +observational 3.44361809754611 2.57261223020711 2.2213750375685 4.61512051684126 2.51769647261099 1.90657514365664 2.61006979274201 6.04500531403601 2.97552956623647 3.49953328238302 2.30258509299405 +observational 3.32862668882732 2.87919845729804 2.23108909128898 4.71849887129509 2.52572864430826 1.54756250871601 2.19499988231411 5.28826703069454 3.26575941076705 3.92197333628131 2.71469474382088 +observational 4.0926765051214 2.79728133483015 3.39114704580865 4.27249074760558 4.77912349311153 2.54160199346455 2.75366071235426 6.06145691892802 2.86789890204411 3.63495111208838 3.04927304048202 +observational 3.79548918917219 3.03013370027132 3.18221184049661 5.2257466737132 3.82209829790016 2.61006979274201 3.39114704580865 6.13339804299665 2.75366071235426 3.58905911883173 2.51769647261099 +observational 4.44382703557933 3.13113691056019 3.88567903008854 4.23700086262362 2.50143595173921 2.40694510831829 3.14845336057165 6.47543271670409 3.05870707271538 4.06560209335645 2.36085400111802 +observational 5.25227342804663 4.43438186500781 2.62466859216316 5.33271879326537 3.64283551561253 1.88858365386359 3.6163087612791 7.18690102041163 1.18784342239605 1.37624402526639 0.810930216216329 +observational 4.66343909411207 3.13113691056019 0.951657875711446 4.42484663185681 3.31054301339402 3.39114704580865 3.6609942506244 5.98141421125448 2.41591377830105 3.02042488614436 2.25758772706331 +observational 3.69635146895264 2.97552956623647 1.90657514365664 5.73979291217923 4.52396013056255 1.68268837417369 2.25758772706331 6.37672694789863 2.77258872223978 3.65065824129374 2.41591377830105 +observational 4.01998014693324 3.90399083373088 1.44926916028128 2.52572864430826 3.50855589998265 1.35840915763035 2.68102152871429 2.27521389619791 2.84490938381941 3.82209829790016 4.56017282005736 +observational 3.81330703248899 3.37416870927424 1.4655675420144 2.67414864942653 1.8531680973567 2.13179677201376 3.03974915897077 6.27852142416584 4.36182392735636 4.84418708645859 2.81540871942271 +observational 4.68213122712422 4.38077585277223 3.75185425327532 4.34380542185368 2.19499988231411 3.55248682920838 4.11903717481247 7.08757370555797 1.9154509415706 2.64617479738412 4.06560209335645 +observational 4.68213122712422 3.93963817246112 2.37954613413017 3.9926809084456 2.99573227355399 3.2188758248682 3.4904285153901 5.55682806169954 1.90657514365664 2.4932054526027 3.55248682920838 +observational 4.0926765051214 2.94968833505258 2.10413415427021 5.00394630594546 3.39114704580865 2.50959926237837 3.02042488614436 6.31354804627709 2.62466859216316 3.44361809754611 2.77881927199042 +observational 4.24563400976833 3.10458667846607 2.60268968544438 6.03548143252476 4.47049528266149 1.86252854011626 3.8416005411316 5.55682806169954 2.9704144655697 3.67882911826043 2.76000994003292 +observational 4.44382703557933 3.3178157727231 0.854415328156068 2.25758772706331 3.08648663682246 2.32238772029023 3.24649099190117 6.24222326545517 3.00568260440716 3.92986292355648 2.24812890719799 +observational 4.78749174278205 3.87743156065853 2.63188884013665 2.36085400111802 2.42480272571829 1.89761985992753 3.23080439573347 6.06145691892802 1.32175583998232 3.81330703248899 5.4510384535657 +observational 5.01727983681492 3.79548918917219 1.7263316639056 4.95582705760126 2.56494935746154 1.8531680973567 2.45958884180371 5.55682806169954 2.67414864942653 3.62434093297637 2.484906649788 +observational 4.78749174278205 4.59612944133594 1.96009478404727 4.90527477843843 3.3357695763397 2.00552585872967 3.03013370027132 6.45833828334479 1.7630170003624 3.31054301339402 4.91265488573605 +observational 4.87519732320115 4.74493212836325 2.33214389523559 4.07414185490458 2.35137525716348 3.08648663682246 3.52636052461616 6.16961073249146 2.12226153886276 3.10458667846607 2.32238772029023 +observational 4.89034912822175 4.04830062372069 2.33214389523559 2.71469474382088 0.122217632724249 1.75440368268429 3.68887945411394 6.4393503711001 1.9154509415706 2.51769647261099 3.63495111208838 +observational 4.66343909411207 3.56953269648137 2.70805020110221 2.92316158071916 2.25758772706331 2.10413415427021 3.03013370027132 6.5206211275587 3.19458313229916 3.85014760171006 2.58021682959233 +observational 3.13113691056019 2.88480071284671 3.56104608260405 4.14630430115281 3.15700042115011 1.99741770620125 2.40694510831829 6.25958146406492 3.58073729549423 4.06560209335645 2.62466859216316 +observational 3.58073729549423 2.82137888640921 2.85070650150373 5.28826703069454 3.49953328238302 2.85070650150373 3.56104608260405 5.68357976733868 0.412109650826833 2.2213750375685 4.28082412916472 +observational 3.85014760171006 3.80443779474821 2.40694510831829 2.63188884013665 3.63495111208838 3.21084365317094 2.99573227355399 6.30444880242198 2.90690105984738 3.79548918917219 2.87919845729804 +observational 3.6609942506244 3.29212628660779 2.39789527279837 4.22683374526818 2.86220088092947 2.9391619220656 3.23867845216438 6.03548143252476 3.68887945411394 4.13676527810605 3.10458667846607 +observational 4.00186370942794 3.34638914516716 2.54160199346455 3.9759363311718 4.44382703557933 3.64283551561253 4.04830062372069 6.78219205600679 3.36384159511839 3.8416005411316 2.96010509591084 +observational 3.8416005411316 3.01553490085017 2.9704144655697 3.31054301339402 2.20386912005489 2.94968833505258 2.9338568698359 6.36818718635049 2.67414864942653 3.52636052461616 2.61006979274201 +observational 4.36182392735636 3.4904285153901 2.71469474382088 2.58776403522771 2.39789527279837 2.06812778177956 3.11351530921037 6.99759598298193 2.86789890204411 3.60549784517489 2.67414864942653 +observational 3.89385903480047 3.21084365317094 2.36085400111802 2.89591193827178 3.23080439573347 2.51769647261099 3.36384159511839 5.96357934361845 2.00552585872967 3.02042488614436 4.24563400976833 +observational 4.0842942263686 2.90690105984738 1.73518911773966 4.96284463025991 3.75887182593397 2.73436750941958 3.34638914516716 6.18001665365257 2.91235066461494 3.35340671782581 2.32238772029023 +observational 4.69134788222914 3.64283551561253 2.06812778177956 2.67414864942653 3.23080439573347 3.16547504814109 3.34638914516716 6.18826412308259 3.05870707271538 3.67882911826043 3.20274644293832 +observational 4.36182392735636 4.33598269617247 1.21491274436427 4.99043258677874 2.12226153886276 1.78170913337455 2.92316158071916 6.60258789218934 1.22377543162212 2.92316158071916 4.20020495292158 +observational 3.66867674679642 2.50959926237837 2.4932054526027 4.88280192258637 2.88480071284671 2.39789527279837 3.03974915897077 6.880384082186 2.63188884013665 3.37416870927424 2.94968833505258 +observational 4.48863636973214 3.55248682920838 2.63188884013665 3.31054301339402 4.47049528266149 2.64617479738412 3.04927304048202 6.45833828334479 3.13113691056019 3.36384159511839 2.76000994003292 +observational 4.30811095172371 2.87919845729804 2.14124194258528 4.81218435537242 3.52636052461616 3.7864597824528 4.20916023665068 5.99146454710798 2.84490938381941 3.8416005411316 3.2188758248682 +observational 3.85862222870103 3.13113691056019 1.13462272619114 2.75366071235426 2.2935443483419 2.36085400111802 3.17387845893747 5.99146454710798 2.86789890204411 3.47196645255036 2.50143595173921 +observational 4.10098910494077 3.21084365317094 2.40694510831829 7.01571242048723 4.83628190695148 2.00552585872967 2.26695791535089 6.42162226780652 0.122217632724249 4.71849887129509 1.80828877117927 +observational 4.38949864951258 3.03974915897077 2.61006979274201 4.33598269617247 3.00568260440716 3.36384159511839 3.56953269648137 5.50533153593236 2.10413415427021 2.91235066461494 4.30811095172371 +observational 3.06805293513362 2.89591193827178 2.25758772706331 4.68213122712422 3.26575941076705 2.35137525716348 2.01490302054226 6.07073772800249 2.34180580614733 3.19458313229916 2.3887627892351 +observational 5.24174701505964 4.11087386417331 2.35137525716348 5.01063529409626 3.24649099190117 2.24812890719799 3.29212628660779 6.31354804627709 1.39376637595859 2.72785282839839 4.12874598893943 +observational 3.45315712059287 2.82137888640921 1.88858365386359 1.25846098961001 1.73518911773966 2.79728133483015 3.67882911826043 6.91671502035361 0.783901543828409 3.17387845893747 4.71849887129509 +observational 4.74493212836325 3.60549784517489 2.42480272571829 2.86789890204411 1.27815220250019 3.59731226058845 3.94931879017184 5.75574221358691 2.24812890719799 2.9338568698359 0.746687947487975 +observational 4.7361984483945 4.0842942263686 2.06812778177956 2.85070650150373 3.44361809754611 2.9338568698359 3.29953372788566 5.77455154554441 3.23080439573347 3.95699637107088 3.56953269648137 +observational 2.88480071284671 3.23080439573347 3.12236492448736 3.76815263500844 4.5152454784601 2.62466859216316 3.01553490085017 6.06145691892802 1.81645208181843 2.72785282839839 4.5152454784601 +observational 3.66867674679642 2.67414864942653 0.672944473242426 5.37063802812766 3.50855589998265 2.18605127673809 3.03013370027132 6.07993319509559 1.83418018511201 2.87919845729804 2.84490938381941 +observational 4.83628190695148 4.95582705760126 2.85070650150373 2.30258509299405 1.17865499634165 2.03339760317843 3.34638914516716 5.94542060860658 2.14943391349987 2.99573227355399 2.14943391349987 +observational 3.58073729549423 3.12236492448736 2.04122032885964 3.13113691056019 2.27521389619791 1.90657514365664 2.70805020110221 6.41345895716736 3.3357695763397 3.80443779474821 2.85070650150373 +observational 5.33271879326537 4.03777421073371 1.25846098961001 5.14749447681345 2.99573227355399 1.73518911773966 2.96010509591084 5.75574221358691 2.87919845729804 3.87743156065853 4.03777421073371 +observational 4.12874598893943 3.3178157727231 2.77881927199042 3.62434093297637 3.4904285153901 2.9704144655697 3.6609942506244 6.1527326947041 1.27815220250019 3.29953372788566 4.56954300834494 +observational 4.61512051684126 3.66867674679642 3.50855589998265 4.5152454784601 3.96651119071222 2.13179677201376 3.32862668882732 5.40717177146012 2.73436750941958 3.41772668361337 1.74571553072665 +observational 2.71469474382088 2.68784749378469 1.4036429994545 2.9704144655697 3.64283551561253 1.07840958135059 2.91235066461494 1.22377543162212 3.06805293513362 3.8416005411316 2.75366071235426 +observational 4.65396035015752 4.65396035015752 2.04122032885964 3.27336401015227 3.25424296870549 1.95160817016995 3.65065824129374 6.79122146272619 3.15700042115011 4.0842942263686 5.29831736654804 +observational 4.13676527810605 3.50855589998265 2.31253542384721 3.94931879017184 2.90690105984738 2.86220088092947 3.4904285153901 5.74620319054015 3.45315712059287 3.98527346716774 2.54160199346455 +observational 3.41772668361337 3.32862668882732 2.56494935746154 3.02042488614436 1.71739505393919 1.56444054650336 2.72785282839839 6.42162226780652 3.82209829790016 4.3528552573736 2.64617479738412 +observational 1.79009141212736 2.96010509591084 2.27521389619791 2.3887627892351 3.87743156065853 2.80336038090653 3.20274644293832 6.5206211275587 3.9759363311718 4.29045944114839 3.2188758248682 +observational 2.1770218700187 1.60140574073684 2.19499988231411 2.86220088092947 4.03777421073371 2.39789527279837 3.08648663682246 5.96357934361845 3.03974915897077 3.89385903480047 2.58776403522771 +observational 3.6163087612791 3.03974915897077 2.61739583283408 3.26575941076705 4.14630430115281 1.86252854011626 2.76000994003292 6.35957386867238 1.33236601909433 2.80336038090653 3.86702563949741 +observational 2.79116510781272 2.24812890719799 2.32238772029023 4.18205014264121 3.35340671782581 2.58776403522771 3.20274644293832 6.53958595561767 2.62466859216316 3.37416870927424 3.71357206670431 +observational 3.20274644293832 3.58073729549423 2.36085400111802 2.45958884180371 3.45315712059287 2.7408400239252 3.29212628660779 6.00881318544259 3.88567903008854 4.43438186500781 3.40119738166216 +observational 4.3267781604434 3.04927304048202 3.25424296870549 4.80402104473326 4.19116874685764 3.16547504814109 3.67882911826043 5.79301360838414 3.15700042115011 3.73289633953071 2.15871472257434 +observational 4.38949864951258 3.52636052461616 2.13179677201376 4.84418708645859 3.15700042115011 3.64283551561253 4.13676527810605 7.64539769942863 0.845868267577609 1.22377543162212 1.9154509415706 +observational 3.49953328238302 2.41591377830105 2.58021682959233 4.46129981556839 2.37954613413017 3.26575941076705 3.67882911826043 5.94542060860658 3.89385903480047 4.29045944114839 3.00568260440716 +observational 3.50855589998265 2.75366071235426 0.963174317773006 5.6021188208797 3.50855589998265 2.14943391349987 2.81540871942271 6.23244801655052 2.4932054526027 3.25424296870549 3.03974915897077 +observational 3.53514535417189 2.79728133483015 2.77881927199042 3.06805293513362 1.75440368268429 3.24649099190117 3.82209829790016 6.07073772800249 2.60268968544438 3.47196645255036 2.91235066461494 +observational 3.80443779474821 3.01553490085017 2.91235066461494 3.16547504814109 1.96990565461153 2.4423470353692 2.98568193770049 5.82008293035236 2.86789890204411 3.82209829790016 3.23080439573347 +observational 3.59731226058845 2.79116510781272 2.86220088092947 3.75185425327532 4.06560209335645 2.16791018966744 3.03974915897077 6.39526159811545 3.4626060097908 4.33598269617247 3.03974915897077 +observational 4.92725368515721 3.66867674679642 0.631271776841858 5.00394630594546 2.72785282839839 2.36085400111802 2.73436750941958 6.60258789218934 0 4.41642806139121 1.73518911773966 +observational 4.22683374526818 3.54385368206368 3.00568260440716 3.68887945411394 4.18205014264121 2.45958884180371 3.21084365317094 6.36818718635049 3.12236492448736 3.86702563949741 3.13113691056019 +observational 2.61739583283408 2.01490302054226 2.81540871942271 2.08691355651854 2.3887627892351 2.68784749378469 3.32862668882732 6.28785856016178 2.68102152871429 3.53514535417189 2.58776403522771 +observational 4.3267781604434 3.80443779474821 1.94304891677428 3.91202300542815 2.40694510831829 2.37954613413017 2.83321334405622 6.38687931936265 2.91235066461494 3.26575941076705 2.76000994003292 +observational 3.58073729549423 3.60549784517489 0.810930216216329 1.28647402583768 2.54160199346455 2.28442112236637 3.06805293513362 6.25190388316589 0.542324290825362 2.90690105984738 4.36182392735636 +observational 4.24563400976833 3.35340671782581 0.746687947487975 5.19849703126583 3.35340671782581 2.65324196460721 3.86702563949741 6.59304453414244 3.23867845216438 3.75185425327532 3.12236492448736 +observational 4.22683374526818 3.67882911826043 2.79116510781272 3.07731226054641 3.53514535417189 1.59127394180643 3.10458667846607 5.99893656194668 3.20274644293832 3.73289633953071 2.75366071235426 +observational 3.6609942506244 2.77258872223978 0.518793793415168 5.2257466737132 3.38099467434464 4.06560209335645 4.56954300834494 7.38461038317697 0.900161349944271 2.09556092355972 3.11351530921037 +observational 3.56104608260405 3.39114704580865 2.90690105984738 3.86702563949741 3.87743156065853 2.84490938381941 3.43720781918519 6.09807428216624 2.31253542384721 2.86789890204411 2.30258509299405 +observational 3.39114704580865 3.00568260440716 2.54160199346455 3.12236492448736 1.77155676191054 2.40694510831829 3.16547504814109 5.46806014113513 3.23080439573347 3.75887182593397 2.84490938381941 +observational 4.11903717481247 3.17387845893747 3.24649099190117 4.80402104473326 3.56104608260405 4.64439089914137 5.07517381523383 6.47543271670409 0.703097511413113 2.30258509299405 4.29045944114839 +observational 4.85981240436167 3.75887182593397 1.08856195281461 1.44926916028128 1.80828877117927 2.09556092355972 2.96010509591084 5.84643877505772 2.11384296839717 3.29212628660779 3.91202300542815 +observational 4.5152454784601 3.3178157727231 1.94304891677428 3.23080439573347 3.27336401015227 1.65441127807683 2.52572864430826 6.80903930604298 3.23867845216438 3.81330703248899 2.85070650150373 +observational 4.20020495292158 3.16547504814109 2.23964529322017 2.77258872223978 3.68887945411394 2.85070650150373 3.37416870927424 6.00881318544259 2.75366071235426 3.73289633953071 2.02419306744936 +observational 4.37071287477361 3.43720781918519 2.91235066461494 3.79548918917219 3.2846635654062 1.4036429994545 2.96010509591084 6.87212810133899 2.47653840011748 2.79116510781272 2.2935443483419 +observational 4.11087386417331 3.75185425327532 0 5.8111409929767 3.09557760852371 2.08691355651854 3.48124008933569 6.7093043402583 1.79840401194672 2.50959926237837 1.56444054650336 +observational 3.94931879017184 2.82137888640921 2.43361335540045 2.53369681395743 2.81540871942271 1.03318448334565 3.02042488614436 6.75460409948796 2.64617479738412 3.36384159511839 2.66025953726586 +observational 2.61739583283408 2.28442112236637 1.67335123817775 4.69134788222914 3.38099467434464 3.23080439573347 3.65065824129374 6.09807428216624 2.72785282839839 3.20274644293832 2.23108909128898 +observational 3.11351530921037 2.65324196460721 1.95160817016995 5.27299955856375 3.45315712059287 3.77734810210154 4.15575319035074 7.3038432252777 2.19499988231411 3.18221184049661 2.11384296839717 +observational 3.8308129500026 3.08648663682246 0.371563556432483 1.01523067972906 1.96009478404727 2.40694510831829 3.23867845216438 6.45833828334479 2.9338568698359 3.58905911883173 2.63188884013665 +observational 2.61739583283408 3.25424296870549 3.17387845893747 3.60549784517489 2.47653840011748 2.11384296839717 3.08648663682246 6.68336094576627 3.24649099190117 3.86702563949741 2.77881927199042 +observational 3.31054301339402 2.64617479738412 2.9338568698359 3.02042488614436 1.22377543162212 2.3887627892351 2.79728133483015 5.27811465923052 2.86220088092947 3.56104608260405 2.71469474382088 +observational 4.30000279919529 3.40119738166216 3.15700042115011 4.30000279919529 3.17387845893747 2.1770218700187 3.05870707271538 6.70073110954781 2.85070650150373 3.73289633953071 2.10413415427021 +observational 2.84490938381941 3.08648663682246 2.58776403522771 2.50143595173921 2.98568193770049 1.45628673293993 1.00795792039998 6.09807428216624 3.03974915897077 3.24649099190117 3.00568260440716 +observational 4.0842942263686 3.03013370027132 2.75366071235426 3.3357695763397 2.7408400239252 3.15700042115011 3.26575941076705 5.96357934361845 1.39376637595859 2.91235066461494 4.3528552573736 +observational 4.20916023665068 3.40784192438082 2.53369681395743 6.50279004591562 4.46129981556839 3.18221184049661 3.73289633953071 5.53338948872752 1.97823903617067 2.62466859216316 1.94304891677428 +observational 3.66867674679642 2.9391619220656 2.50959926237837 3.85014760171006 3.25424296870549 3.42751468997953 3.81330703248899 6.12468339089421 2.28442112236637 3.3178157727231 4.31748811353631 +observational 4.21803603456465 3.44361809754611 2.25758772706331 4.5152454784601 3.15700042115011 3.94931879017184 4.41642806139121 7.69938940625674 3.18221184049661 3.77734810210154 2.19499988231411 +observational 3.95699637107088 3.82209829790016 1.7263316639056 4.85981240436167 2.94968833505258 3.40784192438082 4.16511363311031 6.51174532964473 4.05698877567833 4.43438186500781 3.43720781918519 +observational 4.48863636973214 3.64283551561253 1.96990565461153 2.58021682959233 2.91235066461494 2.9338568698359 3.2188758248682 5.85507192220243 3.01553490085017 3.52636052461616 2.88480071284671 +observational 3.9926809084456 3.03013370027132 0 4.65396035015752 2.57261223020711 3.10458667846607 3.75887182593397 7.0335064842877 0.765467842139571 2.05027016437956 4.33598269617247 +observational 3.94931879017184 4.07414185490458 1.86252854011626 5.17048399503815 2.33214389523559 1.4747630091075 2.90690105984738 6.74641212857337 2.57261223020711 3.24649099190117 3.04927304048202 +observational 3.44361809754611 2.34180580614733 2.37024374146786 4.77068462446567 3.38099467434464 2.98568193770049 3.3178157727231 5.77455154554441 3.17387845893747 3.66867674679642 3.10458667846607 +observational 4.24563400976833 3.54385368206368 2.26695791535089 5.40717177146012 3.60549784517489 2.51769647261099 2.91235066461494 6.74641212857337 0.412109650826833 4.28082412916472 2.42480272571829 +observational 3.36384159511839 3.38099467434464 3.16547504814109 3.92986292355648 4.54223038621422 1.94304891677428 2.94968833505258 6.31354804627709 2.7408400239252 3.37416870927424 2.54160199346455 +observational 4.56017282005736 3.89385903480047 1.48387468945875 4.94875989037817 2.37954613413017 2.2935443483419 3.02042488614436 6.25190388316589 2.99573227355399 3.79548918917219 2.7408400239252 +observational 3.85862222870103 3.07731226054641 1.99741770620125 2.82137888640921 1.71739505393919 2.81540871942271 3.14845336057165 5.78382518232974 2.84490938381941 3.47196645255036 2.77881927199042 +observational 4.11903717481247 3.70622809244855 2.42480272571829 4.50645421304893 3.01553490085017 1.37624402526639 1.95160817016995 5.2257466737132 2.84490938381941 3.53514535417189 2.54160199346455 +observational 3.70622809244855 3.2188758248682 3.17387845893747 5.57594910314632 4.07414185490458 2.76000994003292 3.51749783735832 6.45833828334479 3.03974915897077 3.58073729549423 2.2213750375685 +observational 3.8308129500026 3.39114704580865 2.27521389619791 2.61739583283408 2.14124194258528 3.20274644293832 3.58905911883173 6.18001665365257 2.98568193770049 3.58905911883173 2.23964529322017 +observational 3.4904285153901 2.94968833505258 1.7263316639056 2.98568193770049 2.63188884013665 3.08648663682246 3.51749783735832 5.90808293816893 3.24649099190117 3.90399083373088 2.58776403522771 +observational 4.54223038621422 3.14845336057165 1.79009141212736 5.3890717298165 3.64283551561253 2.32238772029023 3.02042488614436 6.38687931936265 2.40694510831829 3.16547504814109 1.68268837417369 +observational 4.20916023665068 3.50855589998265 3.02042488614436 3.2188758248682 0.576613364303994 2.07819075977818 2.79116510781272 6.50279004591562 2.39789527279837 3.52636052461616 2.21266038546606 +observational 3.6163087612791 2.46809953147162 2.88480071284671 2.77881927199042 2.88480071284671 2.57261223020711 4.13676527810605 7.95997452808054 3.47196645255036 4.13676527810605 3.62434093297637 +observational 3.64283551561253 3.11351530921037 2.58021682959233 2.15871472257434 2.21266038546606 1.80828877117927 1.88858365386359 6.1527326947041 1.38629436111989 3.04927304048202 4.74493212836325 +observational 3.03013370027132 3.12236492448736 3.07731226054641 3.07731226054641 2.68102152871429 2.26695791535089 3.82209829790016 7.00669522683704 1.66392609771817 3.76815263500844 5.32300997913841 +observational 2.61006979274201 2.61739583283408 1.78170913337455 2.33214389523559 2.84490938381941 2.10413415427021 3.20274644293832 6.06145691892802 3.18221184049661 3.94931879017184 2.99573227355399 +observational 5.15329159449778 5.26269018890489 2.37954613413017 2.66025953726586 2.21266038546606 2.86789890204411 3.44361809754611 5.51342874616498 3.01553490085017 4.07414185490458 3.03013370027132 +observational 2.68784749378469 2.92316158071916 2.41591377830105 3.81330703248899 2.31253542384721 3.11351530921037 3.31054301339402 5.34233425196481 2.40694510831829 3.49953328238302 2.77258872223978 +observational 4.31748811353631 3.2188758248682 1.66392609771817 4.89034912822175 3.7864597824528 3.44361809754611 3.9759363311718 6.90775527898214 2.76000994003292 3.75887182593397 4.16511363311031 +observational 4.45201900649392 4.20916023665068 2.08691355651854 3.47196645255036 3.44361809754611 3.56104608260405 3.68887945411394 5.99893656194668 0.951657875711446 3.23080439573347 3.90399083373088 +observational 4.47049528266149 3.79548918917219 3.54385368206368 3.86702563949741 2.84490938381941 2.92316158071916 3.51749783735832 5.7037824746562 2.3887627892351 3.47196645255036 3.8308129500026 +observational 3.64283551561253 3.19458313229916 3.13113691056019 3.00568260440716 2.40694510831829 1.16002091679675 3.14845336057165 6.74641212857337 1.05082162483176 2.42480272571829 3.45315712059287 +observational 3.64283551561253 3.18221184049661 0.19062035960865 6.24222326545517 4.0926765051214 3.29212628660779 3.73289633953071 6.23244801655052 1.31372366828506 3.17387845893747 5.03695260241363 +observational 3.68887945411394 2.50143595173921 2.41591377830105 3.06805293513362 3.7864597824528 3.07731226054641 3.47196645255036 6.16961073249146 2.72785282839839 3.73289633953071 2.9338568698359 +observational 4.3528552573736 3.03974915897077 3.82209829790016 3.92986292355648 2.82137888640921 3.4904285153901 3.88567903008854 7.26752542782817 2.84490938381941 3.4626060097908 2.06812778177956 +observational 4.30811095172371 3.39114704580865 0.900161349944271 5.3890717298165 2.56494935746154 2.20386912005489 3.01553490085017 6.62007320653036 3.87743156065853 4.48863636973214 3.44361809754611 +observational 3.73289633953071 3.00568260440716 2.24812890719799 5.00394630594546 3.72328088083127 3.55248682920838 4.3267781604434 7.12367278520461 1.12492959698548 3.21084365317094 3.23867845216438 +observational 3.89385903480047 3.09557760852371 1.02604159583327 4.42484663185681 2.79728133483015 2.18605127673809 2.7408400239252 6.10702288774225 3.03013370027132 3.66867674679642 3.15700042115011 +observational 3.91202300542815 3.29953372788566 2.04122032885964 2.77258872223978 3.71357206670431 2.1770218700187 2.46809953147162 6.66440902035041 3.12236492448736 3.86702563949741 2.72785282839839 +observational 3.37416870927424 3.82209829790016 1.95160817016995 4.12874598893943 2.83321334405622 2.31253542384721 3.15700042115011 6.52941883826223 2.62466859216316 3.58905911883173 4.64439089914137 +observational 4.38949864951258 3.60549784517489 1.93441576962958 4.58700621536042 2.86789890204411 2.61006979274201 3.05870707271538 6.4393503711001 2.42480272571829 3.74242022104197 5.03043792139244 +observational 4.18205014264121 3.47196645255036 2.23964529322017 2.7408400239252 2.60268968544438 2.05027016437956 3.17387845893747 7.34858753092759 2.75366071235426 3.47196645255036 2.19499988231411 +observational 5.18738580584075 4.01998014693324 2.9338568698359 6.23244801655052 4.38949864951258 2.4423470353692 2.77258872223978 5.0998664278242 3.2188758248682 3.51749783735832 2.70805020110221 +observational 3.52636052461616 3.18221184049661 1.2947271675944 3.86702563949741 3.4626060097908 3.11351530921037 4.0926765051214 7.21376830811864 3.6609942506244 4.20916023665068 2.9391619220656 +observational 4.01998014693324 3.56953269648137 3.85862222870103 4.29045944114839 5.17048399503815 2.19499988231411 3.03974915897077 6.31354804627709 2.79116510781272 3.23867845216438 2.56494935746154 +observational 4.38949864951258 3.59731226058845 1.52822785700856 4.48863636973214 2.32238772029023 2.9704144655697 3.36384159511839 6.27852142416584 2.35137525716348 3.17387845893747 3.92986292355648 +observational 3.44361809754611 3.4904285153901 2.36085400111802 3.24649099190117 3.89385903480047 2.43361335540045 3.6609942506244 7.37525577800975 3.17387845893747 3.93963817246112 2.57261223020711 +observational 3.90399083373088 3.47196645255036 2.88480071284671 2.05923883436232 2.23108909128898 1.9154509415706 2.60268968544438 6.40357419793482 2.79116510781272 3.36384159511839 2.40694510831829 +observational 5.11799381241676 4.37071287477361 3.45315712059287 3.89385903480047 3.16547504814109 2.58021682959233 2.85070650150373 6.21460809842219 2.63188884013665 3.40119738166216 2.73436750941958 +observational 4.27249074760558 3.92986292355648 1.74571553072665 4.86753445045558 2.16791018966744 2.58776403522771 3.34638914516716 6.16961073249146 0.207014169384326 2.9338568698359 4.7361984483945 +observational 4.19116874685764 3.85862222870103 1.870262530716 3.29212628660779 3.54385368206368 2.19499988231411 3.4626060097908 6.11589212548303 0.262364264467491 2.62466859216316 4.38077585277223 +observational 3.96651119071222 2.68102152871429 3.24649099190117 5.18178355029209 3.73289633953071 1.82616089594539 2.37954613413017 5.54126354515843 2.82137888640921 3.60549784517489 2.83321334405622 +observational 4.81218435537242 3.31054301339402 2.37954613413017 2.61739583283408 3.75185425327532 1.61938824328727 2.72785282839839 6.84481547920826 2.63188884013665 3.24649099190117 2.23108909128898 +observational 3.85862222870103 3.11351530921037 0.647103242058538 5.43372200355424 3.13983261752775 2.39789527279837 3.31054301339402 6.35088571671474 2.58021682959233 3.69635146895264 2.87919845729804 +observational 3.06805293513362 2.89591193827178 1.98787434815435 3.55248682920838 2.75366071235426 2.24812890719799 2.65324196460721 6.46769872610435 1.26694760348732 2.79116510781272 3.49953328238302 +observational 3.74242022104197 2.60268968544438 2.62466859216316 4.22683374526818 3.4626060097908 1.56444054650336 3.54385368206368 6.04500531403601 3.35340671782581 3.75185425327532 3.00568260440716 +observational 2.26695791535089 2.77881927199042 2.51769647261099 3.07731226054641 0.385262400790645 2.56494935746154 3.56104608260405 6.1527326947041 3.18221184049661 3.77734810210154 3.13983261752775 +observational 3.36384159511839 3.06805293513362 2.16791018966744 2.76000994003292 3.56953269648137 1.24126858906963 3.08648663682246 5.87211778947542 2.87919845729804 3.7864597824528 2.46809953147162 +observational 4.54223038621422 3.79548918917219 2.4932054526027 2.30258509299405 1.45628673293993 3.23080439573347 3.47196645255036 5.98141421125448 1.16002091679675 3.27336401015227 4.59612944133594 +observational 4.24563400976833 3.03974915897077 1.51072193949494 1.73518911773966 1.48387468945875 3.2188758248682 3.67882911826043 5.76519110278484 2.80336038090653 3.70622809244855 4.3267781604434 +observational 3.73289633953071 2.68102152871429 2.10413415427021 2.75366071235426 2.77258872223978 2.16791018966744 2.47653840011748 5.94542060860658 2.75366071235426 3.56953269648137 1.56444054650336 +observational 2.484906649788 3.05870707271538 2.42480272571829 4.30811095172371 2.62466859216316 2.06812778177956 2.99573227355399 6.84481547920826 3.40784192438082 3.88567903008854 1.73518911773966 +observational 3.43720781918519 3.17387845893747 3.08648663682246 2.94968833505258 2.31253542384721 2.58021682959233 3.03013370027132 6.22455842927536 1.9154509415706 2.85070650150373 2.62466859216316 +observational 4.12874598893943 3.40784192438082 2.87919845729804 2.73436750941958 1.87946504964716 2.09556092355972 3.09557760852371 6.12468339089421 2.30258509299405 2.86789890204411 2.09556092355972 +observational 2.70136121295141 2.82137888640921 2.52572864430826 3.45315712059287 2.54160199346455 2.87919845729804 3.3357695763397 5.62040086571715 2.89591193827178 3.58073729549423 2.94968833505258 +observational 3.52636052461616 3.14845336057165 2.58021682959233 5.30826769740121 3.14845336057165 3.08648663682246 3.40784192438082 5.76519110278484 2.89591193827178 3.12236492448736 0.378436435720245 +observational 4.23700086262362 2.96010509591084 2.53369681395743 2.51769647261099 2.4932054526027 2.40694510831829 3.17387845893747 6.42162226780652 0.559615787935423 2.01490302054226 2.32238772029023 +observational 3.92986292355648 3.03013370027132 2.27521389619791 5.01063529409626 2.83321334405622 1.45628673293993 2.67414864942653 5.0998664278242 2.70136121295141 2.89591193827178 2.27521389619791 +observational 3.6609942506244 3.29953372788566 1.16002091679675 2.70805020110221 2.12226153886276 2.37954613413017 3.12236492448736 6.52941883826223 2.70805020110221 3.56953269648137 2.57261223020711 +observational 4.47960696301275 3.19458313229916 0.576613364303994 4.47049528266149 2.46809953147162 3.25424296870549 3.85014760171006 5.97126183979046 2.61739583283408 2.85070650150373 2.03339760317843 +observational 4.67282883446191 3.9926809084456 4.15575319035074 5.45958551414416 4.74493212836325 2.89591193827178 3.53514535417189 5.94542060860658 2.79116510781272 2.9704144655697 2.1770218700187 +observational 4.00186370942794 3.31054301339402 1.8531680973567 2.76000994003292 3.2188758248682 4.06560209335645 4.58700621536042 7.25841215059531 2.89591193827178 3.21084365317094 1.96990565461153 +observational 2.34180580614733 1.51951320490611 2.9391619220656 3.23867845216438 2.61006979274201 1.4036429994545 3.7864597824528 6.46769872610435 3.19458313229916 3.75887182593397 1.8531680973567 +observational 4.0926765051214 2.11384296839717 2.84490938381941 3.96651119071222 0.89199803930511 2.68102152871429 3.26575941076705 6.28785856016178 1.15057202759882 2.28442112236637 1.08856195281461 +observational 4.61512051684126 3.23080439573347 1.79009141212736 5.45958551414416 3.53514535417189 0.371563556432483 3.07731226054641 6.51174532964473 3.12236492448736 3.26575941076705 2.50959926237837 +observational 2.68102152871429 3.36384159511839 2.36085400111802 4.47049528266149 3.12236492448736 3.38099467434464 3.85014760171006 5.89989735358249 2.62466859216316 2.45958884180371 2.12226153886276 +observational 4.96284463025991 4.20916023665068 1.33236601909433 2.25758772706331 4.00186370942794 1.34807314829969 2.68102152871429 5.39816270151775 1.96990565461153 2.81540871942271 2.61006979274201 +observational 4.56954300834494 3.39114704580865 2.63188884013665 2.77258872223978 0.900161349944271 1.94304891677428 2.9704144655697 6.96129604591017 2.37024374146786 2.40694510831829 1.35840915763035 +observational 4.63472898822964 4.49758497530815 1.62727783056243 1.55603713570699 1.99741770620125 2.2935443483419 3.21084365317094 6.32256523992728 3.05870707271538 3.65065824129374 2.68102152871429 +observational 3.59731226058845 2.88480071284671 0.0392207131532813 5.83773044716594 3.40784192438082 2.34180580614733 3.67882911826043 7.43838353004431 2.06812778177956 2.28442112236637 1.73518911773966 +observational 4.20020495292158 4.39814601655377 2.50143595173921 2.67414864942653 1.4747630091075 2.85070650150373 3.45315712059287 5.65599181081985 2.77258872223978 2.66025953726586 1.49290409617815 +observational 4.16511363311031 3.56104608260405 2.7408400239252 2.41591377830105 2.04122032885964 1.96009478404727 3.12236492448736 6.07073772800249 3.03974915897077 3.25424296870549 2.13179677201376 +observational 4.70048036579242 3.52636052461616 2.64617479738412 3.44361809754611 3.23080439573347 1.98787434815435 2.80336038090653 6.22455842927536 2.87919845729804 3.37416870927424 2.45958884180371 +observational 3.13983261752775 3.40784192438082 0.0953101798043249 5.73979291217923 3.29953372788566 2.4423470353692 3.16547504814109 6.38687931936265 2.92316158071916 3.36384159511839 2.06812778177956 +observational 4.97673374242057 3.48124008933569 2.46809953147162 3.95699637107088 2.94968833505258 3.56104608260405 4.0842942263686 5.96357934361845 2.92316158071916 3.24649099190117 1.63705307946707 +observational 3.88567903008854 2.85070650150373 0.322083499169113 2.61006979274201 4.02891675689965 1.60140574073684 3.29212628660779 7.14124512235049 2.39789527279837 2.75366071235426 2.18605127673809 +observational 2.9338568698359 2.58776403522771 1.97823903617067 4.48863636973214 3.17387845893747 2.16791018966744 2.89591193827178 6.53958595561767 1.42069578783722 2.9704144655697 4.55071400019203 +observational 4.16511363311031 3.43720781918519 2.06812778177956 5.50533153593236 3.93963817246112 3.09557760852371 3.6163087612791 5.95324333428778 3.06805293513362 3.36384159511839 2.88480071284671 +observational 3.56104608260405 2.94968833505258 2.98568193770049 3.98527346716774 4.34380542185368 3.09557760852371 3.4904285153901 5.8111409929767 2.81540871942271 3.3357695763397 1.69927861643389 +observational 3.39114704580865 3.13113691056019 2.61006979274201 3.82209829790016 2.63188884013665 2.9338568698359 3.56104608260405 6.31354804627709 2.90690105984738 3.44361809754611 1.9154509415706 +observational 3.96651119071222 2.65324196460721 2.61006979274201 2.41591377830105 2.06812778177956 1.94304891677428 3.20274644293832 6.04500531403601 0.783901543828409 2.21266038546606 4.20916023665068 +observational 3.52636052461616 2.87919845729804 2.94968833505258 2.77881927199042 1.90657514365664 1.82616089594539 2.57261223020711 6.50279004591562 2.50959926237837 1.79009141212736 1.23256026117785 +observational 3.75887182593397 2.67414864942653 4.23700086262362 5.2257466737132 3.4904285153901 1.5830939370945 3.14845336057165 5.94542060860658 2.58021682959233 3.24649099190117 1.16938135955632 +observational 3.50855589998265 3.31054301339402 2.31253542384721 4.11903717481247 2.57261223020711 2.37954613413017 3.18221184049661 6.35088571671474 1.21491274436427 1.42069578783722 2.18605127673809 +observational 4.70953020131233 3.64283551561253 2.35137525716348 2.53369681395743 2.28442112236637 3.60549784517489 4.17284762371004 7.37525577800975 2.96010509591084 2.97552956623647 2.10413415427021 +observational 4.43438186500781 3.40784192438082 2.75366071235426 2.94968833505258 2.83321334405622 3.04927304048202 3.4904285153901 5.73979291217923 2.87919845729804 3.45315712059287 1.14103300455206 +observational 3.63495111208838 3.03974915897077 1.92424865227413 4.0842942263686 3.12236492448736 1.80828877117927 1.73518911773966 6.55677835615804 2.73436750941958 2.71469474382088 2.31253542384721 +observational 4.16511363311031 3.53514535417189 2.21266038546606 4.49758497530815 2.71469474382088 1.7630170003624 2.4932054526027 5.6021188208797 2.83321334405622 3.16547504814109 2.14124194258528 +observational 3.79548918917219 3.09557760852371 1.5830939370945 2.4932054526027 2.484906649788 0.989541193613748 3.01553490085017 6.52941883826223 2.86789890204411 2.80336038090653 2.61006979274201 +observational 3.60549784517489 3.03013370027132 2.52572864430826 2.57261223020711 2.35137525716348 3.86702563949741 4.0842942263686 6.72743172485086 2.96010509591084 3.81330703248899 1.7263316639056 +observational 4.70953020131233 3.75887182593397 2.42480272571829 2.64617479738412 2.24812890719799 2.92316158071916 3.4904285153901 5.4971682252932 3.8416005411316 4.01096295328305 2.20386912005489 +observational 3.75185425327532 2.79116510781272 2.70805020110221 3.92986292355648 2.99573227355399 2.52572864430826 3.2188758248682 5.8636311755981 2.50959926237837 2.79116510781272 0.631271776841858 +observational 2.52572864430826 3.47196645255036 2.47653840011748 4.31748811353631 3.00568260440716 3.23080439573347 3.62434093297637 6.03548143252476 2.82137888640921 4.30000279919529 5.09375020080676 +observational 3.3357695763397 3.41772668361337 2.27521389619791 3.95699637107088 1.79009141212736 1.24990173621434 2.72785282839839 2.98568193770049 2.75366071235426 3.26575941076705 2.36085400111802 +observational 4.42484663185681 4.31748811353631 2.21266038546606 4.40671924726425 3.40119738166216 2.99573227355399 3.59731226058845 5.95324333428778 2.9704144655697 3.55248682920838 2.4423470353692 +observational 4.47049528266149 3.66867674679642 2.68102152871429 5.99893656194668 4.43438186500781 3.37416870927424 3.81330703248899 6.13339804299665 2.50143595173921 3.2846635654062 1.6094379124341 +observational 3.38099467434464 3.39114704580865 2.23964529322017 4.3528552573736 3.26575941076705 2.87919845729804 3.19458313229916 5.95324333428778 2.21266038546606 3.55248682920838 4.78749174278205 +observational 3.89385903480047 3.11351530921037 2.2935443483419 3.05870707271538 4.01096295328305 2.1770218700187 2.53369681395743 6.39526159811545 2.27521389619791 3.77734810210154 5.28826703069454 +observational 4.80402104473326 4.44382703557933 2.30258509299405 2.85070650150373 3.01553490085017 3.2188758248682 3.7864597824528 7.25841215059531 1.03318448334565 2.46809953147162 4.0842942263686 +observational 3.3357695763397 2.87919845729804 2.33214389523559 3.04927304048202 3.56953269648137 2.87919845729804 3.37416870927424 6.72743172485086 1.19694818938897 2.52572864430826 0.802001585472027 +observational 2.96010509591084 2.85070650150373 2.99573227355399 3.52636052461616 2.18605127673809 2.484906649788 3.20274644293832 6.25958146406492 2.75366071235426 3.20274644293832 3.03013370027132 +observational 1.2947271675944 2.3887627892351 2.65324196460721 4.20916023665068 3.51749783735832 1.43031124653666 2.82137888640921 3.14845336057165 0.693147180559945 2.04122032885964 3.88567903008854 +observational 3.23867845216438 0.22314355131421 2.79116510781272 2.70805020110221 2.10413415427021 2.82137888640921 3.38099467434464 5.67675380226828 2.7408400239252 2.9391619220656 1.25846098961001 +observational 3.44361809754611 3.12236492448736 1.57484646766448 2.53369681395743 2.39789527279837 3.04927304048202 3.45315712059287 5.66642668811243 3.25424296870549 3.71357206670431 2.86220088092947 +observational 2.81540871942271 1.68268837417369 0.00995033085316809 2.46809953147162 3.01553490085017 2.77258872223978 3.23080439573347 5.61312810638807 2.9704144655697 3.04927304048202 2.62466859216316 +observational 4.27249074760558 2.9704144655697 2.36085400111802 3.35340671782581 3.34638914516716 3.17387845893747 3.65065824129374 5.75574221358691 2.7408400239252 3.27336401015227 1.81645208181843 +observational 3.62434093297637 2.33214389523559 2.45958884180371 3.94931879017184 2.76000994003292 1.61938824328727 3.27336401015227 3.98527346716774 1.77155676191054 2.14124194258528 1.89761985992753 +observational 1.24126858906963 0.385262400790645 2.20386912005489 3.58905911883173 4.26267987704132 1.66392609771817 3.01553490085017 5.64897423816121 2.81540871942271 3.53514535417189 2.33214389523559 +observational 3.55248682920838 3.05870707271538 2.2213750375685 5.18178355029209 2.04122032885964 3.6609942506244 4.16511363311031 7.55538194424027 3.39114704580865 3.74242022104197 2.51769647261099 +observational 3.17387845893747 2.87919845729804 2.07819075977818 3.70622809244855 2.67414864942653 3.43720781918519 4.39814601655377 7.47420480649612 2.75366071235426 2.55722731136763 1.6094379124341 +observational 3.27336401015227 3.37416870927424 2.72785282839839 2.36085400111802 1.87946504964716 2.3887627892351 3.21084365317094 6.05443934626937 2.42480272571829 3.36384159511839 2.84490938381941 +observational 2.85070650150373 2.76000994003292 2.54160199346455 2.9391619220656 1.78170913337455 1.51951320490611 2.67414864942653 6.92559519711047 2.87919845729804 3.71357206670431 1.4747630091075 +observational 4.30000279919529 3.23080439573347 1.57484646766448 2.4932054526027 3.35340671782581 1.82616089594539 2.91235066461494 6.43133108193348 2.71469474382088 3.42751468997953 2.14943391349987 +observational 4.17284762371004 3.15700042115011 1.84371920815877 3.13983261752775 3.49953328238302 2.54160199346455 3.37416870927424 6.39526159811545 2.87919845729804 3.13983261752775 1.51951320490611 +observational 3.98527346716774 2.67414864942653 2.21266038546606 5.4249500174814 3.37416870927424 2.27521389619791 2.77258872223978 6.53958595561767 1.09861228866811 2.37954613413017 0.810930216216329 +observational 3.90399083373088 3.16547504814109 2.61006979274201 3.03013370027132 3.68887945411394 3.03013370027132 3.75185425327532 5.74620319054015 2.52572864430826 2.61006979274201 2.23964529322017 +observational 0.300104592450338 2.1770218700187 2.9338568698359 2.70136121295141 1.96990565461153 2.68102152871429 2.91235066461494 6.12468339089421 2.39789527279837 2.61006979274201 1.87946504964716 +observational 3.92986292355648 2.71469474382088 0.19062035960865 0.285178942233662 2.03339760317843 1.96990565461153 2.70136121295141 6.34035930372775 2.47653840011748 2.4423470353692 2.01490302054226 +observational 3.21084365317094 2.26695791535089 1.89761985992753 5.50533153593236 3.41772668361337 1.08856195281461 3.18221184049661 5.8636311755981 3.6163087612791 3.73289633953071 2.03339760317843 +observational 4.46129981556839 3.26575941076705 3.14845336057165 4.46129981556839 4.70953020131233 2.85070650150373 3.36384159511839 6.23244801655052 1.88858365386359 2.35137525716348 2.68784749378469 +observational 3.55248682920838 2.4423470353692 2.97552956623647 2.47653840011748 2.67414864942653 2.68784749378469 3.4626060097908 6.07993319509559 2.9704144655697 3.40784192438082 0.99694863489161 +observational 4.10098910494077 2.80336038090653 2.23964529322017 5.04342511691925 3.12236492448736 2.96010509591084 4.12874598893943 6.34035930372775 2.83321334405622 3.16547504814109 2.58021682959233 +observational 3.9926809084456 3.31054301339402 2.70805020110221 2.70805020110221 2.15871472257434 1.6467336971778 2.79728133483015 6.78219205600679 3.21084365317094 3.67882911826043 3.01553490085017 +observational 4.06560209335645 3.35340671782581 2.07819075977818 2.45958884180371 1.08856195281461 1.69927861643389 2.71469474382088 3.52636052461616 0.936093359170335 0.727548607277278 2.05923883436232 +observational 4.18205014264121 2.82137888640921 2.79728133483015 2.92316158071916 2.37954613413017 3.13983261752775 3.64283551561253 6.13339804299665 3.29212628660779 3.67882911826043 1.99741770620125 +observational 4.20916023665068 3.03013370027132 3.34638914516716 3.94931879017184 3.04927304048202 1.74571553072665 2.79728133483015 6.41345895716736 0 0.746687947487975 1.02604159583327 +observational 4.69134788222914 3.4626060097908 0.928219302739429 0.0769610411361284 6.23244801655052 2.85070650150373 2.92316158071916 5.48479693349065 2.70136121295141 3.08648663682246 1.06125650212434 +observational 4.84418708645859 4.22683374526818 3.25424296870549 4.254193263164 4.93447393313069 2.88480071284671 3.64283551561253 5.94542060860658 0 2.80336038090653 1.93441576962958 +observational 4.74493212836325 3.63495111208838 3.4904285153901 3.52636052461616 2.89591193827178 2.97552956623647 3.3178157727231 6.09807428216624 2.53369681395743 2.85070650150373 2.36085400111802 +observational 3.05870707271538 2.60268968544438 2.4423470353692 2.99573227355399 4.56017282005736 2.9391619220656 3.36384159511839 6.19644412779452 1.09861228866811 2.85070650150373 4.30000279919529 +observational 2.67414864942653 2.9391619220656 3.05870707271538 3.01553490085017 2.88480071284671 2.96010509591084 3.02042488614436 5.5683445037611 2.72785282839839 3.11351530921037 1.35840915763035 +observational 4.03777421073371 3.16547504814109 2.1770218700187 4.24563400976833 2.79728133483015 2.92316158071916 3.79548918917219 7.1777824161952 2.1770218700187 2.63188884013665 1.96009478404727 +observational 3.27336401015227 2.97552956623647 3.13983261752775 2.43361335540045 1.92424865227413 2.57261223020711 3.05870707271538 6.30444880242198 2.58021682959233 2.61739583283408 2.12226153886276 +observational 2.23964529322017 1.79840401194672 1.83418018511201 1.7630170003624 1.32175583998232 3.02042488614436 3.56953269648137 5.98141421125448 2.65324196460721 2.77881927199042 2.11384296839717 +observational 2.57261223020711 2.84490938381941 2.77881927199042 2.51769647261099 2.58021682959233 2.10413415427021 3.3178157727231 6.27852142416584 1.78170913337455 3.67882911826043 4.56017282005736 +observational 4.14630430115281 3.3357695763397 2.84490938381941 3.05870707271538 1.66392609771817 2.97552956623647 3.54385368206368 6.49375383985169 3.95699637107088 5.09375020080676 4.05698877567833 +observational 3.87743156065853 3.14845336057165 1.6467336971778 4.31748811353631 3.07731226054641 2.87919845729804 3.35340671782581 6.51174532964473 2.75366071235426 3.52636052461616 1.34025042261848 +observational 3.45315712059287 2.81540871942271 2.00552585872967 5.52146091786225 3.15700042115011 2.50143595173921 3.23080439573347 6.20657592672493 2.31253542384721 2.61006979274201 2.2935443483419 +observational 3.4626060097908 3.20274644293832 2.61739583283408 3.21084365317094 2.60268968544438 1.81645208181843 2.76000994003292 6.43133108193348 3.12236492448736 3.43720781918519 2.00552585872967 +observational 3.71357206670431 2.86220088092947 2.15871472257434 3.8308129500026 3.58073729549423 1.37624402526639 2.63188884013665 6.03548143252476 3.04927304048202 3.65065824129374 2.55722731136763 +observational 2.82137888640921 2.87919845729804 2.83321334405622 3.04927304048202 1.79840401194672 1.36609165380237 2.55722731136763 6.33150184989369 2.1770218700187 2.36085400111802 3.58905911883173 +observational 3.79548918917219 2.52572864430826 1.17865499634165 5.93753620508243 4.24563400976833 2.86220088092947 3.63495111208838 5.91889385427315 1.67335123817775 2.26695791535089 0.488580014818671 +observational 0 2.37024374146786 2.70805020110221 2.70805020110221 2.9338568698359 3.43720781918519 3.81330703248899 6.13339804299665 3.65065824129374 4.10098910494077 5.20948615284142 +observational 2.97552956623647 1.73518911773966 0 4.59612944133594 2.50959926237837 2.62466859216316 3.75887182593397 7.08757370555797 2.02419306744936 3.87743156065853 4.5152454784601 +observational 3.2846635654062 2.9391619220656 2.97552956623647 2.66025953726586 1.48387468945875 2.9338568698359 3.2188758248682 6.12468339089421 2.82137888640921 2.98568193770049 2.4423470353692 +observational 3.52636052461616 3.2188758248682 2.4423470353692 2.9704144655697 2.76000994003292 2.66025953726586 2.7408400239252 6.25190388316589 2.4932054526027 2.66025953726586 0.582215619852664 +observational 4.30811095172371 3.58073729549423 2.28442112236637 4.64439089914137 3.56953269648137 3.14845336057165 3.40784192438082 6.07073772800249 2.7408400239252 3.25424296870549 1.71739505393919 +observational 3.79548918917219 3.79548918917219 1.48387468945875 4.22683374526818 2.2935443483419 3.4904285153901 3.86702563949741 5.99893656194668 4.34380542185368 4.89034912822175 3.90399083373088 +observational 3.17387845893747 3.39114704580865 1.48387468945875 2.7408400239252 2.70136121295141 3.05870707271538 3.52636052461616 5.73979291217923 2.67414864942653 3.11351530921037 2.15871472257434 +observational 3.10458667846607 3.54385368206368 0.703097511413113 4.82028156560504 1.60140574073684 3.50855589998265 3.56953269648137 5.82894561761021 2.71469474382088 2.9704144655697 0.173953307123438 +observational 4.77068462446567 3.18221184049661 1.84371920815877 5.23644196282995 3.52636052461616 2.61739583283408 3.10458667846607 5.98141421125448 3.21084365317094 3.87743156065853 4.33598269617247 +observational 4.69134788222914 3.65065824129374 2.45958884180371 2.92316158071916 2.90690105984738 2.27521389619791 2.9391619220656 5.89164421182577 2.76000994003292 3.23080439573347 1.81645208181843 +observational 4.30000279919529 3.03013370027132 1.75440368268429 4.96284463025991 3.47196645255036 1.31372366828506 2.53369681395743 6.18001665365257 2.58776403522771 2.40694510831829 1.61938824328727 +observational 3.25424296870549 3.13983261752775 3.32862668882732 3.62434093297637 2.52572864430826 2.58776403522771 3.25424296870549 6.11589212548303 0.0392207131532813 2.85070650150373 2.70136121295141 +observational 4.3267781604434 3.53514535417189 2.77881927199042 4.07414185490458 3.04927304048202 2.54160199346455 3.15700042115011 5.7037824746562 1.17865499634165 2.06812778177956 1.12492959698548 +observational 3.63495111208838 1.90657514365664 2.39789527279837 3.52636052461616 3.58073729549423 3.43720781918519 3.54385368206368 5.75574221358691 2.09556092355972 2.67414864942653 1.92424865227413 +observational 3.72328088083127 3.07731226054641 1.21491274436427 5.47646355193151 2.98568193770049 1.94304891677428 2.76000994003292 6.81783057145415 2.19499988231411 3.16547504814109 3.52636052461616 +observational 4.50645421304893 3.38099467434464 2.52572864430826 4.04830062372069 2.54160199346455 0.900161349944271 2.43361335540045 6.27852142416584 2.9704144655697 3.75185425327532 3.31054301339402 +observational 2.94968833505258 3.70622809244855 2.57261223020711 3.10458667846607 2.24812890719799 2.56494935746154 3.29212628660779 5.99893656194668 2.68784749378469 2.92316158071916 2.72785282839839 +observational 4.14630430115281 3.58905911883173 2.65324196460721 4.13676527810605 2.70805020110221 2.47653840011748 2.96010509591084 5.96357934361845 2.99573227355399 3.62434093297637 3.01553490085017 +observational 4.31748811353631 3.45315712059287 2.32238772029023 4.77068462446567 3.2846635654062 2.61739583283408 3.03013370027132 6.10702288774225 2.63188884013665 3.44361809754611 2.35137525716348 +observational 3.60549784517489 3.19458313229916 1.9154509415706 2.54160199346455 2.07819075977818 2.51769647261099 3.52636052461616 6.04500531403601 2.36085400111802 3.23867845216438 1.6094379124341 +observational 3.75185425327532 2.68784749378469 2.88480071284671 1.90657514365664 3.45315712059287 2.36085400111802 4.20916023665068 7.85205020726589 0 4.15575319035074 1.41098697371026 +observational 3.72328088083127 3.53514535417189 1.7630170003624 5.48479693349065 3.10458667846607 2.01490302054226 2.01490302054226 6.52941883826223 1.05082162483176 0.285178942233662 1.78170913337455 +observational 3.00568260440716 2.87919845729804 1.84371920815877 4.70953020131233 3.75887182593397 1.41098697371026 2.79116510781272 5.92692602597041 1.77155676191054 3.37416870927424 4.97673374242057 +observational 2.58021682959233 2.21266038546606 1.59127394180643 0.99694863489161 0.254642218373581 2.50959926237837 3.19458313229916 6.16120732169508 2.72785282839839 2.80336038090653 2.03339760317843 +observational 2.90690105984738 2.42480272571829 2.10413415427021 5.39816270151775 3.58073729549423 5.57594910314632 6.26909628370626 8.69767973226446 1.81645208181843 2.36085400111802 1.53901544813755 +observational 2.47653840011748 1.51072193949494 0.908258560176891 4.79579054559674 2.28442112236637 1.69927861643389 2.70805020110221 6.30444880242198 2.72785282839839 3.26575941076705 2.32238772029023 +observational 3.98527346716774 3.23867845216438 1.06125650212434 5.20948615284142 3.39114704580865 2.31253542384721 2.83321334405622 6.53958595561767 2.1770218700187 1.88858365386359 2.14943391349987 +observational 2.30258509299405 2.32238772029023 2.45958884180371 3.08648663682246 2.87919845729804 3.47196645255036 3.96651119071222 7.06987412845857 3.90399083373088 4.79579054559674 3.4904285153901 +observational 4.06560209335645 3.4904285153901 2.50143595173921 0.322083499169113 3.32862668882732 3.27336401015227 3.92986292355648 6.66440902035041 3.8308129500026 4.47960696301275 2.9338568698359 +observational 4.55071400019203 3.91202300542815 1.92424865227413 2.32238772029023 3.45315712059287 3.51749783735832 3.6609942506244 5.62040086571715 2.18605127673809 3.17387845893747 0.518793793415168 +observational 3.31054301339402 3.06805293513362 1.95160817016995 1.8531680973567 4.30811095172371 1.74571553072665 2.72785282839839 6.41345895716736 2.79728133483015 2.58776403522771 1.19694818938897 +observational 3.6163087612791 2.70805020110221 2.70805020110221 2.39789527279837 2.2213750375685 3.05870707271538 3.44361809754611 5.54126354515843 2.18605127673809 2.65324196460721 2.61739583283408 +observational 5.03043792139244 4.67282883446191 2.43361335540045 4.31748811353631 2.15871472257434 2.70805020110221 4.14630430115281 7.99598047476376 2.64617479738412 2.70136121295141 1.90657514365664 +observational 3.94931879017184 2.33214389523559 2.3887627892351 4.45201900649392 3.31054301339402 1.20597080698861 2.61739583283408 5.37989735354046 3.34638914516716 3.93963817246112 2.55722731136763 +observational 4.36182392735636 3.25424296870549 0 5.57594910314632 3.79548918917219 2.85070650150373 3.36384159511839 6.23244801655052 2.45958884180371 2.80336038090653 1.30291275218084 +observational 4.24563400976833 3.19458313229916 4.00186370942794 4.85981240436167 2.64617479738412 2.73436750941958 3.32862668882732 5.92692602597041 1.4747630091075 2.50959926237837 2.31253542384721 +observational 4.66343909411207 3.81330703248899 1.9154509415706 4.95582705760126 3.31054301339402 1.92424865227413 3.17387845893747 7.13249755166004 3.38099467434464 3.3357695763397 2.20386912005489 +observational 5.31811999384422 4.3267781604434 3.20274644293832 3.89385903480047 4.65396035015752 3.20274644293832 3.94931879017184 6.91671502035361 3.10458667846607 3.31054301339402 1.5830939370945 +observational 3.9759363311718 3.05870707271538 2.2213750375685 2.26695791535089 2.83321334405622 2.36085400111802 3.85014760171006 7.39326309476384 2.37024374146786 2.66025953726586 1.66392609771817 +observational 3.80443779474821 3.09557760852371 2.4932054526027 3.73289633953071 2.68102152871429 2.24812890719799 3.04927304048202 6.06145691892802 3.24649099190117 3.66867674679642 2.66025953726586 +observational 3.64283551561253 2.77258872223978 3.39114704580865 3.43720781918519 3.40119738166216 2.51769647261099 2.92316158071916 6.43133108193348 2.51769647261099 2.98568193770049 2.14124194258528 +observational 2.10413415427021 2.2935443483419 1.83418018511201 2.62466859216316 2.21266038546606 3.27336401015227 3.41772668361337 5.96357934361845 2.86220088092947 2.86789890204411 1.65441127807683 +observational 4.54223038621422 3.8308129500026 1.23256026117785 2.10413415427021 4.01998014693324 2.35137525716348 2.89591193827178 6.13339804299665 2.42480272571829 2.58776403522771 2.54160199346455 +observational 3.4904285153901 2.91235066461494 1.870262530716 3.19458313229916 1.52822785700856 3.10458667846607 3.60549784517489 5.77455154554441 3.00568260440716 3.53514535417189 1.11514159061932 +observational 4.38949864951258 3.70622809244855 3.12236492448736 2.33214389523559 2.08691355651854 2.62466859216316 4.02891675689965 7.95997452808054 2.77258872223978 3.29212628660779 1.28647402583768 +observational 2.02419306744936 3.15700042115011 0.357674444271816 1.93441576962958 2.89591193827178 1.04380405217311 0.27002713721306 4.91265488573605 2.53369681395743 3.41772668361337 1.96009478404727 +observational 3.36384159511839 2.94968833505258 3.6163087612791 2.25758772706331 4.06560209335645 1.88858365386359 2.61006979274201 4.40671924726425 2.76000994003292 3.19458313229916 2.80336038090653 +observational 2.28442112236637 2.00552585872967 1.90657514365664 2.62466859216316 3.8416005411316 3.42751468997953 3.75185425327532 6.14418563412565 2.71469474382088 3.18221184049661 2.484906649788 +observational 4.54223038621422 3.6609942506244 2.27521389619791 4.8283137373023 3.02042488614436 3.25424296870549 3.65065824129374 6.11589212548303 2.05027016437956 3.56953269648137 5.40717177146012 +observational 3.69635146895264 3.21084365317094 3.91202300542815 5.43372200355424 4.47960696301275 2.70805020110221 3.38099467434464 5.51342874616498 2.71469474382088 2.9704144655697 2.14943391349987 +observational 3.58073729549423 3.55248682920838 1.42069578783722 2.58021682959233 3.40119738166216 2.03339760317843 3.2188758248682 6.45833828334479 2.86789890204411 3.40119738166216 2.07819075977818 +observational 4.19116874685764 3.32862668882732 1.51951320490611 5.20948615284142 3.7864597824528 1.41098697371026 3.10458667846607 6.54821910276237 2.37954613413017 3.43720781918519 1.60140574073684 +observational 3.73289633953071 2.9704144655697 1.23256026117785 2.14943391349987 2.11384296839717 1.77155676191054 2.83321334405622 5.89164421182577 3.06805293513362 3.27336401015227 2.19499988231411 +observational 3.03974915897077 3.3178157727231 2.61006979274201 3.87743156065853 4.00186370942794 0 0.385262400790645 5.28826703069454 2.58021682959233 3.12236492448736 2.14124194258528 +observational 2.79728133483015 2.18605127673809 3.49953328238302 3.9926809084456 2.80336038090653 3.27336401015227 3.56104608260405 6.14418563412565 2.26695791535089 2.58776403522771 0.357674444271816 +observational 4.0842942263686 3.47196645255036 4.01998014693324 4.57779898919196 3.62434093297637 2.9704144655697 3.40784192438082 5.80211837537706 2.42480272571829 2.91235066461494 1.81645208181843 +observational 3.4904285153901 2.84490938381941 2.56494935746154 2.36085400111802 0.908258560176891 4.03777421073371 4.43438186500781 7.42952084278646 3.2846635654062 3.90399083373088 3.43720781918519 +observational 3.80443779474821 2.99573227355399 2.13179677201376 5.04342511691925 2.79728133483015 2.50959926237837 3.32862668882732 5.88332238848828 3.13983261752775 3.71357206670431 2.87919845729804 +observational 4.39814601655377 2.81540871942271 1.95160817016995 4.94875989037817 3.51749783735832 2.07819075977818 2.46809953147162 6.59304453414244 3.6163087612791 4.07414185490458 2.84490938381941 +observational 4.91265488573605 4.26267987704132 2.71469474382088 2.83321334405622 1.56444054650336 2.82137888640921 3.45315712059287 5.98141421125448 2.99573227355399 3.70622809244855 2.52572864430826 +observational 3.15700042115011 2.79116510781272 1.16002091679675 0 6.09807428216624 2.36085400111802 2.90690105984738 5.96357934361845 3.3357695763397 3.8308129500026 2.88480071284671 +observational 4.05698877567833 2.70805020110221 3.62434093297637 3.68887945411394 2.9338568698359 3.38099467434464 3.41772668361337 5.77455154554441 2.36085400111802 3.55248682920838 3.10458667846607 +observational 3.70622809244855 2.77881927199042 2.80336038090653 2.52572864430826 1.10525683138678 2.86789890204411 3.4626060097908 6.73696695800186 4.11903717481247 4.44382703557933 3.23867845216438 +observational 3.82209829790016 2.73436750941958 2.19499988231411 4.82028156560504 3.09557760852371 1.43031124653666 2.15871472257434 6.49375383985169 2.45958884180371 2.86220088092947 2.13179677201376 +observational 1.90657514365664 2.99573227355399 2.34180580614733 4.96284463025991 3.23080439573347 3.47196645255036 3.64283551561253 6.16961073249146 3.2846635654062 3.85862222870103 2.94968833505258 +observational 4.8283137373023 4.81218435537242 2.64617479738412 2.34180580614733 1.60140574073684 2.77258872223978 2.79728133483015 6.24222326545517 2.96010509591084 3.04927304048202 1.42069578783722 +observational 4.44382703557933 3.50855589998265 2.51769647261099 3.91202300542815 3.00568260440716 2.36085400111802 2.97552956623647 6.8001700683022 2.81540871942271 3.53514535417189 0.300104592450338 +observational 5.2257466737132 5.10594547390058 3.13113691056019 3.27336401015227 1.57484646766448 2.16791018966744 2.80336038090653 6.28785856016178 3.58905911883173 3.41772668361337 2.50959926237837 +observational 3.95699637107088 3.6609942506244 1.32175583998232 2.90690105984738 3.26575941076705 2.05027016437956 2.51769647261099 5.74620319054015 2.77258872223978 3.55248682920838 4.07414185490458 +observational 4.56954300834494 3.40784192438082 2.64617479738412 3.15700042115011 2.61739583283408 3.35340671782581 3.87743156065853 7.02464903045364 2.61739583283408 2.98568193770049 1.61938824328727 +observational 3.36384159511839 2.82137888640921 1.31372366828506 3.02042488614436 3.80443779474821 2.07819075977818 2.89591193827178 5.63121178182137 1.33236601909433 2.77881927199042 4.27249074760558 +observational 4.65396035015752 3.69635146895264 2.42480272571829 2.91235066461494 2.63188884013665 2.68784749378469 3.29953372788566 5.88332238848828 3.34638914516716 3.41772668361337 1.96990565461153 +observational 5.00394630594546 3.59731226058845 1.39376637595859 2.2935443483419 1.2947271675944 3.01553490085017 3.51749783735832 5.91889385427315 2.68102152871429 2.82137888640921 1.79840401194672 +observational 3.06805293513362 1.89761985992753 2.88480071284671 4.49758497530815 3.45315712059287 3.66867674679642 4.01096295328305 5.54907608489522 2.79728133483015 3.12236492448736 2.36085400111802 +observational 3.92197333628131 3.65065824129374 2.10413415427021 3.75887182593397 2.37024374146786 2.66025953726586 3.05870707271538 6.39526159811545 3.11351530921037 3.6163087612791 2.98568193770049 +observational 4.60517018598809 3.88567903008854 2.01490302054226 2.83321334405622 2.79116510781272 2.79116510781272 3.15700042115011 5.7037824746562 2.50959926237837 2.40694510831829 0.99694863489161 +observational 4.38949864951258 3.44361809754611 2.57261223020711 3.55248682920838 2.83321334405622 2.37954613413017 2.67414864942653 6.04500531403601 2.70805020110221 3.05870707271538 2.03339760317843 +observational 4.03777421073371 3.2846635654062 2.2213750375685 2.71469474382088 0.943905898907128 1.83418018511201 2.27521389619791 5.8636311755981 3.64283551561253 4.00186370942794 3.41772668361337 +observational 4.39814601655377 3.3357695763397 2.20386912005489 2.81540871942271 3.85014760171006 3.07731226054641 3.19458313229916 5.61312810638807 4.77912349311153 5.6937321388027 5.04342511691925 +observational 3.80443779474821 3.13113691056019 2.24812890719799 2.68784749378469 2.85070650150373 2.46809953147162 3.42751468997953 6.14418563412565 2.58021682959233 2.88480071284671 1.50185270175416 +observational 4.57779898919196 3.51749783735832 2.81540871942271 4.17284762371004 3.14845336057165 2.14943391349987 2.52572864430826 5.65599181081985 3.56953269648137 4.04830062372069 2.73436750941958 +observational 4.11087386417331 3.4626060097908 2.87919845729804 2.79728133483015 2.31253542384721 2.58776403522771 3.3357695763397 7.55538194424027 0.582215619852664 2.27521389619791 1.22377543162212 +observational 4.16511363311031 3.49953328238302 3.00568260440716 6.35957386867238 4.41642806139121 2.05027016437956 2.9391619220656 5.90808293816893 0.609765571620894 2.87919845729804 4.33598269617247 +observational 4.78749174278205 3.70622809244855 2.02419306744936 6.8001700683022 4.81218435537242 2.82137888640921 3.34638914516716 5.76519110278484 2.40694510831829 3.18221184049661 2.37954613413017 +observational 3.03013370027132 1.88858365386359 2.77258872223978 2.79728133483015 2.24812890719799 1.28647402583768 3.05870707271538 6.77308037565554 2.86220088092947 3.11351530921037 1.61938824328727 +observational 3.43720781918519 2.71469474382088 4.20020495292158 4.15575319035074 2.79728133483015 3.2846635654062 3.53514535417189 5.99146454710798 2.54160199346455 2.77881927199042 2.37954613413017 +observational 3.23867845216438 3.3357695763397 1.65441127807683 1.96990565461153 3.74242022104197 4.17284762371004 4.64439089914137 7.4205789054108 0 2.3887627892351 1.870262530716 +observational 4.24563400976833 3.16547504814109 1.6467336971778 2.68102152871429 3.85862222870103 3.35340671782581 4.24563400976833 6.19644412779452 3.11351530921037 3.26575941076705 2.03339760317843 +observational 1.6094379124341 2.92316158071916 2.31253542384721 4.28082412916472 2.96010509591084 3.18221184049661 3.4904285153901 5.90808293816893 2.33214389523559 2.484906649788 0.871293365943419 +observational 4.28082412916472 3.72328088083127 3.05870707271538 3.55248682920838 2.50959926237837 1.6094379124341 2.70136121295141 6.07073772800249 2.76000994003292 2.84490938381941 2.39789527279837 +observational 3.69635146895264 3.29953372788566 3.08648663682246 3.37416870927424 2.14124194258528 2.82137888640921 3.67882911826043 6.30444880242198 1.04380405217311 1.14103300455206 1.67335123817775 +observational 2.07819075977818 3.38099467434464 2.34180580614733 4.12874598893943 1.49290409617815 2.51769647261099 3.05870707271538 6.08904487544685 4.00186370942794 4.56954300834494 3.87743156065853 +observational 4.20916023665068 3.2188758248682 2.13179677201376 2.77258872223978 2.52572864430826 2.484906649788 3.36384159511839 6.38687931936265 2.30258509299405 3.3178157727231 0.2390169004705 +observational 4.0926765051214 2.9704144655697 0 5.36129216570943 1.66392609771817 0.89199803930511 2.20386912005489 5.23644196282995 3.2846635654062 3.4626060097908 2.57261223020711 +observational 3.63495111208838 2.97552956623647 2.67414864942653 2.98568193770049 2.52572864430826 1.83418018511201 2.97552956623647 6.67329796776765 0.908258560176891 2.64617479738412 4.47049528266149 +observational 4.29045944114839 3.63495111208838 3.76815263500844 4.22683374526818 2.4423470353692 3.05870707271538 3.88567903008854 7.00669522683704 2.13179677201376 3.03974915897077 0 +observational 4.31748811353631 3.35340671782581 3.50855589998265 4.05698877567833 2.72785282839839 3.23867845216438 3.70622809244855 6.00881318544259 2.58776403522771 3.00568260440716 1.73518911773966 +observational 3.49953328238302 3.08648663682246 1.45628673293993 4.47049528266149 3.21084365317094 0.951657875711446 3.16547504814109 6.98841318199959 2.81540871942271 3.34638914516716 2.10413415427021 +observational 3.13113691056019 2.76000994003292 2.42480272571829 5.6937321388027 4.06560209335645 1.33236601909433 3.16547504814109 6.77308037565554 3.01553490085017 3.81330703248899 4.254193263164 +observational 2.42480272571829 2.86789890204411 2.06812778177956 2.91235066461494 4.01096295328305 3.16547504814109 4.40671924726425 6.84481547920826 2.55722731136763 2.56494935746154 2.06812778177956 +observational 3.89385903480047 2.70805020110221 2.10413415427021 5.50533153593236 4.27249074760558 1.43031124653666 2.00552585872967 6.27852142416584 3.40784192438082 3.85862222870103 2.96010509591084 +observational 3.63495111208838 3.65065824129374 1.49290409617815 4.10098910494077 3.11351530921037 1.21491274436427 3.00568260440716 6.19644412779452 3.01553490085017 3.38099467434464 1.6467336971778 +observational 1.86252854011626 2.79116510781272 3.06805293513362 3.44361809754611 2.58776403522771 1.90657514365664 2.50959926237837 6.44888939414686 3.07731226054641 3.49953328238302 1.21491274436427 +observational 4.02891675689965 3.38099467434464 3.74242022104197 2.57261223020711 3.90399083373088 1.21491274436427 2.16791018966744 5.96357934361845 1.32175583998232 1.75440368268429 1.51951320490611 +observational 4.44382703557933 3.62434093297637 2.18605127673809 4.79579054559674 3.29953372788566 2.04122032885964 3.15700042115011 7.01571242048723 3.11351530921037 3.75887182593397 1.03318448334565 +observational 4.49758497530815 4.42484663185681 2.4423470353692 2.7408400239252 2.41591377830105 2.88480071284671 3.35340671782581 6.04500531403601 2.52572864430826 2.73436750941958 1.80828877117927 +observational 4.30811095172371 3.47196645255036 2.65324196460721 2.72785282839839 2.43361335540045 2.58776403522771 3.40119738166216 6.21460809842219 1.01523067972906 1.870262530716 2.47653840011748 +observational 3.40119738166216 3.16547504814109 2.79728133483015 4.01998014693324 3.89385903480047 2.76000994003292 3.02042488614436 6.31354804627709 2.60268968544438 3.06805293513362 0.431782416425538 +observational 4.66343909411207 3.23867845216438 1.92424865227413 3.53514535417189 3.56104608260405 1.8531680973567 3.38099467434464 6.83625927727707 2.25758772706331 2.88480071284671 2.07819075977818 +observational 4.11903717481247 3.13983261752775 2.4932054526027 3.50855589998265 3.35340671782581 2.72785282839839 3.40119738166216 5.82894561761021 3.73289633953071 4.0842942263686 3.40119738166216 +observational 4.45201900649392 3.02042488614436 4.90527477843843 6.04500531403601 5.52146091786225 3.10458667846607 3.8308129500026 7.3038432252777 1.79840401194672 2.03339760317843 1.4747630091075 +observational 3.86702563949741 2.88480071284671 2.9704144655697 4.01096295328305 3.73289633953071 2.98568193770049 3.36384159511839 6.05443934626937 2.68784749378469 3.05870707271538 2.37024374146786 +observational 3.56953269648137 3.38099467434464 2.4423470353692 4.04830062372069 3.54385368206368 1.84371920815877 2.83321334405622 6.7093043402583 1.6094379124341 1.77155676191054 3.39114704580865 +observational 3.87743156065853 2.94968833505258 2.31253542384721 3.23867845216438 3.4626060097908 2.41591377830105 3.20274644293832 6.24222326545517 0.746687947487975 2.81540871942271 4.55071400019203 +observational 4.70953020131233 3.60549784517489 1.83418018511201 4.74493212836325 2.61739583283408 1.65441127807683 3.41772668361337 6.57507584059962 2.99573227355399 3.75185425327532 2.64617479738412 +observational 3.9759363311718 3.03974915897077 3.10458667846607 3.56104608260405 2.36085400111802 1.36609165380237 3.2846635654062 6.63856778916652 2.77258872223978 3.34638914516716 2.2935443483419 +observational 2.66025953726586 2.61006979274201 2.36085400111802 5.87211778947542 4.24563400976833 1.870262530716 1.37624402526639 6.29526600143965 2.98568193770049 3.87743156065853 3.2188758248682 +observational 3.67882911826043 2.40694510831829 2.77258872223978 3.77734810210154 3.98527346716774 3.23080439573347 3.7864597824528 6.20657592672493 2.66025953726586 3.26575941076705 2.97552956623647 +observational 2.66025953726586 3.13983261752775 2.02419306744936 5.58724865840025 3.36384159511839 2.30258509299405 3.56953269648137 7.26752542782817 2.96010509591084 3.54385368206368 2.28442112236637 +observational 4.83628190695148 3.82209829790016 2.1770218700187 4.50645421304893 2.76000994003292 1.8531680973567 3.29212628660779 6.71901315438526 2.05923883436232 2.88480071284671 0 +observational 3.4626060097908 2.85070650150373 2.51769647261099 3.01553490085017 1.69009581545155 2.06812778177956 2.28442112236637 6.64639051484773 2.54160199346455 2.84490938381941 1.89761985992753 +observational 4.02891675689965 3.40784192438082 2.79728133483015 2.79728133483015 2.79728133483015 1.67335123817775 2.63188884013665 6.41345895716736 0.631271776841858 0.048790164169432 1.7263316639056 +observational 4.87519732320115 4.44382703557933 0.431782416425538 4.83628190695148 2.46809953147162 1.6094379124341 2.79728133483015 6.24222326545517 2.99573227355399 3.29953372788566 2.10413415427021 +observational 3.55248682920838 2.37954613413017 2.75366071235426 2.79116510781272 1.22377543162212 2.58776403522771 3.26575941076705 6.91671502035361 3.06805293513362 3.75185425327532 2.23108909128898 +observational 3.41772668361337 2.55722731136763 2.27521389619791 4.56954300834494 2.484906649788 0.672944473242426 1.53901544813755 4.33598269617247 0 4.19116874685764 1.25846098961001 +observational 2.15871472257434 3.03974915897077 2.27521389619791 2.68784749378469 3.56953269648137 2.30258509299405 2.77881927199042 6.26909628370626 0.970778917158225 3.75887182593397 4.3267781604434 +observational 3.8308129500026 2.77881927199042 0.871293365943419 2.82137888640921 3.81330703248899 2.96010509591084 3.64283551561253 6.58340922215876 2.71469474382088 3.34638914516716 2.19499988231411 +observational 4.0842942263686 3.49953328238302 2.65324196460721 2.34180580614733 2.23108909128898 2.484906649788 3.32862668882732 5.62040086571715 2.86789890204411 2.05923883436232 1.02604159583327 +observational 4.53367418428302 3.10458667846607 1.74571553072665 3.86702563949741 2.31253542384721 2.52572864430826 3.18221184049661 5.8111409929767 2.35137525716348 2.88480071284671 2.1770218700187 +observational 3.65065824129374 3.11351530921037 1.75440368268429 4.30811095172371 3.14845336057165 2.36085400111802 2.56494935746154 6.72743172485086 2.76000994003292 3.14845336057165 2.02419306744936 +observational 4.59612944133594 3.77734810210154 0 5.08140436498446 3.14845336057165 2.03339760317843 2.88480071284671 6.35957386867238 1.63705307946707 2.85070650150373 3.05870707271538 +observational 4.33598269617247 3.12236492448736 2.31253542384721 4.27249074760558 3.19458313229916 3.65065824129374 4.47960696301275 6.21460809842219 3.03974915897077 3.18221184049661 2.58021682959233 +observational 4.66343909411207 4.20020495292158 2.26695791535089 2.4932054526027 3.4626060097908 3.15700042115011 3.4626060097908 6.10702288774225 1.51072193949494 2.72785282839839 2.66025953726586 +observational 4.71849887129509 3.3357695763397 2.37954613413017 3.35340671782581 2.76000994003292 3.04927304048202 3.56953269648137 6.01615715969835 3.17387845893747 3.56104608260405 2.27521389619791 +observational 4.65396035015752 4.06560209335645 4.22683374526818 5.37063802812766 3.03013370027132 0.916290731874155 3.40119738166216 6.7093043402583 2.21266038546606 2.63188884013665 0.60431596685333 +observational 4.55071400019203 3.26575941076705 2.06812778177956 4.77068462446567 3.32862668882732 2.52572864430826 3.20274644293832 6.25958146406492 2.20386912005489 2.30258509299405 0.53062825106217 +observational 4.47049528266149 5.03043792139244 2.2935443483419 3.75887182593397 1.90657514365664 3.15700042115011 3.43720781918519 5.8111409929767 2.54160199346455 3.00568260440716 2.52572864430826 +observational 4.78749174278205 3.71357206670431 2.70805020110221 4.05698877567833 3.20274644293832 3.03974915897077 3.4904285153901 5.93753620508243 0 2.9391619220656 4.57779898919196 +observational 3.95699637107088 3.2188758248682 2.28442112236637 4.77912349311153 2.79116510781272 3.19458313229916 4.52396013056255 7.3664451483276 0.879626747502564 2.51769647261099 4.06560209335645 +observational 2.9704144655697 3.27336401015227 2.01490302054226 3.06805293513362 4.54223038621422 1.24126858906963 2.61739583283408 6.78219205600679 3.11351530921037 3.73289633953071 2.56494935746154 +observational 4.52396013056255 3.36384159511839 2.20386912005489 1.24126858906963 3.14845336057165 2.72785282839839 3.43720781918519 6.06145691892802 2.37954613413017 2.23964529322017 0.667829372575655 +observational 4.89034912822175 3.96651119071222 1.48387468945875 4.53367418428302 3.45315712059287 0.819779831493311 2.42480272571829 6.8627579130514 2.89591193827178 3.2188758248682 1.80828877117927 +observational 3.45315712059287 2.81540871942271 2.50143595173921 2.86220088092947 2.70136121295141 1.90657514365664 3.05870707271538 6.69208374250663 2.05027016437956 2.28442112236637 2.51769647261099 +observational 4.05698877567833 2.97552956623647 2.60268968544438 3.50855589998265 1.88858365386359 3.80443779474821 4.37071287477361 6.83625927727707 2.76000994003292 3.07731226054641 2.61739583283408 +observational 4.254193263164 3.23867845216438 1.19694818938897 2.45958884180371 1.75440368268429 3.00568260440716 3.25424296870549 5.64897423816121 3.42751468997953 4.0842942263686 2.53369681395743 +observational 4.20020495292158 3.15700042115011 0 4.82028156560504 2.70136121295141 2.4423470353692 2.84490938381941 6.13339804299665 3.62434093297637 4.0842942263686 3.05870707271538 +observational 3.45315712059287 2.51769647261099 3.41772668361337 3.9759363311718 2.75366071235426 2.86220088092947 3.56953269648137 5.80211837537706 3.16547504814109 3.59731226058845 2.26695791535089 +observational 4.46129981556839 3.18221184049661 1.51951320490611 2.76000994003292 2.9338568698359 3.42751468997953 4.02891675689965 6.60258789218934 2.43361335540045 2.87919845729804 1.31372366828506 +observational 4.77068462446567 3.4626060097908 2.75366071235426 2.7408400239252 3.27336401015227 1.38629436111989 2.82137888640921 6.44888939414686 2.2935443483419 2.40694510831829 1.98787434815435 +observational 4.11903717481247 2.82137888640921 1.65441127807683 4.65396035015752 3.13113691056019 1.74571553072665 3.3178157727231 5.98141421125448 3.2188758248682 3.25424296870549 1.78170913337455 +observational 3.55248682920838 2.77881927199042 2.46809953147162 3.8416005411316 3.02042488614436 2.82137888640921 2.73436750941958 5.83773044716594 2.66025953726586 3.11351530921037 2.21266038546606 +observational 3.35340671782581 2.86220088092947 2.02419306744936 4.55071400019203 1.92424865227413 3.03974915897077 4.28082412916472 4.74493212836325 1.79840401194672 3.95699637107088 4.21803603456465 +observational 3.23867845216438 2.51769647261099 3.13983261752775 3.65065824129374 2.7408400239252 3.23867845216438 3.59731226058845 6.05443934626937 2.56494935746154 3.00568260440716 2.58021682959233 +observational 3.44361809754611 3.35340671782581 2.58776403522771 1.97823903617067 0.113328685307003 0.774727167552368 2.26695791535089 5.5683445037611 2.50143595173921 1.06125650212434 1.55603713570699 +observational 4.74493212836325 3.66867674679642 2.01490302054226 4.19116874685764 2.41591377830105 3.12236492448736 3.3178157727231 5.52146091786225 3.58905911883173 4.05698877567833 2.80336038090653 +observational 4.33598269617247 3.72328088083127 2.91235066461494 5.63835466933375 4.22683374526818 2.2213750375685 3.06805293513362 6.50279004591562 2.79728133483015 3.38099467434464 2.65324196460721 +observational 4.59612944133594 3.35340671782581 2.18605127673809 5.2257466737132 2.36085400111802 2.96010509591084 3.4904285153901 6.60258789218934 3.23867845216438 3.29212628660779 2.02419306744936 +observational 4.30811095172371 3.04927304048202 1.24126858906963 2.31253542384721 3.2188758248682 2.61739583283408 2.81540871942271 6.18826412308259 2.33214389523559 2.50959926237837 2.36085400111802 +observational 4.53367418428302 3.43720781918519 2.36085400111802 4.91998092582813 3.15700042115011 2.79116510781272 3.24649099190117 6.04500531403601 2.26695791535089 3.13983261752775 1.63705307946707 +observational 2.31253542384721 3.10458667846607 3.05870707271538 3.56953269648137 2.7408400239252 1.51072193949494 2.23108909128898 5.88332238848828 2.56494935746154 3.29953372788566 2.83321334405622 +observational 3.3178157727231 3.66867674679642 2.35137525716348 2.50959926237837 1.25846098961001 2.05923883436232 2.85070650150373 6.59304453414244 1.66392609771817 3.52636052461616 4.95582705760126 +observational 2.53369681395743 3.02042488614436 2.37954613413017 5.4249500174814 3.36384159511839 2.56494935746154 3.23867845216438 6.24222326545517 2.68102152871429 3.00568260440716 2.96010509591084 +observational 4.60517018598809 3.34638914516716 3.29953372788566 5.37063802812766 4.20916023665068 3.26575941076705 3.42751468997953 5.80211837537706 3.24649099190117 3.62434093297637 2.36085400111802 +observational 3.16547504814109 3.17387845893747 0 6.00881318544259 3.76815263500844 1.75440368268429 2.86789890204411 7.28550654852279 2.47653840011748 3.03013370027132 1.2947271675944 +observational 4.31748811353631 3.21084365317094 2.2935443483419 2.80336038090653 4.47960696301275 2.76000994003292 3.43720781918519 6.06145691892802 0.542324290825362 0.970778917158225 0.99694863489161 +observational 4.00186370942794 3.8416005411316 2.88480071284671 3.18221184049661 2.83321334405622 3.2188758248682 3.50855589998265 5.82008293035236 2.90690105984738 3.3178157727231 1.870262530716 +observational 3.96651119071222 3.35340671782581 1.7630170003624 4.52396013056255 2.86789890204411 2.10413415427021 2.61006979274201 6.52941883826223 2.90690105984738 3.20274644293832 2.46809953147162 +observational 4.29045944114839 3.02042488614436 2.80336038090653 2.19499988231411 1.75440368268429 2.70136121295141 3.53514535417189 5.6021188208797 1.24990173621434 0.854415328156068 2.01490302054226 +observational 3.32862668882732 2.86220088092947 1.7263316639056 2.35137525716348 3.60549784517489 3.49953328238302 3.79548918917219 6.44888939414686 2.79116510781272 3.27336401015227 2.56494935746154 +observational 4.48863636973214 4.3528552573736 2.70136121295141 3.23080439573347 3.54385368206368 2.46809953147162 3.13113691056019 6.08904487544685 0 2.14124194258528 2.26695791535089 +observational 2.41591377830105 0.60431596685333 2.71469474382088 3.21084365317094 4.11087386417331 1.51951320490611 3.01553490085017 6.45833828334479 2.76000994003292 2.98568193770049 1.92424865227413 +observational 4.71849887129509 3.4904285153901 2.91235066461494 3.41772668361337 2.03339760317843 2.12226153886276 2.50959926237837 6.08904487544685 2.86789890204411 3.04927304048202 1.4036429994545 +observational 3.36384159511839 3.01553490085017 2.90690105984738 3.23080439573347 2.46809953147162 1.63705307946707 3.02042488614436 3.13983261752775 2.99573227355399 3.29212628660779 2.68102152871429 +observational 2.54160199346455 2.61739583283408 2.92316158071916 4.01096295328305 3.15700042115011 2.2213750375685 2.70805020110221 6.47543271670409 2.79116510781272 2.87919845729804 1.66392609771817 +observational 4.0926765051214 3.20274644293832 2.67414864942653 4.20916023665068 3.06805293513362 3.38099467434464 3.87743156065853 6.14418563412565 2.9391619220656 3.21084365317094 0.593326845277734 +observational 3.38099467434464 2.81540871942271 1.62727783056243 3.2846635654062 3.89385903480047 1.65441127807683 3.3357695763397 6.58340922215876 1.65441127807683 2.30258509299405 3.67882911826043 +observational 3.85862222870103 3.50855589998265 2.54160199346455 5.66642668811243 4.0842942263686 2.55722731136763 3.45315712059287 6.25958146406492 1.87946504964716 2.40694510831829 3.09557760852371 +observational 2.61006979274201 2.16791018966744 2.56494935746154 3.66867674679642 3.2188758248682 2.91235066461494 3.40784192438082 5.93753620508243 2.75366071235426 3.63495111208838 2.16791018966744 +observational 4.66343909411207 4.68213122712422 1.53901544813755 2.3887627892351 3.08648663682246 2.36085400111802 3.13113691056019 5.98141421125448 3.4904285153901 3.88567903008854 3.00568260440716 +observational 3.67882911826043 2.58021682959233 2.21266038546606 4.19116874685764 1.69927861643389 2.51769647261099 3.24649099190117 6.20657592672493 2.9338568698359 3.35340671782581 2.16791018966744 +observational 4.47960696301275 4.00186370942794 1.69927861643389 2.76000994003292 1.39376637595859 2.35137525716348 3.38099467434464 6.47543271670409 1.23256026117785 3.12236492448736 4.11903717481247 +observational 3.38099467434464 2.77881927199042 2.33214389523559 3.04927304048202 1.06125650212434 2.36085400111802 3.02042488614436 6.10702288774225 1.42069578783722 1.96990565461153 1.54756250871601 +observational 4.28082412916472 3.87743156065853 2.68102152871429 4.63472898822964 3.19458313229916 3.2846635654062 3.69635146895264 5.98141421125448 2.86789890204411 3.14845336057165 1.03318448334565 +observational 3.60549784517489 2.61739583283408 2.3887627892351 5.13579843705026 2.89591193827178 2.77881927199042 3.67882911826043 6.12468339089421 3.02042488614436 3.23867845216438 1.84371920815877 +observational 4.69134788222914 3.81330703248899 2.61739583283408 2.80336038090653 2.40694510831829 2.4423470353692 3.10458667846607 6.26909628370626 1.14103300455206 2.03339760317843 3.31054301339402 +observational 3.31054301339402 2.98568193770049 3.23867845216438 6.26909628370626 4.53367418428302 3.03974915897077 3.62434093297637 5.95324333428778 1.26694760348732 2.77258872223978 4.66343909411207 +observational 3.25424296870549 3.40784192438082 1.89761985992753 5.66642668811243 2.61006979274201 2.23108909128898 3.00568260440716 6.36818718635049 2.97552956623647 3.53514535417189 2.55722731136763 +observational 2.77258872223978 2.05027016437956 0 5.47646355193151 3.40784192438082 2.45958884180371 3.01553490085017 6.33150184989369 0.307484699747961 0.2390169004705 0.0582689081239758 +observational 4.77068462446567 4.03777421073371 2.58021682959233 3.21084365317094 3.64283551561253 4.07414185490458 4.44382703557933 6.68336094576627 2.61739583283408 3.03013370027132 2.13179677201376 +observational 3.59731226058845 2.89591193827178 2.20386912005489 4.78749174278205 3.4904285153901 1.21491274436427 3.20274644293832 5.03695260241363 2.61739583283408 2.96010509591084 1.80828877117927 +observational 3.56953269648137 2.68102152871429 2.08691355651854 2.34180580614733 2.67414864942653 3.19458313229916 3.4904285153901 5.8636311755981 2.98568193770049 3.52636052461616 2.50143595173921 +observational 3.53514535417189 2.82137888640921 2.67414864942653 2.85070650150373 2.50959926237837 3.9926809084456 4.90527477843843 7.94200680848986 2.46809953147162 3.40784192438082 4.93447393313069 +observational 2.62466859216316 2.96010509591084 2.73436750941958 4.45201900649392 2.94968833505258 3.03013370027132 3.9759363311718 6.57507584059962 1.30291275218084 3.09557760852371 4.21803603456465 +observational 4.19116874685764 3.10458667846607 1.50185270175416 5.08140436498446 3.50855589998265 3.52636052461616 3.9759363311718 5.83773044716594 2.77881927199042 3.67882911826043 2.9338568698359 +observational 3.47196645255036 2.70136121295141 2.68102152871429 2.37024374146786 2.1770218700187 2.64617479738412 3.26575941076705 5.79301360838414 2.55722731136763 3.04927304048202 1.71739505393919 +observational 2.16791018966744 2.98568193770049 2.13179677201376 4.02891675689965 3.39114704580865 2.72785282839839 2.94968833505258 6.06145691892802 3.63495111208838 4.21803603456465 3.3178157727231 +observational 4.63472898822964 3.17387845893747 2.2213750375685 5.15329159449778 6.1527326947041 2.76000994003292 3.53514535417189 5.45958551414416 2.9391619220656 3.72328088083127 2.54160199346455 +observational 4.58700621536042 3.50855589998265 2.30258509299405 2.91235066461494 3.04927304048202 2.33214389523559 2.76000994003292 6.42162226780652 0 3.43720781918519 0.783901543828409 +observational 3.2188758248682 2.68102152871429 3.60549784517489 3.76815263500844 2.63188884013665 2.52572864430826 2.77258872223978 6.34035930372775 2.66025953726586 2.86789890204411 1.89761985992753 +observational 4.70048036579242 3.60549784517489 3.4904285153901 3.80443779474821 1.95160817016995 2.11384296839717 2.86789890204411 4.85981240436167 2.20386912005489 2.08691355651854 1.63705307946707 +observational 4.06560209335645 2.9338568698359 2.60268968544438 3.32862668882732 2.50143595173921 2.57261223020711 3.23080439573347 7.53743003658651 3.45315712059287 3.85862222870103 2.62466859216316 +observational 3.03974915897077 2.10413415427021 2.62466859216316 2.70805020110221 2.14943391349987 2.9391619220656 3.4626060097908 5.84643877505772 2.80336038090653 2.96010509591084 0.357674444271816 +observational 4.65396035015752 4.07414185490458 2.4932054526027 3.71357206670431 3.7864597824528 2.40694510831829 3.26575941076705 6.31354804627709 2.56494935746154 3.23080439573347 1.69009581545155 +observational 4.17284762371004 3.38099467434464 2.87919845729804 4.69134788222914 3.53514535417189 1.4655675420144 2.27521389619791 5.93753620508243 2.71469474382088 2.61006979274201 1.04380405217311 +observational 4.47960696301275 3.2188758248682 3.8308129500026 4.12874598893943 2.1770218700187 1.9154509415706 2.55722731136763 6.74641212857337 2.72785282839839 3.26575941076705 1.96990565461153 +observational 4.23700086262362 2.89591193827178 1.63705307946707 4.79579054559674 3.19458313229916 2.14943391349987 3.6163087612791 5.2257466737132 2.99573227355399 3.14845336057165 2.68784749378469 +observational 3.94931879017184 3.35340671782581 2.63188884013665 2.79116510781272 2.05027016437956 3.40784192438082 4.07414185490458 7.44716835960004 3.06805293513362 3.3357695763397 1.09861228866811 +observational 3.34638914516716 3.01553490085017 2.77881927199042 2.51769647261099 0.854415328156068 1.708377860289 2.83321334405622 5.75574221358691 2.92316158071916 3.29953372788566 1.79009141212736 +observational 3.81330703248899 3.06805293513362 2.73436750941958 4.74493212836325 3.38099467434464 1.37624402526639 4.10098910494077 6.62936325343745 2.08691355651854 2.61739583283408 3.05870707271538 +observational 5.05624580534831 4.30000279919529 2.3887627892351 2.77258872223978 3.70622809244855 2.37024374146786 2.91235066461494 5.8111409929767 3.13983261752775 3.52636052461616 1.84371920815877 +observational 3.45315712059287 3.20274644293832 2.61739583283408 2.28442112236637 2.07819075977818 0.86288995514704 1.95160817016995 4.76217393479776 3.3357695763397 3.69635146895264 2.67414864942653 +observational 4.93447393313069 3.62434093297637 3.9926809084456 4.38949864951258 3.02042488614436 2.16791018966744 3.23080439573347 5.93753620508243 2.40694510831829 2.84490938381941 1.80828877117927 +observational 4.03777421073371 3.51749783735832 1.16938135955632 4.94875989037817 3.6609942506244 1.708377860289 3.26575941076705 6.24222326545517 0.350656871613169 4.50645421304893 2.13179677201376 +observational 4.38077585277223 3.4626060097908 2.70805020110221 3.20274644293832 3.03974915897077 3.15700042115011 4.45201900649392 6.880384082186 2.11384296839717 3.01553490085017 0 +observational 3.90399083373088 2.40694510831829 2.23964529322017 2.70136121295141 0 0.828551817566148 2.05923883436232 6.31354804627709 2.96010509591084 3.58905911883173 2.68784749378469 +observational 4.37071287477361 3.42751468997953 1.74571553072665 4.78749174278205 3.24649099190117 3.6163087612791 3.87743156065853 6.47543271670409 2.41591377830105 2.61739583283408 1.59127394180643 +observational 3.59731226058845 3.07731226054641 3.75185425327532 4.27249074760558 2.53369681395743 2.40694510831829 3.12236492448736 5.92692602597041 2.75366071235426 3.38099467434464 2.40694510831829 +observational 3.91202300542815 2.56494935746154 0.936093359170335 2.39789527279837 3.62434093297637 1.15057202759882 2.30258509299405 5.17048399503815 2.90690105984738 3.43720781918519 2.26695791535089 +observational 3.03013370027132 3.51749783735832 2.73436750941958 2.72785282839839 2.54160199346455 3.4904285153901 3.91202300542815 6.1527326947041 2.35137525716348 2.68784749378469 1.32175583998232 +observational 4.07414185490458 3.11351530921037 2.7408400239252 3.14845336057165 2.86220088092947 1.5830939370945 1.83418018511201 5.61312810638807 2.72785282839839 3.17387845893747 1.53901544813755 +observational 3.95699637107088 2.68102152871429 1.89761985992753 4.40671924726425 2.09556092355972 2.09556092355972 2.98568193770049 6.27852142416584 1.43983512804792 2.63188884013665 2.70136121295141 +observational 4.46129981556839 3.39114704580865 2.47653840011748 4.18205014264121 2.50959926237837 3.31054301339402 3.85862222870103 5.4249500174814 2.45958884180371 3.04927304048202 0.845868267577609 +observational 4.5152454784601 4.01096295328305 2.10413415427021 3.07731226054641 2.45958884180371 2.94968833505258 3.52636052461616 6.03548143252476 2.47653840011748 2.7408400239252 2.24812890719799 +observational 3.48124008933569 2.67414864942653 2.47653840011748 2.80336038090653 3.87743156065853 3.09557760852371 3.6609942506244 5.83773044716594 1.18784342239605 3.32862668882732 4.47049528266149 +observational 4.05698877567833 3.48124008933569 2.56494935746154 4.54223038621422 3.13983261752775 1.51072193949494 3.47196645255036 7.71735127218533 3.36384159511839 3.26575941076705 0 +observational 4.18205014264121 2.98568193770049 2.23108909128898 3.10458667846607 3.12236492448736 3.01553490085017 3.81330703248899 6.84481547920826 2.484906649788 3.07731226054641 1.67335123817775 +observational 4.17284762371004 3.13113691056019 2.58021682959233 3.4626060097908 1.42069578783722 2.61739583283408 3.79548918917219 7.16857989726403 2.43361335540045 3.25424296870549 2.51769647261099 +observational 1.73518911773966 2.87919845729804 2.97552956623647 3.02042488614436 1.96009478404727 2.67414864942653 3.25424296870549 6.57507584059962 3.08648663682246 3.55248682920838 2.08691355651854 +observational 4.05698877567833 3.48124008933569 2.18605127673809 2.50143595173921 1.79840401194672 1.93441576962958 3.60549784517489 4.13676527810605 2.01490302054226 2.54160199346455 1.79009141212736 +observational 5.24174701505964 5.03043792139244 2.61006979274201 3.04927304048202 1.78170913337455 3.08648663682246 3.39114704580865 5.53338948872752 2.89591193827178 3.3178157727231 1.84371920815877 +observational 3.4626060097908 3.29212628660779 3.16547504814109 3.93963817246112 3.12236492448736 1.88858365386359 2.3887627892351 6.35088571671474 3.38099467434464 3.75185425327532 2.57261223020711 +observational 3.40119738166216 2.39789527279837 2.01490302054226 2.70136121295141 2.77258872223978 3.27336401015227 3.73289633953071 6.52941883826223 2.96010509591084 3.51749783735832 2.20386912005489 +observational 2.79728133483015 2.63188884013665 1.51951320490611 4.92725368515721 3.19458313229916 2.46809953147162 3.56104608260405 7.18690102041163 2.77258872223978 2.91235066461494 2.28442112236637 +observational 3.8416005411316 2.90690105984738 3.51749783735832 4.18205014264121 1.5830939370945 3.04927304048202 3.56104608260405 6.06145691892802 2.70805020110221 3.62434093297637 3.07731226054641 +observational 3.3178157727231 3.04927304048202 3.10458667846607 3.03013370027132 3.4626060097908 1.80828877117927 3.34638914516716 6.5206211275587 2.23964529322017 3.91202300542815 4.58700621536042 +observational 4.13676527810605 2.91235066461494 2.02419306744936 3.14845336057165 2.05027016437956 1.81645208181843 2.28442112236637 5.54126354515843 0.165514438477573 3.21084365317094 0.378436435720245 +observational 4.52396013056255 3.85014760171006 2.9391619220656 2.80336038090653 1.56444054650336 0.0769610411361284 1.55603713570699 3.23080439573347 1.95160817016995 3.77734810210154 4.66343909411207 +observational 3.92986292355648 3.40784192438082 0.357674444271816 5.82894561761021 4.01998014693324 2.36085400111802 2.94968833505258 5.82894561761021 3.62434093297637 4.23700086262362 2.83321334405622 +observational 3.98527346716774 2.68784749378469 3.4626060097908 3.8308129500026 2.61006979274201 3.08648663682246 3.93963817246112 6.81783057145415 2.34180580614733 3.00568260440716 1.98787434815435 +observational 4.62497281328427 3.42751468997953 2.20386912005489 4.56017282005736 2.92316158071916 1.43031124653666 2.84490938381941 6.43133108193348 1.79009141212736 2.7408400239252 1.5830939370945 +observational 4.28082412916472 3.66867674679642 3.04927304048202 2.68102152871429 3.01553490085017 1.87946504964716 2.50143595173921 6.16961073249146 2.64617479738412 3.03013370027132 2.36085400111802 +observational 4.46129981556839 3.43720781918519 3.32862668882732 4.58700621536042 3.6163087612791 2.62466859216316 2.91235066461494 5.00394630594546 2.73436750941958 3.06805293513362 2.15871472257434 +observational 4.70048036579242 3.56104608260405 4.02891675689965 4.70953020131233 3.55248682920838 1.95160817016995 2.76000994003292 6.00881318544259 2.68784749378469 1.67335123817775 2.07819075977818 +observational 3.75185425327532 3.18221184049661 1.80828877117927 3.01553490085017 3.90399083373088 1.53901544813755 2.58776403522771 6.14418563412565 2.68784749378469 2.64617479738412 0.500775287912489 +observational 2.2935443483419 3.23867845216438 2.50959926237837 3.17387845893747 3.85014760171006 3.03013370027132 3.40119738166216 5.98141421125448 1.90657514365664 2.92316158071916 3.86702563949741 +observational 4.66343909411207 3.9926809084456 1.97823903617067 2.80336038090653 4.14630430115281 1.25846098961001 1.44926916028128 5.93753620508243 2.92316158071916 3.31054301339402 1.708377860289 +observational 3.55248682920838 2.84490938381941 2.51769647261099 3.4904285153901 2.70805020110221 2.61006979274201 3.07731226054641 6.38687931936265 2.33214389523559 2.77258872223978 1.04380405217311 +observational 1.43983512804792 2.02419306744936 0.512823626428664 6.07993319509559 4.29045944114839 1.79840401194672 2.58021682959233 5.92692602597041 2.18605127673809 3.00568260440716 1.4747630091075 +observational 3.9926809084456 3.19458313229916 3.4626060097908 3.65065824129374 2.1770218700187 1.38629436111989 2.14943391349987 4.80402104473326 2.86220088092947 3.13113691056019 1.26694760348732 +observational 3.59731226058845 2.67414864942653 1.870262530716 3.98527346716774 2.98568193770049 1.6467336971778 2.23964529322017 5.53338948872752 2.26695791535089 2.18605127673809 1.32175583998232 +observational 4.3267781604434 2.9391619220656 3.66867674679642 3.52636052461616 2.28442112236637 1.93441576962958 3.01553490085017 6.06145691892802 2.52572864430826 2.83321334405622 1.49290409617815 +observational 3.38099467434464 3.10458667846607 1.79009141212736 4.52396013056255 2.66025953726586 2.86220088092947 3.51749783735832 5.87211778947542 3.00568260440716 2.89591193827178 0.73716406597672 +observational 3.90399083373088 2.77881927199042 2.88480071284671 3.08648663682246 2.57261223020711 2.01490302054226 3.62434093297637 6.54821910276237 2.65324196460721 3.20274644293832 2.07819075977818 +observational 1.55603713570699 2.9391619220656 1.77155676191054 5.20948615284142 3.51749783735832 2.96010509591084 3.40784192438082 5.92692602597041 3.06805293513362 3.35340671782581 2.60268968544438 +observational 4.02891675689965 3.6163087612791 2.4932054526027 4.3267781604434 3.43720781918519 2.82137888640921 3.59731226058845 5.92692602597041 2.58776403522771 2.03339760317843 1.57484646766448 +observational 4.44382703557933 3.35340671782581 0 5.0998664278242 0.970778917158225 2.39789527279837 2.97552956623647 5.92692602597041 1.77155676191054 1.55603713570699 1.30291275218084 +observational 2.65324196460721 2.73436750941958 2.51769647261099 2.64617479738412 2.32238772029023 0.963174317773006 2.4423470353692 5.95324333428778 2.92316158071916 3.58905911883173 2.9338568698359 +observational 4.78749174278205 4.04830062372069 2.43361335540045 3.66867674679642 4.07414185490458 3.00568260440716 3.10458667846607 5.78382518232974 2.62466859216316 3.56953269648137 4.54223038621422 +observational 3.8416005411316 3.03013370027132 2.94968833505258 3.26575941076705 2.79116510781272 3.04927304048202 3.4904285153901 6.00881318544259 4.14630430115281 4.47960696301275 3.31054301339402 +observational 3.39114704580865 3.03013370027132 2.4932054526027 5.53338948872752 3.77734810210154 2.23108909128898 2.96010509591084 7.05185562295589 2.58021682959233 3.26575941076705 2.37954613413017 +observational 4.38077585277223 3.26575941076705 1.07158361628019 3.81330703248899 1.93441576962958 2.36085400111802 3.25424296870549 6.25190388316589 3.01553490085017 3.32862668882732 1.5830939370945 +observational 2.75366071235426 3.39114704580865 3.75185425327532 4.42484663185681 3.94931879017184 2.92316158071916 4.34380542185368 8.49984355308112 2.81540871942271 3.3178157727231 2.61006979274201 +observational 5.00394630594546 4.70048036579242 3.17387845893747 4.38077585277223 4.40671924726425 2.03339760317843 3.42751468997953 7.23128700432762 2.76000994003292 3.2188758248682 2.25758772706331 +observational 4.45201900649392 3.17387845893747 3.3178157727231 3.53514535417189 2.83321334405622 2.9704144655697 3.3178157727231 5.72031177660741 2.60268968544438 2.80336038090653 2.34180580614733 +observational 3.95699637107088 3.6163087612791 2.86789890204411 3.51749783735832 2.7408400239252 1.82616089594539 3.13983261752775 6.8627579130514 2.62466859216316 2.88480071284671 2.03339760317843 +observational 5.07517381523383 5.05624580534831 2.81540871942271 5.03043792139244 3.23080439573347 3.24649099190117 3.48124008933569 5.74620319054015 3.14845336057165 3.3357695763397 1.34025042261848 +observational 4.59612944133594 2.97552956623647 2.1770218700187 2.88480071284671 3.68887945411394 3.13113691056019 3.70622809244855 6.06145691892802 2.56494935746154 2.70805020110221 0 +observational 3.44361809754611 2.94968833505258 2.14124194258528 3.09557760852371 2.88480071284671 2.87919845729804 3.51749783735832 5.87211778947542 2.37024374146786 2.92316158071916 1.9154509415706 +observational 2.66025953726586 3.09557760852371 2.91235066461494 2.43361335540045 0.518793793415168 3.11351530921037 3.66867674679642 6.05443934626937 2.18605127673809 2.85070650150373 1.16002091679675 +observational 4.47960696301275 3.96651119071222 2.24812890719799 2.68102152871429 2.11384296839717 3.55248682920838 4.03777421073371 5.99146454710798 3.03974915897077 3.6609942506244 2.65324196460721 +observational 3.6609942506244 3.00568260440716 2.75366071235426 2.79116510781272 0.254642218373581 2.21266038546606 4.3267781604434 7.26752542782817 3.49953328238302 3.92986292355648 2.19499988231411 +observational 5.16478597392351 3.89385903480047 2.05923883436232 2.05027016437956 3.26575941076705 2.85070650150373 3.52636052461616 5.74620319054015 2.65324196460721 2.68102152871429 1.08856195281461 +observational 4.8283137373023 4.11087386417331 3.13983261752775 3.72328088083127 2.35137525716348 2.19499988231411 4.11087386417331 6.77308037565554 2.63188884013665 2.75366071235426 1.08856195281461 +observational 3.27336401015227 2.61739583283408 2.81540871942271 4.58700621536042 3.05870707271538 2.4423470353692 3.42751468997953 6.1527326947041 1.41098697371026 3.59731226058845 4.99043258677874 +observational 3.9926809084456 3.10458667846607 2.24812890719799 5.00394630594546 2.66025953726586 2.60268968544438 3.13113691056019 6.8627579130514 0.908258560176891 1.09861228866811 1.28647402583768 +observational 2.58021682959233 1.9154509415706 1.82616089594539 5.00394630594546 3.3178157727231 3.4904285153901 3.92986292355648 6.03548143252476 3.23080439573347 3.29212628660779 2.30258509299405 +observational 2.99573227355399 3.13983261752775 1.7263316639056 4.8283137373023 3.74242022104197 3.79548918917219 4.48863636973214 7.52833176670725 1.6467336971778 2.66025953726586 1.23256026117785 +observational 3.4904285153901 3.03974915897077 2.26695791535089 4.07414185490458 2.4423470353692 2.45958884180371 2.92316158071916 6.31354804627709 2.54160199346455 2.85070650150373 2.43361335540045 +observational 3.41772668361337 3.87743156065853 2.35137525716348 3.9926809084456 2.77258872223978 2.68784749378469 3.4904285153901 6.19644412779452 2.82137888640921 2.96010509591084 2.23108909128898 +observational 4.3267781604434 3.35340671782581 1.18784342239605 2.37024374146786 1.98787434815435 3.03974915897077 3.55248682920838 5.79301360838414 2.63188884013665 3.35340671782581 1.89761985992753 +observational 3.92197333628131 2.99573227355399 2.58776403522771 5.18738580584075 3.32862668882732 2.35137525716348 3.3357695763397 7.0604763659998 0 2.76000994003292 0 +observational 3.55248682920838 3.01553490085017 2.72785282839839 3.03013370027132 2.68784749378469 3.48124008933569 4.05698877567833 6.96129604591017 2.79728133483015 3.04927304048202 1.94304891677428 +observational 3.42751468997953 2.50959926237837 2.68102152871429 2.62466859216316 0.746687947487975 1.4747630091075 2.92316158071916 5.90808293816893 1.08856195281461 0 0.819779831493311 +observational 4.02891675689965 3.31054301339402 2.19499988231411 4.94875989037817 3.44361809754611 2.37024374146786 3.04927304048202 6.22455842927536 2.61006979274201 2.7408400239252 1.61938824328727 +observational 2.79116510781272 2.23108909128898 2.86789890204411 3.23080439573347 4.12874598893943 2.33214389523559 3.51749783735832 6.08904487544685 0.27763173659828 1.75440368268429 1.92424865227413 +observational 2.9391619220656 1.78170913337455 2.4423470353692 5.14749447681345 3.24649099190117 0.727548607277278 2.62466859216316 6.26909628370626 2.02419306744936 2.41591377830105 2.484906649788 +observational 3.89385903480047 2.2935443483419 2.62466859216316 3.14845336057165 3.79548918917219 2.09556092355972 3.8416005411316 5.55682806169954 3.10458667846607 3.67882911826043 3.25424296870549 +observational 3.01553490085017 2.70805020110221 0.774727167552368 5.54907608489522 3.01553490085017 1.51072193949494 2.1770218700187 3.4626060097908 2.37024374146786 2.4423470353692 2.58776403522771 +observational 3.17387845893747 3.51749783735832 3.16547504814109 2.88480071284671 2.40694510831829 2.20386912005489 2.77258872223978 6.34035930372775 2.63188884013665 2.7408400239252 2.03339760317843 +observational 4.26267987704132 3.10458667846607 2.9391619220656 3.03013370027132 2.30258509299405 3.34638914516716 3.60549784517489 6.75460409948796 2.32238772029023 1.73518911773966 1.68268837417369 +observational 3.31054301339402 3.18221184049661 2.30258509299405 3.06805293513362 2.86220088092947 2.4932054526027 3.29953372788566 6.39526159811545 2.97552956623647 3.60549784517489 2.12226153886276 +observational 3.23080439573347 3.34638914516716 2.56494935746154 2.79116510781272 3.65065824129374 1.80828877117927 2.82137888640921 6.48463523563525 1.79840401194672 2.99573227355399 4.79579054559674 +observational 2.53369681395743 3.26575941076705 2.40694510831829 4.15575319035074 3.34638914516716 2.43361335540045 4.13676527810605 6.12468339089421 2.92316158071916 4.55071400019203 6.24222326545517 +observational 5.10594547390058 3.62434093297637 2.81540871942271 4.28082412916472 3.29953372788566 2.64617479738412 3.00568260440716 5.4971682252932 2.72785282839839 2.71469474382088 0.636576829071551 +observational 4.16511363311031 3.29212628660779 3.53514535417189 3.58905911883173 3.41772668361337 1.67335123817775 4.04830062372069 6.90775527898214 2.81540871942271 3.35340671782581 2.77258872223978 +observational 3.60549784517489 2.12226153886276 1.6094379124341 4.87519732320115 3.03013370027132 1.86252854011626 3.6609942506244 6.67329796776765 3.05870707271538 3.3178157727231 2.00552585872967 +observational 4.43438186500781 3.87743156065853 0 5.68357976733868 3.05870707271538 3.50855589998265 3.95699637107088 6.11589212548303 3.12236492448736 3.19458313229916 2.03339760317843 +observational 2.15871472257434 3.11351530921037 2.16791018966744 3.45315712059287 3.8416005411316 2.63188884013665 3.2188758248682 6.4393503711001 3.38099467434464 3.52636052461616 0.657520002916794 +observational 2.02419306744936 1.59127394180643 2.14943391349987 2.9338568698359 4.76217393479776 2.37024374146786 2.85070650150373 6.1527326947041 2.66025953726586 3.05870707271538 2.86220088092947 +observational 3.41772668361337 3.62434093297637 1.4655675420144 2.80336038090653 3.17387845893747 1.4747630091075 2.70136121295141 5.52146091786225 1.17865499634165 0.157003748809665 1.870262530716 +observational 2.06812778177956 3.07731226054641 2.07819075977818 5.10594547390058 3.8308129500026 3.11351530921037 3.60549784517489 6.07993319509559 3.00568260440716 3.03974915897077 2.13179677201376 +observational 1.96990565461153 2.79116510781272 1.02604159583327 2.4423470353692 2.4423470353692 2.99573227355399 3.32862668882732 6.14418563412565 3.44361809754611 4.26267987704132 3.20274644293832 +observational 4.66343909411207 3.53514535417189 0 5.34233425196481 3.45315712059287 2.24812890719799 2.7408400239252 6.04500531403601 2.23964529322017 2.37954613413017 2.32238772029023 +pkc 3.15700042115011 2.61006979274201 3.70622809244855 5.91889385427315 3.63495111208838 1.60140574073684 2.64617479738412 6.74641212857337 2.21266038546606 3.40119738166216 4.45201900649392 +pkc 2.80336038090653 2.68784749378469 2.70136121295141 4.38077585277223 3.63495111208838 1.01523067972906 1.94304891677428 5.36129216570943 0.593326845277734 2.13179677201376 3.93963817246112 +pkc 2.87919845729804 2.9391619220656 2.72785282839839 5.98141421125448 3.88567903008854 3.2188758248682 3.95699637107088 6.62007320653036 2.79116510781272 3.89385903480047 4.3267781604434 +pkc 1.77155676191054 2.14124194258528 3.36384159511839 3.26575941076705 1.98787434815435 4.29045944114839 4.71849887129509 7.10578612948127 0 3.03013370027132 3.85862222870103 +pkc 2.85070650150373 2.9391619220656 2.68102152871429 2.94968833505258 1.63705307946707 2.80336038090653 3.47196645255036 6.56526497003536 0 0 3.40784192438082 +pkc 3.85862222870103 3.68887945411394 3.03974915897077 3.07731226054641 2.76000994003292 4.39814601655377 4.79579054559674 7.53743003658651 1.98787434815435 3.3357695763397 4.53367418428302 +pkc 2.36085400111802 2.54160199346455 2.39789527279837 4.82028156560504 3.11351530921037 2.4423470353692 3.62434093297637 6.64639051484773 1.90657514365664 3.29953372788566 4.10098910494077 +pkc 2.33214389523559 2.70805020110221 3.6163087612791 3.55248682920838 2.68102152871429 4.48863636973214 4.89034912822175 6.00881318544259 2.71469474382088 3.8308129500026 4.44382703557933 +pkc 2.61739583283408 2.80336038090653 1.57484646766448 2.91235066461494 0.198850858745165 3.08648663682246 3.31054301339402 6.41345895716736 0.717839793150317 2.94968833505258 4.3267781604434 +pkc 3.23867845216438 2.88480071284671 3.10458667846607 2.84490938381941 2.86220088092947 2.61739583283408 3.13983261752775 6.40357419793482 3.44361809754611 3.82209829790016 4.28082412916472 +pkc 2.58021682959233 2.75366071235426 4.10098910494077 5.96357934361845 4.0926765051214 3.26575941076705 3.72328088083127 5.88332238848828 0 0.879626747502564 3.63495111208838 +pkc 4.15575319035074 3.92986292355648 3.48124008933569 3.17387845893747 1.39376637595859 5.01727983681492 5.51342874616498 8.19395302356374 2.70805020110221 3.50855589998265 3.73289633953071 +pkc 2.83321334405622 2.82137888640921 3.11351530921037 3.10458667846607 2.52572864430826 2.484906649788 3.11351530921037 6.30444880242198 2.86789890204411 3.20274644293832 3.59731226058845 +pkc 3.90399083373088 4.26267987704132 3.17387845893747 2.56494935746154 2.30258509299405 4.72738781871234 5.31811999384422 8.10409905614358 2.72785282839839 4.21803603456465 5.82894561761021 +pkc 3.01553490085017 2.92316158071916 3.9926809084456 5.77455154554441 4.00186370942794 3.93963817246112 4.3267781604434 5.45958551414416 3.00568260440716 3.63495111208838 3.82209829790016 +pkc 2.67414864942653 2.56494935746154 3.27336401015227 2.89591193827178 2.23108909128898 3.71357206670431 4.3267781604434 6.45833828334479 0 0.792992515529661 3.75185425327532 +pkc 3.60549784517489 3.13113691056019 1.74571553072665 0 2.73436750941958 3.58905911883173 4.12874598893943 7.49220304261874 2.86789890204411 3.51749783735832 3.73289633953071 +pkc 2.70136121295141 3.53514535417189 3.03013370027132 2.9338568698359 2.1770218700187 4.66343909411207 5.09375020080676 7.87929148508227 3.4626060097908 4.56017282005736 4.72738781871234 +pkc 4.62497281328427 4.39814601655377 1.80828877117927 3.27336401015227 3.17387845893747 4.81218435537242 5.37989735354046 7.51914995766982 1.34807314829969 1.75440368268429 3.80443779474821 +pkc 2.79728133483015 3.24649099190117 4.0926765051214 4.27249074760558 2.80336038090653 5.20948615284142 5.54907608489522 7.50163445788341 1.48387468945875 3.45315712059287 4.39814601655377 +pkc 3.13113691056019 2.70805020110221 1.31372366828506 0.00995033085316809 2.27521389619791 4.48863636973214 4.83628190695148 5.90808293816893 0.667829372575655 1.77155676191054 3.05870707271538 +pkc 4.38949864951258 4.46129981556839 4.17284762371004 5.68357976733868 3.29953372788566 3.85014760171006 4.11087386417331 6.19644412779452 3.13983261752775 3.64283551561253 3.96651119071222 +pkc 2.23108909128898 1.86252854011626 3.12236492448736 2.81540871942271 2.9338568698359 4.81218435537242 5.30826769740121 8.07713663853845 0.131028262406404 1.18784342239605 3.8308129500026 +pkc 2.65324196460721 2.30258509299405 4.46129981556839 6.14418563412565 4.54223038621422 3.63495111208838 3.9926809084456 6.09807428216624 3.75185425327532 4.50645421304893 5.99146454710798 +pkc 2.96010509591084 2.62466859216316 3.05870707271538 3.42751468997953 2.7408400239252 1.54756250871601 3.75887182593397 6.28785856016178 2.64617479738412 3.4626060097908 3.87743156065853 +pkc 3.50855589998265 2.97552956623647 2.65324196460721 2.96010509591084 2.54160199346455 5.06259503302697 5.36129216570943 5.8111409929767 2.87919845729804 3.44361809754611 3.55248682920838 +pkc 3.65065824129374 3.29953372788566 3.52636052461616 3.45315712059287 1.28647402583768 4.7361984483945 5.30826769740121 7.60936653795421 3.50855589998265 4.3528552573736 5.11799381241676 +pkc 4.0842942263686 4.31748811353631 3.12236492448736 3.37416870927424 1.32175583998232 3.47196645255036 3.75185425327532 6.42162226780652 1.21491274436427 2.86789890204411 4.38949864951258 +pkc 2.72785282839839 2.81540871942271 2.50143595173921 5.47646355193151 3.3357695763397 1.67335123817775 2.07819075977818 5.79301360838414 2.68102152871429 3.12236492448736 2.08691355651854 +pkc 3.07731226054641 3.48124008933569 3.03013370027132 3.53514535417189 1.71739505393919 4.57779898919196 5.16478597392351 7.87929148508227 3.42751468997953 4.01096295328305 4.33598269617247 +pkc 3.40119738166216 2.70136121295141 3.10458667846607 3.56953269648137 0.900161349944271 4.91998092582813 5.75574221358691 8.67060073804555 0 2.64617479738412 2.58021682959233 +pkc 3.45315712059287 2.56494935746154 3.27336401015227 3.6163087612791 0 3.13983261752775 3.56104608260405 7.15070145759253 1.8531680973567 1.67335123817775 3.92197333628131 +pkc 2.9338568698359 2.40694510831829 4.26267987704132 6.14418563412565 4.16511363311031 2.99573227355399 3.67882911826043 6.42162226780652 2.70136121295141 3.79548918917219 4.70048036579242 +pkc 2.03339760317843 3.3357695763397 1.9154509415706 2.89591193827178 2.05027016437956 3.85014760171006 4.16511363311031 7.00669522683704 3.16547504814109 3.82209829790016 3.80443779474821 +pkc 3.70622809244855 4.0926765051214 0.62057648772511 1.48387468945875 1.16002091679675 3.37416870927424 3.76815263500844 6.46769872610435 3.24649099190117 3.68887945411394 3.98527346716774 +pkc 3.08648663682246 3.3357695763397 4.43438186500781 5.99893656194668 4.33598269617247 4.8283137373023 5.2257466737132 7.35755620091035 1.41098697371026 2.24812890719799 3.41772668361337 +pkc 3.93963817246112 3.09557760852371 4.55071400019203 4.76217393479776 2.86789890204411 4.33598269617247 4.62497281328427 6.85329909318608 2.14943391349987 3.24649099190117 4.85981240436167 +pkc 3.41772668361337 2.7408400239252 3.9759363311718 4.95582705760126 2.94968833505258 4.3528552573736 5.01727983681492 7.91498300584839 4.55071400019203 5.18738580584075 5.79301360838414 +pkc 2.18605127673809 2.58776403522771 4.30811095172371 5.88332238848828 3.9926809084456 2.05027016437956 3.07731226054641 6.25190388316589 2.36085400111802 1.99741770620125 3.76815263500844 +pkc 3.6163087612791 2.94968833505258 2.46809953147162 2.98568193770049 1.96990565461153 2.18605127673809 2.83321334405622 6.37672694789863 0 0 3.79548918917219 +pkc 2.62466859216316 2.25758772706331 2.81540871942271 4.98360662170834 2.96010509591084 5.16478597392351 5.40717177146012 6.49375383985169 2.34180580614733 3.74242022104197 4.254193263164 +pkc 2.40694510831829 3.2188758248682 4.44382703557933 6.31354804627709 4.54223038621422 3.03974915897077 3.58073729549423 5.80211837537706 2.90690105984738 3.11351530921037 3.47196645255036 +pkc 2.84490938381941 1.9154509415706 3.36384159511839 3.37416870927424 2.40694510831829 2.43361335540045 3.42751468997953 6.31354804627709 1.32175583998232 1.4655675420144 3.80443779474821 +pkc 4.11903717481247 4.53367418428302 2.83321334405622 3.04927304048202 0.00995033085316809 1.44926916028128 2.71469474382088 6.39526159811545 3.17387845893747 3.65065824129374 4.66343909411207 +pkc 2.84490938381941 2.61739583283408 4.04830062372069 4.57779898919196 3.44361809754611 3.62434093297637 4.20020495292158 7.75319426988434 2.16791018966744 0.845868267577609 3.56104608260405 +pkc 2.82137888640921 3.8308129500026 2.92316158071916 4.14630430115281 2.46809953147162 2.9391619220656 3.4626060097908 6.47543271670409 2.10413415427021 3.15700042115011 3.92986292355648 +pkc 2.4932054526027 2.35137525716348 3.05870707271538 2.9391619220656 1.44926916028128 5.17048399503815 6.18001665365257 9.03049574505712 2.71469474382088 2.20386912005489 3.98527346716774 +pkc 2.85070650150373 3.27336401015227 4.41642806139121 6.02586597382531 4.66343909411207 3.68887945411394 4.17284762371004 6.92559519711047 2.56494935746154 3.03974915897077 3.3178157727231 +pkc 3.06805293513362 3.10458667846607 4.29045944114839 6.25190388316589 4.47049528266149 1.31372366828506 2.50959926237837 6.74641212857337 0.27002713721306 3.49953328238302 2.3887627892351 +pkc 3.24649099190117 2.76000994003292 3.53514535417189 3.62434093297637 1.06125650212434 1.65441127807683 3.00568260440716 6.04500531403601 0 4.16511363311031 2.11384296839717 +pkc 2.57261223020711 2.45958884180371 3.07731226054641 4.88280192258637 3.74242022104197 3.59731226058845 3.89385903480047 6.29526600143965 0.0769610411361284 1.77155676191054 2.58021682959233 +pkc 3.7864597824528 3.37416870927424 3.67882911826043 4.77912349311153 4.14630430115281 3.60549784517489 3.86702563949741 5.89989735358249 1.25846098961001 1.9154509415706 3.40784192438082 +pkc 3.64283551561253 2.65324196460721 1.96009478404727 3.3357695763397 2.19499988231411 5.14749447681345 5.4510384535657 6.98007594056176 2.14943391349987 3.24649099190117 4.04830062372069 +pkc 3.47196645255036 3.56104608260405 3.58073729549423 5.62040086571715 4.11087386417331 3.80443779474821 4.13676527810605 6.03548143252476 2.13179677201376 3.4904285153901 4.34380542185368 +pkc 3.54385368206368 2.9338568698359 3.9926809084456 5.74620319054015 4.00186370942794 2.77881927199042 3.53514535417189 6.55677835615804 0 2.61739583283408 2.08691355651854 +pkc 1.60140574073684 2.53369681395743 3.86702563949741 4.05698877567833 2.97552956623647 1.23256026117785 2.94968833505258 6.48463523563525 2.9704144655697 3.75887182593397 4.13676527810605 +pkc 3.34638914516716 3.4626060097908 4.0842942263686 5.54907608489522 4.04830062372069 1.83418018511201 2.84490938381941 5.94542060860658 2.35137525716348 2.9391619220656 4.04830062372069 +pkc 4.24563400976833 3.91202300542815 3.03013370027132 2.9704144655697 2.50959926237837 4.0842942263686 4.64439089914137 5.82008293035236 3.53514535417189 4.28082412916472 4.93447393313069 +pkc 3.47196645255036 3.05870707271538 4.64439089914137 6.25190388316589 4.47049528266149 3.82209829790016 4.11903717481247 7.15929190479756 3.09557760852371 3.53514535417189 3.75185425327532 +pkc 3.40119738166216 3.48124008933569 2.83321334405622 3.09557760852371 2.01490302054226 3.90399083373088 4.46129981556839 7.02464903045364 3.13983261752775 3.68887945411394 3.85014760171006 +pkc 3.70622809244855 2.9704144655697 0.231111720963387 0.0676586484738149 0.438254930931155 4.3528552573736 4.39814601655377 5.63121178182137 2.04122032885964 2.56494935746154 4.17284762371004 +pkc 3.09557760852371 2.84490938381941 3.49953328238302 2.68102152871429 2.83321334405622 3.29212628660779 3.31054301339402 6.07073772800249 3.23867845216438 4.13676527810605 5.44241771052179 +pkc 3.14845336057165 2.484906649788 4.01096295328305 5.5683445037611 4.17284762371004 2.50959926237837 4.0926765051214 8.01400499477946 2.83321334405622 3.29953372788566 3.92197333628131 +pkc 3.20274644293832 2.9704144655697 3.03974915897077 2.84490938381941 2.57261223020711 1.34807314829969 2.67414864942653 7.09672137849476 2.43361335540045 2.75366071235426 4.34380542185368 +pkc 4.29045944114839 4.54223038621422 3.32862668882732 3.39114704580865 0.00995033085316809 4.48863636973214 4.88280192258637 7.47420480649612 2.47653840011748 3.34638914516716 2.4932054526027 +pkc 3.13983261752775 2.37024374146786 2.87919845729804 4.38949864951258 1.30291275218084 3.10458667846607 3.42751468997953 6.18001665365257 2.15871472257434 3.34638914516716 3.87743156065853 +pkc 3.03013370027132 2.54160199346455 3.03974915897077 3.23867845216438 2.28442112236637 2.88480071284671 3.2188758248682 6.44888939414686 1.34807314829969 2.07819075977818 3.8308129500026 +pkc 2.64617479738412 2.23108909128898 2.90690105984738 1.21491274436427 3.38099467434464 4.71849887129509 5.08140436498446 6.84481547920826 2.14124194258528 2.79116510781272 3.8308129500026 +pkc 2.77881927199042 1.83418018511201 3.00568260440716 2.85070650150373 2.1770218700187 4.31748811353631 4.8283137373023 7.54644627374602 2.94968833505258 3.62434093297637 4.15575319035074 +pkc 3.09557760852371 2.76000994003292 3.05870707271538 3.47196645255036 2.19499988231411 1.34807314829969 3.10458667846607 5.79301360838414 0.385262400790645 1.97823903617067 3.88567903008854 +pkc 3.80443779474821 3.82209829790016 2.77881927199042 2.82137888640921 2.33214389523559 3.37416870927424 4.55071400019203 7.44716835960004 3.4904285153901 4.20020495292158 4.91998092582813 +pkc 4.13676527810605 3.95699637107088 3.58073729549423 5.4510384535657 3.89385903480047 5.11799381241676 5.6021188208797 7.69938940625674 1.92424865227413 2.50143595173921 3.7864597824528 +pkc 3.81330703248899 4.13676527810605 3.05870707271538 2.86220088092947 2.75366071235426 4.18205014264121 4.56017282005736 7.26752542782817 2.56494935746154 3.27336401015227 3.58905911883173 +pkc 2.9704144655697 3.00568260440716 3.21084365317094 3.40784192438082 2.34180580614733 2.97552956623647 3.76815263500844 6.35088571671474 0.989541193613748 1.51951320490611 2.05027016437956 +pkc 2.87919845729804 2.79116510781272 2.66025953726586 4.45201900649392 2.83321334405622 3.02042488614436 3.49953328238302 6.82654522355659 3.77734810210154 4.12874598893943 4.12874598893943 +pkc 2.65324196460721 2.63188884013665 2.9391619220656 2.9704144655697 2.13179677201376 4.19116874685764 5.03695260241363 7.75319426988434 2.92316158071916 3.70622809244855 4.22683374526818 +pkc 4.34380542185368 3.76815263500844 3.9759363311718 5.64897423816121 4.10098910494077 4.02891675689965 4.70048036579242 7.47420480649612 3.09557760852371 3.21084365317094 4.39814601655377 +pkc 1.86252854011626 2.90690105984738 2.75366071235426 3.72328088083127 2.57261223020711 3.7864597824528 4.02891675689965 6.62007320653036 3.56953269648137 4.0842942263686 4.33598269617247 +pkc 2.66025953726586 2.91235066461494 1.61938824328727 0.559615787935423 2.09556092355972 3.43720781918519 4.07414185490458 6.00881318544259 2.9338568698359 3.85014760171006 3.88567903008854 +pkc 3.40784192438082 4.00186370942794 3.68887945411394 5.35185813347607 3.72328088083127 2.70136121295141 3.48124008933569 6.37672694789863 1.79009141212736 2.70805020110221 3.81330703248899 +pkc 2.60268968544438 3.08648663682246 3.56953269648137 3.70622809244855 2.06812778177956 3.80443779474821 4.63472898822964 8.14902386805177 0.165514438477573 2.92316158071916 4.06560209335645 +pkc 4.54223038621422 3.95699637107088 3.42751468997953 3.44361809754611 2.68102152871429 4.30811095172371 4.91998092582813 7.49220304261874 2.23964529322017 3.20274644293832 4.52396013056255 +pkc 3.20274644293832 2.26695791535089 3.62434093297637 3.69635146895264 2.89591193827178 3.56953269648137 4.86753445045558 7.92407232492342 3.60549784517489 3.90399083373088 4.0926765051214 +pkc 2.98568193770049 2.45958884180371 3.15700042115011 2.81540871942271 2.71469474382088 1.21491274436427 2.96010509591084 6.1527326947041 2.61739583283408 3.43720781918519 4.03777421073371 +pkc 3.40784192438082 2.98568193770049 3.19458313229916 2.98568193770049 0 3.91202300542815 4.28082412916472 6.51174532964473 3.6163087612791 4.12874598893943 4.5152454784601 +pkc 2.89591193827178 3.16547504814109 2.05027016437956 3.73289633953071 3.26575941076705 3.75887182593397 3.9926809084456 6.28785856016178 2.36085400111802 3.85014760171006 4.39814601655377 +pkc 2.62466859216316 2.58021682959233 3.48124008933569 3.8416005411316 2.70805020110221 4.64439089914137 5.14749447681345 7.46565531013406 3.01553490085017 3.42751468997953 4.14630430115281 +pkc 2.94968833505258 2.68102152871429 3.13113691056019 3.4904285153901 2.43361335540045 4.36182392735636 4.84418708645859 7.37525577800975 2.61006979274201 3.38099467434464 3.40119738166216 +pkc 2.99573227355399 2.79116510781272 3.2846635654062 5.17048399503815 2.30258509299405 4.66343909411207 5.12396397940326 7.85205020726589 2.23964529322017 2.11384296839717 2.63188884013665 +pkc 3.13983261752775 2.4423470353692 2.67414864942653 3.75185425327532 4.63472898822964 4.77912349311153 5.31811999384422 7.81601383915903 4.06560209335645 4.20916023665068 2.58021682959233 +pkc 3.23080439573347 3.35340671782581 2.90690105984738 4.11903717481247 2.79728133483015 2.91235066461494 3.18221184049661 6.57507584059962 1.90657514365664 4.19116874685764 4.88280192258637 +pkc 3.2188758248682 3.02042488614436 3.43720781918519 6.09807428216624 4.01096295328305 3.68887945411394 4.05698877567833 5.88332238848828 2.46809953147162 3.01553490085017 4.01998014693324 +pkc 2.83321334405622 1.95160817016995 3.07731226054641 3.19458313229916 2.15871472257434 3.49953328238302 3.7864597824528 6.62007320653036 2.60268968544438 3.63495111208838 3.63495111208838 +pkc 3.39114704580865 3.10458667846607 2.99573227355399 2.84490938381941 0.322083499169113 4.79579054559674 5.3890717298165 7.6004023345004 1.99741770620125 3.11351530921037 3.62434093297637 +pkc 3.11351530921037 2.86220088092947 3.17387845893747 4.3528552573736 2.86220088092947 3.56104608260405 4.02891675689965 5.82894561761021 1.4747630091075 3.2846635654062 3.85862222870103 +pkc 4.11087386417331 3.49953328238302 3.63495111208838 5.73979291217923 3.88567903008854 4.91998092582813 5.8636311755981 8.45489216521886 3.85014760171006 4.45201900649392 5.05624580534831 +pkc 2.85070650150373 2.31253542384721 3.3357695763397 3.32862668882732 1.18784342239605 3.80443779474821 4.19116874685764 5.99893656194668 1.96990565461153 3.16547504814109 3.75887182593397 +pkc 4.85981240436167 4.69134788222914 3.73289633953071 5.08140436498446 3.88567903008854 1.62727783056243 2.71469474382088 6.46769872610435 2.79116510781272 3.66867674679642 4.47960696301275 +pkc 3.05870707271538 2.79728133483015 3.04927304048202 3.11351530921037 2.80336038090653 1.24126858906963 3.23080439573347 6.35957386867238 1.96990565461153 3.58905911883173 3.87743156065853 +pkc 4.5152454784601 3.72328088083127 3.21084365317094 5.76519110278484 3.6609942506244 2.88480071284671 3.41772668361337 6.8627579130514 2.92316158071916 3.53514535417189 4.37071287477361 +pkc 2.68784749378469 3.10458667846607 3.3178157727231 3.58073729549423 2.60268968544438 2.23964529322017 3.02042488614436 5.94542060860658 0 2.55722731136763 2.62466859216316 +pkc 2.96010509591084 2.31253542384721 1.68268837417369 1.41098697371026 0.810930216216329 2.05027016437956 2.83321334405622 6.88959130835447 2.2213750375685 3.21084365317094 3.90399083373088 +pkc 3.34638914516716 3.07731226054641 3.64283551561253 5.13579843705026 3.6163087612791 3.39114704580865 3.67882911826043 6.53958595561767 2.2213750375685 2.86220088092947 4.23700086262362 +pkc 4.28082412916472 4.33598269617247 2.88480071284671 2.7408400239252 2.77881927199042 4.14630430115281 4.69134788222914 6.85329909318608 3.2188758248682 4.41642806139121 5.32300997913841 +pkc 1.87946504964716 2.32238772029023 2.82137888640921 3.13113691056019 0 4.41642806139121 4.72738781871234 6.5206211275587 2.67414864942653 3.03013370027132 4.0926765051214 +pkc 2.52572864430826 1.65441127807683 4.24563400976833 4.87519732320115 3.91202300542815 3.07731226054641 3.44361809754611 6.02586597382531 2.32238772029023 4.30811095172371 1.27815220250019 +pkc 3.4904285153901 2.90690105984738 3.15700042115011 3.13983261752775 1.19694818938897 3.98527346716774 4.44382703557933 6.41345895716736 2.35137525716348 3.56953269648137 3.9759363311718 +pkc 2.94968833505258 2.33214389523559 3.02042488614436 4.36182392735636 2.89591193827178 3.26575941076705 3.56104608260405 6.22455842927536 1.81645208181843 2.88480071284671 4.00186370942794 +pkc 3.20274644293832 2.46809953147162 3.40119738166216 3.42751468997953 2.68102152871429 3.4904285153901 3.87743156065853 5.89164421182577 1.16002091679675 1.16002091679675 3.92986292355648 +pkc 2.82137888640921 2.61006979274201 4.3267781604434 4.81218435537242 3.8308129500026 1.86252854011626 3.63495111208838 6.90775527898214 2.50143595173921 3.02042488614436 2.90690105984738 +pkc 1.96990565461153 2.83321334405622 3.16547504814109 3.14845336057165 1.67335123817775 3.24649099190117 3.71357206670431 6.19644412779452 2.68784749378469 3.35340671782581 4.00186370942794 +pkc 2.94968833505258 2.63188884013665 2.76000994003292 4.30811095172371 3.08648663682246 3.18221184049661 3.53514535417189 6.16120732169508 2.23964529322017 3.3178157727231 3.67882911826043 +pkc 3.02042488614436 3.03974915897077 2.85070650150373 4.78749174278205 2.72785282839839 2.45958884180371 3.18221184049661 6.46769872610435 2.20386912005489 2.77881927199042 3.92986292355648 +pkc 2.91235066461494 2.98568193770049 2.54160199346455 4.39814601655377 2.42480272571829 1.82616089594539 3.7864597824528 6.20657592672493 4.43438186500781 4.77912349311153 3.71357206670431 +pkc 3.03974915897077 2.1770218700187 3.03013370027132 5.7037824746562 3.44361809754611 2.9704144655697 3.6163087612791 6.29526600143965 2.92316158071916 3.37416870927424 3.89385903480047 +pkc 2.70136121295141 2.70805020110221 2.86789890204411 5.13579843705026 3.18221184049661 3.12236492448736 3.47196645255036 6.11589212548303 2.92316158071916 3.43720781918519 4.38077585277223 +pkc 2.77881927199042 2.66025953726586 2.18605127673809 3.75887182593397 3.04927304048202 2.83321334405622 3.40784192438082 6.54821910276237 2.2935443483419 3.04927304048202 3.65065824129374 +pkc 2.50959926237837 2.62466859216316 1.4036429994545 0.00995033085316809 0.500775287912489 3.27336401015227 3.62434093297637 6.66440902035041 0.182321556793955 3.3357695763397 3.29953372788566 +pkc 3.29212628660779 3.00568260440716 2.9704144655697 5.13579843705026 3.14845336057165 2.14124194258528 2.73436750941958 6.18826412308259 3.48124008933569 4.20916023665068 4.77068462446567 +pkc 4.87519732320115 4.56017282005736 2.50959926237837 5.24174701505964 2.80336038090653 3.60549784517489 4.12874598893943 6.98841318199959 3.09557760852371 3.51749783735832 4.24563400976833 +pkc 4.12874598893943 4.26267987704132 2.18605127673809 1.49290409617815 2.25758772706331 1.48387468945875 2.85070650150373 6.48463523563525 4.10098910494077 4.98360662170834 5.34233425196481 +pkc 3.40119738166216 2.33214389523559 3.2846635654062 3.09557760852371 2.73436750941958 2.42480272571829 3.04927304048202 6.31354804627709 1.69009581545155 2.56494935746154 3.53514535417189 +pkc 3.96651119071222 3.66867674679642 2.84490938381941 5.08140436498446 2.9704144655697 1.57484646766448 2.99573227355399 6.01615715969835 2.15871472257434 2.96010509591084 3.39114704580865 +pkc 4.31748811353631 3.96651119071222 3.74242022104197 5.55682806169954 3.67882911826043 3.01553490085017 3.72328088083127 6.53958595561767 2.87919845729804 4.06560209335645 4.10098910494077 +pkc 3.47196645255036 2.66025953726586 3.23080439573347 3.19458313229916 1.34807314829969 2.25758772706331 3.37416870927424 7.15070145759253 2.66025953726586 3.07731226054641 3.6609942506244 +pkc 2.90690105984738 2.98568193770049 2.66025953726586 2.92316158071916 0.631271776841858 0.56531380905006 0.00995033085316809 4.54223038621422 2.40694510831829 3.26575941076705 3.73289633953071 +pkc 2.61739583283408 3.23080439573347 2.68102152871429 4.99043258677874 2.63188884013665 2.9338568698359 3.8416005411316 6.65544035036765 4.04830062372069 4.87519732320115 5.19849703126583 +pkc 3.3178157727231 2.89591193827178 3.56953269648137 5.82894561761021 3.29212628660779 2.88480071284671 3.40119738166216 5.93753620508243 2.04122032885964 3.67882911826043 3.75887182593397 +pkc 2.83321334405622 2.3887627892351 3.12236492448736 4.20916023665068 2.60268968544438 3.52636052461616 3.85862222870103 6.4393503711001 3.27336401015227 3.18221184049661 4.45201900649392 +pkc 3.27336401015227 3.6163087612791 3.72328088083127 5.20948615284142 3.51749783735832 4.63472898822964 5.16478597392351 7.24064969425547 2.75366071235426 3.39114704580865 4.0926765051214 +pkc 2.98568193770049 3.01553490085017 3.08648663682246 3.23867845216438 0.951657875711446 4.21803603456465 4.64439089914137 6.00881318544259 0.300104592450338 3.3357695763397 3.86702563949741 +pkc 1.97823903617067 3.6609942506244 4.50645421304893 6.03548143252476 4.29045944114839 3.29212628660779 3.60549784517489 5.5683445037611 1.99741770620125 2.81540871942271 3.56953269648137 +pkc 4.97673374242057 4.47960696301275 3.05870707271538 3.42751468997953 2.55722731136763 5.06259503302697 5.57594910314632 8.14902386805177 2.70805020110221 3.34638914516716 3.90399083373088 +pkc 3.55248682920838 3.01553490085017 4.07414185490458 6.16120732169508 4.24563400976833 3.55248682920838 3.77734810210154 6.00881318544259 2.56494935746154 3.38099467434464 3.40784192438082 +pkc 3.44361809754611 2.94968833505258 3.03013370027132 4.70048036579242 3.29953372788566 3.71357206670431 4.42484663185681 6.70073110954781 3.24649099190117 3.66867674679642 4.07414185490458 +pkc 2.9704144655697 2.79116510781272 3.23867845216438 2.96010509591084 0.99694863489161 3.26575941076705 3.45315712059287 6.46769872610435 2.92316158071916 3.74242022104197 3.90399083373088 +pkc 2.9704144655697 2.71469474382088 2.67414864942653 2.61006979274201 1.28647402583768 2.58021682959233 3.38099467434464 6.25190388316589 3.56104608260405 4.24563400976833 3.87743156065853 +pkc 3.03974915897077 3.00568260440716 0 4.52396013056255 2.67414864942653 3.96651119071222 4.33598269617247 7.07834157955767 2.88480071284671 3.15700042115011 3.87743156065853 +pkc 3.09557760852371 2.46809953147162 2.14943391349987 2.31253542384721 2.47653840011748 3.12236492448736 3.51749783735832 6.19644412779452 3.02042488614436 2.77881927199042 3.9759363311718 +pkc 3.24649099190117 2.43361335540045 3.07731226054641 2.9704144655697 1.56444054650336 1.41098697371026 3.23867845216438 5.82894561761021 2.36085400111802 2.61006979274201 3.91202300542815 +pkc 3.42751468997953 2.99573227355399 3.59731226058845 3.88567903008854 1.49290409617815 3.77734810210154 4.20020495292158 6.98841318199959 3.44361809754611 4.21803603456465 5.41610040220442 +pkc 3.9759363311718 3.79548918917219 2.63188884013665 4.59612944133594 1.78170913337455 2.65324196460721 3.58905911883173 6.51174532964473 0 2.90690105984738 3.87743156065853 +pkc 2.80336038090653 2.51769647261099 3.3178157727231 3.26575941076705 0 1.43031124653666 2.96010509591084 6.67329796776765 2.86789890204411 3.3357695763397 3.9926809084456 +pkc 2.87919845729804 2.83321334405622 3.2846635654062 2.7408400239252 1.54756250871601 3.06805293513362 3.6609942506244 6.97073007814353 1.74571553072665 3.41772668361337 2.50959926237837 +pkc 4.30000279919529 3.67882911826043 3.24649099190117 3.41772668361337 2.84490938381941 4.00186370942794 4.39814601655377 6.40357419793482 3.45315712059287 4.01096295328305 4.70953020131233 +pkc 4.56017282005736 4.18205014264121 5.06259503302697 5.97126183979046 4.53367418428302 2.84490938381941 3.59731226058845 6.24222326545517 4.04830062372069 4.89034912822175 5.23644196282995 +pkc 4.03777421073371 3.92197333628131 2.88480071284671 5.34233425196481 2.81540871942271 1.17865499634165 3.29953372788566 5.57594910314632 2.35137525716348 2.71469474382088 4.02891675689965 +pkc 3.4904285153901 1.92424865227413 3.85862222870103 5.90808293816893 4.0842942263686 3.60549784517489 4.00186370942794 6.4393503711001 3.13983261752775 3.40119738166216 4.14630430115281 +pkc 3.20274644293832 3.50855589998265 2.36085400111802 4.16511363311031 2.52572864430826 2.2213750375685 3.82209829790016 6.59304453414244 2.30258509299405 3.23080439573347 3.40119738166216 +pkc 3.20274644293832 2.86220088092947 3.32862668882732 2.89591193827178 2.94968833505258 2.70136121295141 3.29212628660779 6.20657592672493 3.68887945411394 4.01096295328305 4.44382703557933 +pkc 3.32862668882732 2.2935443483419 4.76217393479776 6.24222326545517 4.29045944114839 4.05698877567833 4.50645421304893 7.06987412845857 2.66025953726586 3.43720781918519 3.66867674679642 +pkc 3.53514535417189 2.76000994003292 1.97823903617067 0.343589704390077 1.30291275218084 0.970778917158225 2.66025953726586 6.06145691892802 3.06805293513362 3.88567903008854 3.3357695763397 +pkc 3.17387845893747 3.00568260440716 4.15575319035074 5.95324333428778 4.23700086262362 1.89761985992753 2.68102152871429 6.40357419793482 2.61006979274201 3.48124008933569 3.93963817246112 +pkc 2.85070650150373 1.98787434815435 2.86789890204411 2.77258872223978 2.42480272571829 0.431782416425538 1.95160817016995 4.15575319035074 2.35137525716348 2.65324196460721 3.70622809244855 +pkc 3.03013370027132 2.47653840011748 4.3528552573736 5.68357976733868 4.38077585277223 1.88858365386359 2.9704144655697 6.16961073249146 2.28442112236637 3.20274644293832 4.69134788222914 +pkc 3.3178157727231 2.9704144655697 3.73289633953071 4.61512051684126 2.89591193827178 2.67414864942653 3.20274644293832 6.27852142416584 1.88858365386359 3.26575941076705 3.88567903008854 +pkc 2.40694510831829 1.90657514365664 2.76000994003292 2.98568193770049 2.1770218700187 1.71739505393919 3.48124008933569 6.43133108193348 2.79116510781272 3.26575941076705 4.13676527810605 +pkc 2.87919845729804 2.58776403522771 3.13113691056019 2.57261223020711 1.20597080698861 4.62497281328427 5.14749447681345 8.11312710422178 1.90657514365664 3.29953372788566 3.9926809084456 +pkc 2.61006979274201 2.63188884013665 3.19458313229916 3.13983261752775 2.23108909128898 3.73289633953071 4.11903717481247 6.55677835615804 2.63188884013665 3.36384159511839 3.6163087612791 +pkc 1.84371920815877 2.50959926237837 3.11351530921037 3.31054301339402 1.98787434815435 1.5830939370945 2.82137888640921 5.90808293816893 3.07731226054641 3.35340671782581 4.22683374526818 +pkc 2.70805020110221 3.03013370027132 3.2188758248682 3.20274644293832 1.77155676191054 4.66343909411207 5.17048399503815 8.01400499477946 2.4932054526027 2.92316158071916 3.56104608260405 +pkc 3.29953372788566 2.52572864430826 3.03974915897077 4.87519732320115 2.97552956623647 4.00186370942794 4.42484663185681 6.98007594056176 3.10458667846607 3.59731226058845 4.77068462446567 +pkc 2.41591377830105 1.96990565461153 3.00568260440716 3.03013370027132 2.14124194258528 3.43720781918519 3.80443779474821 6.1527326947041 2.9338568698359 3.92986292355648 4.48863636973214 +pkc 3.43720781918519 3.65065824129374 2.99573227355399 3.03974915897077 1.26694760348732 1.4655675420144 3.07731226054641 6.33150184989369 2.62466859216316 3.76815263500844 4.3528552573736 +pkc 4.3528552573736 5.03695260241363 3.23080439573347 3.03974915897077 0.131028262406404 2.11384296839717 3.55248682920838 6.83625927727707 2.85070650150373 3.77734810210154 4.06560209335645 +pkc 2.9338568698359 3.16547504814109 3.63495111208838 3.74242022104197 2.54160199346455 3.48124008933569 3.65065824129374 6.10702288774225 1.51072193949494 1.88858365386359 1.97823903617067 +pkc 3.04927304048202 3.06805293513362 3.07731226054641 3.27336401015227 1.11514159061932 3.16547504814109 3.62434093297637 5.85507192220243 3.85014760171006 4.82028156560504 3.45315712059287 +pkc 3.35340671782581 2.9338568698359 2.67414864942653 2.88480071284671 2.15871472257434 3.41772668361337 3.77734810210154 6.04500531403601 2.46809953147162 3.68887945411394 3.96651119071222 +pkc 4.0926765051214 3.80443779474821 3.25424296870549 5.04342511691925 3.87743156065853 2.58776403522771 3.16547504814109 6.16961073249146 2.73436750941958 3.7864597824528 3.8308129500026 +pkc 2.88480071284671 1.77155676191054 2.96010509591084 2.68102152871429 2.10413415427021 2.63188884013665 3.26575941076705 6.41345895716736 3.02042488614436 3.04927304048202 3.79548918917219 +pkc 3.82209829790016 3.29212628660779 4.18205014264121 5.52146091786225 3.89385903480047 3.04927304048202 3.79548918917219 6.45833828334479 2.71469474382088 3.04927304048202 3.9759363311718 +pkc 3.65065824129374 3.06805293513362 3.08648663682246 3.13983261752775 1.6094379124341 3.2846635654062 3.7864597824528 6.21460809842219 2.65324196460721 3.49953328238302 3.95699637107088 +pkc 4.39814601655377 4.3528552573736 3.44361809754611 3.05870707271538 2.1770218700187 2.99573227355399 3.56953269648137 6.14418563412565 2.1770218700187 3.2188758248682 3.75185425327532 +pkc 2.4932054526027 2.02419306744936 2.9391619220656 3.10458667846607 2.10413415427021 1.63705307946707 3.09557760852371 6.4393503711001 1.34807314829969 2.77258872223978 3.29212628660779 +pkc 5.11799381241676 4.61512051684126 4.53367418428302 6.1527326947041 4.22683374526818 4.21803603456465 4.76217393479776 7.16857989726403 2.24812890719799 2.98568193770049 3.67882911826043 +pkc 3.07731226054641 2.81540871942271 3.11351530921037 4.38949864951258 2.23108909128898 3.03974915897077 3.62434093297637 6.58340922215876 2.31253542384721 2.97552956623647 3.16547504814109 +pkc 1.35840915763035 1.97823903617067 3.39114704580865 4.18205014264121 2.98568193770049 3.37416870927424 3.70622809244855 6.19644412779452 2.37954613413017 4.01998014693324 3.90399083373088 +pkc 3.18221184049661 2.79116510781272 3.18221184049661 3.2188758248682 2.484906649788 2.77881927199042 2.67414864942653 6.25958146406492 2.4423470353692 3.52636052461616 3.6163087612791 +pkc 2.80336038090653 2.61006979274201 2.81540871942271 3.59731226058845 1.9154509415706 3.56953269648137 3.9926809084456 6.16120732169508 2.00552585872967 3.71357206670431 3.92197333628131 +pkc 2.05027016437956 2.50959926237837 3.26575941076705 3.55248682920838 0 3.74242022104197 3.91202300542815 6.27852142416584 2.19499988231411 2.70136121295141 3.92986292355648 +pkc 4.3267781604434 3.9759363311718 3.21084365317094 3.06805293513362 0.879626747502564 1.93441576962958 2.79116510781272 6.72743172485086 3.6609942506244 4.55071400019203 5.16478597392351 +pkc 3.51749783735832 2.32238772029023 3.52636052461616 3.51749783735832 2.19499988231411 3.03974915897077 3.75185425327532 6.39526159811545 1.97823903617067 2.37954613413017 4.23700086262362 +pkc 3.48124008933569 2.61006979274201 3.13983261752775 2.86220088092947 1.71739505393919 2.81540871942271 3.3178157727231 6.48463523563525 3.27336401015227 3.85014760171006 4.62497281328427 +pkc 3.23080439573347 2.88480071284671 2.26695791535089 5.29831736654804 3.19458313229916 2.77258872223978 3.44361809754611 6.49375383985169 3.60549784517489 3.86702563949741 3.91202300542815 +pkc 2.66025953726586 3.15700042115011 2.9391619220656 3.17387845893747 2.4423470353692 2.51769647261099 3.4904285153901 6.42162226780652 2.77881927199042 3.02042488614436 3.43720781918519 +pkc 3.43720781918519 3.3357695763397 3.2846635654062 3.75887182593397 2.72785282839839 0.819779831493311 2.67414864942653 5.15329159449778 3.29953372788566 4.11087386417331 4.47049528266149 +pkc 3.17387845893747 2.86789890204411 2.86789890204411 3.82209829790016 2.26695791535089 1.78170913337455 2.55722731136763 6.27852142416584 2.53369681395743 3.13983261752775 3.42751468997953 +pkc 4.04830062372069 3.92197333628131 4.10098910494077 5.99146454710798 4.22683374526818 3.59731226058845 4.0842942263686 5.88332238848828 3.56953269648137 4.17284762371004 4.66343909411207 +pkc 3.4626060097908 2.61739583283408 3.02042488614436 3.19458313229916 0.908258560176891 2.11384296839717 3.71357206670431 6.41345895716736 2.77258872223978 2.92316158071916 3.82209829790016 +pkc 3.35340671782581 2.67414864942653 2.79116510781272 3.07731226054641 1.45628673293993 3.42751468997953 3.8416005411316 5.85507192220243 3.13113691056019 3.72328088083127 0.357674444271816 +pkc 2.86220088092947 2.54160199346455 3.07731226054641 2.98568193770049 2.37954613413017 3.64283551561253 3.88567903008854 6.06145691892802 3.85862222870103 4.23700086262362 4.29045944114839 +pkc 4.44382703557933 4.30000279919529 1.83418018511201 0 1.07158361628019 2.89591193827178 3.6609942506244 6.40357419793482 2.55722731136763 3.04927304048202 4.01998014693324 +pkc 3.52636052461616 2.55722731136763 2.79116510781272 4.31748811353631 1.60140574073684 1.33236601909433 3.18221184049661 5.93753620508243 3.44361809754611 3.81330703248899 4.53367418428302 +pkc 3.27336401015227 3.08648663682246 3.56953269648137 5.37989735354046 3.90399083373088 4.50645421304893 5.4249500174814 7.63626960337937 2.42480272571829 3.63495111208838 3.37416870927424 +pkc 3.04927304048202 2.60268968544438 1.56444054650336 2.71469474382088 3.03013370027132 1.51072193949494 3.35340671782581 5.96357934361845 2.66025953726586 3.01553490085017 3.86702563949741 +pkc 2.87919845729804 2.2213750375685 2.66025953726586 3.03013370027132 1.51951320490611 3.2188758248682 3.58073729549423 5.89989735358249 3.10458667846607 3.39114704580865 3.19458313229916 +pkc 3.04927304048202 2.83321334405622 3.10458667846607 3.2846635654062 2.36085400111802 3.18221184049661 3.35340671782581 6.28785856016178 2.4423470353692 3.29953372788566 3.53514535417189 +pkc 3.2846635654062 2.41591377830105 3.39114704580865 3.37416870927424 1.7263316639056 2.79728133483015 3.10458667846607 6.38687931936265 1.7630170003624 3.34638914516716 2.9704144655697 +pkc 2.80336038090653 2.96010509591084 2.86220088092947 3.52636052461616 2.33214389523559 4.05698877567833 4.81218435537242 7.56423847517049 1.39376637595859 3.09557760852371 3.6163087612791 +pkc 3.26575941076705 2.42480272571829 3.23867845216438 3.18221184049661 3.02042488614436 2.88480071284671 3.64283551561253 6.41345895716736 2.58021682959233 3.05870707271538 4.12874598893943 +pkc 3.41772668361337 3.56953269648137 2.84490938381941 5.12396397940326 3.11351530921037 2.05923883436232 3.13113691056019 6.78219205600679 2.33214389523559 3.12236492448736 4.254193263164 +pkc 3.23867845216438 3.17387845893747 3.95699637107088 6.01615715969835 4.02891675689965 1.48387468945875 3.14845336057165 6.03548143252476 2.23108909128898 3.2188758248682 3.43720781918519 +pkc 3.58905911883173 2.57261223020711 3.29953372788566 3.41772668361337 2.32238772029023 4.31748811353631 4.74493212836325 6.02586597382531 3.18221184049661 3.68887945411394 3.72328088083127 +pkc 3.04927304048202 3.03974915897077 4.02891675689965 6.08904487544685 4.0926765051214 2.31253542384721 3.58073729549423 6.34035930372775 2.87919845729804 3.59731226058845 4.16511363311031 +pkc 4.49758497530815 4.29045944114839 2.86789890204411 2.86789890204411 2.63188884013665 0.53062825106217 1.32175583998232 5.80211837537706 2.61739583283408 3.56953269648137 4.13676527810605 +pkc 3.13113691056019 2.62466859216316 3.67882911826043 5.13579843705026 3.65065824129374 2.03339760317843 2.85070650150373 6.33150184989369 0.131028262406404 2.50959926237837 1.07158361628019 +pkc 2.87919845729804 3.01553490085017 3.15700042115011 4.89034912822175 3.37416870927424 2.70805020110221 3.07731226054641 6.39526159811545 3.39114704580865 4.12874598893943 4.68213122712422 +pkc 2.94968833505258 2.50959926237837 3.14845336057165 2.70805020110221 2.23964529322017 2.70805020110221 2.87919845729804 6.01615715969835 3.24649099190117 3.34638914516716 4.21803603456465 +pkc 3.3357695763397 3.17387845893747 2.51769647261099 2.91235066461494 2.23108909128898 3.54385368206368 3.64283551561253 5.65599181081985 2.77881927199042 3.2846635654062 4.07414185490458 +pkc 3.00568260440716 2.3887627892351 4.07414185490458 5.78382518232974 4.16511363311031 3.60549784517489 3.87743156065853 6.12468339089421 3.39114704580865 3.9926809084456 4.43438186500781 +pkc 3.51749783735832 2.86789890204411 3.05870707271538 3.72328088083127 1.99741770620125 4.20020495292158 4.56017282005736 6.22455842927536 3.12236492448736 3.53514535417189 3.02042488614436 +pkc 2.62466859216316 2.86789890204411 3.43720781918519 3.64283551561253 1.34807314829969 5.05624580534831 5.40717177146012 6.07073772800249 2.77258872223978 3.12236492448736 2.91235066461494 +pkc 3.73289633953071 3.37416870927424 3.75887182593397 5.35185813347607 3.74242022104197 3.85014760171006 4.29045944114839 5.93753620508243 1.93441576962958 3.59731226058845 3.9759363311718 +pkc 2.02419306744936 2.77258872223978 2.58776403522771 4.89034912822175 2.14124194258528 2.4932054526027 3.44361809754611 6.39526159811545 1.84371920815877 3.77734810210154 3.72328088083127 +pkc 3.11351530921037 2.70805020110221 3.06805293513362 5.46806014113513 2.92316158071916 2.60268968544438 2.94968833505258 6.29526600143965 2.79728133483015 3.04927304048202 4.01998014693324 +pkc 3.37416870927424 1.44926916028128 3.32862668882732 2.86220088092947 1.52822785700856 3.85862222870103 4.45201900649392 7.11476944836646 2.41591377830105 3.03974915897077 3.66867674679642 +pkc 2.82137888640921 2.89591193827178 2.40694510831829 4.01998014693324 1.7263316639056 3.71357206670431 4.00186370942794 5.78382518232974 2.71469474382088 3.3178157727231 2.79116510781272 +pkc 3.45315712059287 3.01553490085017 3.40784192438082 3.37416870927424 2.33214389523559 1.30291275218084 2.43361335540045 6.42162226780652 1.26694760348732 3.60549784517489 4.3267781604434 +pkc 3.14845336057165 2.09556092355972 2.67414864942653 2.72785282839839 2.70136121295141 2.86789890204411 3.03013370027132 6.53958595561767 2.89591193827178 3.79548918917219 4.11087386417331 +pkc 3.8416005411316 3.40119738166216 3.65065824129374 4.56954300834494 3.11351530921037 2.26695791535089 3.29953372788566 6.51174532964473 4.00186370942794 4.41642806139121 5.00394630594546 +pkc 3.42751468997953 2.98568193770049 3.82209829790016 4.72738781871234 2.07819075977818 2.58776403522771 3.50855589998265 6.19644412779452 2.31253542384721 3.23867845216438 3.63495111208838 +pkc 3.25424296870549 2.71469474382088 3.18221184049661 5.13579843705026 2.19499988231411 3.27336401015227 3.74242022104197 6.32256523992728 2.89591193827178 3.40784192438082 3.20274644293832 +pkc 3.75887182593397 3.17387845893747 2.9391619220656 3.15700042115011 2.65324196460721 1.05082162483176 3.10458667846607 6.18001665365257 2.56494935746154 3.52636052461616 3.90399083373088 +pkc 4.24563400976833 3.63495111208838 2.70805020110221 5.82008293035236 3.56104608260405 1.84371920815877 4.11903717481247 5.97126183979046 3.73289633953071 4.26267987704132 4.04830062372069 +pkc 2.63188884013665 3.00568260440716 3.4904285153901 3.87743156065853 2.55722731136763 2.85070650150373 3.50855589998265 6.22455842927536 2.75366071235426 3.60549784517489 3.72328088083127 +pkc 3.09557760852371 2.94968833505258 3.03974915897077 2.77881927199042 1.71739505393919 5.00394630594546 5.59471137960184 8.02322468471667 2.47653840011748 3.81330703248899 4.42484663185681 +pkc 4.14630430115281 4.48863636973214 2.9391619220656 3.56104608260405 3.25424296870549 2.68784749378469 2.96010509591084 6.61069604471776 1.17865499634165 2.75366071235426 2.57261223020711 +pkc 2.90690105984738 2.9338568698359 3.18221184049661 4.40671924726425 3.2188758248682 4.48863636973214 5.13579843705026 7.43838353004431 2.73436750941958 3.07731226054641 3.86702563949741 +pkc 2.53369681395743 3.21084365317094 2.88480071284671 2.26695791535089 0 4.30000279919529 4.88280192258637 7.44716835960004 3.2846635654062 4.30000279919529 4.57779898919196 +pkc 2.99573227355399 2.98568193770049 3.17387845893747 3.6609942506244 1.98787434815435 3.42751468997953 3.89385903480047 7.10578612948127 2.77258872223978 3.40119738166216 3.71357206670431 +pkc 2.9391619220656 2.4423470353692 4.26267987704132 6.1527326947041 4.38949864951258 3.82209829790016 4.01998014693324 5.97126183979046 2.39789527279837 2.68784749378469 3.90399083373088 +pkc 4.24563400976833 3.88567903008854 2.50959926237837 3.17387845893747 2.53369681395743 2.50959926237837 3.06805293513362 6.23244801655052 2.46809953147162 3.58073729549423 3.91202300542815 +pkc 2.07819075977818 2.05923883436232 3.58073729549423 5.89989735358249 3.80443779474821 2.53369681395743 3.39114704580865 7.05185562295589 1.79840401194672 3.72328088083127 4.20020495292158 +pkc 3.12236492448736 1.68268837417369 4.23700086262362 5.88332238848828 4.0842942263686 1.52822785700856 3.00568260440716 6.19644412779452 2.85070650150373 3.7864597824528 3.98527346716774 +pkc 3.13113691056019 3.17387845893747 3.14845336057165 3.16547504814109 2.03339760317843 2.34180580614733 3.05870707271538 6.32256523992728 4.48863636973214 5.13579843705026 5.15329159449778 +pkc 4.46129981556839 4.43438186500781 2.62466859216316 3.13113691056019 2.13179677201376 2.71469474382088 3.09557760852371 6.20657592672493 3.85862222870103 4.45201900649392 5.07517381523383 +pkc 4.52396013056255 4.15575319035074 3.54385368206368 3.04927304048202 2.13179677201376 0 2.00552585872967 5.04342511691925 2.36085400111802 2.19499988231411 3.62434093297637 +pkc 3.36384159511839 3.03013370027132 4.64439089914137 6.25190388316589 4.47960696301275 3.2188758248682 3.56953269648137 6.05443934626937 3.93963817246112 4.66343909411207 5.18738580584075 +pkc 3.96651119071222 3.40784192438082 3.3178157727231 3.38099467434464 2.86789890204411 2.55722731136763 3.25424296870549 6.38687931936265 4.57779898919196 4.85981240436167 3.47196645255036 +pkc 3.17387845893747 2.50143595173921 3.12236492448736 3.29953372788566 1.67335123817775 4.05698877567833 4.31748811353631 6.30444880242198 3.05870707271538 3.55248682920838 3.75185425327532 +pkc 2.61006979274201 2.64617479738412 2.2935443483419 1.35840915763035 2.14124194258528 2.32238772029023 2.97552956623647 6.16120732169508 2.73436750941958 3.09557760852371 3.51749783735832 +pkc 3.24649099190117 2.26695791535089 3.14845336057165 3.45315712059287 2.64617479738412 3.9926809084456 4.72738781871234 7.68109900153636 1.95160817016995 3.40119738166216 3.54385368206368 +pkc 3.11351530921037 2.64617479738412 4.31748811353631 6.37672694789863 4.27249074760558 3.16547504814109 3.74242022104197 6.22455842927536 1.96009478404727 2.83321334405622 1.43983512804792 +pkc 4.67282883446191 4.52396013056255 4.95582705760126 6.50279004591562 4.74493212836325 2.34180580614733 3.11351530921037 6.68336094576627 4.57779898919196 4.87519732320115 3.15700042115011 +pkc 2.13179677201376 2.16791018966744 3.45315712059287 5.58724865840025 3.68887945411394 1.81645208181843 2.60268968544438 6.18001665365257 4.13676527810605 4.56954300834494 3.92197333628131 +pkc 3.23867845216438 2.76000994003292 3.40119738166216 3.56953269648137 3.36384159511839 3.77734810210154 4.23700086262362 7.50163445788341 1.86252854011626 3.19458313229916 3.85014760171006 +pkc 4.38949864951258 4.05698877567833 1.97823903617067 5.10594547390058 2.7408400239252 1.62727783056243 2.18605127673809 5.84643877505772 2.41591377830105 3.04927304048202 3.50855589998265 +pkc 4.01096295328305 3.44361809754611 2.80336038090653 2.9704144655697 1.96009478404727 3.12236492448736 3.79548918917219 6.96129604591017 3.25424296870549 3.79548918917219 4.0926765051214 +pkc 4.18205014264121 3.53514535417189 3.06805293513362 4.38949864951258 1.4655675420144 3.24649099190117 3.42751468997953 6.29526600143965 3.9759363311718 4.77068462446567 5.04342511691925 +pkc 2.9704144655697 2.3887627892351 4.80402104473326 6.11589212548303 4.29045944114839 1.65441127807683 3.3178157727231 6.48463523563525 3.02042488614436 3.21084365317094 3.64283551561253 +pkc 3.34638914516716 2.28442112236637 2.92316158071916 5.28826703069454 2.87919845729804 4.53367418428302 5.03695260241363 7.47420480649612 4.05698877567833 4.72738781871234 5.03043792139244 +pkc 2.81540871942271 2.68784749378469 3.18221184049661 4.01096295328305 3.40784192438082 3.01553490085017 3.41772668361337 6.4393503711001 1.6467336971778 3.01553490085017 3.44361809754611 +pkc 4.77068462446567 4.49758497530815 3.12236492448736 2.9704144655697 1.95160817016995 3.47196645255036 3.64283551561253 6.36818718635049 3.01553490085017 3.55248682920838 3.88567903008854 +pkc 3.13113691056019 2.43361335540045 4.80402104473326 5.82008293035236 3.92197333628131 1.88858365386359 3.73289633953071 6.4393503711001 2.4423470353692 3.4626060097908 3.94931879017184 +pkc 3.54385368206368 2.86789890204411 1.88858365386359 5.10594547390058 2.58021682959233 3.40784192438082 4.49758497530815 7.64539769942863 2.71469474382088 3.50855589998265 4.03777421073371 +pkc 3.94931879017184 3.68887945411394 2.60268968544438 5.12396397940326 1.79009141212736 3.23867845216438 3.67882911826043 7.20489251020467 3.04927304048202 3.4904285153901 2.55722731136763 +pkc 2.89591193827178 2.19499988231411 3.68887945411394 4.0842942263686 2.92316158071916 2.01490302054226 3.04927304048202 5.99146454710798 2.81540871942271 3.56953269648137 3.6163087612791 +pkc 2.76000994003292 3.24649099190117 2.62466859216316 3.18221184049661 2.36085400111802 3.98527346716774 4.30811095172371 6.28785856016178 2.13179677201376 3.47196645255036 3.34638914516716 +pkc 2.77881927199042 2.91235066461494 3.25424296870549 3.80443779474821 3.51749783735832 2.97552956623647 3.69635146895264 6.26909628370626 3.65065824129374 4.52396013056255 5.14749447681345 +pkc 2.83321334405622 3.43720781918519 3.19458313229916 2.89591193827178 2.24812890719799 2.86220088092947 3.56104608260405 6.33150184989369 3.16547504814109 4.04830062372069 4.20020495292158 +pkc 2.88480071284671 2.10413415427021 2.37954613413017 3.47196645255036 1.94304891677428 3.06805293513362 3.92986292355648 5.98141421125448 2.2213750375685 3.23867845216438 3.65065824129374 +pkc 3.50855589998265 2.98568193770049 2.83321334405622 3.02042488614436 1.83418018511201 3.37416870927424 3.76815263500844 5.64897423816121 0 2.43361335540045 3.50855589998265 +pkc 3.70622809244855 2.90690105984738 3.12236492448736 3.29212628660779 1.5830939370945 3.01553490085017 3.71357206670431 6.75460409948796 2.9338568698359 3.54385368206368 3.40784192438082 +pkc 2.84490938381941 2.68784749378469 3.18221184049661 3.53514535417189 2.36085400111802 3.59731226058845 3.85862222870103 5.74620319054015 2.14124194258528 3.6609942506244 3.85862222870103 +pkc 2.80336038090653 2.06812778177956 2.68784749378469 2.87919845729804 2.01490302054226 2.25758772706331 2.7408400239252 6.19644412779452 2.77881927199042 4.30000279919529 4.37071287477361 +pkc 3.14845336057165 2.79116510781272 3.27336401015227 3.42751468997953 2.35137525716348 2.72785282839839 3.27336401015227 6.65544035036765 3.26575941076705 3.49953328238302 3.67882911826043 +pkc 3.03974915897077 2.79116510781272 3.08648663682246 3.32862668882732 2.52572864430826 2.65324196460721 3.09557760852371 6.40357419793482 2.96010509591084 3.69635146895264 3.6609942506244 +pkc 4.21803603456465 3.9759363311718 3.09557760852371 3.10458667846607 2.14943391349987 3.8308129500026 3.9759363311718 6.21460809842219 3.07731226054641 3.58073729549423 3.89385903480047 +pkc 3.50855589998265 2.18605127673809 3.03974915897077 3.25424296870549 1.75440368268429 2.83321334405622 3.10458667846607 6.57507584059962 2.45958884180371 3.47196645255036 4.04830062372069 +pkc 3.05870707271538 2.06812778177956 1.56444054650336 2.51769647261099 1.54756250871601 2.65324196460721 3.58905911883173 6.47543271670409 1.8531680973567 3.13113691056019 3.64283551561253 +pkc 2.82137888640921 2.61006979274201 2.94968833505258 3.26575941076705 2.77881927199042 3.51749783735832 4.15575319035074 6.69208374250663 3.09557760852371 3.62434093297637 4.17284762371004 +pkc 2.97552956623647 2.84490938381941 3.65065824129374 5.65599181081985 3.20274644293832 2.83321334405622 3.29212628660779 6.36818718635049 1.90657514365664 3.54385368206368 3.4904285153901 +pkc 4.11087386417331 3.85862222870103 2.45958884180371 3.8416005411316 3.36384159511839 3.80443779474821 4.64439089914137 8.12207437536222 2.76000994003292 3.32862668882732 3.94931879017184 +pkc 3.69635146895264 3.12236492448736 1.68268837417369 2.19499988231411 1.80828877117927 4.69134788222914 4.91265488573605 5.99146454710798 3.55248682920838 4.70048036579242 5.53338948872752 +pkc 3.36384159511839 2.99573227355399 2.72785282839839 3.07731226054641 1.33236601909433 4.54223038621422 4.86753445045558 6.94408720822953 2.57261223020711 3.40119738166216 3.14845336057165 +pkc 3.05870707271538 2.79728133483015 2.64617479738412 3.13113691056019 0.951657875711446 3.25424296870549 3.75887182593397 5.73979291217923 0.576613364303994 4.3267781604434 1.708377860289 +pkc 2.91235066461494 2.96010509591084 5.06259503302697 4.5152454784601 5.52146091786225 2.58776403522771 3.41772668361337 6.57507584059962 3.70622809244855 4.30000279919529 4.79579054559674 +pkc 4.0842942263686 2.94968833505258 2.21266038546606 4.79579054559674 3.29212628660779 4.10098910494077 4.87519732320115 7.59135704669855 3.04927304048202 3.71357206670431 3.77734810210154 +pkc 2.87919845729804 1.23256026117785 2.91235066461494 3.36384159511839 2.89591193827178 4.17284762371004 4.91998092582813 7.73543335249969 2.53369681395743 3.40784192438082 3.21084365317094 +pkc 2.90690105984738 2.83321334405622 3.08648663682246 2.9391619220656 1.51951320490611 1.53901544813755 1.33236601909433 4.5152454784601 2.79728133483015 3.66867674679642 3.89385903480047 +pkc 3.24649099190117 2.31253542384721 3.85014760171006 3.90399083373088 2.32238772029023 2.85070650150373 3.47196645255036 5.90808293816893 1.69009581545155 2.79116510781272 3.68887945411394 +pkc 4.38949864951258 3.96651119071222 2.77881927199042 2.33214389523559 1.30291275218084 4.15575319035074 4.43438186500781 6.25958146406492 3.21084365317094 3.8416005411316 4.14630430115281 +pkc 3.92197333628131 3.86702563949741 2.86789890204411 3.44361809754611 2.58021682959233 3.62434093297637 3.90399083373088 6.07993319509559 2.35137525716348 2.9338568698359 1.45628673293993 +pkc 4.3528552573736 4.11087386417331 1.50185270175416 1.14103300455206 1.96009478404727 2.92316158071916 3.58905911883173 6.18826412308259 2.79728133483015 3.29212628660779 3.75185425327532 +pkc 3.2846635654062 3.12236492448736 2.76000994003292 4.91998092582813 3.42751468997953 4.11087386417331 4.54223038621422 6.78219205600679 2.27521389619791 3.27336401015227 3.9926809084456 +pkc 2.9704144655697 0.879626747502564 2.53369681395743 5.06259503302697 2.4932054526027 2.2213750375685 3.01553490085017 6.69208374250663 3.15700042115011 3.4904285153901 3.59731226058845 +pkc 3.56104608260405 3.02042488614436 3.8416005411316 3.6609942506244 3.02042488614436 2.10413415427021 4.31748811353631 6.54821910276237 1.92424865227413 2.30258509299405 4.00186370942794 +pkc 3.40119738166216 2.85070650150373 0.412109650826833 1.74571553072665 0.00995033085316809 1.57484646766448 2.85070650150373 6.14418563412565 3.9759363311718 4.28082412916472 4.18205014264121 +pkc 3.00568260440716 2.61739583283408 3.23080439573347 3.56104608260405 3.44361809754611 1.90657514365664 3.89385903480047 6.05443934626937 3.77734810210154 4.26267987704132 5.37989735354046 +pkc 2.98568193770049 3.09557760852371 1.21491274436427 1.67335123817775 1.82616089594539 3.68887945411394 3.92986292355648 6.35957386867238 4.43438186500781 5.03043792139244 5.37063802812766 +pkc 3.13983261752775 3.24649099190117 2.70805020110221 5.37063802812766 3.01553490085017 3.01553490085017 3.56104608260405 6.32256523992728 2.80336038090653 3.55248682920838 3.11351530921037 +pkc 2.68102152871429 2.3887627892351 2.3887627892351 3.06805293513362 2.86220088092947 2.9704144655697 3.32862668882732 6.64639051484773 1.98787434815435 2.83321334405622 4.24563400976833 +pkc 3.16547504814109 3.20274644293832 3.82209829790016 5.33271879326537 3.4904285153901 3.64283551561253 4.13676527810605 6.31354804627709 2.94968833505258 3.42751468997953 3.45315712059287 +pkc 3.27336401015227 2.50959926237837 3.27336401015227 2.86789890204411 0 4.46129981556839 4.96284463025991 7.58222919427646 1.56444054650336 2.90690105984738 3.31054301339402 +pkc 3.12236492448736 3.04927304048202 3.41772668361337 3.39114704580865 2.86220088092947 3.51749783735832 3.8308129500026 6.07993319509559 3.93963817246112 4.98360662170834 5.36129216570943 +pkc 3.18221184049661 2.9704144655697 2.97552956623647 3.27336401015227 1.55603713570699 2.70136121295141 3.24649099190117 6.5206211275587 0.0198026272961797 0.900161349944271 1.95160817016995 +pkc 1.81645208181843 2.86220088092947 3.19458313229916 3.2846635654062 1.51951320490611 2.97552956623647 3.47196645255036 6.32256523992728 2.71469474382088 3.50855589998265 3.92197333628131 +pkc 3.47196645255036 2.98568193770049 3.35340671782581 3.4626060097908 1.69009581545155 3.80443779474821 4.5152454784601 6.89871453432999 0 4.02891675689965 2.40694510831829 +pkc 4.3267781604434 4.46129981556839 3.00568260440716 4.38949864951258 3.03013370027132 1.30291275218084 2.75366071235426 7.01571242048723 2.86220088092947 3.4904285153901 3.43720781918519 +pkc 3.75887182593397 3.52636052461616 4.20916023665068 5.52146091786225 3.66867674679642 2.27521389619791 3.05870707271538 6.36818718635049 4.3528552573736 5.01063529409626 4.98360662170834 +pkc 4.68213122712422 4.26267987704132 3.03013370027132 3.32862668882732 1.79840401194672 3.26575941076705 3.67882911826043 6.20657592672493 2.71469474382088 3.38099467434464 4.03777421073371 +pkc 2.39789527279837 2.92316158071916 2.53369681395743 5.59471137960184 2.86789890204411 2.73436750941958 3.3357695763397 6.18826412308259 2.18605127673809 3.03974915897077 3.48124008933569 +pkc 2.60268968544438 2.70805020110221 3.29953372788566 5.11799381241676 2.72785282839839 3.38099467434464 3.75887182593397 6.07993319509559 3.16547504814109 3.69635146895264 3.56953269648137 +pkc 3.04927304048202 2.30258509299405 3.3178157727231 3.3357695763397 2.08691355651854 2.14124194258528 2.99573227355399 6.62936325343745 2.81540871942271 2.81540871942271 3.81330703248899 +pkc 2.79728133483015 1.94304891677428 1.32175583998232 1.7263316639056 0.198850858745165 3.47196645255036 3.85862222870103 6.25958146406492 3.44361809754611 3.95699637107088 4.41642806139121 +pkc 4.14630430115281 4.0842942263686 3.12236492448736 4.04830062372069 2.52572864430826 3.9926809084456 4.34380542185368 5.82894561761021 3.73289633953071 4.31748811353631 4.45201900649392 +pkc 2.97552956623647 1.61938824328727 3.75185425327532 4.43438186500781 3.42751468997953 3.23080439573347 4.17284762371004 7.48324441607385 2.04122032885964 3.10458667846607 4.11087386417331 +pkc 3.15700042115011 2.58021682959233 3.09557760852371 2.87919845729804 0.173953307123438 2.55722731136763 3.63495111208838 7.47420480649612 3.13113691056019 3.23080439573347 3.94931879017184 +pkc 2.84490938381941 2.10413415427021 3.14845336057165 4.26267987704132 2.92316158071916 2.58776403522771 3.4626060097908 5.99146454710798 4.02891675689965 4.61512051684126 5.87211778947542 +pkc 2.23964529322017 3.72328088083127 1.51072193949494 2.58776403522771 2.1770218700187 4.15575319035074 4.66343909411207 7.00669522683704 4.06560209335645 4.70048036579242 5.20948615284142 +pkc 3.00568260440716 2.97552956623647 3.37416870927424 3.58073729549423 1.51072193949494 3.11351530921037 3.39114704580865 6.21460809842219 2.30258509299405 3.25424296870549 3.9759363311718 +pkc 3.19458313229916 2.3887627892351 2.9391619220656 2.70805020110221 2.14943391349987 2.64617479738412 3.41772668361337 6.64639051484773 2.80336038090653 3.48124008933569 3.69635146895264 +pkc 2.81540871942271 2.27521389619791 3.12236492448736 3.55248682920838 3.17387845893747 1.83418018511201 2.97552956623647 6.88959130835447 2.484906649788 3.06805293513362 3.26575941076705 +pkc 3.32862668882732 2.70136121295141 4.70953020131233 5.64897423816121 3.77734810210154 3.53514535417189 3.79548918917219 6.50279004591562 3.81330703248899 4.47960696301275 5.06259503302697 +pkc 3.03974915897077 2.4932054526027 3.05870707271538 4.52396013056255 1.90657514365664 0.712949807856125 2.65324196460721 5.8111409929767 3.8416005411316 4.24563400976833 4.8283137373023 +pkc 3.4626060097908 2.97552956623647 2.86220088092947 2.58776403522771 2.47653840011748 3.2846635654062 3.74242022104197 6.11589212548303 2.79116510781272 2.84490938381941 3.70622809244855 +pkc 2.77258872223978 2.09556092355972 2.80336038090653 2.84490938381941 2.64617479738412 3.53514535417189 4.10098910494077 6.03548143252476 2.35137525716348 3.27336401015227 3.4904285153901 +pkc 2.55722731136763 2.73436750941958 4.19116874685764 4.15575319035074 3.35340671782581 3.10458667846607 3.55248682920838 5.99146454710798 2.66025953726586 3.19458313229916 3.87743156065853 +pkc 3.54385368206368 2.55722731136763 3.08648663682246 3.03974915897077 1.78170913337455 2.90690105984738 3.3178157727231 6.43133108193348 2.23108909128898 3.26575941076705 3.62434093297637 +pkc 3.3178157727231 2.83321334405622 2.63188884013665 4.58700621536042 2.3887627892351 3.67882911826043 4.12874598893943 6.31354804627709 3.38099467434464 3.81330703248899 3.79548918917219 +pkc 4.18205014264121 3.52636052461616 2.68784749378469 2.62466859216316 1.68268837417369 3.26575941076705 3.79548918917219 6.57507584059962 2.63188884013665 3.59731226058845 3.95699637107088 +pkc 2.98568193770049 2.90690105984738 2.7408400239252 2.97552956623647 2.36085400111802 1.90657514365664 3.66867674679642 7.38461038317697 2.39789527279837 3.63495111208838 4.0842942263686 +pkc 2.47653840011748 2.9391619220656 3.19458313229916 3.04927304048202 2.30258509299405 2.83321334405622 3.48124008933569 6.16120732169508 2.99573227355399 3.29212628660779 3.18221184049661 +pkc 2.26695791535089 2.50959926237837 3.01553490085017 2.4932054526027 0 3.75887182593397 4.0926765051214 6.44888939414686 3.42751468997953 3.87743156065853 3.82209829790016 +pkc 3.27336401015227 2.41591377830105 4.15575319035074 6.29526600143965 4.52396013056255 2.61739583283408 3.35340671782581 6.58340922215876 2.73436750941958 3.40119738166216 3.53514535417189 +pkc 3.52636052461616 2.484906649788 4.34380542185368 5.67675380226828 3.86702563949741 3.62434093297637 4.43438186500781 7.08757370555797 2.79728133483015 3.6609942506244 3.12236492448736 +pkc 3.37416870927424 3.39114704580865 3.20274644293832 2.7408400239252 1.28647402583768 1.6094379124341 2.09556092355972 6.89871453432999 2.97552956623647 3.62434093297637 2.87919845729804 +pkc 3.77734810210154 2.04122032885964 3.92986292355648 4.46129981556839 3.69635146895264 3.2188758248682 4.07414185490458 7.33953769540767 2.87919845729804 3.4626060097908 4.13676527810605 +pkc 3.79548918917219 2.85070650150373 3.04927304048202 3.11351530921037 2.60268968544438 0.845868267577609 2.79728133483015 6.14418563412565 4.20020495292158 4.95582705760126 5.6021188208797 +pkc 3.24649099190117 3.68887945411394 2.9704144655697 2.88480071284671 2.4423470353692 3.53514535417189 4.30811095172371 7.79811262882979 2.54160199346455 3.75185425327532 4.33598269617247 +pkc 4.30000279919529 4.13676527810605 3.03974915897077 2.53369681395743 1.31372366828506 2.88480071284671 3.42751468997953 6.47543271670409 2.1770218700187 3.15700042115011 2.61739583283408 +pkc 2.80336038090653 2.06812778177956 3.23867845216438 3.02042488614436 1.56444054650336 3.53514535417189 4.42484663185681 7.40245152081824 2.42480272571829 3.29953372788566 3.52636052461616 +pkc 3.65065824129374 3.11351530921037 3.13113691056019 2.98568193770049 1.48387468945875 3.23080439573347 3.53514535417189 5.89989735358249 2.25758772706331 3.40119738166216 4.03777421073371 +pkc 3.41772668361337 2.76000994003292 3.38099467434464 4.85981240436167 3.35340671782581 4.63472898822964 5.09375020080676 7.34858753092759 1.4747630091075 2.26695791535089 2.24812890719799 +pkc 3.58905911883173 3.56953269648137 3.37416870927424 3.8308129500026 2.68784749378469 2.77258872223978 3.23080439573347 5.99893656194668 2.87919845729804 3.81330703248899 3.94931879017184 +pkc 3.32862668882732 2.81540871942271 1.5830939370945 2.13179677201376 2.82137888640921 4.33598269617247 4.84418708645859 7.24064969425547 2.86220088092947 3.23867845216438 3.37416870927424 +pkc 2.64617479738412 2.72785282839839 3.48124008933569 5.72031177660741 4.05698877567833 0 1.60140574073684 5.48479693349065 3.16547504814109 4.01998014693324 4.41642806139121 +pkc 3.73289633953071 3.26575941076705 3.13983261752775 3.26575941076705 1.52822785700856 0.73716406597672 2.91235066461494 5.89164421182577 2.61739583283408 3.37416870927424 3.03974915897077 +pkc 3.03013370027132 3.35340671782581 2.53369681395743 3.71357206670431 2.33214389523559 3.21084365317094 3.71357206670431 6.45833828334479 2.52572864430826 2.92316158071916 4.23700086262362 +pkc 2.79728133483015 2.91235066461494 3.07731226054641 2.63188884013665 1.83418018511201 3.20274644293832 3.59731226058845 6.46769872610435 2.61006979274201 3.62434093297637 4.05698877567833 +pkc 3.4904285153901 2.36085400111802 3.08648663682246 3.9926809084456 2.36085400111802 3.16547504814109 3.49953328238302 5.66642668811243 2.70805020110221 3.4626060097908 3.72328088083127 +pkc 4.70953020131233 4.67282883446191 2.57261223020711 2.87919845729804 1.9154509415706 3.03013370027132 3.55248682920838 6.62936325343745 2.4423470353692 3.09557760852371 3.65065824129374 +pkc 2.63188884013665 3.67882911826043 2.73436750941958 3.11351530921037 1.96009478404727 3.43720781918519 3.76815263500844 5.98141421125448 4.28082412916472 5.11799381241676 5.91889385427315 +pkc 4.44382703557933 4.16511363311031 1.92424865227413 2.61739583283408 1.69927861643389 3.4904285153901 4.14630430115281 7.59135704669855 2.41591377830105 2.91235066461494 3.80443779474821 +pkc 4.22683374526818 4.15575319035074 3.26575941076705 3.14845336057165 1.33236601909433 1.6094379124341 2.14124194258528 6.30444880242198 3.17387845893747 3.71357206670431 3.96651119071222 +pkc 2.80336038090653 2.10413415427021 3.01553490085017 4.74493212836325 2.9704144655697 1.42069578783722 2.77881927199042 6.11589212548303 2.13179677201376 2.85070650150373 3.08648663682246 +pkc 2.55722731136763 2.73436750941958 3.16547504814109 2.70136121295141 1.34025042261848 4.13676527810605 4.84418708645859 8.01400499477946 2.60268968544438 2.76000994003292 3.87743156065853 +pkc 2.45958884180371 2.67414864942653 3.06805293513362 2.61006979274201 2.36085400111802 4.23700086262362 4.68213122712422 7.6275443904885 2.21266038546606 3.10458667846607 3.37416870927424 +pkc 2.61739583283408 3.62434093297637 2.92316158071916 3.17387845893747 1.98787434815435 4.15575319035074 4.68213122712422 6.45833828334479 1.8531680973567 2.82137888640921 2.88480071284671 +pkc 3.12236492448736 2.46809953147162 3.09557760852371 3.14845336057165 2.23964529322017 4.67282883446191 5.61312810638807 8.14902386805177 2.92316158071916 3.60549784517489 3.35340671782581 +pkc 2.99573227355399 2.57261223020711 3.25424296870549 4.55071400019203 2.3887627892351 3.56953269648137 4.14630430115281 7.05185562295589 2.39789527279837 3.21084365317094 3.81330703248899 +pkc 2.58021682959233 2.58776403522771 2.1770218700187 3.20274644293832 3.2188758248682 0.943905898907128 2.75366071235426 6.10702288774225 3.39114704580865 4.01096295328305 4.19116874685764 +pkc 2.23964529322017 2.94968833505258 3.9759363311718 4.65396035015752 3.56953269648137 4.20020495292158 4.77068462446567 7.57353126274595 2.53369681395743 3.36384159511839 3.15700042115011 +pkc 3.85014760171006 3.47196645255036 3.71357206670431 5.53338948872752 3.59731226058845 1.68268837417369 3.26575941076705 6.24222326545517 2.61739583283408 3.27336401015227 3.53514535417189 +pkc 3.23867845216438 2.19499988231411 4.54223038621422 6.47543271670409 4.67282883446191 3.40784192438082 3.63495111208838 6.22455842927536 3.36384159511839 3.98527346716774 3.73289633953071 +pkc 4.19116874685764 3.01553490085017 2.36085400111802 5.17048399503815 2.83321334405622 3.93963817246112 4.3528552573736 6.19644412779452 3.29212628660779 3.74242022104197 3.8416005411316 +pkc 1.93441576962958 1.84371920815877 3.20274644293832 2.81540871942271 1.83418018511201 2.58776403522771 2.68102152871429 6.16120732169508 2.02419306744936 3.92197333628131 4.34380542185368 +pkc 4.47960696301275 4.11903717481247 3.07731226054641 3.2846635654062 1.74571553072665 4.47049528266149 5.06259503302697 7.93307977188041 2.83321334405622 2.9704144655697 3.91202300542815 +pkc 2.68784749378469 3.08648663682246 0.165514438477573 1.75440368268429 2.41591377830105 2.05027016437956 2.56494935746154 6.31354804627709 3.12236492448736 3.48124008933569 4.01096295328305 +pkc 2.2935443483419 3.07731226054641 2.98568193770049 2.9391619220656 1.96009478404727 3.50855589998265 3.92986292355648 6.27852142416584 2.97552956623647 3.75887182593397 3.80443779474821 +pkc 3.95699637107088 3.42751468997953 2.71469474382088 4.22683374526818 0.672944473242426 4.56954300834494 4.88280192258637 6.04500531403601 2.25758772706331 2.16791018966744 3.41772668361337 +pkc 3.8416005411316 3.4626060097908 0 0.00995033085316809 2.20386912005489 0.943905898907128 3.32862668882732 6.16961073249146 2.31253542384721 3.58073729549423 3.96651119071222 +pkc 4.58700621536042 4.02891675689965 2.51769647261099 5.29831736654804 2.92316158071916 3.6609942506244 4.10098910494077 6.66440902035041 2.9391619220656 3.03013370027132 3.65065824129374 +pkc 2.79116510781272 2.23964529322017 3.24649099190117 2.47653840011748 0.647103242058538 5.01063529409626 5.41610040220442 7.74413662762799 2.89591193827178 3.51749783735832 3.23080439573347 +pkc 2.68784749378469 2.31253542384721 2.01490302054226 4.20020495292158 1.22377543162212 2.90690105984738 3.65065824129374 6.96129604591017 2.24812890719799 3.76815263500844 4.20916023665068 +pkc 2.2935443483419 2.60268968544438 3.49953328238302 4.04830062372069 3.05870707271538 2.46809953147162 3.37416870927424 6.38687931936265 2.72785282839839 3.2846635654062 4.03777421073371 +pkc 3.10458667846607 2.34180580614733 2.80336038090653 2.85070650150373 2.68784749378469 3.23867845216438 3.10458667846607 5.53338948872752 3.55248682920838 4.30811095172371 4.66343909411207 +pkc 2.65324196460721 2.35137525716348 3.8416005411316 5.71042701737487 4.15575319035074 3.23080439573347 3.65065824129374 5.97126183979046 2.96010509591084 3.7864597824528 3.98527346716774 +pkc 3.34638914516716 3.4904285153901 3.36384159511839 3.56104608260405 2.47653840011748 4.66343909411207 5.19849703126583 7.46565531013406 1.83418018511201 3.20274644293832 3.80443779474821 +pkc 2.57261223020711 3.31054301339402 2.76000994003292 3.39114704580865 2.37024374146786 1.74571553072665 2.79116510781272 6.12468339089421 2.57261223020711 3.48124008933569 4.04830062372069 +pkc 3.98527346716774 2.05027016437956 3.18221184049661 3.89385903480047 1.43031124653666 3.20274644293832 3.52636052461616 6.12468339089421 1.98787434815435 3.29212628660779 4.31748811353631 +pkc 3.05870707271538 2.71469474382088 2.79116510781272 3.17387845893747 1.52822785700856 3.7864597824528 4.13676527810605 6.44888939414686 3.6163087612791 4.20916023665068 5.01063529409626 +pkc 1.89761985992753 1.82616089594539 3.13113691056019 3.55248682920838 0.425267735404344 3.29953372788566 3.64283551561253 6.16120732169508 2.56494935746154 2.88480071284671 3.63495111208838 +pkc 3.27336401015227 2.42480272571829 2.40694510831829 3.37416870927424 2.36085400111802 0 1.17865499634165 5.72031177660741 4.29045944114839 5.05624580534831 5.46806014113513 +pkc 3.05870707271538 2.65324196460721 3.10458667846607 3.85014760171006 3.03013370027132 4.88280192258637 5.27811465923052 7.1777824161952 2.40694510831829 3.04927304048202 4.07414185490458 +pkc 3.11351530921037 3.42751468997953 3.19458313229916 2.90690105984738 2.56494935746154 3.42751468997953 3.76815263500844 5.8636311755981 2.39789527279837 2.81540871942271 3.52636052461616 +pkc 3.45315712059287 2.63188884013665 2.64617479738412 3.07731226054641 0 2.06812778177956 3.16547504814109 6.42162226780652 2.91235066461494 3.74242022104197 4.79579054559674 +pkc 2.51769647261099 1.54756250871601 2.66025953726586 4.3267781604434 2.06812778177956 2.33214389523559 3.50855589998265 6.68336094576627 0.900161349944271 1.87946504964716 3.51749783735832 +pkc 4.11087386417331 2.66025953726586 1.84371920815877 5.43372200355424 2.96010509591084 2.21266038546606 2.50959926237837 6.26909628370626 2.7408400239252 3.21084365317094 3.58073729549423 +pkc 2.77258872223978 2.1770218700187 2.72785282839839 4.07414185490458 2.89591193827178 3.59731226058845 3.96651119071222 5.92692602597041 2.84490938381941 3.40119738166216 3.66867674679642 +pkc 4.3528552573736 4.65396035015752 3.02042488614436 4.83628190695148 2.31253542384721 2.9704144655697 3.50855589998265 6.20657592672493 2.484906649788 2.75366071235426 3.96651119071222 +pkc 4.13676527810605 3.89385903480047 3.29953372788566 3.03013370027132 1.92424865227413 2.70805020110221 3.59731226058845 6.69208374250663 2.16791018966744 3.44361809754611 4.27249074760558 +pkc 3.04927304048202 2.85070650150373 1.4747630091075 0.636576829071551 0.99694863489161 2.64617479738412 3.41772668361337 6.41345895716736 2.72785282839839 3.49953328238302 3.92197333628131 +pkc 2.84490938381941 2.64617479738412 2.77258872223978 3.6163087612791 2.4932054526027 2.80336038090653 3.39114704580865 6.24222326545517 2.60268968544438 3.50855589998265 3.50855589998265 +pkc 3.76815263500844 3.26575941076705 3.14845336057165 2.77258872223978 1.15057202759882 3.69635146895264 4.07414185490458 6.37672694789863 2.34180580614733 3.35340671782581 4.04830062372069 +pkc 1.84371920815877 2.31253542384721 3.2188758248682 2.85070650150373 0.314810739840034 1.26694760348732 3.07731226054641 6.23244801655052 2.15871472257434 3.23080439573347 3.87743156065853 +pkc 2.62466859216316 2.83321334405622 2.24812890719799 5.55682806169954 3.01553490085017 3.4904285153901 3.87743156065853 6.26909628370626 3.08648663682246 3.52636052461616 3.95699637107088 +pkc 3.24649099190117 2.03339760317843 3.88567903008854 5.96357934361845 4.0926765051214 2.33214389523559 3.38099467434464 6.47543271670409 2.30258509299405 3.02042488614436 3.40119738166216 +pkc 2.70136121295141 2.31253542384721 3.19458313229916 2.88480071284671 2.09556092355972 2.80336038090653 3.11351530921037 6.30444880242198 2.57261223020711 3.40119738166216 3.72328088083127 +pkc 3.10458667846607 1.78170913337455 4.05698877567833 6.22455842927536 4.3267781604434 2.40694510831829 3.03974915897077 6.65544035036765 2.35137525716348 2.80336038090653 2.97552956623647 +pkc 2.64617479738412 2.31253542384721 3.4904285153901 3.85862222870103 2.68784749378469 2.66025953726586 4.01096295328305 8.01400499477946 2.57261223020711 3.40119738166216 3.65065824129374 +pkc 3.62434093297637 3.01553490085017 2.64617479738412 5.37063802812766 3.31054301339402 2.88480071284671 3.11351530921037 6.61069604471776 2.67414864942653 3.8308129500026 3.68887945411394 +pkc 2.85070650150373 2.15871472257434 3.12236492448736 3.49953328238302 2.81540871942271 3.81330703248899 3.88567903008854 6.11589212548303 2.80336038090653 3.76815263500844 4.10098910494077 +pkc 2.88480071284671 2.79116510781272 3.96651119071222 5.63121178182137 3.29953372788566 3.40784192438082 3.81330703248899 6.10702288774225 2.36085400111802 3.56104608260405 3.87743156065853 +pkc 3.13113691056019 3.29953372788566 2.1770218700187 3.31054301339402 2.23108909128898 2.34180580614733 3.14845336057165 6.46769872610435 2.77881927199042 2.79728133483015 3.63495111208838 +pkc 3.04927304048202 2.58776403522771 3.85862222870103 2.37024374146786 4.02891675689965 3.9926809084456 4.61512051684126 7.20489251020467 1.67335123817775 4.0842942263686 1.9154509415706 +pkc 2.58021682959233 2.92316158071916 2.97552956623647 3.08648663682246 1.11514159061932 3.45315712059287 3.75185425327532 5.85507192220243 4.13676527810605 4.81218435537242 5.43372200355424 +pkc 2.97552956623647 3.38099467434464 4.05698877567833 6.35088571671474 4.12874598893943 2.90690105984738 3.35340671782581 6.46769872610435 2.61006979274201 3.62434093297637 3.79548918917219 +pkc 2.36085400111802 2.42480272571829 3.07731226054641 2.71469474382088 1.83418018511201 2.18605127673809 4.46129981556839 8.14002395246292 3.4904285153901 4.14630430115281 4.67282883446191 +pkc 2.52572864430826 2.76000994003292 3.64283551561253 5.35185813347607 3.3178157727231 2.14124194258528 3.18221184049661 7.33953769540767 2.80336038090653 3.43720781918519 3.4626060097908 +pkc 2.63188884013665 2.39789527279837 3.26575941076705 3.21084365317094 0.703097511413113 2.80336038090653 3.3178157727231 6.5206211275587 2.34180580614733 3.09557760852371 4.11087386417331 +pkc 3.09557760852371 1.66392609771817 3.16547504814109 3.58905911883173 2.43361335540045 2.37024374146786 3.10458667846607 6.10702288774225 2.34180580614733 3.2188758248682 3.58905911883173 +pkc 2.63188884013665 1.67335123817775 3.23867845216438 2.81540871942271 1.96009478404727 3.14845336057165 3.93963817246112 7.01571242048723 2.4423470353692 2.72785282839839 2.86220088092947 +pkc 3.09557760852371 2.99573227355399 1.94304891677428 2.82137888640921 2.89591193827178 3.34638914516716 3.8416005411316 5.88332238848828 2.77881927199042 3.75185425327532 4.80402104473326 +pkc 4.0842942263686 3.93963817246112 3.38099467434464 5.85507192220243 3.66867674679642 3.6609942506244 3.98527346716774 6.26909628370626 2.81540871942271 3.6163087612791 3.51749783735832 +pkc 2.91235066461494 2.12226153886276 2.97552956623647 3.18221184049661 1.37624402526639 2.9704144655697 3.58073729549423 6.75460409948796 1.17865499634165 4.3528552573736 2.26695791535089 +pkc 3.53514535417189 3.53514535417189 2.77881927199042 4.20916023665068 2.85070650150373 3.80443779474821 4.00186370942794 5.89164421182577 1.59127394180643 2.12226153886276 3.44361809754611 +pkc 2.63188884013665 2.7408400239252 2.00552585872967 2.79728133483015 2.43361335540045 3.15700042115011 3.76815263500844 5.98141421125448 2.60268968544438 3.51749783735832 4.11903717481247 +pkc 3.11351530921037 2.66025953726586 2.86220088092947 4.87519732320115 3.27336401015227 4.53367418428302 4.99043258677874 7.49220304261874 2.4932054526027 3.75887182593397 3.23867845216438 +pkc 3.34638914516716 3.4626060097908 3.20274644293832 3.38099467434464 0.989541193613748 3.34638914516716 3.75185425327532 6.13339804299665 3.09557760852371 3.69635146895264 3.91202300542815 +pkc 3.62434093297637 0.982078472412158 3.19458313229916 5.13579843705026 2.92316158071916 3.3178157727231 3.85014760171006 6.12468339089421 2.50143595173921 3.10458667846607 3.3178157727231 +pkc 3.07731226054641 2.81540871942271 2.85070650150373 2.9338568698359 2.63188884013665 4.11087386417331 4.60517018598809 6.94408720822953 2.43361335540045 3.55248682920838 3.88567903008854 +pkc 2.70136121295141 2.47653840011748 3.06805293513362 3.13113691056019 2.41591377830105 3.87743156065853 4.38077585277223 6.24222326545517 3.98527346716774 4.69134788222914 5.0998664278242 +pkc 2.96010509591084 2.10413415427021 2.76000994003292 3.04927304048202 1.77155676191054 1.5830939370945 3.00568260440716 6.79122146272619 2.72785282839839 3.13983261752775 3.73289633953071 +pkc 3.2846635654062 3.45315712059287 1.9154509415706 2.98568193770049 1.81645208181843 4.20916023665068 4.74493212836325 7.44716835960004 3.37416870927424 3.9926809084456 3.62434093297637 +pkc 2.83321334405622 2.60268968544438 2.70805020110221 5.82008293035236 3.54385368206368 3.24649099190117 3.75185425327532 5.90808293816893 3.27336401015227 3.87743156065853 3.8308129500026 +pkc 3.35340671782581 4.01998014693324 2.61739583283408 5.13579843705026 3.3357695763397 3.16547504814109 3.56104608260405 6.25190388316589 2.46809953147162 3.03013370027132 3.85014760171006 +pkc 2.50959926237837 2.24812890719799 2.85070650150373 2.61006979274201 2.73436750941958 3.50855589998265 4.05698877567833 6.07993319509559 2.81540871942271 3.29212628660779 4.22683374526818 +pkc 2.57261223020711 3.16547504814109 2.46809953147162 4.94875989037817 2.70805020110221 2.53369681395743 3.34638914516716 6.34035930372775 2.62466859216316 2.90690105984738 3.95699637107088 +pkc 3.45315712059287 3.12236492448736 3.02042488614436 4.84418708645859 2.77881927199042 2.7408400239252 3.38099467434464 6.19644412779452 2.55722731136763 3.65065824129374 3.59731226058845 +pkc 3.47196645255036 2.99573227355399 3.04927304048202 3.03013370027132 2.00552585872967 4.44382703557933 4.89034912822175 7.66340766489348 2.2213750375685 3.2188758248682 3.98527346716774 +pkc 2.84490938381941 2.65324196460721 3.07731226054641 2.62466859216316 1.79840401194672 3.4626060097908 3.91202300542815 6.32256523992728 1.69927861643389 3.35340671782581 3.79548918917219 +pkc 2.19499988231411 1.82616089594539 3.03013370027132 2.61739583283408 2.55722731136763 3.75185425327532 4.12874598893943 6.29526600143965 2.66025953726586 3.12236492448736 3.93963817246112 +pkc 2.61739583283408 2.72785282839839 2.86220088092947 3.13113691056019 2.25758772706331 2.9391619220656 3.75887182593397 6.20657592672493 2.27521389619791 4.0842942263686 3.87743156065853 +pkc 4.17284762371004 3.64283551561253 3.92197333628131 5.59471137960184 3.80443779474821 2.46809953147162 2.86220088092947 6.20657592672493 2.63188884013665 3.45315712059287 3.70622809244855 +pkc 2.99573227355399 2.57261223020711 2.88480071284671 3.80443779474821 1.68268837417369 1.34807314829969 2.1770218700187 5.72031177660741 2.83321334405622 3.29953372788566 4.17284762371004 +pkc 2.47653840011748 3.03974915897077 2.40694510831829 1.07840958135059 3.38099467434464 1.18784342239605 3.06805293513362 6.24222326545517 2.28442112236637 2.87919845729804 3.39114704580865 +pkc 0.828551817566148 2.94968833505258 2.92316158071916 2.53369681395743 0.951657875711446 3.51749783735832 3.76815263500844 6.32256523992728 2.31253542384721 2.46809953147162 0.00995033085316809 +pkc 4.11903717481247 3.52636052461616 1.26694760348732 2.2213750375685 2.14943391349987 3.07731226054641 3.75887182593397 6.76388490856244 2.19499988231411 3.15700042115011 3.3357695763397 +pkc 3.23080439573347 3.03974915897077 2.73436750941958 3.24649099190117 2.32238772029023 1.78170913337455 2.07819075977818 6.48463523563525 2.61739583283408 2.88480071284671 3.81330703248899 +pkc 3.29953372788566 2.70136121295141 2.7408400239252 3.19458313229916 2.54160199346455 3.08648663682246 3.56953269648137 5.87211778947542 4.56954300834494 4.86753445045558 3.6163087612791 +pkc 2.50143595173921 2.2935443483419 3.07731226054641 5.63121178182137 4.06560209335645 2.42480272571829 3.03013370027132 6.29526600143965 2.484906649788 3.19458313229916 3.58073729549423 +pkc 3.89385903480047 3.56104608260405 3.24649099190117 3.62434093297637 2.30258509299405 1.65441127807683 2.4932054526027 6.70073110954781 2.30258509299405 3.07731226054641 3.82209829790016 +pkc 2.43361335540045 1.4655675420144 2.40694510831829 4.56954300834494 2.66025953726586 3.09557760852371 3.7864597824528 6.79122146272619 2.16791018966744 3.4904285153901 4.02891675689965 +pkc 3.03013370027132 2.20386912005489 3.15700042115011 3.01553490085017 1.52822785700856 4.05698877567833 4.40671924726425 6.82654522355659 3.95699637107088 4.38949864951258 4.70953020131233 +pkc 2.63188884013665 2.82137888640921 3.40119738166216 3.64283551561253 2.79116510781272 3.77734810210154 4.50645421304893 7.69938940625674 3.73289633953071 4.33598269617247 5.05624580534831 +pkc 4.50645421304893 3.75887182593397 2.56494935746154 2.64617479738412 3.82209829790016 4.47049528266149 4.95582705760126 7.82524529143177 3.00568260440716 3.59731226058845 4.07414185490458 +pkc 3.53514535417189 3.71357206670431 1.6467336971778 1.77155676191054 2.57261223020711 3.23867845216438 3.95699637107088 5.72031177660741 2.70136121295141 3.58905911883173 3.72328088083127 +pkc 2.86789890204411 2.484906649788 2.37024374146786 2.77258872223978 1.35840915763035 5.04342511691925 5.58724865840025 8.17611034223734 2.83321334405622 3.4626060097908 4.02891675689965 +pkc 2.9338568698359 2.99573227355399 1.16938135955632 5.77455154554441 3.6163087612791 4.16511363311031 4.47960696301275 6.92559519711047 2.76000994003292 3.20274644293832 3.72328088083127 +pkc 2.77258872223978 2.67414864942653 2.80336038090653 5.16478597392351 2.91235066461494 3.38099467434464 3.64283551561253 5.7037824746562 2.86220088092947 3.72328088083127 4.05698877567833 +pkc 2.51769647261099 3.56953269648137 2.39789527279837 4.83628190695148 2.97552956623647 1.55603713570699 3.43720781918519 6.54821910276237 2.3887627892351 3.39114704580865 3.53514535417189 +pkc 3.14845336057165 2.67414864942653 3.03013370027132 5.62040086571715 3.21084365317094 2.94968833505258 4.34380542185368 7.40245152081824 3.75887182593397 4.28082412916472 4.96284463025991 +pkc 2.05027016437956 2.9704144655697 3.75887182593397 5.71042701737487 4.01998014693324 1.31372366828506 2.80336038090653 6.42162226780652 2.4932054526027 2.92316158071916 3.29953372788566 +pkc 2.89591193827178 2.77881927199042 3.40784192438082 3.45315712059287 2.56494935746154 4.44382703557933 4.8283137373023 7.12367278520461 3.20274644293832 3.90399083373088 3.8416005411316 +pkc 4.11087386417331 1.73518911773966 3.25424296870549 3.27336401015227 2.01490302054226 3.18221184049661 3.81330703248899 6.22455842927536 2.89591193827178 3.36384159511839 4.14630430115281 +pkc 3.2846635654062 2.79728133483015 3.07731226054641 3.38099467434464 1.38629436111989 2.77258872223978 3.09557760852371 6.23244801655052 4.21803603456465 5.01727983681492 5.85507192220243 +pkc 2.2213750375685 2.80336038090653 2.96010509591084 3.04927304048202 2.62466859216316 2.94968833505258 3.2846635654062 6.48463523563525 4.20916023665068 4.97673374242057 5.80211837537706 +pkc 3.67882911826043 2.79116510781272 3.4904285153901 3.49953328238302 2.04122032885964 4.13676527810605 4.54223038621422 7.50163445788341 2.46809953147162 3.39114704580865 3.93963817246112 +pkc 5.05624580534831 4.30811095172371 3.48124008933569 4.00186370942794 2.62466859216316 3.47196645255036 3.89385903480047 6.75460409948796 2.57261223020711 3.6609942506244 4.05698877567833 +pkc 3.11351530921037 2.50959926237837 3.55248682920838 5.77455154554441 4.03777421073371 3.07731226054641 3.63495111208838 6.28785856016178 3.04927304048202 3.13113691056019 3.42751468997953 +pkc 2.67414864942653 2.4932054526027 3.31054301339402 2.86220088092947 2.08691355651854 4.38949864951258 4.76217393479776 5.93753620508243 1.45628673293993 2.35137525716348 3.80443779474821 +pkc 4.83628190695148 5.36129216570943 2.9391619220656 4.70953020131233 3.03974915897077 2.66025953726586 3.31054301339402 6.22455842927536 2.484906649788 2.77258872223978 2.9391619220656 +pkc 3.16547504814109 2.39789527279837 3.72328088083127 4.3267781604434 1.10525683138678 4.44382703557933 4.65396035015752 5.91889385427315 2.98568193770049 3.51749783735832 4.15575319035074 +pkc 3.27336401015227 2.00552585872967 3.06805293513362 4.48863636973214 2.31253542384721 2.77258872223978 3.40119738166216 6.16120732169508 0.837247524533702 1.8531680973567 2.36085400111802 +pkc 3.66867674679642 3.88567903008854 2.87919845729804 2.43361335540045 0.657520002916794 4.36182392735636 4.79579054559674 7.08757370555797 3.20274644293832 3.80443779474821 3.9759363311718 +pkc 3.08648663682246 3.01553490085017 4.01998014693324 6.18001665365257 4.11087386417331 3.3357695763397 3.79548918917219 6.62936325343745 2.46809953147162 2.85070650150373 4.0842942263686 +pkc 3.13113691056019 2.00552585872967 4.38949864951258 5.63121178182137 3.75185425327532 3.31054301339402 3.81330703248899 7.26752542782817 4.18205014264121 4.72738781871234 4.67282883446191 +pkc 2.72785282839839 2.63188884013665 3.13983261752775 2.83321334405622 0.405465108108164 2.7408400239252 3.39114704580865 6.84481547920826 1.34025042261848 3.58073729549423 2.58776403522771 +pkc 3.40784192438082 2.68784749378469 2.86789890204411 3.37416870927424 2.33214389523559 1.16002091679675 2.87919845729804 5.66642668811243 2.54160199346455 3.4904285153901 3.59731226058845 +pkc 3.16547504814109 2.83321334405622 3.21084365317094 4.48863636973214 2.70136121295141 3.67882911826043 4.07414185490458 6.08904487544685 2.08691355651854 2.7408400239252 2.40694510831829 +pkc 2.86220088092947 2.80336038090653 2.96010509591084 5.06259503302697 3.32862668882732 2.2213750375685 3.31054301339402 6.4393503711001 2.9391619220656 3.29953372788566 4.34380542185368 +pkc 2.89591193827178 3.05870707271538 2.77881927199042 4.69134788222914 2.68784749378469 2.87919845729804 3.36384159511839 6.23244801655052 2.37954613413017 3.25424296870549 4.16511363311031 +pkc 3.19458313229916 2.88480071284671 1.12492959698548 2.40694510831829 0.756121979721334 2.88480071284671 3.64283551561253 6.26909628370626 2.28442112236637 2.82137888640921 3.6609942506244 +pkc 3.35340671782581 2.77881927199042 3.6609942506244 5.28826703069454 3.77734810210154 3.9759363311718 4.22683374526818 6.46769872610435 0.457424847038875 1.94304891677428 2.12226153886276 +pkc 2.65324196460721 2.07819075977818 1.9154509415706 2.54160199346455 3.06805293513362 4.93447393313069 5.28826703069454 7.1777824161952 1.56444054650336 2.3887627892351 1.07840958135059 +pkc 3.94931879017184 3.4904285153901 4.3528552573736 6.13339804299665 4.15575319035074 3.31054301339402 3.67882911826043 6.30444880242198 3.75185425327532 4.3267781604434 3.70622809244855 +pkc 1.68268837417369 2.86789890204411 3.56953269648137 6.32256523992728 4.11903717481247 3.4904285153901 4.01998014693324 6.73696695800186 3.60549784517489 4.11903717481247 4.8283137373023 +pkc 2.484906649788 2.28442112236637 3.32862668882732 3.17387845893747 2.05923883436232 3.95699637107088 4.3267781604434 6.12468339089421 2.51769647261099 3.13113691056019 3.53514535417189 +pkc 4.50645421304893 4.34380542185368 4.39814601655377 5.8111409929767 4.17284762371004 0.854415328156068 3.51749783735832 5.90808293816893 0 3.90399083373088 1.8531680973567 +pkc 2.54160199346455 2.56494935746154 2.81540871942271 4.60517018598809 2.73436750941958 2.05027016437956 3.21084365317094 6.70073110954781 3.23867845216438 4.27249074760558 4.71849887129509 +pkc 2.99573227355399 2.66025953726586 2.52572864430826 4.83628190695148 2.68784749378469 2.52572864430826 3.77734810210154 6.7093043402583 2.4423470353692 3.04927304048202 0 +pkc 2.56494935746154 2.11384296839717 3.13983261752775 3.18221184049661 1.99741770620125 4.04830062372069 4.42484663185681 6.95272864462487 2.58021682959233 3.58073729549423 4.07414185490458 +pkc 2.51769647261099 2.23964529322017 3.71357206670431 4.34380542185368 3.15700042115011 3.96651119071222 4.55071400019203 6.98007594056176 2.25758772706331 3.05870707271538 3.58905911883173 +pkc 2.06812778177956 3.31054301339402 2.9704144655697 4.99043258677874 3.31054301339402 3.02042488614436 3.21084365317094 6.12468339089421 2.84490938381941 3.14845336057165 3.92197333628131 +pkc 4.10098910494077 3.38099467434464 3.29953372788566 2.80336038090653 0.727548607277278 2.09556092355972 3.2846635654062 6.36818718635049 3.03013370027132 3.6163087612791 3.48124008933569 +pkc 2.3887627892351 2.96010509591084 3.4626060097908 5.5683445037611 4.10098910494077 2.62466859216316 2.68102152871429 6.66440902035041 4.19116874685764 4.57779898919196 5.31811999384422 +pkc 2.85070650150373 2.90690105984738 2.65324196460721 2.71469474382088 2.16791018966744 3.89385903480047 4.55071400019203 7.65444322647011 2.58021682959233 3.43720781918519 3.8308129500026 +pkc 2.63188884013665 2.71469474382088 3.27336401015227 3.59731226058845 2.21266038546606 3.48124008933569 3.60549784517489 6.56526497003536 1.23256026117785 4.29045944114839 1.01523067972906 +pkc 4.14630430115281 4.17284762371004 2.2935443483419 4.93447393313069 2.68784749378469 4.45201900649392 4.79579054559674 5.89164421182577 3.41772668361337 3.8308129500026 3.39114704580865 +pkc 3.50855589998265 3.36384159511839 2.50143595173921 3.07731226054641 2.66025953726586 3.11351530921037 4.31748811353631 7.49220304261874 2.70805020110221 3.23867845216438 3.64283551561253 +pkc 2.50143595173921 2.54160199346455 2.79728133483015 2.84490938381941 2.05027016437956 1.15057202759882 3.12236492448736 6.65544035036765 2.23964529322017 2.82137888640921 3.6609942506244 +pkc 2.24812890719799 2.39789527279837 3.65065824129374 4.00186370942794 2.87919845729804 4.5152454784601 5.10594547390058 7.55538194424027 2.9338568698359 3.40784192438082 3.6609942506244 +pkc 3.65065824129374 3.41772668361337 3.20274644293832 3.43720781918519 3.19458313229916 3.3357695763397 3.58905911883173 6.07073772800249 2.51769647261099 3.36384159511839 4.11087386417331 +pkc 4.3267781604434 4.40671924726425 3.79548918917219 3.9926809084456 3.14845336057165 3.01553490085017 3.36384159511839 6.27852142416584 2.52572864430826 3.62434093297637 3.82209829790016 +pkc 3.06805293513362 2.33214389523559 2.97552956623647 5.2257466737132 3.15700042115011 2.12226153886276 3.37416870927424 6.73696695800186 2.54160199346455 3.36384159511839 3.88567903008854 +pkc 2.77881927199042 2.60268968544438 3.18221184049661 1.96990565461153 2.13179677201376 2.99573227355399 3.6163087612791 6.76388490856244 2.73436750941958 3.40119738166216 3.9759363311718 +pkc 2.83321334405622 2.88480071284671 0 2.70805020110221 2.32238772029023 3.55248682920838 4.15575319035074 6.02586597382531 2.42480272571829 3.24649099190117 3.56953269648137 +pkc 3.24649099190117 2.15871472257434 2.63188884013665 3.04927304048202 1.82616089594539 4.30000279919529 4.83628190695148 7.48324441607385 5.11799381241676 5.99893656194668 6.4393503711001 +pkc 2.05923883436232 2.25758772706331 3.05870707271538 6.05443934626937 3.87743156065853 3.51749783735832 4.01096295328305 6.20657592672493 3.35340671782581 3.95699637107088 3.94931879017184 +pkc 3.15700042115011 3.06805293513362 3.17387845893747 2.97552956623647 1.6467336971778 4.37071287477361 5.18178355029209 7.77106708606541 2.96010509591084 3.6609942506244 3.86702563949741 +pkc 2.79728133483015 2.55722731136763 3.14845336057165 2.97552956623647 3.04927304048202 3.3357695763397 4.07414185490458 7.06987412845857 2.90690105984738 3.45315712059287 3.70622809244855 +pkc 2.58776403522771 2.23108909128898 2.71469474382088 2.70136121295141 1.79840401194672 4.90527477843843 5.24174701505964 5.61312810638807 2.62466859216316 2.76000994003292 3.54385368206368 +pkc 4.17284762371004 4.17284762371004 2.96010509591084 2.97552956623647 2.79116510781272 4.44382703557933 4.84418708645859 7.56423847517049 0.378436435720245 2.37024374146786 3.00568260440716 +pkc 2.12226153886276 3.23867845216438 3.15700042115011 3.23080439573347 2.65324196460721 0.73716406597672 2.36085400111802 5.37989735354046 3.75887182593397 4.22683374526818 4.07414185490458 +pkc 2.90690105984738 2.86220088092947 2.98568193770049 3.10458667846607 0.970778917158225 4.77912349311153 5.25227342804663 7.89729647259588 2.53369681395743 3.3357695763397 3.2846635654062 +pkc 1.79840401194672 3.4904285153901 3.18221184049661 3.19458313229916 0.0582689081239758 4.42484663185681 4.97673374242057 7.47420480649612 2.23108909128898 2.70805020110221 1.99741770620125 +pkc 2.79116510781272 2.23108909128898 3.56953269648137 5.18178355029209 3.29953372788566 4.62497281328427 5.05624580534831 7.43838353004431 2.30258509299405 2.80336038090653 3.96651119071222 +pkc 3.81330703248899 3.50855589998265 3.07731226054641 2.89591193827178 2.10413415427021 3.60549784517489 4.11903717481247 7.00669522683704 2.4932054526027 2.85070650150373 3.85862222870103 +pkc 2.23964529322017 2.97552956623647 2.70136121295141 4.52396013056255 2.65324196460721 3.75887182593397 4.20020495292158 6.91671502035361 3.63495111208838 4.03777421073371 4.0842942263686 +pkc 2.11384296839717 2.68102152871429 3.68887945411394 5.88332238848828 3.80443779474821 5.58724865840025 5.90808293816893 8.04109100370863 2.70805020110221 3.23080439573347 3.64283551561253 +pkc 2.55722731136763 2.65324196460721 3.12236492448736 3.3357695763397 1.74571553072665 2.7408400239252 3.4904285153901 6.18001665365257 2.65324196460721 3.21084365317094 3.87743156065853 +pkc 1.00795792039998 1.13462272619114 3.80443779474821 5.35185813347607 3.71357206670431 3.09557760852371 3.67882911826043 6.19644412779452 2.47653840011748 3.39114704580865 3.52636052461616 +pkc 3.07731226054641 2.82137888640921 3.02042488614436 4.68213122712422 2.81540871942271 2.53369681395743 3.18221184049661 6.29526600143965 2.87919845729804 3.70622809244855 3.59731226058845 +pkc 2.91235066461494 2.77258872223978 3.23080439573347 2.484906649788 2.18605127673809 2.86220088092947 3.47196645255036 6.36818718635049 2.36085400111802 3.48124008933569 3.8416005411316 +pkc 2.9704144655697 2.70805020110221 2.7408400239252 5.18178355029209 2.47653840011748 4.17284762371004 4.42484663185681 6.91671502035361 3.06805293513362 3.24649099190117 3.75185425327532 +pkc 3.6609942506244 3.41772668361337 3.12236492448736 3.08648663682246 1.90657514365664 2.53369681395743 3.15700042115011 6.36818718635049 1.4747630091075 2.80336038090653 4.3267781604434 +pkc 2.77258872223978 2.87919845729804 3.02042488614436 3.04927304048202 1.54756250871601 2.9391619220656 3.67882911826043 5.89989735358249 2.46809953147162 3.21084365317094 3.40119738166216 +pkc 4.39814601655377 4.01998014693324 4.58700621536042 6.34035930372775 4.12874598893943 4.65396035015752 5.15329159449778 7.77106708606541 2.72785282839839 2.24812890719799 3.93963817246112 +pkc 2.91235066461494 2.71469474382088 3.16547504814109 3.27336401015227 1.24990173621434 3.62434093297637 4.02891675689965 6.62936325343745 2.61739583283408 3.12236492448736 3.91202300542815 +pkc 3.16547504814109 2.9391619220656 2.68102152871429 2.62466859216316 1.27815220250019 3.95699637107088 4.22683374526818 6.12468339089421 2.52572864430826 3.37416870927424 3.79548918917219 +pkc 1.16002091679675 2.45958884180371 3.03974915897077 3.11351530921037 1.19694818938897 3.36384159511839 3.79548918917219 6.21460809842219 2.68784749378469 3.31054301339402 3.38099467434464 +pkc 2.96010509591084 2.76000994003292 2.97552956623647 4.05698877567833 3.14845336057165 2.51769647261099 3.23867845216438 6.30444880242198 2.71469474382088 3.58905911883173 3.40784192438082 +pkc 4.44382703557933 4.11903717481247 2.89591193827178 2.89591193827178 1.6094379124341 3.11351530921037 3.51749783735832 7.0335064842877 2.3887627892351 3.08648663682246 3.21084365317094 +pkc 2.20386912005489 2.63188884013665 3.8416005411316 4.7361984483945 2.54160199346455 2.30258509299405 3.44361809754611 6.71901315438526 2.14124194258528 3.2188758248682 3.40784192438082 +pkc 5.04342511691925 4.69134788222914 1.27815220250019 1.95160817016995 2.1770218700187 2.75366071235426 3.23867845216438 6.60258789218934 2.36085400111802 3.00568260440716 3.56104608260405 +pkc 2.14943391349987 2.32238772029023 2.76000994003292 3.13983261752775 0.703097511413113 4.55071400019203 4.80402104473326 6.11589212548303 2.79116510781272 3.88567903008854 4.86753445045558 +pkc 4.3267781604434 4.02891675689965 2.92316158071916 3.4904285153901 2.36085400111802 2.9338568698359 3.49953328238302 6.25958146406492 2.46809953147162 3.4904285153901 3.72328088083127 +pkc 3.3178157727231 3.6163087612791 4.24563400976833 4.91998092582813 3.4904285153901 2.77258872223978 3.53514535417189 6.52941883826223 2.4932054526027 2.9338568698359 3.38099467434464 +pkc 3.20274644293832 3.56104608260405 2.75366071235426 3.91202300542815 2.68102152871429 3.6609942506244 4.24563400976833 6.1527326947041 2.26695791535089 2.82137888640921 3.54385368206368 +pkc 3.32862668882732 3.25424296870549 3.37416870927424 3.2188758248682 1.65441127807683 3.79548918917219 4.24563400976833 7.28550654852279 3.35340671782581 3.86702563949741 4.98360662170834 +pkc 2.77881927199042 2.56494935746154 3.14845336057165 2.77881927199042 2.3887627892351 3.63495111208838 3.98527346716774 6.07073772800249 4.00186370942794 4.84418708645859 4.74493212836325 +pkc 3.6163087612791 3.4626060097908 2.28442112236637 5.35185813347607 3.04927304048202 1.92424865227413 2.85070650150373 6.47543271670409 2.92316158071916 3.6163087612791 4.89034912822175 +pkc 2.23964529322017 2.57261223020711 3.00568260440716 3.8308129500026 3.04927304048202 4.06560209335645 4.61512051684126 7.27655640271871 2.24812890719799 2.70136121295141 3.04927304048202 +pkc 3.47196645255036 3.13113691056019 0 1.5830939370945 1.65441127807683 3.3357695763397 3.74242022104197 6.30444880242198 2.14124194258528 3.13113691056019 3.94931879017184 +pkc 2.37954613413017 2.23108909128898 2.33214389523559 5.74620319054015 3.12236492448736 2.70136121295141 3.05870707271538 6.28785856016178 3.25424296870549 4.06560209335645 2.70136121295141 +pkc 2.86789890204411 2.70136121295141 2.61006979274201 2.46809953147162 1.23256026117785 2.88480071284671 3.32862668882732 6.36818718635049 2.27521389619791 3.27336401015227 2.9704144655697 +pkc 2.80336038090653 2.13179677201376 2.77258872223978 2.85070650150373 0.3293037471426 2.86220088092947 3.10458667846607 6.39526159811545 3.4904285153901 3.80443779474821 4.27249074760558 +pkc 2.62466859216316 3.10458667846607 2.56494935746154 4.59612944133594 0.746687947487975 3.75185425327532 3.90399083373088 5.88332238848828 3.29953372788566 4.01096295328305 3.89385903480047 +pkc 2.79116510781272 2.05923883436232 3.50855589998265 5.74620319054015 3.02042488614436 4.254193263164 4.70048036579242 7.6182510978767 3.25424296870549 3.90399083373088 4.20020495292158 +pkc 3.19458313229916 2.31253542384721 3.21084365317094 3.11351530921037 1.49290409617815 1.83418018511201 3.6609942506244 7.10578612948127 2.79116510781272 3.20274644293832 3.50855589998265 +pkc 4.50645421304893 4.13676527810605 0.56531380905006 1.20597080698861 1.69009581545155 3.29953372788566 4.56017282005736 7.23128700432762 3.37416870927424 3.95699637107088 4.66343909411207 +pkc 4.254193263164 4.14630430115281 2.88480071284671 2.64617479738412 2.64617479738412 4.68213122712422 5.08140436498446 7.72621265050753 2.07819075977818 3.11351530921037 3.8308129500026 +pkc 4.02891675689965 3.06805293513362 4.254193263164 5.90808293816893 4.3528552573736 2.85070650150373 3.38099467434464 6.54821910276237 3.66867674679642 4.28082412916472 4.19116874685764 +pkc 3.21084365317094 2.21266038546606 3.13113691056019 6.1527326947041 3.8308129500026 3.36384159511839 3.79548918917219 6.12468339089421 2.23964529322017 2.7408400239252 3.20274644293832 +pkc 2.9704144655697 2.36085400111802 3.04927304048202 3.56953269648137 1.7630170003624 2.52572864430826 2.88480071284671 6.48463523563525 2.53369681395743 2.71469474382088 3.56953269648137 +pkc 2.99573227355399 2.4932054526027 2.80336038090653 2.96010509591084 2.76000994003292 4.56017282005736 5.07517381523383 7.24064969425547 2.30258509299405 3.47196645255036 3.50855589998265 +pkc 3.12236492448736 2.9391619220656 3.96651119071222 5.07517381523383 3.68887945411394 3.36384159511839 3.96651119071222 6.08904487544685 2.64617479738412 3.52636052461616 3.95699637107088 +pkc 2.68784749378469 2.81540871942271 2.37954613413017 2.68784749378469 3.05870707271538 3.24649099190117 3.62434093297637 6.18826412308259 1.8531680973567 3.11351530921037 3.35340671782581 +pkc 3.15700042115011 2.87919845729804 3.26575941076705 5.03043792139244 2.9704144655697 2.68784749378469 3.58905911883173 6.91671502035361 2.27521389619791 3.39114704580865 4.31748811353631 +pkc 3.03974915897077 2.01490302054226 1.4655675420144 2.90690105984738 2.76000994003292 2.83321334405622 3.32862668882732 6.41345895716736 2.51769647261099 3.54385368206368 3.67882911826043 +pkc 2.94968833505258 2.36085400111802 2.50959926237837 3.03974915897077 2.82137888640921 4.01998014693324 4.53367418428302 7.39326309476384 3.43720781918519 4.11903717481247 3.74242022104197 +pkc 4.77912349311153 4.56954300834494 4.11087386417331 6.11589212548303 4.45201900649392 3.02042488614436 3.55248682920838 6.04500531403601 1.94304891677428 3.04927304048202 3.19458313229916 +pkc 3.06805293513362 2.61006979274201 2.61739583283408 3.6163087612791 1.87946504964716 2.86789890204411 3.42751468997953 6.52941883826223 1.31372366828506 2.62466859216316 3.7864597824528 +pkc 3.05870707271538 2.46809953147162 3.13113691056019 5.13579843705026 3.00568260440716 4.23700086262362 4.77068462446567 7.65444322647011 4.00186370942794 4.38077585277223 2.98568193770049 +pkc 2.50959926237837 2.55722731136763 2.63188884013665 2.61739583283408 2.09556092355972 2.58021682959233 4.18205014264121 7.26752542782817 2.61006979274201 3.48124008933569 3.93963817246112 +pkc 2.92316158071916 2.9338568698359 3.4626060097908 5.88332238848828 3.82209829790016 4.15575319035074 4.77912349311153 7.69028602067677 3.67882911826043 4.44382703557933 5.45958551414416 +pkc 4.00186370942794 3.85014760171006 3.38099467434464 3.79548918917219 2.05027016437956 0.871293365943419 2.88480071284671 5.63121178182137 2.94968833505258 3.86702563949741 3.98527346716774 +pkc 3.15700042115011 2.58776403522771 3.56104608260405 3.71357206670431 3.25424296870549 2.484906649788 3.49953328238302 6.4393503711001 3.4626060097908 4.30811095172371 4.92725368515721 +pkc 4.28082412916472 2.7408400239252 4.15575319035074 5.57594910314632 4.22683374526818 3.35340671782581 3.96651119071222 6.12468339089421 2.25758772706331 3.09557760852371 3.76815263500844 +pkc 2.98568193770049 2.86220088092947 2.86220088092947 3.3357695763397 2.01490302054226 1.6467336971778 3.64283551561253 6.80903930604298 3.16547504814109 3.90399083373088 1.8531680973567 +pkc 2.46809953147162 2.58021682959233 2.84490938381941 4.91998092582813 2.9704144655697 2.72785282839839 3.64283551561253 6.67329796776765 2.99573227355399 3.51749783735832 3.41772668361337 +pkc 3.65065824129374 3.56104608260405 2.99573227355399 5.40717177146012 3.41772668361337 2.90690105984738 3.80443779474821 6.16120732169508 2.77258872223978 2.79116510781272 4.01096295328305 +pkc 2.51769647261099 2.77881927199042 4.91265488573605 6.01615715969835 4.56017282005736 2.4423470353692 3.12236492448736 5.90808293816893 2.71469474382088 3.41772668361337 3.68887945411394 +pkc 2.75366071235426 3.13983261752775 2.484906649788 3.58905911883173 0.828551817566148 2.37024374146786 3.34638914516716 6.07073772800249 3.67882911826043 4.44382703557933 4.38949864951258 +pkc 3.62434093297637 3.15700042115011 3.11351530921037 3.13983261752775 2.18605127673809 4.22683374526818 4.46129981556839 6.75460409948796 2.75366071235426 3.62434093297637 4.39814601655377 +pkc 2.75366071235426 2.96010509591084 3.95699637107088 4.22683374526818 3.04927304048202 2.00552585872967 3.45315712059287 6.65544035036765 4.42484663185681 5.07517381523383 5.44241771052179 +pkc 3.23080439573347 2.60268968544438 3.89385903480047 4.86753445045558 3.4626060097908 4.34380542185368 4.83628190695148 7.71735127218533 2.07819075977818 3.29212628660779 3.29212628660779 +pkc 2.55722731136763 2.23964529322017 3.69635146895264 5.26269018890489 3.53514535417189 5.59471137960184 5.93753620508243 7.42952084278646 1.01523067972906 1.96009478404727 3.38099467434464 +pkc 2.87919845729804 2.45958884180371 1.25846098961001 3.01553490085017 2.82137888640921 3.35340671782581 3.81330703248899 6.91671502035361 1.05082162483176 3.14845336057165 4.06560209335645 +pkc 3.37416870927424 1.39376637595859 2.92316158071916 2.85070650150373 1.96990565461153 2.50959926237837 3.29212628660779 6.39526159811545 3.92197333628131 4.78749174278205 5.2257466737132 +pkc 3.13983261752775 3.3357695763397 3.14845336057165 3.24649099190117 2.85070650150373 2.34180580614733 2.43361335540045 6.60258789218934 1.06125650212434 2.68102152871429 2.63188884013665 +pkc 3.49953328238302 2.79728133483015 4.68213122712422 5.6937321388027 4.27249074760558 4.66343909411207 4.87519732320115 6.00881318544259 1.77155676191054 2.9391619220656 3.96651119071222 +pkc 4.43438186500781 4.20916023665068 2.9704144655697 2.9391619220656 0.398776119957368 3.13983261752775 3.92197333628131 6.06145691892802 2.00552585872967 2.90690105984738 3.4626060097908 +pkc 3.14845336057165 2.85070650150373 3.82209829790016 6.13339804299665 4.01998014693324 3.47196645255036 3.75887182593397 6.01615715969835 2.18605127673809 3.04927304048202 3.76815263500844 +pkc 2.70136121295141 2.39789527279837 3.13983261752775 2.94968833505258 2.39789527279837 3.38099467434464 3.86702563949741 5.83773044716594 1.43031124653666 4.04830062372069 1.92424865227413 +pkc 2.70136121295141 2.88480071284671 2.87919845729804 3.29212628660779 2.60268968544438 2.96010509591084 3.56104608260405 6.87212810133899 1.98787434815435 3.13983261752775 3.43720781918519 +pkc 3.98527346716774 3.10458667846607 3.20274644293832 3.34638914516716 2.58021682959233 2.86789890204411 4.03777421073371 7.79811262882979 5.5683445037611 5.8111409929767 2.05923883436232 +pkc 3.01553490085017 2.2213750375685 3.03013370027132 3.15700042115011 1.52822785700856 3.9926809084456 4.36182392735636 6.47543271670409 3.4904285153901 4.22683374526818 4.67282883446191 +pkc 1.97823903617067 2.34180580614733 0.322083499169113 1.78170913337455 1.49290409617815 2.32238772029023 2.86789890204411 6.46769872610435 1.9154509415706 3.15700042115011 3.25424296870549 +pkc 4.43438186500781 3.88567903008854 3.03974915897077 3.32862668882732 2.70136121295141 3.85862222870103 4.3528552573736 6.02586597382531 2.47653840011748 3.3178157727231 3.35340671782581 +pkc 3.69635146895264 3.13983261752775 3.34638914516716 3.03974915897077 1.81645208181843 2.62466859216316 3.50855589998265 6.84481547920826 2.43361335540045 2.82137888640921 3.63495111208838 +pkc 4.72738781871234 4.36182392735636 3.03013370027132 3.36384159511839 2.00552585872967 4.38077585277223 4.89034912822175 6.53958595561767 1.82616089594539 2.3887627892351 0.518793793415168 +pkc 3.07731226054641 2.7408400239252 3.20274644293832 2.81540871942271 1.21491274436427 3.2188758248682 3.80443779474821 6.40357419793482 1.52822785700856 3.63495111208838 4.3528552573736 +pkc 2.91235066461494 2.56494935746154 2.81540871942271 2.45958884180371 1.07840958135059 3.72328088083127 4.0926765051214 7.01571242048723 2.19499988231411 3.23867845216438 4.04830062372069 +pkc 3.88567903008854 2.30258509299405 3.38099467434464 3.27336401015227 2.15871472257434 2.36085400111802 2.87919845729804 4.84418708645859 1.87946504964716 3.14845336057165 3.53514535417189 +pkc 1.86252854011626 2.68784749378469 3.07731226054641 3.39114704580865 1.83418018511201 1.4036429994545 2.79728133483015 6.95272864462487 3.15700042115011 3.35340671782581 3.62434093297637 +pkc 3.01553490085017 2.73436750941958 3.03013370027132 3.38099467434464 2.23964529322017 3.64283551561253 4.11087386417331 7.28550654852279 3.60549784517489 4.47049528266149 5.25227342804663 +pkc 2.484906649788 2.09556092355972 3.60549784517489 3.85014760171006 2.52572864430826 3.66867674679642 4.5152454784601 7.29437729928882 2.2213750375685 3.20274644293832 3.75185425327532 +pkc 3.39114704580865 3.03974915897077 1.41098697371026 2.81540871942271 2.90690105984738 2.86789890204411 3.55248682920838 6.66440902035041 2.23964529322017 3.48124008933569 3.56953269648137 +pkc 2.96010509591084 3.19458313229916 3.01553490085017 3.26575941076705 0.22314355131421 3.64283551561253 4.15575319035074 7.15929190479756 2.94968833505258 2.99573227355399 4.22683374526818 +pkc 3.04927304048202 3.64283551561253 3.44361809754611 3.52636052461616 2.19499988231411 1.08856195281461 3.04927304048202 6.25190388316589 2.30258509299405 3.29212628660779 3.64283551561253 +pkc 3.73289633953071 3.27336401015227 3.44361809754611 4.5152454784601 3.29953372788566 3.41772668361337 3.93963817246112 5.95324333428778 1.52822785700856 3.45315712059287 3.65065824129374 +pkc 3.02042488614436 2.35137525716348 3.10458667846607 2.73436750941958 2.54160199346455 3.50855589998265 4.20916023665068 6.06145691892802 3.63495111208838 4.37071287477361 4.60517018598809 +pkc 3.6163087612791 3.2846635654062 3.00568260440716 4.11087386417331 2.50959926237837 2.89591193827178 3.6609942506244 6.85329909318608 1.44926916028128 2.70805020110221 3.2846635654062 +pkc 3.74242022104197 3.49953328238302 1.7630170003624 2.71469474382088 1.79840401194672 4.50645421304893 5.14749447681345 7.69028602067677 2.61739583283408 3.16547504814109 3.9759363311718 +pkc 3.75185425327532 3.75887182593397 3.13113691056019 3.4626060097908 2.37024374146786 2.94968833505258 3.53514535417189 6.48463523563525 2.484906649788 2.70805020110221 3.58073729549423 +pkc 2.82137888640921 1.73518911773966 3.25424296870549 3.87743156065853 3.21084365317094 1.94304891677428 2.41591377830105 6.09807428216624 1.69927861643389 2.77258872223978 2.64617479738412 +pkc 2.76000994003292 2.34180580614733 3.17387845893747 3.01553490085017 2.00552585872967 1.59127394180643 3.13113691056019 6.12468339089421 3.43720781918519 3.8416005411316 4.53367418428302 +pkc 2.72785282839839 1.79840401194672 2.89591193827178 3.58905911883173 2.40694510831829 3.88567903008854 4.11903717481247 6.62007320653036 3.23867845216438 3.94931879017184 3.71357206670431 +pkc 3.3357695763397 2.64617479738412 2.28442112236637 5.2257466737132 3.95699637107088 1.10525683138678 3.08648663682246 5.79301360838414 1.79009141212736 3.15700042115011 3.74242022104197 +pkc 3.49953328238302 3.40784192438082 2.84490938381941 3.2846635654062 0.703097511413113 2.84490938381941 3.3178157727231 5.91889385427315 3.00568260440716 2.96010509591084 3.6163087612791 +pkc 3.68887945411394 3.40119738166216 3.73289633953071 3.59731226058845 1.69009581545155 3.2846635654062 3.58073729549423 6.07993319509559 3.4626060097908 4.34380542185368 4.37071287477361 +pkc 3.13113691056019 3.08648663682246 2.9391619220656 4.03777421073371 2.58021682959233 2.42480272571829 3.23080439573347 6.43133108193348 2.77881927199042 3.3357695763397 3.40784192438082 +pkc 2.99573227355399 2.41591377830105 3.56104608260405 3.58905911883173 2.2213750375685 1.21491274436427 1.24990173621434 4.70048036579242 2.88480071284671 3.51749783735832 3.58905911883173 +pkc 3.29953372788566 3.35340671782581 3.13113691056019 5.34233425196481 3.42751468997953 3.68887945411394 4.12874598893943 6.4393503711001 3.9926809084456 4.47049528266149 2.23108909128898 +pkc 2.83321334405622 2.54160199346455 3.85862222870103 4.7361984483945 3.88567903008854 2.08691355651854 2.80336038090653 6.66440902035041 1.62727783056243 2.64617479738412 3.81330703248899 +pkc 2.77258872223978 3.37416870927424 2.85070650150373 3.17387845893747 3.00568260440716 3.64283551561253 4.04830062372069 6.25190388316589 2.484906649788 3.4626060097908 4.15575319035074 +pkc 3.35340671782581 3.11351530921037 2.76000994003292 3.51749783735832 2.57261223020711 3.51749783735832 3.98527346716774 5.65599181081985 3.6163087612791 4.36182392735636 5.11799381241676 +pkc 2.73436750941958 2.15871472257434 1.17865499634165 1.49290409617815 0.936093359170335 5.03695260241363 5.73009978297357 8.40088406901585 3.71357206670431 4.64439089914137 5.18738580584075 +pkc 2.86789890204411 2.66025953726586 2.9391619220656 2.76000994003292 1.83418018511201 3.8416005411316 4.26267987704132 6.35957386867238 2.4423470353692 2.84490938381941 4.20916023665068 +pkc 3.2846635654062 2.75366071235426 3.23080439573347 3.43720781918519 1.73518911773966 2.15871472257434 3.39114704580865 6.91671502035361 2.53369681395743 3.75185425327532 3.51749783735832 +pkc 3.4904285153901 2.60268968544438 0.476234178996372 0 1.79840401194672 4.02891675689965 4.36182392735636 6.96129604591017 2.55722731136763 3.54385368206368 3.70622809244855 +pkc 4.8283137373023 4.26267987704132 3.2188758248682 3.52636052461616 2.66025953726586 3.42751468997953 3.69635146895264 6.12468339089421 2.47653840011748 3.4904285153901 3.29212628660779 +pkc 2.96010509591084 2.94968833505258 3.02042488614436 5.51342874616498 3.3178157727231 4.06560209335645 4.38949864951258 5.54126354515843 2.77258872223978 3.11351530921037 3.6609942506244 +pkc 2.4423470353692 2.46809953147162 3.4626060097908 5.77455154554441 3.93963817246112 2.33214389523559 3.19458313229916 6.35957386867238 1.83418018511201 2.76000994003292 3.38099467434464 +pkc 4.45201900649392 4.11087386417331 4.11087386417331 5.91889385427315 4.0842942263686 3.62434093297637 4.01096295328305 5.74620319054015 3.59731226058845 4.3267781604434 5.27811465923052 +pkc 3.35340671782581 2.68784749378469 2.76000994003292 5.35185813347607 3.01553490085017 2.1770218700187 2.76000994003292 6.47543271670409 3.34638914516716 3.94931879017184 4.42484663185681 +pkc 4.07414185490458 3.48124008933569 0.943905898907128 2.23964529322017 2.46809953147162 4.38949864951258 4.80402104473326 6.16961073249146 3.92986292355648 4.66343909411207 5.66642668811243 +pkc 3.18221184049661 3.04927304048202 0.774727167552368 0.60431596685333 1.07158361628019 1.10525683138678 2.84490938381941 4.84418708645859 2.56494935746154 3.60549784517489 4.53367418428302 +pkc 3.08648663682246 2.32238772029023 3.21084365317094 4.07414185490458 2.70136121295141 3.18221184049661 3.71357206670431 5.71042701737487 1.8531680973567 3.10458667846607 3.92197333628131 +pkc 2.96010509591084 2.10413415427021 3.09557760852371 4.29045944114839 3.13113691056019 2.61006979274201 3.09557760852371 6.64639051484773 3.19458313229916 3.92986292355648 4.41642806139121 +pkc 3.4904285153901 3.09557760852371 2.79116510781272 2.84490938381941 2.04122032885964 2.85070650150373 3.3178157727231 6.45833828334479 2.40694510831829 3.32862668882732 4.00186370942794 +pkc 3.3178157727231 2.77258872223978 2.9391619220656 3.2846635654062 2.52572864430826 4.41642806139121 4.84418708645859 7.43838353004431 4.63472898822964 4.92725368515721 3.51749783735832 +pkc 2.86789890204411 2.80336038090653 2.94968833505258 2.63188884013665 2.30258509299405 2.08691355651854 4.40671924726425 6.31354804627709 4.41642806139121 5.09375020080676 5.52146091786225 +pkc 2.56494935746154 2.86220088092947 2.31253542384721 3.8416005411316 1.88858365386359 3.13983261752775 3.86702563949741 6.25190388316589 2.11384296839717 3.32862668882732 3.70622809244855 +pkc 3.55248682920838 3.96651119071222 3.03974915897077 2.9391619220656 1.5830939370945 3.12236492448736 3.51749783735832 6.47543271670409 1.6094379124341 2.83321334405622 2.86220088092947 +pkc 3.18221184049661 2.61006979274201 2.79116510781272 2.94968833505258 0 4.40671924726425 5.27299955856375 7.91498300584839 1.89761985992753 3.07731226054641 2.9704144655697 +pkc 3.19458313229916 3.48124008933569 2.84490938381941 3.47196645255036 2.46809953147162 3.79548918917219 4.11903717481247 5.84643877505772 2.18605127673809 2.66025953726586 3.06805293513362 +pkc 4.27249074760558 4.0842942263686 2.58776403522771 5.93753620508243 3.04927304048202 3.40784192438082 3.71357206670431 6.58340922215876 3.7864597824528 4.77912349311153 5.07517381523383 +pkc 2.55722731136763 1.9154509415706 4.38949864951258 6.13339804299665 4.38077585277223 3.31054301339402 3.82209829790016 5.73979291217923 2.99573227355399 3.58905911883173 3.20274644293832 +pkc 2.65324196460721 2.89591193827178 3.15700042115011 3.08648663682246 2.20386912005489 3.60549784517489 4.13676527810605 6.09807428216624 2.23964529322017 3.21084365317094 3.26575941076705 +pkc 3.45315712059287 2.71469474382088 2.28442112236637 5.45958551414416 3.18221184049661 2.27521389619791 3.4626060097908 6.64639051484773 2.16791018966744 3.31054301339402 3.8308129500026 +pkc 3.96651119071222 3.4904285153901 1.39376637595859 2.28442112236637 2.12226153886276 3.75887182593397 4.21803603456465 6.67329796776765 2.37024374146786 3.05870707271538 4.01096295328305 +pkc 4.38077585277223 4.02891675689965 2.86220088092947 2.84490938381941 2.32238772029023 4.92725368515721 5.37989735354046 6.42162226780652 2.13179677201376 3.07731226054641 3.86702563949741 +pkc 4.65396035015752 3.55248682920838 3.03974915897077 3.3178157727231 1.51951320490611 3.75185425327532 4.19116874685764 6.22455842927536 3.89385903480047 4.40671924726425 4.7361984483945 +pkc 4.85981240436167 3.07731226054641 3.27336401015227 3.29953372788566 1.20597080698861 4.44382703557933 4.99043258677874 7.39326309476384 1.96990565461153 2.56494935746154 3.47196645255036 +pkc 4.17284762371004 3.64283551561253 2.61006979274201 5.00394630594546 3.6163087612791 3.52636052461616 3.93963817246112 6.09807428216624 3.27336401015227 3.95699637107088 4.47049528266149 +pkc 3.20274644293832 2.58776403522771 2.37954613413017 3.06805293513362 2.19499988231411 3.2846635654062 3.6609942506244 5.8111409929767 1.99741770620125 2.41591377830105 3.60549784517489 +pkc 3.87743156065853 3.56104608260405 2.68784749378469 3.27336401015227 1.04380405217311 2.55722731136763 3.41772668361337 6.67329796776765 2.96010509591084 3.58073729549423 3.50855589998265 +pkc 3.03013370027132 2.87919845729804 3.10458667846607 3.03974915897077 2.81540871942271 3.51749783735832 3.91202300542815 6.19644412779452 3.32862668882732 3.85014760171006 3.86702563949741 +pkc 3.47196645255036 3.11351530921037 3.10458667846607 4.67282883446191 2.11384296839717 2.91235066461494 3.71357206670431 6.62007320653036 2.08691355651854 3.60549784517489 4.19116874685764 +pkc 3.87743156065853 3.32862668882732 2.89591193827178 2.60268968544438 2.37024374146786 3.63495111208838 4.45201900649392 7.64539769942863 1.83418018511201 3.17387845893747 3.48124008933569 +pkc 2.76000994003292 2.81540871942271 3.37416870927424 6.08904487544685 4.55071400019203 3.31054301339402 3.87743156065853 6.74641212857337 2.2935443483419 3.23867845216438 3.80443779474821 +pkc 3.25424296870549 3.10458667846607 3.47196645255036 4.56017282005736 3.91202300542815 2.63188884013665 3.19458313229916 6.99759598298193 1.73518911773966 2.58021682959233 3.42751468997953 +pkc 3.44361809754611 2.7408400239252 4.38077585277223 6.31354804627709 4.66343909411207 3.23080439573347 3.60549784517489 5.91889385427315 2.56494935746154 3.3357695763397 3.60549784517489 +pkc 2.86789890204411 2.88480071284671 2.66025953726586 3.23867845216438 2.52572864430826 3.76815263500844 4.37071287477361 6.32256523992728 2.2935443483419 2.81540871942271 3.2188758248682 +pkc 3.24649099190117 2.34180580614733 2.92316158071916 2.97552956623647 2.26695791535089 2.70136121295141 3.55248682920838 6.93439720992856 2.30258509299405 3.40119738166216 4.05698877567833 +pkc 4.72738781871234 4.63472898822964 2.98568193770049 3.51749783735832 2.81540871942271 5.07517381523383 5.54907608489522 7.49220304261874 3.31054301339402 4.17284762371004 4.43438186500781 +pkc 2.25758772706331 2.76000994003292 2.75366071235426 2.67414864942653 0.854415328156068 3.11351530921037 3.75887182593397 6.69208374250663 2.4423470353692 2.85070650150373 3.68887945411394 +pkc 3.87743156065853 3.15700042115011 3.49953328238302 4.70953020131233 3.43720781918519 1.90657514365664 3.40784192438082 6.61069604471776 1.5830939370945 3.17387845893747 3.72328088083127 +pkc 3.11351530921037 2.65324196460721 2.36085400111802 5.17048399503815 2.75366071235426 3.2188758248682 3.76815263500844 5.75574221358691 2.57261223020711 3.24649099190117 3.92986292355648 +pkc 3.12236492448736 1.21491274436427 3.02042488614436 3.40784192438082 2.18605127673809 2.9338568698359 3.68887945411394 6.66440902035041 2.9704144655697 3.45315712059287 3.48124008933569 +pkc 4.33598269617247 3.8308129500026 3.31054301339402 3.72328088083127 1.99741770620125 3.95699637107088 4.33598269617247 6.31354804627709 0.343589704390077 3.37416870927424 3.8416005411316 +pkc 3.02042488614436 2.27521389619791 3.02042488614436 3.14845336057165 2.20386912005489 3.49953328238302 3.8308129500026 6.18826412308259 2.40694510831829 3.17387845893747 3.58905911883173 +pkc 2.53369681395743 3.66867674679642 3.14845336057165 2.9338568698359 1.33236601909433 4.0842942263686 4.56954300834494 6.50279004591562 2.50143595173921 3.48124008933569 3.45315712059287 +pkc 3.77734810210154 3.13983261752775 2.83321334405622 2.88480071284671 1.05082162483176 3.64283551561253 3.85014760171006 5.57594910314632 2.06812778177956 2.73436750941958 3.18221184049661 +pkc 2.89591193827178 2.73436750941958 3.04927304048202 4.11087386417331 2.37954613413017 2.68784749378469 3.17387845893747 5.96357934361845 2.07819075977818 2.75366071235426 3.67882911826043 +pkc 3.07731226054641 2.36085400111802 2.9338568698359 2.52572864430826 1.93441576962958 5.18738580584075 5.63121178182137 7.69028602067677 2.2213750375685 2.86789890204411 3.79548918917219 +pkc 4.83628190695148 3.08648663682246 3.03974915897077 3.2188758248682 2.2935443483419 2.81540871942271 3.16547504814109 6.16120732169508 2.64617479738412 3.19458313229916 3.88567903008854 +pkc 3.16547504814109 3.23867845216438 2.79728133483015 5.66642668811243 3.09557760852371 3.25424296870549 3.47196645255036 6.08904487544685 3.94931879017184 4.42484663185681 4.64439089914137 +pkc 3.04927304048202 1.6094379124341 3.56104608260405 3.9759363311718 2.12226153886276 4.81218435537242 5.52146091786225 8.15794350710504 2.14943391349987 3.07731226054641 3.80443779474821 +pkc 3.11351530921037 2.35137525716348 2.9391619220656 2.84490938381941 1.55603713570699 4.54223038621422 4.95582705760126 6.8627579130514 2.34180580614733 3.58073729549423 3.65065824129374 +pkc 3.66867674679642 2.4423470353692 3.62434093297637 3.9926809084456 3.13983261752775 4.82028156560504 5.18738580584075 7.73543335249969 2.9391619220656 3.58905911883173 3.64283551561253 +pkc 2.61739583283408 2.23964529322017 2.86789890204411 2.85070650150373 0.693147180559945 2.86220088092947 3.3178157727231 5.50533153593236 2.52572864430826 3.11351530921037 3.52636052461616 +pkc 3.47196645255036 2.89591193827178 4.5152454784601 5.94542060860658 4.33598269617247 2.86789890204411 3.6609942506244 6.78219205600679 4.29045944114839 4.93447393313069 5.79301360838414 +pkc 3.9759363311718 3.58905911883173 2.91235066461494 3.13983261752775 2.25758772706331 2.79116510781272 3.3357695763397 6.56526497003536 2.1770218700187 2.4932054526027 3.56953269648137 +pkc 2.9704144655697 1.96990565461153 4.38949864951258 6.19644412779452 4.39814601655377 3.3178157727231 3.8416005411316 7.3664451483276 2.12226153886276 3.27336401015227 4.11903717481247 +pkc 2.82137888640921 3.03013370027132 1.36609165380237 3.03013370027132 2.36085400111802 3.40784192438082 3.93963817246112 5.79301360838414 2.43361335540045 3.36384159511839 3.63495111208838 +pkc 1.07158361628019 2.56494935746154 2.71469474382088 3.53514535417189 0.727548607277278 4.91998092582813 5.18178355029209 5.82008293035236 2.61739583283408 3.40784192438082 4.18205014264121 +pkc 3.3178157727231 2.56494935746154 2.41591377830105 2.68102152871429 2.28442112236637 4.18205014264121 4.53367418428302 6.03548143252476 2.66025953726586 3.29212628660779 3.94931879017184 +pkc 3.19458313229916 1.61938824328727 2.85070650150373 4.76217393479776 2.07819075977818 4.81218435537242 5.44241771052179 7.3304052118444 3.17387845893747 3.87743156065853 4.23700086262362 +pkc 3.3178157727231 2.88480071284671 3.05870707271538 2.99573227355399 1.69927861643389 2.85070650150373 3.41772668361337 5.96357934361845 1.98787434815435 2.79116510781272 3.54385368206368 +pkc 5.09375020080676 3.66867674679642 2.83321334405622 2.43361335540045 2.20386912005489 4.96284463025991 5.45958551414416 7.3304052118444 1.88858365386359 1.82616089594539 3.52636052461616 +pkc 2.86220088092947 2.08691355651854 3.18221184049661 3.65065824129374 3.2188758248682 3.88567903008854 4.20020495292158 5.8636311755981 4.05698877567833 4.20916023665068 3.37416870927424 +pkc 2.77881927199042 2.89591193827178 3.20274644293832 5.31811999384422 2.79116510781272 4.20916023665068 5.28826703069454 7.41155628781116 2.30258509299405 2.80336038090653 3.54385368206368 +pkc 3.36384159511839 2.71469474382088 2.68102152871429 1.63705307946707 3.37416870927424 4.15575319035074 4.38077585277223 5.25227342804663 3.10458667846607 3.58905911883173 3.93963817246112 +pkc 3.11351530921037 4.12874598893943 2.75366071235426 3.06805293513362 3.12236492448736 4.17284762371004 4.79579054559674 7.08757370555797 2.11384296839717 3.29212628660779 3.3178157727231 +pkc 3.23080439573347 4.07414185490458 4.254193263164 5.73009978297357 4.21803603456465 1.4747630091075 2.484906649788 5.57594910314632 2.30258509299405 3.21084365317094 3.23080439573347 +pkc 1.45628673293993 2.58021682959233 3.29953372788566 3.18221184049661 2.4423470353692 2.42480272571829 3.4904285153901 6.25958146406492 1.92424865227413 2.68102152871429 2.50143595173921 +pkc 2.88480071284671 2.45958884180371 2.87919845729804 5.08140436498446 2.57261223020711 2.53369681395743 3.04927304048202 6.37672694789863 3.93963817246112 4.69134788222914 4.96284463025991 +pkc 3.74242022104197 3.25424296870549 1.43983512804792 2.34180580614733 0.672944473242426 4.33598269617247 4.70048036579242 6.13339804299665 0.56531380905006 4.66343909411207 1.35840915763035 +pkc 3.23080439573347 3.06805293513362 4.19116874685764 5.94542060860658 4.3528552573736 3.63495111208838 4.05698877567833 6.18001665365257 2.66025953726586 3.67882911826043 3.75185425327532 +pkc 2.26695791535089 3.4626060097908 2.68784749378469 3.42751468997953 2.1770218700187 3.3357695763397 3.88567903008854 6.47543271670409 3.01553490085017 3.67882911826043 3.66867674679642 +pkc 2.16791018966744 2.61739583283408 2.32238772029023 5.17048399503815 3.32862668882732 4.02891675689965 4.77912349311153 7.43838353004431 2.70805020110221 3.2846635654062 3.73289633953071 +pkc 2.84490938381941 2.484906649788 3.23080439573347 4.5152454784601 2.72785282839839 2.04122032885964 3.55248682920838 7.43838353004431 2.65324196460721 3.13983261752775 3.40784192438082 +pkc 3.13113691056019 3.08648663682246 2.70136121295141 3.27336401015227 2.13179677201376 4.01096295328305 4.5152454784601 6.78219205600679 2.25758772706331 2.86220088092947 3.48124008933569 +pkc 2.68784749378469 2.19499988231411 2.94968833505258 2.90690105984738 0.378436435720245 4.24563400976833 4.65396035015752 7.13249755166004 2.98568193770049 3.43720781918519 3.45315712059287 +pkc 2.68102152871429 2.25758772706331 2.50959926237837 2.70805020110221 2.87919845729804 3.87743156065853 4.20020495292158 6.34035930372775 2.3887627892351 3.20274644293832 3.08648663682246 +pkc 3.20274644293832 3.12236492448736 2.61006979274201 4.31748811353631 1.90657514365664 3.00568260440716 3.63495111208838 6.21460809842219 2.27521389619791 3.64283551561253 4.66343909411207 +pkc 3.6163087612791 3.63495111208838 2.58776403522771 5.03695260241363 2.84490938381941 3.6163087612791 3.92986292355648 5.74620319054015 2.79728133483015 3.34638914516716 3.44361809754611 +pkc 4.45201900649392 4.66343909411207 2.2213750375685 5.54907608489522 3.53514535417189 2.68784749378469 2.9391619220656 4.55071400019203 2.27521389619791 3.41772668361337 3.40784192438082 +pkc 2.85070650150373 2.97552956623647 2.47653840011748 4.42484663185681 2.58776403522771 2.71469474382088 3.31054301339402 6.25958146406492 1.5830939370945 2.50959926237837 3.44361809754611 +pkc 2.2213750375685 3.3357695763397 2.97552956623647 2.70136121295141 1.93441576962958 3.86702563949741 4.33598269617247 6.70073110954781 2.55722731136763 2.89591193827178 3.29212628660779 +pkc 3.13983261752775 2.79728133483015 2.47653840011748 3.8416005411316 0.00995033085316809 1.07840958135059 3.23080439573347 6.13339804299665 2.12226153886276 2.7408400239252 2.36085400111802 +pkc 2.58776403522771 2.32238772029023 2.9704144655697 3.02042488614436 1.6094379124341 1.93441576962958 2.75366071235426 6.57507584059962 2.99573227355399 3.48124008933569 4.11903717481247 +pkc 3.02042488614436 2.2213750375685 3.92986292355648 5.08140436498446 4.26267987704132 2.37024374146786 2.96010509591084 6.10702288774225 2.05027016437956 2.85070650150373 4.11903717481247 +pkc 2.53369681395743 3.41772668361337 4.11087386417331 6.13339804299665 4.40671924726425 2.47653840011748 3.10458667846607 6.12468339089421 1.90657514365664 3.18221184049661 3.49953328238302 +pkc 4.01998014693324 3.94931879017184 2.42480272571829 4.38949864951258 2.16791018966744 3.8416005411316 3.81330703248899 6.00881318544259 4.64439089914137 4.8283137373023 3.89385903480047 +pkc 3.03974915897077 2.79116510781272 2.11384296839717 4.70953020131233 1.73518911773966 3.40784192438082 3.95699637107088 6.16120732169508 2.63188884013665 3.40784192438082 3.66867674679642 +pkc 4.60517018598809 4.29045944114839 3.13983261752775 3.27336401015227 2.40694510831829 2.20386912005489 3.34638914516716 6.20657592672493 3.13983261752775 3.85014760171006 4.13676527810605 +pkc 2.87919845729804 2.88480071284671 2.32238772029023 3.18221184049661 3.07731226054641 3.64283551561253 3.67882911826043 5.73009978297357 2.70805020110221 3.24649099190117 3.58905911883173 +pkc 3.37416870927424 2.79116510781272 2.28442112236637 3.3357695763397 1.49290409617815 3.13983261752775 4.00186370942794 7.25841215059531 2.88480071284671 3.3357695763397 4.00186370942794 +pkc 2.9704144655697 2.73436750941958 3.09557760852371 3.06805293513362 2.33214389523559 3.55248682920838 3.96651119071222 6.49375383985169 2.05027016437956 2.86220088092947 3.47196645255036 +pkc 3.49953328238302 2.83321334405622 3.93963817246112 6.22455842927536 4.18205014264121 4.23700086262362 4.64439089914137 6.90775527898214 1.68268837417369 4.90527477843843 2.36085400111802 +pkc 3.85862222870103 3.26575941076705 3.72328088083127 5.30826769740121 3.40784192438082 1.99741770620125 2.81540871942271 6.35957386867238 0.792992515529661 3.15700042115011 3.23080439573347 +pkc 2.01490302054226 2.45958884180371 3.08648663682246 3.35340671782581 2.68784749378469 1.25846098961001 3.21084365317094 6.07073772800249 1.98787434815435 3.16547504814109 3.93963817246112 +pkc 3.85014760171006 2.92316158071916 2.58776403522771 3.56953269648137 1.15057202759882 3.02042488614436 3.36384159511839 6.35957386867238 2.34180580614733 3.18221184049661 3.59731226058845 +pkc 3.42751468997953 2.75366071235426 4.14630430115281 6.31354804627709 3.93963817246112 2.92316158071916 3.31054301339402 6.26909628370626 4.30811095172371 4.85981240436167 5.03043792139244 +pkc 2.36085400111802 2.68102152871429 2.68784749378469 3.10458667846607 2.2935443483419 2.54160199346455 3.80443779474821 6.97073007814353 2.65324196460721 3.40119738166216 4.33598269617247 +pkc 3.49953328238302 4.07414185490458 3.39114704580865 5.90808293816893 3.53514535417189 3.70622809244855 3.98527346716774 6.80903930604298 2.64617479738412 3.3357695763397 4.04830062372069 +pkc 2.79116510781272 2.77881927199042 1.68268837417369 1.7263316639056 2.46809953147162 3.36384159511839 3.71357206670431 5.7037824746562 2.09556092355972 2.99573227355399 3.2188758248682 +pkc 4.81218435537242 4.29045944114839 2.63188884013665 4.67282883446191 3.11351530921037 3.02042488614436 3.66867674679642 6.49375383985169 2.98568193770049 3.88567903008854 5.05624580534831 +pkc 3.11351530921037 2.83321334405622 3.24649099190117 3.49953328238302 2.50143595173921 3.7864597824528 4.28082412916472 7.43838353004431 2.46809953147162 3.70622809244855 4.62497281328427 +pkc 3.26575941076705 2.42480272571829 1.59127394180643 0.989541193613748 2.28442112236637 3.47196645255036 3.91202300542815 5.94542060860658 2.09556092355972 2.87919845729804 2.89591193827178 +pkc 2.91235066461494 2.23108909128898 3.25424296870549 5.72031177660741 3.85862222870103 3.35340671782581 3.77734810210154 5.88332238848828 3.18221184049661 3.98527346716774 4.48863636973214 +pkc 3.60549784517489 3.03974915897077 2.96010509591084 3.34638914516716 0.810930216216329 4.82028156560504 5.12396397940326 6.5206211275587 2.36085400111802 3.52636052461616 3.47196645255036 +pkc 2.94968833505258 3.25424296870549 3.26575941076705 5.15329159449778 2.98568193770049 4.11903717481247 4.74493212836325 7.71735127218533 2.98568193770049 3.44361809754611 4.12874598893943 +pkc 2.86789890204411 2.9391619220656 2.87919845729804 3.03013370027132 2.3887627892351 1.79009141212736 3.91202300542815 6.37672694789863 2.28442112236637 3.15700042115011 3.67882911826043 +pkc 3.06805293513362 2.14124194258528 3.39114704580865 4.66343909411207 2.51769647261099 4.66343909411207 5.18178355029209 7.59135704669855 3.53514535417189 4.38077585277223 4.70048036579242 +pkc 2.9338568698359 2.16791018966744 0 1.96009478404727 2.39789527279837 1.708377860289 3.02042488614436 6.25958146406492 2.67414864942653 3.2188758248682 4.0842942263686 +pkc 3.58905911883173 2.37954613413017 3.86702563949741 3.9759363311718 1.74571553072665 2.18605127673809 3.26575941076705 6.87212810133899 0.845868267577609 2.61739583283408 3.94931879017184 +pkc 1.24126858906963 0.871293365943419 1.870262530716 3.17387845893747 2.90690105984738 4.88280192258637 5.24174701505964 6.46769872610435 2.37024374146786 3.45315712059287 4.11903717481247 +pkc 3.85014760171006 3.25424296870549 2.96010509591084 2.77881927199042 0 2.87919845729804 4.58700621536042 7.95120715647297 2.55722731136763 3.19458313229916 3.6163087612791 +pkc 1.99741770620125 2.40694510831829 2.54160199346455 4.67282883446191 2.21266038546606 2.56494935746154 3.16547504814109 6.46769872610435 3.12236492448736 3.66867674679642 3.89385903480047 +pkc 2.88480071284671 2.50959926237837 0.0198026272961797 2.36085400111802 2.43361335540045 0.802001585472027 3.38099467434464 6.16120732169508 2.15871472257434 0.845868267577609 2.4932054526027 +pkc 2.97552956623647 2.9391619220656 2.89591193827178 3.64283551561253 3.14845336057165 1.54756250871601 3.3178157727231 6.74641212857337 2.30258509299405 3.54385368206368 3.89385903480047 +pkc 2.88480071284671 2.98568193770049 3.72328088083127 5.25227342804663 2.9338568698359 1.31372366828506 3.31054301339402 5.91889385427315 2.31253542384721 3.07731226054641 3.39114704580865 +pkc 2.53369681395743 2.79116510781272 2.7408400239252 4.13676527810605 2.94968833505258 3.35340671782581 3.85014760171006 6.18001665365257 1.84371920815877 2.99573227355399 3.77734810210154 +pkc 4.3267781604434 4.04830062372069 3.14845336057165 5.30826769740121 3.59731226058845 1.54756250871601 2.51769647261099 6.08904487544685 2.52572864430826 3.14845336057165 4.254193263164 +pkc 4.72738781871234 4.20020495292158 3.8416005411316 6.07073772800249 4.0926765051214 2.91235066461494 3.4626060097908 6.74641212857337 3.10458667846607 3.64283551561253 3.70622809244855 +pkc 4.78749174278205 3.9759363311718 1.6094379124341 2.4932054526027 2.39789527279837 4.7361984483945 5.07517381523383 6.89871453432999 1.51951320490611 3.2188758248682 3.70622809244855 +pkc 3.56953269648137 3.2188758248682 2.63188884013665 4.63472898822964 2.71469474382088 2.70805020110221 3.12236492448736 6.38687931936265 2.4932054526027 2.98568193770049 3.51749783735832 +pkc 3.49953328238302 3.12236492448736 1.43983512804792 1.12492959698548 2.52572864430826 4.10098910494077 4.67282883446191 7.21376830811864 2.04122032885964 1.87946504964716 3.41772668361337 +pkc 2.72785282839839 1.96990565461153 2.98568193770049 3.13113691056019 2.06812778177956 2.67414864942653 3.6609942506244 6.46769872610435 3.07731226054641 3.82209829790016 4.70048036579242 +pkc 2.64617479738412 3.10458667846607 2.72785282839839 5.83773044716594 3.70622809244855 3.35340671782581 3.85862222870103 5.8111409929767 1.98787434815435 3.95699637107088 4.74493212836325 +pkc 3.3357695763397 3.21084365317094 3.03974915897077 3.16547504814109 1.8531680973567 2.52572864430826 3.29953372788566 6.02586597382531 2.57261223020711 3.3178157727231 3.4904285153901 +pkc 3.3357695763397 2.39789527279837 3.58905911883173 3.6163087612791 3.3357695763397 4.61512051684126 5.00394630594546 7.14124512235049 2.76000994003292 3.3357695763397 4.24563400976833 +pkc 2.09556092355972 2.90690105984738 2.97552956623647 3.06805293513362 2.4423470353692 3.38099467434464 3.92197333628131 5.85507192220243 1.7263316639056 2.92316158071916 3.43720781918519 +pkc 2.41591377830105 3.90399083373088 3.27336401015227 3.79548918917219 3.51749783735832 3.29212628660779 3.86702563949741 5.94542060860658 2.07819075977818 3.27336401015227 3.69635146895264 +pkc 3.34638914516716 3.10458667846607 3.59731226058845 3.49953328238302 2.41591377830105 3.58073729549423 4.02891675689965 5.68357976733868 2.80336038090653 3.40119738166216 4.20916023665068 +pkc 3.24649099190117 2.72785282839839 3.56104608260405 3.64283551561253 0.717839793150317 3.59731226058845 4.02891675689965 6.37672694789863 2.25758772706331 3.05870707271538 3.68887945411394 +pkc 2.80336038090653 2.68784749378469 3.13983261752775 2.85070650150373 0.0582689081239758 4.33598269617247 5.01063529409626 7.6275443904885 2.56494935746154 3.38099467434464 3.85862222870103 +pkc 2.45958884180371 2.7408400239252 3.3357695763397 3.50855589998265 2.26695791535089 3.6609942506244 3.92197333628131 6.40357419793482 1.42069578783722 2.24812890719799 3.77734810210154 +pkc 4.82028156560504 4.29045944114839 2.92316158071916 3.40784192438082 2.10413415427021 2.47653840011748 3.39114704580865 5.99893656194668 3.32862668882732 4.17284762371004 4.71849887129509 +pkc 3.17387845893747 2.68102152871429 2.47653840011748 5.4510384535657 3.77734810210154 4.27249074760558 4.52396013056255 7.24064969425547 2.05923883436232 3.68887945411394 3.96651119071222 +pkc 3.03013370027132 2.73436750941958 4.0842942263686 5.26269018890489 4.06560209335645 4.33598269617247 4.74493212836325 5.88332238848828 2.42480272571829 3.01553490085017 3.52636052461616 +pkc 2.84490938381941 2.50959926237837 2.85070650150373 5.18178355029209 3.4626060097908 3.48124008933569 3.87743156065853 6.20657592672493 2.77258872223978 3.52636052461616 3.3357695763397 +pkc 3.15700042115011 2.14943391349987 3.24649099190117 3.51749783735832 2.70805020110221 4.77912349311153 5.63835466933375 7.4205789054108 2.50143595173921 3.38099467434464 3.4904285153901 +pkc 2.61739583283408 2.92316158071916 2.70805020110221 4.66343909411207 2.24812890719799 2.18605127673809 2.9391619220656 6.36818718635049 2.4423470353692 2.90690105984738 3.45315712059287 +pkc 4.77912349311153 3.6163087612791 4.21803603456465 6.26909628370626 4.52396013056255 4.00186370942794 4.29045944114839 5.95324333428778 2.40694510831829 3.68887945411394 3.62434093297637 +pkc 2.66025953726586 2.47653840011748 3.8308129500026 4.23700086262362 4.28082412916472 3.75887182593397 4.3267781604434 6.57507584059962 1.99741770620125 2.89591193827178 3.89385903480047 +pkc 4.20020495292158 3.43720781918519 2.4932054526027 5.36129216570943 2.32238772029023 3.80443779474821 3.93963817246112 5.63121178182137 1.94304891677428 3.08648663682246 3.66867674679642 +pkc 3.2846635654062 2.94968833505258 2.9391619220656 3.09557760852371 2.06812778177956 3.23080439573347 3.58905911883173 5.79301360838414 1.45628673293993 0.802001585472027 2.58776403522771 +pkc 3.12236492448736 2.77881927199042 2.67414864942653 4.254193263164 2.70805020110221 2.97552956623647 3.10458667846607 6.53958595561767 2.36085400111802 3.45315712059287 3.3178157727231 +pkc 3.26575941076705 2.84490938381941 1.96990565461153 4.66343909411207 2.77258872223978 2.27521389619791 2.75366071235426 6.35957386867238 2.62466859216316 3.2846635654062 4.48863636973214 +pkc 3.49953328238302 2.88480071284671 2.55722731136763 5.06259503302697 3.31054301339402 4.41642806139121 4.98360662170834 7.3125534981026 2.4932054526027 3.03013370027132 3.62434093297637 +pkc 2.85070650150373 2.15871472257434 1.07158361628019 2.2213750375685 1.31372366828506 3.95699637107088 4.57779898919196 7.21376830811864 2.60268968544438 2.97552956623647 3.40784192438082 +pkc 2.16791018966744 2.99573227355399 1.97823903617067 5.76519110278484 3.48124008933569 3.4626060097908 4.26267987704132 8.04109100370863 2.50143595173921 2.86220088092947 3.94931879017184 +pkc 3.03013370027132 1.33236601909433 3.98527346716774 5.43372200355424 3.8308129500026 3.01553490085017 3.39114704580865 6.05443934626937 2.51769647261099 3.2846635654062 4.14630430115281 +pkc 4.29045944114839 4.14630430115281 3.47196645255036 3.35340671782581 1.81645208181843 4.21803603456465 4.71849887129509 7.96901178110648 2.79728133483015 3.19458313229916 4.16511363311031 +pkc 2.91235066461494 2.36085400111802 0.819779831493311 0.104360015324243 6.23244801655052 3.56953269648137 4.12874598893943 6.37672694789863 1.93441576962958 3.06805293513362 4.0842942263686 +pkc 3.64283551561253 3.52636052461616 2.58021682959233 3.02042488614436 2.47653840011748 1.59127394180643 2.54160199346455 6.08904487544685 3.11351530921037 3.40784192438082 4.29045944114839 +pkc 2.41591377830105 3.12236492448736 2.50143595173921 4.93447393313069 2.31253542384721 2.54160199346455 3.29212628660779 6.30444880242198 3.4626060097908 3.72328088083127 3.95699637107088 +pkc 4.20020495292158 3.75185425327532 2.81540871942271 2.35137525716348 1.49290409617815 3.35340671782581 3.67882911826043 5.71042701737487 3.51749783735832 3.92197333628131 4.3528552573736 +pkc 0.00995033085316809 0 0.548121408509688 1.60140574073684 1.7630170003624 3.75185425327532 4.254193263164 6.23244801655052 2.79728133483015 3.2846635654062 3.85862222870103 +pkc 2.23108909128898 2.42480272571829 3.3178157727231 3.03013370027132 1.71739505393919 4.60517018598809 5.30826769740121 7.60936653795421 2.14124194258528 2.72785282839839 3.26575941076705 +pkc 3.09557760852371 1.89761985992753 2.19499988231411 5.12396397940326 2.2213750375685 2.73436750941958 3.55248682920838 6.30444880242198 2.73436750941958 3.85014760171006 4.19116874685764 +pkc 3.06805293513362 2.39789527279837 2.32238772029023 5.34233425196481 2.77258872223978 2.60268968544438 2.9704144655697 6.36818718635049 3.35340671782581 3.75887182593397 4.38077585277223 +pkc 3.81330703248899 2.92316158071916 3.34638914516716 3.81330703248899 2.55722731136763 5.36129216570943 5.82008293035236 8.35585004100747 2.23964529322017 2.08691355651854 3.56104608260405 +pkc 3.03013370027132 2.75366071235426 2.92316158071916 4.7361984483945 3.41772668361337 3.43720781918519 3.92986292355648 5.95324333428778 2.47653840011748 3.2846635654062 3.9759363311718 +pkc 4.40671924726425 4.11903717481247 2.9391619220656 3.41772668361337 1.08856195281461 4.05698877567833 4.77912349311153 7.47420480649612 2.43361335540045 2.72785282839839 3.74242022104197 +pkc 2.71469474382088 2.67414864942653 2.37024374146786 2.37024374146786 0.854415328156068 3.4904285153901 4.01998014693324 5.8111409929767 2.07819075977818 2.77881927199042 3.54385368206368 +pkc 2.83321334405622 2.70136121295141 3.19458313229916 3.37416870927424 2.60268968544438 4.16511363311031 4.63472898822964 7.19593722647557 2.80336038090653 3.75185425327532 4.14630430115281 +pkc 3.20274644293832 3.47196645255036 3.10458667846607 3.17387845893747 1.83418018511201 4.64439089914137 5.23644196282995 7.93307977188041 2.32238772029023 3.25424296870549 3.9759363311718 +pkc 3.17387845893747 2.71469474382088 3.29212628660779 2.9704144655697 1.22377543162212 1.73518911773966 3.06805293513362 6.53958595561767 2.70805020110221 3.56953269648137 3.81330703248899 +pkc 3.36384159511839 2.77881927199042 2.58021682959233 4.13676527810605 3.07731226054641 3.05870707271538 3.44361809754611 6.25190388316589 2.12226153886276 2.90690105984738 2.7408400239252 +pkc 4.254193263164 4.01096295328305 2.21266038546606 2.79116510781272 2.30258509299405 3.62434093297637 4.01998014693324 6.04500531403601 2.3887627892351 3.17387845893747 3.4904285153901 +pkc 3.03974915897077 2.43361335540045 3.27336401015227 3.2846635654062 2.68784749378469 3.48124008933569 4.10098910494077 6.24222326545517 2.80336038090653 3.03013370027132 3.68887945411394 +pkc 4.48863636973214 4.20916023665068 2.77258872223978 3.18221184049661 1.62727783056243 3.31054301339402 3.60549784517489 6.1527326947041 2.94968833505258 3.04927304048202 3.43720781918519 +pkc 2.55722731136763 1.42069578783722 2.86220088092947 2.57261223020711 2.33214389523559 1.20597080698861 3.49953328238302 6.56526497003536 2.37024374146786 3.63495111208838 4.39814601655377 +pkc 2.9704144655697 1.51072193949494 4.20020495292158 5.6937321388027 4.19116874685764 3.8416005411316 4.13676527810605 6.13339804299665 3.86702563949741 4.40671924726425 4.66343909411207 +pkc 2.85070650150373 2.62466859216316 3.39114704580865 5.74620319054015 3.73289633953071 3.58073729549423 3.87743156065853 6.09807428216624 2.45958884180371 3.56104608260405 4.30000279919529 +pkc 4.30811095172371 3.74242022104197 3.18221184049661 3.35340671782581 2.02419306744936 2.91235066461494 3.63495111208838 6.31354804627709 3.11351530921037 3.67882911826043 3.86702563949741 +pkc 3.09557760852371 3.18221184049661 3.31054301339402 5.99146454710798 3.4904285153901 5.27811465923052 5.61312810638807 6.83625927727707 2.81540871942271 3.19458313229916 3.68887945411394 +pkc 2.90690105984738 3.03974915897077 3.90399083373088 4.7361984483945 3.24649099190117 3.65065824129374 3.96651119071222 6.10702288774225 2.90690105984738 3.29212628660779 3.82209829790016 +pkc 3.91202300542815 3.91202300542815 4.07414185490458 5.93753620508243 4.38949864951258 2.66025953726586 2.91235066461494 6.20657592672493 1.89761985992753 2.62466859216316 2.68102152871429 +pkc 3.6609942506244 2.2935443483419 3.56953269648137 4.54223038621422 3.08648663682246 2.14124194258528 4.00186370942794 7.07834157955767 1.74571553072665 3.54385368206368 3.65065824129374 +pkc 3.2188758248682 2.30258509299405 2.84490938381941 2.83321334405622 1.19694818938897 3.54385368206368 3.8416005411316 5.63835466933375 2.26695791535089 2.83321334405622 3.88567903008854 +pkc 3.11351530921037 2.66025953726586 2.57261223020711 4.80402104473326 3.03974915897077 3.58073729549423 4.27249074760558 7.07834157955767 2.28442112236637 3.41772668361337 3.3357695763397 +pkc 2.56494935746154 3.2846635654062 3.35340671782581 3.50855589998265 2.77881927199042 4.16511363311031 4.77068462446567 6.95272864462487 2.51769647261099 3.62434093297637 4.99043258677874 +pkc 2.84490938381941 2.71469474382088 3.39114704580865 6.11589212548303 3.87743156065853 3.51749783735832 3.86702563949741 7.14124512235049 3.68887945411394 4.36182392735636 4.79579054559674 +pkc 2.27521389619791 1.11514159061932 3.41772668361337 3.40784192438082 2.34180580614733 2.70805020110221 4.04830062372069 7.04228617193974 2.40694510831829 2.99573227355399 3.90399083373088 +pkc 3.06805293513362 3.63495111208838 3.10458667846607 3.19458313229916 1.86252854011626 3.62434093297637 4.01998014693324 6.06145691892802 1.75440368268429 3.31054301339402 3.95699637107088 +pkc 2.41591377830105 2.58021682959233 2.86789890204411 1.95160817016995 2.62466859216316 3.48124008933569 3.8308129500026 6.01615715969835 0.943905898907128 4.17284762371004 1.19694818938897 +pkc 1.37624402526639 2.61739583283408 2.484906649788 4.81218435537242 2.58021682959233 3.56104608260405 3.98527346716774 6.42162226780652 1.23256026117785 3.13983261752775 3.56104608260405 +pkc 3.24649099190117 2.14943391349987 3.23080439573347 3.3178157727231 2.16791018966744 3.35340671782581 3.62434093297637 6.05443934626937 2.41591377830105 3.26575941076705 3.47196645255036 +pkc 2.82137888640921 2.90690105984738 4.03777421073371 6.34035930372775 4.37071287477361 3.76815263500844 4.18205014264121 6.60258789218934 2.82137888640921 2.94968833505258 3.2188758248682 +pkc 4.27249074760558 4.06560209335645 4.23700086262362 6.25958146406492 4.11087386417331 2.79728133483015 3.39114704580865 6.29526600143965 3.08648663682246 3.71357206670431 4.0926765051214 +pkc 3.87743156065853 3.85014760171006 2.91235066461494 2.67414864942653 1.13462272619114 2.76000994003292 4.10098910494077 7.70841066725737 2.18605127673809 3.19458313229916 3.66867674679642 +pkc 3.08648663682246 1.01523067972906 3.13113691056019 4.8283137373023 2.64617479738412 2.7408400239252 3.29212628660779 5.97126183979046 3.62434093297637 4.254193263164 4.97673374242057 +pkc 1.98787434815435 2.82137888640921 2.54160199346455 5.30826769740121 2.81540871942271 3.36384159511839 3.89385903480047 6.38687931936265 1.61938824328727 3.40784192438082 3.3357695763397 +pkc 2.94968833505258 2.34180580614733 2.4932054526027 5.27299955856375 2.56494935746154 4.57779898919196 5.01727983681492 7.51914995766982 2.27521389619791 3.51749783735832 3.63495111208838 +pkc 3.03013370027132 2.50143595173921 2.53369681395743 3.11351530921037 2.84490938381941 4.56954300834494 4.84418708645859 7.05185562295589 1.87946504964716 3.44361809754611 3.82209829790016 +pkc 3.40784192438082 2.88480071284671 4.19116874685764 5.62040086571715 4.20020495292158 3.91202300542815 4.33598269617247 6.51174532964473 3.39114704580865 4.03777421073371 4.30811095172371 +pkc 3.10458667846607 3.12236492448736 2.54160199346455 4.17284762371004 1.94304891677428 3.65065824129374 4.3528552573736 7.7621706071382 2.19499988231411 2.89591193827178 3.82209829790016 +pkc 3.40119738166216 3.03013370027132 2.99573227355399 2.87919845729804 2.4932054526027 1.37624402526639 2.85070650150373 6.00881318544259 2.3887627892351 3.26575941076705 4.20020495292158 +pkc 3.26575941076705 1.42069578783722 2.4423470353692 2.70805020110221 2.33214389523559 2.4932054526027 3.08648663682246 6.35957386867238 2.71469474382088 3.40119738166216 3.9759363311718 +pkc 3.32862668882732 2.66025953726586 2.26695791535089 2.66025953726586 2.05923883436232 2.97552956623647 3.49953328238302 5.80211837537706 1.78170913337455 2.9391619220656 3.27336401015227 +pkc 3.03974915897077 1.708377860289 3.15700042115011 5.67675380226828 4.03777421073371 5.06259503302697 5.54907608489522 7.49220304261874 2.79116510781272 3.71357206670431 3.82209829790016 +pkc 2.79116510781272 2.99573227355399 2.77881927199042 3.23080439573347 0.371563556432483 4.01096295328305 4.36182392735636 6.22455842927536 2.34180580614733 2.9391619220656 3.79548918917219 +pkc 2.61739583283408 2.56494935746154 3.23867845216438 3.35340671782581 2.16791018966744 2.79728133483015 3.72328088083127 6.14418563412565 2.58776403522771 3.4626060097908 3.92986292355648 +pkc 2.77258872223978 2.84490938381941 2.4423470353692 3.07731226054641 2.23964529322017 4.85981240436167 5.34233425196481 7.52833176670725 2.4932054526027 2.70136121295141 3.59731226058845 +pkc 3.12236492448736 2.97552956623647 3.26575941076705 3.2846635654062 2.9391619220656 2.82137888640921 3.41772668361337 6.42162226780652 2.58776403522771 3.2188758248682 3.67882911826043 +pkc 3.60549784517489 2.67414864942653 2.86220088092947 3.15700042115011 2.20386912005489 2.23108909128898 3.72328088083127 7.16857989726403 3.80443779474821 4.27249074760558 4.77912349311153 +pkc 2.08691355651854 2.75366071235426 3.32862668882732 3.44361809754611 2.24812890719799 2.65324196460721 3.60549784517489 6.74641212857337 2.28442112236637 2.73436750941958 3.6163087612791 +pkc 3.45315712059287 3.90399083373088 2.2213750375685 5.11799381241676 3.16547504814109 4.43438186500781 4.63472898822964 5.73979291217923 1.69927861643389 2.72785282839839 3.13983261752775 +pkc 4.07414185490458 2.43361335540045 4.38949864951258 6.19644412779452 4.11903717481247 3.06805293513362 3.85862222870103 6.78219205600679 2.60268968544438 3.29953372788566 3.29953372788566 +pkc 2.91235066461494 2.4423470353692 1.7263316639056 2.76000994003292 2.28442112236637 1.38629436111989 2.87919845729804 6.25958146406492 3.34638914516716 4.07414185490458 4.83628190695148 +pkc 3.68887945411394 3.16547504814109 0.765467842139571 4.10098910494077 2.11384296839717 3.17387845893747 3.82209829790016 5.64897423816121 2.12226153886276 1.98787434815435 3.76815263500844 +pkc 2.54160199346455 2.76000994003292 2.79728133483015 2.57261223020711 1.20597080698861 3.08648663682246 3.8308129500026 6.13339804299665 2.21266038546606 2.99573227355399 3.3357695763397 +pkc 3.23080439573347 1.37624402526639 2.1770218700187 1.63705307946707 1.56444054650336 2.9338568698359 3.63495111208838 6.58340922215876 3.58073729549423 4.33598269617247 5.2257466737132 +pkc 2.97552956623647 2.92316158071916 4.03777421073371 6.04500531403601 4.37071287477361 1.51072193949494 2.19499988231411 5.34233425196481 1.84371920815877 2.41591377830105 3.20274644293832 +pkc 3.39114704580865 3.26575941076705 2.37954613413017 3.25424296870549 2.61739583283408 2.9704144655697 3.40784192438082 6.73696695800186 1.30291275218084 2.9338568698359 3.88567903008854 +pkc 2.81540871942271 2.28442112236637 3.00568260440716 5.91889385427315 4.05698877567833 4.18205014264121 4.48863636973214 5.89164421182577 2.13179677201376 2.73436750941958 3.69635146895264 +pkc 2.33214389523559 2.46809953147162 2.61739583283408 4.45201900649392 2.99573227355399 3.81330703248899 4.34380542185368 7.07834157955767 2.61739583283408 3.00568260440716 3.49953328238302 +pkc 2.77881927199042 2.30258509299405 2.96010509591084 3.17387845893747 2.39789527279837 4.81218435537242 5.32300997913841 6.8627579130514 2.92316158071916 3.62434093297637 4.0842942263686 +pkc 3.01553490085017 2.86789890204411 2.91235066461494 3.03013370027132 1.14103300455206 2.61006979274201 3.31054301339402 6.69208374250663 2.62466859216316 3.51749783735832 4.254193263164 +pkc 2.1770218700187 1.8531680973567 2.88480071284671 2.71469474382088 1.32175583998232 3.58073729549423 3.92986292355648 6.09807428216624 3.62434093297637 3.8308129500026 3.54385368206368 +pkc 4.29045944114839 4.21803603456465 3.56104608260405 4.14630430115281 2.9391619220656 3.74242022104197 4.19116874685764 6.25958146406492 2.63188884013665 3.08648663682246 2.64617479738412 +pkc 3.09557760852371 3.07731226054641 2.79728133483015 2.9338568698359 0.943905898907128 2.41591377830105 3.20274644293832 6.38687931936265 2.14124194258528 3.19458313229916 3.65065824129374 +pkc 3.50855589998265 2.68102152871429 2.27521389619791 5.05624580534831 2.61006979274201 3.34638914516716 3.86702563949741 6.16961073249146 1.92424865227413 2.55722731136763 2.80336038090653 +pkc 3.29953372788566 2.05923883436232 4.05698877567833 5.62040086571715 3.80443779474821 3.40784192438082 3.9759363311718 6.25190388316589 2.58776403522771 3.47196645255036 4.3528552573736 +pkc 3.25424296870549 2.77881927199042 2.61006979274201 2.77881927199042 2.75366071235426 3.38099467434464 3.80443779474821 6.39526159811545 1.24990173621434 3.4904285153901 3.71357206670431 +pkc 4.33598269617247 3.92197333628131 1.79009141212736 2.60268968544438 2.70805020110221 3.59731226058845 4.15575319035074 6.23244801655052 2.54160199346455 2.96010509591084 3.53514535417189 +pkc 3.15700042115011 2.07819075977818 3.12236492448736 3.53514535417189 2.43361335540045 5.03043792139244 5.62040086571715 7.60936653795421 1.73518911773966 3.56953269648137 3.67882911826043 +pkc 3.02042488614436 2.13179677201376 3.03974915897077 3.14845336057165 2.15871472257434 3.50855589998265 3.9926809084456 5.73979291217923 2.25758772706331 3.04927304048202 3.23867845216438 +pkc 3.40119738166216 2.83321334405622 3.38099467434464 3.4626060097908 1.61938824328727 2.62466859216316 3.16547504814109 5.58724865840025 2.65324196460721 3.41772668361337 3.29953372788566 +pkc 3.3178157727231 2.26695791535089 1.7263316639056 2.34180580614733 2.12226153886276 3.6609942506244 4.30000279919529 7.15929190479756 2.36085400111802 2.9704144655697 3.62434093297637 +pkc 2.62466859216316 2.50959926237837 3.21084365317094 3.03013370027132 1.98787434815435 3.66867674679642 4.05698877567833 6.05443934626937 2.61739583283408 3.2846635654062 3.56953269648137 +pkc 2.79116510781272 3.03974915897077 3.94931879017184 4.19116874685764 3.63495111208838 1.96990565461153 2.9338568698359 6.4393503711001 2.79116510781272 3.76815263500844 3.43720781918519 +pkc 4.33598269617247 4.254193263164 3.04927304048202 3.24649099190117 1.67335123817775 3.65065824129374 4.12874598893943 6.18001665365257 2.73436750941958 2.79116510781272 3.7864597824528 +pkc 3.07731226054641 3.11351530921037 3.08648663682246 3.39114704580865 2.02419306744936 3.62434093297637 4.24563400976833 6.58340922215876 2.02419306744936 2.85070650150373 2.92316158071916 +pkc 3.10458667846607 2.04122032885964 3.6609942506244 4.31748811353631 2.10413415427021 0.845868267577609 2.9338568698359 6.04500531403601 3.74242022104197 4.11903717481247 4.29045944114839 +pkc 2.67414864942653 3.68887945411394 2.54160199346455 4.96284463025991 3.52636052461616 4.12874598893943 4.69134788222914 7.04228617193974 2.25758772706331 3.21084365317094 3.69635146895264 +pkc 4.11087386417331 3.75185425327532 2.89591193827178 3.32862668882732 1.53901544813755 2.33214389523559 2.80336038090653 5.82008293035236 3.62434093297637 4.29045944114839 4.77912349311153 +pkc 3.42751468997953 3.13983261752775 4.30811095172371 6.01615715969835 4.18205014264121 4.34380542185368 5.09375020080676 7.10578612948127 2.77881927199042 3.03013370027132 3.67882911826043 +pkc 0 1.6094379124341 2.18605127673809 5.21493575760899 2.94968833505258 2.02419306744936 3.3178157727231 6.37672694789863 0.357674444271816 4.58700621536042 2.04122032885964 +pkc 3.31054301339402 2.72785282839839 2.9704144655697 3.37416870927424 2.23964529322017 4.17284762371004 4.47049528266149 6.63856778916652 1.92424865227413 3.53514535417189 3.02042488614436 +pkc 2.57261223020711 2.81540871942271 4.04830062372069 5.93753620508243 4.03777421073371 4.43438186500781 5.19849703126583 7.3038432252777 2.34180580614733 3.23080439573347 3.42751468997953 +pkc 3.03013370027132 2.05027016437956 3.13983261752775 4.01998014693324 2.55722731136763 4.54223038621422 5.17048399503815 7.32118855673948 3.53514535417189 3.6609942506244 4.17284762371004 +pkc 2.06812778177956 2.54160199346455 2.2935443483419 3.10458667846607 2.03339760317843 3.4904285153901 3.87743156065853 5.71042701737487 2.14124194258528 3.07731226054641 3.67882911826043 +pkc 2.3887627892351 2.91235066461494 2.90690105984738 2.36085400111802 1.708377860289 3.70622809244855 4.10098910494077 5.83773044716594 2.14124194258528 3.02042488614436 3.54385368206368 +pkc 2.71469474382088 2.37024374146786 2.31253542384721 4.36182392735636 2.2935443483419 2.96010509591084 3.64283551561253 6.53958595561767 5.96357934361845 6.29526600143965 4.70048036579242 +pkc 2.85070650150373 2.53369681395743 3.20274644293832 3.40119738166216 1.94304891677428 2.79116510781272 3.26575941076705 5.91889385427315 2.92316158071916 3.47196645255036 3.6609942506244 +pkc 5.16478597392351 3.76815263500844 3.38099467434464 3.72328088083127 2.82137888640921 0.672944473242426 2.31253542384721 5.36129216570943 1.62727783056243 1.53901544813755 1.43983512804792 +pkc 3.73289633953071 3.67882911826043 2.484906649788 4.83628190695148 2.40694510831829 1.99741770620125 3.19458313229916 6.26909628370626 2.87919845729804 3.51749783735832 4.04830062372069 +pkc 3.73289633953071 2.77881927199042 3.35340671782581 3.2188758248682 2.1770218700187 2.91235066461494 3.44361809754611 6.18001665365257 2.4423470353692 3.64283551561253 4.33598269617247 +pkc 2.81540871942271 2.54160199346455 2.68784749378469 4.3528552573736 2.58021682959233 1.79009141212736 3.75185425327532 6.08904487544685 2.15871472257434 3.25424296870549 3.7864597824528 +pkc 4.38077585277223 5.11799381241676 2.68784749378469 3.12236492448736 2.00552585872967 2.61006979274201 3.32862668882732 6.37672694789863 2.36085400111802 2.25758772706331 2.82137888640921 +pkc 2.82137888640921 2.80336038090653 3.2188758248682 3.03974915897077 2.06812778177956 3.9759363311718 4.45201900649392 6.70073110954781 3.03013370027132 3.70622809244855 2.98568193770049 +pkc 2.71469474382088 2.46809953147162 4.01998014693324 4.85981240436167 3.27336401015227 3.4626060097908 3.88567903008854 5.8636311755981 2.34180580614733 2.60268968544438 3.12236492448736 +pkc 2.00552585872967 2.36085400111802 2.57261223020711 4.53367418428302 2.3887627892351 3.75887182593397 4.04830062372069 5.89989735358249 1.83418018511201 3.03013370027132 3.6609942506244 +pkc 2.63188884013665 2.15871472257434 2.68784749378469 3.45315712059287 1.89761985992753 4.53367418428302 5.27811465923052 7.78904040165748 2.30258509299405 3.10458667846607 3.19458313229916 +pkc 2.85070650150373 2.77881927199042 2.58021682959233 2.68784749378469 1.7263316639056 2.55722731136763 3.42751468997953 6.43133108193348 2.99573227355399 3.74242022104197 4.33598269617247 +pkc 3.25424296870549 2.84490938381941 2.87919845729804 2.63188884013665 1.4036429994545 3.23867845216438 3.32862668882732 5.94542060860658 2.42480272571829 3.16547504814109 3.86702563949741 +pkc 1.99741770620125 2.64617479738412 3.53514535417189 3.4904285153901 2.23108909128898 3.16547504814109 3.69635146895264 6.41345895716736 3.41772668361337 4.10098910494077 4.7361984483945 +pkc 3.01553490085017 2.77258872223978 3.9926809084456 4.46129981556839 3.75887182593397 4.59612944133594 5.13579843705026 7.58222919427646 2.4932054526027 3.03974915897077 3.37416870927424 +pkc 2.66025953726586 2.76000994003292 3.48124008933569 3.47196645255036 2.90690105984738 1.89761985992753 2.80336038090653 6.90775527898214 2.40694510831829 2.87919845729804 3.60549784517489 +pkc 2.94968833505258 2.58021682959233 3.19458313229916 4.99043258677874 2.68102152871429 4.20020495292158 4.53367418428302 6.62936325343745 2.53369681395743 3.77734810210154 4.41642806139121 +pkc 4.55071400019203 3.92986292355648 3.27336401015227 3.88567903008854 2.60268968544438 4.17284762371004 4.76217393479776 7.86134179559999 2.9704144655697 3.70622809244855 4.13676527810605 +pkc 2.52572864430826 2.20386912005489 2.65324196460721 5.18738580584075 3.16547504814109 2.56494935746154 3.40119738166216 5.99146454710798 3.11351530921037 3.75887182593397 4.0926765051214 +pkc 2.45958884180371 1.65441127807683 3.19458313229916 3.75185425327532 2.28442112236637 3.75185425327532 4.0842942263686 6.27852142416584 1.2947271675944 2.82137888640921 3.80443779474821 +pkc 2.33214389523559 2.90690105984738 3.17387845893747 3.31054301339402 0.198850858745165 3.19458313229916 3.64283551561253 6.56526497003536 2.9338568698359 2.70805020110221 3.71357206670431 +pkc 2.4932054526027 3.2188758248682 1.78170913337455 6.10702288774225 3.81330703248899 4.54223038621422 5.03043792139244 7.35755620091035 1.45628673293993 3.85014760171006 1.870262530716 +pkc 3.05870707271538 2.62466859216316 3.81330703248899 6.04500531403601 3.90399083373088 5.11799381241676 5.63121178182137 7.96901178110648 2.79116510781272 3.35340671782581 3.56104608260405 +pkc 3.94931879017184 3.47196645255036 2.40694510831829 5.16478597392351 2.12226153886276 4.29045944114839 4.87519732320115 7.14124512235049 2.63188884013665 3.4626060097908 3.4904285153901 +pkc 3.26575941076705 2.51769647261099 3.04927304048202 3.19458313229916 1.60140574073684 4.7361984483945 5.4971682252932 7.57353126274595 0.22314355131421 2.92316158071916 1.56444054650336 +pkc 2.61739583283408 2.42480272571829 3.3178157727231 3.40784192438082 1.48387468945875 2.52572864430826 2.97552956623647 6.22455842927536 2.36085400111802 2.97552956623647 3.88567903008854 +pkc 2.67414864942653 2.26695791535089 1.73518911773966 5.71042701737487 3.03974915897077 3.52636052461616 4.01998014693324 5.73979291217923 2.57261223020711 3.35340671782581 3.63495111208838 +pkc 2.18605127673809 2.99573227355399 3.15700042115011 3.07731226054641 1.06125650212434 0.0953101798043249 2.63188884013665 5.18178355029209 2.75366071235426 3.10458667846607 3.67882911826043 +pkc 3.23080439573347 2.02419306744936 3.10458667846607 3.37416870927424 2.39789527279837 3.12236492448736 3.4626060097908 5.58724865840025 2.7408400239252 3.37416870927424 4.11087386417331 +pkc 3.52636052461616 3.11351530921037 4.54223038621422 6.50279004591562 4.30000279919529 3.13113691056019 3.6609942506244 6.07073772800249 3.54385368206368 4.00186370942794 3.62434093297637 +pkc 1.9154509415706 1.71739505393919 3.86702563949741 5.17048399503815 4.05698877567833 3.31054301339402 3.82209829790016 5.8636311755981 2.83321334405622 2.99573227355399 3.09557760852371 +pkc 3.95699637107088 3.44361809754611 3.08648663682246 4.93447393313069 2.86220088092947 3.06805293513362 3.51749783735832 6.07073772800249 2.77881927199042 3.2188758248682 3.39114704580865 +pkc 3.40119738166216 2.88480071284671 2.89591193827178 2.84490938381941 1.05082162483176 2.90690105984738 3.59731226058845 6.09807428216624 2.4423470353692 3.13113691056019 3.72328088083127 +pkc 3.05870707271538 3.12236492448736 2.12226153886276 5.00394630594546 2.77881927199042 3.16547504814109 3.6609942506244 5.66642668811243 3.02042488614436 3.65065824129374 3.90399083373088 +pkc 2.46809953147162 2.12226153886276 3.10458667846607 3.21084365317094 1.57484646766448 2.61006979274201 2.62466859216316 5.79301360838414 1.75440368268429 3.29212628660779 3.40119738166216 +pkc 3.85862222870103 2.96010509591084 3.12236492448736 3.42751468997953 1.93441576962958 3.40119738166216 3.81330703248899 6.33150184989369 1.97823903617067 3.4626060097908 3.89385903480047 +pkc 3.63495111208838 2.50959926237837 2.91235066461494 3.49953328238302 2.58021682959233 1.68268837417369 2.50143595173921 6.37672694789863 2.43361335540045 3.09557760852371 1.93441576962958 +pkc 4.16511363311031 3.7864597824528 3.07731226054641 3.24649099190117 1.52822785700856 4.46129981556839 4.83628190695148 5.88332238848828 2.23964529322017 3.11351530921037 3.67882911826043 +pkc 3.36384159511839 2.57261223020711 2.16791018966744 4.07414185490458 1.6094379124341 2.10413415427021 4.00186370942794 6.99759598298193 3.65065824129374 4.72738781871234 4.95582705760126 +pkc 4.56017282005736 3.90399083373088 3.13983261752775 3.41772668361337 1.87946504964716 3.10458667846607 3.62434093297637 6.19644412779452 1.708377860289 2.46809953147162 3.50855589998265 +pkc 3.38099467434464 3.85014760171006 2.24812890719799 5.27811465923052 3.32862668882732 3.50855589998265 3.95699637107088 6.05443934626937 3.80443779474821 4.47960696301275 5.08140436498446 +pkc 4.58700621536042 4.27249074760558 2.90690105984738 3.13983261752775 2.01490302054226 3.34638914516716 3.89385903480047 6.04500531403601 2.39789527279837 3.11351530921037 3.63495111208838 +pkc 4.97673374242057 4.89034912822175 3.70622809244855 5.96357934361845 4.29045944114839 3.37416870927424 3.52636052461616 5.96357934361845 2.34180580614733 2.77258872223978 3.90399083373088 +pkc 4.28082412916472 3.90399083373088 3.3178157727231 2.97552956623647 2.16791018966744 3.76815263500844 4.58700621536042 7.69028602067677 0 2.09556092355972 3.69635146895264 +pkc 2.61006979274201 2.4423470353692 4.38949864951258 6.28785856016178 4.254193263164 2.82137888640921 3.42751468997953 6.62936325343745 2.57261223020711 3.2846635654062 4.19116874685764 +pkc 2.7408400239252 1.62727783056243 2.30258509299405 4.95582705760126 2.91235066461494 3.11351530921037 3.54385368206368 6.07993319509559 2.7408400239252 3.4904285153901 4.21803603456465 +pkc 3.00568260440716 3.24649099190117 2.54160199346455 5.04342511691925 2.92316158071916 1.89761985992753 3.88567903008854 6.11589212548303 2.47653840011748 3.19458313229916 3.62434093297637 +pkc 4.38077585277223 3.87743156065853 3.03974915897077 2.97552956623647 1.05082162483176 3.36384159511839 3.20274644293832 6.12468339089421 2.84490938381941 3.19458313229916 4.64439089914137 +pkc 1.08856195281461 1.94304891677428 2.7408400239252 4.63472898822964 2.36085400111802 3.53514535417189 3.92986292355648 5.94542060860658 2.3887627892351 2.98568193770049 3.40784192438082 +pkc 2.77881927199042 2.92316158071916 3.34638914516716 4.96284463025991 2.58776403522771 3.86702563949741 4.23700086262362 6.09807428216624 4.03777421073371 5.00394630594546 5.82008293035236 +pkc 2.99573227355399 2.96010509591084 2.67414864942653 3.34638914516716 2.33214389523559 3.18221184049661 3.98527346716774 5.64897423816121 2.28442112236637 3.44361809754611 3.95699637107088 +pkc 3.25424296870549 2.9338568698359 1.88858365386359 3.03013370027132 2.13179677201376 2.67414864942653 3.50855589998265 6.38687931936265 1.84371920815877 2.50143595173921 0 +pkc 3.06805293513362 2.36085400111802 1.16938135955632 0.89199803930511 2.00552585872967 3.39114704580865 3.76815263500844 5.91889385427315 1.870262530716 2.70136121295141 3.13983261752775 +pkc 2.70136121295141 2.68784749378469 3.20274644293832 3.53514535417189 2.52572864430826 2.58776403522771 2.86789890204411 6.40357419793482 2.63188884013665 2.64617479738412 3.71357206670431 +pkc 2.14943391349987 2.37024374146786 4.58700621536042 5.31811999384422 4.06560209335645 3.13113691056019 3.74242022104197 5.83773044716594 3.03013370027132 3.95699637107088 2.41591377830105 +pkc 2.35137525716348 2.7408400239252 2.60268968544438 2.97552956623647 0.518793793415168 2.86789890204411 3.75185425327532 6.50279004591562 2.52572864430826 3.50855589998265 4.30000279919529 +pkc 4.28082412916472 4.13676527810605 3.07731226054641 3.31054301339402 2.73436750941958 3.18221184049661 3.56953269648137 5.63835466933375 2.70805020110221 2.50143595173921 3.71357206670431 +pkc 3.24649099190117 3.21084365317094 3.01553490085017 3.01553490085017 1.06125650212434 1.9154509415706 3.49953328238302 6.37672694789863 4.0926765051214 5.07517381523383 5.75574221358691 +pkc 2.50959926237837 2.26695791535089 2.75366071235426 3.41772668361337 1.51951320490611 4.07414185490458 4.46129981556839 7.34858753092759 2.84490938381941 3.58905911883173 3.43720781918519 +pkc 3.13113691056019 3.56953269648137 2.80336038090653 2.70136121295141 1.66392609771817 3.9759363311718 4.46129981556839 6.34035930372775 2.34180580614733 3.49953328238302 3.20274644293832 +pkc 2.52572864430826 2.58021682959233 2.33214389523559 3.17387845893747 1.61938824328727 4.46129981556839 4.87519732320115 7.6004023345004 2.41591377830105 2.81540871942271 4.01096295328305 +pkc 3.79548918917219 2.88480071284671 3.63495111208838 4.16511363311031 3.31054301339402 4.3267781604434 4.99043258677874 6.97073007814353 2.50959926237837 2.97552956623647 3.06805293513362 +pkc 2.77881927199042 3.26575941076705 3.00568260440716 2.9338568698359 1.78170913337455 3.15700042115011 3.58905911883173 5.93753620508243 3.2846635654062 3.70622809244855 4.21803603456465 +pkc 2.484906649788 1.81645208181843 2.85070650150373 3.7864597824528 2.1770218700187 4.0926765051214 4.53367418428302 6.40357419793482 2.70805020110221 3.43720781918519 3.89385903480047 +pkc 2.76000994003292 2.45958884180371 2.96010509591084 2.87919845729804 2.04122032885964 3.85862222870103 4.76217393479776 7.89729647259588 3.81330703248899 4.20916023665068 2.62466859216316 +pkc 2.70136121295141 2.25758772706331 3.05870707271538 3.39114704580865 2.77881927199042 4.20916023665068 4.72738781871234 7.12367278520461 3.51749783735832 4.07414185490458 5.0998664278242 +pkc 3.21084365317094 3.52636052461616 2.58776403522771 2.91235066461494 1.93441576962958 3.29953372788566 3.8308129500026 6.75460409948796 2.37024374146786 3.53514535417189 3.67882911826043 +pkc 2.65324196460721 2.58021682959233 2.47653840011748 4.60517018598809 1.6467336971778 3.63495111208838 4.05698877567833 6.62936325343745 2.46809953147162 2.94968833505258 3.69635146895264 +pkc 4.12874598893943 3.85014760171006 2.73436750941958 3.12236492448736 1.75440368268429 3.58905911883173 3.90399083373088 6.13339804299665 2.50143595173921 2.97552956623647 3.62434093297637 +pkc 2.35137525716348 1.94304891677428 3.15700042115011 3.56953269648137 1.65441127807683 3.47196645255036 3.98527346716774 6.74641212857337 2.64617479738412 3.00568260440716 4.36182392735636 +pka 3.18221184049661 0 2.56494935746154 5.99893656194668 4.43438186500781 3.02042488614436 3.06805293513362 5.54126354515843 0.488580014818671 4.43438186500781 0.307484699747961 +pka 2.96010509591084 0.00995033085316809 2.96010509591084 4.71849887129509 3.6163087612791 4.17284762371004 4.11087386417331 5.62040086571715 0.86288995514704 4.91998092582813 0.182321556793955 +pka 1.23256026117785 0.672944473242426 2.2213750375685 5.20948615284142 3.13113691056019 2.35137525716348 2.76000994003292 6.44888939414686 2.9704144655697 3.58905911883173 0.113328685307003 +pka 2.79728133483015 0.00995033085316809 3.88567903008854 5.95324333428778 4.72738781871234 2.23964529322017 3.17387845893747 6.55677835615804 2.18605127673809 2.76000994003292 0.131028262406404 +pka 3.38099467434464 0 2.7408400239252 3.40119738166216 2.86220088092947 2.13179677201376 2.91235066461494 5.82894561761021 2.91235066461494 4.11087386417331 1.80828877117927 +pka 3.60549784517489 0 3.42751468997953 5.41610040220442 4.44382703557933 2.57261223020711 2.61739583283408 5.51342874616498 0.131028262406404 6.02586597382531 0.717839793150317 +pka 2.96010509591084 0.00995033085316809 3.10458667846607 5.47646355193151 3.64283551561253 3.26575941076705 3.26575941076705 5.82008293035236 0 1.13462272619114 0.0861776962410524 +pka 3.74242022104197 1.870262530716 3.11351530921037 3.08648663682246 2.77258872223978 2.7408400239252 2.97552956623647 5.48479693349065 0 4.41642806139121 0.215111379616945 +pka 3.9926809084456 1.57484646766448 4.07414185490458 4.01998014693324 2.94968833505258 4.82028156560504 5.19849703126583 8.06808962627824 0 0 0 +pka 2.99573227355399 0 1.33236601909433 1.65441127807683 2.72785282839839 3.40119738166216 3.50855589998265 5.62040086571715 0 5.15329159449778 0.712949807856125 +pka 3.01553490085017 0 3.63495111208838 5.87211778947542 4.41642806139121 2.53369681395743 2.96010509591084 5.6021188208797 0 6.4393503711001 0.746687947487975 +pka 4.91265488573605 0 3.72328088083127 4.05698877567833 2.7408400239252 2.58021682959233 2.88480071284671 5.72031177660741 0 2.15871472257434 0 +pka 2.86220088092947 0.19062035960865 3.31054301339402 5.6021188208797 4.46129981556839 3.89385903480047 3.8308129500026 6.67329796776765 0.0676586484738149 0 1.28647402583768 +pka 3.37416870927424 0.756121979721334 3.13113691056019 3.23867845216438 1.23256026117785 2.56494935746154 2.84490938381941 5.67675380226828 0 0.488580014818671 0.19062035960865 +pka 2.79728133483015 0.00995033085316809 3.4904285153901 3.56104608260405 1.83418018511201 2.32238772029023 2.82137888640921 5.4510384535657 0 3.23867845216438 1.94304891677428 +pka 2.01490302054226 0.00995033085316809 3.16547504814109 4.98360662170834 4.01998014693324 4.95582705760126 5.18738580584075 7.95120715647297 0 4.0926765051214 0.989541193613748 +pka 3.36384159511839 0.2390169004705 3.49953328238302 2.65324196460721 4.12874598893943 4.38077585277223 4.56017282005736 7.33953769540767 0 5.98141421125448 0.488580014818671 +pka 3.00568260440716 0.00995033085316809 2.72785282839839 5.54907608489522 3.44361809754611 0 1.11514159061932 2.14943391349987 0.262364264467491 0 1.31372366828506 +pka 4.92725368515721 0.00995033085316809 3.95699637107088 5.18178355029209 4.06560209335645 3.15700042115011 3.17387845893747 5.95324333428778 0 1.24990173621434 0.989541193613748 +pka 4.34380542185368 1.7630170003624 2.70805020110221 2.71469474382088 2.60268968544438 2.11384296839717 2.61739583283408 5.47646355193151 0 0.00995033085316809 0.845868267577609 +pka 3.73289633953071 0.00995033085316809 0 1.84371920815877 0.559615787935423 2.06812778177956 2.12226153886276 5.73009978297357 0 0.00995033085316809 0.470003629245736 +pka 3.45315712059287 0.00995033085316809 2.61739583283408 4.34380542185368 3.26575941076705 2.53369681395743 2.63188884013665 5.75574221358691 0 0 0.73716406597672 +pka 0 0 3.88567903008854 5.30826769740121 4.12874598893943 1.7630170003624 2.81540871942271 6.13339804299665 0 1.708377860289 0.89199803930511 +pka 3.13113691056019 0 3.07731226054641 4.92725368515721 3.66867674679642 3.20274644293832 3.3357695763397 5.85507192220243 0.609765571620894 0 1.45628673293993 +pka 2.40694510831829 0.00995033085316809 2.86789890204411 5.89989735358249 3.8416005411316 2.86220088092947 3.18221184049661 5.58724865840025 0 0.00995033085316809 0.0295588022415444 +pka 2.83321334405622 0.00995033085316809 3.13983261752775 3.29212628660779 3.06805293513362 0.928219302739429 2.46809953147162 5.72031177660741 0.425267735404344 3.6163087612791 0.845868267577609 +pka 2.99573227355399 0 1.00795792039998 1.54756250871601 3.16547504814109 3.86702563949741 4.18205014264121 7.27655640271871 0 3.3178157727231 0.405465108108164 +pka 4.04830062372069 0.00995033085316809 4.26267987704132 5.31811999384422 4.86753445045558 1.77155676191054 2.27521389619791 5.99893656194668 1.96990565461153 3.06805293513362 1.69009581545155 +pka 3.02042488614436 0.00995033085316809 2.16791018966744 3.3178157727231 3.11351530921037 1.96009478404727 2.34180580614733 5.54907608489522 0 0.559615787935423 0 +pka 3.41772668361337 0.22314355131421 3.68887945411394 3.53514535417189 2.60268968544438 3.02042488614436 3.12236492448736 5.8111409929767 0 5.50533153593236 0.412109650826833 +pka 3.34638914516716 0.00995033085316809 3.58073729549423 5.44241771052179 4.29045944114839 2.06812778177956 3.03013370027132 5.83773044716594 0 0 0.783901543828409 +pka 3.75185425327532 0.122217632724249 1.23256026117785 4.49758497530815 2.2935443483419 4.38077585277223 4.43438186500781 6.99759598298193 0 0.00995033085316809 0 +pka 3.76815263500844 0 2.14124194258528 3.11351530921037 0 2.62466859216316 3.14845336057165 6.35957386867238 0 0.00995033085316809 0.398776119957368 +pka 1.7263316639056 0.104360015324243 3.72328088083127 3.55248682920838 2.00552585872967 3.54385368206368 3.72328088083127 6.28785856016178 0 0 0.19062035960865 +pka 4.26267987704132 0 2.37024374146786 2.65324196460721 3.38099467434464 0.774727167552368 2.41591377830105 5.84643877505772 0 2.58021682959233 1.21491274436427 +pka 3.75887182593397 0.756121979721334 3.05870707271538 3.49953328238302 3.01553490085017 1.99741770620125 2.46809953147162 5.8636311755981 0 0.963174317773006 0.314810739840034 +pka 2.51769647261099 0.0676586484738149 2.23108909128898 3.10458667846607 2.57261223020711 2.45958884180371 3.11351530921037 5.61312810638807 0 3.54385368206368 0.783901543828409 +pka 1.78170913337455 0 3.62434093297637 2.3887627892351 3.9759363311718 4.85981240436167 5.01727983681492 7.70841066725737 1.45628673293993 3.59731226058845 1.03318448334565 +pka 2.82137888640921 0.198850858745165 3.96651119071222 6.12468339089421 4.61512051684126 1.870262530716 2.71469474382088 5.85507192220243 0 0.27763173659828 0.438254930931155 +pka 3.67882911826043 0 3.51749783735832 6.43133108193348 4.95582705760126 1.07840958135059 2.75366071235426 6.33150184989369 0 2.41591377830105 0.928219302739429 +pka 3.13113691056019 0.350656871613169 2.70136121295141 3.54385368206368 3.41772668361337 3.18221184049661 3.51749783735832 6.07073772800249 0 4.72738781871234 0 +pka 3.23867845216438 0.00995033085316809 3.19458313229916 3.2846635654062 3.8308129500026 3.03013370027132 3.27336401015227 5.71042701737487 0 2.05923883436232 0 +pka 2.75366071235426 0.00995033085316809 3.71357206670431 3.89385903480047 3.25424296870549 3.68887945411394 4.03777421073371 6.79122146272619 1.16002091679675 2.45958884180371 0.494696241836107 +pka 3.05870707271538 0.00995033085316809 0.746687947487975 2.46809953147162 2.28442112236637 2.77881927199042 3.25424296870549 6.05443934626937 0 1.84371920815877 0.385262400790645 +pka 3.69635146895264 0.0295588022415444 3.17387845893747 4.13676527810605 3.03974915897077 2.2213750375685 2.98568193770049 5.8111409929767 0 0.00995033085316809 0.672944473242426 +pka 3.59731226058845 0.19062035960865 3.36384159511839 3.40119738166216 2.43361335540045 1.62727783056243 3.11351530921037 5.45958551414416 0 0 0 +pka 3.32862668882732 0.00995033085316809 2.90690105984738 5.4510384535657 4.30811095172371 2.4423470353692 2.54160199346455 5.52146091786225 0.86288995514704 7.22256601882217 1.05082162483176 +pka 0 0.457424847038875 4.61512051684126 6.11589212548303 4.85981240436167 1.79840401194672 2.72785282839839 5.87211778947542 0.215111379616945 0 0 +pka 3.31054301339402 1.45628673293993 2.82137888640921 3.80443779474821 2.77258872223978 0.548121408509688 2.41591377830105 5.6021188208797 0.215111379616945 3.3357695763397 0.62057648772511 +pka 3.24649099190117 0.27763173659828 4.38077585277223 6.21460809842219 5.0998664278242 2.13179677201376 2.50143595173921 5.82894561761021 0 2.71469474382088 0 +pka 3.4626060097908 0.00995033085316809 3.75185425327532 5.74620319054015 5.12396397940326 2.9704144655697 2.77881927199042 5.73009978297357 2.37024374146786 5.99893656194668 0.0392207131532813 +pka 4.40671924726425 0.285178942233662 2.23108909128898 5.36129216570943 2.76000994003292 2.65324196460721 2.9704144655697 5.54907608489522 0 4.41642806139121 0.231111720963387 +pka 5.13579843705026 0 3.00568260440716 4.92725368515721 2.61739583283408 2.64617479738412 2.45958884180371 5.8636311755981 0 0 0.343589704390077 +pka 4.12874598893943 0 3.4626060097908 3.48124008933569 2.47653840011748 4.97673374242057 5.46806014113513 7.94200680848986 0.0676586484738149 0 0.173953307123438 +pka 2.79116510781272 0.182321556793955 3.39114704580865 4.77912349311153 3.63495111208838 2.52572864430826 2.42480272571829 5.45958551414416 0.19062035960865 4.53367418428302 0.657520002916794 +pka 3.27336401015227 0.00995033085316809 1.43031124653666 0.647103242058538 6.84481547920826 3.18221184049661 3.34638914516716 5.82008293035236 0 0 0.582215619852664 +pka 3.69635146895264 0.746687947487975 2.91235066461494 4.74493212836325 3.2188758248682 2.4932054526027 2.96010509591084 5.63835466933375 1.07158361628019 3.65065824129374 1.50185270175416 +pka 3.05870707271538 0.00995033085316809 3.03974915897077 3.88567903008854 3.05870707271538 3.20274644293832 3.19458313229916 5.91889385427315 0 0.60431596685333 0 +pka 3.95699637107088 0.00995033085316809 2.80336038090653 3.39114704580865 3.13983261752775 2.18605127673809 2.85070650150373 5.83773044716594 0 1.96009478404727 0.819779831493311 +pka 2.99573227355399 0.00995033085316809 3.23080439573347 3.32862668882732 0 2.32238772029023 2.71469474382088 5.47646355193151 0 1.25846098961001 0.00995033085316809 +pka 3.37416870927424 0.00995033085316809 2.73436750941958 3.73289633953071 3.19458313229916 2.42480272571829 3.32862668882732 6.06145691892802 0 4.26267987704132 0.2390169004705 +pka 3.39114704580865 0 3.29212628660779 3.29212628660779 3.43720781918519 3.2846635654062 3.55248682920838 5.73009978297357 0 3.79548918917219 0 +pka 3.41772668361337 0 2.87919845729804 5.23644196282995 3.87743156065853 2.53369681395743 2.53369681395743 5.73979291217923 0 6.04500531403601 0.451075619360217 +pka 4.33598269617247 0.307484699747961 2.13179677201376 1.57484646766448 0 2.37954613413017 2.86789890204411 5.87211778947542 0 1.4036429994545 0.00995033085316809 +pka 3.68887945411394 0.00995033085316809 1.9154509415706 2.24812890719799 1.28647402583768 2.57261223020711 2.46809953147162 5.96357934361845 0 0.438254930931155 0.431782416425538 +pka 3.7864597824528 0.00995033085316809 3.3357695763397 3.11351530921037 2.36085400111802 3.04927304048202 3.6163087612791 6.09807428216624 0 2.19499988231411 0.631271776841858 +pka 3.6163087612791 0 2.4423470353692 2.9338568698359 3.23080439573347 3.52636052461616 3.56104608260405 5.76519110278484 0.0582689081239758 0 0.871293365943419 +pka 4.254193263164 0 2.26695791535089 2.9391619220656 3.17387845893747 2.31253542384721 2.68784749378469 5.4971682252932 0.00995033085316809 0.412109650826833 0.00995033085316809 +pka 3.63495111208838 0.00995033085316809 1.96990565461153 3.04927304048202 3.00568260440716 0.405465108108164 2.33214389523559 6.42162226780652 0 0.00995033085316809 0.405465108108164 +pka 3.51749783735832 0.139761942375159 3.48124008933569 6.20657592672493 4.63472898822964 2.86789890204411 3.23080439573347 5.8111409929767 0.19062035960865 2.19499988231411 1.57484646766448 +pka 4.11903717481247 0.00995033085316809 3.53514535417189 6.12468339089421 4.29045944114839 3.24649099190117 3.27336401015227 5.89989735358249 0.0769610411361284 0 0.62057648772511 +pka 3.55248682920838 0.00995033085316809 4.76217393479776 6.78219205600679 5.54126354515843 3.71357206670431 4.3267781604434 7.28550654852279 0.593326845277734 4.46129981556839 0.157003748809665 +pka 3.15700042115011 0.457424847038875 2.89591193827178 2.72785282839839 1.22377543162212 4.26267987704132 4.68213122712422 7.64539769942863 0 0.916290731874155 0 +pka 3.23080439573347 0.0295588022415444 2.3887627892351 3.68887945411394 2.81540871942271 4.3267781604434 4.22683374526818 5.75574221358691 0 0 0 +pka 3.66867674679642 0.518793793415168 3.09557760852371 5.25227342804663 3.42751468997953 1.60140574073684 2.86220088092947 5.98141421125448 0 0.62057648772511 0.27002713721306 +pka 3.6609942506244 0.182321556793955 2.16791018966744 2.9704144655697 2.71469474382088 4.37071287477361 4.57779898919196 7.3125534981026 1.43031124653666 3.75887182593397 1.36609165380237 +pka 0 0.0676586484738149 2.37024374146786 4.80402104473326 3.41772668361337 4.22683374526818 4.38077585277223 6.99759598298193 0 2.77881927199042 1.13462272619114 +pka 3.47196645255036 0.00995033085316809 3.01553490085017 4.48863636973214 3.4626060097908 1.62727783056243 3.23080439573347 5.99893656194668 0 1.7263316639056 1.25846098961001 +pka 3.58073729549423 0.00995033085316809 2.00552585872967 2.86220088092947 2.9704144655697 2.56494935746154 2.82137888640921 5.90808293816893 0 2.40694510831829 0.60431596685333 +pka 3.95699637107088 0.00995033085316809 2.07819075977818 2.79116510781272 2.23964529322017 2.9338568698359 3.50855589998265 6.25190388316589 1.98787434815435 4.33598269617247 1.56444054650336 +pka 2.68784749378469 0.00995033085316809 3.14845336057165 3.50855589998265 3.16547504814109 2.94968833505258 3.01553490085017 5.68357976733868 0 4.83628190695148 0.139761942375159 +pka 3.45315712059287 0.00995033085316809 3.54385368206368 3.69635146895264 3.54385368206368 2.82137888640921 3.08648663682246 6.04500531403601 0.19062035960865 5.03695260241363 0.285178942233662 +pka 3.56953269648137 0.00995033085316809 2.68784749378469 2.99573227355399 2.45958884180371 2.05923883436232 2.37024374146786 5.54907608489522 0 0.357674444271816 0.667829372575655 +pka 3.53514535417189 0.00995033085316809 3.58905911883173 3.81330703248899 3.52636052461616 1.84371920815877 2.23108909128898 5.4971682252932 0 0 0.989541193613748 +pka 3.73289633953071 0 4.27249074760558 6.01615715969835 5.30826769740121 2.4932054526027 3.40119738166216 7.41155628781116 0 5.15329159449778 0.548121408509688 +pka 3.18221184049661 0.00995033085316809 3.32862668882732 3.31054301339402 3.47196645255036 4.07414185490458 4.27249074760558 7.18690102041163 0 0.879626747502564 0.746687947487975 +pka 4.26267987704132 0.322083499169113 3.18221184049661 5.01063529409626 3.8308129500026 2.61739583283408 2.84490938381941 5.62040086571715 0 0 0.548121408509688 +pka 4.46129981556839 0.00995033085316809 3.72328088083127 5.63121178182137 4.20020495292158 3.94931879017184 4.23700086262362 6.74641212857337 0 0.0861776962410524 0.385262400790645 +pka 4.96284463025991 0.00995033085316809 2.77881927199042 4.80402104473326 3.2846635654062 2.71469474382088 3.76815263500844 7.0335064842877 0 1.24126858906963 0 +pka 2.11384296839717 0 2.63188884013665 4.91998092582813 3.41772668361337 2.30258509299405 2.37954613413017 5.71042701737487 0.802001585472027 0 0.89199803930511 +pka 3.38099467434464 0.0392207131532813 2.36085400111802 3.56104608260405 3.11351530921037 2.484906649788 3.02042488614436 5.8636311755981 0 0 0 +pka 3.69635146895264 0.0582689081239758 3.20274644293832 3.26575941076705 2.90690105984738 1.81645208181843 2.35137525716348 5.55682806169954 0 1.43031124653666 0.828551817566148 +pka 3.65065824129374 0.215111379616945 3.19458313229916 3.92986292355648 3.75887182593397 3.31054301339402 3.20274644293832 5.36129216570943 2.40694510831829 7.08757370555797 2.66025953726586 +pka 3.65065824129374 0.727548607277278 2.76000994003292 3.10458667846607 3.03974915897077 1.73518911773966 3.02042488614436 6.42162226780652 2.07819075977818 5.14749447681345 1.94304891677428 +pka 3.27336401015227 0 4.54223038621422 6.7093043402583 5.27299955856375 4.43438186500781 4.52396013056255 7.23128700432762 2.72785282839839 6.65544035036765 3.18221184049661 +pka 3.63495111208838 0.00995033085316809 2.92316158071916 2.91235066461494 0.86288995514704 2.4932054526027 2.76000994003292 5.54907608489522 0.0953101798043249 4.88280192258637 0.86288995514704 +pka 3.32862668882732 0.00995033085316809 3.02042488614436 3.00568260440716 2.23108909128898 2.97552956623647 3.3357695763397 5.67675380226828 0.2390169004705 2.484906649788 0.582215619852664 +pka 3.4626060097908 0 3.08648663682246 2.64617479738412 2.37954613413017 1.27815220250019 2.70805020110221 6.05443934626937 0.970778917158225 4.68213122712422 0.262364264467491 +pka 5.4249500174814 0.00995033085316809 1.71739505393919 2.73436750941958 1.32175583998232 2.19499988231411 2.40694510831829 5.95324333428778 0 5.08140436498446 0.314810739840034 +pka 3.52636052461616 0.00995033085316809 2.40694510831829 5.03695260241363 3.3357695763397 4.14630430115281 4.21803603456465 7.32118855673948 0 0 0.451075619360217 +pka 3.47196645255036 0.285178942233662 2.36085400111802 3.24649099190117 1.8531680973567 1.16938135955632 1.67335123817775 5.97126183979046 0 0.00995033085316809 0.951657875711446 +pka 1.38629436111989 0 4.16511363311031 5.89164421182577 5.34233425196481 4.37071287477361 4.70953020131233 7.44716835960004 0.0769610411361284 3.08648663682246 0.631271776841858 +pka 3.60549784517489 0.157003748809665 4.40671924726425 5.53338948872752 5.04342511691925 1.98787434815435 2.61739583283408 5.80211837537706 0 2.7408400239252 0.693147180559945 +pka 3.59731226058845 0 3.39114704580865 3.40119738166216 2.9704144655697 2.52572864430826 2.50143595173921 5.50533153593236 0.62057648772511 4.63472898822964 1.04380405217311 +pka 5.15329159449778 0 1.7630170003624 2.42480272571829 2.39789527279837 3.10458667846607 3.3178157727231 5.77455154554441 0 2.85070650150373 0.2390169004705 +pka 3.58073729549423 0.00995033085316809 2.66025953726586 4.44382703557933 3.24649099190117 1.84371920815877 2.28442112236637 5.5683445037611 2.80336038090653 1.54756250871601 0 +pka 4.43438186500781 0.307484699747961 2.50959926237837 5.29831736654804 3.75887182593397 1.34807314829969 2.40694510831829 5.57594910314632 0 0.307484699747961 1.04380405217311 +pka 3.6609942506244 1.35840915763035 2.92316158071916 4.3528552573736 3.09557760852371 1.79009141212736 3.40119738166216 6.46769872610435 0 2.32238772029023 0.131028262406404 +pka 3.41772668361337 0 3.44361809754611 4.59612944133594 2.67414864942653 0.989541193613748 1.93441576962958 5.74620319054015 0.412109650826833 0.712949807856125 0.343589704390077 +pka 3.44361809754611 0.00995033085316809 3.9926809084456 5.24174701505964 4.55071400019203 3.09557760852371 3.44361809754611 5.39816270151775 0 2.41591377830105 0.609765571620894 +pka 3.58073729549423 0.2390169004705 2.9704144655697 4.65396035015752 2.94968833505258 2.58021682959233 2.79116510781272 6.03548143252476 1.34025042261848 5.11799381241676 0.879626747502564 +pka 3.64283551561253 0 3.17387845893747 3.05870707271538 2.33214389523559 2.57261223020711 2.83321334405622 6.10702288774225 0 4.30811095172371 0.262364264467491 +pka 3.87743156065853 0.00995033085316809 2.57261223020711 5.66642668811243 4.07414185490458 5.01063529409626 5.55682806169954 8.03203531439882 2.20386912005489 4.66343909411207 2.9704144655697 +pka 2.87919845729804 0.683096844706444 3.71357206670431 3.94931879017184 3.74242022104197 2.50959926237837 2.77258872223978 5.50533153593236 0.756121979721334 2.83321334405622 0 +pka 3.54385368206368 0.00995033085316809 2.14124194258528 5.4971682252932 3.12236492448736 5.27811465923052 5.37063802812766 7.68109900153636 0.593326845277734 0.879626747502564 0.254642218373581 +pka 3.56953269648137 0 3.56953269648137 4.74493212836325 4.00186370942794 2.60268968544438 3.11351530921037 5.90808293816893 0 0.19062035960865 0.810930216216329 +pka 3.50855589998265 0.00995033085316809 3.56104608260405 3.54385368206368 3.35340671782581 2.02419306744936 2.51769647261099 5.48479693349065 0.398776119957368 3.75887182593397 1.31372366828506 +pka 2.2935443483419 0.0676586484738149 2.08691355651854 2.37954613413017 2.81540871942271 2.04122032885964 2.36085400111802 5.91889385427315 0 2.73436750941958 0.27002713721306 +pka 3.82209829790016 0.00995033085316809 3.16547504814109 4.42484663185681 3.8416005411316 3.50855589998265 3.74242022104197 6.92559519711047 0 2.57261223020711 0.285178942233662 +pka 3.80443779474821 0.00995033085316809 3.29953372788566 3.56953269648137 2.84490938381941 1.73518911773966 1.97823903617067 5.55682806169954 0.647103242058538 0 0.3293037471426 +pka 3.67882911826043 0.951657875711446 3.94931879017184 4.44382703557933 4.80402104473326 3.10458667846607 4.21803603456465 7.18690102041163 0 0.712949807856125 0.3293037471426 +pka 4.47960696301275 0.00995033085316809 2.64617479738412 5.55682806169954 3.23080439573347 2.14943391349987 2.56494935746154 5.51342874616498 0.0198026272961797 0.916290731874155 0.657520002916794 +pka 1.26694760348732 0.0582689081239758 3.23080439573347 2.87919845729804 2.61739583283408 1.12492959698548 2.9338568698359 5.05624580534831 0 5.37989735354046 0.139761942375159 +pka 3.41772668361337 0 2.47653840011748 5.15329159449778 3.54385368206368 4.06560209335645 4.57779898919196 7.45645455517621 0 4.70048036579242 0.908258560176891 +pka 4.52396013056255 0.122217632724249 4.0926765051214 4.19116874685764 3.86702563949741 0.717839793150317 1.98787434815435 4.44382703557933 0 0 0.22314355131421 +pka 5.07517381523383 0.19062035960865 2.9338568698359 3.19458313229916 1.33236601909433 2.75366071235426 2.89591193827178 5.8636311755981 0 0 0.0676586484738149 +pka 0.405465108108164 0.300104592450338 2.90690105984738 3.08648663682246 2.98568193770049 2.3887627892351 2.85070650150373 5.89164421182577 0 3.01553490085017 0.00995033085316809 +pka 3.27336401015227 0 3.18221184049661 2.63188884013665 2.4932054526027 2.37024374146786 3.44361809754611 6.8627579130514 0 3.88567903008854 0 +pka 1.01523067972906 0.300104592450338 2.70805020110221 4.67282883446191 3.42751468997953 2.18605127673809 2.71469474382088 5.80211837537706 0 0 0 +pka 3.09557760852371 0.350656871613169 2.98568193770049 4.69134788222914 3.02042488614436 2.2213750375685 2.61006979274201 5.65599181081985 0 0.00995033085316809 0.182321556793955 +pka 3.73289633953071 0.00995033085316809 3.29212628660779 4.12874598893943 2.61006979274201 1.31372366828506 1.88858365386359 5.74620319054015 0 2.18605127673809 0.0392207131532813 +pka 3.47196645255036 0.00995033085316809 3.85862222870103 4.74493212836325 4.04830062372069 2.23964529322017 2.53369681395743 6.04500531403601 1.4036429994545 1.25846098961001 0.438254930931155 +pka 3.52636052461616 0 1.99741770620125 2.77881927199042 2.54160199346455 2.47653840011748 2.86220088092947 5.58724865840025 1.37624402526639 2.28442112236637 0.104360015324243 +pka 3.23867845216438 0.350656871613169 4.40671924726425 4.34380542185368 3.66867674679642 3.03013370027132 2.77881927199042 5.59471137960184 2.03339760317843 4.45201900649392 0.727548607277278 +pka 3.59731226058845 0.0582689081239758 3.2846635654062 2.98568193770049 2.60268968544438 3.09557760852371 3.03974915897077 5.8111409929767 3.50855589998265 7.26752542782817 1.35840915763035 +pka 2.36085400111802 0.89199803930511 3.29953372788566 4.07414185490458 2.9704144655697 3.18221184049661 3.15700042115011 5.77455154554441 2.28442112236637 2.96010509591084 1.51951320490611 +pka 4.21803603456465 0.00995033085316809 2.14124194258528 5.00394630594546 3.85014760171006 3.73289633953071 3.70622809244855 5.8111409929767 0.215111379616945 3.58905911883173 1.27815220250019 +pka 3.67882911826043 0.00995033085316809 3.16547504814109 3.01553490085017 1.708377860289 4.46129981556839 4.68213122712422 7.50163445788341 0 0.165514438477573 0 +pka 3.63495111208838 0.819779831493311 3.48124008933569 5.76519110278484 4.0926765051214 4.0842942263686 4.28082412916472 6.92559519711047 0 0.647103242058538 0.00995033085316809 +pka 3.19458313229916 0.0953101798043249 3.21084365317094 3.12236492448736 2.7408400239252 2.7408400239252 2.73436750941958 5.78382518232974 0 0 0.854415328156068 +pka 3.56104608260405 0.113328685307003 2.85070650150373 5.48479693349065 3.8416005411316 2.27521389619791 2.97552956623647 5.80211837537706 0 0.494696241836107 0 +pka 3.43720781918519 0.476234178996372 3.17387845893747 3.27336401015227 2.21266038546606 1.86252854011626 2.75366071235426 6.11589212548303 0.113328685307003 4.26267987704132 0.0582689081239758 +pka 3.66867674679642 0 3.34638914516716 3.10458667846607 1.23256026117785 2.30258509299405 2.67414864942653 5.54126354515843 0.86288995514704 3.54385368206368 0.0953101798043249 +pka 1.00795792039998 0.00995033085316809 3.13113691056019 3.05870707271538 2.40694510831829 0.548121408509688 2.71469474382088 5.77455154554441 0 0.908258560176891 0.582215619852664 +pka 3.51749783735832 0.314810739840034 2.25758772706331 5.31811999384422 3.44361809754611 2.05027016437956 2.70136121295141 5.99893656194668 0 2.53369681395743 0.908258560176891 +pka 3.85862222870103 0.00995033085316809 3.16547504814109 3.18221184049661 2.46809953147162 2.77881927199042 2.9391619220656 5.83773044716594 0 2.92316158071916 2.79728133483015 +pka 3.54385368206368 0.285178942233662 4.37071287477361 5.18178355029209 3.92197333628131 1.52822785700856 2.82137888640921 6.46769872610435 0 5.85507192220243 0 +pka 3.6609942506244 0.405465108108164 3.01553490085017 3.24649099190117 2.87919845729804 2.70805020110221 2.82137888640921 5.92692602597041 2.54160199346455 5.46806014113513 2.53369681395743 +pka 4.16511363311031 0 3.24649099190117 4.81218435537242 3.4626060097908 2.36085400111802 2.94968833505258 5.75574221358691 0 0 0 +pka 3.48124008933569 1.84371920815877 3.64283551561253 3.07731226054641 1.31372366828506 3.71357206670431 3.88567903008854 6.47543271670409 0 1.90657514365664 0.2390169004705 +pka 3.52636052461616 0 3.16547504814109 3.48124008933569 3.05870707271538 1.2947271675944 3.25424296870549 5.7037824746562 0 1.71739505393919 0.350656871613169 +pka 3.10458667846607 0.0392207131532813 1.78170913337455 2.21266038546606 2.02419306744936 3.20274644293832 3.24649099190117 6.02586597382531 0.0769610411361284 0 0.636576829071551 +pka 4.85981240436167 0.00995033085316809 3.62434093297637 3.52636052461616 3.58073729549423 3.04927304048202 3.36384159511839 5.61312810638807 0.703097511413113 2.12226153886276 0.300104592450338 +pka 3.05870707271538 1.12492959698548 2.88480071284671 5.01727983681492 3.4626060097908 2.79728133483015 2.96010509591084 5.89164421182577 0.828551817566148 3.23867845216438 1.93441576962958 +pka 3.75185425327532 0 2.9338568698359 5.19849703126583 3.42751468997953 3.12236492448736 3.35340671782581 5.73979291217923 0 0.398776119957368 0 +pka 4.26267987704132 0.86288995514704 3.01553490085017 3.3357695763397 2.08691355651854 4.66343909411207 4.63472898822964 5.74620319054015 0 0.00995033085316809 0.476234178996372 +pka 2.08691355651854 0.609765571620894 4.11087386417331 6.30444880242198 5.05624580534831 1.67335123817775 2.79116510781272 5.66642668811243 0 1.6467336971778 0 +pka 2.88480071284671 0.371563556432483 3.34638914516716 2.85070650150373 2.50143595173921 3.13113691056019 3.41772668361337 6.04500531403601 0 0.99694863489161 0.00995033085316809 +pka 4.61512051684126 0.00995033085316809 3.13113691056019 2.99573227355399 2.45958884180371 4.67282883446191 4.8283137373023 7.80710329012598 0 0 0 +pka 3.56104608260405 0 2.87919845729804 3.27336401015227 2.05027016437956 2.06812778177956 2.9338568698359 5.96357934361845 0.56531380905006 3.76815263500844 1.42069578783722 +pka 2.89591193827178 0.122217632724249 2.3887627892351 5.4971682252932 3.31054301339402 3.41772668361337 3.49953328238302 5.65599181081985 0 0 0.405465108108164 +pka 3.56104608260405 0.385262400790645 4.43438186500781 5.27811465923052 3.77734810210154 2.72785282839839 3.17387845893747 5.82894561761021 0 4.79579054559674 0.56531380905006 +pka 3.62434093297637 0.322083499169113 2.80336038090653 3.3357695763397 2.43361335540045 1.4036429994545 2.90690105984738 5.99893656194668 0 3.92986292355648 0.774727167552368 +pka 4.66343909411207 0 3.18221184049661 3.26575941076705 3.18221184049661 1.90657514365664 2.77881927199042 5.87211778947542 0 4.38949864951258 0 +pka 3.39114704580865 0.636576829071551 3.29953372788566 3.41772668361337 3.02042488614436 1.50185270175416 3.00568260440716 6.00881318544259 0 0.00995033085316809 0 +pka 3.20274644293832 0.576613364303994 4.28082412916472 6.10702288774225 4.94875989037817 2.70805020110221 2.63188884013665 5.66642668811243 0 0.712949807856125 0.657520002916794 +pka 3.49953328238302 0 3.2188758248682 3.3178157727231 3.06805293513362 2.58776403522771 2.81540871942271 5.59471137960184 0 0.60431596685333 1.01523067972906 +pka 3.88567903008854 0 3.87743156065853 4.57779898919196 3.19458313229916 2.15871472257434 2.53369681395743 5.66642668811243 0 1.77155676191054 0.494696241836107 +pka 3.60549784517489 0.00995033085316809 2.73436750941958 2.7408400239252 1.45628673293993 3.42751468997953 3.66867674679642 6.62936325343745 0 5.27299955856375 1.11514159061932 +pka 5.52146091786225 0.00995033085316809 2.99573227355399 3.79548918917219 2.88480071284671 3.3178157727231 3.67882911826043 6.4393503711001 0.609765571620894 0 0.27763173659828 +pka 4.56017282005736 0 2.35137525716348 3.11351530921037 3.15700042115011 1.54756250871601 2.43361335540045 6.09807428216624 0.62057648772511 3.44361809754611 0.86288995514704 +pka 4.01096295328305 0.00995033085316809 2.43361335540045 5.37063802812766 3.85014760171006 2.82137888640921 2.9338568698359 5.92692602597041 0 0 0.73716406597672 +pka 2.41591377830105 1.11514159061932 3.2846635654062 3.27336401015227 2.56494935746154 2.15871472257434 2.45958884180371 6.11589212548303 0 1.43031124653666 0 +pka 1.96990565461153 0.00995033085316809 1.01523067972906 2.7408400239252 1.51951320490611 1.97823903617067 2.82137888640921 5.87211778947542 0 0.00995033085316809 0.378436435720245 +pka 3.65065824129374 0 3.56953269648137 4.10098910494077 3.7864597824528 2.05923883436232 1.98787434815435 5.65599181081985 0 1.51072193949494 0.756121979721334 +pka 3.20274644293832 0.262364264467491 3.73289633953071 5.37063802812766 4.5152454784601 3.55248682920838 3.54385368206368 5.64897423816121 0 2.50143595173921 0.542324290825362 +pka 3.98527346716774 0 3.16547504814109 4.61512051684126 3.09557760852371 1.10525683138678 2.72785282839839 5.8636311755981 0 0.73716406597672 0 +pka 4.42484663185681 0.00995033085316809 3.42751468997953 3.13983261752775 2.70805020110221 4.27249074760558 4.29045944114839 6.85329909318608 0 2.84490938381941 0.56531380905006 +pka 4.77068462446567 0.900161349944271 3.59731226058845 4.19116874685764 2.15871472257434 2.01490302054226 3.92986292355648 6.55677835615804 0 7.09672137849476 0.56531380905006 +pka 3.76815263500844 0.0861776962410524 2.83321334405622 2.86789890204411 0 1.4036429994545 3.8416005411316 4.90527477843843 0 0 0.89199803930511 +pka 3.55248682920838 0.0198026272961797 3.07731226054641 2.50959926237837 2.01490302054226 3.39114704580865 3.56104608260405 5.68357976733868 0 0.307484699747961 0.27763173659828 +pka 3.63495111208838 0 2.25758772706331 5.43372200355424 3.37416870927424 4.87519732320115 4.81218435537242 6.73696695800186 0 5.65599181081985 0.928219302739429 +pka 3.49953328238302 0.00995033085316809 3.35340671782581 5.83773044716594 4.43438186500781 1.83418018511201 2.03339760317843 5.7037824746562 0 4.85981240436167 0.371563556432483 +pka 3.23867845216438 0.00995033085316809 3.69635146895264 5.97126183979046 4.74493212836325 2.9391619220656 3.23080439573347 5.88332238848828 0 2.68784749378469 0 +pka 3.45315712059287 0.0198026272961797 2.27521389619791 2.58776403522771 2.43361335540045 4.07414185490458 4.16511363311031 6.79122146272619 0 3.23080439573347 0.0769610411361284 +pka 3.4904285153901 0.53062825106217 2.88480071284671 4.86753445045558 3.62434093297637 3.13983261752775 3.08648663682246 5.73009978297357 0 0 1.23256026117785 +pka 3.2846635654062 0.802001585472027 2.28442112236637 4.77068462446567 3.04927304048202 1.51951320490611 2.37024374146786 6.50279004591562 1.14103300455206 5.77455154554441 1.96009478404727 +pka 3.80443779474821 0 2.21266038546606 4.99043258677874 3.35340671782581 3.3357695763397 3.47196645255036 5.75574221358691 1.96990565461153 5.97126183979046 2.33214389523559 +pka 4.38077585277223 3.02042488614436 3.59731226058845 2.9391619220656 2.63188884013665 2.81540871942271 2.96010509591084 5.83773044716594 0 7.6004023345004 0.693147180559945 +pka 3.56104608260405 0.0295588022415444 3.12236492448736 3.29212628660779 2.34180580614733 2.04122032885964 2.61739583283408 5.63835466933375 2.47653840011748 0.343589704390077 0 +pka 2.27521389619791 0.00995033085316809 2.7408400239252 3.29212628660779 2.28442112236637 2.21266038546606 2.66025953726586 5.67675380226828 0 0 0 +pka 3.59731226058845 0.810930216216329 2.83321334405622 3.3178157727231 2.18605127673809 4.5152454784601 4.78749174278205 7.21376830811864 0 1.83418018511201 1.07158361628019 +pka 2.67414864942653 0.667829372575655 3.09557760852371 4.66343909411207 3.12236492448736 4.23700086262362 4.30811095172371 7.24921505711439 0 1.80828877117927 0.717839793150317 +pka 5.19849703126583 0.00995033085316809 3.25424296870549 3.12236492448736 3.16547504814109 3.02042488614436 3.64283551561253 6.43133108193348 0 0 0.837247524533702 +pka 3.04927304048202 0.314810739840034 2.79728133483015 5.08140436498446 2.79728133483015 1.53901544813755 2.34180580614733 5.93753620508243 0 4.67282883446191 0.457424847038875 +pka 5.37989735354046 0.2390169004705 3.23080439573347 2.9391619220656 2.75366071235426 4.34380542185368 4.56017282005736 7.15929190479756 0 0.73716406597672 0 +pka 3.79548918917219 0.0953101798043249 2.91235066461494 3.06805293513362 0.157003748809665 3.45315712059287 3.35340671782581 6.75460409948796 0 4.68213122712422 0.837247524533702 +pka 3.39114704580865 0.231111720963387 2.88480071284671 4.91998092582813 3.75185425327532 3.14845336057165 3.73289633953071 6.4393503711001 0 0 0 +pka 4.70953020131233 0.231111720963387 3.51749783735832 3.38099467434464 2.68102152871429 1.20597080698861 2.484906649788 5.36129216570943 0 2.01490302054226 1.54756250871601 +pka 3.82209829790016 0 3.37416870927424 5.01063529409626 3.60549784517489 4.18205014264121 4.53367418428302 7.6004023345004 0 1.4747630091075 0.667829372575655 +pka 2.73436750941958 0.667829372575655 3.02042488614436 5.45958551414416 3.2188758248682 2.83321334405622 3.29953372788566 5.99893656194668 0 2.36085400111802 0.405465108108164 +pka 3.66867674679642 0 3.13113691056019 2.73436750941958 1.88858365386359 3.15700042115011 3.07731226054641 5.78382518232974 0.647103242058538 0.00995033085316809 0 +pka 3.59731226058845 1.25846098961001 3.2188758248682 4.24563400976833 2.12226153886276 2.58021682959233 3.2188758248682 5.79301360838414 0.113328685307003 5.66642668811243 0.343589704390077 +pka 3.58905911883173 0.00995033085316809 2.86789890204411 3.05870707271538 2.99573227355399 2.32238772029023 2.67414864942653 5.65599181081985 0.73716406597672 5.10594547390058 0 +pka 4.13676527810605 1.12492959698548 2.28442112236637 5.04342511691925 3.69635146895264 3.14845336057165 3.40784192438082 6.12468339089421 0.53062825106217 2.18605127673809 0.56531380905006 +pka 4.88280192258637 2.00552585872967 2.82137888640921 5.15329159449778 3.88567903008854 1.90657514365664 2.27521389619791 5.82008293035236 0 1.48387468945875 0.908258560176891 +pka 2.53369681395743 1.79840401194672 2.85070650150373 3.58073729549423 3.38099467434464 4.40671924726425 4.65396035015752 7.42952084278646 0 0.951657875711446 0.871293365943419 +pka 5.40717177146012 0.00995033085316809 2.77881927199042 5.36129216570943 3.51749783735832 2.88480071284671 3.15700042115011 5.80211837537706 2.75366071235426 3.27336401015227 1.37624402526639 +pka 3.6609942506244 0.19062035960865 3.3178157727231 3.7864597824528 2.58776403522771 2.70136121295141 3.3357695763397 5.91889385427315 0.900161349944271 4.65396035015752 1.31372366828506 +pka 3.82209829790016 0.73716406597672 2.63188884013665 4.48863636973214 3.21084365317094 4.34380542185368 4.38077585277223 6.98841318199959 0.198850858745165 0 0 +pka 3.16547504814109 0 3.2846635654062 3.39114704580865 1.94304891677428 7.44716835960004 7.44716835960004 7.08757370555797 0.73716406597672 3.42751468997953 0.970778917158225 +pka 3.72328088083127 0 3.20274644293832 2.68784749378469 2.77258872223978 1.79840401194672 2.50959926237837 5.50533153593236 0.908258560176891 0.22314355131421 0.582215619852664 +pka 3.85014760171006 0.173953307123438 3.2846635654062 3.58073729549423 3.76815263500844 3.54385368206368 3.71357206670431 6.55677835615804 0.0861776962410524 5.63121178182137 0 +pka 3.13113691056019 0.198850858745165 3.40119738166216 2.58776403522771 2.7408400239252 2.90690105984738 3.24649099190117 5.93753620508243 0 0.00995033085316809 0.385262400790645 +pka 3.60549784517489 0 3.21084365317094 3.29212628660779 2.64617479738412 3.11351530921037 3.12236492448736 5.66642668811243 0.322083499169113 6.16961073249146 2.50959926237837 +pka 3.7864597824528 0 2.11384296839717 2.37024374146786 2.4932054526027 2.50959926237837 3.07731226054641 5.87211778947542 0 0.56531380905006 0.22314355131421 +pka 3.74242022104197 0 2.9338568698359 3.18221184049661 2.94968833505258 2.06812778177956 2.36085400111802 5.90808293816893 0 0 0.470003629245736 +pka 3.18221184049661 0.963174317773006 3.55248682920838 4.94875989037817 3.59731226058845 3.82209829790016 3.93963817246112 6.68336094576627 0 2.52572864430826 0.60431596685333 +pka 4.61512051684126 0.548121408509688 3.3178157727231 3.70622809244855 2.37954613413017 2.07819075977818 2.46809953147162 5.78382518232974 0 2.91235066461494 0.350656871613169 +pka 3.38099467434464 0.00995033085316809 2.77881927199042 5.0998664278242 2.72785282839839 4.0842942263686 4.3267781604434 7.02464903045364 2.26695791535089 0 0.182321556793955 +pka 2.54160199346455 0.378436435720245 3.2846635654062 3.53514535417189 2.97552956623647 2.63188884013665 2.43361335540045 5.64897423816121 1.23256026117785 2.20386912005489 0.854415328156068 +pka 3.47196645255036 0.00995033085316809 3.27336401015227 3.04927304048202 3.01553490085017 3.06805293513362 3.08648663682246 5.88332238848828 0 3.36384159511839 0 +pka 4.8283137373023 1.96990565461153 3.49953328238302 4.04830062372069 3.21084365317094 4.65396035015752 4.66343909411207 7.19593722647557 0 0 0.609765571620894 +pka 4.22683374526818 3.2188758248682 3.08648663682246 5.03043792139244 3.35340671782581 4.57779898919196 4.91265488573605 7.67229245562876 0 0.371563556432483 0.494696241836107 +pka 3.29212628660779 0 3.03013370027132 4.5152454784601 3.6163087612791 1.43031124653666 2.96010509591084 6.33150184989369 0 5.0998664278242 0.636576829071551 +pka 3.38099467434464 0.60431596685333 3.29953372788566 2.9704144655697 3.6609942506244 3.03013370027132 2.90690105984738 5.3890717298165 0 3.40784192438082 0.60431596685333 +pka 3.3357695763397 0.488580014818671 3.81330703248899 3.6163087612791 3.4904285153901 2.92316158071916 3.02042488614436 5.83773044716594 0 0.262364264467491 0.3293037471426 +pka 3.58073729549423 0.173953307123438 3.3357695763397 3.52636052461616 2.9391619220656 2.36085400111802 2.58021682959233 5.46806014113513 0 0.00995033085316809 0.2390169004705 +pka 3.29212628660779 0.693147180559945 2.77258872223978 4.0926765051214 2.81540871942271 4.20916023665068 4.33598269617247 7.51914995766982 1.36609165380237 2.81540871942271 3.23867845216438 +pka 3.63495111208838 0.139761942375159 3.05870707271538 2.37024374146786 2.80336038090653 2.9338568698359 3.3178157727231 5.65599181081985 1.50185270175416 0 1.02604159583327 +pka 3.58905911883173 0 3.15700042115011 3.26575941076705 1.8531680973567 4.15575319035074 4.56017282005736 7.35755620091035 0 4.3267781604434 0 +pka 3.59731226058845 0.683096844706444 3.03013370027132 4.98360662170834 3.56953269648137 3.05870707271538 3.21084365317094 5.73009978297357 2.25758772706331 2.07819075977818 1.4747630091075 +pka 2.99573227355399 0.00995033085316809 2.94968833505258 2.91235066461494 0.951657875711446 2.75366071235426 3.03013370027132 5.85507192220243 0 0 0.22314355131421 +pka 3.08648663682246 0 2.96010509591084 4.93447393313069 3.18221184049661 2.66025953726586 3.17387845893747 6.72743172485086 0.0582689081239758 3.3357695763397 0.60431596685333 +pka 4.21803603456465 0 2.87919845729804 4.86753445045558 3.2188758248682 1.99741770620125 2.72785282839839 5.73979291217923 0.27002713721306 2.30258509299405 0 +pka 3.36384159511839 0.27763173659828 3.3357695763397 5.6937321388027 3.6609942506244 1.4036429994545 2.30258509299405 6.05443934626937 0 0 0.00995033085316809 +pka 2.79116510781272 3.60549784517489 3.40784192438082 3.56104608260405 2.28442112236637 3.03013370027132 3.62434093297637 7.0335064842877 0 0 0.593326845277734 +pka 4.11903717481247 0.00995033085316809 3.02042488614436 2.86220088092947 2.11384296839717 3.85862222870103 3.94931879017184 7.04228617193974 2.86220088092947 7.72621265050753 2.7408400239252 +pka 2.9704144655697 1.07158361628019 3.36384159511839 5.01727983681492 3.74242022104197 1.25846098961001 3.13983261752775 6.05443934626937 0 2.484906649788 0.371563556432483 +pka 5.37063802812766 2.18605127673809 2.9704144655697 4.56954300834494 3.07731226054641 3.90399083373088 4.02891675689965 7.0335064842877 0.139761942375159 0.774727167552368 0.438254930931155 +pka 3.36384159511839 1.07840958135059 3.23080439573347 3.13113691056019 2.88480071284671 4.56017282005736 4.65396035015752 7.59135704669855 1.41098697371026 0 1.36609165380237 +pka 3.92197333628131 0 3.3178157727231 3.45315712059287 3.17387845893747 4.42484663185681 4.59612944133594 7.23128700432762 3.76815263500844 5.93753620508243 2.67414864942653 +pka 3.8416005411316 0.451075619360217 1.4747630091075 0.398776119957368 5.94542060860658 3.02042488614436 3.65065824129374 6.18001665365257 0 0 0.00995033085316809 +pka 2.08691355651854 0 2.71469474382088 5.0998664278242 3.48124008933569 1.870262530716 2.47653840011748 5.31811999384422 0 0.00995033085316809 0.262364264467491 +pka 3.20274644293832 0.104360015324243 1.90657514365664 2.67414864942653 3.39114704580865 1.98787434815435 2.89591193827178 5.74620319054015 0 0.0295588022415444 0.262364264467491 +pka 3.32862668882732 0.476234178996372 1.53901544813755 2.05923883436232 2.85070650150373 0.943905898907128 2.23108909128898 6.60258789218934 1.07840958135059 5.82894561761021 1.73518911773966 +pka 3.68887945411394 0.00995033085316809 2.79116510781272 4.91265488573605 2.43361335540045 2.89591193827178 3.08648663682246 5.8111409929767 2.31253542384721 7.38461038317697 2.83321334405622 +pka 5.24174701505964 2.73436750941958 2.65324196460721 5.80211837537706 3.92986292355648 1.5830939370945 2.84490938381941 5.84643877505772 2.484906649788 4.90527477843843 2.50143595173921 +pka 3.2846635654062 0 2.4423470353692 5.18738580584075 3.8308129500026 0.900161349944271 2.03339760317843 5.54907608489522 0 4.80402104473326 0 +pka 0 0.371563556432483 2.31253542384721 2.68102152871429 2.58021682959233 2.61006979274201 2.34180580614733 5.63121178182137 0 2.45958884180371 0.27002713721306 +pka 4.02891675689965 0 3.3357695763397 4.57779898919196 3.6609942506244 2.97552956623647 2.91235066461494 5.54907608489522 0 0 0.928219302739429 +pka 4.16511363311031 1.14103300455206 3.80443779474821 4.99043258677874 3.56104608260405 1.57484646766448 0.0769610411361284 4.61512051684126 0 0 0.385262400790645 +pka 4.31748811353631 0.00995033085316809 3.24649099190117 3.87743156065853 2.76000994003292 2.72785282839839 3.10458667846607 5.87211778947542 0 0.00995033085316809 0.182321556793955 +pka 4.85981240436167 0.518793793415168 3.71357206670431 3.67882911826043 2.58776403522771 1.81645208181843 2.9338568698359 6.13339804299665 2.14943391349987 5.3890717298165 1.9154509415706 +pka 1.66392609771817 0.00995033085316809 1.4747630091075 2.33214389523559 2.63188884013665 1.43031124653666 3.13983261752775 6.43133108193348 0 0 0.667829372575655 +pka 3.24649099190117 0.73716406597672 3.87743156065853 4.44382703557933 3.53514535417189 2.42480272571829 2.62466859216316 5.54126354515843 0 0.512823626428664 0 +pka 3.90399083373088 0.00995033085316809 3.40784192438082 3.85862222870103 2.98568193770049 2.90690105984738 2.80336038090653 5.80211837537706 0 0.00995033085316809 0.122217632724249 +pka 3.75185425327532 0.810930216216329 4.21803603456465 6.22455842927536 5.00394630594546 2.91235066461494 3.36384159511839 5.8111409929767 0 2.23964529322017 0.231111720963387 +pka 3.02042488614436 0.951657875711446 2.80336038090653 4.49758497530815 3.13983261752775 3.6163087612791 3.66867674679642 5.79301360838414 0 0 0.667829372575655 +pka 3.6163087612791 0.963174317773006 2.14943391349987 2.88480071284671 2.61739583283408 4.15575319035074 4.3267781604434 7.09672137849476 0 4.62497281328427 0.215111379616945 +pka 3.49953328238302 0 1.77155676191054 5.00394630594546 3.3178157727231 2.37024374146786 3.10458667846607 6.35088571671474 2.84490938381941 4.5152454784601 1.96990565461153 +pka 3.11351530921037 0.542324290825362 3.02042488614436 4.71849887129509 3.43720781918519 1.16938135955632 1.96009478404727 5.84643877505772 0 0 1.07158361628019 +pka 3.89385903480047 0 3.15700042115011 4.56017282005736 3.29212628660779 2.7408400239252 3.3357695763397 5.59471137960184 0 0 0.157003748809665 +pka 3.52636052461616 1.26694760348732 3.13113691056019 3.41772668361337 2.14124194258528 4.44382703557933 4.63472898822964 7.44716835960004 0 1.26694760348732 0.19062035960865 +pka 3.90399083373088 0.0861776962410524 3.3178157727231 3.08648663682246 2.05923883436232 2.36085400111802 2.73436750941958 5.31811999384422 0 0.371563556432483 0 +pka 4.3528552573736 0.693147180559945 2.37024374146786 5.80211837537706 3.82209829790016 2.7408400239252 2.99573227355399 5.62040086571715 0 0 0.593326845277734 +pka 3.45315712059287 1.06125650212434 3.23080439573347 4.52396013056255 3.13113691056019 1.73518911773966 2.16791018966744 5.57594910314632 2.67414864942653 5.57594910314632 0.113328685307003 +pka 3.86702563949741 0.667829372575655 2.66025953726586 4.55071400019203 3.27336401015227 3.39114704580865 3.40784192438082 5.96357934361845 0 2.7408400239252 0.542324290825362 +pka 3.45315712059287 0.989541193613748 3.07731226054641 2.81540871942271 0.717839793150317 1.48387468945875 3.29212628660779 5.96357934361845 0 5.4510384535657 0.385262400790645 +pka 3.71357206670431 0.53062825106217 3.2846635654062 2.90690105984738 2.36085400111802 3.60549784517489 3.50855589998265 5.57594910314632 0 1.7630170003624 0.285178942233662 +pka 2.81540871942271 0.871293365943419 3.41772668361337 3.53514535417189 3.70622809244855 2.63188884013665 2.63188884013665 5.73009978297357 0 0 0 +pka 2.82137888640921 0.86288995514704 2.90690105984738 5.37989735354046 4.17284762371004 1.61938824328727 2.65324196460721 6.29526600143965 0 0 0.0295588022415444 +pka 4.64439089914137 0 2.91235066461494 4.02891675689965 2.34180580614733 2.31253542384721 2.63188884013665 5.5683445037611 0 0 0.86288995514704 +pka 3.37416870927424 0.73716406597672 3.41772668361337 4.07414185490458 3.8416005411316 3.74242022104197 3.87743156065853 6.74641212857337 2.23964529322017 5.26269018890489 0.0769610411361284 +pka 3.69635146895264 0.198850858745165 2.77258872223978 5.0998664278242 3.42751468997953 3.14845336057165 3.48124008933569 6.18001665365257 0.548121408509688 0 0.703097511413113 +pka 3.71357206670431 0 2.4423470353692 4.80402104473326 3.45315712059287 3.56104608260405 3.43720781918519 5.97126183979046 0.837247524533702 5.76519110278484 0.27763173659828 +pka 3.9926809084456 0 2.50143595173921 4.68213122712422 3.60549784517489 4.39814601655377 4.77068462446567 7.56423847517049 1.31372366828506 3.27336401015227 0 +pka 3.27336401015227 0.00995033085316809 2.54160199346455 4.61512051684126 3.25424296870549 3.08648663682246 3.41772668361337 5.97126183979046 2.58776403522771 8.00503334463711 2.9391619220656 +pka 3.55248682920838 0.765467842139571 2.70805020110221 3.14845336057165 1.26694760348732 4.02891675689965 4.30000279919529 6.94408720822953 0 1.33236601909433 0.488580014818671 +pka 3.52636052461616 0.828551817566148 2.484906649788 3.25424296870549 2.13179677201376 3.98527346716774 4.44382703557933 7.20489251020467 0 1.16002091679675 0.783901543828409 +pka 3.25424296870549 0.500775287912489 3.29212628660779 5.08140436498446 3.26575941076705 2.45958884180371 3.35340671782581 6.63856778916652 0 0 0.157003748809665 +pka 4.31748811353631 0 2.88480071284671 5.31811999384422 3.8416005411316 1.82616089594539 2.37024374146786 5.6937321388027 0 2.2935443483419 0 +pka 1.42069578783722 0.27763173659828 2.91235066461494 2.92316158071916 2.70805020110221 2.01490302054226 2.23964529322017 5.8111409929767 0.559615787935423 0 0.438254930931155 +pka 4.76217393479776 1.93441576962958 3.08648663682246 3.14845336057165 2.52572864430826 4.38949864951258 4.70048036579242 7.6004023345004 0 0.165514438477573 0.457424847038875 +pka 3.58073729549423 1.03318448334565 2.73436750941958 4.92725368515721 3.75185425327532 2.75366071235426 2.99573227355399 5.76519110278484 0.139761942375159 0 1.14103300455206 +pka 4.49758497530815 0.802001585472027 2.82137888640921 5.15329159449778 3.17387845893747 2.39789527279837 2.61006979274201 5.53338948872752 0 5.05624580534831 0.357674444271816 +pka 2.63188884013665 0.908258560176891 4.19116874685764 5.57594910314632 4.56017282005736 2.19499988231411 2.47653840011748 5.89164421182577 0.60431596685333 2.66025953726586 0.314810739840034 +pka 3.80443779474821 0.27002713721306 3.43720781918519 4.01998014693324 3.4626060097908 2.14943391349987 2.60268968544438 6.21460809842219 0.900161349944271 1.57484646766448 0.139761942375159 +pka 3.19458313229916 1.43983512804792 2.62466859216316 4.34380542185368 3.70622809244855 3.20274644293832 3.21084365317094 5.91889385427315 0 4.99043258677874 0.343589704390077 +pka 2.23964529322017 1.38629436111989 3.14845336057165 3.41772668361337 3.23080439573347 2.88480071284671 3.11351530921037 5.63121178182137 0 0 0.500775287912489 +pka 3.26575941076705 1.16002091679675 3.29212628660779 3.42751468997953 3.45315712059287 2.53369681395743 2.65324196460721 5.65599181081985 0 2.30258509299405 0 +pka 3.49953328238302 0.631271776841858 2.35137525716348 5.4971682252932 3.10458667846607 2.26695791535089 2.61006979274201 6.00881318544259 1.50185270175416 5.94542060860658 2.18605127673809 +pka 3.95699637107088 1.79009141212736 2.73436750941958 0.476234178996372 2.81540871942271 2.51769647261099 2.68784749378469 5.4510384535657 0 4.17284762371004 0.488580014818671 +pka 0.165514438477573 0.451075619360217 3.11351530921037 4.96284463025991 3.86702563949741 2.87919845729804 3.13983261752775 5.54907608489522 1.03318448334565 4.38949864951258 0 +pka 5.25227342804663 2.63188884013665 3.47196645255036 3.81330703248899 2.63188884013665 2.25758772706331 2.89591193827178 5.84643877505772 0 1.31372366828506 0.173953307123438 +pka 0 0.908258560176891 2.9391619220656 4.10098910494077 2.83321334405622 0.647103242058538 0 4.03777421073371 0 2.4423470353692 0.139761942375159 +pka 3.56104608260405 0.727548607277278 3.07731226054641 4.43438186500781 3.00568260440716 2.4932054526027 3.64283551561253 7.56423847517049 0 1.90657514365664 0.53062825106217 +pka 4.34380542185368 0.048790164169432 3.19458313229916 2.72785282839839 0.198850858745165 2.9338568698359 3.43720781918519 5.8636311755981 0 5.03043792139244 1.54756250871601 +pka 2.26695791535089 0.182321556793955 4.43438186500781 3.06805293513362 4.38949864951258 1.5830939370945 2.42480272571829 6.36818718635049 0 5.30826769740121 0.828551817566148 +pka 3.80443779474821 0.943905898907128 4.47049528266149 6.39526159811545 5.12396397940326 3.50855589998265 3.7864597824528 7.1777824161952 0 1.50185270175416 0.122217632724249 +pka 3.75887182593397 1.48387468945875 3.03974915897077 2.81540871942271 1.86252854011626 3.68887945411394 3.51749783735832 5.74620319054015 0 0.165514438477573 0.173953307123438 +pka 4.05698877567833 0.412109650826833 2.40694510831829 5.43372200355424 3.6163087612791 2.18605127673809 2.77258872223978 5.74620319054015 0 0 0 +pka 3.76815263500844 0.322083499169113 3.45315712059287 4.26267987704132 2.89591193827178 3.20274644293832 3.56104608260405 6.09807428216624 0.371563556432483 4.06560209335645 0.488580014818671 +pka 3.8308129500026 0 2.87919845729804 4.91265488573605 3.43720781918519 2.31253542384721 2.27521389619791 6.07073772800249 0 4.64439089914137 0.500775287912489 +pka 4.71849887129509 1.95160817016995 4.10098910494077 6.01615715969835 4.48863636973214 2.2213750375685 2.87919845729804 5.71042701737487 0 6.04500531403601 1.25846098961001 +pka 4.06560209335645 0.457424847038875 3.21084365317094 4.11087386417331 2.91235066461494 5.27811465923052 5.64897423816121 8.42792472365806 0 1.24990173621434 0.425267735404344 +pka 3.16547504814109 1.20597080698861 3.36384159511839 3.38099467434464 2.3887627892351 3.74242022104197 3.87743156065853 6.47543271670409 0 2.35137525716348 0.56531380905006 +pka 2.89591193827178 0 3.13983261752775 2.53369681395743 2.00552585872967 3.05870707271538 3.15700042115011 5.63121178182137 0 2.88480071284671 2.15871472257434 +pka 3.41772668361337 0.00995033085316809 2.82137888640921 3.69635146895264 3.2188758248682 2.64617479738412 3.20274644293832 5.61312810638807 1.02604159583327 3.07731226054641 0.307484699747961 +pka 3.23867845216438 1.15057202759882 3.2846635654062 4.42484663185681 3.37416870927424 3.15700042115011 3.29953372788566 5.61312810638807 0 4.91265488573605 1.98787434815435 +pka 3.43720781918519 0.262364264467491 1.27815220250019 3.13113691056019 3.56953269648137 2.99573227355399 2.97552956623647 5.88332238848828 0 0 0.322083499169113 +pka 3.23080439573347 0.810930216216329 2.68784749378469 5.28826703069454 3.15700042115011 4.31748811353631 4.50645421304893 7.07834157955767 0 0 0.451075619360217 +pka 3.49953328238302 0.900161349944271 3.38099467434464 3.21084365317094 1.60140574073684 2.52572864430826 2.88480071284671 5.7037824746562 0 2.35137525716348 0.27763173659828 +pka 3.6609942506244 0 3.25424296870549 4.74493212836325 3.41772668361337 2.73436750941958 3.59731226058845 6.36818718635049 0 0 0.593326845277734 +pka 4.20020495292158 2.08691355651854 3.08648663682246 1.80828877117927 2.28442112236637 4.20020495292158 4.40671924726425 6.91671502035361 0.431782416425538 4.50645421304893 0.683096844706444 +pka 3.79548918917219 1.75440368268429 2.68784749378469 4.68213122712422 3.40784192438082 1.61938824328727 2.42480272571829 5.63835466933375 0 5.73009978297357 0.500775287912489 +pka 4.03777421073371 0.62057648772511 1.43983512804792 1.82616089594539 2.99573227355399 1.41098697371026 3.26575941076705 6.07993319509559 0 1.94304891677428 0 +pka 3.68887945411394 0.631271776841858 3.03974915897077 2.58776403522771 2.9704144655697 2.86220088092947 3.17387845893747 5.84643877505772 0 0.819779831493311 0.173953307123438 +pka 3.29212628660779 0.970778917158225 2.52572864430826 5.18178355029209 3.38099467434464 1.7630170003624 1.93441576962958 5.63835466933375 0 0.0676586484738149 0 +pka 2.79728133483015 2.26695791535089 3.24649099190117 3.63495111208838 2.68102152871429 3.18221184049661 3.24649099190117 5.87211778947542 0 0.00995033085316809 0 +pka 4.93447393313069 1.93441576962958 2.73436750941958 4.74493212836325 2.77881927199042 2.04122032885964 2.87919845729804 6.16120732169508 0.86288995514704 2.25758772706331 0.122217632724249 +pka 3.58073729549423 1.7630170003624 3.24649099190117 3.35340671782581 2.54160199346455 3.34638914516716 3.42751468997953 5.8111409929767 0 0 1.50185270175416 +pka 3.92197333628131 0.00995033085316809 2.96010509591084 2.61739583283408 2.79728133483015 2.97552956623647 3.03013370027132 5.63835466933375 0 0 0 +pka 3.45315712059287 0.53062825106217 3.08648663682246 3.26575941076705 2.79728133483015 3.27336401015227 3.4904285153901 5.63121178182137 0 1.59127394180643 0.494696241836107 +pka 3.94931879017184 0.0295588022415444 4.49758497530815 6.29526600143965 5.01063529409626 2.9338568698359 3.2188758248682 5.63835466933375 1.32175583998232 0.104360015324243 0.405465108108164 +pka 3.66867674679642 0.438254930931155 2.98568193770049 5.04342511691925 2.76000994003292 2.64617479738412 2.92316158071916 5.75574221358691 0 0 0.693147180559945 +pka 4.00186370942794 0.00995033085316809 2.92316158071916 5.52146091786225 3.64283551561253 3.09557760852371 3.02042488614436 5.78382518232974 0 7.18690102041163 3.85862222870103 +pka 3.8416005411316 0.00995033085316809 2.99573227355399 2.86220088092947 2.94968833505258 2.12226153886276 2.98568193770049 5.73979291217923 0 0.559615787935423 0 +pka 3.08648663682246 1.28647402583768 2.18605127673809 5.96357934361845 4.28082412916472 2.27521389619791 2.60268968544438 5.90808293816893 0 2.06812778177956 0.198850858745165 +pka 3.51749783735832 0.378436435720245 2.88480071284671 3.17387845893747 2.88480071284671 2.00552585872967 2.57261223020711 5.84643877505772 0.457424847038875 0.231111720963387 0.53062825106217 +pka 1.41098697371026 0 3.00568260440716 2.98568193770049 2.50959926237837 3.73289633953071 4.33598269617247 6.96129604591017 0 1.25846098961001 0.56531380905006 +pka 3.6609942506244 0.470003629245736 3.31054301339402 2.89591193827178 0.717839793150317 2.81540871942271 2.9391619220656 5.90808293816893 2.10413415427021 5.7037824746562 0.104360015324243 +pka 3.43720781918519 0.916290731874155 3.02042488614436 5.07517381523383 3.05870707271538 2.73436750941958 3.20274644293832 5.4971682252932 1.03318448334565 5.71042701737487 2.14943391349987 +pka 4.02891675689965 2.71469474382088 2.62466859216316 4.96284463025991 3.15700042115011 1.77155676191054 2.484906649788 5.53338948872752 0 2.61739583283408 0 +pka 4.06560209335645 0 2.2935443483419 2.9704144655697 3.18221184049661 3.12236492448736 3.47196645255036 5.57594910314632 1.27815220250019 1.03318448334565 0.357674444271816 +pka 3.63495111208838 0.00995033085316809 3.38099467434464 3.13113691056019 2.98568193770049 3.60549784517489 3.9759363311718 7.07834157955767 0 2.46809953147162 0.672944473242426 +pka 3.37416870927424 1.17865499634165 2.68784749378469 4.83628190695148 2.4423470353692 2.52572864430826 2.71469474382088 5.82008293035236 0 1.48387468945875 0.756121979721334 +pka 3.26575941076705 0.542324290825362 4.12874598893943 6.12468339089421 4.79579054559674 0.970778917158225 2.91235066461494 5.05624580534831 0 0.00995033085316809 0.518793793415168 +pka 3.23867845216438 0.837247524533702 2.54160199346455 4.16511363311031 3.13983261752775 2.05923883436232 1.9154509415706 5.7037824746562 0 0.405465108108164 0.542324290825362 +pka 3.53514535417189 0.157003748809665 2.58021682959233 5.10594547390058 3.23867845216438 2.97552956623647 3.13983261752775 5.67675380226828 0 0 0.828551817566148 +pka 0 0.27763173659828 2.67414864942653 2.85070650150373 2.89591193827178 0.322083499169113 0 4.76217393479776 2.84490938381941 7.50163445788341 1.90657514365664 +pka 3.38099467434464 0.989541193613748 2.19499988231411 4.69134788222914 3.76815263500844 2.10413415427021 2.79728133483015 5.4510384535657 0.048790164169432 8.7157161275482 3.25424296870549 +pka 4.38077585277223 3.31054301339402 2.3887627892351 5.26269018890489 3.75887182593397 3.21084365317094 3.53514535417189 6.00881318544259 0 0.693147180559945 0 +pka 3.91202300542815 0.457424847038875 2.43361335540045 4.87519732320115 3.11351530921037 3.12236492448736 3.37416870927424 6.58340922215876 0 0.322083499169113 0 +pka 3.41772668361337 0.879626747502564 3.03013370027132 4.00186370942794 3.11351530921037 2.34180580614733 2.61739583283408 5.73009978297357 0 0.198850858745165 0.636576829071551 +pka 3.2188758248682 1.71739505393919 3.07731226054641 3.56104608260405 3.15700042115011 3.55248682920838 3.65065824129374 6.01615715969835 1.31372366828506 0 0.457424847038875 +pka 3.35340671782581 1.05082162483176 3.15700042115011 3.34638914516716 2.4423470353692 3.48124008933569 3.60549784517489 5.82008293035236 1.59127394180643 2.79728133483015 1.96009478404727 +pka 3.60549784517489 0 3.02042488614436 3.29212628660779 2.7408400239252 2.53369681395743 2.77881927199042 6.20657592672493 0 3.23867845216438 0 +pka 3.07731226054641 0.512823626428664 3.77734810210154 4.10098910494077 3.69635146895264 3.37416870927424 3.67882911826043 5.99146454710798 0.405465108108164 2.34180580614733 0.398776119957368 +pka 4.92725368515721 0 2.79728133483015 5.31811999384422 3.29953372788566 2.32238772029023 3.34638914516716 5.98141421125448 0 1.51951320490611 0.357674444271816 +pka 4.3528552573736 0.182321556793955 2.4932054526027 4.87519732320115 3.14845336057165 4.27249074760558 4.74493212836325 7.4205789054108 0 0 0.139761942375159 +pka 2.68102152871429 0.314810739840034 2.66025953726586 5.71042701737487 3.63495111208838 4.33598269617247 4.81218435537242 7.15070145759253 0 2.61006979274201 0.488580014818671 +pka 3.3178157727231 0.343589704390077 2.9338568698359 4.76217393479776 3.69635146895264 1.74571553072665 2.32238772029023 6.35957386867238 3.36384159511839 2.32238772029023 0.500775287912489 +pka 3.60549784517489 0.657520002916794 3.63495111208838 3.38099467434464 3.2846635654062 2.76000994003292 3.10458667846607 5.80211837537706 0 1.21491274436427 0 +pka 3.56953269648137 0.819779831493311 3.12236492448736 2.82137888640921 1.41098697371026 3.9759363311718 4.23700086262362 6.57507584059962 0.476234178996372 2.98568193770049 0 +pka 0.802001585472027 0.99694863489161 2.32238772029023 3.70622809244855 3.91202300542815 3.08648663682246 3.37416870927424 5.99893656194668 3.24649099190117 6.22455842927536 2.2213750375685 +pka 3.38099467434464 2.31253542384721 3.43720781918519 3.47196645255036 2.12226153886276 4.41642806139121 4.56017282005736 7.3664451483276 2.11384296839717 1.23256026117785 0 +pka 4.86753445045558 3.85014760171006 2.23108909128898 5.05624580534831 3.4626060097908 3.50855589998265 3.9926809084456 6.52941883826223 0 2.08691355651854 0.00995033085316809 +pka 1.05082162483176 0 3.08648663682246 5.76519110278484 4.0842942263686 2.43361335540045 2.86789890204411 5.92692602597041 0 2.90690105984738 0.215111379616945 +pka 3.91202300542815 1.83418018511201 2.34180580614733 4.76217393479776 3.54385368206368 2.51769647261099 2.73436750941958 5.33271879326537 1.08856195281461 5.11799381241676 1.10525683138678 +pka 3.6609942506244 0.00995033085316809 3.43720781918519 3.29953372788566 3.2846635654062 1.54756250871601 3.44361809754611 5.80211837537706 0 0 0.113328685307003 +pka 2.31253542384721 0.0392207131532813 2.25758772706331 5.3890717298165 3.98527346716774 2.64617479738412 2.97552956623647 6.07073772800249 0.385262400790645 0 0.559615787935423 +pka 2.40694510831829 0.500775287912489 3.2188758248682 2.68102152871429 0.398776119957368 4.33598269617247 4.42484663185681 7.24921505711439 0 0.343589704390077 0.693147180559945 +pka 4.19116874685764 0.00995033085316809 2.24812890719799 2.97552956623647 3.51749783735832 2.75366071235426 2.80336038090653 5.45958551414416 0.457424847038875 1.8531680973567 0.398776119957368 +pka 3.96651119071222 3.23080439573347 3.4904285153901 3.08648663682246 2.2213750375685 2.76000994003292 2.99573227355399 5.84643877505772 0.0582689081239758 0 0.717839793150317 +pka 3.3357695763397 0.322083499169113 3.93963817246112 5.77455154554441 4.78749174278205 1.94304891677428 2.83321334405622 5.87211778947542 0 5.39816270151775 0.783901543828409 +pka 4.55071400019203 1.68268837417369 3.12236492448736 3.08648663682246 1.53901544813755 1.7630170003624 2.07819075977818 5.51342874616498 0 0 0 +pka 3.59731226058845 0.438254930931155 3.44361809754611 3.37416870927424 2.86220088092947 2.70136121295141 2.61739583283408 5.5683445037611 0 0 0.314810739840034 +pka 3.79548918917219 1.54756250871601 3.42751468997953 4.5152454784601 3.12236492448736 0.703097511413113 1.78170913337455 6.53958595561767 2.24812890719799 7.3664451483276 1.41098697371026 +pka 3.8416005411316 0.00995033085316809 2.97552956623647 2.66025953726586 0.576613364303994 2.39789527279837 2.79116510781272 5.50533153593236 2.97552956623647 6.880384082186 2.70136121295141 +pka 2.81540871942271 1.4747630091075 2.70136121295141 5.18178355029209 3.69635146895264 2.32238772029023 2.37024374146786 5.90808293816893 0 0.00995033085316809 0.60431596685333 +pka 3.77734810210154 0.871293365943419 3.64283551561253 5.94542060860658 4.87519732320115 2.73436750941958 3.03013370027132 5.67675380226828 0 2.46809953147162 1.2947271675944 +pka 3.8416005411316 0.322083499169113 2.54160199346455 3.04927304048202 3.21084365317094 2.81540871942271 3.25424296870549 5.6937321388027 0.470003629245736 1.27815220250019 0.60431596685333 +pka 3.34638914516716 0.802001585472027 3.02042488614436 4.91265488573605 3.65065824129374 2.58021682959233 3.00568260440716 5.94542060860658 2.67414864942653 1.67335123817775 0.00995033085316809 +pka 4.06560209335645 0.00995033085316809 2.82137888640921 2.81540871942271 2.58776403522771 2.58021682959233 2.52572864430826 5.6021188208797 1.25846098961001 0.89199803930511 0.254642218373581 +pka 3.56953269648137 0.00995033085316809 3.56953269648137 5.29831736654804 4.18205014264121 2.58776403522771 2.23108909128898 5.76519110278484 0 2.02419306744936 0 +pka 1.41098697371026 1.94304891677428 2.71469474382088 2.65324196460721 2.03339760317843 2.1770218700187 2.51769647261099 5.73009978297357 0 2.3887627892351 0.3293037471426 +pka 3.69635146895264 0.22314355131421 2.80336038090653 3.62434093297637 2.85070650150373 2.31253542384721 2.86220088092947 5.16478597392351 0 0.322083499169113 1.16938135955632 +pka 3.92197333628131 0.86288995514704 2.36085400111802 5.59471137960184 3.50855589998265 2.52572864430826 2.19499988231411 5.63835466933375 0 1.43983512804792 0.19062035960865 +pka 3.65065824129374 0.00995033085316809 2.86220088092947 5.11799381241676 3.36384159511839 4.10098910494077 4.12874598893943 6.87212810133899 0.593326845277734 0 0.53062825106217 +pka 0.928219302739429 0 2.99573227355399 4.58700621536042 3.12236492448736 3.14845336057165 3.44361809754611 5.73979291217923 0.307484699747961 0.173953307123438 0.27763173659828 +pka 2.3887627892351 1.60140574073684 2.66025953726586 2.77881927199042 3.03013370027132 2.42480272571829 2.86789890204411 5.64897423816121 1.07158361628019 0 1.07158361628019 +pka 4.11903717481247 0.576613364303994 4.88280192258637 5.48479693349065 4.91265488573605 2.71469474382088 2.92316158071916 5.62040086571715 0.398776119957368 7.71735127218533 0.765467842139571 +pka 3.65065824129374 0.727548607277278 2.97552956623647 4.38949864951258 3.13983261752775 2.72785282839839 3.07731226054641 5.67675380226828 0 6.21460809842219 1.50185270175416 +pka 3.92986292355648 0.765467842139571 3.37416870927424 3.07731226054641 3.6609942506244 2.92316158071916 3.25424296870549 6.00881318544259 0.371563556432483 4.70953020131233 2.47653840011748 +pka 4.72738781871234 0.00995033085316809 3.03013370027132 3.17387845893747 2.79116510781272 2.23108909128898 2.71469474382088 5.66642668811243 0 4.11087386417331 0 +pka 3.91202300542815 0.00995033085316809 2.3887627892351 2.1770218700187 2.9391619220656 3.39114704580865 3.48124008933569 5.67675380226828 0 2.58776403522771 0.322083499169113 +pka 3.58905911883173 0.00995033085316809 2.99573227355399 3.35340671782581 2.18605127673809 1.62727783056243 2.72785282839839 6.10702288774225 0.048790164169432 1.7263316639056 1.50185270175416 +pka 3.7864597824528 1.25846098961001 2.75366071235426 4.74493212836325 3.58073729549423 1.6094379124341 2.53369681395743 6.55677835615804 2.05923883436232 2.54160199346455 1.01523067972906 +pka 1.68268837417369 1.41098697371026 3.90399083373088 6.02586597382531 4.29045944114839 2.52572864430826 2.85070650150373 5.64897423816121 1.03318448334565 0.00995033085316809 0.285178942233662 +pka 3.86702563949741 0.00995033085316809 2.7408400239252 4.81218435537242 3.60549784517489 2.4423470353692 2.83321334405622 5.76519110278484 0 0.00995033085316809 0.104360015324243 +pka 3.90399083373088 0.636576829071551 3.40119738166216 3.21084365317094 1.63705307946707 2.64617479738412 2.77258872223978 5.48479693349065 0 0 0.916290731874155 +pka 5.12396397940326 0 3.16547504814109 3.29953372788566 2.86220088092947 1.07840958135059 2.73436750941958 6.40357419793482 0 3.87743156065853 0 +pka 3.41772668361337 0.56531380905006 3.51749783735832 3.56104608260405 3.51749783735832 2.484906649788 4.20916023665068 7.7621706071382 0 0 0.810930216216329 +pka 3.64283551561253 0.104360015324243 2.39789527279837 5.4249500174814 3.63495111208838 1.44926916028128 3.59731226058845 4.34380542185368 0 0 0.488580014818671 +pka 1.57484646766448 0.300104592450338 3.37416870927424 2.34180580614733 1.50185270175416 1.4655675420144 2.23964529322017 5.80211837537706 0 4.60517018598809 0.0769610411361284 +pka 3.29212628660779 0.307484699747961 3.00568260440716 4.65396035015752 3.58905911883173 0.783901543828409 2.11384296839717 6.74641212857337 0 0.425267735404344 0.00995033085316809 +pka 4.16511363311031 0.00995033085316809 1.870262530716 5.12396397940326 3.62434093297637 2.64617479738412 3.02042488614436 5.4971682252932 0 2.56494935746154 0.0953101798043249 +pka 3.29953372788566 1.17865499634165 2.68102152871429 2.56494935746154 2.37024374146786 3.37416870927424 3.4904285153901 5.98141421125448 2.33214389523559 0.542324290825362 0.048790164169432 +pka 3.13983261752775 0.542324290825362 3.08648663682246 4.91265488573605 3.98527346716774 2.24812890719799 2.60268968544438 5.88332238848828 0 4.62497281328427 0.139761942375159 +pka 3.40119738166216 1.60140574073684 3.13113691056019 3.13113691056019 2.41591377830105 1.63705307946707 3.21084365317094 6.27852142416584 0 1.4747630091075 0.0676586484738149 +pka 3.64283551561253 0.00995033085316809 3.34638914516716 2.75366071235426 2.83321334405622 1.31372366828506 3.55248682920838 4.0926765051214 0 0 0.262364264467491 +pka 3.75887182593397 0 3.6609942506244 2.92316158071916 3.40784192438082 2.09556092355972 2.45958884180371 5.65599181081985 0 0.00995033085316809 0 +pka 4.65396035015752 0.00995033085316809 2.88480071284671 5.37989735354046 4.04830062372069 3.51749783735832 3.75887182593397 6.44888939414686 0 4.92725368515721 0.582215619852664 +pka 3.56953269648137 0.593326845277734 2.64617479738412 5.21493575760899 3.18221184049661 2.85070650150373 3.43720781918519 5.98141421125448 0 0 0.00995033085316809 +pka 1.69009581545155 0 3.17387845893747 2.64617479738412 2.79728133483015 2.76000994003292 2.79728133483015 5.68357976733868 0 0 0 +pka 3.98527346716774 2.66025953726586 1.44926916028128 1.6094379124341 1.44926916028128 3.01553490085017 3.12236492448736 5.82008293035236 0 0 0 +pka 3.29212628660779 0.00995033085316809 3.09557760852371 1.84371920815877 2.91235066461494 0.982078472412158 2.2935443483419 5.21493575760899 0 0 0.19062035960865 +pka 2.58021682959233 0.27002713721306 3.16547504814109 4.36182392735636 3.51749783735832 3.23867845216438 3.49953328238302 5.48479693349065 0.765467842139571 6.25958146406492 0.951657875711446 +pka 4.14630430115281 1.38629436111989 2.96010509591084 3.11351530921037 1.80828877117927 2.86789890204411 3.36384159511839 6.83625927727707 0 4.91265488573605 0.657520002916794 +pka 3.56104608260405 0.609765571620894 2.64617479738412 1.24126858906963 2.68102152871429 0.900161349944271 1.9154509415706 6.16961073249146 0.231111720963387 0.122217632724249 0.104360015324243 +pka 1.16938135955632 0.378436435720245 3.12236492448736 3.09557760852371 2.43361335540045 3.92986292355648 4.26267987704132 6.77308037565554 0 0 0.00995033085316809 +pka 3.53514535417189 0.56531380905006 1.89761985992753 2.9338568698359 2.66025953726586 3.32862668882732 3.77734810210154 6.31354804627709 0 2.08691355651854 0.00995033085316809 +pka 3.56104608260405 0.936093359170335 3.2846635654062 2.77258872223978 1.63705307946707 1.86252854011626 0.182321556793955 4.95582705760126 1.87946504964716 1.82616089594539 0.22314355131421 +pka 3.18221184049661 0.854415328156068 3.59731226058845 3.8416005411316 3.62434093297637 3.37416870927424 3.6163087612791 6.74641212857337 2.10413415427021 5.62040086571715 0.22314355131421 +pka 3.85862222870103 0.512823626428664 4.20020495292158 5.73979291217923 4.60517018598809 1.36609165380237 2.82137888640921 6.22455842927536 0 3.76815263500844 0 +pka 3.8308129500026 1.08856195281461 3.02042488614436 3.08648663682246 0 2.4423470353692 3.01553490085017 6.36818718635049 0.0861776962410524 2.07819075977818 0 +pka 3.56104608260405 1.51951320490611 2.36085400111802 5.23644196282995 3.4904285153901 3.75185425327532 3.9759363311718 6.4393503711001 0 0 0.582215619852664 +pka 3.85862222870103 1.23256026117785 3.13113691056019 4.70953020131233 3.42751468997953 3.9926809084456 4.28082412916472 7.10578612948127 0 1.54756250871601 0.431782416425538 +pka 4.60517018598809 0.19062035960865 2.51769647261099 5.04342511691925 3.76815263500844 2.34180580614733 2.79116510781272 5.59471137960184 0 3.25424296870549 0.457424847038875 +pka 3.40119738166216 1.30291275218084 2.77258872223978 2.55722731136763 2.91235066461494 2.97552956623647 3.03013370027132 5.94542060860658 0.593326845277734 0.542324290825362 1.27815220250019 +pka 3.90399083373088 2.23964529322017 2.81540871942271 5.37989735354046 3.44361809754611 2.90690105984738 3.29212628660779 5.63121178182137 0.73716406597672 0.3293037471426 1.11514159061932 +pka 4.03777421073371 0.774727167552368 0.916290731874155 2.484906649788 3.12236492448736 2.3887627892351 3.12236492448736 6.79122146272619 1.07158361628019 3.40784192438082 0.717839793150317 +pka 3.81330703248899 1.30291275218084 1.97823903617067 4.70953020131233 3.08648663682246 2.02419306744936 4.13676527810605 6.32256523992728 0.576613364303994 0 0.350656871613169 +pka 3.6609942506244 0.837247524533702 3.71357206670431 6.01615715969835 4.38949864951258 3.01553490085017 3.25424296870549 5.71042701737487 2.53369681395743 5.71042701737487 1.80828877117927 +pka 3.6609942506244 0.963174317773006 2.62466859216316 5.31811999384422 3.72328088083127 3.2846635654062 3.52636052461616 6.53958595561767 0.712949807856125 3.09557760852371 1.41098697371026 +pka 3.51749783735832 1.54756250871601 3.89385903480047 5.89164421182577 4.58700621536042 2.47653840011748 2.79116510781272 5.84643877505772 0 1.20597080698861 0.371563556432483 +pka 0.3293037471426 0.470003629245736 3.02042488614436 2.90690105984738 0.500775287912489 3.51749783735832 3.56953269648137 6.08904487544685 0 0.307484699747961 0.470003629245736 +pka 3.47196645255036 1.24126858906963 3.13983261752775 2.82137888640921 2.34180580614733 2.09556092355972 2.80336038090653 5.84643877505772 0 0.488580014818671 0 +pka 3.75887182593397 1.51951320490611 3.23867845216438 2.55722731136763 2.08691355651854 3.43720781918519 3.6609942506244 6.78219205600679 0 0 0.357674444271816 +pka 2.34180580614733 0.00995033085316809 2.97552956623647 4.01998014693324 2.4423470353692 0.657520002916794 1.98787434815435 6.48463523563525 0 0 0 +pka 3.08648663682246 0.928219302739429 3.17387845893747 3.02042488614436 0 3.10458667846607 3.04927304048202 5.63121178182137 0.0198026272961797 1.07158361628019 0.27763173659828 +pka 3.53514535417189 0 2.53369681395743 4.92725368515721 2.57261223020711 3.55248682920838 3.88567903008854 7.67229245562876 0 4.34380542185368 0 +pka 3.63495111208838 0.727548607277278 4.28082412916472 6.46769872610435 4.94875989037817 3.58905911883173 3.68887945411394 6.54821910276237 0 5.06259503302697 0.27763173659828 +pka 3.48124008933569 1.45628673293993 3.07731226054641 5.08140436498446 3.47196645255036 4.15575319035074 4.48863636973214 7.55538194424027 0 3.64283551561253 0.636576829071551 +pka 4.68213122712422 0 2.40694510831829 4.84418708645859 3.27336401015227 2.68102152871429 3.03013370027132 5.65599181081985 0 3.82209829790016 0.139761942375159 +pka 4.11087386417331 0.0953101798043249 2.98568193770049 2.76000994003292 1.68268837417369 3.7864597824528 3.96651119071222 6.85329909318608 0 1.41098697371026 0.398776119957368 +pka 3.43720781918519 0.0582689081239758 4.15575319035074 4.3528552573736 3.6609942506244 3.69635146895264 3.75887182593397 5.71042701737487 0 2.70136121295141 0.22314355131421 +pka 4.06560209335645 0.783901543828409 4.37071287477361 6.24222326545517 4.91265488573605 3.58073729549423 3.85014760171006 6.53958595561767 2.55722731136763 6.92559519711047 0.451075619360217 +pka 3.7864597824528 0 3.85862222870103 4.43438186500781 4.16511363311031 2.61739583283408 3.17387845893747 5.64897423816121 0.774727167552368 3.62434093297637 1.4036429994545 +pka 3.40119738166216 1.18784342239605 2.75366071235426 3.85014760171006 3.70622809244855 2.98568193770049 2.85070650150373 5.61312810638807 0 2.88480071284671 0.431782416425538 +pka 3.6609942506244 0.792992515529661 2.67414864942653 5.18738580584075 2.85070650150373 3.50855589998265 4.33598269617247 6.99759598298193 0 0 0.425267735404344 +pka 3.7864597824528 0.00995033085316809 2.60268968544438 2.25758772706331 1.34807314829969 2.57261223020711 2.96010509591084 5.96357934361845 0 0.048790164169432 0.819779831493311 +pka 3.79548918917219 0.048790164169432 1.96990565461153 3.15700042115011 1.53901544813755 2.62466859216316 2.79728133483015 5.76519110278484 0 1.9154509415706 0.457424847038875 +pka 4.82028156560504 0 4.01998014693324 5.4971682252932 4.3267781604434 3.06805293513362 3.23867845216438 5.92692602597041 0.943905898907128 1.56444054650336 2.3887627892351 +pka 3.59731226058845 0.00995033085316809 3.03974915897077 3.48124008933569 2.77258872223978 4.34380542185368 4.63472898822964 7.77106708606541 0 2.20386912005489 0.438254930931155 +pka 4.70953020131233 0.00995033085316809 4.5152454784601 5.55682806169954 4.57779898919196 3.44361809754611 3.43720781918519 5.82894561761021 0 4.95582705760126 0.431782416425538 +pka 3.52636052461616 1.87946504964716 0.970778917158225 2.33214389523559 2.10413415427021 2.2935443483419 2.79728133483015 5.99146454710798 0.262364264467491 1.57484646766448 0.165514438477573 +pka 3.48124008933569 1.2947271675944 2.67414864942653 5.05624580534831 3.02042488614436 3.11351530921037 3.32862668882732 5.89989735358249 0 0 0 +pka 3.37416870927424 0.00995033085316809 2.45958884180371 3.38099467434464 3.05870707271538 1.69009581545155 3.26575941076705 6.1527326947041 0 0.165514438477573 0 +pka 2.72785282839839 2.06812778177956 2.82137888640921 4.86753445045558 2.99573227355399 2.37024374146786 2.77258872223978 5.6021188208797 0 5.52146091786225 1.42069578783722 +pka 2.67414864942653 0.989541193613748 2.91235066461494 4.91998092582813 3.88567903008854 2.484906649788 2.58776403522771 5.8111409929767 0 4.44382703557933 2.36085400111802 +pka 4.40671924726425 0.300104592450338 2.70136121295141 4.91998092582813 3.56953269648137 2.70136121295141 2.87919845729804 5.8111409929767 0 1.27815220250019 0 +pka 4.44382703557933 1.22377543162212 2.43361335540045 5.36129216570943 3.01553490085017 1.75440368268429 2.30258509299405 5.98141421125448 0 1.04380405217311 0 +pka 2.64617479738412 0 3.09557760852371 4.37071287477361 2.58776403522771 2.06812778177956 2.30258509299405 5.90808293816893 0.717839793150317 7.51914995766982 0.0861776962410524 +pka 3.66867674679642 0.500775287912489 3.03974915897077 5.04342511691925 3.90399083373088 3.3178157727231 3.58905911883173 5.95324333428778 1.59127394180643 2.25758772706331 2.02419306744936 +pka 4.87519732320115 1.79009141212736 2.90690105984738 2.82137888640921 1.95160817016995 2.484906649788 2.50143595173921 5.62040086571715 1.5830939370945 5.4249500174814 0.900161349944271 +pka 3.14845336057165 0.0392207131532813 2.75366071235426 5.32300997913841 3.90399083373088 2.50143595173921 2.89591193827178 5.8111409929767 0 0 0 +pka 3.4904285153901 0 3.13113691056019 3.4626060097908 2.99573227355399 3.34638914516716 3.77734810210154 6.60258789218934 0 0 0.157003748809665 +pka 3.68887945411394 1.83418018511201 2.7408400239252 4.66343909411207 2.2935443483419 2.97552956623647 3.35340671782581 5.95324333428778 0 0.00995033085316809 0 +pka 3.66867674679642 1.28647402583768 3.10458667846607 3.2846635654062 3.06805293513362 1.95160817016995 3.2188758248682 6.07993319509559 0 2.33214389523559 0.139761942375159 +pka 3.37416870927424 0.254642218373581 3.07731226054641 3.14845336057165 2.71469474382088 1.45628673293993 1.82616089594539 6.05443934626937 0.609765571620894 0 1.31372366828506 +pka 4.19116874685764 0.00995033085316809 3.03974915897077 2.03339760317843 3.18221184049661 1.32175583998232 2.86220088092947 6.12468339089421 2.13179677201376 4.8283137373023 0.0769610411361284 +pka 4.06560209335645 0 2.65324196460721 4.85981240436167 3.65065824129374 2.98568193770049 3.27336401015227 5.80211837537706 0 4.99043258677874 1.04380405217311 +pka 3.39114704580865 0 2.52572864430826 4.52396013056255 2.86220088092947 3.26575941076705 3.73289633953071 7.04228617193974 1.43031124653666 3.73289633953071 0.476234178996372 +pka 3.74242022104197 0.631271776841858 2.79728133483015 3.10458667846607 3.01553490085017 0.871293365943419 2.31253542384721 5.37989735354046 0 4.59612944133594 0.350656871613169 +pka 3.59731226058845 0.0392207131532813 3.18221184049661 1.86252854011626 3.36384159511839 2.75366071235426 2.85070650150373 5.7037824746562 0 0 0.518793793415168 +pka 4.06560209335645 2.32238772029023 2.81540871942271 3.29212628660779 3.21084365317094 1.93441576962958 2.61006979274201 6.97073007814353 1.99741770620125 5.99146454710798 1.77155676191054 +pka 3.58905911883173 0.819779831493311 2.65324196460721 5.29831736654804 3.60549784517489 1.92424865227413 2.77258872223978 6.19644412779452 0 1.75440368268429 0.157003748809665 +pka 3.91202300542815 0.0582689081239758 3.23867845216438 3.31054301339402 1.30291275218084 2.32238772029023 2.56494935746154 5.67675380226828 0.845868267577609 2.50959926237837 0.425267735404344 +pka 3.40784192438082 0.717839793150317 2.94968833505258 3.08648663682246 2.68102152871429 3.68887945411394 4.02891675689965 7.0335064842877 0 1.77155676191054 0.582215619852664 +pka 3.9759363311718 0.425267735404344 3.8308129500026 5.93753620508243 4.62497281328427 3.65065824129374 4.01998014693324 5.97126183979046 1.6467336971778 6.37672694789863 0.854415328156068 +pka 3.8308129500026 0.89199803930511 3.67882911826043 5.89164421182577 4.19116874685764 1.4036429994545 2.14943391349987 5.4510384535657 1.66392609771817 0.854415328156068 0.0953101798043249 +pka 2.15871472257434 0.00995033085316809 2.32238772029023 2.36085400111802 2.67414864942653 0.951657875711446 2.50959926237837 5.51342874616498 3.09557760852371 4.28082412916472 1.55603713570699 +pka 3.43720781918519 1.05082162483176 3.25424296870549 2.85070650150373 2.484906649788 2.81540871942271 2.89591193827178 5.85507192220243 3.13983261752775 6.53958595561767 2.37024374146786 +pka 3.21084365317094 1.38629436111989 3.17387845893747 3.3178157727231 3.16547504814109 4.17284762371004 4.20916023665068 5.72031177660741 0 0 0.113328685307003 +pka 3.9926809084456 0 0.405465108108164 3.17387845893747 2.77881927199042 3.55248682920838 3.73289633953071 5.87211778947542 2.52572864430826 6.18001665365257 0.0582689081239758 +pka 3.8416005411316 0.548121408509688 2.39789527279837 4.89034912822175 3.23867845216438 2.46809953147162 2.58021682959233 5.50533153593236 0 4.65396035015752 1.49290409617815 +pka 3.42751468997953 0 3.03974915897077 5.27811465923052 3.6609942506244 4.05698877567833 4.13676527810605 6.61069604471776 0 0 0.470003629245736 +pka 3.11351530921037 0.307484699747961 2.84490938381941 5.48479693349065 3.34638914516716 2.07819075977818 3.82209829790016 5.99893656194668 0.173953307123438 3.45315712059287 0.322083499169113 +pka 4.82028156560504 1.59127394180643 3.31054301339402 5.3890717298165 4.21803603456465 3.95699637107088 4.27249074760558 6.97073007814353 0 0.00995033085316809 0.542324290825362 +pka 3.89385903480047 0 2.79116510781272 5.16478597392351 3.21084365317094 4.66343909411207 4.79579054559674 7.16857989726403 0 7.05185562295589 0.494696241836107 +pka 4.22683374526818 1.10525683138678 3.13983261752775 3.29953372788566 2.58021682959233 2.43361335540045 2.87919845729804 6.13339804299665 0 2.47653840011748 0.854415328156068 +pka 4.0842942263686 0.00995033085316809 2.23108909128898 5.63835466933375 3.40119738166216 3.16547504814109 3.23080439573347 5.85507192220243 0 0.00995033085316809 0.22314355131421 +pka 1.82616089594539 0.746687947487975 2.28442112236637 4.84418708645859 3.23867845216438 2.66025953726586 3.38099467434464 6.14418563412565 1.45628673293993 3.23867845216438 0 +pka 3.56104608260405 1.15057202759882 3.08648663682246 3.65065824129374 3.93963817246112 1.28647402583768 2.81540871942271 5.55682806169954 0 0 0.2390169004705 +pka 3.89385903480047 0.810930216216329 2.39789527279837 5.67675380226828 3.52636052461616 3.41772668361337 3.62434093297637 5.93753620508243 0 4.50645421304893 1.00795792039998 +pka 3.80443779474821 1.12492959698548 3.3178157727231 0.819779831493311 3.71357206670431 2.08691355651854 2.35137525716348 5.94542060860658 0 0 0 +pka 3.87743156065853 0.27763173659828 2.84490938381941 4.97673374242057 2.79728133483015 2.23108909128898 3.18221184049661 7.10578612948127 0 0 0 +pka 3.50855589998265 1.15057202759882 2.9338568698359 4.24563400976833 2.05923883436232 2.04122032885964 2.53369681395743 5.79301360838414 0 3.3357695763397 0.0953101798043249 +pka 3.85014760171006 0.693147180559945 3.85014760171006 4.03777421073371 3.88567903008854 2.14124194258528 2.65324196460721 5.90808293816893 0 2.70805020110221 0.636576829071551 +pka 4.8283137373023 0.357674444271816 1.69009581545155 5.40717177146012 3.38099467434464 3.04927304048202 2.9391619220656 5.74620319054015 0 2.23964529322017 0.405465108108164 +pka 3.85014760171006 0.262364264467491 3.85862222870103 4.74493212836325 3.09557760852371 2.11384296839717 2.4932054526027 5.7037824746562 0.494696241836107 0.609765571620894 0.350656871613169 +pka 2.32238772029023 0.470003629245736 3.11351530921037 2.92316158071916 3.03974915897077 1.99741770620125 2.77258872223978 6.42162226780652 2.11384296839717 5.6021188208797 0.494696241836107 +pka 3.55248682920838 1.10525683138678 3.42751468997953 3.18221184049661 3.01553490085017 2.9338568698359 2.9704144655697 5.47646355193151 3.66867674679642 3.34638914516716 2.07819075977818 +pka 4.07414185490458 1.67335123817775 2.92316158071916 2.9391619220656 1.96009478404727 3.13983261752775 3.38099467434464 5.51342874616498 3.00568260440716 1.63705307946707 0.470003629245736 +pka 3.70622809244855 0.802001585472027 2.96010509591084 3.31054301339402 2.72785282839839 2.11384296839717 1.870262530716 5.39816270151775 0 4.40671924726425 0.900161349944271 +pka 3.4626060097908 0.86288995514704 2.14124194258528 5.4249500174814 3.6163087612791 3.26575941076705 3.58073729549423 5.82894561761021 0.854415328156068 0 0.3293037471426 +pka 3.81330703248899 0 3.34638914516716 2.70136121295141 1.41098697371026 3.03013370027132 3.16547504814109 5.63835466933375 0 5.39816270151775 1.26694760348732 +pka 3.88567903008854 0.802001585472027 2.94968833505258 3.12236492448736 2.4423470353692 3.42751468997953 3.79548918917219 6.62007320653036 0 1.65441127807683 0.672944473242426 +pka 3.40119738166216 0.19062035960865 4.01096295328305 6.10702288774225 4.76217393479776 2.20386912005489 2.43361335540045 5.99146454710798 0 0 0.0295588022415444 +pka 0 0.727548607277278 3.10458667846607 4.90527477843843 3.05870707271538 3.29212628660779 3.50855589998265 5.90808293816893 0.173953307123438 2.66025953726586 0.828551817566148 +pka 3.54385368206368 0.494696241836107 2.58021682959233 4.89034912822175 3.42751468997953 1.88858365386359 2.23964529322017 6.24222326545517 0 0 0.173953307123438 +pka 3.70622809244855 0.989541193613748 3.07731226054641 5.20948615284142 4.02891675689965 2.85070650150373 2.72785282839839 5.59471137960184 0 0.672944473242426 0.104360015324243 +pka 3.77734810210154 1.4036429994545 3.54385368206368 3.45315712059287 2.43361335540045 1.60140574073684 1.81645208181843 5.54907608489522 0 1.88858365386359 0.703097511413113 +pka 4.10098910494077 0.00995033085316809 2.81540871942271 5.05624580534831 3.10458667846607 3.6163087612791 3.7864597824528 6.66440902035041 0 1.10525683138678 0.350656871613169 +pka 3.59731226058845 1.34807314829969 2.70136121295141 4.84418708645859 2.99573227355399 3.24649099190117 3.45315712059287 5.8111409929767 0 1.10525683138678 0.262364264467491 +pka 3.10458667846607 0.854415328156068 3.21084365317094 3.20274644293832 1.26694760348732 2.39789527279837 2.68784749378469 5.82894561761021 0 0.300104592450338 0 +pka 3.66867674679642 0.00995033085316809 2.81540871942271 2.18605127673809 0.854415328156068 4.11087386417331 4.20916023665068 6.98007594056176 0 2.62466859216316 0 +pka 2.11384296839717 0 2.50959926237837 4.76217393479776 2.08691355651854 2.01490302054226 2.9338568698359 6.39526159811545 0 0 0 +pka 3.2846635654062 1.01523067972906 2.37024374146786 5.64897423816121 3.8416005411316 2.06812778177956 3.06805293513362 7.01571242048723 0.727548607277278 3.34638914516716 0.53062825106217 +pka 3.66867674679642 0.27763173659828 3.3357695763397 3.68887945411394 2.91235066461494 3.55248682920838 3.75887182593397 6.25958146406492 0.139761942375159 0.00995033085316809 1.43983512804792 +pka 4.04830062372069 2.02419306744936 2.37954613413017 4.60517018598809 3.03013370027132 2.26695791535089 2.57261223020711 5.65599181081985 0 3.41772668361337 0.683096844706444 +pka 3.71357206670431 0.99694863489161 2.7408400239252 4.57779898919196 3.55248682920838 3.27336401015227 3.38099467434464 5.74620319054015 0 0.00995033085316809 0 +pka 2.484906649788 2.02419306744936 2.99573227355399 2.9391619220656 2.3887627892351 3.02042488614436 3.48124008933569 5.90808293816893 0 0 0.322083499169113 +pka 3.45315712059287 0.576613364303994 2.9338568698359 2.9391619220656 1.14103300455206 3.15700042115011 3.3357695763397 6.02586597382531 0 2.76000994003292 0.99694863489161 +pka 3.50855589998265 0.871293365943419 2.01490302054226 5.32300997913841 3.56104608260405 4.52396013056255 4.66343909411207 7.51914995766982 0 1.03318448334565 1.43983512804792 +pka 3.70622809244855 1.4036429994545 2.99573227355399 2.7408400239252 1.96990565461153 2.56494935746154 2.85070650150373 5.6937321388027 0 0.476234178996372 0.19062035960865 +pka 3.69635146895264 0.00995033085316809 2.90690105984738 4.59612944133594 3.75185425327532 3.07731226054641 3.52636052461616 6.10702288774225 0 0.2390169004705 0 +pka 3.44361809754611 0.89199803930511 2.88480071284671 4.05698877567833 2.45958884180371 2.14124194258528 2.68784749378469 5.79301360838414 0 4.68213122712422 0.765467842139571 +pka 3.45315712059287 0.871293365943419 1.67335123817775 5.20948615284142 3.45315712059287 2.36085400111802 2.52572864430826 5.94542060860658 0.350656871613169 4.78749174278205 0.512823626428664 +pka 3.56953269648137 0.457424847038875 2.79116510781272 4.50645421304893 2.9338568698359 2.52572864430826 3.62434093297637 6.61069604471776 0 0.0198026272961797 0 +pka 3.40119738166216 1.5830939370945 2.39789527279837 5.16478597392351 2.9391619220656 1.84371920815877 2.82137888640921 5.4510384535657 0 0.0582689081239758 0.300104592450338 +pka 3.21084365317094 1.05082162483176 2.30258509299405 3.01553490085017 2.86220088092947 2.62466859216316 2.484906649788 5.8636311755981 0 0.343589704390077 0.00995033085316809 +pka 3.21084365317094 0.989541193613748 2.60268968544438 5.0998664278242 3.44361809754611 2.9338568698359 3.3178157727231 5.63835466933375 0 0.357674444271816 0.378436435720245 +pka 4.45201900649392 3.13113691056019 3.34638914516716 3.36384159511839 2.91235066461494 2.4423470353692 2.60268968544438 5.47646355193151 0 0.122217632724249 0 +pka 2.15871472257434 0 2.05027016437956 5.36129216570943 3.4904285153901 2.79728133483015 3.01553490085017 5.8111409929767 0 0.542324290825362 0 +pka 4.36182392735636 1.06125650212434 3.29212628660779 3.50855589998265 2.01490302054226 2.88480071284671 3.10458667846607 5.88332238848828 0.104360015324243 0.582215619852664 0.350656871613169 +pka 4.12874598893943 0.0295588022415444 2.2935443483419 5.32300997913841 3.56953269648137 2.21266038546606 2.484906649788 5.53338948872752 1.15057202759882 5.55682806169954 0.173953307123438 +pka 3.74242022104197 2.03339760317843 3.56953269648137 5.91889385427315 4.34380542185368 3.40119738166216 3.36384159511839 5.85507192220243 1.708377860289 0.99694863489161 0.2390169004705 +pka 3.56104608260405 0.254642218373581 3.66867674679642 5.63121178182137 4.16511363311031 2.3887627892351 2.75366071235426 5.76519110278484 0.0582689081239758 0.00995033085316809 0.207014169384326 +pka 2.62466859216316 0 3.08648663682246 2.79728133483015 2.61739583283408 3.96651119071222 4.11087386417331 6.97073007814353 0 0 0.0295588022415444 +pka 2.03339760317843 0.2390169004705 2.54160199346455 4.93447393313069 3.65065824129374 2.1770218700187 2.2935443483419 5.7037824746562 0 0 0.314810739840034 +pka 3.58073729549423 0.703097511413113 2.62466859216316 4.71849887129509 2.00552585872967 4.34380542185368 4.53367418428302 7.3664451483276 0 0.00995033085316809 0.207014169384326 +pka 3.35340671782581 0.908258560176891 3.01553490085017 3.03974915897077 1.80828877117927 2.76000994003292 3.2188758248682 5.54907608489522 1.39376637595859 0 0.285178942233662 +pka 4.10098910494077 2.28442112236637 3.53514535417189 3.92986292355648 3.48124008933569 3.10458667846607 3.07731226054641 5.59471137960184 0 5.05624580534831 0.512823626428664 +pka 3.4626060097908 0.198850858745165 2.79728133483015 5.44241771052179 3.62434093297637 2.02419306744936 2.70136121295141 5.51342874616498 0 2.53369681395743 0.542324290825362 +pka 3.16547504814109 0.746687947487975 2.70805020110221 4.78749174278205 3.25424296870549 3.68887945411394 3.82209829790016 6.60258789218934 0 0.60431596685333 0.104360015324243 +pka 3.86702563949741 2.04122032885964 3.24649099190117 3.29212628660779 2.63188884013665 3.6163087612791 3.68887945411394 5.85507192220243 0.879626747502564 4.64439089914137 1.33236601909433 +pka 4.06560209335645 2.34180580614733 3.35340671782581 3.24649099190117 2.65324196460721 3.39114704580865 3.3178157727231 5.46806014113513 3.18221184049661 7.60936653795421 0.198850858745165 +pka 3.98527346716774 0.00995033085316809 1.69009581545155 2.76000994003292 4.13676527810605 2.15871472257434 2.40694510831829 5.7037824746562 0 0.0676586484738149 0.470003629245736 +pka 3.36384159511839 2.31253542384721 3.92197333628131 5.53338948872752 4.29045944114839 4.21803603456465 4.38077585277223 7.3304052118444 0 1.12492959698548 0.00995033085316809 +pka 3.58073729549423 1.34807314829969 3.48124008933569 3.6163087612791 2.97552956623647 1.4655675420144 2.66025953726586 5.80211837537706 0 2.53369681395743 0.254642218373581 +pka 4.44382703557933 0 2.90690105984738 2.83321334405622 1.90657514365664 3.89385903480047 4.11903717481247 6.69208374250663 2.11384296839717 5.68357976733868 0.828551817566148 +pka 3.68887945411394 0.548121408509688 2.88480071284671 2.96010509591084 2.75366071235426 4.23700086262362 4.50645421304893 7.45645455517621 0.476234178996372 2.62466859216316 0.425267735404344 +pka 3.69635146895264 1.27815220250019 3.17387845893747 3.56953269648137 4.13676527810605 3.32862668882732 3.86702563949741 6.47543271670409 0 0.307484699747961 0.703097511413113 +pka 3.68887945411394 1.31372366828506 2.86220088092947 4.81218435537242 3.34638914516716 2.53369681395743 2.68784749378469 5.4510384535657 0 4.0926765051214 1.00795792039998 +pka 3.44361809754611 1.23256026117785 2.98568193770049 3.25424296870549 2.80336038090653 3.07731226054641 3.07731226054641 5.63835466933375 0 2.79116510781272 0.173953307123438 +pka 3.26575941076705 0.783901543828409 2.47653840011748 5.23644196282995 3.56953269648137 4.11087386417331 4.47049528266149 7.15929190479756 0 0.00995033085316809 1.01523067972906 +pka 3.88567903008854 0.457424847038875 3.08648663682246 3.08648663682246 2.65324196460721 1.6094379124341 2.53369681395743 5.84643877505772 0 1.50185270175416 2.57261223020711 +pka 3.93963817246112 0.00995033085316809 3.10458667846607 3.23867845216438 3.45315712059287 2.18605127673809 2.71469474382088 5.79301360838414 0 2.37954613413017 0.845868267577609 +pka 4.13676527810605 0.0769610411361284 2.91235066461494 2.54160199346455 2.56494935746154 4.30811095172371 4.44382703557933 7.13249755166004 0 0.792992515529661 0.559615787935423 +pka 3.79548918917219 0.00995033085316809 2.99573227355399 2.54160199346455 2.61006979274201 0.982078472412158 2.30258509299405 5.91889385427315 0 0.86288995514704 2.04122032885964 +pka 3.85014760171006 0 3.07731226054641 4.78749174278205 2.36085400111802 1.07158361628019 2.82137888640921 5.54126354515843 0.518793793415168 1.54756250871601 2.25758772706331 +pka 3.35340671782581 0.871293365943419 2.39789527279837 5.12396397940326 2.91235066461494 3.38099467434464 3.6609942506244 6.00881318544259 0 0.00995033085316809 0.438254930931155 +pka 3.58073729549423 0.963174317773006 3.39114704580865 3.37416870927424 3.3357695763397 3.80443779474821 3.96651119071222 6.68336094576627 0.879626747502564 5.85507192220243 1.16938135955632 +pka 3.12236492448736 0.774727167552368 2.27521389619791 5.64897423816121 2.64617479738412 2.50143595173921 3.03013370027132 5.88332238848828 0.285178942233662 2.88480071284671 0.182321556793955 +pka 3.85862222870103 0.756121979721334 2.9391619220656 2.97552956623647 1.88858365386359 2.89591193827178 3.10458667846607 5.68357976733868 1.05082162483176 0 0.165514438477573 +pka 3.71357206670431 0.60431596685333 3.2188758248682 2.9338568698359 3.07731226054641 3.92197333628131 4.01096295328305 6.51174532964473 0.792992515529661 1.10525683138678 0 +pka 3.24649099190117 0.783901543828409 3.00568260440716 3.13983261752775 2.90690105984738 2.65324196460721 3.12236492448736 5.6937321388027 0 0.00995033085316809 0.86288995514704 +pka 3.50855589998265 1.07840958135059 2.80336038090653 4.54223038621422 3.03013370027132 3.96651119071222 4.0926765051214 7.10578612948127 1.21491274436427 4.13676527810605 1.4036429994545 +pka 0.0198026272961797 0.756121979721334 3.51749783735832 5.09375020080676 4.01998014693324 1.87946504964716 2.53369681395743 6.4393503711001 0.27002713721306 3.23867845216438 0.0861776962410524 +pka 3.02042488614436 2.37954613413017 2.77881927199042 4.70953020131233 2.88480071284671 2.99573227355399 3.23867845216438 5.75574221358691 0 4.56954300834494 0.837247524533702 +pka 3.66867674679642 0.00995033085316809 2.85070650150373 4.91998092582813 3.23080439573347 2.05027016437956 2.72785282839839 5.61312810638807 1.33236601909433 4.61512051684126 0.73716406597672 +pka 3.44361809754611 0.412109650826833 3.39114704580865 3.63495111208838 3.12236492448736 2.94968833505258 2.85070650150373 5.45958551414416 0 4.69134788222914 0.322083499169113 +pka 3.94931879017184 0.00995033085316809 3.40119738166216 3.56104608260405 3.39114704580865 3.58073729549423 3.87743156065853 6.47543271670409 0 3.34638914516716 0.542324290825362 +pka 3.67882911826043 0.215111379616945 2.94968833505258 3.2188758248682 2.86789890204411 2.99573227355399 3.52636052461616 5.92692602597041 0 2.64617479738412 0.398776119957368 +pka 3.85014760171006 0.494696241836107 3.15700042115011 2.23108909128898 1.67335123817775 4.17284762371004 4.22683374526818 6.85329909318608 0 1.08856195281461 0.314810739840034 +pka 3.56953269648137 0.122217632724249 2.90690105984738 4.91998092582813 3.56104608260405 2.80336038090653 3.14845336057165 5.88332238848828 1.49290409617815 5.05624580534831 0.425267735404344 +pka 4.20916023665068 3.08648663682246 2.18605127673809 5.32300997913841 3.55248682920838 3.35340671782581 3.55248682920838 5.62040086571715 1.13462272619114 4.56017282005736 1.21491274436427 +pka 3.10458667846607 1.20597080698861 3.55248682920838 5.6021188208797 4.01096295328305 2.45958884180371 3.4626060097908 6.34035930372775 1.09861228866811 0 0.476234178996372 +pka 4.93447393313069 1.53901544813755 3.42751468997953 4.00186370942794 4.43438186500781 4.0926765051214 4.23700086262362 6.94408720822953 0 5.03695260241363 0.542324290825362 +pka 3.73289633953071 0.951657875711446 3.41772668361337 2.86789890204411 2.97552956623647 0.982078472412158 2.32238772029023 6.94408720822953 0 0 0 +pka 1.62727783056243 0.27002713721306 2.89591193827178 4.76217393479776 2.99573227355399 1.98787434815435 2.18605127673809 5.8636311755981 0 2.94968833505258 0.371563556432483 +pka 2.86789890204411 2.36085400111802 2.55722731136763 4.94875989037817 3.74242022104197 2.09556092355972 2.24812890719799 5.66642668811243 2.55722731136763 1.2947271675944 0.672944473242426 +pka 3.64283551561253 1.30291275218084 2.91235066461494 4.41642806139121 2.9338568698359 2.85070650150373 4.28082412916472 7.83399634170946 0 2.03339760317843 0.173953307123438 +pka 3.60549784517489 0.385262400790645 2.71469474382088 4.40671924726425 3.52636052461616 0.89199803930511 1.92424865227413 5.54126354515843 0.0392207131532813 0 1.16002091679675 +pka 3.89385903480047 0.62057648772511 0.398776119957368 2.9391619220656 2.05027016437956 2.75366071235426 2.80336038090653 5.73009978297357 1.53901544813755 0.00995033085316809 0.693147180559945 +pka 4.07414185490458 0.593326845277734 2.54160199346455 5.44241771052179 3.56104608260405 2.23108909128898 2.61739583283408 5.71042701737487 4.14630430115281 7.83399634170946 2.53369681395743 +pka 3.79548918917219 0 3.17387845893747 3.88567903008854 1.61938824328727 2.15871472257434 3.23867845216438 6.31354804627709 0.385262400790645 2.20386912005489 1.51072193949494 +pka 3.20274644293832 1.90657514365664 3.31054301339402 3.02042488614436 0.00995033085316809 3.56953269648137 3.62434093297637 5.76519110278484 0.810930216216329 5.21493575760899 1.26694760348732 +pka 1.86252854011626 0.667829372575655 2.82137888640921 3.18221184049661 3.14845336057165 2.24812890719799 2.91235066461494 7.66340766489348 0.854415328156068 0 0.0582689081239758 +pka 3.4626060097908 0.431782416425538 2.71469474382088 4.96284463025991 1.95160817016995 2.47653840011748 2.85070650150373 5.79301360838414 0.727548607277278 0 0.0582689081239758 +pka 2.25758772706331 0.0582689081239758 3.29953372788566 4.3528552573736 3.09557760852371 2.55722731136763 2.85070650150373 5.90808293816893 0 0 0.0582689081239758 +pka 0.667829372575655 0.0582689081239758 3.06805293513362 3.59731226058845 2.92316158071916 3.17387845893747 3.25424296870549 6.00881318544259 0 0 0.19062035960865 +pka 4.5152454784601 0.727548607277278 2.64617479738412 2.66025953726586 1.96009478404727 2.64617479738412 3.81330703248899 6.62007320653036 0 0.0861776962410524 0 +pka 4.04830062372069 0.765467842139571 2.91235066461494 4.12874598893943 3.31054301339402 2.28442112236637 2.23108909128898 5.63121178182137 0 1.24990173621434 0 +pka 3.70622809244855 1.67335123817775 2.60268968544438 2.91235066461494 2.76000994003292 3.49953328238302 3.7864597824528 6.87212810133899 2.86789890204411 5.73979291217923 3.41772668361337 +pka 5.03043792139244 0.609765571620894 3.24649099190117 2.97552956623647 2.79116510781272 2.51769647261099 3.05870707271538 5.8111409929767 0.845868267577609 3.32862668882732 0.810930216216329 +pka 3.32862668882732 0.00995033085316809 3.21084365317094 4.59612944133594 3.45315712059287 2.50143595173921 2.91235066461494 6.14418563412565 0.982078472412158 5.16478597392351 0.470003629245736 +pka 3.77734810210154 0 2.53369681395743 2.83321334405622 3.2188758248682 3.58073729549423 3.92197333628131 6.67329796776765 0 5.2257466737132 0.314810739840034 +pka 3.10458667846607 1.07158361628019 3.80443779474821 5.10594547390058 4.41642806139121 2.68102152871429 3.21084365317094 5.84643877505772 0 2.98568193770049 1.34807314829969 +pka 3.63495111208838 1.03318448334565 2.61006979274201 5.18738580584075 2.77881927199042 2.01490302054226 3.9926809084456 6.40357419793482 0 0 0.99694863489161 +pka 3.93963817246112 0.819779831493311 2.77881927199042 4.19116874685764 2.37954613413017 3.6163087612791 3.96651119071222 7.0335064842877 0.451075619360217 4.40671924726425 1.30291275218084 +pka 3.36384159511839 0 3.03013370027132 5.12396397940326 3.2188758248682 2.70136121295141 3.65065824129374 7.01571242048723 0 2.66025953726586 0.631271776841858 +pka 4.22683374526818 2.00552585872967 3.2846635654062 3.29953372788566 2.14124194258528 3.34638914516716 3.42751468997953 5.73979291217923 2.01490302054226 5.48479693349065 0.371563556432483 +pka 3.93963817246112 1.51951320490611 2.4932054526027 3.37416870927424 2.77881927199042 2.92316158071916 3.41772668361337 5.94542060860658 0 5.27811465923052 1.15057202759882 +pka 3.53514535417189 0.350656871613169 2.40694510831829 4.98360662170834 2.7408400239252 4.00186370942794 4.30811095172371 7.45645455517621 1.59127394180643 6.18001665365257 0.412109650826833 +pka 3.64283551561253 0.828551817566148 3.58073729549423 3.3178157727231 2.92316158071916 2.79728133483015 3.26575941076705 6.04500531403601 0.854415328156068 0 0.398776119957368 +pka 3.3178157727231 0.207014169384326 2.9391619220656 5.47646355193151 3.38099467434464 4.47960696301275 4.70048036579242 7.65444322647011 1.08856195281461 4.15575319035074 0.0582689081239758 +pka 3.24649099190117 0.943905898907128 2.97552956623647 2.79728133483015 1.34025042261848 2.14124194258528 3.04927304048202 7.04228617193974 0 0 0.609765571620894 +pka 3.79548918917219 0.62057648772511 3.85014760171006 5.71042701737487 4.77068462446567 2.40694510831829 2.85070650150373 5.7037824746562 0 3.92197333628131 0.470003629245736 +pka 3.9759363311718 0.703097511413113 2.43361335540045 4.56017282005736 1.45628673293993 3.56953269648137 3.92986292355648 6.50279004591562 2.1770218700187 6.25190388316589 1.42069578783722 +pka 3.21084365317094 0.139761942375159 3.50855589998265 5.61312810638807 4.28082412916472 2.36085400111802 3.10458667846607 5.73979291217923 0 0.494696241836107 1.6094379124341 +pka 3.4626060097908 1.07158361628019 3.02042488614436 5.8636311755981 4.11903717481247 2.33214389523559 2.2935443483419 5.92692602597041 0 5.17048399503815 0 +pka 3.35340671782581 0.350656871613169 2.96010509591084 2.10413415427021 2.18605127673809 3.67882911826043 4.00186370942794 6.53958595561767 0 2.33214389523559 0.385262400790645 +pka 3.63495111208838 0.500775287912489 3.15700042115011 5.25227342804663 4.58700621536042 3.85862222870103 4.07414185490458 7.15070145759253 0 2.28442112236637 0.00995033085316809 +pka 4.71849887129509 2.06812778177956 3.19458313229916 3.68887945411394 2.97552956623647 1.870262530716 2.45958884180371 6.02586597382531 0.22314355131421 0 1.5830939370945 +pka 4.90527477843843 0 1.51951320490611 5.82008293035236 3.81330703248899 3.98527346716774 4.03777421073371 7.01571242048723 0 1.4036429994545 0.512823626428664 +pka 4.00186370942794 1.07840958135059 3.62434093297637 5.57594910314632 3.9926809084456 2.30258509299405 2.50959926237837 5.6937321388027 0.2390169004705 6.69208374250663 1.06125650212434 +pka 2.75366071235426 0.837247524533702 2.98568193770049 3.62434093297637 3.42751468997953 2.40694510831829 2.80336038090653 5.83773044716594 0 0.00995033085316809 0.262364264467491 +pka 2.70805020110221 0.00995033085316809 3.76815263500844 4.23700086262362 3.90399083373088 2.53369681395743 2.79728133483015 5.48479693349065 2.10413415427021 5.44241771052179 0.385262400790645 +pka 3.4904285153901 1.67335123817775 2.77258872223978 5.51342874616498 3.72328088083127 4.07414185490458 4.48863636973214 6.91671502035361 0.398776119957368 0 0.165514438477573 +pka 1.89761985992753 1.22377543162212 2.98568193770049 3.52636052461616 2.484906649788 3.15700042115011 3.40119738166216 5.85507192220243 0 1.98787434815435 0.476234178996372 +pka 3.64283551561253 1.43031124653666 2.80336038090653 2.77258872223978 3.13113691056019 2.3887627892351 2.7408400239252 5.67675380226828 0.559615787935423 0 0.398776119957368 +pka 3.55248682920838 1.26694760348732 2.27521389619791 4.98360662170834 3.41772668361337 1.870262530716 2.64617479738412 5.76519110278484 1.02604159583327 3.12236492448736 0.398776119957368 +pka 3.42751468997953 0.00995033085316809 3.13113691056019 4.33598269617247 3.34638914516716 1.55603713570699 2.31253542384721 6.55677835615804 0.871293365943419 3.44361809754611 0 +pka 3.65065824129374 0.3293037471426 3.4626060097908 5.65599181081985 4.05698877567833 2.51769647261099 2.85070650150373 5.99146454710798 0 1.99741770620125 0.0953101798043249 +pka 3.45315712059287 0.00995033085316809 2.76000994003292 4.95582705760126 3.88567903008854 2.484906649788 2.77881927199042 5.67675380226828 0 0 0.3293037471426 +pka 3.7864597824528 1.08856195281461 2.85070650150373 3.06805293513362 2.24812890719799 3.00568260440716 3.62434093297637 7.0604763659998 0 1.31372366828506 0 +pka 3.85862222870103 0.22314355131421 3.07731226054641 2.67414864942653 1.69009581545155 2.19499988231411 2.80336038090653 5.78382518232974 0 0 0.73716406597672 +pka 3.49953328238302 0 2.4423470353692 6.02586597382531 3.92197333628131 2.70805020110221 3.24649099190117 5.82894561761021 0 2.36085400111802 0.746687947487975 +pka 3.04927304048202 0 2.51769647261099 4.46129981556839 3.19458313229916 3.31054301339402 3.60549784517489 5.95324333428778 0 0 0.0676586484738149 +pka 3.27336401015227 1.43031124653666 2.18605127673809 5.68357976733868 3.76815263500844 1.79840401194672 3.07731226054641 6.16961073249146 0 5.37063802812766 0.0392207131532813 +pka 3.49953328238302 0.542324290825362 3.32862668882732 3.2846635654062 2.86220088092947 1.96990565461153 2.37954613413017 5.7037824746562 0 2.71469474382088 0.27763173659828 +pka 3.77734810210154 1.13462272619114 3.74242022104197 3.71357206670431 3.85014760171006 2.14124194258528 2.60268968544438 5.75574221358691 0 0.00995033085316809 0.86288995514704 +pka 3.63495111208838 1.6094379124341 3.39114704580865 3.72328088083127 2.89591193827178 2.23108909128898 2.45958884180371 5.75574221358691 0.27002713721306 0 1.7263316639056 +pka 2.90690105984738 0.00995033085316809 2.99573227355399 3.23080439573347 1.55603713570699 4.26267987704132 4.47049528266149 7.0335064842877 0 2.3887627892351 0.56531380905006 +pka 3.77734810210154 0.27002713721306 4.10098910494077 5.39816270151775 3.4626060097908 1.86252854011626 2.36085400111802 5.73979291217923 0 1.23256026117785 0.783901543828409 +pka 3.67882911826043 0.451075619360217 2.81540871942271 4.99043258677874 3.71357206670431 2.10413415427021 2.43361335540045 5.89989735358249 0.207014169384326 2.61739583283408 1.49290409617815 +pka 3.98527346716774 0.0861776962410524 3.00568260440716 2.90690105984738 3.4904285153901 1.94304891677428 2.67414864942653 5.68357976733868 0 0 0.783901543828409 +pka 3.75887182593397 1.33236601909433 2.30258509299405 2.9704144655697 2.53369681395743 3.74242022104197 3.68887945411394 5.43372200355424 0 0.3293037471426 0.636576829071551 +pka 3.59731226058845 0.27002713721306 2.91235066461494 5.20948615284142 3.38099467434464 3.9759363311718 4.47960696301275 7.3664451483276 2.27521389619791 4.23700086262362 0.657520002916794 +pka 3.6163087612791 0 2.55722731136763 5.45958551414416 2.81540871942271 2.36085400111802 2.72785282839839 6.07993319509559 0 2.2213750375685 0 +pka 2.98568193770049 1.45628673293993 2.71469474382088 3.40119738166216 1.870262530716 1.36609165380237 2.23108909128898 6.91671502035361 0.837247524533702 1.50185270175416 0.048790164169432 +pka 3.44361809754611 0.609765571620894 2.89591193827178 4.52396013056255 2.56494935746154 2.21266038546606 2.79728133483015 5.6937321388027 0 1.14103300455206 0.53062825106217 +pka 3.50855589998265 1.07840958135059 3.76815263500844 5.73009978297357 4.45201900649392 2.00552585872967 2.47653840011748 5.63835466933375 2.58021682959233 5.62040086571715 0.765467842139571 +pka 3.80443779474821 2.46809953147162 3.50855589998265 3.09557760852371 3.09557760852371 2.56494935746154 2.76000994003292 5.8111409929767 1.78170913337455 1.92424865227413 0.928219302739429 +pka 3.2846635654062 0.00995033085316809 3.10458667846607 3.91202300542815 2.58021682959233 2.9391619220656 2.92316158071916 5.8636311755981 0 4.254193263164 0.231111720963387 +pka 3.98527346716774 0.19062035960865 2.70805020110221 4.60517018598809 3.79548918917219 4.04830062372069 4.20916023665068 7.51914995766982 1.23256026117785 1.9154509415706 0.0582689081239758 +pka 3.27336401015227 1.25846098961001 3.45315712059287 3.3357695763397 2.9391619220656 2.82137888640921 3.36384159511839 5.95324333428778 0 1.13462272619114 0.438254930931155 +pka 3.98527346716774 0.647103242058538 3.35340671782581 3.12236492448736 2.2935443483419 2.82137888640921 2.80336038090653 5.74620319054015 0 0 0.343589704390077 +pka 3.69635146895264 0.00995033085316809 2.60268968544438 5.10594547390058 3.35340671782581 1.43983512804792 2.88480071284671 5.77455154554441 0.0676586484738149 2.84490938381941 0.647103242058538 +pka 2.26695791535089 0.559615787935423 2.9391619220656 3.24649099190117 0.451075619360217 3.98527346716774 4.00186370942794 5.83773044716594 0 0.647103242058538 0.0392207131532813 +pka 3.21084365317094 0.774727167552368 3.73289633953071 5.14749447681345 3.88567903008854 3.43720781918519 3.6609942506244 6.01615715969835 0 4.84418708645859 0.322083499169113 +pka 3.55248682920838 0 3.3178157727231 4.23700086262362 3.43720781918519 3.23080439573347 3.56104608260405 5.87211778947542 0 1.33236601909433 0.322083499169113 +pka 0.173953307123438 0.60431596685333 4.20916023665068 5.23644196282995 5.03695260241363 3.55248682920838 3.60549784517489 6.07993319509559 0.231111720963387 1.89761985992753 0.56531380905006 +pka 2.88480071284671 1.9154509415706 3.17387845893747 3.14845336057165 2.72785282839839 3.31054301339402 3.77734810210154 7.10578612948127 0 0 0.0769610411361284 +pka 3.68887945411394 0.2390169004705 1.71739505393919 5.24174701505964 3.21084365317094 2.41591377830105 2.80336038090653 5.98141421125448 0 2.50143595173921 0.871293365943419 +pka 0 0.431782416425538 3.3178157727231 3.14845336057165 2.88480071284671 4.48863636973214 4.7361984483945 7.75319426988434 0 0 0.322083499169113 +pka 3.59731226058845 0 3.8308129500026 2.70805020110221 4.20916023665068 2.04122032885964 3.53514535417189 6.45833828334479 0 0.00995033085316809 0.425267735404344 +pka 3.56104608260405 0 3.26575941076705 3.69635146895264 2.9704144655697 3.06805293513362 2.96010509591084 5.82894561761021 1.80828877117927 4.22683374526818 2.68784749378469 +pka 4.11903717481247 1.34025042261848 3.03974915897077 3.48124008933569 2.23964529322017 3.06805293513362 3.49953328238302 6.11589212548303 0.451075619360217 2.53369681395743 0.703097511413113 +pka 3.90399083373088 0 3.29953372788566 2.90690105984738 2.4932054526027 2.67414864942653 2.9338568698359 5.55682806169954 2.21266038546606 6.42162226780652 1.12492959698548 +pka 3.90399083373088 0.476234178996372 3.3357695763397 3.07731226054641 2.46809953147162 4.20916023665068 4.28082412916472 6.95272864462487 0 5.59471137960184 1.14103300455206 +pka 3.6163087612791 0.104360015324243 4.02891675689965 4.44382703557933 4.57779898919196 2.68784749378469 3.07731226054641 5.53338948872752 0 2.9391619220656 0.322083499169113 +pka 3.47196645255036 0.165514438477573 2.72785282839839 2.82137888640921 2.96010509591084 2.04122032885964 2.58021682959233 5.72031177660741 0 0.802001585472027 0 +pka 4.28082412916472 1.10525683138678 3.63495111208838 2.36085400111802 4.26267987704132 1.16938135955632 2.34180580614733 5.65599181081985 0 0.00995033085316809 1.07840958135059 +pka 2.77258872223978 1.7630170003624 2.87919845729804 4.19116874685764 3.80443779474821 2.61739583283408 2.81540871942271 5.73009978297357 0 0.00995033085316809 0.00995033085316809 +pka 3.64283551561253 0.963174317773006 2.19499988231411 5.43372200355424 3.20274644293832 1.7263316639056 2.66025953726586 6.00881318544259 0 2.26695791535089 0.300104592450338 +pka 4.49758497530815 0.165514438477573 3.43720781918519 4.00186370942794 2.30258509299405 2.34180580614733 2.31253542384721 5.76519110278484 0.500775287912489 5.54126354515843 0.431782416425538 +pka 3.72328088083127 0.756121979721334 3.92986292355648 4.42484663185681 1.7630170003624 3.26575941076705 3.52636052461616 6.93439720992856 0 1.07158361628019 0.2390169004705 +pka 3.49953328238302 0.22314355131421 3.16547504814109 3.45315712059287 3.09557760852371 2.23964529322017 2.53369681395743 5.52146091786225 0 0 0.182321556793955 +pka 3.54385368206368 0.3293037471426 2.20386912005489 4.69134788222914 3.48124008933569 2.51769647261099 2.36085400111802 5.77455154554441 0 0.727548607277278 0.703097511413113 +pka 3.7864597824528 0 2.88480071284671 4.5152454784601 3.56953269648137 2.88480071284671 3.24649099190117 5.7037824746562 0 0.871293365943419 0.131028262406404 +pka 3.54385368206368 1.87946504964716 3.31054301339402 2.80336038090653 0.00995033085316809 1.98787434815435 2.90690105984738 5.74620319054015 2.97552956623647 1.49290409617815 2.45958884180371 +pka 3.18221184049661 0.73716406597672 3.52636052461616 5.84643877505772 4.42484663185681 4.53367418428302 4.7361984483945 7.12367278520461 2.14943391349987 0 0.0676586484738149 +pka 4.11087386417331 0.792992515529661 3.75185425327532 5.4249500174814 4.58700621536042 1.39376637595859 2.61739583283408 5.37989735354046 1.75440368268429 3.29212628660779 1.24990173621434 +pka 3.74242022104197 0.56531380905006 2.89591193827178 4.15575319035074 2.7408400239252 1.9154509415706 2.52572864430826 5.84643877505772 0 1.73518911773966 0.113328685307003 +pka 3.67882911826043 1.30291275218084 4.3528552573736 5.53338948872752 4.38949864951258 3.86702563949741 4.11087386417331 6.58340922215876 0 0 0.0198026272961797 +pka 3.88567903008854 2.39789527279837 2.92316158071916 5.51342874616498 3.87743156065853 2.37024374146786 2.71469474382088 5.45958551414416 0 0 0.104360015324243 +pka 3.9926809084456 0 2.89591193827178 3.68887945411394 2.41591377830105 3.72328088083127 3.9759363311718 6.53958595561767 2.31253542384721 6.31354804627709 2.36085400111802 +pka 3.31054301339402 0.00995033085316809 2.79116510781272 4.77912349311153 3.29212628660779 1.73518911773966 2.35137525716348 6.09807428216624 1.708377860289 4.72738781871234 0.62057648772511 +pka 3.08648663682246 0.00995033085316809 3.17387845893747 2.87919845729804 2.39789527279837 2.86220088092947 3.12236492448736 5.82894561761021 2.03339760317843 4.74493212836325 0.22314355131421 +pka 3.68887945411394 0.970778917158225 3.23867845216438 4.61512051684126 2.70805020110221 2.16791018966744 2.58021682959233 5.54907608489522 0 5.2257466737132 0 +pka 3.6163087612791 0.802001585472027 2.23108909128898 2.87919845729804 2.53369681395743 1.24990173621434 2.83321334405622 5.90808293816893 0.254642218373581 0 0.19062035960865 +pka 3.86702563949741 1.31372366828506 0.819779831493311 2.84490938381941 3.75887182593397 2.88480071284671 3.07731226054641 6.01615715969835 0 0.300104592450338 1.39376637595859 +pka 3.67882911826043 0.425267735404344 2.90690105984738 4.21803603456465 2.86789890204411 2.20386912005489 2.30258509299405 5.52146091786225 0 2.36085400111802 0 +pka 1.26694760348732 0 2.94968833505258 0.451075619360217 1.8531680973567 2.51769647261099 2.71469474382088 5.6937321388027 0 0 0.62057648772511 +pka 4.47960696301275 0.27002713721306 2.9338568698359 4.53367418428302 3.96651119071222 2.21266038546606 2.72785282839839 5.96357934361845 0.631271776841858 0 0.378436435720245 +pka 2.98568193770049 1.25846098961001 3.29953372788566 3.77734810210154 2.15871472257434 2.76000994003292 4.42484663185681 7.07834157955767 1.54756250871601 3.27336401015227 1.79840401194672 +pka 2.9391619220656 1.25846098961001 2.85070650150373 5.23644196282995 3.74242022104197 2.67414864942653 2.89591193827178 5.89989735358249 0 0 0.0295588022415444 +pka 3.54385368206368 1.4036429994545 3.11351530921037 4.60517018598809 3.73289633953071 3.71357206670431 4.13676527810605 7.0335064842877 0 0.936093359170335 0 +pka 3.92197333628131 2.52572864430826 2.89591193827178 3.14845336057165 2.70805020110221 4.254193263164 4.43438186500781 7.38461038317697 2.18605127673809 4.14630430115281 2.65324196460721 +pka 3.56104608260405 0 3.23080439573347 3.15700042115011 2.56494935746154 3.14845336057165 2.90690105984738 5.72031177660741 0 2.88480071284671 0 +pka 3.29953372788566 0.104360015324243 3.31054301339402 3.58073729549423 2.64617479738412 3.01553490085017 3.10458667846607 5.6937321388027 0 2.73436750941958 0.398776119957368 +pka 4.0926765051214 0.00995033085316809 3.72328088083127 5.73979291217923 4.54223038621422 2.23964529322017 2.50959926237837 5.68357976733868 0 6.09807428216624 0.783901543828409 +pka 2.66025953726586 0.56531380905006 3.47196645255036 5.4249500174814 2.97552956623647 2.89591193827178 3.38099467434464 6.60258789218934 0 1.96990565461153 0.89199803930511 +pka 3.34638914516716 0.746687947487975 0 1.80828877117927 3.41772668361337 2.92316158071916 3.09557760852371 5.59471137960184 3.04927304048202 7.89729647259588 1.79009141212736 +pka 3.7864597824528 0.636576829071551 3.40119738166216 3.67882911826043 3.04927304048202 0.916290731874155 2.2213750375685 5.63121178182137 1.2947271675944 5.73009978297357 2.06812778177956 +pka 3.76815263500844 0.476234178996372 2.57261223020711 4.78749174278205 3.19458313229916 1.55603713570699 1.67335123817775 4.38077585277223 0 0.00995033085316809 0.457424847038875 +pka 3.69635146895264 0.970778917158225 2.61739583283408 4.70953020131233 3.32862668882732 2.58776403522771 2.85070650150373 5.78382518232974 0 0 0 +pka 5.17048399503815 0.00995033085316809 3.43720781918519 3.56104608260405 3.17387845893747 3.07731226054641 3.19458313229916 5.72031177660741 0 0.00995033085316809 0.215111379616945 +pka 3.25424296870549 0.457424847038875 1.89761985992753 4.99043258677874 2.84490938381941 2.32238772029023 2.56494935746154 5.62040086571715 0 0.425267735404344 0 +pka 3.08648663682246 1.28647402583768 3.16547504814109 3.29212628660779 1.97823903617067 4.07414185490458 4.50645421304893 7.25841215059531 0 1.66392609771817 0.518793793415168 +pka 4.44382703557933 0 2.88480071284671 5.08140436498446 2.51769647261099 2.36085400111802 3.00568260440716 5.73009978297357 1.21491274436427 5.82894561761021 2.67414864942653 +pka 3.52636052461616 0.667829372575655 3.32862668882732 3.42751468997953 3.40784192438082 1.4655675420144 1.79840401194672 4.89034912822175 0 3.9759363311718 0 +pka 3.94931879017184 0 2.67414864942653 4.99043258677874 3.53514535417189 1.99741770620125 2.68784749378469 5.61312810638807 0.727548607277278 3.70622809244855 1.69927861643389 +pka 3.4626060097908 0.963174317773006 3.00568260440716 3.25424296870549 2.35137525716348 3.13113691056019 3.49953328238302 5.73979291217923 0 0 0.182321556793955 +pka 3.6609942506244 0.285178942233662 2.31253542384721 3.02042488614436 2.06812778177956 4.24563400976833 4.39814601655377 7.19593722647557 0 0 0.936093359170335 +pka 3.81330703248899 0 3.18221184049661 3.59731226058845 2.76000994003292 1.54756250871601 3.14845336057165 5.84643877505772 1.74571553072665 5.52146091786225 0.470003629245736 +pka 3.4626060097908 0.99694863489161 2.61739583283408 5.27299955856375 3.00568260440716 2.77881927199042 2.82137888640921 5.77455154554441 0 2.46809953147162 0.982078472412158 +pka 3.89385903480047 2.51769647261099 3.4904285153901 3.32862668882732 3.12236492448736 2.45958884180371 3.64283551561253 7.04228617193974 0 0.936093359170335 0 +pka 3.14845336057165 1.52822785700856 2.87919845729804 3.09557760852371 2.70136121295141 3.88567903008854 4.20916023665068 6.82654522355659 0 2.28442112236637 0 +pka 3.3357695763397 1.50185270175416 2.9338568698359 3.00568260440716 2.32238772029023 1.12492959698548 3.08648663682246 6.59304453414244 0 0.559615787935423 0.693147180559945 +pka 3.54385368206368 1.96009478404727 1.74571553072665 3.03013370027132 2.71469474382088 3.47196645255036 3.72328088083127 6.70073110954781 3.79548918917219 7.23128700432762 0.89199803930511 +pka 3.41772668361337 0.00995033085316809 1.98787434815435 5.15329159449778 3.13113691056019 1.88858365386359 2.61739583283408 6.79122146272619 0 0 0.500775287912489 diff --git a/datasets/sachs/v1/sachs-v1.tar.gz b/datasets/sachs/v1/sachs-v1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..617266c8dd2278c083626ae551dd1f617d58930a GIT binary patch literal 270786 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%0AfGT3o3s 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

_Vf577)3 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 ProblemDef -> solve(...)`` lifecycle. After +a usable solution has been obtained, ``predict(...)`` applies the fixed model +to new externally specified conditions and ``evaluate(...)`` compares those +predictions with supplied measurements. ``LinearDAGDiscovery`` also exposes +``residuals(...)`` for local structural-equation diagnostics: its forward loss +and local loss have different semantics. ``CellNOptDAG`` evaluates its fixed +selected reactions by deterministic Boolean propagation. Most other +``Method`` subclasses remain explanatory optimization methods; the base class +does not expose an sklearn-style fit/predict API. + .. autosummary:: :toctree: generated/ CarnivalFlow CarnivalILP + signaling.CellNOptDAG BidirectionalPHONEMeS PHONEMeS compute_phonemes_scores milp_carnival - signaling.cellnopt_ilp.cellnoptILP + +CellNOpt visualization +~~~~~~~~~~~~~~~~~~~~~~ + +CellNOpt plotting utilities use the standard CORNETO graph renderers for +network views and return Matplotlib figure/axes objects for data-fit views. + +.. autosummary:: + :toctree: generated/ + + signaling.plot_cellnopt_model + signaling.plot_cellnopt_fit + +Causal discovery +---------------- + +``LinearDAGDiscovery`` infers a sparse, acyclic linear structural model from +continuous observational and perfect-intervention measurements. Candidate +interactions come from a directed prior-knowledge network, and commodity flows +ensure that selected edges are supported by intervention-to-response paths. + +.. autosummary:: + :toctree: generated/ + + LinearDAGDiscovery + +CellNOpt and AnnNet +~~~~~~~~~~~~~~~~~~~ + +These helpers keep the signed network, perturbation conditions, and fitted +CellNOptDAG results in one AnnNet object. + +.. autosummary:: + :toctree: generated/ + + signaling.add_cellnopt_conditions + signaling.build_cellnopt_from_annnet + signaling.add_cellnopt_results Metabolism ---------- diff --git a/docs/api/index.rst b/docs/api/index.rst index a30a0b02d..8b88f1129 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -31,6 +31,7 @@ as raw specifications may not always provide sufficient context. corneto.backend corneto.data + corneto.datasets corneto.io corneto.graph corneto.methods diff --git a/docs/custom-index.html b/docs/custom-index.html deleted file mode 100644 index d42cb2d23..000000000 --- a/docs/custom-index.html +++ /dev/null @@ -1,431 +0,0 @@ - - - - - - CORNETO: Unified network inference from omics data - - - - - - - - - - - - - - - - - -

- -
- Corneto Logo -

CORNETO

-

Unified knowledge-driven network inference from omics data

-
- -
- - -
- -

- Support us with a ⭐ on GitHub and help grow the community! -

- - ★ Star (…) - -
-
- - - - - - - - - - - - - - - - diff --git a/docs/guide/causal/index.md b/docs/guide/causal/index.md new file mode 100644 index 000000000..0b0da9318 --- /dev/null +++ b/docs/guide/causal/index.md @@ -0,0 +1,12 @@ +# Causal and structural modeling + +These methods combine observational or intervention data with directed prior +knowledge to fit and analyze structural models. They are applicable beyond +signaling, including gene regulatory networks and other directed biological +systems. + +```{toctree} +:maxdepth: 3 + +linear-dag-discovery.ipynb +``` diff --git a/docs/guide/causal/linear-dag-discovery.ipynb b/docs/guide/causal/linear-dag-discovery.ipynb new file mode 100644 index 000000000..bd9a28e86 --- /dev/null +++ b/docs/guide/causal/linear-dag-discovery.ipynb @@ -0,0 +1,2423 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dc272ccb", + "metadata": { + "papermill": { + "duration": 0.008932, + "end_time": "2026-09-21T22:58:59.522800", + "exception": false, + "start_time": "2026-09-21T22:58:59.513868", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Discovering a linear causal signaling network from perturbation data\n", + "\n", + "Perturbation experiments often measure continuous molecular responses: log-fold changes in phosphoproteins, reporter intensities, or expression signatures after stimulating or inhibiting a pathway component.\n", + "\n", + "This guide starts from one question:\n", + "\n", + "> **Which directed interactions from a prior-knowledge network produce a linear model that fits the measured responses across observational and intervention conditions?**\n", + "\n", + "`LinearDAGDiscovery` selects a subset of edges from a directed prior-knowledge network (PKN), requires the selected graph to contain no directed cycles, and fits one linear equation for each measured vertex. Each selected edge has one coefficient that is shared across all samples. A hard intervention removes the equation for its target in that sample; a shift intervention keeps the equation and adds a known or fitted offset.\n", + "\n", + "As many other methods implemented in CORNETO, the optimization uses auxiliary flow variables for connectivity. Every selected edge must belong to at least one directed route from an intervened vertex to a measured response. These variables enforce connectivity only; they are not biochemical fluxes, effect sizes, or confidence scores.\n", + "\n", + "CORNETO calls each row in `Data` a **sample**. A sample may be one bulk experimental condition or one cell. The intervention metadata is attached to the measured target within each sample, as shown below." + ] + }, + { + "cell_type": "markdown", + "id": "45113bfc", + "metadata": { + "papermill": { + "duration": 0.003684, + "end_time": "2026-09-21T22:58:59.532890", + "exception": false, + "start_time": "2026-09-21T22:58:59.529206", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## When is this method useful?\n", + "\n", + "| Experimental setting | Interpretation |\n", + "|---|---|\n", + "| Continuous molecular measurements | Values may be signed and need not be discretized |\n", + "| Several perturbation conditions | Perturbations help orient otherwise ambiguous associations |\n", + "| Directed PKN with alternatives or feedback | The method chooses a subset with no directed cycles |\n", + "| One linear relationship shared across samples | Each edge coefficient is the same in every sample or condition |\n", + "\n", + "Use `CellNOptDAG` instead when you have a more mechanistic prior knowledge of a pathway from perturbations to readouts or phenotypes\n", + "and you want to use boolean logic.\n", + "\n", + "## What CORNETO adds\n", + "\n", + "Many causal-discovery methods are run on a dataset and return a DAG. CORNETO instead uses the graph as part of a model of the experiment. In `LinearDAGDiscovery`, the linear equations fit the measured responses, the PKN defines which biological interactions are possible, and the intervention annotations specify which equations are modified by the experiment. The result therefore contains both a network and a fitted explanation of the experimental data.\n", + "\n", + "Prior knowledge does not have to stop at the initial PKN. Before solving, users can add assumptions such as requiring or forbidding an interaction, constraining its sign or coefficient, or limiting which mechanisms may be selected. The complete model is then fitted again under that hypothesis. Comparing the original and constrained models shows whether the hypothesis is compatible with the data, how much it changes held-out prediction, and which other interactions must change to accommodate it.\n", + "\n", + "This modeling flexibility is the main reason to use CORNETO instead. The trade-off is computational cost: enforcing graph structure, interventions, prior knowledge, and additional constraints together requires mixed-integer optimization. It is worthwhile when these modeling choices are central to the analysis; if the goal is only to obtain a graph quickly, a more scalable causal-discovery method may be preferable." + ] + }, + { + "cell_type": "markdown", + "id": "44d4e22b", + "metadata": { + "papermill": { + "duration": 0.003071, + "end_time": "2026-09-21T22:58:59.539180", + "exception": false, + "start_time": "2026-09-21T22:58:59.536109", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Example: separating the AKT and ERK branches downstream of EGFR\n", + "\n", + "Consider a small perturbation panel measuring five signaling activities. The biological hypothesis is that EGFR activates both AKT and ERK, AKT inhibits FOXO, and ERK activates ELK1.\n", + "\n", + "The PKN is intentionally less certain. It also contains reverse interactions and AKT–ERK cross-talk that could form cycles. The fit will show which of these candidate edges are selected under the chosen loss and penalties.\n", + "\n", + "The values below are simulated, centered log-fold changes coming from the assumed linear signaling in every condition, with a small noise." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "07b14fc5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:58:59.545881Z", + "iopub.status.busy": "2026-09-21T22:58:59.545729Z", + "iopub.status.idle": "2026-09-21T22:59:01.099318Z", + "shell.execute_reply": "2026-09-21T22:59:01.098801Z" + }, + "papermill": { + "duration": 1.558086, + "end_time": "2026-09-21T22:59:01.100095", + "exception": false, + "start_time": "2026-09-21T22:58:59.542009", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import corneto as cn\n", + "from corneto.data import Data\n", + "from corneto.methods import LinearDAGDiscovery" + ] + }, + { + "cell_type": "markdown", + "id": "7f862c20", + "metadata": { + "papermill": { + "duration": 0.001544, + "end_time": "2026-09-21T22:59:01.103471", + "exception": false, + "start_time": "2026-09-21T22:59:01.101927", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Define the candidate biology\n", + "\n", + "Interaction signs are stored in the PKN. When `enforce_signs=True`, an activating sign constrains the fitted coefficient to be nonnegative and an inhibitory sign constrains it to be nonpositive. The candidate graph contains several pairs of edges pointing in opposite directions; the selected graph, but not the PKN, is required to have no directed cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "4cd07528", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.107118Z", + "iopub.status.busy": "2026-09-21T22:59:01.106999Z", + "iopub.status.idle": "2026-09-21T22:59:01.115167Z", + "shell.execute_reply": "2026-09-21T22:59:01.114747Z" + }, + "papermill": { + "duration": 0.010688, + "end_time": "2026-09-21T22:59:01.115660", + "exception": false, + "start_time": "2026-09-21T22:59:01.104972", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0EGFR1AKT
1EGFR1ERK
2AKT-1FOXO
3ERK1ELK1
4AKT1EGFR
5ERK1EGFR
6FOXO-1AKT
7ELK11ERK
8AKT1ERK
9ERK1AKT
\n", + "
" + ], + "text/plain": [ + " source sign target\n", + "0 EGFR 1 AKT\n", + "1 EGFR 1 ERK\n", + "2 AKT -1 FOXO\n", + "3 ERK 1 ELK1\n", + "4 AKT 1 EGFR\n", + "5 ERK 1 EGFR\n", + "6 FOXO -1 AKT\n", + "7 ELK1 1 ERK\n", + "8 AKT 1 ERK\n", + "9 ERK 1 AKT" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pkn_edges = [\n", + " (\"EGFR\", 1, \"AKT\"),\n", + " (\"EGFR\", 1, \"ERK\"),\n", + " (\"AKT\", -1, \"FOXO\"),\n", + " (\"ERK\", 1, \"ELK1\"),\n", + " (\"AKT\", 1, \"EGFR\"),\n", + " (\"ERK\", 1, \"EGFR\"),\n", + " (\"FOXO\", -1, \"AKT\"),\n", + " (\"ELK1\", 1, \"ERK\"),\n", + " (\"AKT\", 1, \"ERK\"),\n", + " (\"ERK\", 1, \"AKT\"),\n", + "]\n", + "pkn = cn.Graph.from_tuples(pkn_edges)\n", + "\n", + "pd.DataFrame(pkn_edges, columns=[\"source\", \"sign\", \"target\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5d4456df", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.119616Z", + "iopub.status.busy": "2026-09-21T22:59:01.119524Z", + "iopub.status.idle": "2026-09-21T22:59:01.540458Z", + "shell.execute_reply": "2026-09-21T22:59:01.539945Z" + }, + "papermill": { + "duration": 0.423746, + "end_time": "2026-09-21T22:59:01.541143", + "exception": false, + "start_time": "2026-09-21T22:59:01.117397", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "EGFR\n", + "\n", + "EGFR\n", + "\n", + "\n", + "\n", + "AKT\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "EGFR->AKT\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ERK\n", + "\n", + "ERK\n", + "\n", + "\n", + "\n", + "EGFR->ERK\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "AKT->EGFR\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "AKT->ERK\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "FOXO\n", + "\n", + "FOXO\n", + "\n", + "\n", + "\n", + "AKT->FOXO\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ERK->EGFR\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ERK->AKT\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ELK1\n", + "\n", + "ELK1\n", + "\n", + "\n", + "\n", + "ERK->ELK1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "FOXO->AKT\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ELK1->ERK\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pkn.plot(graph_attr={\"rankdir\": \"LR\"})" + ] + }, + { + "cell_type": "markdown", + "id": "e57477ef", + "metadata": { + "papermill": { + "duration": 0.001676, + "end_time": "2026-09-21T22:59:01.544740", + "exception": false, + "start_time": "2026-09-21T22:59:01.543064", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Define the perturbation experiment\n", + "\n", + "Observational conditions vary EGFR without marking it as experimentally fixed. Intervention conditions mark EGFR, AKT, or ERK as a **hard intervention**. This means that the target is fixed to its supplied value: its own equation is omitted for that condition, while the fixed value can still be used in equations for downstream proteins.\n", + "\n", + "One ELK1 measurement is missing. CORNETO will omit that response from the loss rather than replace it with zero." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "fa33df06", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.548921Z", + "iopub.status.busy": "2026-09-21T22:59:01.548831Z", + "iopub.status.idle": "2026-09-21T22:59:01.555800Z", + "shell.execute_reply": "2026-09-21T22:59:01.555473Z" + }, + "papermill": { + "duration": 0.009911, + "end_time": "2026-09-21T22:59:01.556291", + "exception": false, + "start_time": "2026-09-21T22:59:01.546380", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
EGFRAKTERKFOXOELK1intervention
condition
obs_1-1.4-1.394-1.3661.331-1.634observational
obs_2-0.5-0.445-0.3690.546-0.440observational
obs_30.70.7290.606-0.6210.699observational
obs_41.51.6301.258-1.4111.470observational
EGFR_low-2.0-2.229-1.7452.141-2.111EGFR
EGFR_high2.12.4171.713-2.0202.179EGFR
AKT_on-0.71.800-0.535-1.502NaNAKT
AKT_off1.0-1.5000.9011.2321.108AKT
ERK_on-0.8-0.7951.7000.7332.011ERK
ERK_off0.60.596-1.600-0.563-1.836ERK
\n", + "
" + ], + "text/plain": [ + " EGFR AKT ERK FOXO ELK1 intervention\n", + "condition \n", + "obs_1 -1.4 -1.394 -1.366 1.331 -1.634 observational\n", + "obs_2 -0.5 -0.445 -0.369 0.546 -0.440 observational\n", + "obs_3 0.7 0.729 0.606 -0.621 0.699 observational\n", + "obs_4 1.5 1.630 1.258 -1.411 1.470 observational\n", + "EGFR_low -2.0 -2.229 -1.745 2.141 -2.111 EGFR\n", + "EGFR_high 2.1 2.417 1.713 -2.020 2.179 EGFR\n", + "AKT_on -0.7 1.800 -0.535 -1.502 NaN AKT\n", + "AKT_off 1.0 -1.500 0.901 1.232 1.108 AKT\n", + "ERK_on -0.8 -0.795 1.700 0.733 2.011 ERK\n", + "ERK_off 0.6 0.596 -1.600 -0.563 -1.836 ERK" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rng = np.random.default_rng(13)\n", + "noise_sd = 0.08\n", + "\n", + "\n", + "def signaling_state(egfr, *, akt=None, erk=None):\n", + " # Intervened values are fixed by the experiment; endogenous values include noise.\n", + " akt = 1.1 * egfr + rng.normal(0, noise_sd) if akt is None else akt\n", + " erk = 0.8 * egfr + rng.normal(0, noise_sd) if erk is None else erk\n", + " return {\n", + " \"EGFR\": egfr,\n", + " \"AKT\": akt,\n", + " \"ERK\": erk,\n", + " \"FOXO\": -0.9 * akt + rng.normal(0, noise_sd),\n", + " \"ELK1\": 1.2 * erk + rng.normal(0, noise_sd),\n", + " }\n", + "\n", + "\n", + "conditions = [\n", + " (\"obs_1\", signaling_state(-1.4), None),\n", + " (\"obs_2\", signaling_state(-0.5), None),\n", + " (\"obs_3\", signaling_state(0.7), None),\n", + " (\"obs_4\", signaling_state(1.5), None),\n", + " (\"EGFR_low\", signaling_state(-2.0), \"EGFR\"),\n", + " (\"EGFR_high\", signaling_state(2.1), \"EGFR\"),\n", + " (\"AKT_on\", signaling_state(-0.7, akt=1.8), \"AKT\"),\n", + " (\"AKT_off\", signaling_state(1.0, akt=-1.5), \"AKT\"),\n", + " (\"ERK_on\", signaling_state(-0.8, erk=1.7), \"ERK\"),\n", + " (\"ERK_off\", signaling_state(0.6, erk=-1.6), \"ERK\"),\n", + "]\n", + "\n", + "# Demonstrate a genuinely missing response.\n", + "conditions[6][1][\"ELK1\"] = None\n", + "\n", + "experiment = pd.DataFrame(\n", + " [values | {\"intervention\": target or \"observational\"} for _, values, target in conditions],\n", + " index=[name for name, _, _ in conditions],\n", + ")\n", + "experiment.index.name = \"condition\"\n", + "experiment.round(3)" + ] + }, + { + "cell_type": "markdown", + "id": "2fbdc2a1", + "metadata": { + "papermill": { + "duration": 0.001703, + "end_time": "2026-09-21T22:59:01.559767", + "exception": false, + "start_time": "2026-09-21T22:59:01.558064", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "(linear-dag-intervention-metadata)=\n", + "### Mark interventions in `Data`\n", + "\n", + "Each sample contains a feature for each measured PKN vertex. The feature's `value` is the measurement; its metadata tells `LinearDAGDiscovery` whether that vertex was directly intervened on in that sample. Put intervention metadata on the target feature only.\n", + "\n", + "| Feature field | Expected value | When to use it |\n", + "|---|---|---|\n", + "| `mapping` | `\"vertex\"` | Required for a feature to represent a PKN vertex. |\n", + "| `value` | Numeric measurement | Required for an intervened target when fitting. |\n", + "| `intervention` | Omit for an observational feature; use `\"hard\"` or `\"shift\"` for an intervened target | `\"hard\"` removes the target's equation for that sample. `\"shift\"` keeps the equation and adds an offset. |\n", + "| `shift` | Numeric offset | Supply with `intervention=\"shift\"` when the offset is known; otherwise omit it so the model estimates the offset. |\n", + "| `intervention_group` | A condition identifier shared by replicate samples | Optional for hard interventions; required when estimating a shift shared by replicates. It groups their connectivity evidence while each sample still contributes its own measurement to the fit. |\n", + "\n", + "The `intervention` column in the table above names the target for display. In a `Data` feature, `intervention` instead names the intervention type. `intervened=True` is also accepted as an older spelling of `intervention=\"hard\"`; use one form per feature. The example below uses `intervention=\"hard\"`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3296bd15", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.563663Z", + "iopub.status.busy": "2026-09-21T22:59:01.563591Z", + "iopub.status.idle": "2026-09-21T22:59:01.565567Z", + "shell.execute_reply": "2026-09-21T22:59:01.565252Z" + }, + "papermill": { + "duration": 0.004566, + "end_time": "2026-09-21T22:59:01.566011", + "exception": false, + "start_time": "2026-09-21T22:59:01.561445", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "samples = {}\n", + "for condition, values, target in conditions:\n", + " samples[condition] = {}\n", + " for vertex, value in values.items():\n", + " feature = {\"mapping\": \"vertex\", \"value\": value}\n", + " if vertex == target:\n", + " feature[\"intervention\"] = \"hard\"\n", + " samples[condition][vertex] = feature\n", + "\n", + "data = Data.from_cdict(samples)" + ] + }, + { + "cell_type": "markdown", + "id": "77d70e12", + "metadata": { + "papermill": { + "duration": 0.001727, + "end_time": "2026-09-21T22:59:01.569481", + "exception": false, + "start_time": "2026-09-21T22:59:01.567754", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Fit one linear DAG to all conditions\n", + "\n", + "The objective adds `lambda_edges` for every selected edge, so the optimizer trades a lower fitting error against selecting fewer edges. `max_parents=2` imposes a literal graph constraint: no vertex may have more than two selected incoming edges. `enforce_signs=True` requires coefficients on PKN edges marked `+1` to be nonnegative and coefficients on edges marked `-1` to be nonpositive.\n", + "\n", + "The default `coefficient_support=\"exact\"` requires every selected edge to have a fitted coefficient whose normalized magnitude is at least `min_abs_coefficient=0.25`. This is a model choice about the smallest allowed coefficient, not a solver tolerance. With `coefficient_support=\"structural\"`, an edge may be selected to complete an intervention-to-response route even when its regression coefficient is zero.\n", + "\n", + "Standardized loss is enabled by default. For each target, CORNETO divides residuals by the standard deviation computed from training rows where the target is observed, is not hard-intervened, and has all candidate parents observed. This puts errors on a scale relative to that target's observed variation; it does not standardize the stored measurements or the fitted coefficients.\n", + "\n", + "For this simulated dataset, `lambda_edges=0.1` yields the four generating edges. At `0.05`, the selected optimum also contains ERK → AKT with a raw coefficient near `0.03`. The penalty does not declare an edge biologically real or unreal; users should rerun plausible values and report which edges remain selected." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f93a9934", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.573305Z", + "iopub.status.busy": "2026-09-21T22:59:01.573225Z", + "iopub.status.idle": "2026-09-21T22:59:01.626715Z", + "shell.execute_reply": "2026-09-21T22:59:01.626301Z" + }, + "papermill": { + "duration": 0.056153, + "end_time": "2026-09-21T22:59:01.627287", + "exception": false, + "start_time": "2026-09-21T22:59:01.571134", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'optimal'" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "method = LinearDAGDiscovery(\n", + " lambda_edges=0.1,\n", + " coefficient_bound=3.0,\n", + " fit_intercept=False,\n", + " max_parents=2,\n", + " enforce_signs=True,\n", + " coefficient_support=\"exact\",\n", + " min_abs_coefficient=0.25,\n", + ")\n", + "problem = method.build(pkn, data)\n", + "result = problem.solve(solver=\"SCIPY\")\n", + "result.status" + ] + }, + { + "cell_type": "markdown", + "id": "13324eaf", + "metadata": { + "papermill": { + "duration": 0.001801, + "end_time": "2026-09-21T22:59:01.631033", + "exception": false, + "start_time": "2026-09-21T22:59:01.629232", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Which PKN edges were selected?\n", + "\n", + "A fitted edge coefficient is the number multiplying the source value in the target's linear equation. Holding the other included parent values fixed, increasing the source by one measurement unit changes the model's predicted target by that coefficient. This is a model slope; interpreting it as a causal effect requires the assumptions discussed at the end of the guide.\n", + "\n", + "Only the loss is standardized, so the displayed coefficients remain in the original source and target units. For thresholding, CORNETO rescales a coefficient as `coefficient × source_scale / target_scale`. In exact mode, a selected edge must have normalized magnitude at least `min_abs_coefficient`; every unselected edge has coefficient zero. This threshold can exclude weak but genuine relationships." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c101301f", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.635082Z", + "iopub.status.busy": "2026-09-21T22:59:01.634998Z", + "iopub.status.idle": "2026-09-21T22:59:01.638775Z", + "shell.execute_reply": "2026-09-21T22:59:01.638455Z" + }, + "papermill": { + "duration": 0.00657, + "end_time": "2026-09-21T22:59:01.639284", + "exception": false, + "start_time": "2026-09-21T22:59:01.632714", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcetargetselectedcoefficient
0EGFRAKTTrue1.086810
1EGFRERKTrue0.866341
2AKTFOXOTrue-0.865437
3ERKELK1True1.195922
4AKTEGFRFalse-0.000000
5ERKEGFRFalse-0.000000
6FOXOAKTFalse0.000000
7ELK1ERKFalse-0.000000
8AKTERKFalse-0.000000
9ERKAKTFalse-0.000000
\n", + "
" + ], + "text/plain": [ + " source target selected coefficient\n", + "0 EGFR AKT True 1.086810\n", + "1 EGFR ERK True 0.866341\n", + "2 AKT FOXO True -0.865437\n", + "3 ERK ELK1 True 1.195922\n", + "4 AKT EGFR False -0.000000\n", + "5 ERK EGFR False -0.000000\n", + "6 FOXO AKT False 0.000000\n", + "7 ELK1 ERK False -0.000000\n", + "8 AKT ERK False -0.000000\n", + "9 ERK AKT False -0.000000" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected = np.asarray(problem.expr.edge_selected.value).reshape(-1) > 0.5\n", + "coefficients = np.asarray(problem.expr.edge_coefficient.value).reshape(-1)\n", + "\n", + "edge_rows = []\n", + "for edge_index, (source_set, target_set) in enumerate(pkn.E):\n", + " edge_rows.append(\n", + " {\n", + " \"source\": next(iter(source_set)),\n", + " \"target\": next(iter(target_set)),\n", + " \"selected\": bool(selected[edge_index]),\n", + " \"coefficient\": coefficients[edge_index],\n", + " }\n", + " )\n", + "edge_table = pd.DataFrame(edge_rows)\n", + "edge_table" + ] + }, + { + "cell_type": "markdown", + "id": "60e5c223", + "metadata": { + "papermill": { + "duration": 0.001771, + "end_time": "2026-09-21T22:59:01.642910", + "exception": false, + "start_time": "2026-09-21T22:59:01.641139", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Compare the candidate network with the inferred model\n", + "\n", + "Selected activating edges are blue, the selected inhibitory edge is orange, and rejected candidates remain visible as pale dotted arrows. Labels show fitted coefficients." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "322a8e47", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.646966Z", + "iopub.status.busy": "2026-09-21T22:59:01.646879Z", + "iopub.status.idle": "2026-09-21T22:59:01.840777Z", + "shell.execute_reply": "2026-09-21T22:59:01.840348Z" + }, + "papermill": { + "duration": 0.196721, + "end_time": "2026-09-21T22:59:01.841386", + "exception": false, + "start_time": "2026-09-21T22:59:01.644665", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "EGFR\n", + "\n", + "EGFR\n", + "\n", + "\n", + "\n", + "AKT\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "EGFR->AKT\n", + "\n", + "\n", + "+1.09\n", + "\n", + "\n", + "\n", + "ERK\n", + "\n", + "ERK\n", + "\n", + "\n", + "\n", + "EGFR->ERK\n", + "\n", + "\n", + "+0.87\n", + "\n", + "\n", + "\n", + "AKT->EGFR\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "AKT->ERK\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "FOXO\n", + "\n", + "FOXO\n", + "\n", + "\n", + "\n", + "AKT->FOXO\n", + "\n", + "\n", + "\n", + "-0.87\n", + "\n", + "\n", + "\n", + "ERK->EGFR\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ERK->AKT\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ELK1\n", + "\n", + "ELK1\n", + "\n", + "\n", + "\n", + "ERK->ELK1\n", + "\n", + "\n", + "+1.20\n", + "\n", + "\n", + "\n", + "FOXO->AKT\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ELK1->ERK\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "edge_styles = {}\n", + "for edge_index, row in edge_table.iterrows():\n", + " if row[\"selected\"]:\n", + " edge_styles[edge_index] = {\n", + " \"color\": \"#D55E00\" if row[\"coefficient\"] < 0 else \"#0072B2\",\n", + " \"fontcolor\": \"#333333\",\n", + " \"label\": f'{row[\"coefficient\"]:+.2f}',\n", + " \"penwidth\": \"3\",\n", + " }\n", + " else:\n", + " edge_styles[edge_index] = {\n", + " \"color\": \"#C7C7C7\",\n", + " \"style\": \"dotted\",\n", + " }\n", + "\n", + "pkn.plot(custom_edge_attr=edge_styles, graph_attr={\"rankdir\": \"LR\"})" + ] + }, + { + "cell_type": "markdown", + "id": "6616841b", + "metadata": { + "papermill": { + "duration": 0.001852, + "end_time": "2026-09-21T22:59:01.845262", + "exception": false, + "start_time": "2026-09-21T22:59:01.843410", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "(linear-dag-edge-metadata)=\n", + "### Inspect fitted edge metadata\n", + "\n", + "`get_solution_graph()` makes the interpretation explicit. It preserves a prior interaction sign as `prior_interaction`, records the fitted sign as `inferred_interaction`, and marks structural-only zero-coefficient edges as `connector`. In exact mode, connectors should be absent because selected edges must have a nonzero normalized coefficient." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "b412ae39", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.849583Z", + "iopub.status.busy": "2026-09-21T22:59:01.849485Z", + "iopub.status.idle": "2026-09-21T22:59:01.854701Z", + "shell.execute_reply": "2026-09-21T22:59:01.854414Z" + }, + "papermill": { + "duration": 0.008216, + "end_time": "2026-09-21T22:59:01.855257", + "exception": false, + "start_time": "2026-09-21T22:59:01.847041", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcetargetcoefficientnormalized_coefficientprior_interactioninferred_interactionconnector
0EGFRAKT1.0868100.91039911False
1EGFRERK0.8663410.84981311False
2AKTFOXO-0.865437-0.975949-1-1False
3ERKELK11.1959220.95673811False
\n", + "
" + ], + "text/plain": [ + " source target coefficient normalized_coefficient prior_interaction \\\n", + "0 EGFR AKT 1.086810 0.910399 1 \n", + "1 EGFR ERK 0.866341 0.849813 1 \n", + "2 AKT FOXO -0.865437 -0.975949 -1 \n", + "3 ERK ELK1 1.195922 0.956738 1 \n", + "\n", + " inferred_interaction connector \n", + "0 1 False \n", + "1 1 False \n", + "2 -1 False \n", + "3 1 False " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solution_graph = method.get_solution_graph()\n", + "solution_rows = []\n", + "for edge_index, (source_set, target_set) in enumerate(solution_graph.E):\n", + " attributes = solution_graph.get_attr_edge(edge_index)\n", + " solution_rows.append(\n", + " {\n", + " \"source\": next(iter(source_set)),\n", + " \"target\": next(iter(target_set)),\n", + " \"coefficient\": attributes[\"coefficient\"],\n", + " \"normalized_coefficient\": attributes[\"normalized_coefficient\"],\n", + " \"prior_interaction\": attributes.get(\"prior_interaction\"),\n", + " \"inferred_interaction\": attributes[\"inferred_interaction\"],\n", + " \"connector\": attributes[\"connector\"],\n", + " }\n", + " )\n", + "pd.DataFrame(solution_rows)" + ] + }, + { + "cell_type": "markdown", + "id": "74764b05", + "metadata": { + "papermill": { + "duration": 0.0019, + "end_time": "2026-09-21T22:59:01.859164", + "exception": false, + "start_time": "2026-09-21T22:59:01.857264", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "At these parameter values, the optimizer selects the four interactions used to generate the synthetic data. Their coefficients are close to, but not exactly, the generating values $1.1$, $0.8$, $-0.9$, and $1.2$. The available reverse edges, feedback edges, and AKT–ERK cross-talk are not selected in this fit; that result does not establish that such interactions are absent in real biology. The selected graph has no directed cycles even though the PKN contains them." + ] + }, + { + "cell_type": "markdown", + "id": "0173eb2b", + "metadata": { + "papermill": { + "duration": 0.001912, + "end_time": "2026-09-21T22:59:01.862922", + "exception": false, + "start_time": "2026-09-21T22:59:01.861010", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "(linear-dag-prediction)=\n", + "## Reuse the fitted model for held-out prediction\n", + "\n", + "The example above calls `build()` and `solve()` separately. Use that form when you need to add constraints to the optimization problem before solving it. If you do not need custom constraints, `fit()` performs those two steps and returns the fitted `LinearDAGDiscovery` object.\n", + "\n", + "| Operation | Values used from the new data | Meaning |\n", + "|---|---|---|\n", + "| `predict(data)` | Hard-intervention target values and explicit or previously fitted shift interventions | Applies the fixed selected graph recursively. It does not solve again and does not use ordinary observed values as inputs. |\n", + "| `evaluate(data)` forward loss | The predictions above, followed by the observed values used only for scoring | Measures recursive forward prediction error without feeding observed descendants into the model. Every observed vertex that is not hard-intervened is scored, including roots. |\n", + "| `evaluate(data)` local loss | Observed target and observed values for every incoming PKN parent | Measures how well each fitted equation reconstructs its target when its parent measurements are supplied. This is a diagnostic, not an independent forward prediction. |\n", + "| `residuals(data)` | The same observed-parent calculation as local loss | Returns `observed target − equation reconstruction` for each usable target and sample. |\n", + "\n", + "A **root** is a vertex with no selected incoming edge. `predict()` uses its fitted intercept, not an ordinary observed value. This example sets `fit_intercept=False`, so a root that is not hard-intervened is predicted as zero. In the held-out `ERK_on` row, ERK is fixed by the intervention but EGFR is not; the observed EGFR value is therefore ignored as an input and its prediction is zero. Because `evaluate()` scores observed non-hard vertices, the EGFR error contributes to `forward_loss`. If a root value is an externally supplied input rather than an outcome to predict, mark it as a hard intervention; `predict()` will then fix it to the supplied value and `evaluate()` will exclude that target from the loss.\n", + "\n", + "The reported losses are weighted means after dividing errors by the response scales learned from the training data; they are not the raw summed optimization objective. Configured `vertex_weights` apply. Evaluation `sample_weights` must be supplied using the held-out sample names—training weights are not automatically transferred to different samples. Select penalties and other model settings using training or validation data, not the final test report. Holding out replicate cells tests prediction for new cells under familiar interventions; holding out an entire condition tests prediction for an intervention condition not used in fitting." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "cbbfc568", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.867155Z", + "iopub.status.busy": "2026-09-21T22:59:01.867081Z", + "iopub.status.idle": "2026-09-21T22:59:01.945020Z", + "shell.execute_reply": "2026-09-21T22:59:01.944681Z" + }, + "papermill": { + "duration": 0.080876, + "end_time": "2026-09-21T22:59:01.945606", + "exception": false, + "start_time": "2026-09-21T22:59:01.864730", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
forward_losslocal_loss
ERK_on0.4730.232
\n", + "
" + ], + "text/plain": [ + " forward_loss local_loss\n", + "ERK_on 0.473 0.232" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hold out one complete hard-intervention condition while retaining the\n", + "# observational and other intervention conditions for training.\n", + "heldout_name = \"ERK_on\"\n", + "train_data = data.query.filter(lambda item: item[0] != heldout_name).collect()\n", + "test_data = data.query.filter(lambda item: item[0] == heldout_name).collect()\n", + "\n", + "heldout_model = LinearDAGDiscovery(\n", + " lambda_edges=0.1,\n", + " coefficient_bound=3.0,\n", + " fit_intercept=False,\n", + " max_parents=2,\n", + " enforce_signs=True,\n", + " coefficient_support=\"exact\",\n", + " min_abs_coefficient=0.25,\n", + ").fit(pkn, train_data, solve_options={\"solver\": \"SCIPY\"})\n", + "\n", + "predictions = heldout_model.predict(test_data)\n", + "report = heldout_model.evaluate(test_data)\n", + "pd.DataFrame(\n", + " {\n", + " \"forward_loss\": report[\"forward_by_condition\"],\n", + " \"local_loss\": report[\"local_by_condition\"],\n", + " }\n", + ").round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c845cf91", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.950325Z", + "iopub.status.busy": "2026-09-21T22:59:01.950233Z", + "iopub.status.idle": "2026-09-21T22:59:01.956017Z", + "shell.execute_reply": "2026-09-21T22:59:01.955685Z" + }, + "papermill": { + "duration": 0.008734, + "end_time": "2026-09-21T22:59:01.956531", + "exception": false, + "start_time": "2026-09-21T22:59:01.947797", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuepredictedclampedobserved
id
ERK1.700000FalseTrueTrue
ELK12.033068TrueFalseTrue
\n", + "
" + ], + "text/plain": [ + " value predicted clamped observed\n", + "id \n", + "ERK 1.700000 False True True\n", + "ELK1 2.033068 True False True" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Prediction Data keeps sample/vertex labels and identifies clamped values.\n", + "pd.DataFrame(\n", + " [feature.to_dict() for feature in predictions.samples[heldout_name].features]\n", + ").set_index(\"id\")[[\"value\", \"predicted\", \"clamped\", \"observed\"]].loc[[\"ERK\", \"ELK1\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "1b54c518", + "metadata": { + "papermill": { + "duration": 0.001944, + "end_time": "2026-09-21T22:59:01.960527", + "exception": false, + "start_time": "2026-09-21T22:59:01.958583", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "Prediction and residual results retain their sample and vertex labels. Their feature metadata states exactly how each value was produced:\n", + "\n", + "| Metadata | Meaning |\n", + "|---|---|\n", + "| `predicted` | The value was produced by the fixed forward model |\n", + "| `clamped` | The value was fixed to a supplied hard-intervention value rather than predicted |\n", + "| `observed` | The input data contained a value. `predict()` ignores it unless it belongs to a hard intervention; `evaluate()` may use it as the value to score. |\n", + "| `valid` | The target and every required parent were observed, so the local residual can be computed |\n", + "| `equation_prediction` | The target value reconstructed from its observed parents for the local residual |\n", + "\n", + "For a shift intervention, the target measurement may be missing when the shift value is supplied explicitly. A shift estimated during fitting can be reused only for the same `intervention_group`. A numeric shift supplied in the training data is not memorized for later samples; supply it again at prediction time. For a new group, also supply the shift explicitly because test outcomes are never used to estimate it." + ] + }, + { + "cell_type": "markdown", + "id": "28a21f37", + "metadata": { + "papermill": { + "duration": 0.001959, + "end_time": "2026-09-21T22:59:01.964438", + "exception": false, + "start_time": "2026-09-21T22:59:01.962479", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Inspect the in-sample equation reconstructions\n", + "\n", + "This plot is an in-sample fitting diagnostic, not a held-out prediction test. For each target, `problem.expr.prediction` substitutes the observed parent measurements into that target's fitted equation. A point near the diagonal therefore shows that one equation reconstructs its observed target; it does not show that the complete graph can predict the sample without those parent measurements.\n", + "\n", + "The plot includes only vertices with at least one selected incoming edge and only rows marked by `fitted_mask`. A hard-intervention target, a missing target, or a target with any missing candidate parent is excluded. The table reports mean absolute reconstruction error in the original measurement units.\n", + "\n", + "EGFR is omitted because it has no selected incoming edge. In this example, `fit_intercept=False` makes its non-hard equation simply `EGFR = 0`; those residuals are constant with respect to edge selection and are not informative about downstream fit." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "459021dd", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:01.968974Z", + "iopub.status.busy": "2026-09-21T22:59:01.968892Z", + "iopub.status.idle": "2026-09-21T22:59:02.063679Z", + "shell.execute_reply": "2026-09-21T22:59:02.063295Z" + }, + "papermill": { + "duration": 0.097735, + "end_time": "2026-09-21T22:59:02.064156", + "exception": false, + "start_time": "2026-09-21T22:59:01.966421", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
fitted observationsmean absolute error
protein
AKT80.073
ERK70.059
FOXO100.080
ELK190.039
\n", + "
" + ], + "text/plain": [ + " fitted observations mean absolute error\n", + "protein \n", + "AKT 8 0.073\n", + "ERK 7 0.059\n", + "FOXO 10 0.080\n", + "ELK1 9 0.039" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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IUFR7ueSi4vLzV85knzdp08fzJ07V9WD2rVrl0nCvLm26M+htFVei/QG6UlvWkJCQp73oiASREmPnwR4+/btU+dLer0kAV+Cy9OnT+dpf/Xq1Yt0TojIMbCnicgCErSMHTsWzz77rBpyk5lfMhtNhptkGMeYDE3JbCz58pXeC5nFdv/996t9EydOVD1AMktNAqrffvvN8EX/1FNPqQBKZsPJ88j9Tp48ie+++05tL6iXQwIAmW0mM9kkSJNhPj0ZonrmmWcwadIk1dMis/5u3Lihellk2Gn48OEqiJMeL5mV98QTT6ghtsWLFxfps/HKK6+gd+/eKiCT4E0CJRmGlKBIhrjkcbOzs1UvjvTqyAw3CaKqVq1qMgNRzq+cN+kRWr58ueopEzLLrXHjxqp3bfbs2WpoT3qrpKct91BhfqRHadOmTejWrZuaDSm3ZVhO/17I7DsZSpWZefJ+ycxJCZDlPZNzREROytZJVUT2IjU1VRs/frxKupaZZm3btjUkHhsngsvMtQYNGmgeHh5aixYttP379xuOGTdunFazZk11/7CwMG3o0KHatWvXDPtPnDih9evXTwsMDFQJ5DLjTRKt9QnakgguM9zM0SdDSyK1cUK3kNtz5szR6tSpoxLa5bm7d+9umLknpN0RERGqbZLMvWjRIosSwX/88cc822UGXZs2bdRrkJlyLVu2NMyQk+MlIVu2+/r6anfddZe2ceNGw32l/a+99pr20EMPqWRumcU3e/Zsk8eXWXd9+vRR95eZdpL0Hh0dbdgvieBNmjQxuc+sWbPUY4sjR46o1y/nQV6vJKbPmzfP5HhJ+peke3kfZZZkhw4dtJUrV+Z7LojI8enkH1sHbkREejI8KT1yciEiKk2Y00RERERkAQZNRERERBbg8BwRERGRBdjTRERERGQBBk1EREREFmDQRERERGQBBk1EREREFmDQRERERGQBBk1EREREFmDQRERERGQBBk1EREREFmDQRERERIRb+39ZK3kArbuhUwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "prediction = np.asarray(problem.expr.prediction.value)\n", + "fitted_mask = np.asarray(problem.expr.fitted_mask.value).astype(bool)\n", + "modeled_vertices = set(edge_table.loc[selected, \"target\"])\n", + "\n", + "fig, ax = plt.subplots(figsize=(6, 5))\n", + "colors = plt.cm.tab10(np.linspace(0, 1, pkn.num_vertices))\n", + "fit_summary = []\n", + "for vertex_index, vertex in enumerate(pkn.V):\n", + " if vertex not in modeled_vertices:\n", + " continue\n", + " keep = fitted_mask[vertex_index]\n", + " observed = np.full(len(data.samples), np.nan)\n", + " for sample_index, sample_name in enumerate(data.samples):\n", + " feature = next((feature for feature in data.samples[sample_name].features if feature.id == vertex), None)\n", + " if feature is not None and feature.value is not None:\n", + " observed[sample_index] = float(feature.value)\n", + " observed = observed[keep]\n", + " modeled = prediction[vertex_index, keep]\n", + " ax.scatter(\n", + " observed,\n", + " modeled,\n", + " label=vertex,\n", + " color=colors[vertex_index],\n", + " s=45,\n", + " )\n", + " fit_summary.append(\n", + " {\n", + " \"protein\": vertex,\n", + " \"fitted observations\": int(keep.sum()),\n", + " \"mean absolute error\": np.mean(np.abs(observed - modeled)),\n", + " }\n", + " )\n", + "limits = [-2.5, 2.5]\n", + "ax.plot(limits, limits, \"--\", color=\"0.4\", linewidth=1)\n", + "ax.set(xlabel=\"observed response\", ylabel=\"model prediction\", xlim=limits, ylim=limits)\n", + "ax.legend(frameon=False, bbox_to_anchor=(1.02, 1), loc=\"upper left\")\n", + "ax.set_title(\"Modeled downstream equations\")\n", + "fig.tight_layout()\n", + "\n", + "pd.DataFrame(fit_summary).set_index(\"protein\").round(3)" + ] + }, + { + "cell_type": "markdown", + "id": "a4ef2ecc", + "metadata": { + "papermill": { + "duration": 0.002101, + "end_time": "2026-09-21T22:59:02.068719", + "exception": false, + "start_time": "2026-09-21T22:59:02.066618", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Check what was actually fitted\n", + "\n", + "This table shows which values enter the fitting loss. `observed_mask` is true whenever a measurement is present. `fitted_mask` is more restrictive: it is false for hard-intervention targets and whenever the target or any of its candidate parents is missing. Here a **candidate parent** means any vertex with an incoming PKN edge to the target, even when that edge is not selected.\n", + "\n", + "Consequently, one missing candidate-parent value can remove a target equation from that sample. This uses fewer observations than a workflow that first fills in missing values, but it guarantees that CORNETO never silently replaces a missing parent with zero." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "93718dc3", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:02.073423Z", + "iopub.status.busy": "2026-09-21T22:59:02.073345Z", + "iopub.status.idle": "2026-09-21T22:59:02.078211Z", + "shell.execute_reply": "2026-09-21T22:59:02.077880Z" + }, + "papermill": { + "duration": 0.007886, + "end_time": "2026-09-21T22:59:02.078670", + "exception": false, + "start_time": "2026-09-21T22:59:02.070784", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
observedused in loss
EGFRAKTERKFOXOELK1EGFRAKTERKFOXOELK1
obs_1TrueTrueTrueTrueTrueTrueTrueTrueTrueTrue
obs_2TrueTrueTrueTrueTrueTrueTrueTrueTrueTrue
obs_3TrueTrueTrueTrueTrueTrueTrueTrueTrueTrue
obs_4TrueTrueTrueTrueTrueTrueTrueTrueTrueTrue
EGFR_lowTrueTrueTrueTrueTrueFalseTrueTrueTrueTrue
EGFR_highTrueTrueTrueTrueTrueFalseTrueTrueTrueTrue
AKT_onTrueTrueTrueTrueFalseTrueFalseFalseTrueFalse
AKT_offTrueTrueTrueTrueTrueTrueFalseTrueTrueTrue
ERK_onTrueTrueTrueTrueTrueTrueTrueFalseTrueTrue
ERK_offTrueTrueTrueTrueTrueTrueTrueFalseTrueTrue
\n", + "
" + ], + "text/plain": [ + " observed used in loss \\\n", + " EGFR AKT ERK FOXO ELK1 EGFR AKT ERK FOXO \n", + "obs_1 True True True True True True True True True \n", + "obs_2 True True True True True True True True True \n", + "obs_3 True True True True True True True True True \n", + "obs_4 True True True True True True True True True \n", + "EGFR_low True True True True True False True True True \n", + "EGFR_high True True True True True False True True True \n", + "AKT_on True True True True False True False False True \n", + "AKT_off True True True True True True False True True \n", + "ERK_on True True True True True True True False True \n", + "ERK_off True True True True True True True False True \n", + "\n", + " \n", + " ELK1 \n", + "obs_1 True \n", + "obs_2 True \n", + "obs_3 True \n", + "obs_4 True \n", + "EGFR_low True \n", + "EGFR_high True \n", + "AKT_on False \n", + "AKT_off True \n", + "ERK_on True \n", + "ERK_off True " + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "observed_mask = pd.DataFrame(\n", + " np.asarray(problem.expr.observed_mask.value).astype(bool).T,\n", + " index=tuple(data.samples),\n", + " columns=pkn.V,\n", + ")\n", + "used_for_fit = pd.DataFrame(\n", + " fitted_mask.T,\n", + " index=tuple(data.samples),\n", + " columns=pkn.V,\n", + ")\n", + "\n", + "pd.concat(\n", + " {\"observed\": observed_mask, \"used in loss\": used_for_fit},\n", + " axis=1,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "0f4a88f3", + "metadata": { + "papermill": { + "duration": 0.002158, + "end_time": "2026-09-21T22:59:02.083144", + "exception": false, + "start_time": "2026-09-21T22:59:02.080986", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Adapting the workflow to your experiment\n", + "\n", + "For a real perturbation panel:\n", + "\n", + "1. use centered continuous measurements, such as log-fold changes relative to an appropriate control;\n", + "2. map every feature identifier to the same identifiers used by the PKN;\n", + "3. annotate the intervened target feature using the metadata described above;\n", + "4. represent missing measurements as absent features, `None`, or `NaN`;\n", + "5. inspect `fitted_mask`, then rerun plausible `lambda_edges` and `min_abs_coefficient` values and report which edges change.\n", + "\n", + "Optional weights can reflect assay reliability or unequal sample importance:\n", + "\n", + "```python\n", + "method = LinearDAGDiscovery(\n", + " vertex_weights={\"FOXO\": 0.5}, # noisier readout\n", + " sample_weights={\"replicate_3\": 0.7},\n", + ")\n", + "```\n", + "\n", + "Weights must be positive and multiply the corresponding contribution to the fitting loss. Standardization can be disabled with `standardize_loss=False`; leave it enabled when errors should be judged relative to each target's observed training variation, and disable it when the raw measurement scale itself should determine their relative importance.\n", + "\n", + "With exact coefficient support, `min_abs_coefficient` applies to `coefficient × source_scale / target_scale`, not to the displayed raw coefficient. With structural support, a selected edge may instead have coefficient zero and serve only to complete a connectivity route." + ] + }, + { + "cell_type": "markdown", + "id": "48240ea5", + "metadata": { + "papermill": { + "duration": 0.002167, + "end_time": "2026-09-21T22:59:02.087493", + "exception": false, + "start_time": "2026-09-21T22:59:02.085326", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Advanced options and formulation\n", + "\n", + "The sections below are useful when tuning the method or diagnosing a difficult dataset; they are not required for the basic workflow.\n", + "\n", + "(linear-dag-model-choices)=\n", + "### Model choices and their exact effects\n", + "\n", + "| Parameter | Effect |\n", + "|---|---|\n", + "| `lambda_edges` | Adds this amount to the objective for every selected edge. Increasing it trades more fitting error for fewer selected edges. |\n", + "| `max_parents` | Maximum number of selected incoming edges allowed at each vertex. An integer applies to every vertex; a mapping can set vertex-specific limits. |\n", + "| `enforce_signs` | When true, a PKN sign of `+1` requires a nonnegative coefficient and `-1` requires a nonpositive coefficient. |\n", + "| `coefficient_support` | `exact` requires every selected edge to have a sufficiently large nonzero coefficient; `structural` allows a selected connectivity edge to have coefficient zero. |\n", + "| `min_abs_coefficient` | In exact mode, the minimum of `abs(coefficient × source_scale / target_scale)` for a selected edge. |\n", + "| `min_commodity_coverage` | Minimum fraction of intervention evidence units whose shared flow column must contain a complete route to at least one measured, non-intervened response. |\n", + "| `lambda_unexplained` | Adds a penalty for evidence units whose shared flow column has no complete route; unlike the minimum above, it does not make that coverage mandatory. |\n", + "| `loss=\"absolute\"` | Default: minimizes absolute standardized errors, which reduces the influence of individual large errors. |\n", + "| `loss=\"squared\"` | Minimizes squared standardized errors, so large errors receive much more weight. This also changes the problem from a mixed-integer linear program to a mixed-integer quadratic program. |\n", + "\n", + "`flow_epsilon` and `flow_capacity` are technical bounds for the auxiliary connectivity variables, not descriptions of biology. `flow_epsilon` is the smallest positive value assigned to an edge used by a flow; `flow_capacity` is its upper bound. The default capacity is the number of PKN edges multiplied by `flow_epsilon`. Normally these values should not be used to express biological confidence or effect size.\n", + "\n", + "For a real analysis, solve several scientifically plausible edge penalties and coefficient thresholds and report which edges remain selected. One optimized graph is not an uncertainty estimate.\n", + "\n", + "### What does `min_commodity_coverage` mean?\n", + "\n", + "The parameter retains the internal term *commodity* from flow problems, but it controls intervention-to-response connectivity. Three levels must be distinguished:\n", + "\n", + "| Level | Exact meaning |\n", + "|---|---|\n", + "| Sample | One row in `Data`, such as one cell or one bulk condition. Every sample remains a separate regression observation. |\n", + "| Evidence unit | One explicit `(intervened source, intervention_group)` pair. Replicate cells in that group count as one unit. Samples without a group are pooled into one implicit unit when they have the same flow pattern. |\n", + "| Flow column | One auxiliary connectivity problem for a unique pattern: the intervened source, the measured non-intervened responses available as endpoints, and the edges blocked by hard interventions. |\n", + "\n", + "Several explicit evidence units can have the same pattern and therefore share one flow column. They are counted separately through that column's `group_count`, but they cannot receive different coverage decisions: when the shared flow is active, all those units count as covered; when it is inactive, none do. Ungrouped samples with the same pattern are pooled into one implicit evidence unit and therefore count once.\n", + "\n", + "An evidence unit counts as covered when its shared flow column contains a directed route from the intervened source to at least one measured response that is not itself intervened, using at least one selected PKN edge. This says only that the route exists. It does not use prediction error or require a route to every response.\n", + "\n", + "If there are ten evidence units:\n", + "\n", + "- `min_commodity_coverage=0` does not require any evidence unit to be connected;\n", + "- `min_commodity_coverage=0.6` requires shared active flow columns representing at least `ceil(0.6 × 10) = 6` evidence units;\n", + "- `min_commodity_coverage=1` requires flow columns representing all ten evidence units and makes the problem infeasible if the PKN cannot provide every required route.\n", + "\n", + "Coverage is only a graph-connectivity requirement. A covered unit may still be predicted poorly, and coverage is not a significance test or confidence score. Use `1` only when every evidence unit should have a route to at least one measured downstream vertex in the PKN. Otherwise leave the minimum at zero, choose a smaller fraction, or use `lambda_unexplained` to penalize missing routes without making them mandatory." + ] + }, + { + "cell_type": "markdown", + "id": "9ae3bf7f", + "metadata": { + "papermill": { + "duration": 0.002184, + "end_time": "2026-09-21T22:59:02.091864", + "exception": false, + "start_time": "2026-09-21T22:59:02.089680", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Method details\n", + "\n", + "### Linear structural equations\n", + "\n", + "For every usable measurement whose target is not hard-intervened, the fitted equation for vertex $v$ in sample $s$ is\n", + "\n", + "$$\n", + "\\hat{x}_{v,s} = \\alpha_v + \\sum_{u\\to v} \\beta_{u\\to v}x_{u,s} + d_{v,s}.\n", + "$$\n", + "\n", + "Here $\\alpha_v$ is the optional intercept, $\\beta_{u\\to v}$ is the fitted edge coefficient, and $d_{v,s}$ is zero unless that target has a shift intervention. A shift can be supplied numerically or estimated from an `intervention_group`. An unselected edge has coefficient zero. A hard-intervention target has no fitted equation in that sample; its supplied value can still appear as a parent value in downstream equations.\n", + "\n", + "With the default absolute-error loss and no optional shift or coverage penalties, the objective is\n", + "\n", + "$$\n", + "\\sum_{(v,s)\\,\\mathrm{fitted}}\n", + "\\frac{w_v w_s}{\\sigma_v}\\left|x_{v,s}-\\hat{x}_{v,s}\\right|\n", + "+ \\lambda_E\\sum_e z_e.\n", + "$$\n", + "\n", + "In this expression, $w_v$ and $w_s$ are the optional vertex and sample weights, $\\sigma_v$ is the training-derived response scale, and $z_e$ is 1 when edge $e$ is selected. The target scale is computed from observations where the target is not hard-intervened and every candidate parent is present. A missing parent is never replaced with zero.\n", + "\n", + "In exact coefficient-support mode, selecting edge $e:u\\to v$ also requires $|\\tilde{\\beta}_e|\\ge\\delta$, where $\\tilde{\\beta}_e=\\beta_e\\,\\mathrm{scale}(u)/\\mathrm{scale}(v)$ and $\\delta$ is `min_abs_coefficient`.\n", + "\n", + "During fitting and local residual calculation, $x_{u,s}$ is the observed parent value. During forward prediction, it is the model's previously predicted parent value. Ordinary observed values in the new data—including observed roots—are not substituted into the forward calculation. A hard-intervention target is fixed to its supplied value, and a root that is not hard-intervened uses only its fitted intercept." + ] + }, + { + "cell_type": "markdown", + "id": "a6051fbb", + "metadata": {}, + "source": [ + "### Relationship to SEMs and SCMs\n", + "\n", + "A structural equation model (SEM) describes each variable using an equation based on its parent variables. In a linear SEM, the equation for vertex $v$ is\n", + "\n", + "$$\n", + "X_v = \\alpha_v + \\sum_{u\\in\\mathrm{Pa}(v)} \\beta_{uv}X_u + \\varepsilon_v.\n", + "$$\n", + "\n", + "Here, $\\mathrm{Pa}(v)$ is the set of parents of $v$, $\\alpha_v$ is its baseline value, $\\beta_{uv}$ is the coefficient for the edge $u\\rightarrow v$, and $\\varepsilon_v$ represents variation not explained by the modeled parents. An SEM is not necessarily causal: the equations may describe statistical relationships without claiming what would happen if a variable were manipulated.\n", + "\n", + "A structural causal model (SCM) gives the equations a causal interpretation. Each equation is treated as the mechanism that produces its variable. An intervention replaces or modifies one mechanism while the remaining equations stay unchanged. For example, a hard intervention $\\operatorname{do}(X_v=x)$ replaces the equation for $X_v$ with the fixed value $x$.\n", + "\n", + "`LinearDAGDiscovery` selects the parent relationships from the candidate edges in the PKN and estimates their linear coefficients. It therefore fits a PKN-constrained linear SEM. Hard interventions fix the target and remove its usual equation for that sample, while shift interventions add an offset to the equation. Under suitable causal assumptions, these intervention semantics allow the fitted model to be interpreted as a linear acyclic SCM.\n", + "\n", + "| Result | What it contains | Causal interpretation | Interventions |\n", + "|---|---|---|---|\n", + "| Directed graph or DAG | Variables and directed edges | Not established by the graph alone | Not defined by the graph alone |\n", + "| Linear SEM | Graph, linear equations, coefficients, and unexplained variation | Optional; equations may be statistical | Not defined unless causal meaning is added |\n", + "| Linear SCM | Linear equations interpreted as causal mechanisms | Yes, by assumption | Replace or modify the target equation |\n", + "| `LinearDAGDiscovery` | A DAG selected from the PKN, fitted linear equations, and intervention annotations | Valid when the PKN, intervention design, absence of important hidden common causes, and mechanism stability assumptions are appropriate | Hard interventions replace the target equation; shift interventions modify it |\n", + "\n", + "The optimization cannot verify the assumptions required for the SCM interpretation. Without them, the result should be treated as an intervention-aware linear SEM rather than proof of a causal model. CORNETO's auxiliary flows are not part of the SEM or SCM; they only restrict graph selection by requiring selected edges to participate in intervention-to-measurement routes." + ] + }, + { + "cell_type": "markdown", + "id": "424a67de", + "metadata": { + "papermill": { + "duration": 0.002273, + "end_time": "2026-09-21T22:59:02.096347", + "exception": false, + "start_time": "2026-09-21T22:59:02.094074", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### How the connectivity constraints work\n", + "\n", + "For each unique flow pattern described above, CORNETO creates auxiliary variables that must obey these rules:\n", + "\n", + "1. flow enters at that pattern's intervened source;\n", + "2. it can leave only through responses measured and not intervened in the corresponding samples;\n", + "3. it can use only selected PKN edges;\n", + "4. every selected PKN edge must be used by at least one flow column; and\n", + "5. an incoming edge to a hard-intervention target is unavailable in that flow column, although it remains available in other intervention patterns and in the regression equations where applicable.\n", + "\n", + "These rules ensure that selected edges form intervention-to-measurement routes rather than disconnected graph fragments. By default, `min_commodity_coverage=0`, so a particular flow column may remain inactive. When coverage or unexplained-route penalties are enabled, each flow column is weighted by the number of evidence units it represents (`group_count`), including explicit groups and any pooled implicit unit. The table below shows which auxiliary flow columns use each selected edge." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "38cf4556", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T22:59:02.101212Z", + "iopub.status.busy": "2026-09-21T22:59:02.101133Z", + "iopub.status.idle": "2026-09-21T22:59:02.104585Z", + "shell.execute_reply": "2026-09-21T22:59:02.104309Z" + }, + "papermill": { + "duration": 0.00665, + "end_time": "2026-09-21T22:59:02.105153", + "exception": false, + "start_time": "2026-09-21T22:59:02.098503", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
flow 0: do(EGFR) [implicit: EGFR_low, EGFR_high]flow 1: do(AKT) [implicit: AKT_on]flow 2: do(AKT) [implicit: AKT_off]flow 3: do(ERK) [implicit: ERK_on, ERK_off]
EGFR → AKT1000
EGFR → ERK1000
AKT → FOXO1000
ERK → ELK11000
\n", + "
" + ], + "text/plain": [ + " flow 0: do(EGFR) [implicit: EGFR_low, EGFR_high] \\\n", + "EGFR → AKT 1 \n", + "EGFR → ERK 1 \n", + "AKT → FOXO 1 \n", + "ERK → ELK1 1 \n", + "\n", + " flow 1: do(AKT) [implicit: AKT_on] \\\n", + "EGFR → AKT 0 \n", + "EGFR → ERK 0 \n", + "AKT → FOXO 0 \n", + "ERK → ELK1 0 \n", + "\n", + " flow 2: do(AKT) [implicit: AKT_off] \\\n", + "EGFR → AKT 0 \n", + "EGFR → ERK 0 \n", + "AKT → FOXO 0 \n", + "ERK → ELK1 0 \n", + "\n", + " flow 3: do(ERK) [implicit: ERK_on, ERK_off] \n", + "EGFR → AKT 0 \n", + "EGFR → ERK 0 \n", + "AKT → FOXO 0 \n", + "ERK → ELK1 0 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "usage = method.get_edge_usage()\n", + "commodity_labels = []\n", + "for info in method.get_commodity_info():\n", + " evidence = [\n", + " f\"{unit['intervention_group'] or 'implicit'}: {', '.join(map(str, unit['sample_names']))}\"\n", + " for unit in info['evidence_units']\n", + " ]\n", + " commodity_labels.append(f\"flow {info['index']}: do({info['source']}) [{'; '.join(evidence)}]\")\n", + "selected_labels = [\n", + " f'{row.source} → {row.target}'\n", + " for row in edge_table.loc[selected].itertuples()\n", + "]\n", + "\n", + "pd.DataFrame(\n", + " usage[selected].astype(int),\n", + " index=selected_labels,\n", + " columns=commodity_labels,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "35231820", + "metadata": { + "papermill": { + "duration": 0.002163, + "end_time": "2026-09-21T22:59:02.109510", + "exception": false, + "start_time": "2026-09-21T22:59:02.107347", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "A `1` means that the auxiliary connectivity route uses that edge. It does **not** measure signaling strength, confidence, molecule abundance, or causal effect size. The fitted coefficient—not the flow value—determines how an edge contributes to a linear equation." + ] + }, + { + "cell_type": "markdown", + "id": "681b07ee", + "metadata": { + "papermill": { + "duration": 0.002219, + "end_time": "2026-09-21T22:59:02.126893", + "exception": false, + "start_time": "2026-09-21T22:59:02.124674", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Interpretation and limitations\n", + "\n", + "The result is one acyclic linear model minimizing the configured combination of fitting error, edge penalty, and any enabled intervention-shift or missing-route penalties. It is not necessarily the graph with the fewest edges. A time-limited solver result may be only the best feasible graph found before the limit, rather than a proven optimum.\n", + "\n", + "With exact coefficient support, every selected edge has a normalized coefficient at least as large as the chosen threshold. With structural support, an edge may be selected only to complete a connectivity route and still have coefficient zero. Neither choice guarantees a nonzero total effect from an intervention to a response: effects along different paths can cancel.\n", + "\n", + "Its interpretation depends on several assumptions:\n", + "\n", + "- coefficients can be learned only from samples containing the required target and parent measurements; a fully unobserved internal vertex has no data from which to estimate its equation;\n", + "- coefficients are shared across conditions and effects are additive and linear;\n", + "- `intervention=\"hard\"` fixes the target and removes its equation for that sample;\n", + "- hidden common causes, feedback dynamics, and condition-specific coefficients are not modeled;\n", + "- an edge can be selected only if at least one auxiliary intervention-to-response route uses it, even if an excluded edge is biologically real;\n", + "- alternative graphs may fit noisy data similarly.\n", + "\n", + "Before drawing conclusions, repeat the analysis across plausible edge penalties and coefficient thresholds, resample conditions or cells where appropriate, and test reasonable PKN variants. Report which interactions remain selected and which alternative graphs explain the data similarly.\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.14" + }, + "papermill": { + "default_parameters": {}, + "duration": 3.502592, + "end_time": "2026-09-21T22:59:02.347565", + "environment_variables": {}, + "exception": null, + "input_path": "docs/guide/causal/linear-dag-discovery.ipynb", + "output_path": "/private/tmp/linear-dag-discovery-executed.ipynb", + "parameters": {}, + "start_time": "2026-09-21T22:58:58.844973", + "version": "2.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/guide/index.md b/docs/guide/index.md index 53197bb1c..5b87710c2 100644 --- a/docs/guide/index.md +++ b/docs/guide/index.md @@ -15,9 +15,9 @@ The library is designed with minimal dependencies and is easily extendable, maki ```{toctree} :maxdepth: 3 -method-inputs intro/index networks/index +causal/index metabolism/index signaling/index interoperability/index diff --git a/docs/guide/intro/data.ipynb b/docs/guide/intro/data.ipynb index 04e3c0b75..4a595f6c7 100644 --- a/docs/guide/intro/data.ipynb +++ b/docs/guide/intro/data.ipynb @@ -2,532 +2,226 @@ "cells": [ { "cell_type": "markdown", - "id": "0a2cb032", + "id": "working-with-data", "metadata": {}, "source": [ + "(guide-working-with-data)=\n", "# Working with data\n", "\n", - "CORNETO provides a flexible way to work with data in a convenient way for network problems. You can use the `Data` class to create a new dataset, or you can load an existing dataset from a file. The `Data` class provides methods for querying a given dataset. The main goal of this class is to provide a simple interface for working with datasets that are typically sparse and can be stored in memory, while still allowing for complex queries and transformations." + "A CORNETO analysis brings together a biological network and experimental observations. The network describes what can interact; the observations describe what was measured in one or more samples or experimental conditions.\n", + "\n", + "CORNETO represents these observations with the `Data` class. A `Data` object keeps related measurements together, records which sample they belong to, and provides a common data model for CORNETO methods." ] }, { "cell_type": "code", - "execution_count": 2, - "id": "56be29e1", + "execution_count": null, + "id": "import-corneto", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev5 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.4, PICOS v2.6.0
Default backend (corneto.opt):CVXPY
Installed solvers:CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/repos/pablormier/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import corneto as cn\n", - "\n", - "cn.info()" + "import corneto as cn" ] }, { "cell_type": "markdown", - "id": "ff4ef0e0", + "id": "data-model", "metadata": {}, "source": [ - "## Creating a new dataset from a dictionary\n", + "## Samples and features\n", "\n", - "Most of the network inference approaches in CORNETO require some type of measurements to be mapped to prior knowledge networks. For convenience, datasets used in CORNETO are represented as dictionaries with features (any measurement that is mapped, or will be mapped to a prior knowledge network), and samples, which are collections of features. The simplest way to create a dataset is to define a dictionary where keys are sample names (e.g. conditions like different perturbed cells). Each sample has features, which are lists of dictionaries containing information about the feature. Every feature has at least an id (e.g., gene name, protein name, metabolite name, etc), a value for that sample, and a mapping attribute which indicates if this feature maps to a vertex, edge, or none (for features that are not mapped to the network, or needs pre-processing to determine the mapping values). Every method may require additional attributes, which are described in the documentation of each method. The following example shows how to create a simple dataset:\n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3b913364", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# A simple dataset with two samples, and three features per sample.\n", + "A `Data` object contains named samples. Each sample contains features, such as measured proteins, genes, metabolites, or phenotypes. Every feature has three common fields:\n", "\n", - "samples = {\n", - " \"sample1\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - " \"sample2\": {\n", - " \"features\": [\n", - " {\"id\": \"receptor2\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"input\"},\n", - " {\"id\": \"tf1\", \"value\": 1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " {\"id\": \"tf2\", \"value\": -1, \"mapping\": \"vertex\", \"role\": \"output\"},\n", - " ]\n", - " },\n", - "}\n", + "- `id` identifies the measured entity.\n", + "- `value` stores its observed value.\n", + "- `mapping` says whether the feature corresponds to a network `vertex`, a network `edge`, or is currently mapped to `none`.\n", "\n", - "data = cn.Data.from_dict(samples)\n", - "data" + "Features can also carry information such as the assay, units, or a biological role. These additional fields are kept with the feature. Their meaning depends on the method that uses the data, so each method documents the fields it requires." ] }, { "cell_type": "markdown", - "id": "e3d71dbb", + "id": "create-data", "metadata": {}, "source": [ - "For convenience, data can be imported from a more compacted dictionary definition where features are also indexed by id." + "## Creating a dataset\n", + "\n", + "Here we record measurements from untreated cells and cells stimulated with EGF. Protein measurements map to vertices in a network. Cell viability is retained as part of the experiment but is not mapped to the network." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "f4a41dd9", + "execution_count": null, + "id": "create-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 4])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "samples = {\n", - " \"sample1\": {\n", - " \"receptor1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + "observations = {\n", + " \"untreated\": {\n", + " \"EGFR\": {\"value\": 0.18, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.22, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.96, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", - " \"sample2\": {\n", - " \"receptor2\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"input\",\n", - " },\n", - " \"tf1\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf3\": {\n", - " \"value\": -1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", - " },\n", - " \"tf4\": {\n", - " \"value\": 1,\n", - " \"mapping\": \"vertex\",\n", - " \"role\": \"output\",\n", + " \"EGF\": {\n", + " \"EGFR\": {\"value\": 0.91, \"mapping\": \"vertex\"},\n", + " \"MAPK1\": {\"value\": 0.84, \"mapping\": \"vertex\"},\n", + " \"cell_viability\": {\n", + " \"value\": 0.94, \"mapping\": \"none\", \"assay\": \"phenotype\"\n", " },\n", " },\n", "}\n", "\n", - "data = cn.Data.from_cdict(samples)\n", + "data = cn.Data.from_cdict(observations)\n", "data" ] }, - { - "cell_type": "code", - "execution_count": 5, - "id": "6eaae82b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Samples are just lists of features\n", - "data.samples[\"sample1\"].features" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "6d261bde", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'receptor1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'receptor2',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'input'},\n", - " {'id': 'tf1', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# We can add a new feature to a sample. These are stored as lists.\n", - "data.samples[\"sample1\"].features.append(cn.Feature(id=\"tf3\", value=1, mapping=\"vertex\", role=\"output\"))\n", - "data.to_dict()" - ] - }, { "cell_type": "markdown", - "id": "a9f7a259", + "id": "inspect-data", "metadata": {}, "source": [ - "## Querying features\n", - "\n", - "To inspect or obtain features from a dataset, you can use the `query` method. This method allows you to filter features based on their attributes. For example, you can find all features that are mapped to a specific vertex in the network, or all features that have a specific value." + "The sample names are preserved, and each sample contains its own feature values." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "c454e1aa", + "execution_count": null, + "id": "inspect-samples", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Sample(n_feats=3)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).collect()" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "f218854b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3'}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# We can get all the unique ids from the samples\n", - "data.samples[\"sample1\"].query.filter(lambda f: f.id.startswith(\"tf\")).pluck()" + "list(data.samples)" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "67f27401", + "execution_count": null, + "id": "inspect-features", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf2, value=1, mapping=vertex, role=output),\n", - " Feature(id=tf3, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique ids\n", - "data.samples[\"sample1\"].query.unique().to_list()" + "data.samples[\"EGF\"].features" ] }, { "cell_type": "markdown", - "id": "8ed64112", + "id": "query-data", "metadata": {}, "source": [ - "The `unique()` method can use different keys to determine uniqueness. By default, it uses the feature's `id` field, but you can specify other fields like `mapping`, `role`, or any combination of keys." + "## Querying measurements\n", + "\n", + "Queries make it possible to select features without changing the original dataset. For example, we can retain only measurements that map to network vertices." ] }, { "cell_type": "code", - "execution_count": 10, - "id": "84746f4f", + "execution_count": null, + "id": "query-vertices", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[Feature(id=receptor1, value=1, mapping=vertex, role=input),\n", - " Feature(id=tf1, value=1, mapping=vertex, role=output)]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Get features with unique roles\n", - "data.samples[\"sample1\"].query.unique([\"role\"]).to_list()" + "network_measurements = (\n", + " data.query.filter_features(\n", + " lambda feature: feature.mapping == \"vertex\"\n", + " ).collect()\n", + ")\n", + "network_measurements" ] }, { "cell_type": "markdown", - "id": "7fe04517", + "id": "copy-data", "metadata": {}, "source": [ - "## Working across multiple samples\n", + "## Copying and extending data\n", "\n", - "The `Data` class also provides a query interface that works across all samples. This allows you to perform operations on all features in all samples at once." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "ed2d114e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'receptor1', 'receptor2', 'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get all unique feature IDs across all samples\n", - "data.query.pluck()" + "Use `copy()` when you want to modify a dataset while keeping the original unchanged. Features can then be added to an individual sample." ] }, { "cell_type": "code", - "execution_count": 12, - "id": "9e540bbc", + "execution_count": null, + "id": "copy-data-code", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'tf1', 'tf2', 'tf3', 'tf4'}" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Get features with unique IDs across all samples\n", - "data.query.filter_features(lambda f: f.id.startswith(\"tf\")).unique().pluck()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "351775a7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=2, n_feats=[3 3])" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# Filter features across all samples\n", - "dataq = data.query.filter_features(lambda f: f.id.startswith(\"tf\")).collect()\n", + "extended_data = data.copy()\n", + "extended_data.samples[\"EGF\"].add(\n", + " cn.Feature(\n", + " id=\"AKT1\",\n", + " value=0.73,\n", + " mapping=\"vertex\",\n", + " assay=\"phosphoproteomics\",\n", + " )\n", + ")\n", "\n", - "dataq" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "dd79a300", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataq.to_dict()" + "len(data.samples[\"EGF\"].features), len(extended_data.samples[\"EGF\"].features)" ] }, { "cell_type": "markdown", - "id": "d47b7938", + "id": "save-data", "metadata": {}, "source": [ - "## Saving and loading datasets" + "## Saving and loading data\n", + "\n", + "A `Data` object can be saved and loaded without losing sample names, feature values, mappings, or additional annotations." ] }, { "cell_type": "code", - "execution_count": 20, - "id": "475e808b", + "execution_count": null, + "id": "save-data-code", "metadata": {}, "outputs": [], "source": [ - "import tempfile\n", + "from pathlib import Path\n", + "from tempfile import TemporaryDirectory\n", "\n", - "file = tempfile.NamedTemporaryFile(delete=False).name\n", - "dataq.save(file, compression=\"xz\")" + "with TemporaryDirectory() as directory:\n", + " data_path = Path(directory) / \"experiment.json.xz\"\n", + " data.save(data_path)\n", + " restored_data = cn.Data.load(data_path)\n", + "\n", + "restored_data.to_dict() == data.to_dict()" ] }, { - "cell_type": "code", - "execution_count": 22, - "id": "2386db6a", + "cell_type": "markdown", + "id": "using-data-with-methods", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'sample1': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf2', 'value': 1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf3', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]},\n", - " 'sample2': {'features': [{'id': 'tf1',\n", - " 'value': 1,\n", - " 'mapping': 'vertex',\n", - " 'role': 'output'},\n", - " {'id': 'tf3', 'value': -1, 'mapping': 'vertex', 'role': 'output'},\n", - " {'id': 'tf4', 'value': 1, 'mapping': 'vertex', 'role': 'output'}]}}" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "dataq.load(file, compression=\"xz\").to_dict()" + "(guide-data-methods)=\n", + "## Using data with methods\n", + "\n", + "`Data` is the general representation used by CORNETO methods. If your observations are already stored as a `Data` object, pass them to the method through `build_from_data`: \n", + "\n", + "```python\n", + "problem = method.build_from_data(network, data)\n", + "```\n", + "\n", + "For common analyses, methods also provide shorter interfaces. `build` accepts the scientific inputs for one condition, while `build_many` accepts inputs for several named conditions:\n", + "\n", + "```python\n", + "problem = method.build(network, ...)\n", + "problem = method.build_many(network, ...)\n", + "```\n", + "\n", + "These convenience methods validate their inputs, create the corresponding `Data` object, and then build the optimization problem. The biological meaning and names of the inputs differ between methods, so they are explained in each method's guide." ] } ], "metadata": { "kernelspec": { - "display_name": "corneto-hVfbzgbT-py3.12", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.12" } }, "nbformat": 4, diff --git a/docs/guide/metabolism/flux-balance-analysis.ipynb b/docs/guide/metabolism/flux-balance-analysis.ipynb index 7fbf1451c..3f15dab00 100644 --- a/docs/guide/metabolism/flux-balance-analysis.ipynb +++ b/docs/guide/metabolism/flux-balance-analysis.ipynb @@ -2,9212 +2,300 @@ "cells": [ { "cell_type": "markdown", - "id": "f2d7b3c9", + "id": "fba-introduction", "metadata": {}, "source": [ - "# Flux Balance Analysis (FBA)\n", - " \n", - "Flux Balance Analysis (FBA) is a computational method used primarily in systems biology and metabolic engineering. It's a way to understand and predict the flow or \"flux\" of metabolites in a metabolic network under certain conditions.\n", + "# Flux balance analysis\n", "\n", - "In this tutorial, we will see how to create FBA problems with CORNETO for metabolic analysis, how CORNETO can interoperate with other FBA-based libraries such as COBRApy or MIOM, and how CORNETO's FBA problem can be used as a building block for more advanced FBA methods. \n", + "Flux balance analysis (FBA) predicts steady-state fluxes in a metabolic network. For a stoichiometric matrix $S$ and reaction-flux vector $v$, FBA imposes\n", "\n", - "## What is FBA?\n", + "$$\n", + "S v = 0, \\qquad v_{\\mathrm{lower}} \\leq v \\leq v_{\\mathrm{upper}},\n", + "$$\n", "\n", - "The basis of FBA lies in the principle of steady-state, where the concentration of internal metabolites doesn't change over time even though they may be consumed and produced. This means that the total rate at which a metabolite is produced equals the rate at which it's consumed. \n", + "and optimizes an objective such as biomass production. These models are commonly used to predict growth, compare media, simulate knockouts, and identify metabolic-engineering strategies.\n", "\n", - "In the realm of metabolic network analysis, this concept translates to steady-state metabolic fluxes. A flux is a rate at which a substance moves through a system, and in metabolic systems, flux represents the rate of turnover of a metabolite through a specific pathway or reaction. When considering the steady-state, each reaction's flux in the metabolic network is balanced, meaning that, for every internal metabolite, the sum of fluxes leading to its production is equal to the sum of fluxes leading to its consumption. This balance ensures that, over time, there's no accumulation or depletion of any metabolite in the system.\n", + "CORNETO brings FBA into the same optimization framework used for other network-inference problems. It interoperates with COBRApy models and supports standard FBA, while exposing the resulting optimization problem so that constraints, conditions, sparsity, and omics-derived evidence can be combined through a common interface.\n", "\n", - "For quantifying these fluxes, the typical units used are millimoles per gram dry weight per hour (mmol/gDW/h). The \"mmol\" part represents the quantity of the metabolite, the \"gDW\" (gram dry weight) normalizes this value to the biomass of the organism, and the \"/h\" provides a temporal dimension, indicating how fast the metabolic turnover occurs. This unit allows researchers and practitioners to make meaningful comparisons across different metabolic systems and conditions. For example, a flux value of 5 mmol/gDW/h for a particular reaction indicates that 5 millimoles of the relevant metabolite are produced or consumed per gram of the organism's dry weight every hour.\n", - "\n", - "
\n", - " \"Flux\n", - "
\n", - " \n", - " Figure 1: Vivek-Ananth, R. P., and Areejit Samal. \"Advances in the integration of transcriptional regulatory information into genome-scale metabolic models.\" Biosystems 147 (2016): 1-10.\n", - " \n", - "
\n", - "\n", - "\n", - "\n", - "## FBA with CORNETO\n", - "\n", - "In order to define a FBA problem, you need to know the following:\n", - "\n", - "- **Genome-scale metabolic network**: This is the prior knowledge, usually known as genome-scale metabolic models (GEMs). These models represent the metabolic network through a stoichiometric matrix, where each row represents a metabolite and each column represents a reaction. The entries in the matrix are the stoichiometric coefficients of the metabolites in the reactions. These models also contain annotations such as Gene-Protein-Rules (GPRs) and default reaction bounds.\n", - "\n", - "- **Constraints**: For each reaction, there are limits or \"constraints\" on the flux based on factors like enzyme capacities. Basically, it’s setting the maximum and minimum fluxes for the reactions.\n", - "\n", - "- **Objective function**: You then define an objective to optimize, like maximizing the production of a specific metabolite or maximizing growth rate.\n", - "\n", - "- **LP Solver**: Using linear programming techniques, you can find the flux distribution that meets the constraints and optimizes the objective function.\n", - "\n", - "\n", - "CORNETO naturally supports FBA-based problems by transforming a genome scale metabolic network into a prior knowledge graph, and then modelling the FBA problem as a network flow problem. This is the main building block for creating more complex problems, such as multicondition Sparse FBA or multicondition iMAT for context-specific reconstruction.\n" + "COBRApy remains a natural tool for curating metabolic models and running established COBRA workflows. CORNETO is useful when the formulation itself must be extended or several network-inference problems must be expressed together." ] }, { "cell_type": "markdown", - "id": "83bd70ba", + "id": "concept-map", "metadata": {}, "source": [ - "## Using COBRApy\n", + "## From COBRApy to CORNETO\n", "\n", - "Here we show how can we use COBRApy to import the `textbook` metabolic network and how can we import it in CORNETO. We will also compare the FBA solution from COBRApy and CORNETO." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "662e7b90", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n", - "Set parameter LicenseID to value 2593994\n", - "Academic license - for non-commercial use only - expires 2025-12-02\n" - ] - }, - { - "data": { - "text/plain": [ - "(72, 95)" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from cobra.io import load_model\n", + "| COBRApy concept | CORNETO concept |\n", + "|---|---|\n", + "| `cobra.Model` | metabolic hypergraph |\n", + "| metabolite | vertex |\n", + "| reaction and stoichiometry | directed hyperedge and its coefficients |\n", + "| reaction bounds | edge-flow bounds |\n", + "| objective coefficients | reaction objectives |\n", + "| `solution.fluxes` | `problem.expr.flow.value` |\n", + "| optimize a configured model | build and extend an optimization problem |\n", "\n", - "model = load_model(\"textbook\")\n", - "len(model.metabolites), len(model.reactions)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "86322a8f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Reaction identifierBiomass_Ecoli_core
NameBiomass Objective Function with GAM
Memory address0x165a9e840
Stoichiometry\n", - "

1.496 3pg_c + 3.7478 accoa_c + 59.81 atp_c + 0.361 e4p_c + 0.0709 f6p_c + 0.129 g3p_c + 0.205 g6p_c + 0.2557 gln__L_c + 4.9414 glu__L_c + 59.81 h2o_c + 3.547 nad_c + 13.0279 nadph_c + 1.7867 oaa_c...

\n", - "

1.496 3-Phospho-D-glycerate + 3.7478 Acetyl-CoA + 59.81 ATP + 0.361 D-Erythrose 4-phosphate + 0.0709 D-Fructose 6-phosphate + 0.129 Glyceraldehyde 3-phosphate + 0.205 D-Glucose 6-phosphate + 0.2557...

\n", - "
GPR
Lower bound0.0
Upper bound1000.0
\n", - " " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "biomass_rxn = model.reactions.get_by_id(\"Biomass_Ecoli_core\")\n", - "biomass_rxn" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "1f1db2c3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - } - ], - "source": [ - "solution = model.optimize()\n", - "print(solution)" + "The graph representation preserves reaction identifiers, stoichiometry, default bounds, and gene–protein–reaction annotations imported from the COBRApy model." ] }, { "cell_type": "markdown", - "id": "55cdaff4-984d-4b34-abcc-3edabd54ca44", + "id": "load-cobrapy-model", "metadata": {}, "source": [ - "## Using CORNETO" + "### Solve the COBRApy model\n", + "\n", + "We start with the familiar *E. coli* core model distributed with COBRApy." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "3b2af9de", + "execution_count": null, + "id": "imports", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev5 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.4, PICOS v2.6.0
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, CVXOPT, GLOP, GLPK, GLPK_MI, GUROBI, HIGHS, OSQP, PDLP, PROXQP, SCIP, SCIPY, SCS
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/repos/pablormier/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ - "import numpy as np\n", + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", "\n", - "import corneto as cn\n", + "import numpy as np\n", + "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "cn.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "67301de4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(72, 95)" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleFBA\n", "\n", - "G = cobra_model_to_graph(model)\n", - "G.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "d2efe710", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'__edge_type': 'directed',\n", - " 'id': 'Biomass_Ecoli_core',\n", - " '__source_attr': {'3pg_c': {'__value': -1.496},\n", - " 'accoa_c': {'__value': -3.7478},\n", - " 'atp_c': {'__value': -59.81},\n", - " 'e4p_c': {'__value': -0.361},\n", - " 'f6p_c': {'__value': -0.0709},\n", - " 'g3p_c': {'__value': -0.129},\n", - " 'g6p_c': {'__value': -0.205},\n", - " 'gln__L_c': {'__value': -0.2557},\n", - " 'glu__L_c': {'__value': -4.9414},\n", - " 'h2o_c': {'__value': -59.81},\n", - " 'nad_c': {'__value': -3.547},\n", - " 'nadph_c': {'__value': -13.0279},\n", - " 'oaa_c': {'__value': -1.7867},\n", - " 'pep_c': {'__value': -0.5191},\n", - " 'pyr_c': {'__value': -2.8328},\n", - " 'r5p_c': {'__value': -0.8977}},\n", - " '__target_attr': {'adp_c': {'__value': 59.81},\n", - " 'akg_c': {'__value': 4.1182},\n", - " 'coa_c': {'__value': 3.7478},\n", - " 'h_c': {'__value': 59.81},\n", - " 'nadh_c': {'__value': 3.547},\n", - " 'nadp_c': {'__value': 13.0279},\n", - " 'pi_c': {'__value': 59.81}},\n", - " 'default_lb': 0.0,\n", - " 'default_ub': 1000.0,\n", - " 'GPR': ''}" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rid = list(G.get_edges_by_attr(\"id\", biomass_rxn.id))[0]\n", - "G.get_attr_edge(rid)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "8d57a2f4", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G.plot(layout=\"fdp\")" + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "cobra_solution = model.optimize()\n", + "\n", + "pd.Series(\n", + " {\n", + " \"metabolites\": len(model.metabolites),\n", + " \"reactions\": len(model.reactions),\n", + " \"biomass flux\": cobra_solution.fluxes[biomass_id],\n", + " },\n", + " name=\"COBRApy model\",\n", + ")" ] }, { - "cell_type": "code", - "execution_count": 8, - "id": "1b29ccc3", + "cell_type": "markdown", + "id": "convert-and-solve", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'_flow': _flow: Variable((95,), _flow),\n", - " 'edge_has_flux': edge_has_flux: Variable((95,), edge_has_flux, boolean=True),\n", - " 'flow': _flow: Variable((95,), _flow)}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "from corneto.methods import MultiSampleFBA as FBA\n", + "### Convert the model and solve with CORNETO\n", "\n", - "d = cn.Data.from_cdict({\"fba_example\": {\"Biomass_Ecoli_core\": {\"role\": \"objective\"}}})\n", + "`cobra_model_to_graph` converts each reaction into a stoichiometric hyperedge. `MultiSampleFBA.build` then constructs the mass-balance constraints, applies the imported bounds, and adds the requested reaction objective.\n", "\n", - "m = FBA()\n", - "P = m.build(G, d)\n", - "P.expr" + "`MultiSampleFBA` minimizes a weighted objective. Therefore, the coefficient `-1` below maximizes biomass. CORNETO's general optimization API also supports an explicit `Direction.MAX` when constructing a problem directly, but `direction` is not an argument of `MultiSampleFBA.build`." ] }, { "cell_type": "code", - "execution_count": 9, - "id": "fa9bda70-6811-4fb8-86c6-18d60a7a0e2e", + "execution_count": null, + "id": "build-corneto-fba", "metadata": {}, "outputs": [], "source": [ - "P.solve(solver=\"scipy\");" + "G = cobra_model_to_graph(model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_idx = reaction_index[biomass_id]\n", + "\n", + "problem = MultiSampleFBA().build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + ")\n", + "problem.solve(solver=\"scipy\")\n", + "\n", + "corneto_biomass = float(problem.expr.flow[biomass_idx].value)\n", + "comparison = pd.Series(\n", + " {\n", + " \"COBRApy\": cobra_solution.fluxes[biomass_id],\n", + " \"CORNETO\": corneto_biomass,\n", + " },\n", + " name=\"optimal biomass flux\",\n", + ")\n", + "\n", + "assert np.isclose(comparison[\"COBRApy\"], comparison[\"CORNETO\"], atol=1e-7)\n", + "comparison" ] }, { - "cell_type": "code", - "execution_count": 10, - "id": "9782359c-e4e5-49a7-8474-a8904abb11f9", + "cell_type": "markdown", + "id": "inspect-results", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0.8739215069684303" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "opt_flux = P.expr.flow[rid].value\n", - "opt_flux" + "Fluxes follow the graph's edge order. Mapping that order back to reaction identifiers gives a labeled result analogous to `solution.fluxes`." ] }, { "cell_type": "code", - "execution_count": 11, - "id": "54dfa3d3-6e47-4430-8d78-c41f6841f0e6", + "execution_count": null, + "id": "flux-table", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "48" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "sum(np.abs(P.expr.flow.value) >= 1e-6)" + "fluxes = pd.Series(\n", + " np.asarray(problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " name=\"flux\",\n", + ")\n", + "fluxes.loc[[biomass_id, \"EX_glc__D_e\", \"EX_o2_e\", \"ATPM\"]]" ] }, { - "cell_type": "code", - "execution_count": 12, - "id": "d088eaaa-9e73-4447-ab83-c0f644bbd997", + "cell_type": "markdown", + "id": "compose-constraints", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
fluxes
ACALD-0.000000
ACALDt0.000000
ACKr0.000000
ACONTa6.007250
ACONTb6.007250
......
TALA1.496984
THD20.000000
TKT11.496984
TKT21.181498
TPI7.477382
\n", - "

95 rows × 1 columns

\n", - "
" - ], - "text/plain": [ - " fluxes\n", - "ACALD -0.000000\n", - "ACALDt 0.000000\n", - "ACKr 0.000000\n", - "ACONTa 6.007250\n", - "ACONTb 6.007250\n", - "... ...\n", - "TALA 1.496984\n", - "THD2 0.000000\n", - "TKT1 1.496984\n", - "TKT2 1.181498\n", - "TPI 7.477382\n", - "\n", - "[95 rows x 1 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "import pandas as pd\n", + "## Extend the optimization problem\n", "\n", - "pd.DataFrame(P.expr.flow.value, index=G.get_attr_from_edges(\"id\"), columns=[\"fluxes\"])" + "A built CORNETO problem is still editable. For example, the following constraint limits oxygen uptake to 10 mmol gDW$^{-1}$ h$^{-1}$. In this model, exchange uptake is a negative flux, so a less-negative lower limit permits less uptake." ] }, { "cell_type": "code", - "execution_count": 13, - "id": "e0771fcb", + "execution_count": null, + "id": "oxygen-constraint", "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "G.plot(custom_edge_attr=cn.pl.flow_style(P), layout=\"fdp\")" + "oxygen_idx = reaction_index[\"EX_o2_e\"]\n", + "\n", + "oxygen_limited = MultiSampleFBA().build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + ")\n", + "oxygen_limited += oxygen_limited.expr.flow[oxygen_idx] >= -10\n", + "oxygen_limited.solve(solver=\"scipy\")\n", + "\n", + "oxygen_limited_biomass = float(oxygen_limited.expr.flow[biomass_idx].value)\n", + "assert oxygen_limited_biomass < corneto_biomass\n", + "\n", + "pd.Series(\n", + " {\n", + " \"default medium\": corneto_biomass,\n", + " \"oxygen-limited\": oxygen_limited_biomass,\n", + " },\n", + " name=\"optimal biomass flux\",\n", + ")" ] }, { "cell_type": "markdown", - "id": "custom-media-01", + "id": "multiple-media", "metadata": {}, "source": [ - "## Passing a custom media composition\n", + "## Solve multiple media conditions\n", "\n", - "Media composition is represented as sample-specific reaction bounds. In CORNETO, each sample passed to `MultiSampleFBA` can include exchange reactions with `lower_bound` and `upper_bound` values. For exchange reactions in this model, uptake is a negative flux, so a more negative lower bound allows more uptake.\n", - "\n", - "The same data object can also include the biomass objective, which lets us solve several media conditions in one FBA problem." + "`build_many` creates one flux vector per named condition. Objectives and reaction bounds use an outer mapping with the same condition names. Conditions are solved in one problem, which also makes it possible for advanced formulations to couple them." ] }, { "cell_type": "code", "execution_count": null, - "id": "custom-media-02", + "id": "build-many", "metadata": {}, "outputs": [], "source": [ - "media = {\n", + "condition_objectives = {\n", + " \"glucose_rich\": {biomass_id: -1},\n", + " \"glucose_limited\": {biomass_id: -1},\n", + "}\n", + "condition_bounds = {\n", " \"glucose_rich\": {\n", - " \"EX_glc__D_e\": {\"lower_bound\": -10.0, \"upper_bound\": 1000.0},\n", - " \"EX_o2_e\": {\"lower_bound\": -20.0, \"upper_bound\": 1000.0},\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", " },\n", " \"glucose_limited\": {\n", - " \"EX_glc__D_e\": {\"lower_bound\": -2.0, \"upper_bound\": 1000.0},\n", - " \"EX_o2_e\": {\"lower_bound\": -20.0, \"upper_bound\": 1000.0},\n", + " \"EX_glc__D_e\": (-2.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", " },\n", "}\n", "\n", - "media_data = cn.Data.from_cdict(\n", + "media_problem = MultiSampleFBA().build_many(\n", + " G,\n", + " objectives=condition_objectives,\n", + " reaction_bounds=condition_bounds,\n", + ")\n", + "media_problem.solve(solver=\"scipy\")\n", + "\n", + "condition_names = list(condition_objectives)\n", + "reported_reactions = [biomass_id, \"EX_glc__D_e\", \"EX_o2_e\"]\n", + "media_fluxes = pd.DataFrame(\n", " {\n", " condition: {\n", - " \"Biomass_Ecoli_core\": {\"role\": \"objective\"},\n", - " **bounds,\n", + " reaction_id: float(media_problem.expr.flow[reaction_index[reaction_id], column].value)\n", + " for reaction_id in reported_reactions\n", " }\n", - " for condition, bounds in media.items()\n", + " for column, condition in enumerate(condition_names)\n", " }\n", ")\n", "\n", - "media_data" + "assert media_problem.expr.flow.value.shape == (G.num_edges, len(condition_names))\n", + "assert media_fluxes.loc[biomass_id, \"glucose_limited\"] < media_fluxes.loc[biomass_id, \"glucose_rich\"]\n", + "media_fluxes" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "custom-media-03", + "cell_type": "markdown", + "id": "sparse-fba", "metadata": {}, - "outputs": [], "source": [ - "media_problem = FBA().build(G, media_data)\n", - "media_problem.solve(solver=\"scipy\");" + "## Sparse FBA\n", + "\n", + "CORNETO can associate each reaction with a binary indicator that records whether its flux is nonzero. With `lambda_reg > 0`, it penalizes the number of active reactions. Because of these indicators, sparse FBA is a mixed-integer linear program (MILP), rather than the linear program used by the standard mathematical FBA formulation.\n", + "\n", + "Here we require at least 90% of the optimal biomass and optimize biomass together with a penalty on the number of active reactions. `lambda_reg` controls that trade-off; larger values give reaction count more influence. The biomass floor prevents sparsity from being achieved by suppressing growth." ] }, { "cell_type": "code", "execution_count": null, - "id": "custom-media-04", + "id": "solve-sparse-fba", "metadata": {}, "outputs": [], "source": [ - "reaction_ids = [\"Biomass_Ecoli_core\", \"EX_glc__D_e\", \"EX_o2_e\"]\n", - "reaction_index = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in reaction_ids}\n", + "biomass_floor = 0.90 * corneto_biomass\n", + "sparse_problem = MultiSampleFBA(lambda_reg=0.1).build(\n", + " G,\n", + " objectives={biomass_id: -1},\n", + " reaction_bounds={biomass_id: (biomass_floor, None)},\n", + ")\n", + "sparse_problem.solve(solver=\"highs\")\n", + "\n", + "sparse_biomass = float(sparse_problem.expr.flow[biomass_idx].value)\n", + "standard_active = int(np.count_nonzero(np.abs(problem.expr.flow.value) > 1e-6))\n", + "sparse_active = int(np.count_nonzero(np.abs(sparse_problem.expr.flow.value) > 1e-6))\n", + "\n", + "assert sparse_biomass >= biomass_floor - 1e-7\n", + "assert sparse_active <= standard_active\n", "\n", - "pd.DataFrame(\n", + "pd.Series(\n", " {\n", - " condition: {rid: media_problem.expr.flow[reaction_index[rid], i].value for rid in reaction_ids}\n", - " for i, condition in enumerate(media_data.samples)\n", + " \"biomass floor\": biomass_floor,\n", + " \"sparse biomass\": sparse_biomass,\n", + " \"active reactions in standard solution\": standard_active,\n", + " \"active reactions in sparse solution\": sparse_active,\n", " }\n", ")" ] }, { "cell_type": "markdown", - "id": "custom-media-05", + "id": "pfba-and-next-steps", "metadata": {}, "source": [ - "The custom bounds override the default exchange bounds stored in the graph for the matching sample. Here, glucose-limited medium restricts `EX_glc__D_e` uptake and the optimal biomass flux decreases accordingly." - ] - }, - { - "cell_type": "markdown", - "id": "3f320215-867e-4882-bd9d-5dc94f629054", - "metadata": {}, - "source": [ - "## Sparse FBA" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "71523d1d-8742-493d-a07e-e56bb3821c40", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "===============================================================================\n", - " CVXPY \n", - " v1.6.4 \n", - "===============================================================================\n", - "(CVXPY) Apr 14 05:10:44 PM: Your problem has 190 variables, 453 constraints, and 1 parameters.\n", - "(CVXPY) Apr 14 05:10:44 PM: It is compliant with the following grammars: DCP, DQCP\n", - "(CVXPY) Apr 14 05:10:44 PM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.\n", - "(CVXPY) Apr 14 05:10:44 PM: Your problem is compiled with the CPP canonicalization backend.\n", - "-------------------------------------------------------------------------------\n", - " Compilation \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Compiling problem (target solver=HIGHS).\n", - "(CVXPY) Apr 14 05:10:44 PM: Reduction chain: Dcp2Cone -> CvxAttr2Constr -> ConeMatrixStuffing -> HIGHS\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction Dcp2Cone\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction CvxAttr2Constr\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction ConeMatrixStuffing\n", - "(CVXPY) Apr 14 05:10:44 PM: Applying reduction HIGHS\n", - "(CVXPY) Apr 14 05:10:44 PM: Finished problem compilation (took 5.011e-03 seconds).\n", - "(CVXPY) Apr 14 05:10:44 PM: (Subsequent compilations of this problem, using the same arguments, should take less time.)\n", - "-------------------------------------------------------------------------------\n", - " Numerical solver \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Invoking solver HIGHS to obtain a solution.\n", - "Running HiGHS 1.10.0 (git hash: fd86653): Copyright (c) 2025 HiGHS under MIT licence terms\n", - "MIP has 453 rows; 190 cols; 883 nonzeros; 95 integer variables (95 binary)\n", - "Coefficient ranges:\n", - " Matrix [7e-02, 1e+03]\n", - " Cost [1e-01, 1e+00]\n", - " Bound [1e+00, 1e+00]\n", - " RHS [8e-01, 1e+03]\n", - "Presolving model\n", - "153 rows, 144 cols, 493 nonzeros 0s\n", - "123 rows, 123 cols, 415 nonzeros 0s\n", - "120 rows, 119 cols, 408 nonzeros 0s\n", - "\n", - "Solving MIP model with:\n", - " 120 rows\n", - " 119 cols (78 binary, 0 integer, 0 implied int., 41 continuous)\n", - " 408 nonzeros\n", - "\n", - "Src: B => Branching; C => Central rounding; F => Feasibility pump; H => Heuristic; L => Sub-MIP;\n", - " P => Empty MIP; R => Randomized rounding; S => Solve LP; T => Evaluate node; U => Unbounded;\n", - " z => Trivial zero; l => Trivial lower; u => Trivial upper; p => Trivial point; X => User solution\n", - "\n", - " Nodes | B&B Tree | Objective Bounds | Dynamic Constraints | Work \n", - "Src Proc. InQueue | Leaves Expl. | BestBound BestSol Gap | Cuts InLp Confl. | LpIters Time\n", - "\n", - " 0 0 0 0.00% -64.93809816 inf inf 0 0 0 0 0.0s\n", - " S 0 0 0 0.00% -64.93809816 3.685702492 1861.89% 0 0 0 0 0.0s\n", - " 0 0 0 0.00% 0.5684850774 3.685702492 84.58% 0 0 0 55 0.0s\n", - "\n", - "3.8% inactive integer columns, restarting\n", - "Model after restart has 114 rows, 116 cols (75 bin., 0 int., 0 impl., 41 cont.), and 396 nonzeros\n", - "\n", - " 0 0 0 0.00% 2.003873385 3.685702492 45.63% 40 0 0 697 0.0s\n", - " S 0 0 0 0.00% 2.003873385 3.685702492 45.63% 40 0 0 697 0.0s\n", - " R 0 0 0 0.00% 2.003921104 3.685702492 45.63% 40 39 0 748 0.1s\n", - "\n", - "Symmetry detection completed in 0.0s\n", - "Found 20 full orbitope(s) acting on 46 columns\n", - "\n", - " 64 0 32 100.00% 3.685702492 3.685702492 0.00% 2216 83 456 8185 0.3s\n", - "\n", - "Solving report\n", - " Status Optimal\n", - " Primal bound 3.68570249247\n", - " Dual bound 3.68570249247\n", - " Gap 0% (tolerance: 0.01%)\n", - " P-D integral 0.0711361691274\n", - " Solution status feasible\n", - " 3.68570249247 (objective)\n", - " 0 (bound viol.)\n", - " 0 (int. viol.)\n", - " 0 (row viol.)\n", - " Timing 0.27 (total)\n", - " 0.00 (presolve)\n", - " 0.00 (solve)\n", - " 0.00 (postsolve)\n", - " Max sub-MIP depth 3\n", - " Nodes 64\n", - " Repair LPs 0 (0 feasible; 0 iterations)\n", - " LP iterations 8185 (total)\n", - " 3720 (strong br.)\n", - " 791 (separation)\n", - " 2539 (heuristics)\n", - "-------------------------------------------------------------------------------\n", - " Summary \n", - "-------------------------------------------------------------------------------\n", - "(CVXPY) Apr 14 05:10:44 PM: Problem status: optimal\n", - "(CVXPY) Apr 14 05:10:44 PM: Optimal value: 3.686e+00\n", - "(CVXPY) Apr 14 05:10:44 PM: Compilation took 5.011e-03 seconds\n", - "(CVXPY) Apr 14 05:10:44 PM: Solver (including time spent in interface) took 2.758e-01 seconds\n" - ] - } - ], - "source": [ - "m = FBA(lambda_reg=0.1)\n", - "P = m.build(G, d)\n", - "# We add a constraint to force at least 90% of optimal flux\n", - "P += P.expr.flow[rid] >= opt_flux * 0.90\n", - "P.solve(solver=\"highs\", verbosity=1);" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "517c7e1c-b1e8-4f60-8631-46e646148315", - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "coa_c\n", - "\n", - "coa_c\n", - "\n", - "\n", - "\n", - "e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "coa_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "acald_c\n", - "\n", - "acald_c\n", - "\n", - "\n", - "\n", - "acald_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c\n", - "\n", - "nad_c\n", - "\n", - "\n", - "\n", - "nad_c->e_0_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "nad_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c\n", - "\n", - "accoa_c\n", - "\n", - "\n", - "\n", - "accoa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "accoa_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c\n", - "\n", - "nadh_c\n", - "\n", - "\n", - "\n", - "e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "nadh_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c\n", - "\n", - "h_c\n", - "\n", - "\n", - "\n", - "e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "h_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_0_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "acald_e\n", - "\n", - "acald_e\n", - "\n", - "\n", - "\n", - "acald_e->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "acald_e->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "ac_c\n", - "\n", - "ac_c\n", - "\n", - "\n", - "\n", - "e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c\n", - "\n", - "atp_c\n", - "\n", - "\n", - "\n", - "atp_c->e_2_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "atp_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c\n", - "\n", - "adp_c\n", - "\n", - "\n", - "\n", - "e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "adp_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "actp_c\n", - "\n", - "actp_c\n", - "\n", - "\n", - "\n", - "e_2_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cit_c\n", - "\n", - "cit_c\n", - "\n", - "\n", - "\n", - "e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "cit_c->e_3_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c\n", - "\n", - "acon_C_c\n", - "\n", - "\n", - "\n", - "e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "acon_C_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c\n", - "\n", - "h2o_c\n", - "\n", - "\n", - "\n", - "h2o_c->e_4_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_10_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "h2o_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->acon_C_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_3_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "icit_c\n", - "\n", - "icit_c\n", - "\n", - "\n", - "\n", - "e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "icit_c->e_59_center\n", - "\n", - "\n", - "\n", - "\n", - "e_4_center->icit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h_e\n", - "\n", - "h_e\n", - "\n", - "\n", - "\n", - "e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_30_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "h_e->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "ac_e\n", - "\n", - "ac_e\n", - "\n", - "\n", - "\n", - "ac_e->e_5_center\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "ac_e->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_center->ac_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "amp_c\n", - "\n", - "amp_c\n", - "\n", - "\n", - "\n", - "amp_c->e_6_center\n", - "\n", - "\n", - "\n", - "\n", - "e_6_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_c\n", - "\n", - "akg_c\n", - "\n", - "\n", - "\n", - "akg_c->e_7_center\n", - "\n", - "\n", - "\n", - "\n", - "akg_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "succoa_c\n", - "\n", - "succoa_c\n", - "\n", - "\n", - "\n", - "co2_c\n", - "\n", - "co2_c\n", - "\n", - "\n", - "\n", - "co2_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "akg_e\n", - "\n", - "akg_e\n", - "\n", - "\n", - "\n", - "akg_e->e_8_center\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "akg_e->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_8_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_c\n", - "\n", - "etoh_c\n", - "\n", - "\n", - "\n", - "etoh_c->e_9_center\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->acald_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_9_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_c\n", - "\n", - "pi_c\n", - "\n", - "\n", - "\n", - "pi_c->e_11_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "pi_c->e_81_center\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_10_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_11_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c\n", - "\n", - "e4p_c\n", - "\n", - "\n", - "\n", - "e4p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e4p_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c\n", - "\n", - "oaa_c\n", - "\n", - "\n", - "\n", - "oaa_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_14_center\n", - "\n", - "\n", - "\n", - "\n", - "oaa_c->e_79_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c\n", - "\n", - "gln__L_c\n", - "\n", - "\n", - "\n", - "gln__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_53_center\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c\n", - "\n", - "g6p_c\n", - "\n", - "\n", - "\n", - "f6p_c\n", - "\n", - "f6p_c\n", - "\n", - "\n", - "\n", - "g6p_c->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "g6p_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c\n", - "\n", - "pep_c\n", - "\n", - "\n", - "\n", - "pep_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_78_center\n", - "\n", - "\n", - "\n", - "\n", - "pep_c->e_82_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c\n", - "\n", - "g3p_c\n", - "\n", - "\n", - "\n", - "g3p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_48_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "g3p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c\n", - "\n", - "glu__L_c\n", - "\n", - "\n", - "\n", - "glu__L_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "f6p_c->e_71_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c\n", - "\n", - "pyr_c\n", - "\n", - "\n", - "\n", - "pyr_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_70_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_72_center\n", - "\n", - "\n", - "\n", - "\n", - "pyr_c->e_80_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c\n", - "\n", - "r5p_c\n", - "\n", - "\n", - "\n", - "r5p_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "ru5p__D_c\n", - "\n", - "ru5p__D_c\n", - "\n", - "\n", - "\n", - "r5p_c->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "r5p_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c\n", - "\n", - "nadph_c\n", - "\n", - "\n", - "\n", - "nadph_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_54_center\n", - "\n", - "\n", - "\n", - "\n", - "nadph_c->e_67_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c\n", - "\n", - "3pg_c\n", - "\n", - "\n", - "\n", - "3pg_c->e_12_center\n", - "\n", - "\n", - "\n", - "\n", - "3pg_c->e_74_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c\n", - "\n", - "nadp_c\n", - "\n", - "\n", - "\n", - "nadp_c->e_47_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_52_center\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_58_center\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "nadp_c->e_91_center\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_12_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "co2_e\n", - "\n", - "co2_e\n", - "\n", - "\n", - "\n", - "co2_e->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "co2_e->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_14_center->cit_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_c\n", - "\n", - "o2_c\n", - "\n", - "\n", - "\n", - "o2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c\n", - "\n", - "q8h2_c\n", - "\n", - "\n", - "\n", - "q8h2_c->e_15_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8h2_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c\n", - "\n", - "q8_c\n", - "\n", - "\n", - "\n", - "q8_c->e_66_center\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "q8_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_15_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e\n", - "\n", - "lac__D_e\n", - "\n", - "\n", - "\n", - "lac__D_e->e_16_center\n", - "\n", - "\n", - "\n", - "\n", - "e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_e->e_32_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "lac__D_c\n", - "\n", - "lac__D_c\n", - "\n", - "\n", - "\n", - "lac__D_c->e_60_center\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_center->lac__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c\n", - "\n", - "2pg_c\n", - "\n", - "\n", - "\n", - "2pg_c->3pg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "2pg_c->e_17_center\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e\n", - "\n", - "etoh_e\n", - "\n", - "\n", - "\n", - "etoh_e->e_18_center\n", - "\n", - "\n", - "\n", - "\n", - "e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "etoh_e->e_23_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_center->etoh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "for_e\n", - "\n", - "for_e\n", - "\n", - "\n", - "\n", - "for_e->e_24_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_e->e_41_center\n", - "\n", - "\n", - "\n", - "\n", - "e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "fru_e\n", - "\n", - "fru_e\n", - "\n", - "\n", - "\n", - "fru_e->e_25_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fru_e->e_44_center\n", - "\n", - "\n", - "\n", - "\n", - "e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "fum_e\n", - "\n", - "fum_e\n", - "\n", - "\n", - "\n", - "fum_e->e_26_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_e->e_46_center\n", - "\n", - "\n", - "\n", - "\n", - "e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e\n", - "\n", - "glc__D_e\n", - "\n", - "\n", - "\n", - "glc__D_e->e_27_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glc__D_e->e_49_center\n", - "\n", - "\n", - "\n", - "\n", - "e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e\n", - "\n", - "gln__L_e\n", - "\n", - "\n", - "\n", - "gln__L_e->e_28_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "gln__L_e->e_51_center\n", - "\n", - "\n", - "\n", - "\n", - "e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e\n", - "\n", - "glu__L_e\n", - "\n", - "\n", - "\n", - "glu__L_e->e_29_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glu__L_e->e_55_center\n", - "\n", - "\n", - "\n", - "\n", - "e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e\n", - "\n", - "h2o_e\n", - "\n", - "\n", - "\n", - "h2o_e->h2o_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "h2o_e->e_31_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e\n", - "\n", - "mal__L_e\n", - "\n", - "\n", - "\n", - "mal__L_e->e_33_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_e->e_62_center\n", - "\n", - "\n", - "\n", - "\n", - "e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "nh4_e\n", - "\n", - "nh4_e\n", - "\n", - "\n", - "\n", - "nh4_e->e_34_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c\n", - "\n", - "nh4_c\n", - "\n", - "\n", - "\n", - "nh4_e->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "o2_e\n", - "\n", - "o2_e\n", - "\n", - "\n", - "\n", - "o2_e->o2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "o2_e->e_35_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "pi_e\n", - "\n", - "pi_e\n", - "\n", - "\n", - "\n", - "pi_e->e_36_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pi_e->e_77_center\n", - "\n", - "\n", - "\n", - "\n", - "e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e\n", - "\n", - "pyr_e\n", - "\n", - "\n", - "\n", - "pyr_e->e_37_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "pyr_e->e_83_center\n", - "\n", - "\n", - "\n", - "\n", - "e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "succ_e\n", - "\n", - "succ_e\n", - "\n", - "\n", - "\n", - "succ_e->e_38_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "succ_e->e_86_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c\n", - "\n", - "fdp_c\n", - "\n", - "\n", - "\n", - "e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_39_center\n", - "\n", - "\n", - "\n", - "\n", - "fdp_c->e_40_center\n", - "\n", - "\n", - "\n", - "\n", - "dhap_c\n", - "\n", - "dhap_c\n", - "\n", - "\n", - "\n", - "dhap_c->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_39_center->dhap_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_40_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "for_c\n", - "\n", - "for_c\n", - "\n", - "\n", - "\n", - "for_c->for_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_41_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "fum_c\n", - "\n", - "fum_c\n", - "\n", - "\n", - "\n", - "fum_c->e_43_center\n", - "\n", - "\n", - "\n", - "\n", - "fum_c->e_45_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c\n", - "\n", - "succ_c\n", - "\n", - "\n", - "\n", - "succ_c->e_87_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_88_center\n", - "\n", - "\n", - "\n", - "\n", - "succ_c->e_89_center\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->q8_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_43_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_44_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c\n", - "\n", - "mal__L_c\n", - "\n", - "\n", - "\n", - "mal__L_c->e_63_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_64_center\n", - "\n", - "\n", - "\n", - "\n", - "mal__L_c->e_65_center\n", - "\n", - "\n", - "\n", - "\n", - "e_45_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_46_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgl_c\n", - "\n", - "6pgl_c\n", - "\n", - "\n", - "\n", - "6pgl_c->e_75_center\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_47_center->6pgl_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "13dpg_c\n", - "\n", - "13dpg_c\n", - "\n", - "\n", - "\n", - "e_48_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_48_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->g6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_49_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "nh4_c->e_50_center\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_50_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_51_center->gln__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_52_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_53_center->nh4_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_54_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_55_center->glu__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "6pgc_c\n", - "\n", - "6pgc_c\n", - "\n", - "\n", - "\n", - "6pgc_c->e_56_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c\n", - "\n", - "xu5p__D_c\n", - "\n", - "\n", - "\n", - "ru5p__D_c->xu5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_56_center->ru5p__D_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->akg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_58_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "glx_c\n", - "\n", - "glx_c\n", - "\n", - "\n", - "\n", - "glx_c->e_61_center\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_59_center->glx_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_60_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_61_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_62_center->mal__L_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_63_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_64_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_65_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->h_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_66_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_67_center->nadp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->nadh_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_70_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_71_center->fdp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->accoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_72_center->for_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_74_center->13dpg_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_75_center->6pgc_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_77_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_78_center->oaa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->co2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_79_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->amp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_80_center->pep_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->coa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_81_center->actp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->atp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_82_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_83_center->pyr_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_92_center\n", - "\n", - "\n", - "\n", - "\n", - "xu5p__D_c->e_93_center\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_86_center->succ_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_87_center->succ_e\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->q8h2_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_88_center->fum_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->adp_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->succoa_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_89_center->pi_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "s7p_c\n", - "\n", - "s7p_c\n", - "\n", - "\n", - "\n", - "s7p_c->e_90_center\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->e4p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_90_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nad_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->h_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_91_center->nadph_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_92_center->s7p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->g3p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_93_center->f6p_c\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G.plot(custom_edge_attr=cn.pl.flow_style(P), layout=\"fdp\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9df7ab19-7e71-4a64-a26e-154f74a0bd5a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sum(P.expr.edge_has_flux.value > 0.5)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "155b23d2-8b66-40cf-84aa-d40c402d5012", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[objective_Biomass_Ecoli_core: Expression(AFFINE, UNKNOWN, ()),\n", - " regularization_edge_has_flux: Expression(AFFINE, NONNEGATIVE, ())]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "P.objectives" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "c6a38e48-3fae-4b00-9b60-66bde46d01d0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "45.0" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "P.objectives[1].value" + "This reaction-count criterion is not the same as parsimonious FBA (pFBA), which conventionally minimizes total flux after fixing the primary objective. Sparse FBA instead penalizes how many reactions are active.\n", + "\n", + "For several conditions, CORNETO can apply structured sparsity to the union of active reactions. A reaction shared by several conditions is then counted once, encouraging compact shared metabolic programs while retaining a separate flux vector for every condition. Continue with [Multi-condition FBA](multicondition-sfba.ipynb) for the general formulation and a worked example, followed by [gene expression integration](imat.ipynb) for context-specific metabolic inference.\n", + "\n", + "The examples above use the method-specific `build` and `build_many` interfaces. The general {ref}`Data interface ` remains available for workflows that require custom feature metadata or already represent measurements as CORNETO data objects." ] } ], diff --git a/docs/guide/metabolism/imat.ipynb b/docs/guide/metabolism/imat.ipynb new file mode 100644 index 000000000..29afe39dd --- /dev/null +++ b/docs/guide/metabolism/imat.ipynb @@ -0,0 +1,663 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "introduction", + "metadata": {}, + "source": [ + "# Integrating gene expression into metabolic models\n", + "\n", + "The preceding [FBA](flux-balance-analysis.ipynb) and [Multi-condition FBA](multicondition-sfba.ipynb) guides inferred feasible metabolic states from stoichiometry, reaction bounds, and required phenotypes. Gene expression provides another source of information: it can help choose which of the many feasible pathways best represents a particular biological context.\n", + "\n", + "This guide introduces gene-expression integration for one condition using **iMAT**, the method currently implemented in CORNETO. We will extract an expression-consistent metabolic state from the same COBRApy *E. coli* core model used in the FBA guides." + ] + }, + { + "cell_type": "markdown", + "id": "what-imat-adds", + "metadata": {}, + "source": [ + "## One established approach: iMAT\n", + "\n", + "[iMAT was introduced by Shlomi and colleagues](https://www.nature.com/articles/nbt.1487) to infer context-specific metabolism from expression evidence. It retains the FBA feasible space:\n", + "\n", + "$$\n", + "Sv=0, \\qquad \\ell \\leq v \\leq u.\n", + "$$\n", + "\n", + "It then uses qualitative expression evidence to select a flux state:\n", + "\n", + "- reactions supported by **high** expression are encouraged to carry flux;\n", + "- reactions associated with **low** expression are encouraged to remain inactive;\n", + "- reactions with intermediate or missing evidence are decided by network feasibility and the other objectives.\n", + "\n", + "The optimization minimizes disagreement with this evidence. It does not convert transcript abundance into a flux value, and expression cannot override mass balance, reaction bounds, or a required phenotype. Because reaction activity is represented with indicators, iMAT is a mixed-integer optimization problem.\n", + "\n", + "CORNETO provides this formulation through `MultiSampleIMAT`, but the framework is not restricted to the original iMAT objective. The built problem exposes its constraints, activity variables, and objective terms, making it straightforward to add biological constraints, compose other penalties, or implement methodological variations." + ] + }, + { + "cell_type": "markdown", + "id": "from-genes-to-reactions", + "metadata": {}, + "source": [ + "## From genes to reaction evidence\n", + "\n", + "Metabolic models associate genes with reactions through gene–protein–reaction (GPR) rules. CORNETO applies these rules before building iMAT: an `and` relationship uses the least-supported required subunit, while an `or` relationship uses the best-supported alternative enzyme.\n", + "\n", + "| Normalized expression | iMAT interpretation |\n", + "|---:|---|\n", + "| At or above the high threshold | Encourage the mapped reaction to be active |\n", + "| At or below the low threshold | Encourage the mapped reaction to be inactive |\n", + "| Between thresholds or missing | Do not score the reaction |\n", + "\n", + "`eps` defines the minimum absolute flux used to call a supported reaction active. The optional `lambda_reg` adds a small reaction-count penalty, favoring a compact network when several solutions fit the expression evidence equally well." + ] + }, + { + "cell_type": "markdown", + "id": "cobrapy-relationship", + "metadata": {}, + "source": [ + "## Relationship to COBRApy\n", + "\n", + "COBRApy remains the model-management layer in this workflow: it loads the metabolic model, exposes reactions and GPR rules, and supports standard FBA and pFBA analyses. CORNETO converts that model into its graph representation and composes the FBA constraints, expression-fit terms, reaction-activity indicators, and optional regularization in one optimization problem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "load-model", + "metadata": {}, + "outputs": [], + "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from cobra.flux_analysis import pfba\n", + "from cobra.io import load_model\n", + "\n", + "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleIMAT\n", + "from corneto.methods.metabolism import evaluate_gpr_expression\n", + "\n", + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "\n", + "model.solver = \"glpk\"\n", + "G = cobra_model_to_graph(model)\n", + "\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "\n", + "pd.Series(\n", + " {\n", + " \"metabolites\": len(model.metabolites),\n", + " \"reactions\": len(model.reactions),\n", + " \"genes\": len(model.genes),\n", + " \"reactions with GPR rules\": sum(bool(reaction.gene_reaction_rule) for reaction in model.reactions),\n", + " },\n", + " name=\"E. coli core model\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "example-question", + "metadata": {}, + "source": [ + "## Example: selecting an anaerobic fermentation program\n", + "\n", + "We now address a small biological question:\n", + "\n", + "> At a viable anaerobic growth rate, does the expression evidence support ethanol fermentation rather than alternative lactate or acetate routes?\n", + "\n", + "Glucose uptake is limited to 10 units and oxygen uptake is blocked. We require a biomass flux of at least `0.1`, but we do not maximize growth inside iMAT: the phenotype defines what the cell must accomplish, and expression evidence helps select how it accomplishes it.\n", + "\n", + "The expression values below are deliberately simple, synthetic normalized log-expression values. They resemble the positive scale commonly obtained after transforming expression measurements, but they do not represent a particular experiment." + ] + }, + { + "cell_type": "markdown", + "id": "growth-feasibility", + "metadata": {}, + "source": [ + "### Check that the required phenotype is feasible\n", + "\n", + "Before integrating expression, standard FBA establishes the maximum anaerobic growth supported by the medium." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "maximum-growth", + "metadata": {}, + "outputs": [], + "source": [ + "anaerobic_model = model.copy()\n", + "anaerobic_model.reactions.EX_glc__D_e.lower_bound = -10.0\n", + "anaerobic_model.reactions.EX_o2_e.bounds = (0.0, 1000.0)\n", + "\n", + "maximum_growth = anaerobic_model.optimize().fluxes[biomass_id]\n", + "minimum_growth = 0.1\n", + "\n", + "assert maximum_growth > minimum_growth\n", + "\n", + "pd.Series(\n", + " {\n", + " \"maximum anaerobic biomass\": maximum_growth,\n", + " \"minimum biomass required for inference\": minimum_growth,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "expression-profile", + "metadata": {}, + "source": [ + "### Define a qualitative expression profile\n", + "\n", + "Genes linked to ethanol production have expression values around `11–12`. Genes linked to competing lactate and acetate production have values around `4–5`. Values at or above `10` are classified as high, values at or below `6` as low, and values between the thresholds would remain unclassified." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "gene-expression", + "metadata": {}, + "outputs": [], + "source": [ + "high_expression_threshold = 10.0\n", + "low_expression_threshold = 6.0\n", + "\n", + "gene_expression = {\n", + " # High expression: acetaldehyde and alcohol dehydrogenases\n", + " \"b0351\": 12.1,\n", + " \"b1241\": 11.6,\n", + " \"b0356\": 10.9,\n", + " \"b1478\": 11.4,\n", + " # Low expression: lactate dehydrogenase\n", + " \"b1380\": 4.2,\n", + " \"b2133\": 5.1,\n", + " # Low expression: phosphotransacetylase and acetate kinase\n", + " \"b2297\": 4.8,\n", + " \"b2458\": 5.3,\n", + " \"b1849\": 3.9,\n", + " \"b2296\": 4.6,\n", + " \"b3115\": 5.0,\n", + "}\n", + "\n", + "expression_modules = pd.DataFrame(\n", + " [\n", + " {\n", + " \"module\": \"ethanol formation\",\n", + " \"reactions\": \"ACALD, ALCD2x\",\n", + " \"genes\": \"b0351, b1241, b0356, b1478\",\n", + " \"expression range\": \"10.9-12.1\",\n", + " \"class\": \"high\",\n", + " },\n", + " {\n", + " \"module\": \"lactate formation\",\n", + " \"reactions\": \"LDH_D\",\n", + " \"genes\": \"b1380, b2133\",\n", + " \"expression range\": \"4.2-5.1\",\n", + " \"class\": \"low\",\n", + " },\n", + " {\n", + " \"module\": \"acetate formation\",\n", + " \"reactions\": \"PTAr, ACKr\",\n", + " \"genes\": \"b2297, b2458, b1849, b2296, b3115\",\n", + " \"expression range\": \"3.9-5.3\",\n", + " \"class\": \"low\",\n", + " },\n", + " ]\n", + ")\n", + "\n", + "expression_modules" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "gpr-rules", + "metadata": {}, + "outputs": [], + "source": [ + "scored_reactions = [\"ACALD\", \"ALCD2x\", \"LDH_D\", \"PTAr\", \"ACKr\"]\n", + "gpr_table = pd.DataFrame(\n", + " {\n", + " \"reaction\": scored_reactions,\n", + " \"GPR rule\": [\n", + " model.reactions.get_by_id(reaction_id).gene_reaction_rule\n", + " for reaction_id in scored_reactions\n", + " ],\n", + " }\n", + ")\n", + "\n", + "gpr_table" + ] + }, + { + "cell_type": "markdown", + "id": "pfba-reference", + "metadata": {}, + "source": [ + "### An expression-free reference\n", + "\n", + "For comparison, COBRApy pFBA fixes biomass at the required value and minimizes total flux without using expression. This provides one compact feasible state, not a context-specific expression fit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "solve-pfba", + "metadata": {}, + "outputs": [], + "source": [ + "reference_model = model.copy()\n", + "reference_model.reactions.EX_glc__D_e.lower_bound = -10.0\n", + "reference_model.reactions.EX_o2_e.bounds = (0.0, 1000.0)\n", + "reference_model.reactions.get_by_id(biomass_id).bounds = (minimum_growth, minimum_growth)\n", + "\n", + "pfba_solution = pfba(reference_model)\n", + "\n", + "assert np.isclose(pfba_solution.fluxes[biomass_id], minimum_growth)\n", + "pfba_solution.fluxes[[biomass_id, \"EX_glc__D_e\", \"EX_lac__D_e\", \"EX_etoh_e\", \"EX_ac_e\"]].to_frame(\n", + " \"pFBA flux\"\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "build-imat", + "metadata": {}, + "source": [ + "### Build and solve iMAT\n", + "\n", + "`MultiSampleIMAT.build` accepts gene scores, reaction bounds, and optional reaction objectives directly. Here the biomass lower bound represents viability, so no biomass objective is needed.\n", + "\n", + "The small `lambda_reg` value breaks ties in favor of a compact active network. Expression disagreement remains the primary biological criterion in this example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "solve-imat", + "metadata": {}, + "outputs": [], + "source": [ + "eps = 1e-3\n", + "imat = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=0.01,\n", + " high_expression_threshold=high_expression_threshold,\n", + " low_expression_threshold=low_expression_threshold,\n", + ")\n", + "\n", + "imat_problem = imat.build(\n", + " G,\n", + " gene_expression=gene_expression,\n", + " reaction_bounds={\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (minimum_growth, None),\n", + " },\n", + ")\n", + "imat_problem.solve(solver=\"highs\")\n", + "\n", + "imat_fluxes = pd.Series(\n", + " np.asarray(imat_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " name=\"iMAT flux\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "reaction-results", + "metadata": {}, + "source": [ + "### Did the inferred state agree with expression?\n", + "\n", + "For iMAT, the main interpretation is whether a scored reaction is active, not whether its flux magnitude matches its transcript abundance. Flux signs follow the direction in which each reaction is written in the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "expression-fit", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_evidence = pd.Series(\n", + " {\n", + " \"ACALD\": \"high\",\n", + " \"ALCD2x\": \"high\",\n", + " \"LDH_D\": \"low\",\n", + " \"PTAr\": \"low\",\n", + " \"ACKr\": \"low\",\n", + " },\n", + " name=\"expression evidence\",\n", + ")\n", + "\n", + "expression_fit = pd.DataFrame(\n", + " {\n", + " \"expression evidence\": reaction_evidence,\n", + " \"flux\": imat_fluxes[reaction_evidence.index],\n", + " \"active\": imat_fluxes[reaction_evidence.index].abs() >= eps * (1 - eps),\n", + " }\n", + ")\n", + "\n", + "assert expression_fit.loc[[\"ACALD\", \"ALCD2x\"], \"active\"].all()\n", + "assert not expression_fit.loc[[\"LDH_D\", \"PTAr\", \"ACKr\"], \"active\"].any()\n", + "assert imat_fluxes[biomass_id] >= minimum_growth - 1e-7\n", + "\n", + "expression_fit" + ] + }, + { + "cell_type": "markdown", + "id": "product-comparison", + "metadata": {}, + "source": [ + "### Compare the selected fermentation routes\n", + "\n", + "At the same biomass value, pFBA and iMAT answer different questions. pFBA minimizes total flux and uses both lactate and ethanol routes. iMAT instead selects a state consistent with the supplied high-ethanol and low-lactate/acetate evidence.\n", + "\n", + "The bars show representative flux solutions. Their magnitudes should not be interpreted as predictions from transcript abundance; the iMAT evidence distinguishes active from inactive reactions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "compare-products", + "metadata": {}, + "outputs": [], + "source": [ + "fermentation_products = {\n", + " \"lactate\": \"EX_lac__D_e\",\n", + " \"ethanol\": \"EX_etoh_e\",\n", + " \"acetate\": \"EX_ac_e\",\n", + "}\n", + "\n", + "product_fluxes = pd.DataFrame(\n", + " {\n", + " \"pFBA (no expression)\": {\n", + " product: pfba_solution.fluxes[reaction_id]\n", + " for product, reaction_id in fermentation_products.items()\n", + " },\n", + " \"iMAT (expression integrated)\": {\n", + " product: imat_fluxes[reaction_id]\n", + " for product, reaction_id in fermentation_products.items()\n", + " },\n", + " }\n", + ")\n", + "\n", + "assert product_fluxes.loc[\"ethanol\", \"iMAT (expression integrated)\"] > eps\n", + "assert np.isclose(product_fluxes.loc[\"lactate\", \"iMAT (expression integrated)\"], 0.0, atol=1e-7)\n", + "assert product_fluxes.loc[\"lactate\", \"pFBA (no expression)\"] > eps\n", + "\n", + "product_fluxes" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "plot-products", + "metadata": {}, + "outputs": [], + "source": [ + "ax = product_fluxes.plot.bar(\n", + " figsize=(7, 3.5),\n", + " color=[\"#9aa0a6\", \"#2a9d8f\"],\n", + " width=0.75,\n", + ")\n", + "ax.set_ylabel(\"exchange flux\")\n", + "ax.set_xlabel(\"\")\n", + "ax.set_title(\"Fermentation products at the same biomass requirement\")\n", + "ax.tick_params(axis=\"x\", rotation=0)\n", + "ax.spines[[\"top\", \"right\"]].set_visible(False)\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "id": "network-plot-intro", + "metadata": {}, + "source": [ + "### Visualize the contextualized metabolic network\n", + "\n", + "The graph below contains the active iMAT network plus scored reactions that were kept inactive. High-expression active reactions are green, low-expression inactive reactions are dashed red, and active reactions without expression evidence are gray.\n", + "\n", + "| Meaning | Color and style |\n", + "|---|---|\n", + "| Active and supported by high expression | Green |\n", + "| Inactive and associated with low expression | Dashed red |\n", + "| Active without supplied expression evidence | Gray |" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "plot-network", + "metadata": {}, + "outputs": [], + "source": [ + "active_reactions = imat_fluxes.abs() >= eps * (1 - eps)\n", + "scored_reaction_set = set(reaction_evidence.index)\n", + "displayed_reactions = np.array(\n", + " [\n", + " active_reactions.iloc[i] or reaction_id in scored_reaction_set\n", + " for i, reaction_id in enumerate(reaction_ids)\n", + " ]\n", + ")\n", + "\n", + "selected_indices = np.flatnonzero(displayed_reactions)\n", + "context_network = G.edge_subgraph(selected_indices)\n", + "edge_style = {}\n", + "\n", + "for displayed_index, original_index in enumerate(selected_indices):\n", + " reaction_id = reaction_ids[original_index]\n", + " evidence = reaction_evidence.get(reaction_id)\n", + "\n", + " if evidence == \"high\":\n", + " edge_style[displayed_index] = {\"color\": \"#2a9d8f\", \"penwidth\": \"4\"}\n", + " elif evidence == \"low\":\n", + " edge_style[displayed_index] = {\n", + " \"color\": \"#e76f51\",\n", + " \"penwidth\": \"3\",\n", + " \"style\": \"dashed\",\n", + " }\n", + " else:\n", + " edge_style[displayed_index] = {\"color\": \"#b0b0b0\", \"penwidth\": \"1.5\"}\n", + "\n", + "context_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "advanced-reaction-scores", + "metadata": {}, + "source": [ + "## Advanced: compute and supply reaction scores directly\n", + "\n", + "Passing `gene_expression=` is convenient because `MultiSampleIMAT` performs thresholding and GPR mapping automatically. For method development or custom preprocessing, it can be useful to inspect that transformation and pass the final reaction-level evidence through `reaction_scores=` instead.\n", + "\n", + "At this level, signed values no longer represent expression abundance. They encode the iMAT classification:\n", + "\n", + "| Reaction score | Meaning in the optimization |\n", + "|---:|---|\n", + "| `+1` | High-expression evidence: favor an active reaction |\n", + "| `−1` | Low-expression evidence: favor an inactive reaction |\n", + "| `0` or omitted | No expression-fit term for the reaction |\n", + "\n", + "First, threshold the positive expression measurements into categorical gene evidence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "classify-gene-expression", + "metadata": {}, + "outputs": [], + "source": [ + "gene_scores = {}\n", + "\n", + "for gene_id, expression in gene_expression.items():\n", + " if expression >= high_expression_threshold:\n", + " gene_scores[gene_id] = 1.0\n", + " elif expression <= low_expression_threshold:\n", + " gene_scores[gene_id] = -1.0\n", + " else:\n", + " gene_scores[gene_id] = 0.0\n", + "\n", + "pd.DataFrame(\n", + " {\n", + " \"expression\": pd.Series(gene_expression),\n", + " \"gene score\": pd.Series(gene_scores),\n", + " }\n", + ").sort_values(\"expression\", ascending=False)" + ] + }, + { + "cell_type": "markdown", + "id": "apply-gpr-rules", + "metadata": {}, + "source": [ + "Next, CORNETO's `evaluate_gpr_expression` applies every model GPR rule to the gene scores in one call. Reactions with a final score of zero are omitted, so they remain governed by stoichiometry, bounds, and regularization rather than expression-fit terms. For several samples, the related `evaluate_gpr_rules` function evaluates the same rule list against multiple gene-score mappings." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "compute-reaction-scores", + "metadata": {}, + "outputs": [], + "source": [ + "gpr_rules = list(G.get_attr_from_edges(\"GPR\"))\n", + "reaction_score_values = evaluate_gpr_expression(gpr_rules, gene_scores)\n", + "\n", + "reaction_scores = {\n", + " reaction_id: float(score)\n", + " for reaction_id, score in zip(reaction_ids, reaction_score_values)\n", + " if not np.isclose(score, 0.0)\n", + "}\n", + "\n", + "reaction_score_table = pd.DataFrame(\n", + " {\n", + " \"GPR rule\": {\n", + " reaction_id: gpr_rules[reaction_index[reaction_id]]\n", + " for reaction_id in reaction_scores\n", + " },\n", + " \"reaction score\": reaction_scores,\n", + " }\n", + ")\n", + "\n", + "reaction_score_table" + ] + }, + { + "cell_type": "markdown", + "id": "solve-from-reaction-scores", + "metadata": {}, + "source": [ + "The reaction-score interface is closer to the optimization problem and is useful when reaction evidence comes from another mapping method or has already been curated. Threshold arguments are unnecessary because the scores already encode high and low reaction evidence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "reaction-score-problem", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_score_problem = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=0.01,\n", + ").build(\n", + " G,\n", + " reaction_scores=reaction_scores,\n", + " reaction_bounds={\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (minimum_growth, None),\n", + " },\n", + ")\n", + "reaction_score_problem.solve(solver=\"highs\")\n", + "\n", + "reaction_score_fluxes = pd.Series(\n", + " np.asarray(reaction_score_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + ")\n", + "\n", + "interface_comparison = pd.DataFrame(\n", + " {\n", + " \"reaction score\": pd.Series(reaction_scores),\n", + " \"active from gene_expression\": (\n", + " imat_fluxes[list(reaction_scores)].abs() >= eps * (1 - eps)\n", + " ),\n", + " \"active from reaction_scores\": (\n", + " reaction_score_fluxes[list(reaction_scores)].abs() >= eps * (1 - eps)\n", + " ),\n", + " }\n", + ")\n", + "\n", + "assert (\n", + " interface_comparison[\"active from gene_expression\"]\n", + " == interface_comparison[\"active from reaction_scores\"]\n", + ").all()\n", + "\n", + "interface_comparison" + ] + }, + { + "cell_type": "markdown", + "id": "interpretation-limitations", + "metadata": {}, + "source": [ + "## Interpretation and limitations\n", + "\n", + "The inferred state is stoichiometrically feasible, satisfies the anaerobic medium and growth requirement, activates the expression-supported ethanol route, and avoids the low-expression lactate and acetate routes. This illustrates the role of iMAT: expression resolves part of the ambiguity left by FBA by ranking feasible reaction-activity patterns.\n", + "\n", + "The result remains a modeling hypothesis:\n", + "\n", + "- expression is a cue for likely activity, not an activity or flux measurement; protein abundance, post-translational modification, and metabolite-level regulation can decouple expression from flux;\n", + "- thresholds determine which genes contribute evidence and should be checked for sensitivity;\n", + "- iMAT infers reaction activity, not flux magnitude from expression;\n", + "- low-expression reactions may remain active when network constraints or the required phenotype need them;\n", + "- alternative expression-consistent optima may still exist.\n", + "\n", + "The [original iMAT paper](https://www.nature.com/articles/nbt.1487) reports a central role for post-transcriptional regulation and uses disagreements between expression and predicted activity to generate hypotheses about regulation beyond transcript abundance. They do not identify a mechanism on their own: additional protein, enzyme-activity, metabolite, or flux measurements are needed to distinguish biological regulation from data and model assumptions.\n", + "\n", + "Real analyses should inspect threshold choices, biological constraints, expression coverage, and alternative solutions. Continue with [multi-condition gene expression integration](multicondition-imat.ipynb) to learn how CORNETO couples expression-informed metabolic inference across several contexts." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python", + "version": "3.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/guide/metabolism/index.md b/docs/guide/metabolism/index.md index f4a2bd44d..dba7ae4da 100644 --- a/docs/guide/metabolism/index.md +++ b/docs/guide/metabolism/index.md @@ -1,11 +1,20 @@ # Metabolism -CORNETO supports flux balance analysis workflows while adding modeling flexibility to define custom constraints, objectives, and coupled formulations in a single optimization problem. For users familiar with COBRA-style modeling, this enables extension from standard FBA to explicit use cases such as multi-condition FBA and integration of omics data into metabolic networks to detect stoichiometrically consistent steady-state metabolic states. +CORNETO brings constraint-based metabolic modeling into the same optimization +framework used for other network-inference problems. It interoperates with +COBRApy models and supports standard flux balance analysis while exposing the +formulation for custom constraints, coupled conditions, shared sparsity, and +omics integration. + +Start with standard FBA and model interoperability, continue with +multi-condition FBA and shared reaction selection, and then integrate +expression evidence first in one condition and later across several conditions. ```{toctree} :maxdepth: 3 flux-balance-analysis.ipynb multicondition-sfba.ipynb +imat.ipynb multicondition-imat.ipynb ``` diff --git a/docs/guide/metabolism/multicondition-imat.ipynb b/docs/guide/metabolism/multicondition-imat.ipynb index 706a3214b..ae412eabe 100644 --- a/docs/guide/metabolism/multicondition-imat.ipynb +++ b/docs/guide/metabolism/multicondition-imat.ipynb @@ -2,1586 +2,617 @@ "cells": [ { "cell_type": "markdown", - "id": "5138cc3a", + "id": "introduction", "metadata": {}, "source": [ - "# Multi-condition iMAT\n", + "# Multi-condition gene expression integration\n", "\n", - "This tutorial shows how to use the multi-condition iMAT method.\n", + "The [single-condition expression guide](imat.ipynb) showed how iMAT converts expression evidence into reaction-level preferences, while the [Multi-condition FBA guide](multicondition-sfba.ipynb) explained why reaction selection should be performed jointly when shared and context-specific metabolism are the biological quantities of interest.\n", "\n", - "We use a branched network with weak and conflicting evidence across two\n", - "conditions to illustrate how structured regularization can align solutions\n", - "across samples.\n" + "This guide combines those ideas without repeating their derivations. Each condition receives its own reaction scores, medium bounds, phenotype constraints, and flux vector. CORNETO then fits the condition-specific expression evidence while selecting one compact reaction union across the complete experiment." + ] + }, + { + "cell_type": "markdown", + "id": "what-changes", + "metadata": {}, + "source": [ + "## What changes in the multi-condition formulation?\n", + "\n", + "`MultiSampleIMAT.build_many` accepts mappings whose first level contains condition names:\n", + "\n", + "| Input | Condition-specific information |\n", + "|---|---|\n", + "| `reaction_scores` | Reactions favored active (`+1`), favored inactive (`−1`), or unscored |\n", + "| `reaction_bounds` | Medium, perturbations, and required phenotypes |\n", + "| `objectives` | Optional reaction objectives |\n", + "\n", + "Every condition keeps a separate flux vector and a separate expression-fit objective. With `lambda_reg > 0`, a reaction active in one or several conditions contributes once to the union penalty. Reuse is therefore encouraged, but conflicting or condition-specific expression evidence can still select different pathways.\n", + "\n", + "This is the same union-level coupling introduced in Multi-condition FBA, now applied while every condition also fits its own expression evidence. The joint model does not average expression profiles and does not force equal fluxes. Reaction-level agreement must therefore be inspected alongside the inferred network: an unmatched score can reveal tension between expression, network feasibility, phenotype constraints, and shared regularization." ] }, { "cell_type": "code", - "execution_count": 1, - "id": "e7dd7a9f", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:35.458243Z", - "iopub.status.busy": "2026-02-15T11:15:35.458079Z", - "iopub.status.idle": "2026-02-15T11:15:36.890934Z", - "shell.execute_reply": "2026-02-15T11:15:36.890647Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - "
Installed version:v1.0.0b3.post1.dev0+048af53c
Available backends:CVXPY v1.8.1, PICOS v2.6.2
Default backend (corneto.opt):CVXPY
Installed solvers:CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.20.3; networkx v3.6+mpl v3.10.8; graphviz-wasm
Installed path:/Users/pablorodriguezmier/Documents/work/projects/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
\n", - " " - ], - "text/plain": [ - "Installed version: v1.0.0b3.post1.dev0+048af53c\n", - "Available backends: CVXPY v1.8.1, PICOS v2.6.2\n", - "Default backend (corneto.opt): CVXPY\n", - "Installed solvers: CVXOPT, GLPK, GLPK_MI, HIGHS, SCIP, SCIPY\n", - "Plot backend (default): auto -> graphviz\n", - "Available plot backends: graphviz v0.20.3; networkx v3.6+mpl v3.10.8; graphviz-wasm\n", - "Installed path: /Users/pablorodriguezmier/Documents/work/projects/corneto/corneto\n", - "Repository: https://github.com/saezlab/corneto" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "load-model", + "metadata": {}, + "outputs": [], "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", "import numpy as np\n", "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "import corneto as cn\n", - "from corneto.methods.imat import MultiSampleIMAT\n", + "from corneto.io import cobra_model_to_graph\n", + "from corneto.methods import MultiSampleIMAT\n", "\n", - "cn.info()" + "with redirect_stdout(StringIO()):\n", + " model = load_model(\"textbook\")\n", + "\n", + "G = cobra_model_to_graph(model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "reaction_index = {reaction_id: i for i, reaction_id in enumerate(reaction_ids)}\n", + "biomass_id = \"Biomass_Ecoli_core\"" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "b4fabc4d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.892236Z", - "iopub.status.busy": "2026-02-15T11:15:36.892070Z", - "iopub.status.idle": "2026-02-15T11:15:36.898171Z", - "shell.execute_reply": "2026-02-15T11:15:36.897863Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
edge_indexreaction_id
00EX_A
11R_AB
22R_BC
33R_AD
44R_DC
55R_CE
66R_EF
77BIOMASS
88R_BX
99R_X_sink
1010R_DY
1111R_Y_sink
\n", - "
" - ], - "text/plain": [ - " edge_index reaction_id\n", - "0 0 EX_A\n", - "1 1 R_AB\n", - "2 2 R_BC\n", - "3 3 R_AD\n", - "4 4 R_DC\n", - "5 5 R_CE\n", - "6 6 R_EF\n", - "7 7 BIOMASS\n", - "8 8 R_BX\n", - "9 9 R_X_sink\n", - "10 10 R_DY\n", - "11 11 R_Y_sink" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "biological-question", + "metadata": {}, "source": [ - "G = cn.Graph()\n", + "## Example: aerobic respiration and anaerobic fermentation\n", "\n", - "# Uptake\n", - "G.add_edge((), \"A\", id=\"EX_A\", default_lb=0, default_ub=10)\n", + "We ask:\n", "\n", - "# Branch 1\n", - "G.add_edge(\"A\", \"B\", id=\"R_AB\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"B\", \"C\", id=\"R_BC\", default_lb=0, default_ub=100)\n", + "> Which reactions form a shared expression-consistent program for growth on glucose, and which distinguish aerobic respiration from anaerobic ethanol fermentation?\n", "\n", - "# Branch 2\n", - "G.add_edge(\"A\", \"D\", id=\"R_AD\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"C\", id=\"R_DC\", default_lb=0, default_ub=100)\n", + "The example uses two synthetic expression contexts in the *E. coli* core model. Both grow on glucose. Oxygen is available only in the aerobic condition, and biomass is fixed at approximately 60% of the maximum supported by each environment. The fixed phenotypes keep the independent and joint comparisons biologically equivalent.\n", "\n", - "# Shared pathway to objective\n", - "G.add_edge(\"C\", \"E\", id=\"R_CE\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"E\", \"F\", id=\"R_EF\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"F\", (), id=\"BIOMASS\", default_lb=0, default_ub=100)\n", + "We start from reaction scores, the advanced interface introduced at the end of the single-condition guide. In a real workflow these scores could be produced from expression measurements and GPR rules with `evaluate_gpr_expression` or supplied by another curated mapping procedure." + ] + }, + { + "cell_type": "markdown", + "id": "define-evidence", + "metadata": {}, + "source": [ + "### Define condition-specific reaction evidence\n", "\n", - "# Side drains\n", - "G.add_edge(\"B\", \"X\", id=\"R_BX\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"X\", (), id=\"R_X_sink\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"Y\", id=\"R_DY\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"Y\", (), id=\"R_Y_sink\", default_lb=0, default_ub=100)\n", + "The aerobic profile supports respiration and pyruvate oxidation while arguing against fermentation. The anaerobic profile supports ethanol formation while arguing against oxygen-dependent respiration and lactate production.\n", "\n", - "pd.DataFrame(\n", - " {\n", - " \"edge_index\": range(G.num_edges),\n", - " \"reaction_id\": [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)],\n", - " }\n", - ")" + "To make model–data disagreement visible, the synthetic anaerobic profile deliberately classifies `PFL` as low even though pyruvate-formate lyase provides the route from pyruvate to acetyl-CoA and formate in the selected fermentative state. This controlled conflict lets us distinguish a reaction that is fitted from one that remains active despite low-expression evidence." ] }, { "cell_type": "code", - "execution_count": 3, - "id": "78790088", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.899476Z", - "iopub.status.busy": "2026-02-15T11:15:36.899391Z", - "iopub.status.idle": "2026-02-15T11:15:36.913618Z", - "shell.execute_reply": "2026-02-15T11:15:36.913277Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tA [shape=circle]\n", - "\tD [shape=circle]\n", - "\tD [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_7_target [shape=point]\n", - "\tF [shape=circle]\n", - "\tB [shape=circle]\n", - "\tX [shape=circle]\n", - "\te_9_target [shape=point]\n", - "\tX [shape=circle]\n", - "\tD [shape=circle]\n", - "\tY [shape=circle]\n", - "\te_11_target [shape=point]\n", - "\tY [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tA -> D [arrowhead=normal]\n", - "\tD -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_7_target [arrowhead=normal]\n", - "\tB -> X [arrowhead=normal]\n", - "\tX -> e_9_target [arrowhead=normal]\n", - "\tD -> Y [arrowhead=normal]\n", - "\tY -> e_11_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "reaction-scores", + "metadata": {}, + "outputs": [], + "source": [ + "condition_names = [\"glucose aerobic\", \"glucose anaerobic\"]\n", + "\n", + "reaction_scores = {\n", + " \"glucose aerobic\": {\n", + " \"CYTBD\": 1.0,\n", + " \"NADH16\": 1.0,\n", + " \"PDH\": 1.0,\n", + " \"CS\": 1.0,\n", + " \"ATPS4r\": 1.0,\n", + " \"PFL\": -1.0,\n", + " \"LDH_D\": -1.0,\n", + " \"ACALD\": -1.0,\n", + " \"ALCD2x\": -1.0,\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"PFL\": -1.0,\n", + " \"ACALD\": 1.0,\n", + " \"ALCD2x\": 1.0,\n", + " \"CYTBD\": -1.0,\n", + " \"NADH16\": -1.0,\n", + " \"PDH\": -1.0,\n", + " \"LDH_D\": -1.0,\n", + " },\n", + "}\n", + "\n", + "score_table = pd.DataFrame(reaction_scores).fillna(0.0)\n", + "score_table.index.name = \"reaction\"\n", + "score_table" + ] + }, + { + "cell_type": "markdown", + "id": "define-phenotypes", + "metadata": {}, "source": [ - "G.plot()" + "### Define the media and required phenotypes\n", + "\n", + "A negative exchange lower bound allows uptake. Biomass is fixed rather than maximized because expression agreement and shared reaction selection are the objectives of this analysis." ] }, { "cell_type": "code", - "execution_count": 4, - "id": "582902c0", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.915144Z", - "iopub.status.busy": "2026-02-15T11:15:36.915031Z", - "iopub.status.idle": "2026-02-15T11:15:36.917329Z", - "shell.execute_reply": "2026-02-15T11:15:36.917081Z" - } - }, + "execution_count": null, + "id": "reaction-bounds", + "metadata": {}, "outputs": [], "source": [ - "w = 0.2\n", - "\n", - "scores_condition_1 = {\n", - " \"R_AB\": +w,\n", - " \"R_BC\": +w,\n", - " \"R_AD\": -w,\n", - " \"R_DC\": -w,\n", - " \"R_BX\": -0.1,\n", - " \"R_DY\": -0.1,\n", + "biomass_targets = {\n", + " \"glucose aerobic\": 0.50,\n", + " \"glucose anaerobic\": 0.12,\n", "}\n", "\n", - "scores_condition_2 = {\n", - " \"R_AB\": -w,\n", - " \"R_BC\": -w,\n", - " \"R_AD\": +w,\n", - " \"R_DC\": +w,\n", - " \"R_BX\": -0.1,\n", - " \"R_DY\": -0.1,\n", + "reaction_bounds = {\n", + " \"glucose aerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " biomass_id: (biomass_targets[\"glucose aerobic\"], biomass_targets[\"glucose aerobic\"]),\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " biomass_id: (biomass_targets[\"glucose anaerobic\"], biomass_targets[\"glucose anaerobic\"]),\n", + " },\n", "}\n", "\n", + "pd.DataFrame(\n", + " {\n", + " \"glucose lower bound\": {condition: bounds[\"EX_glc__D_e\"][0] for condition, bounds in reaction_bounds.items()},\n", + " \"oxygen lower bound\": {condition: bounds[\"EX_o2_e\"][0] for condition, bounds in reaction_bounds.items()},\n", + " \"fixed biomass\": biomass_targets,\n", + " }\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "scale-condition-scores", + "metadata": {}, + "source": [ + "## Balance expression evidence across conditions\n", + "\n", + "Before coupling conditions, compare their total evidence weight. Without scaling, a condition with more scored reactions or larger score magnitudes contributes more to the joint objective. The shared sparsity penalty can then overwhelm a weakly weighted condition, especially when zero flux is feasible.\n", + "\n", + "`MultiSampleIMAT(scale=True)` applies L1 normalization independently within each condition:\n", + "\n", + "$$\n", + "\\widetilde{w}_{r,c} = 100\\,\\frac{w_{r,c}}{\\sum_j |w_{j,c}|}.\n", + "$$\n", + "\n", + "The signs and relative weights within a condition are preserved, while the absolute weights sum to `100`. Each condition therefore has the same maximum expression-mismatch budget.\n", + "\n", + "The value `100` is not mathematically special: normalizing to `1` and dividing `lambda_reg` by `100` would define the same trade-off. A budget of `100` usually keeps individual objective coefficients closer to order one when tens or hundreds of reactions are scored, avoiding unnecessarily tiny coefficients in the MILP.\n", + "\n", + "Scaling and phenotype constraints solve different problems:\n", + "\n", + "- **scaling** balances the influence of expression evidence across conditions;\n", + "- **phenotype constraints** prevent biologically required conditions from collapsing to a zero or otherwise trivial flux state.\n", "\n", - "def sample_from_scores(scores):\n", - " sample = {\"BIOMASS\": {\"role\": \"objective\"}}\n", - " for rid, value in scores.items():\n", - " sample[rid] = {\"mapping\": \"edge\", \"value\": float(value)}\n", - " return sample\n", + "Use scaling when score ranges or expression coverage differ for technical reasons. Leave scores unscaled when their absolute magnitudes are already comparable and intentionally encode confidence across conditions.\n", "\n", + "After scaling, compare the objective scales explicitly. For $R$ model reactions, the expression-mismatch term is bounded by `100` per condition, while the union penalty is bounded by $\\lambda R$. If $\\lambda R$ approaches `100`, sparsity can compete with an entire condition's evidence budget. Collapse can occur earlier because an all-zero condition mismatches only its positive evidence; low-expression evidence already favors zero flux.\n", "\n", - "multi_data = cn.Data.from_cdict(\n", + "Objective scaling does not correct loose big-M constraints. iMAT activity indicators depend on reaction flux bounds, so finite, biologically meaningful bounds are also important for MILP numerical stability and performance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "score-weight-comparison", + "metadata": {}, + "outputs": [], + "source": [ + "eps = 1e-3\n", + "lambda_reg = 0.01\n", + "activity_tolerance = eps * (1 - eps)\n", + "\n", + "score_weight_comparison = pd.DataFrame(\n", " {\n", - " \"condition_1\": sample_from_scores(scores_condition_1),\n", - " \"condition_2\": sample_from_scores(scores_condition_2),\n", + " \"unscaled absolute score sum\": score_table.abs().sum(),\n", + " \"absolute score sum with scale=True\": 100.0,\n", " }\n", ")\n", + "score_weight_comparison" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "objective-scale", + "metadata": {}, + "outputs": [], + "source": [ + "pd.Series(\n", + " {\n", + " \"expression-mismatch budget per condition\": 100.0,\n", + " \"regularization cost per union reaction\": lambda_reg,\n", + " \"maximum union penalty in this model\": lambda_reg * len(reaction_ids),\n", + " },\n", + " name=\"objective scale\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "independent-reference", + "metadata": {}, + "source": [ + "## Independent iMAT as a reference\n", "\n", - "single_data_c1 = cn.Data.from_cdict({\"condition_1\": sample_from_scores(scores_condition_1)})\n", - "single_data_c2 = cn.Data.from_cdict({\"condition_2\": sample_from_scores(scores_condition_2)})" + "We first solve each condition separately with the same small reaction-count penalty used below. These runs fit each expression profile independently and provide the post-hoc union against which the joint analysis will be compared." ] }, { "cell_type": "code", - "execution_count": 5, - "id": "40470e3b", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.918357Z", - "iopub.status.busy": "2026-02-15T11:15:36.918264Z", - "iopub.status.idle": "2026-02-15T11:15:36.984038Z", - "shell.execute_reply": "2026-02-15T11:15:36.983730Z" - } - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Problem(Minimize(Expression(AFFINE, UNKNOWN, ())), [Inequality(Constant(CONSTANT, ZERO, (12,))), Inequality(Variable((12,), _flow)), Equality(Expression(AFFINE, UNKNOWN, (8,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, ZERO, (12,))), Inequality(Variable((12,), _flow)), Inequality(Expression(AFFINE, NONNEGATIVE, (6,))), Equality(Expression(AFFINE, NONNEGATIVE, (6,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, NONNEGATIVE, (6,))), Inequality(Expression(AFFINE, UNKNOWN, (6,))), Inequality(Expression(AFFINE, NONNEGATIVE, (6,)))])" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "solve-independent", + "metadata": {}, + "outputs": [], "source": [ - "imat_multi_uncoupled = MultiSampleIMAT(lambda_reg=0.0, eps=1e-3)\n", - "P_multi_uncoupled = imat_multi_uncoupled.build(G, multi_data)\n", - "P_multi_uncoupled.solve(solver=\"highs\")\n", + "independent_fluxes = {}\n", "\n", - "imat_multi_coupled = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_multi_coupled = imat_multi_coupled.build(G, multi_data)\n", - "P_multi_coupled.solve(solver=\"highs\")\n", + "for condition in condition_names:\n", + " problem = MultiSampleIMAT(eps=eps, lambda_reg=lambda_reg, scale=True).build(\n", + " G,\n", + " reaction_scores=reaction_scores[condition],\n", + " reaction_bounds=reaction_bounds[condition],\n", + " )\n", + " problem.solve(solver=\"highs\")\n", + " independent_fluxes[condition] = np.asarray(problem.expr.flow.value)\n", "\n", - "imat_single_c1 = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_single_c1 = imat_single_c1.build(G, single_data_c1)\n", - "P_single_c1.solve(solver=\"highs\")\n", + "independent_fluxes = pd.DataFrame(independent_fluxes, index=reaction_ids)\n", + "independent_activity = independent_fluxes.abs() > activity_tolerance\n", "\n", - "imat_single_c2 = MultiSampleIMAT(lambda_reg=0.5, eps=1e-3)\n", - "P_single_c2 = imat_single_c2.build(G, single_data_c2)\n", - "P_single_c2.solve(solver=\"highs\")" + "pd.DataFrame(\n", + " {\n", + " \"biomass\": independent_fluxes.loc[biomass_id],\n", + " \"active reactions\": independent_activity.sum(),\n", + " }\n", + ")" ] }, { "cell_type": "markdown", - "id": "103264dc", + "id": "joint-analysis", "metadata": {}, "source": [ - "## Objective values\n", + "## Solve both expression contexts jointly\n", "\n", - "`P.objectives` provides the solved objective terms and values directly.\n" + "The scientific inputs have the same readable structure as the independent calls. `build_many` creates one flux column per named condition, and `lambda_reg` now penalizes their reaction union." ] }, { "cell_type": "code", - "execution_count": 6, - "id": "ad7bdf16", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.985288Z", - "iopub.status.busy": "2026-02-15T11:15:36.985211Z", - "iopub.status.idle": "2026-02-15T11:15:36.991998Z", - "shell.execute_reply": "2026-02-15T11:15:36.991688Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingterm_indexterm_namevalueweightweighted_value
0multi lambda=00objective_condition_1__BIOMASS-10.01.0-10.0
1multi lambda=01objective_condition_2__BIOMASS-10.01.0-10.0
2multi lambda=02imat_fit_pos_condition_1_00.01.00.0
3multi lambda=03imat_fit_neg_condition_1_00.01.00.0
4multi lambda=04imat_fit_pos_condition_2_10.01.00.0
5multi lambda=05imat_fit_neg_condition_2_10.01.00.0
6multi lambda=06regularization_edge_has_flux_OR10.00.00.0
7multi lambda=0.50objective_condition_1__BIOMASS-10.01.0-10.0
8multi lambda=0.51objective_condition_2__BIOMASS-10.01.0-10.0
9multi lambda=0.52imat_fit_pos_condition_1_00.01.00.0
10multi lambda=0.53imat_fit_neg_condition_1_00.01.00.0
11multi lambda=0.54imat_fit_pos_condition_2_10.41.00.4
12multi lambda=0.55imat_fit_neg_condition_2_10.41.00.4
13multi lambda=0.56regularization_edge_has_flux_OR6.00.53.0
14single c1 lambda=0.50objective_condition_1__BIOMASS-10.01.0-10.0
15single c1 lambda=0.51imat_fit_pos_condition_1_00.01.00.0
16single c1 lambda=0.52imat_fit_neg_condition_1_00.01.00.0
17single c1 lambda=0.53regularization_edge_has_flux6.00.53.0
18single c2 lambda=0.50objective_condition_2__BIOMASS-10.01.0-10.0
19single c2 lambda=0.51imat_fit_pos_condition_2_00.01.00.0
20single c2 lambda=0.52imat_fit_neg_condition_2_00.01.00.0
21single c2 lambda=0.53regularization_edge_has_flux6.00.53.0
\n", - "
" - ], - "text/plain": [ - " setting term_index term_name value \\\n", - "0 multi lambda=0 0 objective_condition_1__BIOMASS -10.0 \n", - "1 multi lambda=0 1 objective_condition_2__BIOMASS -10.0 \n", - "2 multi lambda=0 2 imat_fit_pos_condition_1_0 0.0 \n", - "3 multi lambda=0 3 imat_fit_neg_condition_1_0 0.0 \n", - "4 multi lambda=0 4 imat_fit_pos_condition_2_1 0.0 \n", - "5 multi lambda=0 5 imat_fit_neg_condition_2_1 0.0 \n", - "6 multi lambda=0 6 regularization_edge_has_flux_OR 10.0 \n", - "7 multi lambda=0.5 0 objective_condition_1__BIOMASS -10.0 \n", - "8 multi lambda=0.5 1 objective_condition_2__BIOMASS -10.0 \n", - "9 multi lambda=0.5 2 imat_fit_pos_condition_1_0 0.0 \n", - "10 multi lambda=0.5 3 imat_fit_neg_condition_1_0 0.0 \n", - "11 multi lambda=0.5 4 imat_fit_pos_condition_2_1 0.4 \n", - "12 multi lambda=0.5 5 imat_fit_neg_condition_2_1 0.4 \n", - "13 multi lambda=0.5 6 regularization_edge_has_flux_OR 6.0 \n", - "14 single c1 lambda=0.5 0 objective_condition_1__BIOMASS -10.0 \n", - "15 single c1 lambda=0.5 1 imat_fit_pos_condition_1_0 0.0 \n", - "16 single c1 lambda=0.5 2 imat_fit_neg_condition_1_0 0.0 \n", - "17 single c1 lambda=0.5 3 regularization_edge_has_flux 6.0 \n", - "18 single c2 lambda=0.5 0 objective_condition_2__BIOMASS -10.0 \n", - "19 single c2 lambda=0.5 1 imat_fit_pos_condition_2_0 0.0 \n", - "20 single c2 lambda=0.5 2 imat_fit_neg_condition_2_0 0.0 \n", - "21 single c2 lambda=0.5 3 regularization_edge_has_flux 6.0 \n", - "\n", - " weight weighted_value \n", - "0 1.0 -10.0 \n", - "1 1.0 -10.0 \n", - "2 1.0 0.0 \n", - "3 1.0 0.0 \n", - "4 1.0 0.0 \n", - "5 1.0 0.0 \n", - "6 0.0 0.0 \n", - "7 1.0 -10.0 \n", - "8 1.0 -10.0 \n", - "9 1.0 0.0 \n", - "10 1.0 0.0 \n", - "11 1.0 0.4 \n", - "12 1.0 0.4 \n", - "13 0.5 3.0 \n", - "14 1.0 -10.0 \n", - "15 1.0 0.0 \n", - "16 1.0 0.0 \n", - "17 0.5 3.0 \n", - "18 1.0 -10.0 \n", - "19 1.0 0.0 \n", - "20 1.0 0.0 \n", - "21 0.5 3.0 " - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "solve-joint", + "metadata": {}, + "outputs": [], "source": [ - "def objectives_table(problem, setting):\n", - " rows = []\n", - " for i, (obj, weight) in enumerate(zip(problem.objectives, problem.weights)):\n", - " name = obj.name if obj.name else f\"unnamed_{i}\"\n", - " w = float(weight.value) if hasattr(weight, \"value\") else float(weight)\n", - " rows.append(\n", - " {\n", - " \"setting\": setting,\n", - " \"term_index\": i,\n", - " \"term_name\": name,\n", - " \"value\": float(obj.value),\n", - " \"weight\": w,\n", - " \"weighted_value\": float(obj.value) * w,\n", - " }\n", - " )\n", - " return pd.DataFrame(rows)\n", - "\n", + "joint_problem = MultiSampleIMAT(\n", + " eps=eps,\n", + " lambda_reg=lambda_reg,\n", + " scale=True,\n", + ").build_many(\n", + " G,\n", + " reaction_scores=reaction_scores,\n", + " reaction_bounds=reaction_bounds,\n", + ")\n", + "joint_problem.solve(solver=\"highs\")\n", "\n", - "obj_table = pd.concat(\n", - " [\n", - " objectives_table(P_multi_uncoupled, \"multi lambda=0\"),\n", - " objectives_table(P_multi_coupled, \"multi lambda=0.5\"),\n", - " objectives_table(P_single_c1, \"single c1 lambda=0.5\"),\n", - " objectives_table(P_single_c2, \"single c2 lambda=0.5\"),\n", - " ],\n", - " ignore_index=True,\n", + "joint_fluxes = pd.DataFrame(\n", + " np.asarray(joint_problem.expr.flow.value),\n", + " index=reaction_ids,\n", + " columns=condition_names,\n", ")\n", + "joint_activity = joint_fluxes.abs() > activity_tolerance\n", "\n", - "obj_table" + "assert joint_problem.expr.flow.value.shape == (G.num_edges, len(condition_names))" + ] + }, + { + "cell_type": "markdown", + "id": "fit-expression", + "metadata": {}, + "source": [ + "### Inspect reaction-level expression agreement\n", + "\n", + "Each condition must reach its fixed biomass. A positive reaction score is fitted when the reaction is active; a negative score is fitted when it is inactive. In the [original iMAT formulation](https://www.nature.com/articles/nbt.1487), these agreements contribute to a discrete consistency score. They are better described as **fits and mismatches** than as continuous residuals." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "8816ca3b", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.993145Z", - "iopub.status.busy": "2026-02-15T11:15:36.993067Z", - "iopub.status.idle": "2026-02-15T11:15:36.996793Z", - "shell.execute_reply": "2026-02-15T11:15:36.996529Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingcondition_1_penaltycondition_2_penalty
0multi lambda=00.00.0
1multi lambda=0.50.00.8
2single lambda=0.50.00.0
\n", - "
" - ], - "text/plain": [ - " setting condition_1_penalty condition_2_penalty\n", - "0 multi lambda=0 0.0 0.0\n", - "1 multi lambda=0.5 0.0 0.8\n", - "2 single lambda=0.5 0.0 0.0" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "fit-summary", + "metadata": {}, + "outputs": [], "source": [ - "def fit_penalty_for_sample(problem, sample_name):\n", - " sample_name = str(sample_name).replace(\" \", \"_\")\n", - " sample_marker = f\"_{sample_name}_\"\n", - " return float(\n", - " sum(\n", - " float(o.value)\n", - " for o in problem.objectives\n", - " if o.name and o.name.startswith(\"imat_fit_\") and sample_marker in o.name\n", - " )\n", + "fit_rows = []\n", + "fit_details = []\n", + "\n", + "for condition in condition_names:\n", + " scores = pd.Series(reaction_scores[condition])\n", + " joint_scored_activity = joint_activity.loc[scores.index, condition]\n", + " independent_scored_activity = independent_activity.loc[scores.index, condition]\n", + " joint_fitted = ((scores > 0) & joint_scored_activity) | ((scores < 0) & ~joint_scored_activity)\n", + " independent_fitted = ((scores > 0) & independent_scored_activity) | (\n", + " (scores < 0) & ~independent_scored_activity\n", " )\n", "\n", + " for reaction_id in scores.index:\n", + " fit_details.append(\n", + " {\n", + " \"condition\": condition,\n", + " \"reaction\": reaction_id,\n", + " \"reaction score\": scores[reaction_id],\n", + " \"expected\": \"active\" if scores[reaction_id] > 0 else \"inactive\",\n", + " \"joint flux\": joint_fluxes.loc[reaction_id, condition],\n", + " \"joint state\": \"active\" if joint_scored_activity[reaction_id] else \"inactive\",\n", + " \"fitted independently\": bool(independent_fitted[reaction_id]),\n", + " \"fitted jointly\": bool(joint_fitted[reaction_id]),\n", + " }\n", + " )\n", "\n", - "fit_table = pd.DataFrame(\n", - " [\n", - " {\n", - " \"setting\": \"multi lambda=0\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_multi_uncoupled, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_multi_uncoupled, \"condition_2\"),\n", - " },\n", + " fit_rows.append(\n", " {\n", - " \"setting\": \"multi lambda=0.5\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_multi_coupled, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_multi_coupled, \"condition_2\"),\n", - " },\n", - " {\n", - " \"setting\": \"single lambda=0.5\",\n", - " \"condition_1_penalty\": fit_penalty_for_sample(P_single_c1, \"condition_1\"),\n", - " \"condition_2_penalty\": fit_penalty_for_sample(P_single_c2, \"condition_2\"),\n", - " },\n", - " ]\n", - ")\n", + " \"condition\": condition,\n", + " \"biomass\": joint_fluxes.loc[biomass_id, condition],\n", + " \"active reactions\": int(joint_activity[condition].sum()),\n", + " \"evidence fitted\": f\"{int(joint_fitted.sum())}/{len(scores)}\",\n", + " \"not fitted\": int((~joint_fitted).sum()),\n", + " }\n", + " )\n", "\n", - "fit_table" + " assert np.isclose(joint_fluxes.loc[biomass_id, condition], biomass_targets[condition])\n", + "\n", + "fit_summary = pd.DataFrame(fit_rows).set_index(\"condition\")\n", + "fit_details = pd.DataFrame(fit_details).set_index([\"reaction\", \"condition\"])\n", + "fit_summary" ] }, { "cell_type": "markdown", - "id": "81711827", + "id": "fit-matrix-intro", "metadata": {}, "source": [ - "## Shared reactions" + "A condition-by-reaction agreement matrix is especially useful in multi-condition analyses. It separates reactions that were not scored from scored reactions that the network could or could not fit." ] }, { "cell_type": "code", - "execution_count": 8, - "id": "374ff582", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:36.998101Z", - "iopub.status.busy": "2026-02-15T11:15:36.998016Z", - "iopub.status.idle": "2026-02-15T11:15:37.002805Z", - "shell.execute_reply": "2026-02-15T11:15:37.002594Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingselected_branch
0multi lambda=0 (condition_1)branch_1 (A->B->C)
1multi lambda=0 (condition_2)branch_2 (A->D->C)
2multi lambda=0.5 (condition_1)branch_1 (A->B->C)
3multi lambda=0.5 (condition_2)branch_1 (A->B->C)
4single condition_1 lambda=0.5branch_1 (A->B->C)
5single condition_2 lambda=0.5branch_2 (A->D->C)
\n", - "
" - ], - "text/plain": [ - " setting selected_branch\n", - "0 multi lambda=0 (condition_1) branch_1 (A->B->C)\n", - "1 multi lambda=0 (condition_2) branch_2 (A->D->C)\n", - "2 multi lambda=0.5 (condition_1) branch_1 (A->B->C)\n", - "3 multi lambda=0.5 (condition_2) branch_1 (A->B->C)\n", - "4 single condition_1 lambda=0.5 branch_1 (A->B->C)\n", - "5 single condition_2 lambda=0.5 branch_2 (A->D->C)" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "fit-matrix", + "metadata": {}, + "outputs": [], "source": [ - "idx = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in [\"R_AB\", \"R_AD\"]}\n", + "all_scored_reactions = score_table.index\n", + "fit_matrix = pd.DataFrame(\"not scored\", index=all_scored_reactions, columns=condition_names)\n", "\n", + "for (reaction_id, condition), row in fit_details.iterrows():\n", + " fit_matrix.loc[reaction_id, condition] = \"fitted\" if row[\"fitted jointly\"] else \"not fitted\"\n", "\n", - "def branch_label(ab_flux, ad_flux, tol=1e-6):\n", - " ab_on = abs(ab_flux) > tol\n", - " ad_on = abs(ad_flux) > tol\n", - " if ab_on and not ad_on:\n", - " return \"branch_1 (A->B->C)\"\n", - " if ad_on and not ab_on:\n", - " return \"branch_2 (A->D->C)\"\n", - " if ab_on and ad_on:\n", - " return \"both\"\n", - " return \"none\"\n", + "fit_matrix" + ] + }, + { + "cell_type": "markdown", + "id": "mismatch-interpretation", + "metadata": {}, + "source": [ + "The mismatch table should be examined before interpreting shared and condition-specific pathways. A reaction mismatched both independently and jointly points to expression–feasibility tension within that condition. A reaction fitted independently but mismatched only in the joint model instead points to a trade-off introduced by shared regularization.\n", "\n", + "Expression is evidence about the likelihood of reaction activity, not a measurement of activity or flux. The [original iMAT paper](https://www.nature.com/articles/nbt.1487) reports a central role for post-transcriptional regulation and uses disagreements between expression and predicted activity to generate hypotheses about regulation beyond transcript abundance. Possible mechanisms include protein translation or degradation, phosphorylation and other post-translational effects, and metabolite-level control such as substrate availability and allosteric regulation. A disagreement can also arise from expression thresholds, GPR mapping, missing or incorrect model reactions, medium composition, or an imposed phenotype. iMAT alone cannot distinguish these explanations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "mismatched-reactions", + "metadata": {}, + "outputs": [], + "source": [ + "mismatches = fit_details[~fit_details[\"fitted jointly\"]].copy()\n", "\n", - "branch_usage = pd.DataFrame(\n", - " {\n", - " \"setting\": [\n", - " \"multi lambda=0 (condition_1)\",\n", - " \"multi lambda=0 (condition_2)\",\n", - " \"multi lambda=0.5 (condition_1)\",\n", - " \"multi lambda=0.5 (condition_2)\",\n", - " \"single condition_1 lambda=0.5\",\n", - " \"single condition_2 lambda=0.5\",\n", - " ],\n", - " \"selected_branch\": [\n", - " branch_label(\n", - " P_multi_uncoupled.expr.flow[idx[\"R_AB\"], 0].value, P_multi_uncoupled.expr.flow[idx[\"R_AD\"], 0].value\n", - " ),\n", - " branch_label(\n", - " P_multi_uncoupled.expr.flow[idx[\"R_AB\"], 1].value, P_multi_uncoupled.expr.flow[idx[\"R_AD\"], 1].value\n", - " ),\n", - " branch_label(\n", - " P_multi_coupled.expr.flow[idx[\"R_AB\"], 0].value, P_multi_coupled.expr.flow[idx[\"R_AD\"], 0].value\n", - " ),\n", - " branch_label(\n", - " P_multi_coupled.expr.flow[idx[\"R_AB\"], 1].value, P_multi_coupled.expr.flow[idx[\"R_AD\"], 1].value\n", - " ),\n", - " branch_label(P_single_c1.expr.flow[idx[\"R_AB\"]].value, P_single_c1.expr.flow[idx[\"R_AD\"]].value),\n", - " branch_label(P_single_c2.expr.flow[idx[\"R_AB\"]].value, P_single_c2.expr.flow[idx[\"R_AD\"]].value),\n", - " ],\n", - " }\n", - ")\n", + "assert list(mismatches.index) == [(\"PFL\", \"glucose anaerobic\")]\n", + "assert not mismatches.iloc[0][\"fitted independently\"]\n", + "mismatches" + ] + }, + { + "cell_type": "markdown", + "id": "pfl-mismatch", + "metadata": {}, + "source": [ + "`PFL` is the only unmatched reaction. It is classified as low but remains active in both the independent and joint anaerobic solutions. This is not caused by cross-condition coupling: under the imposed anaerobic growth phenotype and high ethanol evidence, the selected network uses `PFL` to supply acetyl-CoA and formate.\n", + "\n", + "In real data, this would be a hypothesis-generating result—not proof that `PFL` is active despite low expression, and not proof of post-translational regulation. The first checks should separate two broad possibilities:\n", "\n", - "single_c1_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"single condition_1 lambda=0.5\", \"selected_branch\"\n", - "].item()\n", - "single_c2_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"single condition_2 lambda=0.5\", \"selected_branch\"\n", - "].item()\n", - "multi_c1_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"multi lambda=0.5 (condition_1)\", \"selected_branch\"\n", - "].item()\n", - "multi_c2_branch = branch_usage.loc[\n", - " branch_usage[\"setting\"] == \"multi lambda=0.5 (condition_2)\", \"selected_branch\"\n", - "].item()\n", - "\n", - "assert single_c1_branch != single_c2_branch, \"Single-sample runs should select different branches.\"\n", - "assert multi_c1_branch == multi_c2_branch, \"Coupled multi-sample run should align branch usage.\"\n", - "\n", - "branch_usage" + "- **biology not captured by transcript abundance**, including enzyme abundance or modification and metabolite-level regulation;\n", + "- **data or model assumptions**, including thresholds, GPR rules, network completeness, medium bounds, and the required phenotype.\n", + "\n", + "Proteomics, enzyme-activity, metabolomics, or flux measurements are needed to discriminate among these explanations." ] }, { - "cell_type": "code", - "execution_count": 9, - "id": "3f066a68", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.003910Z", - "iopub.status.busy": "2026-02-15T11:15:37.003842Z", - "iopub.status.idle": "2026-02-15T11:15:37.007924Z", - "shell.execute_reply": "2026-02-15T11:15:37.007671Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingn_sharedsharedonly_condition_1only_condition_2
0multi lambda=0.56[BIOMASS, EX_A, R_AB, R_BC, R_CE, R_EF][][]
1single lambda=0.54[BIOMASS, EX_A, R_CE, R_EF][R_AB, R_BC][R_AD, R_DC]
\n", - "
" - ], - "text/plain": [ - " setting n_shared shared \\\n", - "0 multi lambda=0.5 6 [BIOMASS, EX_A, R_AB, R_BC, R_CE, R_EF] \n", - "1 single lambda=0.5 4 [BIOMASS, EX_A, R_CE, R_EF] \n", - "\n", - " only_condition_1 only_condition_2 \n", - "0 [] [] \n", - "1 [R_AB, R_BC] [R_AD, R_DC] " - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "joint-versus-independent", + "metadata": {}, "source": [ - "all_edge_ids = [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)]\n", - "\n", - "\n", - "def active_ids(problem, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", - " return {all_edge_ids[i] for i in np.where(np.abs(flow) > tol)[0]}\n", - "\n", - "\n", - "def shared_unique(active_c1, active_c2, setting):\n", - " shared = sorted(active_c1 & active_c2)\n", - " only_c1 = sorted(active_c1 - active_c2)\n", - " only_c2 = sorted(active_c2 - active_c1)\n", - " return {\n", - " \"setting\": setting,\n", - " \"n_shared\": len(shared),\n", - " \"shared\": shared,\n", - " \"only_condition_1\": only_c1,\n", - " \"only_condition_2\": only_c2,\n", - " }\n", + "### What did joint inference change?\n", "\n", + "The independent solutions are compared only after both optimizations have finished. The joint solution considers reuse while selecting the flux states, producing a smaller union and a larger internally consistent shared set." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "union-comparison", + "metadata": {}, + "outputs": [], + "source": [ + "independent_union = independent_activity.any(axis=1)\n", + "independent_shared = independent_activity.all(axis=1)\n", + "joint_union = joint_activity.any(axis=1)\n", + "joint_shared = joint_activity.all(axis=1)\n", "\n", - "shared_table = pd.DataFrame(\n", - " [\n", - " shared_unique(active_ids(P_multi_coupled, 0), active_ids(P_multi_coupled, 1), \"multi lambda=0.5\"),\n", - " shared_unique(active_ids(P_single_c1), active_ids(P_single_c2), \"single lambda=0.5\"),\n", - " ]\n", + "selection_comparison = pd.DataFrame(\n", + " {\n", + " \"shared reactions\": {\n", + " \"independent inference, compared afterward\": int(independent_shared.sum()),\n", + " \"one joint inference\": int(joint_shared.sum()),\n", + " },\n", + " \"reaction union\": {\n", + " \"independent inference, compared afterward\": int(independent_union.sum()),\n", + " \"one joint inference\": int(joint_union.sum()),\n", + " },\n", + " }\n", ")\n", "\n", - "shared_table" + "assert joint_union.sum() < independent_union.sum()\n", + "assert joint_shared.sum() > independent_shared.sum()\n", + "selection_comparison" ] }, { - "cell_type": "code", - "execution_count": 10, - "id": "0ec4a31d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.008954Z", - "iopub.status.busy": "2026-02-15T11:15:37.008893Z", - "iopub.status.idle": "2026-02-15T11:15:37.020063Z", - "shell.execute_reply": "2026-02-15T11:15:37.019772Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tgraph [center=1 rankdir=LR]\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_5_target [shape=point]\n", - "\tF [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_5_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], + "cell_type": "markdown", + "id": "usage-patterns", + "metadata": {}, "source": [ - "active_multi_c1 = np.abs(P_multi_coupled.expr.flow.value[:, 0]) > 1e-6\n", - "active_multi_c2 = np.abs(P_multi_coupled.expr.flow.value[:, 1]) > 1e-6\n", + "## Shared and condition-specific metabolism\n", "\n", - "G.edge_subgraph(active_multi_c1).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "As in Multi-condition FBA, categories are derived from the joint activity matrix. With two conditions, every reaction in the union is either shared, aerobic-specific, or anaerobic-specific." ] }, { "cell_type": "code", - "execution_count": 11, - "id": "1a42f91d", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.021194Z", - "iopub.status.busy": "2026-02-15T11:15:37.021107Z", - "iopub.status.idle": "2026-02-15T11:15:37.031511Z", - "shell.execute_reply": "2026-02-15T11:15:37.031205Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "digraph {\n", - "\tgraph [center=1 rankdir=LR]\n", - "\tnode [fixedsize=true]\n", - "\te_0_source [shape=point]\n", - "\tA [shape=circle]\n", - "\tA [shape=circle]\n", - "\tB [shape=circle]\n", - "\tB [shape=circle]\n", - "\tC [shape=circle]\n", - "\tC [shape=circle]\n", - "\tE [shape=circle]\n", - "\tE [shape=circle]\n", - "\tF [shape=circle]\n", - "\te_5_target [shape=point]\n", - "\tF [shape=circle]\n", - "\te_0_source -> A [arrowhead=normal]\n", - "\tA -> B [arrowhead=normal]\n", - "\tB -> C [arrowhead=normal]\n", - "\tC -> E [arrowhead=normal]\n", - "\tE -> F [arrowhead=normal]\n", - "\tF -> e_5_target [arrowhead=normal]\n", - "}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "categorize-reactions", + "metadata": {}, + "outputs": [], + "source": [ + "reaction_groups = pd.Series(\"inactive\", index=reaction_ids, name=\"usage group\")\n", + "reaction_groups.loc[joint_shared] = \"shared\"\n", + "reaction_groups.loc[joint_activity[\"glucose aerobic\"] & ~joint_activity[\"glucose anaerobic\"]] = (\n", + " \"glucose aerobic only\"\n", + ")\n", + "reaction_groups.loc[~joint_activity[\"glucose aerobic\"] & joint_activity[\"glucose anaerobic\"]] = (\n", + " \"glucose anaerobic only\"\n", + ")\n", + "\n", + "group_table = (\n", + " reaction_groups[joint_union]\n", + " .groupby(reaction_groups[joint_union], sort=False)\n", + " .agg(\n", + " reactions=\"size\",\n", + " reaction_ids=lambda values: \", \".join(values.index),\n", + " )\n", + ")\n", + "\n", + "assert int(group_table[\"reactions\"].sum()) == int(joint_union.sum())\n", + "group_table" + ] + }, + { + "cell_type": "markdown", + "id": "biological-interpretation", + "metadata": {}, "source": [ - "G.edge_subgraph(active_multi_c2).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "### Biological interpretation\n", + "\n", + "| Usage group | Characteristic reactions | Interpretation |\n", + "|---|---|---|\n", + "| Shared | `GLCpts`, `PFK`, `GAPD`, `ENO`, `PYK`, biomass | Central glucose utilization and precursor production required in both states |\n", + "| Glucose aerobic only | `EX_o2_e`, `O2t`, `CYTBD`, `NADH16`, `PDH` | Oxygen uptake, respiratory electron transfer, and oxidative pyruvate metabolism |\n", + "| Glucose anaerobic only | `PFL`, `FORti`, `EX_for_e`, `ACALD`, `ALCD2x`, `ETOHt2r`, `EX_etoh_e` | Pyruvate-formate cleavage followed by formate and ethanol secretion |\n", + "\n", + "Most condition-specific reactions agree with the supplied evidence; `PFL` is the explicit exception identified by the mismatch analysis. The inferred sets also include the transport and exchange reactions required to complete each biological route. That is an advantage of network inference over listing high-expression reactions alone: the output is a stoichiometrically connected hypothesis that makes conflicting evidence visible.\n", + "\n", + "As noted in the Multi-condition FBA guide, shared activity does not imply equal magnitude or direction. For example, `ATPS4r` is active in both selected states but carries flux in opposite directions in this solution." ] }, { "cell_type": "markdown", - "id": "ae1c6d9a", + "id": "network-visualization", "metadata": {}, "source": [ - "## Manual check of objectives per condition" + "### Visualize the jointly inferred network\n", + "\n", + "The plot shows the complete joint union. Shared reactions are gray, aerobic-specific reactions are blue, and anaerobic-specific reactions are red.\n", + "\n", + "| Usage group | Color |\n", + "|---|---|\n", + "| Shared | Gray |\n", + "| Glucose aerobic only | Blue |\n", + "| Glucose anaerobic only | Red |" ] }, { "cell_type": "code", - "execution_count": 12, - "id": "3f372c79", - "metadata": { - "execution": { - "iopub.execute_input": "2026-02-15T11:15:37.032792Z", - "iopub.status.busy": "2026-02-15T11:15:37.032689Z", - "iopub.status.idle": "2026-02-15T11:15:37.037532Z", - "shell.execute_reply": "2026-02-15T11:15:37.037292Z" - } - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
settingcondition_1_ratiocondition_2_ratio
0multi lambda=01.01.0
1multi lambda=0.51.00.2
2single lambda=0.51.01.0
\n", - "
" - ], - "text/plain": [ - " setting condition_1_ratio condition_2_ratio\n", - "0 multi lambda=0 1.0 1.0\n", - "1 multi lambda=0.5 1.0 0.2\n", - "2 single lambda=0.5 1.0 1.0" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "id": "plot-joint-network", + "metadata": {}, + "outputs": [], "source": [ - "edge_index_by_id = {rid: i for i, rid in enumerate(all_edge_ids)}\n", + "group_colors = {\n", + " \"shared\": \"#b0b0b0\",\n", + " \"glucose aerobic only\": \"#277da1\",\n", + " \"glucose anaerobic only\": \"#e63946\",\n", + "}\n", + "\n", + "selected_reactions = np.flatnonzero(joint_union.to_numpy())\n", + "joint_network = G.edge_subgraph(selected_reactions)\n", + "edge_style = {}\n", "\n", + "for displayed_index, original_index in enumerate(selected_reactions):\n", + " reaction_id = reaction_ids[original_index]\n", + " group = reaction_groups[reaction_id]\n", + " edge_style[displayed_index] = {\n", + " \"color\": group_colors[group],\n", + " \"penwidth\": \"1.5\" if group == \"shared\" else \"4\",\n", + " }\n", + "\n", + "joint_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "interpretation-limitations", + "metadata": {}, + "source": [ + "## Interpretation and limitations\n", "\n", - "def manual_fit_ratio(problem, scores, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", + "By fitting the conditions together, we can compare them against the same metabolic solution. The model reuses reactions when it can, but still keeps the respiratory pathway in the aerobic condition and fermentation in the anaerobic condition. This is different from averaging the expression profiles or comparing networks inferred in separate runs.\n", "\n", - " matched = 0.0\n", - " total = 0.0\n", - " for rid, score in scores.items():\n", - " i = edge_index_by_id[rid]\n", - " active = abs(float(flow[i])) > tol\n", - " weight = abs(float(score))\n", - " ok = (score > 0 and active) or (score < 0 and not active)\n", - " total += weight\n", - " if ok:\n", - " matched += weight\n", - " return matched / total if total > 0 else np.nan\n", + "The fit table is an important part of the biological interpretation. It shows where the expression data support the selected network and where the model cannot satisfy both the expression evidence and the metabolic constraints. Comparing the independent and joint fits also reveals whether a mismatch was already present in one condition or appeared when the conditions were analyzed together.\n", "\n", + "Keep in mind that RNA abundance does not directly measure enzyme activity or flux. Protein abundance, post-translational regulation, and metabolite-level control can all separate expression from metabolic activity. A mismatch is therefore something to investigate, not evidence for a particular regulatory mechanism.\n", "\n", - "manual_fit_table = pd.DataFrame(\n", - " [\n", - " {\n", - " \"setting\": \"multi lambda=0\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_multi_uncoupled, scores_condition_1, condition=0),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_multi_uncoupled, scores_condition_2, condition=1),\n", - " },\n", - " {\n", - " \"setting\": \"multi lambda=0.5\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_multi_coupled, scores_condition_1, condition=0),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_multi_coupled, scores_condition_2, condition=1),\n", - " },\n", - " {\n", - " \"setting\": \"single lambda=0.5\",\n", - " \"condition_1_ratio\": manual_fit_ratio(P_single_c1, scores_condition_1),\n", - " \"condition_2_ratio\": manual_fit_ratio(P_single_c2, scores_condition_2),\n", - " },\n", - " ]\n", - ")\n", + "In practice, it is worth checking different expression thresholds and comparing the joint result with the independently inferred networks. Shared reactions may still carry different fluxes—or even operate in opposite directions—and alternative solutions may exist. The choice of `lambda_reg` also matters: larger values favor more reaction reuse, but can eventually outweigh weaker expression evidence.\n", "\n", - "manual_fit_table" + "The synthetic profiles isolate the multi-condition formulation. For a workflow using measured expression data, continue with the [context-specific metabolic omics tutorial](../../tutorials/fba/context-specific-metabolic-omics.ipynb)." ] } ], "metadata": { "kernelspec": { - "display_name": "default", + "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.12" + "version": "3.11" } }, "nbformat": 4, diff --git a/docs/guide/metabolism/multicondition-sfba.ipynb b/docs/guide/metabolism/multicondition-sfba.ipynb index 93cbd34b7..44b3f30d2 100644 --- a/docs/guide/metabolism/multicondition-sfba.ipynb +++ b/docs/guide/metabolism/multicondition-sfba.ipynb @@ -2,321 +2,558 @@ "cells": [ { "cell_type": "markdown", - "id": "mc_sfba_01", + "id": "multicondition-introduction", "metadata": {}, "source": [ - "# Multi-condition sparse FBA\n", + "# Multi-condition FBA\n", "\n", - "This tutorial extends the sparse FBA workflow from `flux-balance-analysis.ipynb` to multiple conditions. We first solve standard multi-condition FBA to get each condition's optimal biomass. Then, as in single-condition sparse FBA, we constrain biomass to at least 90% of optimum and minimize the number of active reactions.\n", + "Multi-condition flux balance analysis represents several metabolic contexts in one optimization problem. Every condition has its own flux vector, reaction bounds, and objectives, so media, perturbations, or required phenotypes can differ while the underlying metabolic model remains the same.\n", "\n", - "To make the effect visible, we use a toy network where each condition has a small preference for a different branch." + "In CORNETO, `MultiSampleFBA.build_many` constructs this condition-by-reaction flux matrix directly. This supports two related uses:\n", + "\n", + "- solve and inspect several condition-specific FBA problems through one consistent interface;\n", + "- couple reaction selection across conditions to identify a compact shared program and the reactions needed by particular contexts.\n", + "\n", + "The second use is the main advantage of the multi-condition formulation: all conditions influence reaction selection before the networks are compared." + ] + }, + { + "cell_type": "markdown", + "id": "independent-and-coupled", + "metadata": {}, + "source": [ + "## Independent and coupled formulations\n", + "\n", + "Without regularization, the condition-specific flux vectors obey separate steady-state constraints and can be interpreted as several FBA problems built together. With `lambda_reg > 0`, CORNETO adds structured sparsity across the complete flux matrix.\n", + "\n", + "For each reaction, CORNETO records whether it is active in each condition and whether it is active in the union. A reaction used by one or several conditions contributes once to the union-level penalty. Reusing a reaction is therefore cheaper than introducing another alternative, while condition-specific reactions remain available when required by their bounds or phenotypes.\n", + "\n", + "Structured sparsity penalizes the union; it does not force identical fluxes and does not directly maximize the intersection. Shared and context-specific reactions are summaries derived from the jointly selected condition networks." + ] + }, + { + "cell_type": "markdown", + "id": "joint-versus-pairwise", + "metadata": {}, + "source": [ + "## Why is this different from pairwise comparisons?\n", + "\n", + "A metabolic model usually admits many equivalent or near-equivalent flux distributions. Consider an experiment with a control and two perturbed conditions, A and B. One common strategy is to run two independent optimizations:\n", + "\n", + "| Optimization | Condition-specific flux solutions | Reactions coupled by one union penalty |\n", + "|---|---|---|\n", + "| Separate analysis 1 | control and condition A | reactions used by control or A |\n", + "| Separate analysis 2 | a new control solution and condition B | reactions used by control or B |\n", + "\n", + "The media are not combined: every condition keeps its own bounds and flux vector. However, the control is solved twice, once inside each independent optimization. Its **selected control reaction set**—the reactions carrying flux in that solution—can differ between the two runs even though its bounds and required phenotype are unchanged.\n", + "\n", + "Comparing the two results afterward can therefore mix genuine biological differences with independent selection among alternative pathways. In a joint CORNETO analysis, one optimization contains one flux vector for control, one for A, and one for B, and applies a single union penalty across all three. The resulting shared and condition-dependent reaction sets are internally consistent with the complete experiment." + ] + }, + { + "cell_type": "markdown", + "id": "cobrapy-comparison", + "metadata": {}, + "source": [ + "## Relation to COBRApy\n", + "\n", + "COBRApy naturally solves FBA or pFBA independently for each medium. A user can reproduce joint selection by manually constructing a coupled mixed-integer formulation with optlang. CORNETO provides the condition-specific flux matrix and union-level structured sparsity directly through `MultiSampleFBA.build_many`." + ] + }, + { + "cell_type": "markdown", + "id": "shared-context-example", + "metadata": {}, + "source": [ + "## Example: shared and context-specific metabolism\n", + "\n", + "The [FBA guide](flux-balance-analysis.ipynb) showed how to solve several media conditions in one CORNETO problem. Here we use that interface to address a small biological question:\n", + "\n", + "> Which reactions form a compact metabolic program shared across metabolic conditions, and which reactions are required only in particular contexts?\n", + "\n", + "We will compare aerobic growth on glucose (the control), aerobic growth on acetate, and anaerobic growth on glucose in the COBRApy *E. coli* core model. The conditions are deliberately simple: they illustrate joint reaction selection rather than reproduce a particular experiment. After solving them jointly, reactions can be described as:\n", + "\n", + "- **shared core**: active in all conditions;\n", + "- **partially shared**: active in more than one condition, but not all;\n", + "- **context-specific**: active in exactly one condition;\n", + "- **union**: active in at least one condition." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_02", + "id": "load-model", "metadata": {}, "outputs": [], "source": [ + "from contextlib import redirect_stdout\n", + "from io import StringIO\n", + "\n", "import numpy as np\n", "import pandas as pd\n", + "from cobra.io import load_model\n", "\n", - "import corneto as cn\n", + "from corneto.io import cobra_model_to_graph\n", "from corneto.methods import MultiSampleFBA\n", "\n", - "cn.info()" + "with redirect_stdout(StringIO()):\n", + " cobra_model = load_model(\"textbook\")\n", + "\n", + "G = cobra_model_to_graph(cobra_model)\n", + "reaction_ids = list(G.get_attr_from_edges(\"id\"))\n", + "biomass_id = \"Biomass_Ecoli_core\"\n", + "biomass_index = reaction_ids.index(biomass_id)" + ] + }, + { + "cell_type": "markdown", + "id": "oxygen-conditions", + "metadata": {}, + "source": [ + "## Define the metabolic conditions\n", + "\n", + "The conditions change either the carbon source or oxygen availability. As in the previous guide, uptake is a negative exchange flux and `0` blocks uptake.\n", + "\n", + "| Condition | Glucose uptake | Acetate uptake | Oxygen uptake |\n", + "|---|---:|---:|---:|\n", + "| Glucose aerobic | −10 | 0 | −20 |\n", + "| Acetate aerobic | 0 | −10 | −20 |\n", + "| Glucose anaerobic | −10 | 0 | 0 |" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_03", + "id": "condition-inputs", "metadata": {}, "outputs": [], "source": [ - "G = cn.Graph()\n", + "condition_names = [\"glucose aerobic\", \"acetate aerobic\", \"glucose anaerobic\"]\n", "\n", - "# Uptake\n", - "G.add_edge((), \"A\", id=\"EX_A\", default_lb=0, default_ub=10)\n", - "\n", - "# Two alternative branches\n", - "G.add_edge(\"A\", \"B\", id=\"R_AB\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"B\", \"C\", id=\"R_BC\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"A\", \"D\", id=\"R_AD\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"D\", \"C\", id=\"R_DC\", default_lb=0, default_ub=100)\n", - "\n", - "# Shared pathway to biomass\n", - "G.add_edge(\"C\", \"E\", id=\"R_CE\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"E\", \"F\", id=\"R_EF\", default_lb=0, default_ub=100)\n", - "G.add_edge(\"F\", (), id=\"BIOMASS\", default_lb=0, default_ub=100)\n", + "media_bounds = {\n", + " \"glucose aerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_ac_e\": (0.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " },\n", + " \"acetate aerobic\": {\n", + " \"EX_glc__D_e\": (0.0, 1000.0),\n", + " \"EX_ac_e\": (-10.0, 1000.0),\n", + " \"EX_o2_e\": (-20.0, 1000.0),\n", + " },\n", + " \"glucose anaerobic\": {\n", + " \"EX_glc__D_e\": (-10.0, 1000.0),\n", + " \"EX_ac_e\": (0.0, 1000.0),\n", + " \"EX_o2_e\": (0.0, 1000.0),\n", + " },\n", + "}\n", + "biomass_objectives = {name: {biomass_id: -1} for name in condition_names}" + ] + }, + { + "cell_type": "markdown", + "id": "maximum-biomass", + "metadata": {}, + "source": [ + "## Establish each condition's growth capacity\n", "\n", - "pd.DataFrame(\n", - " {\n", - " \"edge_index\": range(G.num_edges),\n", - " \"reaction_id\": [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)],\n", - " }\n", - ")" + "First, standard multi-condition FBA determines the maximum biomass supported by each medium. At this stage the flux vectors share one problem object but are not coupled by sparsity." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_04", + "id": "solve-maximum-biomass", "metadata": {}, "outputs": [], "source": [ - "G.plot()" + "standard_problem = MultiSampleFBA().build_many(\n", + " G,\n", + " objectives=biomass_objectives,\n", + " reaction_bounds=media_bounds,\n", + ")\n", + "standard_problem.solve(solver=\"scipy\")\n", + "\n", + "maximum_biomass = pd.Series(\n", + " standard_problem.expr.flow.value[biomass_index, :],\n", + " index=condition_names,\n", + " name=\"maximum biomass\",\n", + ")\n", + "\n", + "assert (maximum_biomass > 0).all()\n", + "maximum_biomass.to_frame()" + ] + }, + { + "cell_type": "markdown", + "id": "sparse-setup", + "metadata": {}, + "source": [ + "## Require growth and favor a compact reaction union\n", + "\n", + "For this controlled comparison, biomass is fixed at exactly 90% of each condition's optimum. Pairwise and joint analyses therefore explain the same predefined phenotypes: network differences cannot be attributed to different achieved growth rates.\n", + "\n", + "`lambda_reg=0.1` penalizes reactions in the union of the selected condition networks. Because biomass is fixed, any positive regularization weight ranks feasible solutions by their union size instead of trading additional growth for sparsity.\n", + "\n", + "The two helpers below keep the scientific inputs visible: one builds a sparse problem for named conditions and the other labels its flux matrix." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_05", + "id": "sparse-helpers", "metadata": {}, "outputs": [], "source": [ - "def make_condition(preferred_branch):\n", - " # Main objective: maximize biomass (negative value because objectives are minimized).\n", - " sample = {\"BIOMASS\": {\"role\": \"objective\", \"value\": -1.0}}\n", - " # Small condition-specific preference for one branch.\n", - " sample[preferred_branch] = {\"role\": \"objective\", \"value\": -0.01}\n", - " return sample\n", + "biomass_fraction = 0.90\n", + "biomass_targets = biomass_fraction * maximum_biomass\n", + "activity_tolerance = 1e-6\n", "\n", "\n", - "condition_specs = {\n", - " \"condition_1\": make_condition(\"R_BC\"),\n", - " \"condition_2\": make_condition(\"R_DC\"),\n", - "}\n", + "def build_sparse_problem(names):\n", + " \"\"\"Build and solve sparse FBA for the requested conditions.\"\"\"\n", + " objectives = {name: biomass_objectives[name] for name in names}\n", + " bounds = {\n", + " name: {\n", + " **media_bounds[name],\n", + " biomass_id: (biomass_targets[name], biomass_targets[name]),\n", + " }\n", + " for name in names\n", + " }\n", + " problem = MultiSampleFBA(lambda_reg=0.1).build_many(\n", + " G,\n", + " objectives=objectives,\n", + " reaction_bounds=bounds,\n", + " )\n", + " problem.solve(solver=\"highs\")\n", + " return problem\n", + "\n", "\n", - "multi_data = cn.Data.from_cdict(condition_specs)\n", - "sample_names = list(condition_specs)" + "def labeled_fluxes(problem, names):\n", + " \"\"\"Return the solved flux matrix with reaction and condition labels.\"\"\"\n", + " return pd.DataFrame(\n", + " problem.expr.flow.value,\n", + " index=reaction_ids,\n", + " columns=names,\n", + " )" ] }, { "cell_type": "markdown", - "id": "mc_sfba_06", + "id": "separate-comparisons", "metadata": {}, "source": [ - "## Standard multi-condition FBA\n", + "## What happens in separate two-condition analyses?\n", "\n", - "We start with regular multi-condition FBA to obtain the maximal biomass in each condition. These values are later used as lower bounds for sparse FBA." + "First we build one optimization containing glucose-aerobic and acetate-aerobic flux vectors. Separately, we build another containing glucose-aerobic and glucose-anaerobic flux vectors. Each condition retains its own medium bounds; they are columns in the same optimization, not a combined medium.\n", + "\n", + "Because these are independent optimizations, glucose aerobic is solved twice. We compare the active reactions selected for that identical glucose-aerobic condition in the two results." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_07", + "id": "solve-pairs", "metadata": {}, "outputs": [], "source": [ - "idx = {rid: next(iter(G.get_edges_by_attr(\"id\", rid))) for rid in [\"BIOMASS\", \"R_AB\", \"R_AD\"]}\n", + "control_acetate_names = [\"glucose aerobic\", \"acetate aerobic\"]\n", + "control_anaerobic_names = [\"glucose aerobic\", \"glucose anaerobic\"]\n", "\n", - "P_opt = MultiSampleFBA(lambda_reg=0.0).build(G, multi_data)\n", - "P_opt.solve(solver=\"highs\")\n", + "control_acetate_problem = build_sparse_problem(control_acetate_names)\n", + "control_anaerobic_problem = build_sparse_problem(control_anaerobic_names)\n", "\n", - "biomass_opt = {name: float(P_opt.expr.flow[idx[\"BIOMASS\"], i].value) for i, name in enumerate(sample_names)}\n", + "control_acetate_fluxes = labeled_fluxes(control_acetate_problem, control_acetate_names)\n", + "control_anaerobic_fluxes = labeled_fluxes(control_anaerobic_problem, control_anaerobic_names)\n", "\n", - "pd.DataFrame(\n", + "pairwise_control_summary = pd.DataFrame(\n", " {\n", - " \"condition\": sample_names,\n", - " \"optimal_biomass\": [biomass_opt[name] for name in sample_names],\n", + " \"analyzed with acetate aerobic\": {\n", + " \"biomass\": control_acetate_fluxes.loc[biomass_id, \"glucose aerobic\"],\n", + " \"active reactions\": (\n", + " control_acetate_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ).sum(),\n", + " },\n", + " \"analyzed with glucose anaerobic\": {\n", + " \"biomass\": control_anaerobic_fluxes.loc[biomass_id, \"glucose aerobic\"],\n", + " \"active reactions\": (\n", + " control_anaerobic_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ).sum(),\n", + " },\n", " }\n", - ")" + ")\n", + "\n", + "assert np.isclose(pairwise_control_summary.loc[\"biomass\"].iloc[0], pairwise_control_summary.loc[\"biomass\"].iloc[1])\n", + "pairwise_control_summary" ] }, { - "cell_type": "markdown", - "id": "mc_sfba_08", + "cell_type": "code", + "execution_count": null, + "id": "compare-controls", "metadata": {}, + "outputs": [], "source": [ - "## Sparse FBA per condition (independent runs)\n", + "control_activity = pd.DataFrame(\n", + " {\n", + " \"analyzed with acetate aerobic\": (\n", + " control_acetate_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ),\n", + " \"analyzed with glucose anaerobic\": (\n", + " control_anaerobic_fluxes[\"glucose aerobic\"].abs() > activity_tolerance\n", + " ),\n", + " }\n", + ")\n", "\n", - "This mirrors the single-condition sparse FBA pattern from `flux-balance-analysis.ipynb`:\n", + "different_control_reactions = control_activity[\n", + " control_activity.iloc[:, 0] != control_activity.iloc[:, 1]\n", + "].copy()\n", + "different_control_reactions.insert(0, \"reaction\", different_control_reactions.index)\n", "\n", - "1. Solve standard FBA to get optimum biomass.\n", - "2. Add a biomass lower bound (90% of optimum).\n", - "3. Solve sparse FBA (`lambda_reg > 0`)." + "assert not different_control_reactions.empty\n", + "different_control_reactions.reset_index(drop=True)" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "mc_sfba_09", + "cell_type": "markdown", + "id": "pairwise-interpretation", "metadata": {}, - "outputs": [], "source": [ - "lambda_sparse = 0.15\n", - "biomass_fraction = 0.90\n", - "biomass_targets = {name: biomass_fraction * biomass_opt[name] for name in sample_names}\n", - "\n", - "single_sparse = {}\n", - "for name in sample_names:\n", - " d = cn.Data.from_cdict({name: condition_specs[name]})\n", - " P = MultiSampleFBA(lambda_reg=lambda_sparse).build(G, d)\n", - " P += P.expr.flow[idx[\"BIOMASS\"]] >= biomass_targets[name]\n", - " P.solve(solver=\"highs\")\n", - " single_sparse[name] = P" + "Both columns in the table describe the active reaction set for **glucose aerobic**, not the other condition in each analysis. Its medium and fixed biomass are identical in both runs, yet the selected reactions differ. The difference arises because each two-condition optimization can choose a different feasible pathway for glucose aerobic while minimizing its own reaction union. It is not a change in control biology. A post-hoc comparison cannot distinguish this optimization variability from genuine context specificity." ] }, { "cell_type": "markdown", - "id": "mc_sfba_10", + "id": "joint-analysis", "metadata": {}, "source": [ - "## Coupled multi-condition sparse FBA\n", + "## Solve all conditions jointly\n", "\n", - "Now we solve both conditions together with structured sparsity. The same biomass lower bounds are enforced, but regularization is applied jointly across conditions." + "We now place all three condition-specific flux vectors in one optimization. Glucose aerobic appears only once, alongside acetate aerobic and glucose anaerobic, and a single reaction-union penalty couples the three solutions." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_11", + "id": "solve-joint", "metadata": {}, "outputs": [], "source": [ - "P_multi_sparse = MultiSampleFBA(lambda_reg=lambda_sparse).build(G, multi_data)\n", - "for i, name in enumerate(sample_names):\n", - " P_multi_sparse += P_multi_sparse.expr.flow[idx[\"BIOMASS\"], i] >= biomass_targets[name]\n", - "P_multi_sparse.solve(solver=\"highs\")" + "joint_problem = build_sparse_problem(condition_names)\n", + "joint_fluxes = labeled_fluxes(joint_problem, condition_names)\n", + "joint_activity = joint_fluxes.abs() > activity_tolerance\n", + "\n", + "condition_summary = pd.DataFrame(\n", + " {\n", + " \"biomass target\": biomass_targets,\n", + " \"solved biomass\": joint_fluxes.loc[biomass_id],\n", + " \"active reactions\": joint_activity.sum(axis=0),\n", + " }\n", + ")\n", + "\n", + "assert (condition_summary[\"solved biomass\"] >= condition_summary[\"biomass target\"] - 1e-7).all()\n", + "condition_summary" ] }, { "cell_type": "markdown", - "id": "mc_sfba_12", + "id": "classify-reactions", "metadata": {}, "source": [ - "## Compare independent vs coupled sparse solutions" + "### Shared and context-specific reaction usage\n", + "\n", + "The activity matrix has one Boolean column per condition. Counting active columns assigns every reaction in the union to exactly one usage category." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_13", + "id": "reaction-usage", "metadata": {}, "outputs": [], "source": [ - "edge_ids = [G.get_attr_edge(i).get(\"id\") for i in range(G.num_edges)]\n", - "\n", - "\n", - "def active_ids(problem, condition=None, tol=1e-6):\n", - " flow = np.asarray(problem.expr.flow.value)\n", - " if condition is not None:\n", - " flow = flow[:, condition]\n", - " return {edge_ids[i] for i in np.where(np.abs(flow) > tol)[0]}\n", - "\n", - "\n", - "def branch_label(ab_flux, ad_flux, tol=1e-6):\n", - " ab_on = abs(float(ab_flux)) > tol\n", - " ad_on = abs(float(ad_flux)) > tol\n", - " if ab_on and not ad_on:\n", - " return \"branch_1 (A->B->C)\"\n", - " if ad_on and not ab_on:\n", - " return \"branch_2 (A->D->C)\"\n", - " if ab_on and ad_on:\n", - " return \"both\"\n", - " return \"none\"\n", - "\n", - "\n", - "rows = []\n", - "for i, name in enumerate(sample_names):\n", - " P_single = single_sparse[name]\n", - " rows.append(\n", - " {\n", - " \"setting\": f\"single sparse ({name})\",\n", - " \"selected_branch\": branch_label(\n", - " P_single.expr.flow[idx[\"R_AB\"]].value, P_single.expr.flow[idx[\"R_AD\"]].value\n", - " ),\n", - " \"biomass\": float(P_single.expr.flow[idx[\"BIOMASS\"]].value),\n", - " \"active_reactions\": len(active_ids(P_single)),\n", - " }\n", - " )\n", - " rows.append(\n", - " {\n", - " \"setting\": f\"multi sparse coupled ({name})\",\n", - " \"selected_branch\": branch_label(\n", - " P_multi_sparse.expr.flow[idx[\"R_AB\"], i].value, P_multi_sparse.expr.flow[idx[\"R_AD\"], i].value\n", - " ),\n", - " \"biomass\": float(P_multi_sparse.expr.flow[idx[\"BIOMASS\"], i].value),\n", - " \"active_reactions\": len(active_ids(P_multi_sparse, condition=i)),\n", - " }\n", - " )\n", + "active_condition_count = joint_activity.sum(axis=1)\n", + "joint_union = active_condition_count > 0\n", "\n", - "comparison = pd.DataFrame(rows)\n", - "comparison" + "reaction_usage = pd.DataFrame(\n", + " {\n", + " \"reaction\": joint_activity.index[joint_union],\n", + " \"active in\": [\n", + " \", \".join(joint_activity.columns[row])\n", + " for row in joint_activity.loc[joint_union].to_numpy()\n", + " ],\n", + " \"category\": np.select(\n", + " [\n", + " active_condition_count[joint_union] == len(condition_names),\n", + " active_condition_count[joint_union] == 1,\n", + " ],\n", + " [\"shared core\", \"context-specific\"],\n", + " default=\"partially shared\",\n", + " ),\n", + " }\n", + ")\n", + "\n", + "category_counts = reaction_usage[\"category\"].value_counts().rename(\"reactions\")\n", + "expected_categories = {\"shared core\", \"partially shared\", \"context-specific\"}\n", + "\n", + "assert set(reaction_usage[\"category\"]) == expected_categories\n", + "assert int(category_counts.sum()) == int(joint_union.sum())\n", + "category_counts.to_frame()" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_14", + "id": "usage-patterns", "metadata": {}, "outputs": [], "source": [ - "single_union = set().union(*(active_ids(single_sparse[name]) for name in sample_names))\n", - "multi_union = set().union(*(active_ids(P_multi_sparse, condition=i) for i in range(len(sample_names))))\n", - "\n", - "summary = pd.DataFrame(\n", - " [\n", - " {\n", - " \"single_sparse_union\": len(single_union),\n", - " \"multi_sparse_union\": len(multi_union),\n", - " \"union_reduction\": len(single_union) - len(multi_union),\n", - " }\n", - " ]\n", + "usage_patterns = (\n", + " reaction_usage.groupby([\"category\", \"active in\"], sort=False)\n", + " .agg(\n", + " reactions=(\"reaction\", \"size\"),\n", + " examples=(\"reaction\", lambda values: \", \".join(values.iloc[:6])),\n", + " )\n", + " .reset_index()\n", ")\n", + "usage_patterns" + ] + }, + { + "cell_type": "markdown", + "id": "biological-interpretation", + "metadata": {}, + "source": [ + "### Biological interpretation\n", + "\n", + "The selected groups recover recognizable metabolic adaptations rather than isolated reactions:\n", + "\n", + "| Usage pattern | Representative selected reactions | Interpretation |\n", + "|---|---|---|\n", + "| Glucose anaerobic only | `ACALD`, `ALCD2x`, `ETOHt2r`, `EX_etoh_e` | A complete ethanol-fermentation route, from acetyl-CoA reduction to ethanol secretion, that supports redox balancing without respiration. |\n", + "| Acetate aerobic only | `ICL`, `MALS`, `FBP`, `PPCK`, `NADTRHD` | The glyoxylate shunt and gluconeogenesis conserve acetate carbon and produce biomass precursors; transhydrogenase contributes cofactor balancing. |\n", + "| Both aerobic conditions | `CYTBD`, `NADH16`, `EX_o2_e`, `AKGDH` | Oxygen uptake together with respiratory-chain and TCA-cycle activity shared by aerobic growth. |\n", "\n", - "# Expected in this setup: coupled sparse FBA uses fewer reactions in the union across conditions.\n", - "assert len(multi_union) < len(single_union)\n", + "These are interpretations of one sparse model solution, not evidence that the reactions are biologically exclusive to those conditions.\n", "\n", - "summary" + "> **Activity does not imply the same flux direction.** The categories above use `abs(flux) > activity_tolerance`. A reaction shared by two conditions may run in opposite directions or serve different roles. For example, the acetate transport and exchange reactions shared by acetate-aerobic and glucose-anaerobic solutions support acetate uptake in one context and acetate production or secretion in the other. Here, **shared** means that the same reaction is active—not that its direction, flux magnitude, or physiological role is identical." + ] + }, + { + "cell_type": "markdown", + "id": "network-visualization", + "metadata": {}, + "source": [ + "### Visualize the joint metabolic program\n", + "\n", + "The plot shows the complete reaction union. Shared-core reactions are gray and de-emphasized; colored reactions show how the core is adapted to carbon source and oxygen availability.\n", + "\n", + "| Active conditions | Color |\n", + "|---|---|\n", + "| All conditions | Gray |\n", + "| Both aerobic conditions | Blue |\n", + "| Both glucose conditions | Green |\n", + "| Acetate aerobic and glucose anaerobic | Purple |\n", + "| Acetate aerobic only | Orange |\n", + "| Glucose anaerobic only | Red |" ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_15", + "id": "plot-joint-network", "metadata": {}, "outputs": [], "source": [ - "pd.DataFrame(\n", - " {\n", - " \"single_sparse_union\": pd.Series(sorted(single_union)),\n", - " \"multi_sparse_union\": pd.Series(sorted(multi_union)),\n", + "reaction_groups = reaction_usage.set_index(\"reaction\")[\"active in\"].replace(\n", + " {\", \".join(condition_names): \"shared core\"}\n", + ")\n", + "\n", + "group_colors = {\n", + " \"shared core\": \"#b0b0b0\",\n", + " \"glucose aerobic, acetate aerobic\": \"#277da1\",\n", + " \"glucose aerobic, glucose anaerobic\": \"#43aa8b\",\n", + " \"acetate aerobic, glucose anaerobic\": \"#7b2cbf\",\n", + " \"acetate aerobic\": \"#f8961e\",\n", + " \"glucose anaerobic\": \"#e63946\",\n", + "}\n", + "\n", + "selected_reactions = np.flatnonzero(joint_union.to_numpy())\n", + "joint_network = G.edge_subgraph(selected_reactions)\n", + "edge_style = {}\n", + "\n", + "for displayed_index, original_index in enumerate(selected_reactions):\n", + " reaction_id = reaction_ids[original_index]\n", + " group = reaction_groups[reaction_id]\n", + " is_shared_core = group == \"shared core\"\n", + "\n", + " edge_style[displayed_index] = {\n", + " \"color\": group_colors[group],\n", + " \"penwidth\": \"1.5\" if is_shared_core else \"3\",\n", " }\n", + "\n", + "joint_network.plot(\n", + " graph_attr={\"rankdir\": \"LR\"},\n", + " node_attr={\n", + " \"fixedsize\": \"false\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded\",\n", + " \"margin\": \"0.05,0.03\",\n", + " },\n", + " custom_edge_attr=edge_style,\n", ")" ] }, { - "cell_type": "code", - "execution_count": null, - "id": "mc_sfba_16", + "cell_type": "markdown", + "id": "compare-unions", "metadata": {}, - "outputs": [], "source": [ - "active_multi_c1 = np.abs(P_multi_sparse.expr.flow.value[:, 0]) > 1e-6\n", - "active_multi_c2 = np.abs(P_multi_sparse.expr.flow.value[:, 1]) > 1e-6\n", + "### Compare the selected unions\n", "\n", - "G.edge_subgraph(active_multi_c1).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "The aggregate from the separate analyses includes every reaction selected in either two-condition optimization, including both alternative glucose-aerobic reaction sets. The joint analysis instead selects one reaction union while considering all three conditions simultaneously." ] }, { "cell_type": "code", "execution_count": null, - "id": "mc_sfba_17", + "id": "union-comparison", "metadata": {}, "outputs": [], "source": [ - "G.edge_subgraph(active_multi_c2).plot(graph_attr={\"rankdir\": \"LR\", \"center\": \"1\"})" + "pairwise_activity = pd.concat(\n", + " [\n", + " control_acetate_fluxes.abs() > activity_tolerance,\n", + " control_anaerobic_fluxes.abs() > activity_tolerance,\n", + " ],\n", + " axis=1,\n", + ")\n", + "pairwise_union = pairwise_activity.any(axis=1)\n", + "\n", + "union_comparison = pd.Series(\n", + " {\n", + " \"aggregate union from separate comparisons\": int(pairwise_union.sum()),\n", + " \"union from one joint analysis\": int(joint_union.sum()),\n", + " },\n", + " name=\"active reactions\",\n", + ")\n", + "\n", + "assert joint_union.sum() < pairwise_union.sum()\n", + "union_comparison.to_frame()" ] }, { "cell_type": "markdown", - "id": "mc_sfba_18", + "id": "interpretation-limitations", "metadata": {}, "source": [ - "In this toy example, independent sparse runs choose different branches, while the coupled multi-condition sparse run aligns branch usage and reduces the union of active reactions across conditions." + "## Interpretation and limitations\n", + "\n", + "The joint result provides one internally consistent reference across all three conditions. Reactions in the shared core support every selected state; partially shared and context-specific reactions describe how that core is adapted to carbon source and oxygen availability. Because a reused reaction contributes once to the union penalty, alternative pathways are selected consistently instead of independently in each comparison.\n", + "\n", + "These conditions are designed to illustrate joint reaction selection. The resulting shared and context-specific sets are properties of this model and formulation, not experimental evidence of pathway activity. Structured sparsity assumes that reusing reactions is preferable when several feasible explanations exist, and alternative joint optima may still exist.\n", + "\n", + "Continue with [gene expression integration](imat.ipynb) to learn how expression evidence selects a feasible metabolic state for one condition. The following [Multi-condition iMAT](multicondition-imat.ipynb) guide will extend that formulation across several contexts." ] } ], @@ -337,19 +574,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false } }, "nbformat": 4, diff --git a/docs/guide/method-inputs.md b/docs/guide/method-inputs.md index 77ba2e618..673b651eb 100644 --- a/docs/guide/method-inputs.md +++ b/docs/guide/method-inputs.md @@ -1,114 +1,8 @@ -# Building method problems from explicit inputs +--- +orphan: true +--- -CORNETO methods accept ordinary Python mappings and collections for their -common scientific inputs. You do not need to construct `Data`, `Sample`, or -`Feature` objects for standard workflows. +# Building method problems from data -## One condition - -Use `build` with a positional network and keyword-only scientific inputs: - -```python -from corneto.methods import CarnivalILP - -problem = CarnivalILP().build( - pkn, - perturbations={"EGFR": 1}, - transcription_factors={"JUN": 1, "FOXO3": -1}, -) -``` - -Metabolic and network methods expose inputs using their domain terminology: - -```python -from corneto.methods import MultiSampleFBA, SteinerTreeFlow - -fba_problem = MultiSampleFBA().build( - model, - objectives={"BIOMASS": -1}, - reaction_bounds={"EX_glc": (-10, 0)}, -) - -tree_problem = SteinerTreeFlow().build( - graph, - terminals=["EGFR", "JUN"], - edge_costs={0: 1.5, 4: 0.8}, -) -``` - -PHONEMeS uses perturbation targets and signed phosphosite scores. Because the -method minimizes its objective, negative scores favor including a site and -positive scores discourage it; zero-valued keys still identify measured sites: - -```python -from corneto.methods import PHONEMeS - -phonemes_problem = PHONEMeS().build( - pkn, - perturbations=["EGFR"], - phosphosite_scores={"ERK1_S123": -2.4, "AKT1_S473": 0.0}, -) -``` - -See the [PHONEMeS guide](signaling/phonemes.ipynb) for score interpretation, edge -costs, computing scores from differential results, optional pandas inputs, and -extracting the inferred subnetwork. - -When the starting points are activity-derived regulated kinases rather than -known experimental perturbations, use `BidirectionalPHONEMeS`. It optimizes -upstream and downstream explanations together: - -```python -from corneto.methods import BidirectionalPHONEMeS - -bidirectional_problem = BidirectionalPHONEMeS().build( - pkn, - regulated_kinases=["AKT1", "MTOR"], - phosphosite_scores={"AKT1_S473": -2.4, "RPS6_S235": -3.1}, -) -``` - -See the -[global bidirectional PHONEMeS guide](signaling/bidirectional-phonemes.ipynb) for -anchor policies, directional results, and the distinction from the original -post-hoc upside-down union. - -## Multiple named conditions - -Use `build_many` and add one outer mapping keyed by condition name: - -```python -problem = CarnivalILP().build_many( - pkn, - perturbations={ - "control": {"EGFR": 1}, - "treated": {"EGFR": -1}, - }, - transcription_factors={ - "control": {"JUN": 1}, - "treated": {"JUN": -1}, - }, -) -``` - -All per-condition arguments must contain the same condition names. CORNETO -validates condition names, graph identifiers, numeric values, bounds, and edge -indices before constructing the optimization problem. - -PHONEMeS also uses named mappings for `perturbations` and -`phosphosite_scores`. It infers one subnetwork per condition but charges edge -costs over their combined network: an interaction used by one or several -conditions is charged once. For this reason, `edge_costs` is one global mapping -rather than a mapping per condition. - -## Advanced data interface - -Use `build_from_data(graph, data)` when custom feature metadata or arbitrary -measurement roles require the general `Data` representation: - -```python -problem = CarnivalILP().build_from_data(pkn, data) -``` - -Passing `Data` as the second positional argument to `build` remains temporarily -supported with a deprecation warning. +This documentation has moved to {ref}`guide-data-methods` in the +{ref}`guide-working-with-data` guide. diff --git a/docs/guide/signaling/cellnopt_ILP.ipynb b/docs/guide/signaling/cellnopt_ILP.ipynb deleted file mode 100644 index 84eb8b2c1..000000000 --- a/docs/guide/signaling/cellnopt_ILP.ipynb +++ /dev/null @@ -1,2280 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Acyclic boolean models of cell signaling (experimental)\n", - "\n", - "This guide shows the basics of modeling intracellular signaling using acyclic boolean models for multi-perturbation experiments. For this, we will use an extension of the CellNopt ILP method implemented with CORNETO.\n", - "\n", - "- Author: Attila Gabor (Heidelberg University, SaezLab)\n", - "- Reviewers: Pablo Rodriguez Mier (Heidelberg University, SaezLab)\n", - "\n", - "> NOTE: This notebook is still experimental." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [], - "text/plain": [] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - "
Installed version:v1.0.0.dev3 (latest stable: v1.0.0-alpha)
Available backends:CVXPY v1.6.0, PICOS v2.5.1
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, CVXOPT, GLPK, GLPK_MI, GUROBI, HIGHS, SCIP, SCIPY
Graphviz version:v0.20.3
Installed path:/Users/pablorodriguezmier/Documents/work/projects/corneto/corneto
Repository:https://github.com/saezlab/corneto
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import corneto as cn\n", - "import corneto.methods.signaling.cellnopt_ilp as cno\n", - "\n", - "cn.info()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Introduction to a Boolean model\n", - "\n", - "As a first step we define start with a small network and corresponding datasets just to illustrate the concepts. \n", - "The prior knowledge network of 'G1' contains three nodes, EGF, TNFa and Ras. Edges show the potential activation of the RAS protein. " - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Definition of the prior knowledge network\n", - "G1 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", 1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", 1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", - "G1.plot()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now, we organize some in-silico experimental data into a format that can be used by the CNO toolbox.\n", - "\n", - "First, we define 4 conditions (exp0 ... exp3). In each condition, the activated nodes (EGF or TNFa) are set to 1 and the non-activated nodes to 0.\n", - "We also define the values of the corresponding outputs (Ras).\n", - "\n", - "Note that the output, Ras is only active (1.0) in the 4th condition, when both of the inputs are also activated. This corresponds to an AND relationship: RAS is active only if both EGF and TNFa are activated.\n", - "We expect that the optimization finds the correct subgraph of the above network, which contains only the 3 nodes with the AND gates, while individual edges from EGF and TNFa to RAS are removed. " - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "# RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate\n", - "exp_list_G1_and = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G1_prep = cno.expand_graph_for_flows(G1, exp_list_G1_and)\n", - "G1_prep.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ffv2Ure57LLLNH/+fLVr1075+fmaPn26rr76an333Xdq1qyZXC6XZx+n7vPkZ6dKT0/X+PHjK+CIAAAAUB4+31N68ODBM3727bffnlMxZREfH6/k5GTFxMSoa9euWrp0qS6++GK9/PLL5d5namqq8vPzPUtOTk4FVgwAAICz8TmUtm3bVsuXLz+tffr06ercubNP+woJCZG/v79yc3O92nNzc894z+ip6tatq6uuuko//PCDJHm282WfdrtdQUFBXgsAAACqjs+h1OFw6Pbbb1dKSop+//137d27V927d9e0adP05ptv+rSvgIAAxcbGyul0etpKSkrkdDo9E/OfTXFxsb799luFh4dLkqKjoxUWFua1T7fbrfXr15d5nwAAAKhaPt9TOmrUKP3P//yP7r33XrVr106//PKL4uLitGXLljKf3fwjh8OhAQMGqGPHjurcubNmzpypgoICz9P4ycnJatq0qdLT0yVJEyZMUJcuXdSyZUvl5eXpmWee0c8//6zBgwdLMh+wGjFihCZNmqRWrVopOjpaY8eOVUREhJKSknyuDwAAAJWvXFNCtWzZUm3atNG7774rSerTp0+5AunJbQ8ePKi0tDS5XC7FxMQoMzPT86BSdna2/Pz+e0L3119/1ZAhQ+RyudSoUSPFxsbqiy++UOvWrT19Ro0apYKCAg0dOlR5eXm69tprlZmZedok+wAAAKgebIZhGL5ssHbtWvXv31+NGzfW66+/rrVr18rhcKhXr17KyMhQo0aNKqvWKuN2uxUcHKz8/HzuLwVQqawYb8r7nWWY6Q/nCd9+8wPl58t44/M9pTfccIP69OmjdevW6YorrtDgwYP19ddfKzs7W23bti130QAAAKi9fL58v2LFCnXt2tWrrUWLFlq7dq2efvrpCisMAAAAtYfPZ0pPDaSeHfn5aezYsedcEAAAAGqfMofSG2+8Ufn5+Z71KVOmKC8vz7N++PBhr4eNAAAAgLIqcyj9+OOPvd4PP3nyZP3yyy+e9RMnTmjHjh0VWx0AAABqhTKH0lMf0vfxoX0AAADgjHy+pxQAAACoaGUOpTabTbZTJqk7dR0AAAAojzJPCWUYhgYOHCi73S5JOnbsmO6//341aNBAkrzuNwUAAAB8UeZQOmDAAK/1/v37n9YnOTn53CsCAABArVPmUPraa69VZh0AAACoxXjQCQAA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aSspKZHT6VR8fPyfbvvOO++osLBQ/fv3P+v37NmzR4cPH1Z4ePg51wwAAICKZ/nT9w6HQ3PnztXChQv1/fffKyUlRQUFBRo0aJAkKTk5WampqadtN2/ePCUlJemiiy7yaj969Kgee+wxrVu3Tj/99JOcTqduvfVWtWzZUomJiVVyTAAAAPCN5feU9unTRwcPHlRaWppcLpdiYmKUmZnpefgpOztbfn7e2XnHjh36/PPPtWLFitP25+/vry1btmjhwoXKy8tTRESEevTooYkTJzJXKQAAQDVlMwzDsLqI6sbtdis4OFj5+fncXwqgUlkx3jDGoarZbFZXgIria2r0Zbwp8+X748ePa9SoUWrZsqU6d+582uT2ubm58vf3961SAAAAQD6E0qefflqLFi3S/fffrx49esjhcOjvf/+7Vx9OugIAAKA8ynxP6RtvvKFXX31VN910kyRp4MCB6tWrlwYNGuQ5a2rj/DwAAADKocxnSvfu3as2bdp41lu2bKnVq1friy++0L333nvGtyUBAAAAZ1PmUBoWFqZdu3Z5tTVt2lSrVq3Sl19+qYEDB1Z0bQAAAKglyhxKb7jhBr355puntUdEROiTTz7R7t27K7QwAAAA1B5lvqd07Nix2r59e6mfNW3aVGvWrNHKlSsrrDAAAADUHmUOpZdccokuueSSM34eERGhAQMGVEhRAAAAqF0sf80oAAAAQCgFAACA5QilAAAAsByhFAAAAJYjlAIAAMByFRZKBwwYoBtuuKGidgcAAIBapMxTQp1N06ZN5efHiVcAAAD4rsJC6eTJkytqVwAAAKhlzunUpmEYMgyjomoBAABALVWuUDpv3jy1adNGgYGBCgwMVJs2bfTqq69WdG0AAACoJXy+fJ+WlqYZM2Zo+PDhio+PlyRlZWVp5MiRys7O1oQJEyq8SAAAANRsPofSOXPmaO7cuerXr5+n7ZZbblG7du00fPhwQikAAAB85vPl++PHj6tjx46ntcfGxurEiRMVUhQAAABqF59D6b333qs5c+ac1v7KK6/onnvuKVcRs2fPVlRUlAIDAxUXF6cNGzacse+CBQtks9m8lsDAQK8+hmEoLS1N4eHhqlevnhISErRz585y1QYAAIDKV64poebNm6cVK1aoS5cukqT169crOztbycnJcjgcnn4zZsw4676WLFkih8OhjIwMxcXF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nj3m0/PPP2+GUYfDfLoeAACUi8+hdNSoUcrKytJnn32mdu3aqV27drLb7dqyZYv+9re/+bSvgIAAxcbGyul0etpKSkrkdDo9b4s6m+LiYn377bcKDw+XJEVHRyssLMxrn263W+vXry/zPgGPo0elZ56RoqPN4Ll/v/SXv0gvvWResn/oIXPeUQAAcE7KNSVUy5Yt1aZNG7377ruSpD59+pT7LKTD4dCAAQPUsWNHde7cWTNnzlRBQYEGDRokSUpOTlbTpk2Vnp4uSZowYYK6dOmili1bKi8vT88884x+/vlnDR48WJL51P+IESM0adIktWrVyjMlVEREhJKSkspVI2oht9u8TD9jhnT4sNkWHS2NGSMlJ0sBAdbWBwBADeNzKF27dq369++vxo0ba8uWLVq7dq2GDx+uDz/8UBkZGWrUqJFP++vTp48OHjyotLQ0uVwuxcTEKDMz0/OgUnZ2tvz8/ntC99dff9WQIUPkcrnUqFEjxcbG6osvvlDr1q09fUaNGqWCggINHTpUeXl5uvbaa5WZmckcpTi7vDzphRfMS/Unpx1r1cp8cOnuu8331AMAgArn8zyldrtdI0eO1MSJE1X3/35B79q1S/3791dOTo7nKfjzmRXzBsJihw9LM2eagdTtNtsuv1x68kmpTx+pTrkuKgBnxTylsALzlKK8qtU8pStWrFDXrl292lq0aKG1a9fq6aef9nV3gLUOHjSfnJ8927x/VJLatJHGjpVuv13y97e2PgAAagmfQ+mpgfQkPz8/jR079pwLAqqEyyVNny7NmWM+WS9JMTFSWpp0662Sn8/PAAIAgHNQ5t+8N954o/Lz8z3rU6ZM8XrV5+HDh73u6wSqpb17pYcfNh9aevZZM5B26iT961/Spk3S3/5GIAUAwAJl/u378ccfe70ffvLkyfrll1886ydOnNCOHTsqtjqgomRnSw88YM4z+sIL5iT48fHSRx9J69dLN9/MTU8AAFiozJfvT30eysfnowBr/PijlJ4uLVxovqdekv76V/My/Q03EEQBAKgmeKQYNdPOndLkydI//iEVF5tt3bubDzCd4b5oAABgnTKHUpvNJtspZ5VOXQcs9/330tNPS2+9JZWUmG09e5ph9Oqrra0NAACckU+X7wcOHCi73S5JOnbsmO6//341+L/3ff/xflOgyn37rTRpkvTOO/+dRO2m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eo6WLFkih8OhcePGadOmTWrfvr0SExN14MABq0vz2Zo1a/Tggw9q3bp1WrlypY4fP64ePXqooKDA6tLO2ZdffqmXX35Z7dq1s7qUcvv11191zTXXqG7duvroo4+0bds2Pfvss2rUqJHVpfls6tSpmjNnjmbNmqXvv/9eU6dO1bRp0/Tiiy9aXVqZFBQUqH379po9e3apn0+bNk0vvPCCMjIytH79ejVo0ECJiYk6duxYFVeKc3Xw4EGVlJTIZrNZXQpQ8xk4J507dzYefPBBz3pxcbERERFhpKenW1hVxThw4IAhyVizZo3VpZyTI0eOGK1atTJWrlxpdO3a1Xj44YetLqlcHn/8cePaa6+1uowK0bt3b+N///d/vdpuu+0245577rGoovKTZLz33nue9ZKSEiMsLMx45plnPG15eXmG3W433nrrLQsqRHl9/fXXxhVXXGF8+umnVpcC1AqcKT0HRUVF2rhxoxISEjxtfn5+SkhIUFZWloWVVYz8/HxJUuPGjS2u5Nw8+OCD6t27t9e/p/PRv/71L3Xs2FF33nmnmjRpoquuukpz5861uqxyufrqq+V0OvWf//xHkvTNN9/o888/V69evSyu7Nzt3r1bLpfL6+ctODhYcXFxNWJcqC2++eYbdenSRbfccouuu+46q8vBecr4v9s+vv32Wy1ZskT//ve/tXv3bourqr6qxWtGz1eHDh1ScXGxQkNDvdpDQ0O1fft2i6qqGCUlJRoxYoSuueYatWnTxupyym3x4sXatGmTvvzyS6tLOWc//vij5syZI4fDoTFjxujLL7/UQw89pICAAA0YMMDq8nwyevRoud1uXX755fL391dxcbGefvpp3XPPPVaXds5cLpcklTounPwM1duWLVt0zTXX6NFHH9WkSZM87ceOHVNgYKCFleF8UlxcLH9/fy1dulQjRoxQcHCwGjRooMLCQr366quKjY21usRqhzOlKNWDDz6orVu3avHixVaXUm45OTl6+OGH9cYbb9SIXyQlJSXq0KGDJk+erKuuukpDhw7VkCFDlJGRYXVpPnv77bf1xhtv6M0339SmTZu0cOFCTZ8+XQsXLrS6NNRy+/fvV0xMjO666y6vQDp+/Hg99dRTOnHihIXV4XzgdrslSf7+/lq1apWGDBmiMWPG6Ntvv9XYsWO1detW3XjjjVq7dq3FlVY/hNJzEBISIn9/f+Xm5nq15+bmKiwszKKqzt2wYcP0wQcfaNWqVWrWrJnV5ZTbxo0bdeDAAXXo0EF16tRRnTp1tGbNGr3wwguqU6eOiouLrS7RJ+Hh4WrdurVX2xVXXKHs7GyLKiq/xx57TKNHj1bfvn3Vtm1b3XvvvRo5cqTS09OtLu2cnfxvv6aNC7VF/fr1dfXVVysrK0tbt26VZD649uyzz+qvf/2r6tThAiPObNOmTWrcuLG2bdum3377Te+++64eeOAB3X///dq3b58eeOAB3X777erSpYuSkpK0ceNGq0uuVgil5yAgIECxsbFyOp2etpKSEjmdTsXHx1tYWfkYhqFhw4bpvffe0yeffKLo6GirSzon3bt317fffqvNmzd7lo4dO+qee+7R5s2b5e/vb3WJPrnmmmtOm6LrP//5jy655BKLKiq/3377TX5+3sOPv7+/SkpKLKqo4kRHRyssLMxrXHC73Vq/fv15OS7UNsHBwfroo48UHh6u22+/XSNGjNAzzzyjpUuX6sYbb7S6PFRj33zzjbp166YRI0aodevWql+/vu6991716NFDeXl5uuWWW9SzZ08tXrxYgwYN0uHDh9W5c2fuNf8jq5+0Ot8tXrzYsNvtxoIFC4xt27YZQ4cONS688ELD5XJZXZrPUlJSjODgYGP16tXG/v37Pctvv/1mdWkV5nx++n7Dhg1GnTp1jKefftrYuXOn8cYbbxj169c3Xn/9datL89mAAQOMpk2bGh988IGxe/duY+nSpUZISIgxatQoq0srkyNHjhhff/218fXXXxuSjBkzZhhff/218fPPPxuGYRhTpkwxLrzwQuP99983tmzZYtx6661GdHS08fvvv1tcOUpz8OBBY926dcamTZs8bUeOHDFuvPFGw2azGRkZGRZWh/PBli1bjHr16hljx471aj/5+3PFihVGfHy8sXv3bsMwDGPdunVG7969jYceesjYvn17VZdbbRFKK8CLL75o/OUvfzECAgKMzp07G+vWrbO6pHKRVOry2muvWV1ahTmfQ6lhGMa///1vo02bNobdbjcuv/xy45VXXrG6pHJxu93Gww8/bPzlL38xAgMDjebNmxtPPPGEUVhYaHVpZbJq1apS/1sZMGCAYRjmtFBjx441QkNDDbvdbnTv3t3YsWOHtUWjVNu2bTO6du1q3HTTTUZycrLXZ/n5+cb//M//GM2bNze++eYbiypEdZednW1cfPHFxq233urVPmPGDGPkyJFGcXGxsXjxYsPPz8/47rvvDMMwjDFjxhj9+vUzjhw5YkHF1ZfNMHhNBQCg9vn22291/fXX64EHHtCQIUP0l7/8RZK0efNmhYWFKSwsTEePHtXNN9+sn376Sf/617/Utm1bi6tGdbNlyxYlJyerefPmGjx4sG688UY988wzeuqpp/Tvf/9bN9xwg7Kzs/XAAw9o7dq1at++vb766itlZWXx83QKQikAoNbZt2+fevTooR49emjGjBme9qlTpyo1NVWjR4/WI488oosuukhHjx5VUlKSvvzyS2VlZZ32wCFqJ7fbrYCAAAUGBmrDhg0aNWqULrroIl1wwQX68MMPtWTJEt1www2e/l9//bU++eQT/fLLL0pOTtZll11mYfXVE48RAgBqnY0bNyowMFB///vfVVJSIj8/P02fPl0TJ07Uww8/rGnTpslms8nhcOiiiy7Se++9p3vuuUcBAQFWl45qYP/+/UpOTtatt96q++67T507d9bUqVP1+OOPKzMzU6NHj/YE0hMnTqhOnTq66qqrdNVVV8kwDF5bewaEUgBArbNmzRr98ssvnrNVJ06cUFhYmJYtW6aEhAR17txZ99xzj4qKijR+/Hg1bNhQ77//PmECksw3Hfr7++vNN99UYGCg7rnnHsXFxem5556Tw+HQl19+qeXLl6t3796qU6eO53988Of4JwQAqBV27tzpmaqrYcOG8vPz08GDB1VcXKw6deronnvuUUJCggzDUL9+/XTfffdp3bp1nunjCKSQpOPHj8tut+v9999Xs2bN9Morr+iNN97Q77//rquuukpTp07VkSNH9NJLL+mjjz6SJK9Ays/RmRFKAQA13ubNm9WhQwfPXL/x8fH68ccftWzZslLnLD5+/Lj8/f0VFxfHGS5Iko4cOSJJqlu3riTJbrdr0aJF+stf/qKXX37ZE0xPXsovKirS5MmTtWLFCivLPq/wXxoAoEb75ptvdM0112jYsGF64IEHJEnXX3+9Bg4cqL///e966623JP33DFZJSYnGjRunf/3rXxo6dKgnhKD2+v7779WsWTP17dtXY8aM0Y8//qh9+/YpMDBQb7zxhi6//HK99NJLev311/Xbb7+pc+fOeuqpp3ThhRfqiiuusLr88wZP3wMAaqwtW7YoPj5eI0aM0NNPP+1pX7VqlVwul5YsWaJ///vfuv/++3XNNdfol19+0bp16/Thhx/K6XTqqquusrB6VAcnTpzQokWLNHjwYIWFhSk6Olo//vijQkJC1LNnT/Xs2VOdOnXSwIED9fvvv+uOO+7Q3XffrXr16unYsWMKDAy0+hDOGzzoBACokXJyctS9e3fddNNNXoF0woQJeu211+R0OhUbG6sOHTro+eef1xtvvKHw8HDFxMTo888/Z+on6LvvvtPSpUs1YsQIHThwQE888YRefPFFhYSEaNu2bVq0aJEWL16ssLAwhYaGas2aNdqxY4fn4Se73W71IZxXuHwPAKiRiouLFR0drWPHjmnt2rWSpClTpujFF1/U7Nmz1bx5c1166aVKS0vTd999p82bN2vt2rVasGABgRT65ptv1LZtW9WpU0cNGzbU6NGj5XA4dO+992rfvn1KSUnRqlWr9M033+iuu+7SlVdeqYCAAP3222/q0qWLJB5q8hWX7wEANdbOnTv10EMPKSAgQKGhoVq2bJlef/119ejRw2u+yG3bthFE4bFt2zZ17NhRo0aN0lNPPeX12eOPP67nnntO8+fPV//+/b0++/HHH9WwYUNdfPHFVVhtzUEoBQDUaP/5z380bNgwff7555o4caIeeeQRnfzVZ7PZNHbsWC1YsEDffvutgoODObtVy23dulXdunXTxRdfrG3btkkyZ2P44wNvo0eP1owZM7Rw4UL169fPqlJrHC7fAwBqtEsvvVRz5szRddddJ6fTqc8++0w2m002m01paWmaPn26li1bpgsvvJBAWst98803iouLU5s2bZSfn6+HH35YkjkNVHFxsafflClT5HA4NGTIEL322mtWlVvjcKYUAFArnLyUbxiG0tPTtXLlSo0bN06ff/65YmNjrS4PFvvqq6909dVX64knntCTTz6pefPm6YknntDdd9+t559/XpJ5n/If57UdNmyY3nnnHe3cuVNBQUFWlV5jEEoBALXGzp075XA4tGHDBv3666/KysoikEKS9Omnn+rdd9/1BND8/HwtWbLkrMH0wIEDatKkiSU11zSEUgBArbJjxw6NGjVKkydP1pVXXml1OaiGTj4E53a7tXjx4tOC6YkTJ1SnDrNqVjRCKQCg1jn1wRXgTP4YTO+9917NmDHD6pJqLGI+AKDWIZCirIKCgtS3b1/5+flp6NChstvtSk9Pt7qsGolQCgAA8CeCgoJ05513qm7duoqPj7e6nBqLy/cAAABl8McXLqDiMU8pAABAGRBIKxehFAAAAJYjlAIAAMByhFIAAABYjlAKAAAAyxFKAQAAYDlCKQAAACxHKAUAAIDlCKUAAACwHKEUAAAAliOUAgAAwHKEUgAAAFju/wPudo4GOjvDrAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_data(exp_list_G1_and)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter Username\n", - "Set parameter LicenseID to value 2593994\n", - "Academic license - for non-commercial use only - expires 2025-12-02\n" - ] - } - ], - "source": [ - "P = cno.cellnoptILP(G1_prep, exp_list_G1_and, verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIYCAYAAABUjJWZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmc0lEQVR4nO3df3zN9f//8fvZtDNkC3vbMZafpbxtVmNrSpR9TMk7n37ROw3fqChvOpWsdyaphuStIiQ/5lsi77fU+63Ed2+jNJbfFEvCVpxh7BwmG2ev7x/ezruTYWe2vWa7XS+X1yWv5+v5ep7HS6fnefT68XhZDMMwBAAAAJjIz+wAAAAAAJJSAAAAmI6kFAAAAKYjKQUAAIDpSEoBAABgOpJSAAAAmI6kFAAAAKYjKQUAAIDpSEoBAABgOpJSAAAAmI6kFLiAefPmyWKxeJZatWqpSZMmGjBggH755RezwwMAn/x+TgsMDNT111+vp59+Wrm5ueX2Oe+++67mzZtXbuOh5qhldgBAVffKK6+oRYsWOnXqlNatW6d58+bp66+/1o4dOxQYGGh2eADgk9/OaV9//bWmT5+uzz//XDt27FCdOnUue/x3331XISEhGjBgwOUHixqFpBS4hLvuuksdOnSQJA0aNEghISGaMGGCPvvsMz300EMmRwcAvvn9nNawYUNNnjxZn376qR5++OEyj3vy5MlySWpRc3H5HvBR586dJUl79uyRJBUVFSk5OVnR0dEKDg5W3bp11blzZ61ateq8fRcuXKjo6GjVq1dPQUFBioiI0FtvvVWp8QPAb915552SpL1790qSPvjgA0VHR6t27dpq0KCB+vbtq5ycHK99unbtqnbt2mnjxo26/fbbVadOHb344otq3ry5vvvuO61evdpzm0DXrl0r+5BwheJMKeCjffv2SZLq168vSXK5XHr//ff18MMPa/DgwTp+/Lhmz56thIQEZWZmKioqSpK0cuVKPfzww+rWrZsmTJggSdq5c6fWrl2r4cOHm3EoAOD5H+yGDRvqtdde0+jRo/XQQw9p0KBBOnz4sN555x3dfvvt2rx5s6655hrPfnl5ebrrrrvUt29f9evXT6GhoeratauGDRumq6++Wn/9618lSaGhoWYcFq5AJKXAJTidTh05ckSnTp3S+vXrNXbsWFmtVt1zzz2Szian+/btU0BAgGefwYMH64YbbtA777yj2bNnS5KWLVumoKAgffnll/L39zflWADgt3Pa2rVr9corr6h27drq0aOHWrVqpVdffVUvvviip/99992nm266Se+++65Xu8Ph0IwZM/TEE094jf/SSy8pJCRE/fr1q7RjQvVAUgpcQnx8vNd68+bN9cEHH6hp06aSJH9/f0+SWVxcrPz8fBUXF6tDhw7atGmTZ79rrrlGBQUFWrlypXr06FF5BwAAv/H7Oa1Zs2b68MMPtWTJEhUXF+uhhx7SkSNHPNttNpuuu+46rVq1yisptVqtGjhwYKXFjeqPpBS4hGnTpun666+X0+nUnDlztGbNGlmtVq8+qampevPNN7Vr1y6dPn3a096iRQvPn4cOHaqPP/5Yd911l5o0aaLu3bvroYceIkEFUKnOzWm1atVSaGio2rRpIz8/P3366acyDEPXXXddiftdddVVXutNmjTxukIEXC6SUuASYmJiPE+q9u7dW7fddpv+/Oc/KysrS1dffbU++OADDRgwQL1799bzzz+vRo0ayd/fXykpKZ57tSSpUaNG2rJli7788kt98cUX+uKLLzR37lwlJiYqNTXVrMMDUMP8dk77reLiYlksFn3xxRcl3mJ09dVXe63Xrl27wmJEzURSCvjgXLJ5xx13aOrUqRo1apT+/ve/q2XLllqyZIksFoun75gxY87bPyAgQL169VKvXr1UXFysoUOHaubMmRo9erRat25dmYcCAF5atWolwzDUokULXX/99WUe57fzIOALSkIBPuratatiYmI0ZcoUnTp1ynNGwTAMT5/169crIyPDa7+8vDyvdT8/P0VGRkqSCgsLKzhqALi4++67T/7+/ho7dqzXfCadnd9+P4ddSN26dZWfn39e++nTp7Vr1y4dPHiwPMJFNcSZUqAMnn/+eT344IOaN2+e7rnnHi1ZskT/+7//q549e2rv3r2aMWOG2rZtqxMnTnj2GTRokI4ePao777xTTZs21f79+/XOO+8oKipKN954o4lHAwDyPHmflJSkffv2qXfv3qpXr5727t2rTz75RI8//riee+65S44THR2t6dOn69VXX1Xr1q3VqFEj3Xnnnfrll1904403qn///ryGFCUiKQXK4L777lOrVq00adIkZWVlyeFwaObMmfryyy/Vtm1bffDBB1q8eLHS09M9+/Tr10/vvfee3n33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r7zyik/jLVq0SHa7XTNmzFBsbKymTJmihIQEZWVlqVGjRiXuExQUpKysLM+6xWLx2j5x4kS9/fbbSk1NVYsWLTR69GglJCTo+++/Py+BBQAAgPl8PlN6+vRpdejQ4bz26OhonTlzxucAJk+erMGDB2vgwIFq27atZsyYoTp16mjOnDkX3Mdischms3mW0NBQzzbDMDRlyhS99NJLuvfeexUZGan58+frwIEDWrp0qc/xAQAAoOL5nJQ++uijmj59+nnt7733nh555BGfxioqKtLGjRsVHx//34D8/BQfH6+MjIwL7nfixAk1a9ZM4eHhuvfee/Xdd995tu3du1cOh8NrzODgYMXGxl5wzMLCQrlcLq8FAAAAladMJaFmz56tFStW6JZbbpEkrV+/XtnZ2UpMTJTdbvf0mzx58kXHOXLkiNxut9eZTkkKDQ3Vrl27StynTZs2mjNnjiIjI+V0OjVp0iR16tRJ3333nZo2bSqHw+EZ4/djntv2eykpKRo7duzFDxoAAAAVxuekdMeOHbr55pslSXv27JEkhYSEKCQkRDt27PD0+/19nuUlLi5OcXFxnvVOnTrpxhtv1MyZMzVu3LgyjZmUlOSVTLtcLoWHh192rAAAACgdn5PSVatWlduHh4SEyN/fX7m5uV7tubm5stlspRrjqquu0k033aQff/xRkjz75ebmqnHjxl5jRkVFlTiG1WqV1WotwxEAAACgPPh8T+nhw4cvuG379u0+jRUQEKDo6GilpaV52oqLi5WWluZ1NvRi3G63tm/f7klAW7RoIZvN5jWmy+XS+vXrSz0mAAAAKpfPSWlERISWLVt2XvukSZMUExPjcwB2u12zZs1Samqqdu7cqSFDhqigoEADBw6UJCUmJiopKcnT/5VXXtGKFSv0008/adOmTerXr5/279+vQYMGSTp728CIESP06quv6rPPPtP27duVmJiosLAw9e7d2+f4AAAAUPF8vnxvt9t1//33a+DAgZo8ebKOHj2qxMREbd++XQsWLPA5gD59+ujw4cNKTk6Ww+FQVFSUli9f7nlQKTs7W35+/82djx07psGDB8vhcKh+/fqKjo7WN998o7Zt23r6jBw5UgUFBXr88ceVn5+v2267TcuXL6dGKQAAQBVlMcrw8vrNmzfr0UcfVWFhoY4eParY2FjNmTOn1PeBVnUul0vBwcFy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uRk/frwsFotGjBhhdihl9ssvv6hfv35q2LChateurYiICG3YsMHssHzmdrs1evRotWjRQrVr11arVq00btw4XSnFQNasWaNevXopLCxMFotFS5cu9dpuGIaSk5PVuHFj1a5dW/Hx8dq9e7c5waJcXCnfTeBKRlJ6mRYtWiS73a4xY8Zo06ZNat++vRISEnTo0CGzQ/PZ6tWr9dRTT2ndunVauXKlTp8+re7du6ugoMDs0C7bt99+q5kzZyoyMtLsUMrs2LFjuvXWW3XVVVfpiy++0Pfff68333xT9evXNzs0n02YMEHTp0/X1KlTtXPnTk2YMEETJ07UO++8Y3ZopVJQUKD27dtr2rRpJW6fOHGi3n77bc2YMUPr169X3bp1lZCQoFOnTlVypLhchw8fVnFxsSwWi9mhANWfgcsSExNjPPXUU551t9tthIWFGSkpKSZGVT4OHTpkSDJWr15tdiiX5fjx48Z1111nrFy50ujSpYsxfPhws0MqkxdeeMG47bbbzA6jXPTs2dP4P//n/3i13XfffcYjjzxiUkRlJ8n45JNPPOvFxcWGzWYz3njjDU9bfn6+YbVajY8++siECFFWmzdvNm688UZjzZo1ZocC1AicKb0MRUVF2rhxo+Lj4z1tfn5+io+PV0ZGhomRlQ+n0ylJatCggcmRXJ6nnnpKPXv29Pr3dCX67LPP1KFDBz344INq1KiRbrrpJs2aNcvssMqkU6dOSktL0w8//CBJ2rp1q77++mvdddddJkd2+fbu3SuHw+H1fQsODlZsbGy1mBdqiq1bt+qWW27Rn/70J3Xu3NnscHCFMv5z28f27du1aNEi/fOf/9TevXtNjqrqqmV2AFeyI0eOyO12KzQ01Ks9NDRUu3btMimq8lFcXKwRI0bo1ltvVbt27cwOp8wWLlyoTZs26dtvvzU7lMv2008/afr06bLb7XrxxRf17bff6i9/+YsCAgLUv39/s8PzyahRo+RyuXTDDTfI399fbrdbr732mh555BGzQ7tsDodDkkqcF85tQ9W2bds23XrrrXruuef06quvetpPnTqlwMBAEyPDlcTtdsvf319LlizRiBEjFBwcrLp166qwsFDvv/++oqOjzQ6xyuFMKUr01FNPaceOHVq4cKHZoZRZTk6Ohg8frg8//LBa/JAUFxfr5ptv1uuvv66bbrpJjz/+uAYPHqwZM2aYHZrPPv74Y3344YdasGCBNm3apNTUVE2aNEmpqalmh4Ya7uDBg4qKitJDDz3klZCOHTtWL7/8ss6cOWNidLgSuFwuSZK/v79WrVqlwYMH68UXX9T27ds1evRo7dixQ3fffbfWrl1rcqRVD0npZQgJCZG/v79yc3O92nNzc2Wz2UyK6vI9/fTT+te//qVVq1apadOmZodTZhs3btShQ4d08803q1atWqpVq5ZWr16tt99+W7Vq1ZLb7TY7RJ80btxYbdu29Wq78cYblZ2dbVJEZff8889r1KhR6tu3ryIiIvToo4/qmWeeUUpKitmhXbZz/+1Xt3mhpqhTp446deqkjIwM7dixQ9LZB9fefPNN3X777apViwuMuLBNmzapQYMG+v7773Xy5En94x//0NChQ/Xkk0/qwIEDGjp0qO6//37dcsst6t27tzZu3Gh2yFUKSellCAgIUHR0tNLS0jxtxcXFSktLU1xcnImRlY1hGHr66af1ySef6N///rdatGhhdkiXpVu3btq+fbu2bNniWTp06KBHHnlEW7Zskb+/v9kh+uTWW289r0TXDz/8oGbNmpkUUdmdPHlSfn7e04+/v7+Ki4tNiqj8tGjRQjabzWtecLlcWr9+/RU5L9Q0wcHB+uKLL9S4cWPdf//9GjFihN544w0tWbJEd999t9nhoQrbunWr7rjjDo0YMUJt27ZVnTp19Oijj6p79+7Kz8/Xn/70J/Xo0UMLFy7UwIEDlZeXp5iYGO41/y2zn7S60i1cuNCwWq3GvHnzjO+//954/PHHjWuuucZwOBxmh+azIUOGGMHBwUZ6erpx8OBBz3Ly5EmzQys3V/LT95mZmUatWrWM1157zdi9e7fx4YcfGnXq1DE++OADs0PzWf/+/Y0mTZoY//rXv4y9e/caS5YsMUJCQoyRI0eaHVqpHD9+3Ni8ebOxefNmQ5IxefJkY/Pmzcb+/fsNwzCM8ePHG9dcc43x6aefGtu2bTPuvfdeo0WLFsavv/5qcuQoyeHDh41169YZmzZt8rQdP37cuPvuuw2LxWLMmDHDxOhwJdi2bZtRu3ZtY/To0V7t534/V6xYYcTFxRl79+41DMMw1q1bZ/Ts2dP4y1/+Yuzatauyw62ySErLwTvvvGNce+21RkBAgBETE2OsW7fO7JDKRFKJy9y5c80OrdxcyUmpYRjGP//5T6Ndu3aG1Wo1brjhBuO9994zO6QycblcxvDhw41rr73WCAwMNFq2bGn89a9/NQoLC80OrVRWrVpV4n8r/fv3NwzjbFmo0aNHG6GhoYbVajW6detmZGVlmRs0SvT9998bXbp0Me655x4jMTHRa5vT6TT+53/+x2jZsqWxdetWkyJEVZednW384Q9/MO69916v9smTJxvPPPOM4Xa7jYULFxp+fn7Gd999ZxiGYbz44ovGww8/bBw/ftyEiKsui2HwmgoAQM2zfft2de3aVUOHDtXgwYN17bXXSpK2bNkim80mm82mEydOqFevXtq3b58+++wzRUREmBw1qppt27YpMTFRLVu21KBBg3T33XfrjTfe0Msvv6x//vOfuvPOO5Wdna2hQ4dq7dq1at++vTZs2KCMjAy+T79DUgoAqHEOHDig7t27q3v37po8ebKnfcKECUpKStKoUaP07LPPqmHDhjpx4oR69+6tb7/9VhkZGec9cIiayeVyKSAgQIGBgcrMzNTIkSPVsGFDXX311fr888+1aNEi3XnnnZ7+mzdv1r///W8dPXpUiYmJatOmjYnRV008RggAqHE2btyowMBAPfHEEyouLpafn58mTZqkcePGafjw4Zo4caIsFovsdrsaNmyoTz75RI888ogCAgLMDh1VwMGDB5WYmKh7771Xjz32mGJiYjRhwgS98MILWr58uUaNGuVJSM+cOaNatWrppptu0k033STDMHht7QWQlAIAapzVq1fr6NGjnrNVZ86ckc1m09KlSxUfH6+YmBg98sgjKioq0tixY1WvXj19+umnJBOQdPZNh/7+/lqwYIECAwP1yCOPKDY2Vn/7299kt9v17bffatmyZerZs6dq1arl+R8fXBx/QwCAGmH37t2eUl316tWTn5+fDh8+LLfbrVq1aumRRx5RfHy8DMPQww8/rMcee0zr1q3zlI8jIYUknT59WlarVZ9++qmaNm2q9957Tx9++KF+/fVX3XTTTZowYYKOHz+ud999V1988YUkeSWkfI8ujKQUAFDtbdmyRTfffLOn1m9cXJx++uknLV26tMSaxadPn5a/v79iY2M5wwVJ0vHjxyVJV111lSTJarVq/vz5uvbaazVz5kxPYnruUn5RUZFef/11rVixwsywryj8lwYAqNa2bt2qW2+9VU8//bSGDh0qSeratasGDBigJ554Qh999JGk/57BKi4u1pgxY/TZZ5/p8ccf9yQhqLl27typpk2bqm/fvnrxxRf1008/6cCBAwoMDNSHH36oG264Qe+++64++OADnTx5UjExMXr55Zd1zTXX6MYbbzQ7/CsGT98DAKqtbdu2KS4uTiNGjNBrr73maV+1apUcDocWLVqkf/7zn3ryySd166236ujRo1q3bp0+//xzpaWl6aabbjIxelQFZ86c0fz58zVo0CDZbDa1aNFCP/30k0JCQtSjRw/16NFDHTt21IABA/Trr7/qgQce0J///GfVrl1bp06dUmBgoNmHcMXgQScAQLWUk5Ojbt266Z577vFKSF955RXNnTtXaWlpio6O1s0336y33npLH374oRo3bqyoqCh9/fXXlH6CvvvuOy1ZskQjRozQoUOH9Ne//lXvvPOOQkJC9P3332v+/PlauHChbDabQkNDtXr1amVlZXkefrJarWYfwhWFy/cAgGrJ7XarRYsWOnXqlNauXStJGj9+vN555x1NmzZNLVu21PXXX6/k5GR999132rJli9auXat58+aRkEJbt25VRESEatWqpXr16mnUqFGy2+169NFHdeDAAQ0ZMkSrVq3S1q1b9dBDD+mPf/yjAgICdPLkSd1yyy2SeKjJV1y+BwBUW7t379Zf/vIXBQQEKDQ0VEuXLtUHH3yg7t27e9WL/P7770lE4fH999+rQ4cOGjlypF5++WWvbS+88IL+9re/ac6cOerXr5/Xtp9++kn16tXTH/7wh0qMtvogKQUAVGs//PCDnn76aX399dcaN26cnn32WZ376bNYLBo9erTmzZun7du3Kzg4mLNbNdyOHTt0xx136A9/+IO+//57SWerMfz2gbdRo0Zp8uTJSk1N1cMPP2xWqNUOl+8BANXa9ddfr+nTp6tz585KS0vTV199JYvFIovFouTkZE2aNElLly7VNddcQ0Jaw23dulWxsbFq166dnE6nhg8fLulsGSi32+3pN378eNntdg0ePFhz5841K9xqhzOlAIAa4dylfMMwlJKSopUrV2rMmDH6+uuvFR0dbXZ4MNmGDRvUqVMn/fWvf9VLL72k2bNn669//av+/Oc/66233pJ09j7l39a1ffrpp7V48WLt3r1bQUFBZoVebZCUAgBqjN27d8tutyszM1PHjh1TRkYGCSkkSWvWrNE//vEPTwLqdDq1aNGiSyamhw4dUqNGjUyJubohKQUA1ChZWVkaOXKkXn/9df3xj380OxxUQecegnO5XFq4cOF5iemZM2dUqxZVNcsbSSkAoMb5/YMrwIX8NjF99NFHNXnyZLNDqrZI8wEANQ4JKUorKChIffv2lZ+fnx5//HFZrValpKSYHVa1RFIKAABwEUFBQXrwwQd11VVXKS4uzuxwqi0u3wMAAJTCb1+4gPJHnVIAAIBSICGtWCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADT/X/X2et+aLQhZAAAAABJRU5ErkJggg==", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_fitness(G1, exp_list_G1_and, P, measured_only=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G1_prep.plot(custom_edge_attr=cno.cno_style(P, flow_name=\"edge_activates\", scale=None, iexp=3))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Tasks: \n", - "1. modify the experiments so that it corresponds to a scenario where only EGF could activate RAS, but not TNFa. \n", - "2. modify the experiments so that it corresponds to a scenario where both TNFa or EGF could activate RAS.\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inhibition: !EGF activates RAS\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's define the same network but now we will add an inhibition of EGF on RAS. This means that if EGF is active, RAS should be inactive.\n", - "Note the difference in the definition of the prior knowledge network.\n", - "\n", - "We also change the experiments so that the output RAS is active only when TNFa is active." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [], - "source": [ - "# Test graph\n", - "G2 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", -1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", -1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", - "\n", - "# RAS is only active iff both EGF and TNFa are active -> we need to idetify the AND gate\n", - "exp_list_G2_egf = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 1}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G2_prep = cno.expand_graph_for_flows(G2, exp_list_G2_egf)\n", - "G2_prep.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "P2 = cno.cellnoptILP(G2_prep, exp_list_G2_egf, verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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ERER2b5qN6UffPABVq9ejZdffhmDBg2CWq3GSy+9ZDaHnwQgIiIiopqo9o1O33zzDb766is89dRTAICxY8di8ODBiI6ONr1rKuGHRoiIiIioBqr9TunZs2fh7+9vety+fXukpKRgz549GD16dJVf4UlEREREdD/VbkoVCgVOnDhhNtayZUts27YNe/fuxdixY2u7NiIiIiKyE9VuSgcOHIg1a9ZUGPf29sbvv/+OvLy8Wi2MiIiIiOxHtT9TOnPmTBw5cqTS51q2bInt27dj69attVYYEREREdmPajelbdq0QZs2bap83tvbG2PGjKmVooiIiIjIvjA8n4iIiIhEx6aUiIiIiETHppSIiIiIRMemlIiIiIhEx6aUiIiIiERXa03pmDFjMHDgwNo6HBERERHZkWpHQt1Py5YtIZXyjVciIiIislytNaUffvhhbR2KiIiIiOzMA721KQgCBEGorVqIiIiIyE7VqCldvnw5/P394eTkBCcnJ/j7++Orr76q7dqIiIiIyE5Y3JTGx8dj0qRJGDp0KNavX4/169dj6NChmDJlCuLj42tURGJiInx9feHk5ASlUomMjIwq565atQoSicRsc3JyMpsjCALi4+Ph5eUFZ2dnqFQqHDt2rEa1EREREVHds/gzpUuWLMGyZcswcuRI09iwYcPQpUsXTJw4Ee+++65Fx1u3bh3UajWWLl0KpVKJTz/9FGFhYTh69ChatGhR6T5ubm44evSo6bFEIjF7ft68efj888+RlJQEPz8/zJw5E2FhYTh06FCFBpaIiIiIxGfxO6U3btxAjx49KowHBQXh5s2bFhewYMECjB8/HtHR0ejcuTOWLl0KFxcXrFixosp9JBIJFAqFafP09DQ9JwgCPv30U7z99tsYPnw4unTpgtWrV+PcuXPYtGmTxfURERERUd2zuCkdPXo0lixZUmH8yy+/xAsvvGDRscrLy5GZmQmVSnWnIKkUKpUKqampVe5XUlKCNm3awMfHB8OHD8fBgwdNz+Xl5UGr1Zod093dHUqlsspjlpWVQa/Xm21EREREZD01ioRavnw5tmzZgl69egEA0tPTkZ+fj6ioKKjVatO8BQsW3PM4Fy9ehMFgMHunEwA8PT1x5MiRSvfp2LEjVqxYgS5dukCn02H+/Pno3bs3Dh48iFatWkGr1ZqOcfcxbz93t4SEBMyePfve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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_fitness(G2_prep, exp_list_G2_egf, P2, measured_only=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G2_prep.plot(custom_edge_attr=cno.cno_style(P2, flow_name=\"edge_activates\", scale=None, iexp=0))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Inhibition with AND gates" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Please remember, inhibitions are added to the incoming edge of the AND node. The outgoing edges of the AND node are always activating by convention." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "# Test graph\n", - "G2 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", -1, \"AND1\"),\n", - " (\"TNFa\", 1, \"AND1\"),\n", - " (\"AND1\", 1, \"Ras\"),\n", - " (\"EGF\", -1, \"Ras\"),\n", - " (\"TNFa\", 1, \"Ras\"),\n", - " ]\n", - ")\n", - "\n", - "# RAS is only active iff both EGF and TNFa are active -> we need to idetify the AND gate\n", - "exp_list_G2_and = {\n", - " \"exp0\": {\"input\": {\"EGF\": 0, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp1\": {\"input\": {\"EGF\": 1, \"TNFa\": 0}, \"output\": {\"Ras\": 0}},\n", - " \"exp2\": {\"input\": {\"EGF\": 0, \"TNFa\": 1}, \"output\": {\"Ras\": 1}},\n", - " \"exp3\": {\"input\": {\"EGF\": 1, \"TNFa\": 1}, \"output\": {\"Ras\": 0}},\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G2_prep = cno.expand_graph_for_flows(G2, exp_list_G2_and)\n", - "G2_prep.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "AND1\n", - "\n", - "AND1\n", - "\n", - "\n", - "\n", - "EGF->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "AND1->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->AND1\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "Ras->e_5_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source\n", - "\n", - "\n", - "\n", - "\n", - "e_6_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source\n", - "\n", - "\n", - "\n", - "\n", - "e_7_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "P2 = cno.cellnoptILP(G2_prep, exp_list_G2_and, verbose=False)\n", - "G2_prep.plot(custom_edge_attr=cno.cno_style(P2, flow_name=\"edge_activates\", scale=None, iexp=2))" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqUAAAIYCAYAAABUjJWZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABmrUlEQVR4nO3de1xVZfr38S9gbNSEVEa2KClpmY4ghUJYphU/sczRXyd0MtQntawcdZcHmsTMCjVzrDxmmvh00Jwxa8YyfRjRNJQ8aypZauBh4xG2YoJu1vOH4552orIRWAif9+u1Xrnuda97X8t2975ah2t5GYZhCAAAADCRt9kBAAAAACSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKQAAAExHUgoAAADTkZQCAADAdCSlAAAAMB1JKXAZ8+bNk5eXl2upUaOGGjVqpL59++rgwYNmhwcAHvn9nObn56fbbrtNL7zwgnJycsrsc6ZPn6558+aV2XioPmqYHQBQ2b322msKDQ3V2bNntW7dOs2bN09r1qzRjh075OfnZ3Z4AOCR385pa9as0YwZM/TVV19px44dqlWr1jWPP336dAUGBqpv377XHiyqFZJS4CoefPBBtW3bVpLUv39/BQYGasKECfryyy/1xBNPmBwdAHjm93Na/fr1NXnyZH3xxRfq1atXqcc9c+ZMmSS1qL64fA94qEOHDpKkn3/+WZJUWFiopKQkRUZGKiAgQLVr11aHDh20cuXKS/ZdsGCBIiMjVadOHfn7+yssLEzvvPNOhcYPAL91//33S5L27dsnSfroo48UGRmpmjVrql69eurZs6eys7Pd9unUqZNat26tjRs36t5771WtWrX08ssvq2nTpvrhhx+0atUq120CnTp1quhDwnWKM6WAh/bv3y9Jqlu3riTJ4XDogw8+UK9evTRgwACdOnVKc+bMUVxcnDIyMhQRESFJWrFihXr16qUHHnhAEyZMkCTt2rVLa9eu1ZAhQ8w4FABw/Q92/fr19cYbb2j06NF64okn1L9/fx09elTvvfee7r33Xm3evFk33XSTa7/jx4/rwQcfVM+ePdW7d28FBQWpU6dOGjx4sG688Ub99a9/lSQFBQWZcVi4DpGUAleRl5enY8eO6ezZs1q/fr3Gjh0ri8Wihx9+WNKF5HT//v3y9fV17TNgwADdfvvteu+99zRnzhxJ0tKlS+Xv769vvvlGPj4+phwLAPx2Tlu7dq1ee+011axZU126dFGzZs30+uuv6+WXX3b1f+SRR3THHXdo+vTpbu12u10zZ87UM8884zb+K6+8osDAQPXu3bvCjglVA0kpcBWxsbFu602bNtVHH32kxo0bS5J8fHxcSWZRUZFyc3NVVFSktm3batOmTa79brrpJuXn52vFihXq0qVLxR0AAPzG7+e0Jk2a6OOPP9bixYtVVFSkJ554QseOHXNtt1qtuvXWW7Vy5Uq3pNRisahfv34VFjeqPpJS4CqmTZum2267TXl5eZo7d65Wr14ti8Xi1iclJUVvv/22du/erXPnzrnaQ0NDXX9+7rnn9Nlnn+nBBx9Uo0aN1LlzZz3xxBMkqAAq1MU5rUaNGgoKClKLFi3k7e2tL774QoZh6NZbby12vxtuuMFtvVGjRm5XiIBrRVIKXEVUVJTrSdUePXronnvu0Z///GdlZmbqxhtv1EcffaS+ffuqR48eGj58uBo0aCAfHx8lJye77tWSpAYNGmjLli365ptv9PXXX+vrr7/Whx9+qISEBKWkpJh1eACqmd/Oab9VVFQkLy8vff3118XeYnTjjTe6rdesWbPcYkT1RFIKeOBisnnfffdp6tSpGjVqlP7+97/rlltu0eLFi+Xl5eXqO2bMmEv29/X1Vbdu3dStWzcVFRXpueee06xZszR69Gg1b968Ig8FANw0a9ZMhmEoNDRUt912W6nH+e08CHiCklCAhzp16qSoqChNmTJFZ8+edZ1RMAzD1Wf9+vVKT0932+/48eNu697e3goPD5ckFRQUlHPUAHBljzzyiHx8fDR27Fi3+Uy6ML/9fg67nNq1ays3N/eS9nPnzmn37t06fPhwWYSLKogzpUApDB8+XI8//rjmzZunhx9+WIsXL9b//u//qmvXrtq3b59mzpypVq1a6fTp0659+vfvrxMnTuj+++9X48aN9csvv+i9995TRESEWrZsaeLRAIBcT94nJiZq//796tGjh+rUqaN9+/bp888/18CBA/XSSy9ddZzIyEjNmDFDr7/+upo3b64GDRro/vvv18GDB9WyZUv16dOH15CiWCSlQCk88sgjatasmSZNmqTMzEzZ7XbNmjVL33zzjVq1aqWPPvpIixYtUlpammuf3r176/3339f06dOVm5sr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klIAAACYjqQUAAAApiMpLQPTpk1T06ZN5efnp+joaGVkZJgdUqkkJyerXbt2qlOnjho0aKAePXooMzPT7LDKzPjx4+Xl5aWhQ4eaHUqpHTx4UL1791b9+vVVs2ZNhYWFacOGDWaH5TGn06nRo0crNDRUNWvWVLNmzTRu3DhdL8VAVq9erW7duik4OFheXl5asmSJ23bDMJSUlKSGDRuqZs2aio2N1Z49e8wJFmXievluAtczktJrtHDhQtlsNo0ZM0abNm1SmzZtFBcXpyNHjpgdmsdWrVql559/XuvWrdOKFSt07tw5de7cWfn5+WaHds2+//57zZo1S+Hh4WaHUmonT57U3XffrRtuuEFff/21du7cqbffflt169Y1OzSPTZgwQTNmzNDUqVO1a9cuTZgwQRMnTtR7771ndmglkp+frzZt2mjatGnFbp84caLeffddzZw5U+vXr1ft2rUVFxens2fPVnCkuFZHjx5VUVGRvLy8zA4FqPoMXJOoqCjj+eefd607nU4jODjYSE5ONjGqsnHkyBFDkrFq1SqzQ7kmp06dMm699VZjxYoVRseOHY0hQ4aYHVKpjBw50rjnnnvMDqNMdO3a1fg//+f/uLU98sgjxpNPPmlSRKUnyfj8889d60VFRYbVajXeeustV1tubq5hsViMTz/91IQIUVqbN282WrZsaaxevdrsUIBqgTOl16CwsFAbN25UbGysq83b21uxsbFKT083MbKykZeXJ0mqV6+eyZFcm+eff15du3Z1+/d0Pfryyy/Vtm1bPf7442rQoIHuuOMOzZ492+ywSqV9+/ZKTU3Vjz/+KEnaunWr1qxZowcffNDkyK7dvn37ZLfb3b5vAQEBio6OrhLzQnWxdetW3XXXXfrTn/6kDh06mB0OrlPGf2772L59uxYuXKh//vOf2rdvn8lRVV41zA7genbs2DE5nU4FBQW5tQcFBWn37t0mRVU2ioqKNHToUN19991q3bq12eGU2oIFC7Rp0yZ9//33Zodyzfbu3asZM2bIZrPp5Zdf1vfff6+//OUv8vX1VZ8+fcwOzyOjRo2Sw+HQ7bffLh8fHzmdTr3xxht68sknzQ7tmtntdkkqdl64uA2V27Zt23T33XfrpZde0uuvv+5qP3v2rPz8/EyMDNcTp9MpHx8fLV68WEOHDlVAQIBq166tgoICffDBB4qMjDQ7xEqHM6Uo1vPPP68dO3ZowYIFZodSatnZ2RoyZIg+/vjjKvFDUlRUpDvvvFNvvvmm7rjjDg0cOFADBgzQzJkzzQ7NY5999pk+/vhjffLJJ9q0aZNSUlI0adIkpaSkmB0aqrnDhw8rIiJCTzzxhFtCOnbsWL366qs6f/68idHheuBwOCRJPj4+WrlypQYMGKCXX35Z27dv1+jRo7Vjxw499NBDWrt2rcmRVj4kpdcgMDBQPj4+ysnJcWvPycmR1Wo1Kapr98ILL+hf//qXVq5cqcaNG5sdTqlt3LhRR44c0Z133qkaNWqoRo0aWrVqld59913VqFFDTqfT7BA90rBhQ7Vq1cqtrWXLlsrKyjIpotIbPny4Ro0apZ49eyosLExPPfWUhg0bpuTkZLNDu2YX/9uvavNCdVGrVi21b99e6enp2rFjh6QLD669/fbbuvfee1WjBhcYcXmbNm1SvXr1tHPnTp05c0b/+Mc/9Nxzz+nZZ5/VoUOH9Nxzz+nRRx/VXXfdpR49emjjxo1mh1ypkJReA19fX0VGRio1NdXVVlRUpNTUVMXExJgYWekYhqEXXnhBn3/+uf79738rNDTU7JCuyQMPPKDt27dry5YtrqVt27Z68skntWXLFvn4+JgdokfuvvvuS0p0/fjjj2rSpIlJEZXemTNn5O3tPv34+PioqKjIpIjKTmhoqKxWq9u84HA4tH79+utyXqhuAgIC9PXXX6thw4Z69NFHNXToUL311ltavHixHnroIbPDQyW2detW3XfffRo6dKhatWqlWrVq6amnnlLnzp2Vm5urP/3pT+rSpYsWLFigfv366fjx44qKiuJe898y+0mr692CBQsMi8VizJs3z9i5c6cxcOBA46abbjLsdrvZoXls0KBBRkBAgJGWlmYcPnzYtZw5c8bs0MrM9fz0fUZGhlGjRg3jjTfeMPbs2WN8/PHHRq1atYyPPvrI7NA81qdPH6NRo0bGv/71L2Pfvn3G4sWLjcDAQGPEiBFmh1Yip06dMjZv3mxs3rzZkGRMnjzZ2Lx5s/HLL78YhmEY48ePN2666Sbjiy++MLZt22Z0797dCA0NNX799VeTI0dxjh49aqxbt87YtGmTq+3UqVPGQw89ZHh5eRkzZ840MTpcD7Zt22bUrFnTGD16tFv7xd/P5cuXGzExMca+ffsMwzCMdevWGV27djX+8pe/GLt3767ocCstktIy8N577xk333yz4evra0RFRRnr1q0zO6RSkVTs8uGHH5odWpm5npNSwzCMf/7zn0br1q0Ni8Vi3H777cb7779vdkil4nA4jCFDhhg333yz4efnZ9xyyy3GX//6V6OgoMDs0Epk5cqVxf630qdPH8MwLpSFGj16tBEUFGRYLBbjgQceMDIzM80NGsXauXOn0bFjR+Phhx82EhIS3Lbl5eUZ//M//2PccsstxtatW02KEJVdVlaW8Yc//MHo3r27W/vkyZONYcOGGU6n01iwYIHh7e1t/PDDD4ZhGMbLL79s9OrVyzh16pQJEVdeXobBayoAANXP9u3b1alTJz333HMaMGCAbr75ZknSli1bZLVaZbVadfr0aXXr1k379+/Xl19+qbCwMJOjRmWzbds2JSQk6JZbblH//v310EMP6a233tKrr76qf/7zn7r//vuVlZWl5557TmvXrlWbNm20YcMGpaen8336HZJSAEC1c+jQIXXu3FmdO3fW5MmTXe0TJkxQYmKiRo0apRdffFH169fX6dOn1aNHD33//fdKT0+/5IFDVE8Oh0O+vr7y8/NTRkaGRowYofr16+vGG2/UV199pYULF+r+++939d+8ebP+/e9/68SJE0pISFCLFi1MjL5y4jFCAEC1s3HjRvn5+emZZ55RUVGRvL29NWnSJI0bN05DhgzRxIkT5eXlJZvNpvr16+vzzz/Xk08+KV9fX7NDRyVw+PBhJSQkqHv37nr66acVFRWlCRMmaOTIkVq2bJlGjRrlSkjPnz+vGjVq6I477tAdd9whwzB4be1lkJQCAKqdVatW6cSJE66zVefPn5fVatWSJUsUGxurqKgoPfnkkyosLNTYsWNVp04dffHFFyQTkHThTYc+Pj765JNP5OfnpyeffFLR0dH629/+JpvNpu+//15Lly5V165dVaNGDdf/+ODK+BsCAFQLe/bscZXqqlOnjry9vXX06FE5nU7VqFFDTz75pGJjY2UYhnr16qWnn35a69atc5WPIyGFJJ07d04Wi0VffPGFGjdurPfff18ff/yxfv31V91xxx2aMGGCTp06penTp+vrr7+WJLeElO/R5ZGUAgCqvC1btujOO+901fqNiYnR3r17tWTJkmJrFp87d04+Pj6Kjo7mDBckSadOnZIk3XDDDZIki8Wi+fPn6+abb9asWbNcienFS/mFhYV68803tXz5cjPDvq7wXxoAoErbunWr7r77br3wwgt67rnnJEmdOnVS37599cwzz+jTTz+V9N8zWEVFRRozZoy+/PJLDRw40JWEoPratWuXGjdurJ49e+rll1/W3r17dejQIfn5+enjjz/W7bffrunTp+ujjz7SmTNnFBUVpVdffVU33XSTWrZsaXb41w2evgcAVFnbtm1TTEyMhg4dqjfeeMPVvnLlStntdi1cuFD//Oc/9eyzz+ruu+/WiRMntG7dOn311VdKTU3VHXfcYWL0qAzOnz+v+fPnq3///rJarQoNDdXevXsVGBioLl26qEuXLmrXrp369u2rX3/9VY899pj+/Oc/q2bNmjp79qz8/PzMPoTrBg86AQCqpOzsbD3wwAN6+OGH3RLS1157TR9++KFSU1MVGRmpO++8U++8844+/vhjNWzYUBEREVqzZg2ln6AffvhBixcv1tChQ3XkyBH99a9/1XvvvafAwEDt3LlT8+fP14IFC2S1WhUUFKRVq1YpMzPT9fCTxWIx+xCuK1y+BwBUSU6nU6GhoTp79qzWrl0rSRo/frzee+89TZs2Tbfccotuu+02JSUl6YcfftCWLVu0du1azZs3j4QU2rp1q8LCwlSjRg3VqVNHo0aNks1m01NPPaVDhw5p0KBBWrlypbZu3aonnnhCf/zjH+Xr66szZ87orrvuksRDTZ7i8j0AoMras2eP/vKXv8jX11dBQUFasmSJPvroI3Xu3NmtXuTOnTtJROGyc+dOtW3bViNGjNCrr77qtm3kyJH629/+prlz56p3795u2/bu3as6deroD3/4QwVGW3WQlAIAqrQff/xRL7zwgtasWaNx48bpxRdf1MWfPi8vL40ePVrz5s3T9u3bFRAQwNmtam7Hjh2677779Ic//EE7d+6UdKEaw28feBs1apQmT56slJQU9erVy6xQqxwu3wMAqrTbbrtNM2bMUIcOHZSamqpvv/1WXl5e8vLyUlJSkiZNmqQlS5bopptuIiGt5rZu3aro6Gi1bt1aeXl5GjJkiKQLZaCcTqer3/jx42Wz2TRgwAB9+OGHZoVb5XCmFABQLVy8lG8YhpKTk7VixQqNGTNGa9asUWRkpNnhwWQbNmxQ+/bt9de//lWvvPKK5syZo7/+9a/685//rHfeeUfShfuUf1vX9oUXXtCiRYu0Z88e+fv7mxV6lUFSCgCoNvbs2SObzaaMjAydPHlS6enpJKSQJK1evVr/+Mc/XAloXl6eFi5ceNXE9MiRI2rQoIEpMVc1JKUAgGolMzNTI0aM0Jtvvqk//vGPZoeDSujiQ3AOh0MLFiy4JDE9f/68atSgqmZZIykFAFQ7v39wBbic3yamTz31lCZPnmx2SFUWaT4AoNohIUVJ+fv7q2fPnvL29tbAgQNlsViUnJxsdlhVEkkpAADAFfj7++vxxx/XDTfcoJiYGLPDqbK4fA8AAFACv33hAsoedUoBAABKgIS0fJGUAgAAwHQkpQAAADAdSSkAAABMR1IKAAAA05GUAgAAwHQkpQAAADAdSSkAAABMR1IKAAAA05GUAgAAwHQkpQAAADAdSSkAAABM9/8BqHpoTpEIL8sAAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_fitness(G2_prep, exp_list_G2_and, P2, measured_only=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Complex case study with inhibition" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's look at a more realistic case study which contains a larger network and more experiments.\n", - "\n", - "Also note that the we define inhibition in the experimental description. This could be, for example, the effect of small molecule kinase inhibitor. \n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "PI3K\n", - "\n", - "PI3K\n", - "\n", - "\n", - "\n", - "EGF->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", - "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", - "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", - "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p38\n", - "\n", - "p38\n", - "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", - "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", - "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", - "\n", - "\n", - "\n", - "p38->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", - "\n", - "\n", - "\n", - "Jnk->cJun\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", - "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", - "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", - "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G3 = cn.Graph.from_sif_tuples(\n", - " [\n", - " (\"EGF\", 1, \"Ras\"),\n", - " (\"EGF\", 1, \"PI3K\"),\n", - " (\"TNFa\", 1, \"PI3K\"),\n", - " (\"TNFa\", 1, \"TRAF6\"),\n", - " (\"TRAF6\", 1, \"p38\"),\n", - " (\"TRAF6\", 1, \"Jnk\"),\n", - " (\"TRAF6\", 1, \"NFkB\"),\n", - " (\"Jnk\", 1, \"cJun\"),\n", - " (\"p38\", 1, \"Hsp27\"),\n", - " (\"PI3K\", 1, \"Akt\"),\n", - " (\"Ras\", 1, \"Raf\"),\n", - " (\"Raf\", 1, \"Mek\"),\n", - " (\"Akt\", -1, \"Mek\"),\n", - " (\"Mek\", 1, \"p90RSK\"),\n", - " (\"Mek\", 1, \"Erk\"),\n", - " (\"Erk\", 1, \"Hsp27\"),\n", - " ]\n", - ")\n", - "# G3.add_edge((), 'EGF')\n", - "# G3.add_edge((), 'TNFa')\n", - "# G3.add_edge('Akt', ())\n", - "# G3.add_edge('cJun', ())\n", - "# G3.add_edge('Hsp27', ())\n", - "# G3.add_edge('NFkB', ())\n", - "# G3.add_edge('Erk', ())\n", - "# G3.add_edge('p90RSK', ())\n", - "# G3.add_edge('Jnk', ())\n", - "\n", - "exp_list_toy_full = {\n", - " \"exp0\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 0},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0,\n", - " \"Erk\": 0,\n", - " \"p90RSK\": 0,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp1\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.86,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp2\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.82,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp3\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp4\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.86,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp5\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.82,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp6\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {\"Raf\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.91,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp7\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 0},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0,\n", - " \"NFkB\": 0.0,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0,\n", - " \"cJun\": 0,\n", - " },\n", - " },\n", - " \"exp8\": {\n", - " \"input\": {\"EGF\": 0, \"TNFa\": 1},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.0,\n", - " \"p90RSK\": 0.0,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - " \"exp9\": {\n", - " \"input\": {\"EGF\": 1, \"TNFa\": 1},\n", - " \"inhibition\": {\"PI3K\": 1},\n", - " \"output\": {\n", - " \"Akt\": 0.0,\n", - " \"Hsp27\": 0.7,\n", - " \"NFkB\": 0.90,\n", - " \"Erk\": 0.8,\n", - " \"p90RSK\": 0.88,\n", - " \"Jnk\": 0.25,\n", - " \"cJun\": 0.4,\n", - " },\n", - " },\n", - "}\n", - "\n", - "\n", - "G3.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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1w6hoaHo2bOnTpKaO7F0cnKCn59fnmXIDh06hI8++ggdOnTIt/zT2rVr4eLigt69e5vwG1ond3d3nTe00qVL4+nTpzrPdZS/3S+++AI//fQT5syZg0WLFul9TtmyZXXeGPV55513UKFCBfz555/w8PDQ+xwXFxed1+rUqRNq166NyMhIbN682fRfopA9evQIKSkpFivtplK1alWdc3ldr3LIfd+pVasWnJ2dcfv2bbi7u2P79u3o1asXevToAYCSorlz52LmzJla10exYsXUQ/85qear5p4OoPqgpFAocP78ecyYMQNPnz7VWyWiTp06+Omnn6BQKHDx4kX8/vvvmDt3LoYMGYIaNWpoXYt+fn4ICwvDuHHj0KdPH2zcuFGn00Quqs6MIkWKoEKFCqhbty6cnZ2xbds2CCHy7FwoWrSo1rGvr6+kahpy48VPBuzbtw+JiYlYv349ateurX706tULAHQWQXXo0AElSpTA3LlzTa7558gMzYvs1q0bhBCYM2cOlEplIbaqcBUrVgwHDx7Enj170K9fP5w9exa9e/fGW2+9le9iHUP+/fdfdO3aFQEBAdi0aZPBBSdpaWnYunUr2rdvb31zjiQw5U3GUf52a9asib59+2Lp0qVITEws0Gv16NEDN27cMGoxaE6VK1dG3bp1cfDgwQL9fGuXV09qXn/PeV2vQgiztcmccv9+DRo0wPnz53H+/HkcOnQI9+7dw+DBg/H48WOtnvFKlSrpvfZU53LPf1Z9UOrQoQNGjx6NNWvW4JdffsnzgxVAsWzYsCEiIyOxdetWALrv1wAwduxYjB07Flu3bsXgwYOtJtbBwcFo37492rRpA39/f3XnhFKphJOTE3bu3Indu3frPL7//nut1zH03mrNuMfUgLVr16J8+fL49ttvdb62ZcsWbN26FUuWLFGfa9GiBYYOHYouXbrgvffew9atW7USAXMN+TiS7t274+2330b//v3h6emJmJgYuZtkMc7OzmjXrh3atWuH6OhozJo1CxMnTkRsbKzWJ/1r165pfZ8QAtevX0dgYKDW+Rs3buC///0vypcvjx07duTZq6Xy66+/IjU11eYXPUmR39+uPfniiy+wZs0afPnllwV6nXnz5qFIkSLqxToffPCB0d+bnZ2N58+fF+jnF5Zy5crBy8sL58+fN+n7SpcurbOIE6AKBrbo2rVr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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_data(exp_list_toy_full)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "PI3K\n", - "\n", - "PI3K\n", - "\n", - "\n", - "\n", - "EGF->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", - "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", - "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", - "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p38\n", - "\n", - "p38\n", - "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", - "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", - "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", - "\n", - "\n", - "\n", - "p38->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", - "\n", - "\n", - "\n", - "Jnk->cJun\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "Jnk->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "NFkB->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "cJun->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27->e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", - "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "Akt->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", - "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", - "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK->e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "Erk->e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G3_prep = cno.expand_graph_for_flows(G3, exp_list_toy_full)\n", - "G3_prep.plot()" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [], - "source": [ - "P_G3 = cno.cellnoptILP(G3_prep, exp_list_toy_full, verbose=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n", - "Warning: node 'TRAF6', graph '%3' size too small for label\n", - "Warning: node 'p90RSK', graph '%3' size too small for label\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "EGF\n", - "\n", - "EGF\n", - "\n", - "\n", - "\n", - "Ras\n", - "\n", - "Ras\n", - "\n", - "\n", - "\n", - "EGF->Ras\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "PI3K\n", - "\n", - "PI3K\n", - "\n", - "\n", - "\n", - "EGF->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf\n", - "\n", - "Raf\n", - "\n", - "\n", - "\n", - "Ras->Raf\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Akt\n", - "\n", - "Akt\n", - "\n", - "\n", - "\n", - "PI3K->Akt\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TNFa\n", - "\n", - "TNFa\n", - "\n", - "\n", - "\n", - "TNFa->PI3K\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "TRAF6\n", - "\n", - "TRAF6\n", - "\n", - "\n", - "\n", - "TNFa->TRAF6\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p38\n", - "\n", - "p38\n", - "\n", - "\n", - "\n", - "TRAF6->p38\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Jnk\n", - "\n", - "Jnk\n", - "\n", - "\n", - "\n", - "TRAF6->Jnk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "NFkB\n", - "\n", - "NFkB\n", - "\n", - "\n", - "\n", - "TRAF6->NFkB\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27\n", - "\n", - "Hsp27\n", - "\n", - "\n", - "\n", - "p38->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "cJun\n", - "\n", - "cJun\n", - "\n", - "\n", - "\n", - "Jnk->cJun\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "Jnk->e_22_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "NFkB->e_20_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "cJun->e_19_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "Hsp27->e_16_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Mek\n", - "\n", - "Mek\n", - "\n", - "\n", - "\n", - "Akt->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "Akt->e_21_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Raf->Mek\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK\n", - "\n", - "p90RSK\n", - "\n", - "\n", - "\n", - "Mek->p90RSK\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk\n", - "\n", - "Erk\n", - "\n", - "\n", - "\n", - "Mek->Erk\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "p90RSK->e_17_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Erk->Hsp27\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "Erk->e_18_target\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source\n", - "\n", - "\n", - "\n", - "\n", - "e_23_source->EGF\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source\n", - "\n", - "\n", - "\n", - "\n", - "e_24_source->TNFa\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "G3_prep.plot(custom_edge_attr=cno.cno_style(P_G3, flow_name=\"edge_activates\", scale=None, iexp=3))" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cno.plot_fitness(G3_prep, exp_list_toy_full, P_G3)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.7" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/guide/signaling/cellnopt_dag.ipynb b/docs/guide/signaling/cellnopt_dag.ipynb new file mode 100644 index 000000000..15aeadd58 --- /dev/null +++ b/docs/guide/signaling/cellnopt_dag.ipynb @@ -0,0 +1,3346 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d0d6ea50", + "metadata": { + "papermill": { + "duration": 0.008751, + "end_time": "2026-09-21T23:05:18.033111", + "exception": false, + "start_time": "2026-09-21T23:05:18.024360", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Inferring intracellular signaling models with CellNOptDAG\n", + "\n", + "Many signaling experiments follow the same design: stimulate a receptor or inhibit a signaling protein, wait until a chosen endpoint, and measure a panel of phosphoproteins or reporters. Each experimental condition is therefore a **snapshot of the cellular response to an intervention**.\n", + "\n", + "This method is built around one question:\n", + "\n", + "> **What is the smallest connected feed-forward signaling logic sufficient to explain the observed endpoint responses across all interventions?**\n", + "\n", + "A prior-knowledge network (PKN) supplies the candidate biology. It collects signaling interactions reported in the literature or databases and is deliberately inclusive: it may contain alternative routes, AND gates, inhibitory effects, and feedback loops. `CellNOptDAG` searches this network for a small Boolean signaling model that answers the question above across the complete experiment.\n", + "\n", + "Proteins are represented as inactive (`0`) or active (`1`), and the same pathway structure is used in every condition. The interventions change which parts of that pathway can respond. This is a simplified model of intracellular signal transmission—not a reconstruction of every molecular event between stimulation and measurement.\n", + "\n", + "The worked example develops the answer in three steps:\n", + "\n", + "1. identify which candidate signaling reactions are needed;\n", + "2. examine how the predicted pathway response changes after each stimulation or inhibition;\n", + "3. compare the predicted activities with the measured readouts.\n", + "\n", + "The main workflow explains these steps visually. The final **Under the hood** section connects the biological intuition to the Boolean and optimization formulation." + ] + }, + { + "cell_type": "markdown", + "id": "4b824f5a", + "metadata": { + "papermill": { + "duration": 0.003951, + "end_time": "2026-09-21T23:05:18.042580", + "exception": false, + "start_time": "2026-09-21T23:05:18.038629", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## One signaling model, several perturbation conditions\n", + "\n", + "CellNOpt learns one pathway diagram from the complete experiment. What happens on that diagram changes from one condition to another.\n", + "\n", + "| Part of the experiment | Biological meaning | Shared across conditions? |\n", + "|---|---|---|\n", + "| Selected reactions | The signaling interactions retained in the inferred pathway | Yes |\n", + "| Stimuli and inhibitors | Which proteins are experimentally forced on or off | No |\n", + "| Predicted protein activity | The model's active/inactive response after each intervention | No |\n", + "| Active reactions | The retained interactions through which signal can pass in that condition | No |\n", + "| Measured readouts | The observed endpoint response used to evaluate the prediction | No |\n", + "\n", + "A reaction may therefore belong to the inferred pathway but remain inactive in a particular condition. For example, an `A → X` reaction can be part of the shared model even when `A` was not stimulated in one experiment.\n", + "\n", + "CORNETO also checks that the retained pathway connects experimental interventions to measured responses. That computational check is explained later; it should not be interpreted as a measured biochemical flux." + ] + }, + { + "cell_type": "markdown", + "id": "5e4ca25c", + "metadata": { + "papermill": { + "duration": 0.003213, + "end_time": "2026-09-21T23:05:18.049434", + "exception": false, + "start_time": "2026-09-21T23:05:18.046221", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Relationship to CellNOptR\n", + "\n", + "[CellNOptR](https://doi.org/10.1186/1752-0509-6-133) established the idea of training logic models of intracellular signaling against perturbation data. It can iteratively propagate Boolean states toward a steady state and can represent successive pseudo-steady states when several experimental times are available.\n", + "\n", + "This guide addresses the simpler case of one response snapshot per intervention. It retains the CellNOpt ideas of selecting reactions, evaluating Boolean responses in every condition, and balancing data fit against model size. CORNETO adds two restrictions for this endpoint setting: the selected model must be acyclic, and every selected reaction must belong to a connected route from an intervention to a readout. These additions are summarized in **Under the hood**." + ] + }, + { + "cell_type": "markdown", + "id": "adb8ac7f", + "metadata": { + "papermill": { + "duration": 0.002864, + "end_time": "2026-09-21T23:05:18.055525", + "exception": false, + "start_time": "2026-09-21T23:05:18.052661", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Example: perturbations and two signaling readouts\n", + "\n", + "We use abstract labels so that the logic is easy to follow. `A`, `C`, and `D` play the role of experimentally controlled upstream signals; `B`, `X`, and `W` are intracellular signaling proteins; and `Y` and `Z` are measured downstream responses.\n", + "\n", + "The candidate network includes several plausible mechanisms:\n", + "\n", + "- `D → B`, so activating `D` can indirectly block `A AND NOT B → X`;\n", + "- a branch from `X` toward both readouts;\n", + "- `W AND C → Z`, representing a response that needs two signals simultaneously;\n", + "- alternative ways to activate `Y` through `X`, `C`, or the absence of `D`.\n", + "\n", + "The PKN also contains shortcuts and feedback interactions. They remain legitimate biological hypotheses. The question is whether the snapshot experiment contains enough information to retain them in the fitted endpoint model." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "3ec145a6", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.062075Z", + "iopub.status.busy": "2026-09-21T23:05:18.061947Z", + "iopub.status.idle": "2026-09-21T23:05:18.831543Z", + "shell.execute_reply": "2026-09-21T23:05:18.831017Z" + }, + "papermill": { + "duration": 0.773943, + "end_time": "2026-09-21T23:05:18.832301", + "exception": false, + "start_time": "2026-09-21T23:05:18.058358", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from IPython.display import display\n", + "\n", + "import corneto as cn\n", + "from corneto.methods.signaling import (\n", + " CellNOptDAG,\n", + " plot_cellnopt_fit,\n", + " plot_cellnopt_model,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "ccf4fa07", + "metadata": { + "papermill": { + "duration": 0.001771, + "end_time": "2026-09-21T23:05:18.836144", + "exception": false, + "start_time": "2026-09-21T23:05:18.834373", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Define the prior-knowledge network\n", + "\n", + "Positive interactions use sign `+1`; inhibitory interactions use sign `−1`. The temporary nodes `AND1` and `AND2` are the usual SIF representation of two combinatorial signaling rules:\n", + "\n", + "- `A AND NOT B → X`: `A` must be active while `B` must be inactive;\n", + "- `W AND C → Z`: both `W` and `C` must be active.\n", + "\n", + "CORNETO treats every complete AND rule as one candidate reaction. The network also includes direct routes to `Z` and the feedback candidates `Y → Z → X` and `Z → W → Z`. Thus the PKN contains cycles even though the fitted endpoint model will not." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "29fbd626", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.840235Z", + "iopub.status.busy": "2026-09-21T23:05:18.840122Z", + "iopub.status.idle": "2026-09-21T23:05:18.845761Z", + "shell.execute_reply": "2026-09-21T23:05:18.845358Z" + }, + "papermill": { + "duration": 0.008365, + "end_time": "2026-09-21T23:05:18.846228", + "exception": false, + "start_time": "2026-09-21T23:05:18.837863", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0A1AND1
1B-1AND1
2AND11X
3D1B
4X1Y
5X1W
6W1AND2
7C1AND2
8AND21Z
9C1Y
10D-1Y
11W1Z
12C1Z
13Y1Z
14Z1X
15Z-1W
\n", + "
" + ], + "text/plain": [ + " source sign target\n", + "0 A 1 AND1\n", + "1 B -1 AND1\n", + "2 AND1 1 X\n", + "3 D 1 B\n", + "4 X 1 Y\n", + "5 X 1 W\n", + "6 W 1 AND2\n", + "7 C 1 AND2\n", + "8 AND2 1 Z\n", + "9 C 1 Y\n", + "10 D -1 Y\n", + "11 W 1 Z\n", + "12 C 1 Z\n", + "13 Y 1 Z\n", + "14 Z 1 X\n", + "15 Z -1 W" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pkn_edges = [\n", + " (\"A\", 1, \"AND1\"),\n", + " (\"B\", -1, \"AND1\"),\n", + " (\"AND1\", 1, \"X\"),\n", + " (\"D\", 1, \"B\"),\n", + " (\"X\", 1, \"Y\"),\n", + " (\"X\", 1, \"W\"),\n", + " (\"W\", 1, \"AND2\"),\n", + " (\"C\", 1, \"AND2\"),\n", + " (\"AND2\", 1, \"Z\"),\n", + " (\"C\", 1, \"Y\"),\n", + " (\"D\", -1, \"Y\"),\n", + " (\"W\", 1, \"Z\"),\n", + " (\"C\", 1, \"Z\"),\n", + " (\"Y\", 1, \"Z\"),\n", + " (\"Z\", 1, \"X\"),\n", + " (\"Z\", -1, \"W\"),\n", + "]\n", + "pkn = cn.Graph.from_tuples(pkn_edges)\n", + "\n", + "pd.DataFrame(pkn_edges, columns=[\"source\", \"sign\", \"target\"])" + ] + }, + { + "cell_type": "markdown", + "id": "fbad6a30", + "metadata": { + "papermill": { + "duration": 0.001789, + "end_time": "2026-09-21T23:05:18.849938", + "exception": false, + "start_time": "2026-09-21T23:05:18.848149", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Define the perturbation experiment\n", + "\n", + "Each row below corresponds to one experimental condition. It records what was done to the cells and what was measured afterward:\n", + "\n", + "- **input:** `1` forces an upstream signal on and `0` keeps it off, representing stimulus present or absent in this simplified experiment;\n", + "- **inhibit:** `1` applies an inhibitor and forces its target off;\n", + "- **readout:** the observed activity at the endpoint.\n", + "\n", + "`Y` and `Z` are the only measured responses. Interventions target the upstream or internal signaling proteins `A–D` and `W`, so the roles of experimental cue and downstream readout remain distinct. The interpretation column is a short label for the reader and is not used by the model.\n", + "\n", + "The informative part of the design is the contrast between rows. `C1` and `C2` receive the same upstream inputs, but only `C1` inhibits `B`; their different `Y` responses test the route `D → B` followed by the first AND gate. `C3` and `C4` test whether `C` alone is sufficient for `Z`, or whether `W` is also required. `C4` and `C6` have the same inputs, but inhibiting `W` in `C6` turns `Z` off while leaving `Y` active, directly testing the `W AND C → Z` branch." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "47eeb812", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.854156Z", + "iopub.status.busy": "2026-09-21T23:05:18.854087Z", + "iopub.status.idle": "2026-09-21T23:05:18.856522Z", + "shell.execute_reply": "2026-09-21T23:05:18.856211Z" + }, + "papermill": { + "duration": 0.005151, + "end_time": "2026-09-21T23:05:18.857022", + "exception": false, + "start_time": "2026-09-21T23:05:18.851871", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "inputs = {\n", + " \"C1\": {\"A\": 1, \"C\": 0, \"D\": 1},\n", + " \"C2\": {\"A\": 1, \"C\": 0, \"D\": 1},\n", + " \"C3\": {\"A\": 0, \"C\": 1, \"D\": 1},\n", + " \"C4\": {\"A\": 1, \"C\": 1, \"D\": 0},\n", + " \"C5\": {\"A\": 0, \"C\": 0, \"D\": 0},\n", + " \"C6\": {\"A\": 1, \"C\": 1, \"D\": 0},\n", + "}\n", + "measurements = {\n", + " \"C1\": {\"Y\": 1, \"Z\": 0},\n", + " \"C2\": {\"Y\": 0, \"Z\": 0},\n", + " \"C3\": {\"Y\": 1, \"Z\": 0},\n", + " \"C4\": {\"Y\": 1, \"Z\": 1},\n", + " \"C5\": {\"Y\": 1, \"Z\": 0},\n", + " \"C6\": {\"Y\": 1, \"Z\": 0},\n", + "}\n", + "inhibitors = {\n", + " \"C1\": {\"B\": 1},\n", + " \"C2\": {},\n", + " \"C3\": {},\n", + " \"C4\": {},\n", + " \"C5\": {},\n", + " \"C6\": {\"W\": 1},\n", + "}\n", + "behavior = {\n", + " \"C1\": \"B inhibition enables AND1\",\n", + " \"C2\": \"D activates B and blocks AND1\",\n", + " \"C3\": \"C alone\",\n", + " \"C4\": \"AND2 enabled\",\n", + " \"C5\": \"negative-literal route\",\n", + " \"C6\": \"W inhibited; Z lost\",\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "426761ba", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.861150Z", + "iopub.status.busy": "2026-09-21T23:05:18.861081Z", + "iopub.status.idle": "2026-09-21T23:05:18.865413Z", + "shell.execute_reply": "2026-09-21T23:05:18.865151Z" + }, + "papermill": { + "duration": 0.007075, + "end_time": "2026-09-21T23:05:18.865943", + "exception": false, + "start_time": "2026-09-21T23:05:18.858868", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
interpretationinput Ainput Cinput Dinhibit Binhibit Wreadout Yreadout Z
condition
C1B inhibition enables AND11011010
C2D activates B and blocks AND11010000
C3C alone0110010
C4AND2 enabled1100011
C5negative-literal route0000010
C6W inhibited; Z lost1100110
\n", + "
" + ], + "text/plain": [ + " interpretation input A input C input D \\\n", + "condition \n", + "C1 B inhibition enables AND1 1 0 1 \n", + "C2 D activates B and blocks AND1 1 0 1 \n", + "C3 C alone 0 1 1 \n", + "C4 AND2 enabled 1 1 0 \n", + "C5 negative-literal route 0 0 0 \n", + "C6 W inhibited; Z lost 1 1 0 \n", + "\n", + " inhibit B inhibit W readout Y readout Z \n", + "condition \n", + "C1 1 0 1 0 \n", + "C2 0 0 0 0 \n", + "C3 0 0 1 0 \n", + "C4 0 0 1 1 \n", + "C5 0 0 1 0 \n", + "C6 0 1 1 0 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experiment_table = pd.DataFrame(index=inputs)\n", + "experiment_table.index.name = \"condition\"\n", + "experiment_table[\"interpretation\"] = pd.Series(behavior)\n", + "for species in [\"A\", \"C\", \"D\"]:\n", + " experiment_table[f\"input {species}\"] = [inputs[name][species] for name in inputs]\n", + "for species in [\"B\", \"W\"]:\n", + " experiment_table[f\"inhibit {species}\"] = [inhibitors[name].get(species, 0) for name in inputs]\n", + "for species in [\"Y\", \"Z\"]:\n", + " experiment_table[f\"readout {species}\"] = [measurements[name][species] for name in inputs]\n", + "\n", + "experiment_table" + ] + }, + { + "cell_type": "markdown", + "id": "013eca6a", + "metadata": { + "papermill": { + "duration": 0.001825, + "end_time": "2026-09-21T23:05:18.869625", + "exception": false, + "start_time": "2026-09-21T23:05:18.867800", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Fit one pathway to the complete experiment\n", + "\n", + "All six conditions are fitted together because they are assumed to probe the same underlying signaling network. The model first tries to reproduce the measured `Y` and `Z` responses. Among similarly fitting explanations, it prefers the one using fewer reactions.\n", + "\n", + "`lambda_reg` controls this preference for a smaller model. Its value is deliberately low here: agreement with the experimental readouts is more important than removing one additional reaction." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "92d6dbf8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.873798Z", + "iopub.status.busy": "2026-09-21T23:05:18.873736Z", + "iopub.status.idle": "2026-09-21T23:05:18.920545Z", + "shell.execute_reply": "2026-09-21T23:05:18.920159Z" + }, + "papermill": { + "duration": 0.049617, + "end_time": "2026-09-21T23:05:18.921072", + "exception": false, + "start_time": "2026-09-21T23:05:18.871455", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'optimal'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "method = CellNOptDAG(lambda_reg=1e-3)\n", + "problem = method.build_many(\n", + " pkn,\n", + " inputs=inputs,\n", + " measurements=measurements,\n", + " inhibitors=inhibitors,\n", + ")\n", + "result = problem.solve(solver=\"SCIPY\")\n", + "result.status" + ] + }, + { + "cell_type": "markdown", + "id": "28a99a87", + "metadata": { + "papermill": { + "duration": 0.001916, + "end_time": "2026-09-21T23:05:18.925109", + "exception": false, + "start_time": "2026-09-21T23:05:18.923193", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Which signaling reactions are supported?\n", + "\n", + "The fitted model retains `D → B`, both AND gates, and three alternative routes to `Y`. Together, these reactions explain why different interventions can produce different combinations of `Y` and `Z` activity.\n", + "\n", + "The direct shortcuts to `Z` and the feedback reactions are not needed for these observations. They remain in the PKN as biological possibilities, but this particular endpoint experiment does not support including them in the smaller fitted model." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "810e64c4", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.929419Z", + "iopub.status.busy": "2026-09-21T23:05:18.929338Z", + "iopub.status.idle": "2026-09-21T23:05:18.932441Z", + "shell.execute_reply": "2026-09-21T23:05:18.932106Z" + }, + "papermill": { + "duration": 0.005982, + "end_time": "2026-09-21T23:05:18.932927", + "exception": false, + "start_time": "2026-09-21T23:05:18.926945", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reactionselected
0D -> B1
1X -> Y1
2X -> W1
3C -> Y1
4NOT D -> Y1
5W -> Z0
6C -> Z0
7Y -> Z0
8Z -> X0
9NOT Z -> W0
10A AND NOT B -> X1
11W AND C -> Z1
\n", + "
" + ], + "text/plain": [ + " reaction selected\n", + "0 D -> B 1\n", + "1 X -> Y 1\n", + "2 X -> W 1\n", + "3 C -> Y 1\n", + "4 NOT D -> Y 1\n", + "5 W -> Z 0\n", + "6 C -> Z 0\n", + "7 Y -> Z 0\n", + "8 Z -> X 0\n", + "9 NOT Z -> W 0\n", + "10 A AND NOT B -> X 1\n", + "11 W AND C -> Z 1" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def reaction_label(reaction):\n", + " literals = [str(node) for node in reaction.positive_literals]\n", + " literals += [f\"NOT {node}\" for node in reaction.negative_literals]\n", + " return f\"{' AND '.join(literals)} -> {reaction.product}\"\n", + "\n", + "reaction_labels = [reaction_label(reaction) for reaction in method.reactions]\n", + "selected = np.rint(problem.expr.reaction_selected.value).astype(int).reshape(-1)\n", + "pd.DataFrame({\"reaction\": reaction_labels, \"selected\": selected})" + ] + }, + { + "cell_type": "markdown", + "id": "43c08897", + "metadata": { + "papermill": { + "duration": 0.001856, + "end_time": "2026-09-21T23:05:18.936680", + "exception": false, + "start_time": "2026-09-21T23:05:18.934824", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Compare the candidate network with the fitted model\n", + "\n", + "This plot shows the complete candidate network. Reactions retained in the fitted model use the main styling; alternatives that were available but not selected are pale and dotted.\n", + "\n", + "Keeping the unselected reactions visible is useful here. It shows that the feedback loops and shortcuts were offered to the model rather than silently removed from the PKN." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "95f30c93", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:18.940952Z", + "iopub.status.busy": "2026-09-21T23:05:18.940879Z", + "iopub.status.idle": "2026-09-21T23:05:19.140666Z", + "shell.execute_reply": "2026-09-21T23:05:19.140230Z" + }, + "papermill": { + "duration": 0.202722, + "end_time": "2026-09-21T23:05:19.141257", + "exception": false, + "start_time": "2026-09-21T23:05:18.938535", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method, show_unselected=True)" + ] + }, + { + "cell_type": "markdown", + "id": "269f1115", + "metadata": { + "papermill": { + "duration": 0.002053, + "end_time": "2026-09-21T23:05:19.145612", + "exception": false, + "start_time": "2026-09-21T23:05:19.143559", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Inspect the fitted signaling model\n", + "\n", + "Hiding unselected reactions leaves the signaling hypothesis supported by this experiment. `D → B` controls the first AND gate, `X` branches toward `Y` and `W`, and the second AND gate combines `W` with `C` to activate `Z`. Separate routes can activate `Y` under different perturbations.\n", + "\n", + "This is the shared pathway diagram. The next plots show how much of it is active in each condition." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "386f1f50", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:19.150276Z", + "iopub.status.busy": "2026-09-21T23:05:19.150185Z", + "iopub.status.idle": "2026-09-21T23:05:19.340113Z", + "shell.execute_reply": "2026-09-21T23:05:19.339666Z" + }, + "papermill": { + "duration": 0.193052, + "end_time": "2026-09-21T23:05:19.340659", + "exception": false, + "start_time": "2026-09-21T23:05:19.147607", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method)" + ] + }, + { + "cell_type": "markdown", + "id": "08919801", + "metadata": { + "papermill": { + "duration": 0.002145, + "end_time": "2026-09-21T23:05:19.345199", + "exception": false, + "start_time": "2026-09-21T23:05:19.343054", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Reuse the selected reactions on unseen conditions\n", + "\n", + "The `build_many`/`solve` example above is the advanced, composable route: add optional CORNETO constraints to the `ProblemDef` before solving. When no custom constraints are needed, `fit` is the convenience wrapper and returns the same method instance. The selected `reaction_selected` values can then be applied to named conditions that were not used during fitting:\n", + "\n", + "- `predict` accepts only inputs and inhibitors. It does not accept measurements, never solves, and deterministically propagates the fixed selected reactions in topological order. Inputs and active inhibitors clamp their targets exactly as in training; every other species is the OR of its active selected producing reactions.\n", + "- `evaluate` compares those fixed predictions with measurements afterward. Measurement mappings may use the same condition-key set in a different insertion order. Forced species are excluded from the reported loss.\n", + "\n", + "Prediction and evaluation use named outer condition mappings, as in `build_many`; the single-condition `build` convenience accepts an inner mapping for one condition." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "6aeab7d6", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:19.350156Z", + "iopub.status.busy": "2026-09-21T23:05:19.350071Z", + "iopub.status.idle": "2026-09-21T23:05:19.380037Z", + "shell.execute_reply": "2026-09-21T23:05:19.379658Z" + }, + "papermill": { + "duration": 0.033193, + "end_time": "2026-09-21T23:05:19.380497", + "exception": false, + "start_time": "2026-09-21T23:05:19.347304", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 X -> Y\n", + "1 X -> W\n", + "2 C -> Y\n", + "3 NOT D -> Y\n", + "4 A AND NOT B -> X\n", + "5 W AND C -> Z\n", + "Name: selected held-out reactions, dtype: object" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "loss 0.25\n", + "count 4.00\n", + "Name: global report, dtype: float64" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "C2 0.5\n", + "C6 0.0\n", + "Name: by_condition, dtype: float64" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hold out C2 and C6: together they test an uninhibited negative literal\n", + "# condition and W-inhibitor clamping, while C1, C3-C5 retain the positive,\n", + "# negative-literal, OR, and AND mechanisms needed to identify the pathway.\n", + "heldout_conditions = (\"C2\", \"C6\")\n", + "train_inputs = {name: values for name, values in inputs.items() if name not in heldout_conditions}\n", + "train_measurements = {name: values for name, values in measurements.items() if name not in heldout_conditions}\n", + "train_inhibitors = {name: values for name, values in inhibitors.items() if name not in heldout_conditions}\n", + "test_inputs = {name: inputs[name] for name in heldout_conditions}\n", + "test_inhibitors = {name: inhibitors[name] for name in heldout_conditions}\n", + "# Deliberately reverse the condition insertion order to show key-based alignment.\n", + "test_measurements = {name: measurements[name] for name in reversed(heldout_conditions)}\n", + "\n", + "heldout_model = CellNOptDAG(lambda_reg=1e-3).fit(\n", + " pkn,\n", + " inputs=train_inputs,\n", + " measurements=train_measurements,\n", + " inhibitors=train_inhibitors,\n", + " solve_options={\"solver\": \"SCIPY\"},\n", + ")\n", + "heldout_predictions = heldout_model.predict(\n", + " inputs=test_inputs,\n", + " inhibitors=test_inhibitors,\n", + ")\n", + "heldout_report = heldout_model.evaluate(\n", + " inputs=test_inputs,\n", + " measurements=test_measurements,\n", + " inhibitors=test_inhibitors,\n", + ")\n", + "heldout_selected = [\n", + " reaction_label(heldout_model.reactions[index])\n", + " for index in heldout_model.get_selected_reaction_indices()\n", + "]\n", + "display(pd.Series(heldout_selected, name=\"selected held-out reactions\"))\n", + "display(pd.Series(\n", + " {\"loss\": heldout_report[\"loss\"], \"count\": heldout_report[\"count\"]},\n", + " name=\"global report\",\n", + ").round(3))\n", + "pd.Series(heldout_report[\"by_condition\"], name=\"by_condition\").round(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "aa70a7bf", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:19.385608Z", + "iopub.status.busy": "2026-09-21T23:05:19.385518Z", + "iopub.status.idle": "2026-09-21T23:05:19.389357Z", + "shell.execute_reply": "2026-09-21T23:05:19.388995Z" + }, + "papermill": { + "duration": 0.006917, + "end_time": "2026-09-21T23:05:19.389789", + "exception": false, + "start_time": "2026-09-21T23:05:19.382872", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
valuepredictedforced
id
A1.0FalseTrue
W0.0FalseTrue
Y1.0TrueFalse
Z0.0TrueFalse
\n", + "
" + ], + "text/plain": [ + " value predicted forced\n", + "id \n", + "A 1.0 False True\n", + "W 0.0 False True\n", + "Y 1.0 True False\n", + "Z 0.0 True False" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame(\n", + " [feature.to_dict() for feature in heldout_predictions.samples[\"C6\"].features]\n", + ").set_index(\"id\")[[\"value\", \"predicted\", \"forced\"]].loc[[\"A\", \"W\", \"Y\", \"Z\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "8f217405", + "metadata": { + "papermill": { + "duration": 0.002228, + "end_time": "2026-09-21T23:05:19.394370", + "exception": false, + "start_time": "2026-09-21T23:05:19.392142", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "The returned `Data` preserves condition/species labels and distinguishes externally forced values from model predictions: input and inhibitor targets have `forced=True, predicted=False`, while propagated species have `predicted=True`. The `predictions` entry in the evaluation report carries the same metadata. This held-out example is separate from the in-sample fit plot below; no held-out measurement is supplied to `predict`." + ] + }, + { + "cell_type": "markdown", + "id": "f0aa9784", + "metadata": { + "papermill": { + "duration": 0.00222, + "end_time": "2026-09-21T23:05:19.398849", + "exception": false, + "start_time": "2026-09-21T23:05:19.396629", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Does the model reproduce the measured responses?\n", + "\n", + "Each row is one intervention condition, and the `Y` and `Z` panels match the readout columns in the experiment table:\n", + "\n", + "- red open circles show the measured endpoint response;\n", + "- blue squares show the model prediction;\n", + "- a vertical segment would show a disagreement;\n", + "- the background color summarizes the prediction error.\n", + "\n", + "Only measured signaling responses are shown in this main fit view. Predicted activities of unmeasured internal proteins are inspected later, where they are clearly distinguished from experimental observations." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9438b958", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:19.403851Z", + "iopub.status.busy": "2026-09-21T23:05:19.403771Z", + "iopub.status.idle": "2026-09-21T23:05:19.914732Z", + "shell.execute_reply": "2026-09-21T23:05:19.914310Z" + }, + "papermill": { + "duration": 0.514146, + "end_time": "2026-09-21T23:05:19.915218", + "exception": false, + "start_time": "2026-09-21T23:05:19.401072", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fit_figure, fit_axes = plot_cellnopt_fit(method)" + ] + }, + { + "cell_type": "markdown", + "id": "9a672bb9", + "metadata": { + "papermill": { + "duration": 0.002365, + "end_time": "2026-09-21T23:05:19.920227", + "exception": false, + "start_time": "2026-09-21T23:05:19.917862", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "The horizontal position is labelled **Endpoint** because these data contain one post-intervention snapshot, not a time course. The plot does not create an artificial starting value or assume that the first condition is a baseline. If future formulations model several measured time points, observed and predicted values can instead be placed at their actual sampling times." + ] + }, + { + "cell_type": "markdown", + "id": "012732df", + "metadata": { + "papermill": { + "duration": 0.00228, + "end_time": "2026-09-21T23:05:19.924810", + "exception": false, + "start_time": "2026-09-21T23:05:19.922530", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## A pathway reaction can be present but inactive\n", + "\n", + "It helps to separate the **pathway map** from the **response in one experiment**. A road can be present on a map even when no traffic uses it; likewise, a reaction can belong to the fitted signaling model even when its upstream requirements are not satisfied in one condition.\n", + "\n", + "`C1` and `C2` have the same upstream inputs: `A=1`, `C=0`, and `D=1`. In both conditions, `D` can activate `B`. In `C1`, however, the experimental inhibitor forces `B` off. This allows the rule `A AND NOT B → X` to transmit the signal. In `C2`, `B` remains active, the `NOT B` requirement fails, and the same pathway branch is inactive and drawn with dashed lines." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "9546c203", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:19.930033Z", + "iopub.status.busy": "2026-09-21T23:05:19.929920Z", + "iopub.status.idle": "2026-09-21T23:05:20.121373Z", + "shell.execute_reply": "2026-09-21T23:05:20.120940Z" + }, + "papermill": { + "duration": 0.194874, + "end_time": "2026-09-21T23:05:20.121965", + "exception": false, + "start_time": "2026-09-21T23:05:19.927091", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method, condition=\"C1\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c2a5b5cc", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:20.127810Z", + "iopub.status.busy": "2026-09-21T23:05:20.127718Z", + "iopub.status.idle": "2026-09-21T23:05:20.322843Z", + "shell.execute_reply": "2026-09-21T23:05:20.322351Z" + }, + "papermill": { + "duration": 0.19874, + "end_time": "2026-09-21T23:05:20.323457", + "exception": false, + "start_time": "2026-09-21T23:05:20.124717", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method, condition=\"C2\")" + ] + }, + { + "cell_type": "markdown", + "id": "e1299723", + "metadata": { + "papermill": { + "duration": 0.002537, + "end_time": "2026-09-21T23:05:20.328809", + "exception": false, + "start_time": "2026-09-21T23:05:20.326272", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### An inhibitor changes its target, not the whole cell\n", + "\n", + "`C4` and `C6` have the same upstream inputs. Without the inhibitor in `C4`, `X` activates `W`, the rule `W AND C → Z` is satisfied, and both readouts are active.\n", + "\n", + "In `C6`, the inhibitor specifically forces internal protein `W` off. Signaling to `Y` remains active through `X` and `C`, but the AND rule producing `Z` is no longer satisfied, matching the observed `Y=1, Z=0`. The intervention therefore blocks one branch rather than being interpreted as a shutdown of the whole pathway." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "8d1af7bd", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:20.334576Z", + "iopub.status.busy": "2026-09-21T23:05:20.334491Z", + "iopub.status.idle": "2026-09-21T23:05:20.526354Z", + "shell.execute_reply": "2026-09-21T23:05:20.525981Z" + }, + "papermill": { + "duration": 0.195678, + "end_time": "2026-09-21T23:05:20.527048", + "exception": false, + "start_time": "2026-09-21T23:05:20.331370", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method, condition=\"C6\")" + ] + }, + { + "cell_type": "markdown", + "id": "9b4ee4e6", + "metadata": { + "papermill": { + "duration": 0.002622, + "end_time": "2026-09-21T23:05:20.532564", + "exception": false, + "start_time": "2026-09-21T23:05:20.529942", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## A compact view for larger signaling experiments\n", + "\n", + "When an experiment contains many perturbations or readouts, aligned heatmaps are easier to scan than one panel per response. Observed activities, predicted activities, absolute errors, and experimental cues remain aligned by condition. Unmeasured entries stay blank rather than being treated as zeros." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "f12e3db5", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:20.538590Z", + "iopub.status.busy": "2026-09-21T23:05:20.538471Z", + "iopub.status.idle": "2026-09-21T23:05:20.728462Z", + "shell.execute_reply": "2026-09-21T23:05:20.728040Z" + }, + "papermill": { + "duration": 0.193718, + "end_time": "2026-09-21T23:05:20.728945", + "exception": false, + "start_time": "2026-09-21T23:05:20.535227", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA8EAAAH3CAYAAACb9F2ZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXddJREFUeJzt3Ql8FOX5wPFncwdCoMghyGGicitoFAWqgFbOUrW0qPUslqogeKD9F9R6IpVSq8jhSa3V2kPUakWQooIWKnJWbTiUU4EiIgQCuef/ed5k1k0IYTdks7Pz/r5+RnZmZzczu/vMzDPvFXAcxxEAAAAAACyQEOsNAAAAAACgvpAEAwAAAACsQRIMAAAAALAGSTAAAAAAwBokwQAAAAAAa5AEAwAAAACsQRIMAAAAALAGSTAAAAAAwBokwQAAAAAAa1iZBP/73/+WH//4x9KqVStJSUmR448/Xn70ox/J0qVLK6137733SiAQkN27d4ttTjzxRLn22mtjvRmIc88995yJIZ3ee++9w553HEdOPvlk83y/fv3q7O/q+2n8Rmrz5s3mtbrdsNe0adPM76Bbt241/k6mTp1ar9vlnpNq47///a95vW47ANSl//znP/LTn/5UsrKyJC0tTTIyMuSMM86QKVOmyJ49e/iw4UnWJcGPP/649OnTR7744gsTnP/85z/NhcyXX34p3/3ud2X69Omx3kTAdxo1aiTPPvvsYcsXLVokn3/+uXke8IrZs2ebfz/99FP58MMPxQ80Cb7vvvtIggHUqaefflpycnLko48+kjvuuEPmzZsnr776qilseuKJJ+S6667jE4cnJYlF/vWvf8ktt9wiQ4YMMQGalPTt7l922WVyySWXyM033yynn366SZS95NChQ5Kenh7rzQBq5dJLL5UXX3xRZsyYIZmZmcHlmhj36tVL8vLy+GThCcuXL5c1a9bI0KFD5c033zS/0bPPPjvWm+VLWhOkoKCg2nObnvO0RKm2Jd/q4MGD0qBBg2PcSgBHojUob7zxRrnwwgvltddek9TU1OBzumz8+PEmKQa8yKqS4MmTJ5sT6qxZsyolwErnZ86caZ7/9a9/Xem5bdu2yQ9/+ENz8d64cWO58sor5auvvqq0zjvvvGOqcx533HHmhN6uXTsZPny4OQm7ioqK5MEHH5ROnTqZA0Xz5s1N9ZGq76VVkb///e/LK6+8YhJyvRDQO/j6+Nxzzz1sv0pLS+WEE04w2xjp3youLpZf/OIXpkq4XixoafiyZctq+QkD1bv88svNvy+99FJw2b59+2TOnDkycuTIw9bX6lOjR482v2ttspCdnS133nmnFBYWVlpPk+dRo0aZuNPqV4MGDZL169dXuw0bNmyQn/zkJ9KiRQsTE507dzZJORDKrbGg54HevXvLn//850rH8VBlZWUyadIkc7zX4/SZZ54pCxcurLSOHnN//vOfS9u2bYPHYr3JqrWQqpY+d+/e3bxP06ZNzU3Z3NzcWlf9D23SotX7tVRG9e/fP9hEIbTav27PBRdcYM5zei7Qbay6L0eicXj77bebqpAarxq3esM5Pz//sG296aabTOmQxp9+Hn/4wx+CzSbefvttczzQz0i3QeNdP2OtteWeyzR+r776alObK5Sef7X6+uLFi833pq+v7tgCoO489NBDJnafeuqpSgmwS48HP/jBD8I+Vrl27twp119/vbRp08a8hx5b9Dq4pKSk0np6Pa/HTT3/a40yPU5MnDiRrxjhcSxRUlLiNGjQwDn77LNrXK9nz55mPV3/nnvucfQjat++vXPHHXc48+fPdx555BGnYcOGzumnn+4UFRWZ12zatMlJS0tzLrzwQue1115z3nvvPefFF190rrrqKuebb74x65SWljqDBg0yr73vvvucBQsWOM8884xzwgknOF26dHEOHjwY3Ab9e61atXKys7Od2bNnO++++66zbNky57HHHjPbs379+krbPHfuXLP89ddfj/hvXXPNNU4gEDD79/bbb5v90/UyMzPNc8Cx+P3vf29+mx999JGJB40v16xZs8xvNC8vz+natavTt29fs/zQoUPOaaedZp6bOnWq+V3efffdTlJSkjNkyJDg68vKypz+/fs7qampzqRJk8x6GrMaN/o39bHr008/dRo3buyceuqpzvPPP2/WHT9+vJOQkODce++9wfU0lvW1ut2wjx4b9Xdy1llnmXk9burv4bnnnqu0nvs7adu2rfPd737XmTNnjvO3v/3NvC45OdlZsmRJcN2BAwc6zZs3d5566ilzbtBzxK9+9Svnz3/+c3Cdhx56yLzf5Zdf7rz55pvmN6q/Y92W0OO9e04KVfW3HnoecY/hu3btCv6NGTNmOEuXLjWTLld//OMfzXng4osvdl555RXn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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "heatmap_figure, heatmap_axes = plot_cellnopt_fit(method, view=\"heatmap\")" + ] + }, + { + "cell_type": "markdown", + "id": "f4d57529", + "metadata": { + "papermill": { + "duration": 0.002729, + "end_time": "2026-09-21T23:05:20.734725", + "exception": false, + "start_time": "2026-09-21T23:05:20.731996", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Under the hood\n", + "\n", + "The biological workflow above rests on a few modeling assumptions. This section states only the assumptions needed to interpret the result and separates the CellNOpt core from the acyclicity and connectivity requirements added by CORNETO." + ] + }, + { + "cell_type": "markdown", + "id": "499bc91f", + "metadata": { + "papermill": { + "duration": 0.002701, + "end_time": "2026-09-21T23:05:20.740159", + "exception": false, + "start_time": "2026-09-21T23:05:20.737458", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Endpoint Boolean assumptions\n", + "\n", + "One reaction set is selected for the whole experiment, while protein and reaction activities are predicted separately for each condition.\n", + "\n", + "For every condition:\n", + "\n", + "- a selected reaction is active only when all its positive inputs are active and all its negative inputs are inactive;\n", + "- several active reactions producing the same protein act as OR alternatives;\n", + "- a stimulus or inhibitor overrides the usual production rule by fixing its target on or off;\n", + "- internal activities are predictions at the measured endpoint, not simulated intermediate time steps.\n", + "\n", + "CORNETO represents these rules with vectorized binary variables: $Y_r$ for shared reaction selection, $Z_{rc}$ for condition-specific reaction activity, and $X_{vc}$ for condition-specific protein activity. The implementation uses exact linear constraints for AND, OR, and negative literals, but those linearization details do not change the biological assumptions above." + ] + }, + { + "cell_type": "markdown", + "id": "6b6b6971", + "metadata": { + "papermill": { + "duration": 0.002703, + "end_time": "2026-09-21T23:05:20.745673", + "exception": false, + "start_time": "2026-09-21T23:05:20.742970", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Fit and model size\n", + "\n", + "The model prioritizes agreement with observed readouts and uses a smaller penalty to prefer compact signaling explanations:\n", + "\n", + "$$\n", + "\\min\\; \\sum_{(v,c)\\,\\mathrm{observed}} |X_{vc}-m_{vc}| + \\lambda\\sum_r Y_r.\n", + "$$\n", + "\n", + "Only measured entries contribute to the first term. Unmeasured proteins are not treated as zero. The second term counts selected Boolean reactions, so an AND gate is penalized once rather than once per input leg." + ] + }, + { + "cell_type": "markdown", + "id": "180b830e", + "metadata": { + "papermill": { + "duration": 0.002633, + "end_time": "2026-09-21T23:05:20.750941", + "exception": false, + "start_time": "2026-09-21T23:05:20.748308", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### What CORNETO adds\n", + "\n", + "| Modeling element | Role in this formulation |\n", + "|---|---|\n", + "| Shared reaction selection across conditions | CellNOpt core |\n", + "| Condition-specific Boolean AND, OR, and inhibitory logic | CellNOpt core |\n", + "| Readout mismatch plus a model-size penalty | CellNOpt core |\n", + "| Acyclic selected reaction dependencies | CORNETO endpoint restriction |\n", + "| One shared structural flow connecting interventions to readouts | CORNETO connectivity extension |\n", + "\n", + "Acyclicity is imposed on the **selected model**, not on the PKN. CORNETO assigns an ordering level $h_v$ to every protein and requires each selected dependency $u\\rightarrow v$ to point forward:\n", + "\n", + "$$\n", + "Y_r=1 \\;\\Longrightarrow\\; h_u < h_v\n", + "\\qquad\\text{for every dependency }u\\rightarrow v\\text{ in reaction }r.\n", + "$$\n", + "\n", + "This makes the endpoint response evaluable from the experimental inputs without choosing an update order or allowing a selected feedback loop to support itself.\n", + "\n", + "Connectivity is a separate requirement. CORNETO sends an artificial bookkeeping flow from controlled proteins, through every selected dependency, to measured readouts. Selected dependencies must carry positive flow, unselected dependencies carry none, and flow is conserved at internal proteins. The resulting flow is a structural certificate that the selected model contains no disconnected or dangling reactions." + ] + }, + { + "cell_type": "markdown", + "id": "e7f13c08", + "metadata": { + "papermill": { + "duration": 0.0027, + "end_time": "2026-09-21T23:05:20.756313", + "exception": false, + "start_time": "2026-09-21T23:05:20.753613", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Inspecting the inferred states\n", + "\n", + "The tables below contain only selected reactions and the internal or measured proteins needed to interpret the example. Reaction activity and protein activity vary by condition; neither table contains additional experimental measurements. `Y` and `Z` are observed readouts, whereas `B`, `X`, and `W` are model predictions." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "39c46bc9", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:20.762368Z", + "iopub.status.busy": "2026-09-21T23:05:20.762277Z", + "iopub.status.idle": "2026-09-21T23:05:20.767654Z", + "shell.execute_reply": "2026-09-21T23:05:20.767341Z" + }, + "papermill": { + "duration": 0.009138, + "end_time": "2026-09-21T23:05:20.768160", + "exception": false, + "start_time": "2026-09-21T23:05:20.759022", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
C1C2C3C4C5C6
D -> B111000
X -> Y100101
X -> W100101
C -> Y001101
NOT D -> Y000111
A AND NOT B -> X100101
W AND C -> Z000100
\n", + "
" + ], + "text/plain": [ + " C1 C2 C3 C4 C5 C6\n", + "D -> B 1 1 1 0 0 0\n", + "X -> Y 1 0 0 1 0 1\n", + "X -> W 1 0 0 1 0 1\n", + "C -> Y 0 0 1 1 0 1\n", + "NOT D -> Y 0 0 0 1 1 1\n", + "A AND NOT B -> X 1 0 0 1 0 1\n", + "W AND C -> Z 0 0 0 1 0 0" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
C1C2C3C4C5C6
B011000
X100101
W100100
Y101111
Z000100
\n", + "
" + ], + "text/plain": [ + " C1 C2 C3 C4 C5 C6\n", + "B 0 1 1 0 0 0\n", + "X 1 0 0 1 0 1\n", + "W 1 0 0 1 0 0\n", + "Y 1 0 1 1 1 1\n", + "Z 0 0 0 1 0 0" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "condition_names = list(inputs)\n", + "selected_mask = selected.astype(bool)\n", + "reaction_activity = pd.DataFrame(\n", + " np.rint(problem.expr.reaction_active.value).astype(int),\n", + " index=reaction_labels,\n", + " columns=condition_names,\n", + ").loc[selected_mask]\n", + "species_states = pd.DataFrame(\n", + " np.rint(problem.expr.vertex_value.value).astype(int),\n", + " index=method.processed_graph.V,\n", + " columns=condition_names,\n", + ").loc[[\"B\", \"X\", \"W\", \"Y\", \"Z\"]]\n", + "\n", + "display(reaction_activity, species_states)" + ] + }, + { + "cell_type": "markdown", + "id": "362e287c", + "metadata": { + "papermill": { + "duration": 0.002854, + "end_time": "2026-09-21T23:05:20.773812", + "exception": false, + "start_time": "2026-09-21T23:05:20.770958", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Structural connectivity diagnostic\n", + "\n", + "The following plot visualizes the artificial structural flow by edge width. It is useful for checking that selected reactions are connected to experimental inputs and measured outputs, and for finding an incorrectly mapped, disconnected, or dangling reaction.\n", + "\n", + "This is a debugging view. Flow is shared across all conditions and records neither whether a reaction is active in one condition nor how strongly a biochemical signal passes through it." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "fb593712", + "metadata": { + "execution": { + "iopub.execute_input": "2026-09-21T23:05:20.779981Z", + "iopub.status.busy": "2026-09-21T23:05:20.779900Z", + "iopub.status.idle": "2026-09-21T23:05:20.972365Z", + "shell.execute_reply": "2026-09-21T23:05:20.971855Z" + }, + "papermill": { + "duration": 0.196308, + "end_time": "2026-09-21T23:05:20.972923", + "exception": false, + "start_time": "2026-09-21T23:05:20.776615", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "D\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->B\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "D->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "B->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "X->W\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11\n", + "\n", + "\n", + "AND\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "W->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "C\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->Y\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "C->__cellnopt_and_11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "A\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "A->__cellnopt_and_10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_10->X\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "__cellnopt_and_11->Z\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_cellnopt_model(method, width_by=\"flow\")" + ] + }, + { + "cell_type": "markdown", + "id": "96461460", + "metadata": { + "papermill": { + "duration": 0.002882, + "end_time": "2026-09-21T23:05:20.978942", + "exception": false, + "start_time": "2026-09-21T23:05:20.976060", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "All selected dependency legs happen to carry structural flow `1` in this solution, so they receive the same width. That equality does **not** mean the reactions have equal biological strength or importance. It only means that this particular bookkeeping flow can certify every selected dependency with the minimum required amount.\n", + "\n", + "Structural-flow values are generally non-unique and solver-dependent; a different feasible certificate can assign different widths without changing the selected signaling model. The values are unrelated to protein activity, signal strength, reaction rate, confidence, or causal importance. Use the plot only to verify selected-model connectivity." + ] + }, + { + "cell_type": "markdown", + "id": "7c0e516e", + "metadata": { + "papermill": { + "duration": 0.011294, + "end_time": "2026-09-21T23:05:20.993122", + "exception": false, + "start_time": "2026-09-21T23:05:20.981828", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Biological interpretation and limitations\n", + "\n", + "This method is designed for intracellular signaling experiments in which cells are stimulated or inhibited and measured once at a chosen endpoint. The result is one compact pathway structure whose predicted activity changes across intervention conditions.\n", + "\n", + "The fitted model answers the question posed at the beginning: it is a connected feed-forward signaling logic sufficient to explain these observed snapshots. “Sufficient” does not mean unique, dynamically complete, or necessarily identical to the pathway operating in the cell.\n", + "\n", + "Feedback remains biologically plausible. A snapshot with both `Y` and `Z` active usually cannot reveal whether `Y` activated `Z`, `Z` activated `Y`, an upstream protein activated both, or a loop maintained them. The acyclic restriction therefore reflects what this experiment can identify; it is not evidence that the biological network contains no feedback. Feedback candidates remain visible in the PKN as hypotheses that were available but not established by this endpoint analysis.\n", + "\n", + "A dynamic model is more appropriate when measurements cover activation and relaxation over time, proteins inside a proposed loop are directly perturbed, or the data show adaptation, oscillation, or dependence on initial state. Such analyses must state how time and updates are represented.\n", + "\n", + "Other limitations remain: Boolean states simplify graded and stochastic signaling; inference is restricted to the supplied PKN; alternative models may fit equally well; and unmeasured internal activities remain predictions. Structural flow certifies connectivity only—it does not quantify signaling strength." + ] + }, + { + "cell_type": "markdown", + "id": "causal-structure-bridge", + "metadata": { + "papermill": { + "duration": 0.00288, + "end_time": "2026-09-21T23:05:20.999060", + "exception": false, + "start_time": "2026-09-21T23:05:20.996180", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Connection to causal structure learning\n", + "\n", + "For readers coming from mathematics or causal inference, `CellNOptDAG` can be viewed as **interventional Boolean causal structure learning over a restricted hypothesis space**.\n", + "\n", + "The variables are the binary protein activities $X_v$. The PKN acts as a causal *superstructure*: it specifies the allowed variables, directions, signs, and multi-input clauses. The optimization does not invent interactions outside that superstructure. Instead, it chooses which candidate reactions are needed to explain all intervention conditions.\n", + "\n", + "Let $Y_r$ indicate whether candidate reaction $r$ is selected. If $P_r$ and $N_r$ are its positive and negative inputs, its condition-specific truth value is\n", + "\n", + "$$\n", + "Z_{rc}=Y_r\\land\\bigwedge_{u\\in P_r}X_{uc}\\land\\bigwedge_{w\\in N_r}\\neg X_{wc}.\n", + "$$\n", + "\n", + "For a protein that is not experimentally fixed, alternative selected reactions producing that protein act as OR alternatives:\n", + "\n", + "$$\n", + "X_{vc}=\\bigvee_{r:\\,\\operatorname{product}(r)=v} Z_{rc}.\n", + "$$\n", + "\n", + "The inferred equation for each protein is therefore a signed Boolean expression in disjunctive normal form. For example, selecting `A AND NOT B → X` and `C → X` gives\n", + "\n", + "$$\n", + "X=(A\\land\\neg B)\\lor C.\n", + "$$\n", + "\n", + "The selection variables $Y_r$ are shared across conditions: this is the assumption that the underlying causal mechanisms remain invariant throughout the experiment. The state variables $X_{vc}$ and reaction activities $Z_{rc}$ vary because each condition applies different experimental manipulations.\n", + "\n", + "A stimulus or inhibitor overrides the usual equation for its target and fixes that variable to `1` or `0`. In structural-causal notation, this plays the role of a hard intervention such as $\\operatorname{do}(X_v=1)$ or $\\operatorname{do}(X_v=0)$. CellNOptDAG then searches for a shared model that predicts the measured outcomes of these interventions:\n", + "\n", + "$$\n", + "\\min_Y\\;\\sum_{(v,c)\\,\\mathrm{observed}}|X_{vc}-m_{vc}|+\\lambda\\sum_rY_r.\n", + "$$\n", + "\n", + "The first term is interventional prediction error and the second is a sparsity penalty on structural mechanisms. Because CORNETO also requires the selected dependencies to be acyclic, the fitted Boolean structural equations can be evaluated in topological order without specifying feedback dynamics.\n", + "\n", + "| CellNOpt term | Causal or mathematical interpretation |\n", + "|---|---|\n", + "| Protein activity | Binary endogenous variable |\n", + "| PKN | Causal superstructure or hypothesis space |\n", + "| Selected reaction | Selected structural mechanism or Boolean clause |\n", + "| Stimulus or inhibitor | Hard intervention |\n", + "| Shared reaction selection | Invariant causal structure |\n", + "| Readout mismatch | Interventional prediction loss |\n", + "| Model-size penalty | Sparsity regularization |\n", + "| Acyclicity | Topological evaluation of the structural equations; feedback is excluded |\n", + "| Structural flow | Connectivity certificate, not a causal-effect estimate |\n", + "\n", + "The phrase **causal discovery** needs one qualification here. This is not unrestricted discovery of a causal graph from data alone: the PKN already supplies the possible mechanisms, including the available AND clauses. The method selects among those mechanisms, while OR relationships arise from selecting several reactions with the same product. It is therefore more precise to call the task **PKN-constrained interventional Boolean causal structure learning**.\n", + "\n", + "As in other causal-learning problems, the fitted structure need not be identifiable. Two candidate subnetworks may make exactly the same predictions under the available interventions. The size penalty can prefer a compact representative, but it cannot turn experimentally indistinguishable models into a uniquely established causal explanation." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.14" + }, + "papermill": { + "default_parameters": {}, + "duration": 3.781041, + "end_time": "2026-09-21T23:05:21.220714", + "environment_variables": {}, + "exception": null, + "input_path": "docs/guide/signaling/cellnopt_dag.ipynb", + "output_path": "/private/tmp/cellnopt-dag-executed.ipynb", + "parameters": {}, + "start_time": "2026-09-21T23:05:17.439673", + "version": "2.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/docs/guide/signaling/index.md b/docs/guide/signaling/index.md index 8b67a5cc9..314fbac9d 100644 --- a/docs/guide/signaling/index.md +++ b/docs/guide/signaling/index.md @@ -2,6 +2,10 @@ Inferring signaling networks from omics data is a challenging task due to the complexity of the underlying biological processes. CORNETO provides a set of tools to infer and contextualize signaling networks from omics data and prior knowledge. +`CellNOptDAG` additionally exposes fixed-model prediction and evaluation after +solving. The other signaling methods primarily build explanatory optimization +problems and return their inferred solutions. + ```{toctree} :maxdepth: 3 @@ -9,5 +13,5 @@ carnival.ipynb multisample-carnival.ipynb phonemes.ipynb bidirectional-phonemes.ipynb -cellnopt_ILP.ipynb +cellnopt_dag.ipynb ``` diff --git a/docs/install.md b/docs/install.md index defa01b62..deed8eccc 100644 --- a/docs/install.md +++ b/docs/install.md @@ -38,6 +38,7 @@ pip install corneto CORNETO provides several optional dependency groups: +- **`plot`**: Graphviz, NetworkX, and Matplotlib visualization support - **`research`**: Full research stack with Gurobi, PICOS, visualization, and network tools - **`os`**: Open-source solvers (SCIP, HiGHS) with visualization and network tools - **`ml`**: Machine learning dependencies (JAX, Keras, scikit-learn) @@ -45,6 +46,7 @@ CORNETO provides several optional dependency groups: Install any combination with: ```bash +pip install corneto[plot] # Visualization without the full research stack pip install corneto[research,ml] # Multiple extras ``` diff --git a/docs/landing/assets/carnival-schematic.png b/docs/landing/assets/carnival-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d304567de0b96659f922d88224dc678f395194 GIT binary patch literal 56709 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 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/corneto-abstract.jpg b/docs/landing/assets/corneto-abstract.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1eb2117bb260604b29f6c2a457b16e0093a79b2c GIT binary patch literal 288855 zcmdpebzD@>+W1+JQc6^$K@m_&y2~O2L{LgPS6I525=B6y1f)|^>FyE~kcJhOMnGa& zLRebB-&xH2-tWEld*AoJ-@}KQ=R7sf%$YMY=b72_ZTQr7hO510rRfl~kk{Ko+ZjZ7Tv zl<&#j2mU2&4}r2EAh@u${-xMoGe}I$98CZK!UVEqOza$-K->_-gM;Fk8vCj1R!E0Z<0+0!)B0;0#y*R)7=0 z1?Dy&#Su^g`Pcu2KFzWIT~Nyy)Up6fK#iM#Enp289qR+wdjQIS@Vjjt&H4F`Nf6@e z0Dw37?Hh�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%0D$T6h{nIvoY;Xb_Ffs1+auN<31KC$^d=cCP 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℞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 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/decider-eu-logo.png b/docs/landing/assets/decider-eu-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5899d9dfa00ad94684d0e3b33ae869306498da2b GIT binary patch literal 38554 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 aU!*ZyZWPy$YL#Cky1u04%N3Yu1^ypaHbbKT literal 0 HcmV?d00001 diff --git a/docs/landing/assets/fba-schematic.png b/docs/landing/assets/fba-schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb1fd51311e92d14d173cd1b8ff890c01b71895 GIT binary patch literal 68896 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 C!#D~6 literal 0 HcmV?d00001 diff --git a/docs/landing/assets/feasible-space.png b/docs/landing/assets/feasible-space.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1f7b63477f3a31579d5827a7856d2bf42f92de GIT binary patch literal 269707 zcmeFa2V0Zb7B-w2$8pqAh7mxTBRc1Of53OW>s$vtktF-sd#|t|r<5%!XxzvRc@W(Iqf61x;2E^kxV;}Ip*WZxUw#VTFc;SD4 za!J5Dffsi;NNYK$*_b#uU$wi2b9QzXFt@g_H@bS`nt+X+Y1EX&P8^OKCnt4Q-6eXW z$K9d%PK3ye>7Rdr|C}+u$aZ%9fli)JdIG(Rj^o;n(uJ3jU+V~-4(Y!{-dgmsC0V+; zRiSVBQhAL|jjv9h>U8iW>&yeq&$thM-u#(|JM0mMoJlYKl)!XJ@IJG^JrNBf(W3Tt zE?%XS`smLA5hQATknH}H1xE+7J-Sz!T+~*F2ulfEZ7Rp{_d*OnNmIn* zJR3WZtDD|Q(OFK-ueY&}h zGknSvD5f#bHzj^jo_aYK{Kf)n5TA0yv1{^W+2+C~7oxV!E_O9NSB%=0VOU-ra!B*J z_&yx&3~97&x{^0Q>|pmLPZky?)DnsUpfS7vq$xos=gg1!_Oz za1(etdnmm0sputxKCHYv^jWTk)8rx&j~ynBF@NH4W_91}j`x02xyjr; z&gCINF4w*N85QpXxbTvOT{*tKR$YxTz+ydFILJ@wY%5uO?V}QxR%ks~>BB{ziL^*7 zKKbkglmk7ZIGlH@)Hk!Z)OaafKu}OHV7tiF&2>|y`2M8CSkJ{ix>eh-9eBb>nM9@X z@)$Acl`k^*mCr1M?Xv@10Xt7zSC_K2RZ+3EEocJUPZeIZ{U681q40Vwq*QQH7t(pB z@&?ihrwVHBf)Dg|7;jCDkB{GLIMEJX8;SL)5#SIqEc5Y^;(08)7ki9$;wmHUzQDzp zohqCz;h4S6^>CMKk0a~GZHIN2KFZXQU8FH#y}gcwQ^Ms&nNYoGO3F^@%3IyX=74W4-=xGL=J4f%j{##jtaPO% zokv~)ySNli7I2QISDj;zhe~+fbcw-A{|G)HkG4pp&)17PTOGAIXuwt>m_Hb(AdtVe zzgDxXuk$1@Z2`5PtOPKY#mdg}RsV zY?L$o6_lg>A7!|_mLALSoPU_N)Ney59IXe-$(H=)E8h@0^K7AB@RX2?Q__~{WZqsE zqq)J{-sQ28$q!H$cJrha%~gZjeXQU2P+A`N!Sn0y+mBv(Mn?r({jT34D@vJBn{-v9I-r^_es*p)RJIyaGLA{R^)lj zCSXrmv181<#!BuZFlgjHuGx7^gPRIZJ|$?MyBqB`mXvsYg-#YMS!z^ZjS<_*?mX7) zkpC0Tn-=!XnH#?fkX&9GxU-SBUUX!I)F3WsxG**c#1pR!@93YbVft>P31Rv>ZTmdQ zJdU!hm!xSvR`%YdIq$qL0^a`{Ev^1=fb+JamVedeCe zxy_@!z_LBB*$8X`;oI%tUQ^7V7r7E>7G-_39?_9#dnI^3bFDivr$_jYK=E^#gNApm z%I7V1^YcbYz_85Z7SA^-2o}$)mN~ZRIrliWNn5tRy87K%gwseEi>5(0h9!oQy-|<3Y+B{sroeE9-h9a%nQ*-Hqe7Sv`z?Rt$ z*G4og4a||CI9ru)pe>FP^b{&W4)h~md9<17lxx)M`D~m-+6aWCLY*1qqIM( z>!J9&e7?i34}SP;6v+E@YomY}y$HNF`=Jb%=R7bNe$2<`An592QYJoKL|bf5Vg&}> z&t`tQ&r%3Hph^6y2dqSw^v{p!eHj&t(_9%|G*hDIVn=U)0^B3Rw)2HGf~6~SHG($S zm&I44=JvXcr{S8S(C@ix5%jGeRN z1_4}*vMqIC&=^ae{5J?V!!ZM_^+Nh|DVObB6;PJlJ3oGa@`^n0)$&FNo7P8*3iDt$ zB$on}?G*v376;F-n|GbM@#&2ZG!S!h#ax=|>RMXrY#BE`7rAnI{9*gyEarYz;EhPH z|MlNc!)%Rp!D#4Z>yrH0^0^{Rd;n$uX8ddh2wJ$+95Kt5#tJbAFk?MS136YHFWPgC z^iLI5_|rNXA_cjC(VPEfI-YEeI!!Gm_qq!LJ%_%}X2sU%{X<}tFG!hVLK*_W&lAT} z<1e%7#l~OyJOGxk|A8RbDDW-7=29)CTq%(!ELx8nNP=G+{pN?y9C8BSq*vU@a$p4E zv1y+u@C47Jtgn~o!poz?BDwVGHjCtT6$hp8gAk?TiQaK0fDvves8vd=r&fx z$1BP3APqO*ZA$+8;ougKyX_mK;nhF*noQyKKh^KU>+iGFnp?7vYU7zgApz*}p}-HI z8Q@F+3WefMOa~t4<;#aIv*lq1UX-EX24H2SlTnsLIlU{+tXk&sx+3Pla_sQ37C+T@3u~A1q=ayQ*9ebl0hGO8IB#!rA zFZh{);>FG=o08e{Wv(N7E}v&UyA!9|GmI+yck{L)K%z$gXL!cwuzr!tY=1c`!YnpY z2SemfJih}R1D6NbQE=YVz`ckNpoy5Z{5MwizBI@}a2X2G)Hh#Qk!II(_$bZJ9|}Hj zW@vt@IE&k>QI0Rhp-~R(F!;U6*O~@stzoN=t+F`@Tq$Dj5(T;&;B%}>B)|h0-<|dt z5$~haJMYBftvcsNsdJRAK-)y`8)qgbKi?lB@BGKt=e*KzDOIN!gb_Zmr>Toaj`UDh z*g0xMtU9yJo1XhbV=~;Z9z1AQw%rg!>*wd8g>8s+Ckh^h@(?IsOY)o@QQ;@t6@uaI ze+h!@pVbnlx`uO+Z){(?0>1OOALnVe`7a-NpJ}E8SGdqg^+3?Ej5^&AC1Rsb8UcH- zQ~8@m)VaBKqvW#L+gtA&SU65XM_LyK?tyo$!}4e%(QA3skI0yLw|3)jgAIK6HzjJT z_V`niGCPQcUd)niV>aX>X$agjZsAQBX8OsGXn>vFgD62@jb2T!*5IZ2rp!!F{%|q? zqBeac%r9+*IM#FdxR;j!;V6JQW?tW}<0~!&7*ZWG?8qFd2@~w2dH}!%kmw(_m3!{( zva8%v2LY(}?^)@1vrCt9jPGv(G|4N1%D45>+9B+<>El$vuxu`wBIrAGAL8-j1Yibm z$7hYY)&+hjQFYAMU(&=!f#4~X$YQ*MFhGc%zsQ-mWfBrFb* zj)14~=u8m*dQrij9$Vo%#TUS@sb-NwfuYy0z40J)q;_XL(+H`k&cCr)!dpa6wS>tqNf*WOMVcgm3Bz~dU#*6f34R8Hva$(=;rB8Zy9N=f0 zZTfa&aX8r&^@Ab4KH)+Gz{FYlgrAz#EY-T zRYyj`@XB9&o1p*F(m?6TwXPh8#Op@bUJh5JG z-Feq)c&19I>+nlo;(Sssi&!P6C^(D3PimK2z0Pey=8bB~Az?BrDJdsHO$j=g36cEg*{;P_>SZhOfB~`XXx!aT6n7~>}n|#NT zuJw3I{m67yLv@YCbsn#|phIclc)Vdt@;-&+Bx!lakeSPrs z*>d)_R0ZeA`L4`s1Mdq8d_XY0*a^a$la^Xp&vQ=pU>t1a@o%~ev^0rdP2bI&w(J9f z{s`0Rnx+^NMwTn-?j~_3sc!e_%Ew%UT`HF^>-BtiG^Gx=!Fa>!3l~{d9dhlOh6Zbc zgngf9O=yC69o+`4mnYWk`h-?GFdsPF5$V-?mmdH0>C-(SzDov-@z%>V)jUoUFH#lv zH^n3`xKJnMf+VSj4X3)3)bI?69&`A1v+>mzaY-J;t^fS}+JZM!kTKs>UG0!)UJO8V zuY1^$2QN}n)2z*8odN5O!*w29z1EW8v9apvyLWy1XaH7drYku|w%QE5e{Er5!Q1OW zqKv@Z`=9U2?TtKT3vP6EwN=;HcvH;tNtcC|z7@b4`0N(HZV^=FkO=HP?n&x5V~fLG zA;znUTQmT8zCr?#tGHrUmgD$yMMp>0ER$l&@O!^eC15&nXD-LBI?y+g5qL(AbFSt6 z_H1w}yTu#9mqkj_S~Nv0Wt}mN@7%fip%$wMD;0xPQ703`rMt)t+cQc1*bdf=D{rGk^=;rzMf!d-oj9Cdrg_uy0=NMli`uTPii!nI z#{PFUj@0+$9O>bQzixJD^?{fLYou%wOiPw`_N~owTWCzs$C&*eKhvacZm6YYROzuR zKsY(IZQBQc&7M9_@&uH-f8yo;%a3DXQ zLh0xLtIMC86LXmPpT9$)Y^Wc76az$7D%*w_6*V+w0M}K*V*ui$ukzu5ULmK)4Qp$- zur(~*lmb2w7!_o}fB&%j{kN{;>drFt@&dofnU47)#qX@l`O%MY+1cmrK~l)FF#EDn zy1opj_Qgk2Z1BUfw|>7JUS4O=GAdUev!0H@{w`XH1 zgFn$>EO?5|s*n8+y~LAB7Cg+{yUy=ae6i}o(~(%}>vU-t-xXwKU*n5)Y1Ll0>yO7l zL0}7#u`P)7NsokULekE+Zg+E>jK01UQSzjPNaEFZ_2TIkZ4Qa>pTAd=PYR;bMbnby{T~P{ zzh&8c`Z)7`rmVi7OR8YuJUso>zEaAtez6m+F02VXKAX^uPmlJ*h$o5zu!X}}g{;;B zgQ~|eo3~$7XA`n)cOCJZv=~)tS{@u89x=Tpt?SrwBzKpWOF;7WOFWAo{BVvm*T{S@rPU9%|8ZE`({oNvWq1ZD&lXVN zgCp#0#-@qlE%fnP;d?BC{P#~yW|JCnDUe$64t=)DaGVJen|M{?xp4yz2-ZH|3y?U* z!^QBA}AR2U=hAAJ}mwDst*BS4yU{2 z)vINmpX7<5*d-6w8bQBf&SJ5d}R9TU}AN-mDF9&0(&zYd=_;Lq#-3I@@D*So#? z_C8|nI{k*rq$4FppjMU=FEp-Hn+2ZI3H;Jt>&i$R?osHx$l&nJc%=mU6D;osS5e5}XZ z*?H+RZP{^RyY1&YZMycAdsr*D2+N~-1@Yn-6j>p!zLf2P4pSbVZccW|=-QTt3l+Ob z|IX#L&~k6rpR*%)2Aw?KCQ}6F z0`Oi8npGE1bxqijlw@D6EECEcKwkv~yTx~AQHtzG()7A=1HSYYYo@QP_~;k=izPqd z?hiLoI`uT~)H8$9v$uVHdF<>-q^ztchAZaK?7zb~8l%0mnRkHy>H#cKZfQ?y*OYxo zNLNlvn@n@Fy2gp)QZUL+RAmJies>HGr!@=d-^5Lz#*+VIn*%JAFFqP~x23>2ly{daSSOdZ_NKrFrbE|~u=PyHtlono~B?y>ll z8KszCH~F3#4o}l-I2AW!mlF(^KUFN!KNQA(1f*? zm*dGGIngNz32`zq4|mx2-%l^usdDjAP*Xl>iqz7wu+Wtw4bcB|v51FD+289ovitAY z@)*RVRmL?V5b!@SU+onpM#jbht2#SR$pk!mmQL^_=c`{I zv1*LZ%(NZg0qL_IXOPEumYJDmT@xDG0KM9orqv}B?aH2XfaqLZ%VM1Cqg^}AS#63k z97cHqCS2(+;x?bU0y0|}M)x*FiHkgQp01BkmdGgYZ>)A0zjX0KAvx_C<<-@DoFH&? zj|Hihg>eJ-BmJ$H6BWfj|LvoZl4EuG)svw)XhuIAUu}pMg^3;jQ`SbXiu6f1j@ed7 z2ZvboO1Lk^jx>m+m^N6X-Ct@WoE{41SL5-0U~jJ=uOlFsdRa;7(j|TUG8O`0UWFT^ zbUhsz^nlab9>>Ilgal<#S2|yZfarrYx96nM`zk(}+Sp=~x(9+eE|y>cxRSlA(62YG zESSG03{Q6{QznR6wC*sKvg}a3Txi`hW$)@b*$J%nYy-oi+ja}zRPi6bQ~Muq9R^oM zO^MP(31Pt!(pCyKUR_&fTqz+zQC) zo>Wsr+<5b7535l{tW#%qK5Ifkj5yJuamqfaxxS0T=CIy!B`>RU-)W0h zZBuE>9-YgDUY<205Hfu#T}9;KKKygi`emAa{;~eWF4NlW$Myo=IOGt~)ue&6=GWk0 zn0jjP0_2zbwDkNJ74`Xr^jt07W4d7iuC6_WGAo08x7R7h?6e(@xVPJBp~XGcAn(S& zd-En9>k`+_>;eA=T176TVRElUMjqUOi94%zU}J;`2xxmfgbnAvB&n_Y-AAjyp(Zrn z-kGSd*QvK2Uz+VO{{`r>vcznNCeMZqc6MUU)|Bo)SOK~W35nvctvdmd5laKCZF(X% zK9$lgOHmg)Iw+LF2AfWGy<#`Vvfa+L(V`A!Wkg1iVR?{pj)yf|1^v+K<2MPEpDa?0 zRKIl6TDL6EHp`Up4liZdS7KB#LY$T)68qBhR8#=;iN5jAv={q#CMRv#7%%Mb<>@^y zav>|=G#>2{Ha+h!+4=O{)q9hYnwnu3T3gRcEVdW9YU*wM_jnf;ss{acAAy-d9Cs5X znH8=HlPC8zG~3!V)ukksK1GXy;;Mgb$A#yrn>H0TI8XOx3_O-O4>;`)PeJAxtm*7J zy&Gq1M(zs6X{Pu0-(17{-hcN=%c*Wa5sh{()C!X&@Yky6h63=MvrWVjQa!xhy}D{y zCW)q`FjctJZ#I_GZJG? zI$KMTr|#U5+1+C2`jmg`wj3M6r<<&~-F9#@&$MUHj4YB3rYkrji=`qXp zXi-)JhFe>jX-vyp{#C+TVwTuyJvV%T2o2G(%p77+2$2oT(h6=5j{`3&c%-0+kATdLyf=# zkW$-ouGf|CnMK>?-ENDP8F{Y^Y8q_X(q0_sH=qxdZDBMp?r#?YfX{u}4<wPKZ zJBU9aSaRU7a`e({MQ#t^^;ESx@@(B>r@KW3r$621wa)vzG+^My|4f-Epr<66KQw2O z%!2QJ^*Mm>5O@F<{H_xRpA~sf7nLO`r4v2QH#CNN%V!-`6crozr_D` zOP2M~Gl$@V8`z~EJ-;=-(e9^>zN+y)$8Rdg7#?+q54(6y`HLL4-`I~e?e(kvIjXUZ*MPJyh!hFzwZ+9U-NV0 zD0?n1f^dKdp^r5hJ+pwcb#iePVn&w52sNR=(O9n z2}@_^<{catW;3S9h{AaEQD_z1#!Qy6%jSyP2Je5FjgztI?Jm#&l>v*BG2#g?UgYHo zo7RrdH8V2guN<)lIt)R314zFQO0y&Fk2yw?rGjrkY$>v7$iwQb$FtjJwe?0&n@Ztp2s?7mo{vhpF5~_et9BG z%+YBo_z`F5(Kjb2_YDGGu`7xQl1+Z-4cmXeY_-9*569pFd>qIx*F zh~Z0`^<&>fS~J-on?zttmnyWRv?Zw(E)wy5D0L~9g3@nIAf>7-uc~_ex^8r~%k1pH zySsA0SWDGL^Na4fl_t{_)ubpuE9i4nTXvFJ*RE zp5)^*uL&iMnAQb`3gTS>g;Oe-(Yq84;u>%763+yu$?6b}(~)b|M<; zc*1yVOUmQNf$8Z1EbFj9ymd7>18$-56@Z709p6jMfx5a2z97k0AEQ?o+dJ;+nqRO? z#k=%$<#N$q|>AIo@CHocQ?{67z5x?PWn6JUZJJ7F0%qh{bzHw^T=0ZK4 z!o}K%27IpArr-1J-Cfv@9Q0f^j}hz2ky{vNKhzpm5l6&(EWP(TayeE%qx;6dd5;we zsWFjg-KU=(%T#Q9aT{V~mJC)$=-BE;t%s`B65soWD8&?bx{oN0+qGM=l;l`yKd*hX zr}5FA6W3R$eSx{TQBkF(j`^8|o>U%Q&D2aWX&oxrpfJa2^7i`ns;WzgH{Z6jRPoDf zPEsZw)F`1Ujdf(HCTM5vWoPH(6A>A=D=*u-Pp?#fHf}&&bo|1-kFRS|POcT^e1RNY z9cH0r4fhsP$u@nVm(nFY-5U3%G|4I{os4?$pgG$-Np;OS$vh{g9I>qex<2XpVmx- zj>|b(F+8bj)}`rP&aEF~J8C>HH&}s^SQ%*n#d*_xB~}{S zBwjk0<4ea{Qk5Qurl%LW-~3s%#3MF#pS)JguK{+GI=bB*S(g%BvZF+{{3)QHEe3%# zfY$%r5X(vvYQrH@)2OY;-Kk2XPq?4i*+*M66~Z`=SB@QD64uvGODidX%ht{B?ja3j{hycZpq3n*K22)4 z49?Lsc9xv3-89DLg5_iVcJR8o`<7vbBvg3h5t~Ea%8Yq`h(Jnwzi()Ge0Fst>+?EhomYQ z**QAe**S+Lt5*>jA(}6-yc!OdDZCm4!*A#A`Q_K)DpLOgDOV`YwyZ!UbJ+4dXC2p?= z`}+q6hZpDdS(NVyxk|>pxRiSFX=`div}jNF++fE4MPrPzPA|0-IuBK6nJPdfNlP0g zzH{j*@k~*tOcl-(JXcP%B!f$n9CF-g;(_2)?-7l(XhDOZ{RGB{n|onCg{q)ep#I{h zWAbrh*@ZFS<dK9bRir<5B9%+9 zHh;471pi4Wtt;1O=Ai@^6+=n*>&}L)2i0ZmoS-OCNxoZaLQ)K+lMG5R*io`%$e^d` z?ZXhJr&}pYRGo>vU0|;lwZpV@r7`-7e{F*7<7m;_x8egNleO(>Zlkpk;?9c`j~6HI zKh(|mOU&WG!Rs~KMi(dl{<|hDfl8iS{QH-xnwkz#XKQ{NeP?puz69T`G#ZCU=*|-d zFXy;BS5;Ir1ywa_gH5N$IN!QG(hzpuZ+S9T=XLzwe+LH_Iuq&R9P6$-OzUU#&yT7i zpGu<rdVByu@FT32q4Li>^W7;)!# z>=XYW0Y6*_KJN&snNY8*a)a!&>Q0!jkSz-lRK!9_vz)Fep96(xp#)#Yx*MSO+3v5cZ?;@Cl4#tYmz;$^;U^WViG4LG>Pd-Y>OVo(*ed;K1%~CmpgccZnlx{+EBHeKEVwR^ zMJ0nNgVRumbk~_SDQVDfAL4k$I%L&!dqNY;B^Wpss@osNVRspg}_G)tkeQ5_17w8fhRJxPc;cP>H^2bTYTki#nN` z0B&)Zpn)WfgsWV-g-PuieR^%`WzBS;0wpDqk|ia|cu-%8^OpI+R%3{DMdSQakI(bth)9lF!RN3udnaBbFZ&3*D=LmxOTFu&{^T*M>#na zm0>c4GE}MZ;*olhOPX$jzI!pw!X|Q1NTjS~AkCBUb+K z5o#mU#;}4t&je=OVRuDk`!4@=rJHvbczF(-=ifW{&z z@^skp0_+&TXC1IOy5TmeseLSZKOZgY*nlsyY02|*dpvinV+9rGr341O@x331h;?`PVm_wP+G=CaR8RFJK(hj({kesO z1;v0{ok&^Dr!)sX-ED`WMG`d%%va%_0{RcOYcC&^#6;p2Wv~P5*M|uzR8={-8$Ltm zLV+2Kh>CYv3J3(y>By>@gWeWUPA!D52n>Q!H{y#r-jXn@>KFv-*ShoVO|!1hvv+K1 z@>@TKoI#qyGS-O{)v$w_2P#;>1q?~AMO{EtC&JpaZcxj+_+-rc|eQMZ#$13g% z8MS-xfq)rEvi1Ry4f*fxv2aOxN;SYJX17INvyyqW+Y}()IaL)rsf4Peex$kg1JFqZU-ri~*I=_5$^RihVFuI_O@HX4;nEOZ$rnrJatwhi)A_ppL zfV2*s+)hY8Y=C)Cle2WJjc1n-QFt*cqtuVKnVb3qt6DJDkG}I8)0Cq>&g^H~0)_X4 zd1Jg>(EdjBR`YE&htywOeEQc~{^L;8b+E1*g<~L6e1s>^f#p*GogC4pY@ay*o)uJ3 z%hiEOUtmiq(JC&#Z-x@;kCg?hjN1*&?#0wf4)r3$H6x!DRX&ILD1F^!$_NqUdri$j zivXwxu5>B4yDcQzbKp0Q@&bgDS|r-{?1dtgjOkfO0%mIayt2ej$A)6H%cn29p~j1~ zSz586jcJ#toh+;+1_i~}y{sKE;4!r$QOo-1{t%9JLEG<8Ks7WtN=1YZ^5ZL^$R?@8 zod*gQh+1-7QkpO{;$5*i9S---`@-IXP~^Yj3bX+oMSc0$%~U`wYys-x=Mi&b(FwAcRgBIlUTq9B};c=*!yk{@6BsqJw{ zRgSZ$AHWdEHIU?j3Z{n2_2X*)aWw(t7!V$2U3KGUOeqexAhv1v?S6Dv;q$Gah@_Mlr>R?=$;B{tB8HS*&3&H_c(@6Ex@Y)|fQj!aOT?9UykV{R+H? zNlOwj8aQ%L>My-vBb1;G(EVOH%P$6{GkOqYll;NG(u&z;i%BE15k>(hDJXak676t@ zJ$!u1p|E$)uzUm4bdNPF`>VX@gLUAZ)Y@kmDiU5yKW>hd#HVG89ibnLJ1Pm<4ndn< z7(N@P;vyC;|Ppm<|S9yeDB@o8(Q07MdowAhcRDk z0dTmLpT4*Fkgj6FV{I*vuWbe&S^IOo(C0$*gxO+~O{Q!o(1M+k)G;s_*pGSp1kf}I zZj-JU?Da9Kc&QXcLuOb3G;_g@E^8%gER=9M$>%|sc?-HmW^T5a6HC0I;7C{gMi;9E zv_LV6|sO>~>z?KRLFUT-;A)rCnxv~rZ~oBOt}s@~jO1Ma3- zuZZt3(}p^VV)x;U&g#@ORG`W?%UET+!6@7>uxWMA(u6XKFsmt&BX(_B*tZa~DXv+f zA6HNjeJIxJq3^Ef>j&kvnAIYv6N7ztfZ~LIxt&i(wq#^@@AAZcWeglWK55+ztnqpN zqfjo&V}U|&C+62Kk0SNY5Ie#N3Z9{>3qq|)-1fz&M^*Si>sK>-!R920w6f$d zHKO)0LYa^c1aHv)2yI+;DZo%gkC-`zPc8_xp?-vmqp(#H^h>7JgsBW77d=cJ!f>x( z4{}8S=0O8|paaAWJ=Tso+pVGb8CJCK_du%4whPK(tRspx9|R(8Acl@QFD9hp;HHw>u2e7+ItM{>Rbf(~3DZz>myl?ftg%LL$g5A*7P^Qfd7= z%$9IkDut65p`64UNMQ0(DZ=&?*7T@=A@?gcF~@digPag1s<8KCe$>cO9(#;Tk^g8V zH)E*+6nX~`!ljF_5H&2|pV5J1zV*;ofzp-uD^6&MDA7Wu9h(we%=9B0pfF2OCQM7YAdEL)YX{Hf)|%2n`<(+OHUS+&pk_ z1d6F%Nv#PMsnrK}V-oKJ(HaE60)_Mvy?)hL;ig z;72#~>(lW5=R|Oz0U9*S7HJz}G41ccOmLXebWQTT@n^&f^yrFg0MHp?+Y(30u|i~_ zHJI9OhfxXE=AST&l?@&+2)SeV=~4!rI$dg$Mp$UkH1J#qaeyu9A~rfiWa_Ite-4YPYuLe67pmKoV@@J9CL+p|-0()UXW_I;~JO~tQ z&I3CiLL;u15^E&s3+V*Fo->Z6`&A7w@2q3~F_7H{!kvV$#nCoXWaY>0Fnj%I_pEaL zzbnQ5qGiU6NmVh~OTZ)v#n@T!iu?hEn+YX{mq8=~bzdv&P}VVD%12C0Y)fG`pWFN^ z@P-l0dGUh6dcc>w*GZIndD6 z7wBTkGv@oz!@T;yZ10R{gFRaxp57juf?^Fn3%&Vdx(Mb!e$Be*Tam?7jy4GJJF}C5 z5z@UJb|}Twr4%)}#i8_59>{2j#c9PNa?2GHIn-e1*D{*9+2~J?rx=H~7v|jF?O_IF z|K0_J$G`2b_u7YsBrMeHvq{T^UDGw8twYtx4|%dvFbT%)*kMHSSb<|*nt)bZndX>xq=Fe+4upMn9U}l0+UZAVpgZ##IeGxG30B}F57&%aD4z}Wb2NZ2L zblo-VX`jiEo50~DR?SsFOMT_7(u~G&gfQ&{gaOGKK$*1zaxqcIkU?_9_#RBavJP(s zvDDJc)lsyBV{I^$E%ovox4Wi+xzhwsLPxr?CITF;b#$+Shd-C@!5R^3C2%PH`9Ie3 z1`aFOC2FXz2_uy|8$b>f3OJbpOadgdmfDCbKktA|o zFKdFdC5jAcFa}a|e9oAiWx5TS*8LKA^Y?ToXc^z>5|(HcK^ho7^_7doWO(@0(-1;yC%W*e`!x|b#W=(Sw4pX9Pscb zSf*{bFyTiUmm{EgX=D&e@FHmtLECHrh*@#Cj-S4dopHFse_$JDp+ADKQ|nNb0H+tx z&(IZXPL2k~rQjYpMdeL-)542}J1E){p^=O=SW1Z#)AI{6lBTfF7W9M6{|J%Z{5*@v z@N4F2x@K;)fij&v&bE_LcyHqp+8_9(?dhYpX;!KC$f8tO@`dwGTs4mXzJSARyMYZQ zIFXJ>4o`Rn0dB+|Oq%e@CZC6)nCNF2G_9ka@SJhAgcDT23>8u&4a>g0X_EN?+Tb=G z&1l&PJ_WIx_45tbDNkc`^l9uHI@2K=1de@qq$-({K24;>lyLTrOkjOKxY$(_LeMg` zxDh@$kQPlgL1up+JHu5=4>K2$5tw1+I8WC-K@-d1^mLC&UEhyo@ z$fq&$5X>FAFwMxH)74BF34d8Tf<^ag{D;2nCbGW2Hdhz(l^Gl(2V zH!*4un|EZXErBgO^Shol_>xv7mZ34nxR1>z+QP6z)v-}*_7GPtfSn=XnB=^$VXI*d zCj(pN1PljiuGi~CzVKyDi1v=4XaxGq?0XK(X<}UZ_12*pYtX9&NM>gyV0naP1q0*J zq>i@$?zW*RQvx7K3#UghJ^XPn8|kMtziPp$Tu^^jmp;Q+a68_hDK9p%Od3Bp63W2^ z$E`d}h(&s^{%UGfT9DG50M_jTw8Gh1`&)? z)J$~WzdeA$RU$Ls*orvouLSbfaGLKw!5cRWJR9ThH>12lGH?UclQ8*8cJv_A6iCEmzJWj| z5g99qE&Ryu@ApIy89mwH-bq9yH)5lmI7}R?ACAK;7D#0!pwO>Xmx%F-P4S3_t|@@U zt$@2T{n6o7dcy%{7OjVqkRcS|E6sseIptC#mT1Yl>L@>sMY;maX*9#X*vD-zV46)d z8|YGET>&$l!G8)$`{9euNGTi9QZ2w5jW9^RDG*Ed{IwVJgYitW7CrOu;Zu};4Y`ZW zt^jc>B99(pRO;KG!LA)gY^ho&IR#PAVQ}(Snx6Rh97+KH=NM(*?;QY40?2Di&CNi0 zq=b=ea!H6*4>2@?lByI%hY zS@RcIQtPz^8pY?F4hUrlqd#+0u0&&L;H)|-WY(Gz1E9VGSEe1dg+(11|3;J}2fZ#( z*lu0$5*A@gkGz~>dg1Y^5a)*0&yB`1p(J1x?S7bA}&tSqMlWyPR4;yg;e zUQ;@p4k>=$t)QRG|#jL<_`+bf9yV>!x7{te8_0d3bRN_hDy~Zwy&-K%9dJU z@$F#&PQzWlU0KOz8hEDu?>T`8gT{Mch~VdYT=FRLxs*sBM`K>%5h<_19E!t7@4qSW!qW(r?Q%yLduYlmssnGS+87!N1eQyjp68Pav!;jcFc{j|p zO`p!vVt}b$aI_Z_m+c7w32=b%E+xX=CLE6NpOL%~9{?i^$xL~aP!40;4#jL6jY(r6 zlcm*(Y;dX)ZRDSKP!f=`sxs4Cwd;pVFc~(UU=pV}VkhVig+6*9&lq$a;|CS9d_XBZ zOy(${Qs71~01BYN>%9#xm;v$EY%ypzDQ7qEP!U5RT0BSwg0SP zI94DgRVje4d`XuHSmFV+0P`2$NX+msGmaR$u(kHK(8K$EJ2X&E{WuEn<&h3XyS};q z_SBLwHsaDI4AySFxCp`$lsm-#7(jYos6B8PA%|jBl;OA8riBolihZC1iaV}ua|yx_ zQ6oMV9Z_OksG-*r(vl<BoZYXW$ zne_*e$-~0h8a$x{l+9u^BB&&W;z&X1#euAj$=TWa_cz~bIs31Y!oS47w&|nON*My6 zP9;%kvXemfz$T4agyw{==cWqzzCvT89%+B^3`eLyRA>bZoP<*+<53lp@Jd+7vMn2df$%$4 zw-K??jFdv*YZAf0&y%FNW9=fMQ){}@k)aH6K=VEmX_7{UBruf|B&V-!`w#=^!0qco zCSl!Hc{yl4fx*w zj@ONYMrhC`PNH^WEJ*??Yw8Oa2EIQR=UWA?pA@&5hcEm3d2@&hg?Jy+F;w$*goW-f&PWI)9s1PKXL3y)rxVIqt2EfLww>O3$J2uLF`C$vHRhHwe%3lFUkY>G!ISADms{E=AqseC@N zTV?OV`=8O#Jjh152?a#+HX`6e8Z-cvRxk`dK_)|A4IFkvP!nS;-T~LK4&xEINk4!p ztmG|T#ON6X)ne_BL8sn`5;ptF-$RMKV{khW6H)#G#M1{O_E9tm70VvwBd$@tg|VK) zlFT@#mUjKZjgz3><7@3)Y3Kngi#R+8N^0RWUlmx^lz>~8qK62(MmSuT3vWF&ja3jj zR7w1?7ePc+iyMkaDuJ&YJ3hcK{e8(g?@~0&=aFl^*0&L?$S@i2dLKW_j96AS7)ycw z_2$if#(J->wE%D4yg5TU^eBXlN%^$F0+j2`m1FAI2XG79XZ~0}j6NBBfai~8vS0tj z+w#_rv=Z*{=No0fT4=}c&~yv8u{%#iXJ4zKkor7~n7sfvW6ke%6{P8ZMjcS*4Y8G# zTMzBMH}F=Fn>VuyLJ^Gu`$YI)@p*Z$IwWkDKjeB}i}eHr1qVm&7xPKoj5mI$Cuocqr|@snMG2Kq&(dIo+9*mvRtsGR&uUTHH(8B-g?VXmpXd=sEWU+jgk<%u24 zHU8)Sm;mkVI;;teXs|r8hSTMugx>==I{de)1J5OEYb+pR z3Ialw+Vc{?qJ_842z!wx>8(BE`v-k8iF) z759o%(5Aoj;DrdD{6cYYch>}h(wV?r5G$DROM3kSqBQ!K`|G4Nlp8>M>R^z=X49LS zcmKQwPrXnb(NuRtIX0Wz_7XrYA|n`eZ7DH4-Vg>RbYYcUU?CM2R9)(%I#D4Z1i}JX zZW2kSV5@!3K6SczLOIE=8ey9f-t167WDh9{1|nc(-0 zvxXq?Cw8v}$4NfpLm>rl?mjLnulTwvD5wd~H`A9_2-%t2gZ+PkN}A|JFS|L2*`pj7 z^t+pOF-e8@tA~QYHF^I&(fK+rFUu5gObxN%re>3ii+j3PXpDejs()H?bswJI9o5U- z%*}mb{^rvIzVrVdUvC0Wb^5*mr$#3IVrG&i6%`U$N=aF(X|WWcY*|v4r0lXg+NV@@ zlC7CYvQ?7oBq7Twvc*B!(&2~`2Z!UmpYQWEzu(`y@B4iIpZPcanw<0fKF@RC_jO;_ zbz5BJ8hj9_RO%G6=`#1heMu(HNfZxffu+ABJ^r~NS!+@9GTx1g_5WD;TLZmrgumIs zZu74{ZQPSr&CZFc@tDX{9LS4~&t{z--6H}D+9xNv{B~6KaLtK|_aXCdQ>~)}-kLt3 zsw(0G9t>h4i3mWdnexj!3e#zB?K~%@I(;@(U)9H2mGXK2`JrcLAcZU8C^;C`4=iz{ z4!SEP2L__7@dAB!_SLHdJ6=*$6vfe$9fZazut$|mV}89{|J;+B z$cTt>zbuOrX*&1CxVgQ3SIgXIPA$@WSET_|B_O>?fIaYMmW36so&;PnnsE5K=&kXV z<8-5kZ`mW-YHGs5TwEs9EaP8=IsLKv$B*kbR0Qo2=6@xlOGU_5l%Jo^kI5n)@uUh*<dhO3aV@FtBMOc<@|;Qk z>k|egr4*Q@rh zj4{`uvO0ZWhx~8AAx^$}6}2Smr|?Z$y8mBqxGLWxMW-%K()`sgt5*vrjL)12j+AOD z$OSdYhrjFY_j##wQ{Gf|4H?IUhN9-$cwxyLLav_ox(gztrhdRpv9nWHI3NIQK${+q zcKVu7?X0b>Uzs7b_g$5_Lih1=r@zGPXaK`e^|>}X00=7Y-dVpD6bK(4o_VX0NC_Bf zrDthdS*@0pHkSg;XN3Fb{q+>tUb%n(1kg)+dtC*;Q(M)7Vhu9W%&gil zTC0yX!++QFeXzImt&@JxvlJcIscbPX{C)N6UpIRDD8+YnhLx10*p*!dD&=4M$LZP} zj)g^88ASVEe_bhIJL~=EJ0OVPnz{m%2h{n$cQrIjz|S($(j;hyaQalFkZx&goX}6y zP5Chxp@+4ihMJE8F61=|9Q5)VS!QjoJ}ALM($n*u&?vv*)L~p)7!m5igjpki80e%N z&$j*Wx6DZ`RiEP-Kt9y(dv|TQ`h@XI|8>2}ov`%xmLj2p#`f(9Ac`43v1}PZ8PzYl zyjHO@t_v}l_QVrbYJoF17h`R8M?7P3O@xcLg^E(VzNNyW^EVRO(f_TfE>=96P8pH# zG&OcC;`FomMT&hq8aEGCg~qDqdeF!EZu}=SAt2wjZp{uce*PQf;S`(OzP)_}mpLrg zlSuL;B@qU09j~jc44e8_l&3&DPTUgE1U8GxF|)Tvtm_TlKFv^=+;wMuSl&i4C!U1s z$`l%rX8rSA7C9e&_DoW;B~#O>q{xoi6RbT_l!QCtX`H?jn zhH0qa4U0BH{kM)e`oL;gqeF*$@?W^x9C-8QrpfY}k<|tdid}lLO6uc%nQF~>*`P;u z1-bJaeIsRzg~pp$SAU+I<*^hK>rhDy{S_)|kGZT7SESa{a&bW>&{DKlA5gWb?>dIq za80u%xY@}F{MTl9o#Sxx<^WZ@r;@@l?|Iu$b|qRa%RJVT0Bsl1+ZZfHp?3LPA0SB0TG#A2QHY9gh%L*@&QO_^PNJo13D?yry2gN-$j0 z2abMzTr!6m__I^=?nhKLWgqw2-@%c+sw#4;8za9z;HB3nRlQ`!wcdQSckGSBsIb#4 zE=I>YZoJTg5`!8zz9kli4grrXEF$DPqHjtZgi!}y9|oJUj+U$3gVq?-wVyk)aED&` zuhMn@eYfzdK;@7GhHLU8t+|;2esy>HX1LMT`VJXSSSrfY^=WB_cKSmhR5E)Ml;g6p zn>Mktf;wbGMF9|lI%6>`$JzXkA5jt-^7lhjQ0r@Hc)_@a&MJ68)*)nC+KQT_lE1Lg*G$>uV?R|J7~Q_=(6UA4`>3;2Jy|E(%Tfd2V!FC z`z0mOdGKUm>3?aw-v2mWqNh;0esZkFG9X6&ppwfbsc-BNH_r6vXlm+*4-FED>(o@v z8`oQkz@!uH%^4R{F42xibeEPQgf)~`&F$(hz z&0ZR8*81LEUjbelnwq&=Te%t6y*FG>8GunSV;arO)KsMJfYOx^>?tIK{1o`!H+2zID{K%4gAJM8T2{8ZqVZK!dh@BAHo9Bm5=RE`96spAX4@zTNz!0}8= zCKHs~IZA&H2)5@YsurBOM3W3@_rh1^@u%G=_0qa@Nl`gUIUeaXFVb1b$%w-f;@ojTwI9RB(15F!t~^v@b#NPY=G+#5lDh}5bjh207GGbP&^6Rx3bm!12Ow2 zy1Qdp+bz3L*FH*2S67!h#C9jn{HrCr|6{0#e(M$V+QFgoSvf<%Bu1ydbfmzfbg-up zi2)2RB`0>Fpr(!RYSu`R99$)TXla9a>uw-*?6m|9z# zb&U30OxbJEGiZWP->_g^1ghJqj<_Oj;$;C5b;K=zU5W@JxomIL>0@{Cx84IdVqNv1 zG&(0kY5=buLnuoft3hc3dMSFW$BduFBN$E9f=6vJs-%m)0u+|mq^)D_)s*f#1 zZ1&`+r7&T1oY!97{}AUp^;8-9yxF{U7>daF*L`w94CI0mVy*FCntxl_*l_yvkPeq; z&u2Z<%G1BJ81)A>adXQ6mHw~Z&w2Y|w*}UMMXauxWW^hIcw_|;3Bqu? zL*1sBLY9{N!GVhk42h4BJd>GUTz=1b_0;ARq^C4%{{`G)Y$jPNNwzMz=a--UrWvX7jxp0g! zPCQ+M50GKy*h$T!G=MkxB$e_JdJG31ft``^@~BJhCRELVpGNCWX%O_RWQZTSw_iL|T`r;1R-> zbWwNnmjAK6M|-w=m#c%7&8Y{uo}XXq9}5ZA{qQ%u{!S~UpO9YlDNvjQ1qC;gx3oK* zuS`*yUqT!m_yo8e5FG*%0L19g)IW5{Q8KFjj+CMF@von6h&ws)^Q)^nbTAxi`?&^_)pDdyF5qF5BtRrGqC9PFNmyr$}O%Moh;%Y`@{rpr^W@eKg z9R;t*(nST0#=<^dFY$0D6eTy5)}$TVSkSm3x2Eb(B;NeegZeFox9&Oujle)sfoQ!u z&8ppa2(nFXh&#CC-R*_Ic`>;x)bFf)Hi^H})_;GeU{%BC)>#%|DJhME!xub-w6kq( z-l;He!|mC1@AVjb6-dDh$pb|m_>(1aGQ&vqlDt+CH9Pj*3PLmTj#c;Nqb^olO=7#p zHvysP25rN#JoDPwOgk!6`aU(q>#By$WTUmUbS&T~$xA9tKdTh>J))(By8J4dTH4y$ zFz0AbyiQ7QPa|r3!2OSEAfWIep^B_#XJ?*$5kZRHAouse#HfACvC_&EeF!CH@drYvd-)1t@{3t^K};K=L=)F;moFUcL)RnX z2(69bzH_FZ5VkxpBvEx||Ng~`rH+S8v*v0n!H0+K3dWf^-(sD##I=_$HB3Ei$=9o6 zZ;v`Jpn3X$@*91#4zzcnASZgK8C?T|CaB9rlsAqYTez3jLmgZ%qW%C|zjRRk^>TRf zJxffS?RodQ-H(oL9PANYA!3o$`S-yv)RUbu3ak=ecelH{`;_E{Qz(T^?(Qb?y23(q zD}QMoaZ?IH_6uX*A0uXITup3y&bbqr9bit{(8V!K1-;@xhe!JhNy~t$Us7?Aq%e@V zob|;Oj5f!gL_|%1)8ni=y=70lxK_lLjqs7-;k|@tiWnx^2??m>6X^ycuwd;qoN1CL zw%I@b@GQlJ81Va-u4vAR25YxbNsF0IisPZT!&G0d-Rlw(8q_&@DfK0DGLdqYPfyYE zSpnu7lyNDn#mx(I+}u+I1YRJzV_2gJA_X+l7cWLPj*07T`2bJx){-^X&;}ZOFK&vNBa8Qr>C{3DhAo0F=_x`(n3CGC_YgzlkoP=f&09Vk~j)O zslxpHc~A++%ZK1>kX93SZ~oL-0bhCCN}ubq_x$IZ;a_xAFX8{`r{hn=j>fgVaxuQQ z)2*K~3rz+IodXBK_?R|Vcyd)c#*m~`S!T3+K#o1=*RQH@CRGpeobMT?p`-_@DAc&t zl9WUwIK>j92e-Q5H>Sp@suJMVxP;%GA?-hY;=r4asSTOtfF77^s;Ed#GArR!ssm%K zTy(?UbDv%uiQ&v9SBhjAyL{Y|df;YY;QRMObL*;3!ovcww4Rp6cjz`n0=@$+CX2D} zTcEz*Q_x7fIY3ojnJrtUsY&@UWAJ~z;>FfnXjy=D;9+6=j#qjQ)dT!VC7(YY+2t`Y zuw+9r#(w(i?CNLemJNzsaVk?~JPmy{qoWeKom13hKYt$sN11bYw~5->kYCI(dqYGm{Sm)~o@HMm9MqDMdmYQmOLK?ppk6#t%v@ zIh#&AKKArfkq>Be8wdMrJbe}g7Nns&{##QrLV~}4R}YxYaR?1vEvHph#=U$gj~y}U zXi@GVo`nFyCCQKH+h6)k{q;w3GZ0qUmFh{2DNY@`-8GZ~W~Rr@3z8l`Muu4cABvXu zfzh>}->p^Q?;@7*PS;o_2`SuK<0E5n=@ z#6zFiv+zDX?}8ZZIoHuY}NdRB7CNKGGf5fTc}b8co=U; z>Mgb;nTUA-Wd(4Ez~T?Nc07o{+7ka3IZOaa!j1C!`<0ko9|=e*tWf`!8@@aEe}EM{ zsvDDuPV%$YQd_8m#O4)?4$}kBaWJVo%H@O&0Ich}a9dY{P($`~W(5~k3*3#JVk4pw zu$AUXXx4M%xJ_>Y(Ez>u&}o9qMoGmi&N>dAxC@=-*2x;}->=^=JDG;{TJzhK)n4q+ z!#C6=r#hwqjWMCwQ97o093DjYK5(G2)d6OPB%r46Id4@8LF5;($JC*caW+X`O2uFP zrBZ0@W!XlnkM4dtgmU_YQdk0^nQb(zG&lI}pcL78OY*!Q4B-QHwn8ew)Xps#v0UEq z5k+nhwRztWlJplq-|vbtZ6~L+##e(^9s09lDoJZcQ?%|Y=n`HAV>a^w4PMI88=WV; zF_mWDAo;+ONuDzv^;uIq!jspIc@;La8z}dK=XG**SnSkTO9`QYOlvC3!(4%<{aI5K zEPD13AytRz^&k3Km9_Mf+e;+yV8`1(P;CJXJj^>cn($YzqSg8-u)46smD!x7$ZEn0 zgUb6xBo$1-sZK?g_`9F?XL)zui76qqw*mxX#e+_7#)PeAwbudN(Re6TUE+5Pk`?mMis4K)Ic`>!t=JhoLzOu(Psq^pIz5inow?up0OXUg2S zh+uYg247#ya@V60qnPq_lB8886K)-?$HrJ_l~D3X1~6E?qQc>&(&O06HMLVmQodqs zdRHVlb@dkC2X7i01sk_}BS~*<_Ls{hsbHknPsZIZ0A0ZJaFtC{lW296n325G7g&O9 z%=EkH(`R5%i##^%K+Yp#U5!{4kI;j;P>`w*~bCn+7=WD7u zSv#X}tq;r7o4pN=+4Q?$;-}4=-?nQ5C{NjS;rFfuDJ;d%~(`c3{w6xN~mAdcZ=i0HF`~O%6@0C4tX-~(c!2|7>dSzVs_78r@#Qxyd zBt;J=TJN=Az#G7D;A0{f$iQQKSszP986~PzN%@Yyw~G@&AN!JoH5taFn@u_sZ;X2| zAskJ;RR$kKL?zpRil0V%ONP2D;O)Re)W#&*2$J)3a^R>H1BXRjyR)7iaM8nwHeDY_ z(3X1+(fvrh+^Qky%Oi^FL|>5s_K0}3lk}^A0|NF7*&ZCijH8SvW50WWi1B6h0g^DD z!Q(N5ofEEj6ywMdf+hOvNQQlm+(^89V)>A$JVn;vo&%$%|958z94;AKSIHC%p5_0)< zPn8uIQIfS62m^__Y{95l9*KLeQ?cP*LiOymzC-wnUr_zI%>APRHxp~C?t|kn5^bO4 zj&tV6aWUeAaeUrWzp4-%y?7!!$*tS)3a@93R!N^uU*TBuzr^+JV+R_%(624!={RMvbQi#5n|Cru9w%& zG%b8cM0Ge$pEtd_h0U69LLvE&2^=0t`^lfz#i@drwXS`iXxOYw-+#Dq3ak7qqcFXG z2c0SES%6g?$t1JO=TsmjvjHOtkqA#-Yr~Y>r?k`&8gYj}&xnj0Ct3$x^B`C^N%~+n zh?mMTjukK}yS59<$@b$5IJck7K^^WC6ksiR*R+2I>AFBlca}^L!_6fUTjK?De*?@% zP|!9b)^@!D{fUWPUA{xJm8Z?bK61b3=x$?g&JMJkAxmujU;nT=zE|H*QrVlhKB;W6!l&WULvKeWnGoya zT`N{W5Gt*UL}EO4Wy!O}c2F>1_k@F`&4h`{)1~N{gv2k18H+la5!?{B=gg|!w@B$! zsf`$zfBj|16(PBkDtBaGD=J1Wv~O00N$4;RJ@7>7dET$2{H36AlPX#?sia-}i@p;Y z*eLvZrBbofBU|}GeYKgfQvh{Eqf3i`Y`HMuqi|CnGt-@D(aQ;`09RU1_TbqB%X_b} zuCT=738@tAV&QaIR|#C~;JzHziKWDNysz!Tagt`LSf} z7IvO#oAxKTK-~cg@uBYp2x>JjNXD5&yVTEH2?a()#^uJ}5WJ!Hn(< zL44UpBVPWg(nV?6vO_Ql6iG@nNj7RPG`sn35dBdo?}Lz#GW)$2Ym?T#puBTgMJZP+Ky|z*G(kq@^8l07L#(1=M(0( zBDNDY=wU4C;9pqaaVoK}Jtil_9(6De-3cSLTJYH~J~}l;<~YW`ywI7U2D8HDJB1lV^UR6X`9bbWfRZ z6sf~C2q}x8NxGHb+ULYKtZL5~oj1D0CvLbV+UO|uI%*)b2{^4bX13JYb#x+_6uQh! zI7tnwfmW=U$#PE@O3dtK6IQKK)fH97-6`QZwc4Q?5KkcmRRsfg$UF}(VEXJ0n|B2y zDqBlGt2?oGV-T&Ci)*6KO%YqpJceNmsEu#ZLrOi|@qTO-l%vXXC)sui5eE^B*zsrk z6iqdsms9i(qGi8IO%CtHizzkA*a|IUvD=wR)PdtCh>dVw*<*QY`HAJg5yJ5{_yx{v z+kv2P^EO%$q-gM?kRtto$!Zt7+TyKDp9y5M1PW20ZJ^TQoFzd63iN%r;H_@ZoQC;< z2#{!$darQp_M>g9DfPIb5{tx)b23c_bP_QLKgG+A5HueJha>_qb53hyl7#uT_h?PX9A`Ev%8di%x<2b$7V-u`u==G+1$l|-mlxK9{ z9y_xwI>!GK*c%~_qjoHy?#^5gr2_qA30D6;QmUCg`cHjQ`h~ik`)~4mDL5*r<1_|6 z$Lfwfx!5=-l$2|+UHewWERR3RLnA$va^;LHLcKXySWw)&M9SGoo@&`xHbY`ea?u4l z=&gkDt=ZW-u^!a)E0b=uYUim~cZBxT@PIakl%1ofveq|ggB{T(m6+bo?GV3%F3jN1mfOL8fm5LWpD%>v zL1jw#qR&Xi1{iP9ry|WHny{x@^CXVsPL`R4rxAf8*D;bbYO*9&DlVH|Dw}sUVgSOV zGG;{dm2yl;3HGJdI*0SG;hM-6FQm)#)+AFZh5DHyML_kk>jC;jUOQ+%@)9|fl|!QK z(_rE*pINiuF5jz$8lmuiCY5BZc)?|?u(m5p^7h-J>KWBt*oz2ga%jN=d_s7>et4~P zmoUi*sYgWP8E>|0URo`)#joVi%AJg?TBawiCc+TwaOKM3n!ZffMialbZDr2bh!AM{ z2Fvr5{gBvYaHV4=C!3^t#Zy?WcP~5>4>7br>)qG;fTX%_T8AuHadtiQN^4s z_J^tik2n`c%HYE^~9pR(-~)$G8KJo5=sb{Dn=Ye8fDwC>qoc6 zzdoQ80S0s^?TU9Lb4fTr9wZXv5l7VKvhi3pH__+nNfwkIW;k1Kjh4t_ViS498_aXH zaZq65 zJUmjS3=2* zz6jcMfd%^(1fO05Jz_PxVDr>-mI*Vj-EUDl_9(ht+Q~T5?|pt-qT8YVkr;13PuMqZ zlr4lw-!<6wmd+x@iZKIOQ)+c8hbB&wU!MD4U!D-%RhU$|%Ti4+blL1eV57JFy*p0K z{{-)K*eA(S*fZRlvlP1+0J1RHYdK}B+&@xeC1NGlFNeNHx5alO+`32qhE|BK4e>x) z<2TK{Gu!)(C;{PbU&U;-sO|ABpUE-mpNhqR4g3K3_ti{-px`X`ubuVI{hfki(=wqp zQMbx5WDN#Q+F})k6jNmv4w`O2tO@rPwqraFYOhhDtRz6KEgz|p9XCc+uz&X5P9aVe z>+%B1PgM#QpJ()t)j_e!)Y0Q;MR=HD9O_ear8(`JFTPb}Qk``Jm^-u3f)?%$7{ynLERF^YhXo_HJVxdME;o?jFum44__z;*~p zAg=;}mBY*%0&#pQXB2?_XROf1tIsHw>vw{m*%@2g6+L*$v3ZYma0FTcgIL~|^Z&Ec z$aadyd8Gki-0*>mk&br=7W z@?AHe#1}9jDB2EWNPa37hihpGPYl zMSH@<#cR8RT?@7Zc?)myAZcldq+B58B0Y&ofh(l(b{KMe3UP(Cndv`?Tz+A!*aYEB z695;!0_w`RYNC-9d9KMg@D5~ommVf=gCzL5LfLXBaUPT5Lf#(Ke`i8uHGrEV;iOG4 zMnpRx6RN~kL(<8(Vj@OFB>hQxvV4lKpS^|+X2`ymLNNg<3%0^pTSny4(TJ?>Ibz{Z zh+QypV1K9KbRijg;gk#6aXKv@F`2}e1a&75KSm<~9uMgZ6xS*lV#M8)9%sUGrrhHZ zz2|=)TUh1<8=V z2($@Y>F=vMakkk8r58*yL}_diA#5H<$bQ>JA^Zm{^RcDZP|bkjkpVmAqE&8Y*gZfC zn<)j+B$;=ya`=Pkz-=tSt~Vv>MLJn5W{hGC&(H_CdIU^bv9X6v$JzyXMBtp2l4>kp z646us+(23LRG?=zVLrKd1s~q<@y71QUBV9UxMJ8bCO@u&>6Z z`R=xYWB)U3ao|5SCdE7zj2-LJwt12j6};$e@!6!MxI;&}9bw7`7*E!HoM&dB8qC)G zP5gG|M}%O(s7=CVdRT`j!JIu8Wc-Ub^BC0%BBTD?JV{PP(84D%_rj>FszHb{KA@&O zq;bJk08XxXmb#jm3Fa z8u$W5B;FQ6PG@oGsI|-1#g~@F!b@w?{LvD7eA$590WB@uBF`cXgIeR|S-Y`uLo)8G zAJzf_vaW9QeA9(=rx?DO0Vhx;_8Xi6i z8K?VL*0F4J95p0VVPG;$e!dFZgNZw0033E~CSdkXDX|i~tCPqK0tfkQ_~Dd7@DM_B ztQ@|4L>{oIb8w@S9ksQz>3722!Q;3T(I5r_I2GA=5<1_#7G;*hL;^W~@D~Lb?L{l_ z1=*@2A<2y%B=V2p_15@iH9WQH$wwT|Ot?>zjgooh2FQV6K{ucTcZ+t;0|DoyoLxW<0Ve;Lp9@0P*(5;7vTA&$ zTq4iEcM!u0$%y*A+j%c(f<@@mMo*KTU%AQ`I9AQ7*?jjsKBR{~3NJJ{%uK^IKb_S! zlr29}Ub~%mD6A#;a%i9UDRiC-@Xyl=-mZ1ge*g)>h1q8IL@Uj}UZz$c_sB)8di1I5)Ji#9k6xNf$JDsCyp055P^3sD2`t z_|az&W_M?;#5hI~Uslwza1oGe-4MZ3=f48q8}yCmdd8evokReMq?0Ep}@lH3yPD{ z^@BLON&Axe63&KY?O8}g^0bqCl+4RjCW+S+aFI%$ZJ|NjWdc!ay%K`&tf|Q z%9;I|^F)kzd_R$$SaRkUOvOX*JBVgKdKmktt+FRmb+Y>>Nx+F^QiTEJgccHKVSHrO zyH{o4BmP{l|1NIW84lR>>L6Lt`v;fE-kvGH7HMjlezzaD4{tT4cGBi60Md!$P_V5e_|Y*AX;GOx-}c2E zKi)mKCwaUYnMCmwH1-7FA5!PU(EJji=Rws;$UJ5?5r| zWIM^zwFnN)kiF+Qbdl{1SP0Z~Cy)&Q5HTVC-4+jQY}oAGxG@hqB}O9S8A#G(S*zl( zS!R#n#)pzyIuXA^=45(H%;Kl`{w@7>fR|;fv^REt33hO?06sCI6cbm-ru55I_+e_{ zu^;V2I!<|HoWt#=HmL`S*Tx=we}(;j!!e&ycz!^DvMNWKIemi3)waOviTD2;2^izg^c-vtjfQE!)(x3j@IlGbip7WXPxnOl_%#MQXJ6=A^ zYP)7FqWstEipb=dW1;S$Ie#t>m6qA^*Yu<3cG_XTJwK?i$?A89N82a12bt8LADH3X zYaf^x{N{YZs6Wm`nAKiamqBI6O{oNTy7j+M>5@xHx$;j4LceeZNB|ty)uh4U|G7<& zAZ2C}vr{W_sup{_CW~Ahox243zP+Ugr|6hQsDn*aXKOXP4}o%jhpQhsUf~4}yjqy8 zm1S~j=kFDDU=)emB3)$Oi&B)aXK50?oonM>uze3%72qJKDAC-EqZmughyVt{UXW86 z@m|dNLC%9A#}iFWVmJu5kB^3t-8h(T32UHp;132aeE9BNYa#KOahJDZ?q}xk*U0QY zFz72Ii`Gh5`btFCgjB*7nTz%H?pD-gM~yDY5fT#o6Q+(@T2Y%8)w zMFQMzwB38lwwzs?D0(}wk>G7Tsx6|DA!WYDokzK|$Z#gt$P!qM)p{Umi68?&Ajbb9zVT1j{w&bzqV=Z;8~tbKUQ@yPr2(5Z(A zv*pXCSUsOb1yMpcC=xD8}|+uKpLqKZcNjc()TY`gUd6XjcJiALlFj7iMT z=o|$;S)@M#1rj-MZq{MlSF0h*huw}dj=j?`WfPToN63P^?&i>2)-qnfp3+NX*V~8W zySBWZ8d<|`np|hK?x)j34rk_sM#^zP^)iq0kXUtJ(nt4vA%;*TxT}V|Jw~EcWbNa< z;WE+xpw!Rq;Yz?`2C51cxRm692Uzc6Vg}0^TRl&llSadcafr{hE!8!9Dz0Q%8!#2gR_FIS zggL&VM7vOh%Nf@f+ow9Vl)k{hLmw9-)`ISre5>y{7vN_Q6aM!d|MN%Q7Gcs*?d%XS z0_UF%j$s!m42_=aKhTLob4Lf2EId*y6~>g#{5?tfAZn9!?UdSifuHYG_bwxrJ`VeP ze*NSn0%K+o`>Sr&;YbK54qz!#6mR91c7?{EC5ib=e~`m7&lHQSWs~Ny3PE4r4*cA+ zm+#En^=oLwuv;eAeZav_3rFKr?_-OP{en;VnC$-lYc6JY0JO2mL@HCqLbFbrn z>A3PQzcBJo3H-9q6m0%Ke-OCPz-j(}S;YO*0vn*f!@J`V=^-ov!~mZMca|phxNnB# zqja!dTeG@KL*u(UZ+E@CJo4e19?ITf_eeLoJ`Sd{mU8K)V0l)R@`7WrNM)0_4WhPy zq7nu8um-|#h1QrFsO+YME@N;dL3v<=V;2L84)yBKNWeGYo?jxjqw%wbE*zm^XRA&X za5}%x{w_MYK0YW&+3S7dVBq;1{FX)e_Tk`2qwLw7DU)I1_U&VDH4tM&lqY7GVNg^n ztxM2ZHlsQ^YHx3p<%5TOZzx&l&*Yqzo{lC9Ry$e}O2@5q)b37h&qZ~qk(Q1y%2IVx ze&U4FiV^&zZ`h2sn#SND!33+QM3#EjA`*(x&6A)r)w1T`+wEsAGSW>9O!I$Cj_N%G zcct3eHwVD5qNnok-H5pQAW9HRc70A_aZ@covk59zKH$O_Iz4|;zusZ^0u(RDiFLqIBMp!t( ziV&CFv13Q02hA3_gPrkASDwB*7Z zWb5kE(kCa(Tkb6D_nkO!Sngy$$FI~$b@sV#`@aWin2PU*_-8E$E@KgqR-j;FBdz<(1c>t z>(xK>7Qxm9neFFM61Qb)8s&K@?LAzc5n*G5-N+tdmuAvA9626tastM z&8f`hlb{A@`ZheAUyN)vwB zV0N&v@ll?-$akaT8A3uJUKLn3L_hiWRr>VZ^?G_ig5ZB#St+8_%ke{>K5*vFf|I!6 z@Sb>xhO*)ky2#WsUf3$fG(-PXH!@e&4y!o*?3Kc%?oB(GC^ja&c!9o|vpH*wV5?PA zM^Ie@W*Lked7I0Z&oxIVc|0+8`FgBn{OZ*gkS!&xSX&<#v%P$FDzNKYTei=*q(RdA zW9mQ(Fl)&@pXY4F@q?MyD^~`Kc!H4__4_DD^;pr<6B#Gy<1OYbh%5a$BuaWufZxY0 z)q}MhqTnnoS~xE!I8sGATmm8@vtOX?2+eRBHI^d?K57}SiL9nw?}gDhdpaxi5R$(+Aik} z6Q&f})+w*|3W@Av~EaTU{krM>Q}zQNOB%=p8$z7>4Mr=#kCEgweb2oZqf)tUVYnsgv{q>vL_J@ z>LJKzkxvVQ8r=wS_vPzr;2b()W2>}oaIoP^MdjTUA`GTS+vzcpOS9U zr*E!QbR25k2;rgc-9TaiIIu3q^d6`*eYkuAC7-yYpXS-P(_7~bc z8z>70Z&v+UU5!fSP4hdOiwk8QTTL<$F#Z|+>^e{v5}fS-WXuM8?GR%bUk~Z56Z^J6Quii2?c-62c=AVVWyz zW!#}9EL_ekWY+~HPsjRo@D(|?)cntVyr*W)%R4qIX;|yw-v~3rY^hP1W|}%` zzRk1PIBaUkg0NSr8WtHD2^0}D?V(T%Nek!?7cWVH=zTN{5tL}Lzf2aTr=#Xm)X)T~ z!9C1#O;K;rY>XuWKA>Az158M1ZVA{oAK~SfJNeSd5`R8wB1A7W3THT%2HtlW#r_UW zKEn#2R&Q6{-Rd#Rq*CKz_88>5fZK}HJ2>6y507mWN!)Z0Ch);GQEKu~#UaozeYeZ$ zA>-Ui0>SQGxiH$ZuF{H;<*L4+AsWd;&kv>|Q|70=!!%U+ItKG}=(%EFZZHQpbe- z7H)cSH12DDLR3^_WZ0$*Q}AcFiZ0igRs5>QpM7zoYOa#{iKiuPAfM9{Y?K8W?)9oZ zv(r&B@MqBeuWCP^0F5^83dr;!JC@8q@h&A%3r~#+OELH#AX=ra1uY{G9h&8h^#S@$ z2#$G)se(V;mAa`eN6nlN|L=S_Z`oV)h@O7VZ)d#j_|8%iGc+Q!Mdwc~4ppcFF8KxDt zavX>A3QOaSGX#U8qjx%Y&$8rZQx-9)C|6WvJJpJU-`VPX-(%q=!qJ>=3&xsCuIEU zmLqHagKtixM{e(hRyOE`a1n8SsR=r6}0XvqP z##`Y!|Lvi6M)SSUkPR*1OT@A!+7on^%y^oZAT4Vctr!)EnRG)3#P87La8NG^-KFuZ z!-&o*w`Uz9@MhABi=ox>W@T7iGvb3n5NKahK?|5Y*Al=y+TwBMIU`KGGB{XB99<0M zR+%ZuHa5vg8o5p>DP4t6Z8j``@Nl;EL!0*k^gBiJe>%Y<3XZ!~nhWv{hTCz$4W?UxJ?%wg3qwg>K zSV9^8APwn#3SeWx?LQ$m|L>F8Yq4^T zH_Eybbhu_btE-V^vYaL=W-{qqTtuufk-l`vQ))jKqt_WJB{Wh~QFr)jzT>l>U=)%j z7uVb3x0J@GR@Gs&e9dwCjcckiPr(8$$H9_vA#-j_d;jZDQFz@veC|VM1%=O?4h!2P zY92Je#nstaR;J(gZsW!kYqh|6QKmgB@ngEl#GB57RZ^GKds0)reFPII7*s@WDVaL- zuF83LLqqNOs;!$gS@?ZW+3=bAye++%GOG=0efPlx)nwwt$?g_Nx;?1G(kd z`Yt({3y6yicM77GdZIf8!hpuu_%O;V;;2^&D?a}TU2#Azkc3jtRmll#s zcVB9Z0f(C}`NF?!LqILgU!$1bV?kv6dmi+%xHywu8Qk^i*_j&v-4C}*=;jO7tiXvZ z7(KQHQ$~ss1AM0K?SFh-uYB%f2%m7FpZDx^97VM%@%8J)OVW;q3MtB-_@<*C%{d1% z;bR7!lTu>Cso-*)mu-6#w8Z!BHKol3ICksgd%)Nem!72G#KFAdgsXX19<#+#onw4o zz7IyB_ z82lkd4;We_={bWo8>a)4%A)o4El|H~Z@qjogRZ0BG9tNRUzTs-G|-WJ2|njV)qnKZ@BW{tdZDe!E`l8aYbwYI=cSEon_?asiIRu!->|DM zg67~LQd>wvss?%NWAGV8rUhXYh>yf<8967=w*D@{#9hr zceN_8gSUfCB$8pjDP*{B25|5m&+4RPL`#Yk_?>8*gMs4&`-^4tf72|#iFn3w4Zi=x z0WWK(CYr6ov1Ax*TXPNEhWXch?J$9EwXSES*feYr-;2%C)#q}I3k#DV!D}vLURoXK zKI^0PPOe15tsh7T>T~uw>!|jqb?B@Sv|2=Ym)|RB=X`!W{!No`J4!dH?-Jp@Qc_YU zC}3SIqO?xO&akOs2{&M zY?q*CJ9MY|sU30!#~gD@(72)e%#+fn0S7c|yFGT~-o>=EZLGPzSq>Jik37tKC$*pjCZhGxOt4u+}!8x5vMW;>{1D$fUWyIeP zSFY5JbDo=3JipubV*e5F4ER#f{xb60M@hrmCBc(L;@WpbME2-w9j&V^^lzVKQQx^L z?bwmb>I6&Kl*Fk1`U@?LUd?K_KX+^VJeS6Vk-+@x!)&SbYP&yMtgfL@TPvYs)u?-A zDOfn7V5N_&k$y1Z-B`G>Da~oZ6JqC|Snqa22c(tJzP6l#dRtoi_7PT--rk5l`kIy) z9qEA>5&+Q=)Uca3k?P9cq9nGr7tw6O;_A`#i+dWP2%rw$hFMYJ`uYTaiSc8V zzn`BUP@{)lD{<~GU;U+rUnJ_{2q+dSf>fi+@BLDQK?QGF9@i9}%IEZXF2L8X?YW|x zkmIWb?L~E?eNs(yIB>(F_|}8l6O*b6-ghT#AC-qD$jTTyPdd+W^i53-o1G|pO7VMq zDJeVHEj%JKGt6wNmZD=)(t(40L#o7?-g9FC*3j#sriMTUv1?Zem-{_`b)1$&bg2S$ zIngr+CQh21LtK~pxfU;|ATY-+2qvJ z6y!?C6~d8m(y|Ll?ef`7^5!)_6JIQE1tU<~O;Y9pG6>2BDms|*AQBd&NJMcr?J+Zp zXd=gP=GhnL6FJpVAFrn;5^z>mSXVg zQ-Pvq|NhRW9(1`9X|uD!#@~GfgM3|+lB})8#E?Dk1i0G6tP8Z6x;qylc~gfbtZmgx z>=OMaOx*Nem~`YAGtAUb(>7#i0yR_Qg9qBbJ=jwdIIRdZo9IK$$%$3FR(`d;*gI&~T~3h>#Hf_u$Znu==h+HRMPsKE*~P z1?&2vgc-&SkxYmQJ9JZ=;mx;XInlli3RKC|$K4E4b}ns{G=nZZy}8&wZy<1KugqI6 zk-UoBE^z&LZUYT6pXqo$cjC?WIxeX5HY7ebMS7J6X~t3>3bGc`-gOe$#B|Jh^Hrj^ zsl```+6M&)*+5ELC;(BU+aoB#9g*t^eAib3zdc9fCcvf;$w6CC8>Z;og8x1y2I;4y zOr%jRgpx#J;#OG2Z!jSmS6JF;;eF_C%h+8@M+umUDZ@4)WU*k@2JNd0{+Cv z{yq$KH90daE=p*h8idIM24SwqApS-(+5QFNCG~@bJ zKg8SC!VX}btbsl8sAmG`6Y`OGA|TR*HWeVX2)BPFqsF@>HUkBwq}SI<0FaeSdhh`4 z!szs7)CehJGoL?4j%bEjM}`1I5gD8qMpW-`3^TI&s1E!8@b}k_d?y<*5T!rmbnO~9 zc*T7|M@H%dFQ4OkbYvo>*Zl6)<=@7$YjV;{X~h^XnA0?YZyJ6vQ!5s{m{Q93u_us% zoJe*4j1C6pf=e#q?u>8>)6-Fq4F7FqB685E{o-h7h~yCLv4^L|MiC)N0$wCSKE)_= zga@RwpkZ$K$&eNSnQtR=U3@yDFP=W#e~nQv|2_V- z!AdDMf}TW@03iwSAflwBP=CBYeS}p(>+MB~31}yvaoDWB!)0)RgZYy-7grlMGbDsy zl2o_kBKi)4qmt4H1INM38*N2J)&i@dbR} zr<+1-shJab-$l0nPgV-Qn-^N~1$ucBQ(*tC=7+8##1SZwVVFt_*2E{oK$0%oM&|F8 zC`wH^1r?yQuHNYKr^4q=_vy(_flGP}{+?Ka)F23p9GcRw=GjDgEdl67{9Phh5l&-%I&d%0EMRI0GZ0lY+Mk4om*j!I`ZdVB8w0(LKH#50+skR-0>B^2?+^7a*kN-*9F!ULhf|| z;3UKe?C+VGB_!73X$rsq1PD>J?w+yox#Q*69h$9I3xjce9(#)2etzFR+h>JV1(AX@)zlDk@9Us@ z-VLJHCbME~^Mf+TU#={*vNF%tsEIy&pz!-;0l;8<1{*Br@(*1qvMBmZT*)IW!RLu1 z&9gI9E0Xs=>89hIC42(^!G!}DPc~=GmGOYN$f~Vs>~t7?b#3`_K@A>$i@fInMYxGV zo27gCp3HzTIPppqLAeeR9)tSH@9u4HqtJ?r*cSY}o7L50GmdQ>?29fh_Z)^oh4c9a zgO(gF;nX=Z(e6trd2Vy%^0_A971?)q&H4ZjI56#M~5 z-OffNu)C)bRe1^ZVQd8l!$(I(I`wEew^pB%M4*NML@?14E%C7@?e1#Ag zSgu&}#aY@^%)ID+oFC{@hfQ6_rkG$T5FMSEh>&`2ZX4aZ0o`2HC@Jt$nUy+rjC-k% z?~SV(;S!2Y#b<8(s8d`mS3Fnz!qMEiH$t*)B>UMj$}C-odjjSL7_O5)@Qqe*=#G8k zbN;hG|NM$YYOK~Q$UA{prn@G*PQ>r2b#3RF|f<8id!Ppv#9z$2x2{#!*xBcFCgboJ1 zJZmNV-AbU92o+N+7sT<&AV<`w?msFikCr~>i4H)81Ir7uR88IyD~vP)!Goq#F+C^( zE^4S@JW>e@y@=5tY5Vu}Akkln0HJM^A^9pWfCeQ2cvQ9>!;Wyjb8=I^L5QsGvFAyL zx4R&>;Ch-tWU)o*u>{TQ>r>4a#G=TN26=2Yh()C4M3*gV$)vq1EBT#hyAk)pB5U?&rRZTkktmpv-uC=p zka~b0Zd`5hCv8>g2WsSQ@2@3!^U&QwyhPhFdhqWR_eckwI4=j_2Nw;VVK2S2sn~|1z%xr^DoF1Y`OYrbV;y5CaW3Q`y~9JrG4-ffdYe#q z!kvM&>?xGwWtxX$hoUC+dYdD=D3JGpecUp8Jas-4tI_*>S+x^fvY!LDI+BcQ3Sqk%Xq=%A)a@nvz9*8L zeS6r$P|<{AvZgEyfIT}GWO``S|;-k%#5}!rY@me)BDd{KcP`t%S_yH zd-nXg2-82{jtS;%+x~in;7JVc z2vRzj`d?0p-+AsOB+m21MC?r45F#PtkYohV8K zuVr(n@_eTWYlT0zF|j~keSh&T-g8SIemyHtkDRI8`j2FH-@RNxXqRCRBGOSfY4~z* z8cW<(w^ZWGXe^UWvZ!|j^}XFELWy$ur3yR8s>iUsv7BVb^70b9nK=tmZAGdg?(yv0 zK+!&mRwRK!s&iUZekt>^oDn5m`SP6ZT;ZJ|#=+NRIr+&VY7r=Ok}L^qf}&7DVQj{8 zd3}gU>0_GnenEJfr24W30%yv+MB-4g@6AlY-mm`;bKl{QW&8f$)-F$4R0^3P5s{IS zLRp1mC1sE7J<{@slsz&M$>>HZn-((fkiE(bnYVo#zvH^j%k%W~`ThaF^VKWscDt_g zI?v-g#`}1`8(Zz&KRdW1^PfPR0g(ny#+afGZWP`~CIk2#^UMf8{*CXXCBL#4 z&<8wiJB+hUr~}pw)7|Fp2f#CidX8gspC1GIB>_eQIyOi(H9@|q-bJhUu6DNqx|0{e zD_zhe-QwQ!4kymvRfBWhFq+H1KF)eF_aWa87sN*@FrA^~Bd}-f8>HramL5@hR?58i z5>52JX0T_W{)O~Vj4YSA9c214Ab|6_bbGV^yAE+ceX7z zZP|$(Ej#h`!-*9vh#qCZannZPN%a)-GyEq7@LtS^iKO)Nn0HTcoW}DQOzDS~R(F@3 zwMlyGwF};$iHB{Hc;tPkA=bnY0)n4$J_AjgBS_El==mFB=*&zDi(TcuE7wU^6SQjO z`9)TD_>^prMDnpsGMGdb6t;v9)rD#{BgUst>H)_9zOg3uUiyFlUnV;&f2)$jLQs{~ zpsuw@=Z8J_Q9G{nstJM%7pFHBn|M5%1yK>!kQ{;-nB@9Vf9tfS`MfZev9OUP8r)|o zb?m_m(Of>RX7l?5+e5@$zseDa{fkhW08kF-9%8HB@W5R~#3vU)t!6Kt#=`qTH$Oax2H*M{f;2}IS?P^uS&kBB(edkp1n-{v7&l(BngT&iS9vGSXI0*q zaQlpl#Rb)9KAeM>1ykWUAsT|?(X1GLH<7TX#<%EM#1&0qIw$J!AFm-~x=Rs&GjgU?Es+3;;(M0vQJp_`Mfqj>=NGmn4i}W5xoxu9KrntLc`uOx2Y*d!^7E4jEK(jIZQ*Gjy!QPQ`xarGC zAh>|T28$;_hzjGIJGM>vOEN*LL%2qK55tS8Q$%ZF_}QD!5B}YH7&(`s9=*#P)i~?U zX6w`AsNw#ayetoDUlWa79LA|AR#h|ruo$yuGRQPPn9ahN;5DAq2V*MMKVXUjW7cXNm{%+P#{^=Zj7Hnx)T{E=e?7-#wv};jERo4| z8t)3%YUkx?zla<#lU;2-8|sVWiqSKZ4aaz#W+`HkyWDReHei3EpPS-@@1UOtiKbI! z4BDsqY9RZma1S(5mPjm)Z38#~hJ*+y!@Uki$nau0tl%8{a8aXB>9Yg)((|xvA1E7$ zBYJ{XO-6#@5%*AY>qQL@79QQ|a@0G#_`?S257Wql<}Xb3-SBZV1<|ASFL&5sNnP#y zW=%%I(_C)&rpH4aJ#x=NE<%(U_2Y+k2DyT~p#UGfEI)~EK18`RVPib6Uc7Rbbb9NF zFP|V?1qrKgw9w-5DhO|(fO~tdO7Tk3;y&Fjj{|qctY4zmkU+#PEgFIo`-uJl3-%Bl zB;4CgiN$fP=#(yb`pb;2l9G!|ixKJwInI{N;PZE1ah!cO4_Zr!0;s7fyulgY&%Ddb z@YYLG)y@P>?PE00;uLCQsAw}f=jD)(=#x;}IUR*4m$k1V)|d){T)vQpU|2-3n5go8 z!q<8@yJ$*R$&0fst+n<{Q@VBEd2c|e?{o|PJPX=dql<4d7IzzTjp(@PxpbH#@3Z&A zHgx{<-d>N$H=^Vp=4KP24PqQs$AK7>zDidUx>q_5c$?{=rTlGFC^$mN5yKvVdX(cW zPs`Bvu$bJ`O?R7J~@Lq6V&{giARJ$lKD}HH0Qjmji3kU@bn>m&o|K?J`bURj|-Ys%i(O!3a z^kd`#z%Wo5>nLe(A!#1;CxF%C5_Ah-jz=Kku&MMcP!fIMjES4KnafukXEme`$njmh z%Ec8MVv+TfWiyTC)f!00H%$}%-vo$)=fi(60k`(2b7(iKat=fcU1?>Qo}1_dDr3%bj=JCpWIc&vHG(FWOZ%Y&!Q z`3aiuWg!gI_!JSn+IRJXjhxTVi=%xM+JK+K3r+yoYj*+#NYN0SBBk}uy?*ZUn`g^d z0MSpOc{2n%L9gxe?aFBXIq~S2-=r(|T@}ffJ%&;DZaZKTDX@9kfe02+j;rQ~=PMNQ zD?{cVRQ?h!^@;D%zj-YB0?Dev$5Mm$h{$wBW&+?hc0q^o8J(C4W&| zX_l5lF68+NQRayDSHzI!$fM(SlP-=(HBg*zE}MSl1%gI(C>s=|(aFz6*ok|WO} zxG^51u?LU!Cln8g31S3vb~xesQ2TnLDlnAsLG&Un)e_C`nBci+d{P7wQon%j^aAoH=j$P;ueGf>d9 zP9?ZuAOnlVc9nz0)G;ioZO!@tPxK;yP+VN{1|>J3{86$1t|fC0TS5l=E?gowZ-8PI zMol5Eo-wG?+lOO7zoh=pjQW)N5a&WSPPlw?*O^csYQvtQUUUv+#7t02mA*ydpb|XGDs`|cCiiy{)5=N2EE!$Td4h}d7yv%ka$s@D!9KKcrW9?74`8xDFoZP5;u-8^^+yoKe_l@_cpk{Gp z)ZS{SjcJ$zq)9AaH>*}|04B`9R0dYeM zrA`x+QYbwJTi@{_XvbnrB2Mq`Dt+V)SJQp&1pgU4yx$WqR6LDYkFT=@))XBiH z1(k8|;yw2_kPD-$OD zfze$7`Gnjmh?ua~c8Wsu!kWtvQc5?q84+0)HfN3mK?GERz*FJC*+lCn$@|@_Mz%@) zL|*i)=$QTN95!SjVgnfS8^^X8M}vJYJ)J*=#+hC47TS#Hpa|xWlFlASw7zo)_WjTX ziFuq`^{aI@X0{I|{JEC~Phg#997G=co?||47bhv2r1^nqcM@cw7M6gX%Hgu@+~SzC ze$AQnET`BvXswU@8rZ(;3C}K5c5g3lv${H4T3a>swf0Z0pK;rDYHiUfc25sFqmAc( zZeP#+=JDMX{Wtx?Iv6Qp4VE-Yk6GAy7IJv(NR+UneWj&rY#E_c$NE$qi*@vtwgjaf zvaczG6P3+zK*^7>Yemt?> z?)-{GnjbBY!1XV4Y(exDhNrD9UYby1{x8vC%r~sl0h~zv9Y0;dYzsXTTSd1>qCF5vcNZN@y+;Y9VH7Dd7ePQ1q|5^ z?D~DK&Du6-*|*s?Kn8%tT66!%LMt8*I)w$CQ+k5}Er9W0G0p`*Q0@44h! z?{g?&Z*m|Sy_C>|(^pr&dEfrbny$q`#A>Uq-cwIVRYa7aKk(Le5?YO@O}Q)Adf&%e z+sQ@KIwOO)Q+RX#k^mm5V7G(~cxae-=>oN~3k41JIZmA3sMtd}fs<5J<| z8maWg=h_ui)iEMvM5oHTVWR*FsaTC9bnsVSXC31BKac;!tv6@db!}l~?jcXwqvytc zB6h@zF1(EP`QZpd*0EB20A>VpCbFyCc(mKMTsFLn&2&uOp+6UxFk;rI=)&M#X3gKQ zYejs(lt${HheRJ*E&_f{gI;~HG`!;tEu&(JzJ){rf+RM3hI zO@d%ZGeP&_m@!__t>lf`PF|QEa1aW_pnMS*jnTpJDmgiiQlPU(atT1b0P`Ijz|tKa zv8Vsb=zc0uZ_SC#xN6;#`npR>4my3fZijU-%xBJ1Z0sW{iJAryAwDm$!A?1Whl!=| z8j+Df1I#tcU1layQ#<>?t>9R3TpuoublN)d{`#VFoUw}_wDRo2<2 zc>peJ4TEotu=j52Y#DBB;zCP`#fgvrW+!&kJg&3t#Co-2XNlUz=QjvuzTW4z7clvX zn7r@N6Y%lh5hx;^)`UwLZoj4_w(~6RqWu%jfx)>ehCeG4se$6qBUq)^()?OSdu<{6G+HYz5M>CYv^$J#~zIs+T<^4KqU zVg8t(??G)8%KU!6)UeVqwFlJKZyU*KtXLa5FIjX77b?pnMR^y)2HQeQdNl1eMZrb} z_C03_ouu2_u{#SqzUIH0-+?0SAF^?BZJWV?ME1PY3|e;E6ByA580{pvi+gUuU9uMJ z;>PB;0y5MvQeZN(zDb$S3y$1h-@ek7j(6nmo?i{gXYOn>Nsq?vFi`D({tRAfNqFS= z6n~c3gchOj-S~jB`~F)ueg4iyzF)5hHTyjv%<-HP18*xI(%1MIRBPT~T z7o|g&I^jY2vMIjtp^gwq8&d7|9|I0Lg@`g)UIeR+WfNiC4?Fo z*n>Kxk!dLJCb&u$%|S$6U63o0wRX%y#kQ-e^4Xave-T!K%8+4~QABrDP0h$aKXC&n419x z41k?%qV65G!)gI%d0*eXD+n>om27UliAN28RdDm*%%dHy1_w&;Gw3|p2=Gv~_fVTg zmj#*-tOZPg8l0olxvptPA*n0q_EVA*@-&dBNM#q|N>yH_tWHi&Nk$nrXhX%)%k8j& zcJq!bTO+tYOZF{fy$wfXD8b_rhps+OX@h-vGEvc##rvTLUX#n@B6?6&LF+0jJ&2moc7gy3|{>=?nV?koaO_IKY=o> zz3F^UPT_tpWvCP9G zSqLlM1+YZ~MB@cu=6ICQ`8+UC77fje3((ORg4V7I$4P8xgri(Z3W@aV*s84d>3fJ) z?+PBZd%q?Xj1Le(7L{En?IX7=gb0iOB(iMKnT4Tp+W8xh&VtKVxXbb#NUE67>g>(2 zbk)MeW8pnJ2}a;bRP%1VGJrxt%tR7ZJwSA0=(1*5sEb)5?b97lgawGU=0=<A^o79wZptD!UL%=zW=9cU9zb67qQwgBXAUHUk%)?w?gx z)y}@TCg1?VQM78hqsPb1fv1V8bLPsDaBdggg2x1xp*4{_Oaq%tLN#5Gna8%2yY<3y zEe|6-bThw-^B?2+uRgp>r=H+Z-K{{~N?i`mE4HxnF&f1fDXTdx>_wg_i40 zU&}UhFcZZ-9eS)Egij9^$hA=aS zDGuw(_|*uL$mxwTk~)HHCJd5G1Z5vK572jot>@r&OiI1OrB+jj-ktCx>+96&-(p40 z2*DcU@0*eeQD)vBZA071AeG{2cXMozE+cC#M^L4~X{SRN7tkk%VKl6xC(%{5XNyuE zLoI^oi7O+-+;uG+bE~NNr{~P?^F9{0iGBngQ@)~T#2M%RUUD@;xSFF4NaoaL`N*5& z+^EMih7wbzBqDKJgW{zdFxmHLk4PZj4cb#+95h0;+l-tX@8_tx;y;XvHXWL%Zno&i zffs1nbLM1EKCdnz%BV6pgmA604K^lqo5HW(u}##l}0>nJBHb)Hz*90E&(fpbYF8RGDwO%Q;PlS<{BPxmTyi|*CXzE$L`#~U0;!)|~8!Qn{W<}!*Uu-b!lLmo2ibv0~ zVt`XFnt+NOXJFm43^5~co!nfhA5lmi5Vu^}JnG(Jmf2?4V%B?CZ$1^O@>pg{@Q$za z=qv#yB>I(;laEN?1Z>yih`N}jkY^6oN|0@x0M~1WtaS|r@B@_Jd0cWKY=oSb%H1E6GFb8S(aoYIqRrlQ^cP7=lZht*$_u~XM0~}cRe~eoYl3J z|D{?r!JbRtYM5>sU_*{LorKeA>yNVDs6yrd7(TEZ>fuOKH?JYm1ac_iR#h{}C-iQE z36@)HS0sxb80CV4;c8&=bJDPJlpsD2!A+)198qiC9L}&KhbxEJwNHq2WsBw#A!K%G z0L2|gxKdmB>6M8iO@H-WB$Yc7NQ7;q*AslJx}~>w7E-bVTe zq{H_&W0V?)=*`=nD}BURWqtPOt{d}R$07ZR4xh`B|DDV4omjgiVBlm>?N|TQ4FtaN zN1&qv$;sS~NaRxglrYxkd`J=>N^M&2g)z94ltgSz7FQaP5NLqVoeMpY!3ekgEi%P_})q(?P~W~ zK*{0$1XS&+K~D8`ad*V9e^twDj7lI<6EUWlxrrx4;*wC87mQ|GuPP#j^K&m|O%QyZ zy>rMsF}I-;Btux{U7j;h$6Uq*;rjLdMB$OY(eMI`bm>vg>S7kh=SoF5h~(v>vX=rCN$lC_3ZBQDU=MFkcTYrCh|M_+#a@EkT>oGSg7x_mkh6YX_t|ot z#qr(z>^=BKsZ-g#pP9WDM>dMc5Uw%`296+j`&nfow`luzhFPf1ruL#x8_P1>0%s8| zY&sf)V1*$><{uuUi1c?mAXUS<`LG^VXph3E`}p}U8Kb=vhb~ciSp=3u@BVqc;3CFi z4gefo5`x7SDI-Y!k^Kl2Q(ve44P~L?mW{$9rjEHV;x6RAIDsl~%b-D|4|Y|{w&>;> zD_@zm`^(suk#ofjZ}W~#CGd^S5xV0Qlf)Slf(pTNUp99?w+TZd4xSThkfZ+xe(;^gRZ@yHev z#OL!l^Z~K8HP}cY&6OdO>IJJO6es+v*1PWHFYQE(+*X&V>ys?Z0 zQ1p$NC4!%2xCgRp90Z&8vaE>wQ*M)Bz?-XO+%RxWSq?KTcZBz7pOI3aDdww2_`MOaIgvYY>~*D#uF-+1^%>O zCkgNcv~ppF=R8rdH50d3LnV-t)}GI3TY1cUHdJBD61!4a0!*|<=?>qs*7XH@cT_69 z+xuY<$ud}XX7D+FTmOrm+DTkzJW4SqCl@xNjd@eh#SppX@ykeUiD9gb1weQe*BsHw zeN(HAou0rka1vb_%RtI#X9BNIsNMu%T_}dtOxB)OMtZFlz8kWIT5o;YBGh_tKc-6f zZ zvnwIEvyAtON8ak-KvB>bZYudlP8KiJrJ;2lx`hu3asO|)C^9>(clbi#39X+UMM z0P0%^aopdIoL4o%Wvf{C7jF8LX#emd%~8ZHTZ4kcf21k)8dl)04c{HsNj&jTu=nLL z&sT@{zu{ZOM+A2!^^-V0wSvEf(0@}wbFF{N5_#>9QAtgfq#fvkaH{0Z*Owg{yw@2 zcj#S99ID_n&pTdU;WeM`PmW%B|Gp3w*iG6 zhR%GQGxu;O&V?_Fk)27n7kopPbsneVCX2Bl=Qd&_+Sk=0uMiI=92zxAzkap0zW%1S znOz**+fKN0L=2n^Y>hdCcV73PKrwJRs0l|aFAjI^@*YYQpo;I&=?vNlg!#W%S%MSO zzn6<{m~s0Xfujizmw$!DF9YVR-dDt76NL~?&6|rE0z8%Y_TDyS&LRX5wOfCFTAyc! zaA?Z7(8(}2Aq4`=IaqQ`U-0TEE*z0R;i!OVgn!mU+8(FArVe6R?pS1{1vV~jT!5-g_)m}_NB zUM30&FC)LYR+c1xr5t-lK{#yNeW*$4(Z0oNbn#K7(}%jG%;m2Wa;s;cr(O++@u38z z_>2XUno#|P*IeNG1$_ki_*7ZUf()R_-&*fB`r-8vMLRef+@MzCz4~`o?0wzAYv$a{ zC*C0`oCwJfIM@Lg+fx$|#v8&nn~pM<{A{CBC_$}1x;cwp`rsgu4v0g`qULFZ=>=m! z*7ikp>Bqka|GjcS6a{$aQMaa2wX62aP$EZ0AiR%`lo#I}L-(LoR*8-L@dkUm)c5o| z(Q6vEQdUobkYPK!H2ci-A#O`U(EdDPgeuShNV>0|%U!H%S|$I^+Yqi3*l67RodA** z5`rmOvxCpB6A*&<<<<|Jp8@_WW3b*svXeLm)T>fb=j~f9OZMBh9`Z$v3&ftb>q&hO zD~Xr$*mEI^o$>wp=D!rBjIIk@ zIDz8GxC(4s;CC>;aOC)uCCXIr5H+0nf=#kCm{w(W9LE1B;if5qFy$2srlRyaDv=EE zVg4*&UBC`aIfN=ubr)nG^qF3X-0gs-?YgLd8AKR6LUk1;U1(Kz@n=J*ofbb&C*Mwf z5{V77VZAO()W>mjb+Nmk2au(};CYLHfXal9!LXj5JHyC1MG=(9D&xUY@Y|1`vpo2F zNjZxi_bAJRo=f^x@A+VO_i+R^oGtHcdw%FNlGLiJTfH=hGK;}TZ@O~f7hYW_WK)L? z^cZU$5=~LDI#6q3_&?zvc1k_Gi-YgN{7$K>B9|$`5Bt7H&ELO2qZOytqByYIYUi#T z&D|0fczy9kM$?d>Mri|0;Mx9uM@J40I2dOs5=$;)l#Aha@7WF?xp#MFmhTyDd}KLd zHk15-#Q@s#d8rmy#0E4@STA6Ri|hNK6V8HceKVE-nBX4DoU$$tu1lWoXP%{=-1p(b z;pLN6(I3{3+K>0Q-R$e!80bJ|iFe7gG{8P7O{dLlwm5o;i z8Z+POl~@e*C0?RV`92H)H2&p8qgr^y%vF@nhqU zPNpQoJ4koM$Hk?je0or6%gC79)}fO#oYVZ)BD*MO4x56QSXcv^_dHi6P{=T8->3H! zei<`xfA%l(=+x|`D?e=(>+f174}2-L6rqgAJ$>rqlP4-8D<2#OlEbaSkdX)Kmdj6= zn8F2gPxHgu-nv=eI9RyiGH+#Z2(Q9S`BMU`DqScBb`5jE0)KN+jmK zXl~m&HTmjl5L#7Nip+7a7kWJZ`QO7IS&RRC6MezC{`W)j_ZKKi{*e~`=Z78}J^!aF5w-pEvl!3+Y{q}S51;H@^ZS|b`%hjT{3Av9&ks+n{r~Zn&a!Zo_vhXE zQA0K`I2mbVbXaZMiucSXp__>;EWCDYe?RsOd|W%sn2ZaL{c}eiuUUCh(~h3hxSHPi zvl>WE1kFVqt$>aHXZ4#mjg4|k`9kfDIg`N}z%`Vl3W^8=?PABQy3Ygdc5brdQIL!4 zke&OIKUEZZ?RcG=18-8(xA9La|c zxw+LP1)2K3@8M*>l|4?0uegxFe|)mDPm71_CN$iF5qzs82fIXK_ow)0Wav>&$Kc#s z;eWU$Mg63`_)Lt=qKo-(e{IOpG_YkypLtLf-SN7}WqvsK(}M*0paX6vSbINhi|?&W zRvD~IZWQ0Lg5AFU)k(|i!;}av@*7KsnY_kjxmvvR@)9s=y@Vjf17je0M3x zMJw0XcgQp~$s1g4E@F%hxTN^_$sw`P_pfgrH$Gn(4unk^3Ev9c@2v9^Wdf3uIOW)Nzi84EBLGIP7iA)HB&VpAS1)?KoG0^e1F1V zYDhgv%*|!$S2E|`6`Xe+DN{qv!@~VTnRm{k-0$-}oA2_Q{^dAl)E{P`nrdDrJ2zIcgRQqBd%k$R^qIR0)JvBdUIpk^G`<_E zIvI~Gn%rR#NQrSlD_ZB0i(>lT9c2pCKjJnn zQ#v$tVe10L%{|Ic_gQ(5jqFH%rd~-XUkypCw3JI#vvPJtj0@n&vBh$ntw+0g1n$_r z%-Y->n2=rwm^IhGVwOIC&hJHhQL(mL{>#R3%BD@$R*++Jn=|@;%Ba-;(}NC&Pn+v^ z1)-&P7I?pG2TA$$*1%0!oiBbcETBZk@n-Fd0@wJRT#pVw{v*~QdcM$S-A1xRp}AIq zJm77wHdjTSoyN}w#p*v&AuD+M$bHaLCChJM-r=^i5VaxGU7+V3``!Q<18jOpxp65+ z5-1<<`Ja?n5va-r3ZK8)xLn6e+w;kym&W_ZcyGbiE|Eta zo*Dvftz5hKxD-wG`M%08U&s>9s!j_amGNL}P*qfAsjyq#4Ef>sP{WAANZuvyhjJI& z(w@zbP4al7MS&~g&>85k1vcEcP6=LY(FNN7VZh&)H|Q{m&XjRQ9n@6~wzb`}GQH?w zR~OsG*QBj0*tx~2rX2-iU6nD4Qr2*)fX0b3m>4lNWefpq}3!rFwn*U~6J1x(}*rKipAOvouOja2_VF zsW>E)o^DWeME$z$&fP8P%pCpHk$BHlAzTtV<74S93-c+Yjqz>o%;K#jEL!Y(D}Y4O zJhRWQvUe7Dv9d(%{yafzn7Fxlc{xf4IC+NVXIoo8OC=|-@bI_)aoXJ6DE#T5FO}bo zn~#r+OS~Ok5*(s-B{b-8#!$V zcHj>;Y1DnyDi;?{mDeyKn>J63ZP<{WvvCExV{5cha9l!P&tWzVt)lp#srw@AS~WF| zWb92856oWC!an(T1n$z+T?yQJSK!6>9?-0lmcFXBR(6y75(b)q8ZM?^SwCRx4IFq_ zD4`BNe3+K@{(X&$JI~PMvm0yI&COgUncD6Q*+tjgwS(RmmN=K}lH1heO$lt4-Ut1G z{9mz@;7Bp9bDH$W&accCN{KNBU&)lK48Qka`ll|e5AOK|49QtD!0F*%o#*J_kg5$2 zjZe?Y@zZ^kB%7bu8se5!_(b2OX#~n>lLM~Qt6KMNtSR48Ol4pd?~;9Es-Eu@EskCA z^D+NVx*4-a?QoZiwC4{ebJVJw`(i}FOl+M>sH}$A3dI@>$YUO2o&(K78+N3Sq;W^+ zOiurc7Z>Huh_P!mXQrxKk6u&gy6v$7c9xdC)=+b1E39626JU5$87yXy(|H_$1E*K0 z{kel2j2fzTY##jjOuth1Q%dr4lZG!}P7Xi5`Zh^>f!949H>RL>q&Bih728pnnp>44 zvTm#Cx1Xu*L9wxLxV%XtZ4H!1ewU0;>({g&&;71y`O?u3jOaYS|1DML&bn<9rtoM? zl2kTrPSI$vUfM6#JYXC*PhgMq5c%I#2%p{B;3wW(uu#G%XFI4$ zYE4opjm*^j#HrGp8FIh{xca9%c(W<1P8k_o`06^>FCSU3col@6H~V;VW>YeaEY6%*vKmt{2lvg==@YGk@m%}N^@%%`V$XGO3}jmi5nfC#y^CVg?1 zY~JQJuLOX9r%AU3?-7@w=Ce|p=~?n;t~Zd9)#Mfzx1Li}9E;qxqAV#%W%Vjx>tmJw zRo#^kE$S;QV#8iQnf$eP=W*k}i3ox9p*J{wI0M640_HyJ^2Uzj6KO81!#q&YY83`qFEX#FW|C^< zj`x5al=fvXe;oV#)2Cc}gTHuIXmT^ph&kMPF0CMTcygp8=0lbxba`@cB&#|eaG#MB zaTYvDh0F$9Ld-$2HvT7>(pw-U9}{zbOT68Xas57l^Tw@NvO)5ZEEwX6ziPwTIJ+U) zpm4z;R)yg@EJ%t%4K*J+R9y`en8!_kq7gq|&Z;k{Ka1T6Cl<(U%Q|B+p?-NqCp2`-X(;K?Of8;x{T=OxDk4c+rTf|t#PcYV&4CT=N@N$?yu+L zqorL<6Al?LNSobSv(}OR;ARGWaXeKfyZevraI5LB9ptE>xH~j{`vc;3uvI;M631^K zI%q)F&N?WQo$crdSixO%^K&CK>(;F~udMjEFJ0OdeqEUe>=-HADZcv47iv{opHi--2pwR(kiXiC<06?sVU>>Hlj7 zbCYRt0gd;gmdK!>0Op;$%p12eaP8bh(wHviRo4Ac;QC;j98bd{oTKN>?X9egle+Cd z>PKG|>uQkkkB&}Fy^(S6?iw07JLi0-wdvRSZl z`n~8AoNE&JCHAGKY0bo@1W$hjLB86_lStWLPh?7tN#DJ&c{T>?HLH%RU*F8bfd zY%x`>UyCiWojaDYu#f+a-5_LUFYgb$I&bCtA?cp4;a?Rgr%)K)P+3}9xiG0`oW%Bc zc*7~#WHpfVkP(bvGpxUv&XEP8xqJ+iHmz9pa5jtTz z@byrLoQUh(7urk>5qloK>Y?DOXayO|-1wA~Hv$SPrZXLzU7+-+t1B1*w7|af@FCyn zMqDLpU1IIaC-5PqDdu(?&+N=7X=Tv|!;~8W+9FmUB~faccOx%)N?=vCfR2tr`Q3p! zG2al-(fD*YQ9J+YTb4wb9SU9XFWJd_w{5Uzz`pU1IO|k`{NckgHPamyt?V)_nI%Os zy?2ZJ^`8ofiy!*Y;P-IXD{XEWARqlTGg$Ke6nV}0_nTXLd-CT7K%VP;s|dbLYG;df zmxo07*-?)-d`kvuY~ZsC<%^0LPSf@8?mF{*pMR~o;=!Ii_lar{9(7ynE*&Z4&DNCm zsHQic&bBr(g72Lisfe}^7unaAn`yy2OH~LR{d&gVk3896-+x^zGEG(YnL($6%ly<3 zPYB&^SnfO_HUpPk@)9IV>hg0(-^@O)si}&x&8;laE14P!h6yS$|d$53$#bP@MWnZX+4)#`iA!+?A-K+bGP#`pCm|6+YYh-N2HG1 z6PA$j@Kdur$5x5U1v{`#ku);RB3RlS^rFT6za<73)Ck{B_x{`?;xhAj1BcLbddcE~ zMPkggrq`2$uSf%aU^0p~2n$blKqeZdXriCd{m9xic?(mZcewQ&NDzQyepvRZ?z29( zrva2N%sbd*c^aZXDOOc&vSj0?hSZLC7t5-KJC<(KurNk{xZ^w(xN4Pt#U2Um*DVYJ zUOsPfWa&aYJ?C9yfOn^>_~U6K>eO))O&);yGk+?Z-YK7uKw3>By3)QY-Dy(9)>JU@ z%mcRtIBk`f6;?z}ZyP-?S6&ea#W43d8Gk|Z)&ed6aZ02-*B~^im-z$S>z(P7xVI)^ ze%x0D%#X;dUS~7N3Nl;`iFzu&*kV+)`yczaL4dx<&2vFkFja^+vr-o+*dL=A6P zQ5i|C6!NEI7z~?mAd8*3e;!yxuEp5aJ#*;kE1YikT&rw88~}0yN5Xt}l)d=)Q7d=r zfxy?VohGvS4uCXif5J$<+Q#(`lXZoQDzNQcXI_<9vGeju=#*6g>JyYm=jVkw<|i)o z4;YAQB*(n3UC+X0GC2V94IUnu?cqly$0zeg3VwWgMcR6{=Vx`kvlfrh!W_pGA zcT1?1HDx>{1sGL3%$%q8iLl5xPdkA~?}UIRc>V>hhpoqPJks}uUw?-CMdZ-;C-m;K zWnHPi(*qcSIoF}Lz~Y7xp_>il zs#n1ej`*F#*78^)x92}lSAXo>RoHOV`o{f$gEW_Z)Cxe_vQ5WVM}EQkebA>`{J`R~?Ll;r4TH z?S&gFMEOlz#g{~%kohS+W0sXyHC;v+a6@_8cWpp%Y{i*vm0>$*pOgnls|=)WI#V99 zTQIYhwujP^Inuf}9dvDFLNxzU(pjpFUhEZ;NiaUy^s82ZSMv%xlY8e5+H8nuOd41t zy{9=toO^;AbSyZ74Km#4YTcLYYZ9B~T^HKyA(Q!;qy^Lx{qeN3^Hq_#_H2>f_8Dd^ zy_K^rpHtK`+pp>{j&(kCpVxclp`~e+{c&UcQ8kdfya17AAo0-4VWOHX`hp-Wqi;IKxJrvr)nWCXgApt4V_B=ONqs>Vi4n0A;bt-z84!F%M zEq2V!dF4C%p844bcvS^ zasO6f>7D>Gb0E>nOV~QfRj~iakc_LV?)1-XZbwa2r9S7_S`gmtK%HN$=+vtaT$<5>X#(TT6Wnq(4;3azq> z9)|GxHD>gE++>k;s9#`S;a)62X`^Q=CL7LmTgioxt_In>m`W~KG?1VUSuhU_m=`V- zQ2pgEVRU!}3%n0|d<$P(`*go98SbuQVYuCyf!^ng;gaerr!HSFFUG~ukU}5Beb>%B zccd)N_j!4h9EgyR=syBm%S-{u#bdkd=X;ou{F6+bq}&5e>`Y7{mu!t60rbrRZmNfu z(OtCvh(MWsw5wfpEIj_Dg^rOd=6-?w=Uf+3)cwTim2})2wC=6iKP0KuhL-G^Pj|LC zMH&@|Ig<+Jf;E_4H{IJ5!gEpNV!z=LS%7URxcOH~o3^}j%$VNc-jbxkn;%$yc7B$e zVGuIK`fDo5GUlt6{Z7H)h6W)4mWY?GRJ5+v-%-To{~jr^o$J^i z-*o|kxy+77jk(j!CQDrs{_?f7b#-+O=YBO=SDzJX-LBhps|CQi+143NUJW`r?*u!rAFE8dPnu$3~ zgHuX$Vd5b#D_pWk${i>XjkryR6u#iDt6TU^lc9h1Mh0&lq@QIH`m@GoPd_mqX@^G0 zg{ipOKvMCR*4g>`S1p-rkuSQ+^miX|=#TfBn*;pzj|Tzrm-60OKqkUP{Q3vak^}sW zdL73fNrdtn)Ti8E*R|aryck?|>>)3YMzBrrqnDP~>X`j1A|q^e!PM3#{JU9gPCC(A&E(7ncD`_RWERDdu8U zH>K&;zF2?uXZ?6?huGxhn!U2HHWl3GB0AVlXXX`mg3~tL9$^z)qoig}sk|q-!TT#W zM~FtYRb@EL9Dw_NrN`CM`PsKOW${J(fdod;?wzq3RRGsqbP!~CQt7nQP=hR%>0l}K z`Nc(zcd*d*2y9Jrny8+o1XRHT{_6Cv&Vk3)?*0TF7e1zs?c??7#&rx9Qc_@OG%OBB z#?RE%K_3FIdzg)Pr-}}+fBA|2MXRKy1_nF)`a1(SV!;OS8!R@s!;2m28ak}WXSN-V zjCIHx{rFV4$@G$MU~sxC_2fu5g*G*B{NpBXkUt$OiFRb|-(2*wXm<$rLoa~fPFlPMF$Z)=fd=;#gVVrU*?2dSGxaWy6-z zz#yZWL)B9+7q{}@p%&~rU|ZMLxVW{6tUlGAJ2#h;S952qG{+uZN0`#RdFN9jA)7}+8i zJ}mS~@^;}XK*X3zo%sZ(=eJ8T2K`ykm0TUG$rD@PHqs6YBSWbDN;(sq7wLNCyCnLq z)>@OfwV&GDR~~J(zV|^cN*_{(S?vE3!t8%P-jl4x7WphNMJreLjMV2x`*ZEECvzji zx=(ysvxY2`2w3KP%wM(MlP+$0cHC&q9 z61VBGgm|;|JTna`sUNnX?_QfWnWP?$gh(i+=RY@!b?YCFd`6c&!ktVa6^Jv1XyngT z3V~IGCyyOj@*-!)zVy%y`G1|*X8_Y&VQq0E^ZZZUbcY;KdjDy>|2h&iHU>I;%N`M}z~?r#kYYPGL7Ys=oJf(SX??%y`s{_-0& z{a#*|Ir~}SIRZ*=z;9kCD=#mDk7e+&JOI9KCEsuqYudeKOL06)B1xV*^X5>S1{i|- z%9qvD91io5u!CdkZ&PqGSaxSpkGD_h%cP{2*d3pbH#RwGD=TugUp79+CNWV)ux6Ku!ER!G5~^=S0jjW&Mxs?b?1-RXvPNWP|UWkj(|~zTTJ+DKWmTv>8tM61rw> zO>m&>P~nmr6%39|_7XQ&qubH*-J`?{tdSgE#NfC+)AF-}TmuIYz^eG2@JvGWNuTSb4ytdFp1QDwEB`JpW_ zrIl%(@5FH;Ge10>q;)CL%iB9C2`oy;$CwSxS4Z00cS8xSNa{B)X~nv&&_f!>ALu_Y zaC+x2kJV0-vLbS0r8mS!Z$I~g-PHf(hP`D`!3y2K*4?U*a+X zA6@8;3wR`kJsE`tl9*GRGHuueb@du`*-|&^d;f2k@*w5zy z^0k)x9lpm%ZX}!ays=teGb=Z)ZuSmedPCR z`4UdiSbf~^=>Zt(P?gJppaBJ>at^n^)lmN-4w^;I!$t|%5qb02^K*>0m!)78-C9}% zCquh`B2D+f0s1GU`&=h}!0*3s2nvDbBS$N#OVv-NuYZks!n`v|L+9ef22$c>sc3N; z#+0ue;nI)xi3q?F`|icOZi}~}Q#9}&Dejx61v7-k*W3GCZJwR4&9=UH5w1e%*<%JJ zb#UW6Lpg6n}$P zys_)pe;z~`)uleqjIlj^Y!iIlzm$&i8X$7%gTS|`&YI0m`SpoWyeANIW^A0kzrVBf z^`U}SK_P&b+-o2eSGzzh9C5{5v7VkwFP^$N!MquM{Xm1w63nl@&&5%0-bkL-I^9pw zeyZFSn|zC`*8Z%o&M?R{r=>l&&+_Lp83QTt&5f7?af8X`tAuf zM)T&)9jrbF_A6<-RS73Vg@ajA(O&#p;i;p(lzLMs8>71m9EhZ{GG5ny{^-BYCu|dY zqf-bo8+|!Rarge?17{eOzbuplh3uX(WVCNhOvu5Gw=4nu3ceD|K?M4h3E1~JR6&gPa2?+$Qmp5x}0R)7aktRZ@Vw7;>(jW52P=vy3Lj^jq}1I zc6)HZ>6=o&&F2p^+x8ou8FL0S`3^SyW3+%49x=Ce^k-E#a8i&dRwEM>EURjs9N(Ih zP7CEdcJoE{e?*qqSM@~-87WIirD{`$LLgkY_VMm?p#)Rs=qJq1Zt_)5l#fhGViK{P zYa*LxA7%HZ1ah$*Sq!uz&|+JsN> zqQfdSCug+7T}mbB1EX1AcK}&TDB$mxNyoP8>Oef4s>8VxxKpz%y|acSRaA6C=D#K0 zn=bNQea|q;5_;}=n67_$ytuIA5$1`n`_1=a`g-LhtS*jAOiZQ~3msc96C(9_uYnIk z$p2&SJ)@djyRK2o!)6OAq9Q5+8Z3wiq97eC6dND{A{{{mq)CZLNrEDqC~cz@5djtH zy-9D1fYPORqzVB-4EFY-T6NGbmD7jTBvTlhl4!a|g_ zbsJx!38`vdJi2e%+UD6MYQt*OiVF@=R!SJ9%lj)+ThuAzIFS>+HFv1N_f7V*{wcA2 z_Ye^}80-h|`0U1IEOM~_<`a01bD}HTorK3*wJ0oS;_;tUEcZ)_VOLu$qIo%k)RP-> zad+>&JnGNOqiIBo;m0f`a|(H|!0xg}Ra|pYx;q+Hx)|PgIP$Ntq!j2+zAEaUkdQx> zl?YpM3*YWPRN;zW&H39a!IyKJe0J<;vZdb6ZP<_o^$Ih1+B0GiRg>ZHT)iUR6n3H>`c| zskTta{ccYqoux>k$DHqFi=mRFq(a)Vb=tFp6zZ5{dZEySxUFc2&{l+QkIiCCmH_)6rjFz9+EIQ4d&K@G8+2=1Rb^M#yLXi;KU{`IefKV>&w$GDa_<7p(u|;f2&mW>L2)t(N^!JVkNV5PE z1q!7=Dp+Xn#lI4t`0x^SC7n$d4ld|r^1~-2y8iGsp`zXwQ-}FQxOrrpaZc-GUT}wsrN*>uxQ}V4*QxNU*^r4 zR!T`PqvZ%Gcs!VwkVo)%=feCo8u)=B>$*)BH>t(RNg@w)O`Phzxq%DEbM}Ghi-KjHyLXk9m9#YJg#-mk7ao7;;wnkw)E-+QW+;lEoQ$R~ zjztK_pxvl*{4_ySq{0yXyw?l$4v)lEN`FU@ixPSXsBX?$N@{AiKRd|)&`(=E5*hIE zg*yMk&O<&*t*vrPts2;!j6KhUd__s9EncHB>T9w(hnC-H{@8j;x^cE2V64HPX zQbu2bZQU9?&R?omE8Z{n6bQT)FA#T){D~W4$?b9vW(Um#$Kq~y4}4i)1LJSB1Vcf? zswnTg#FvD*0YIe#_;{OhAif~-$-lVT=9rYkMts>QZ821dEMFlTyL4oeJ`MDgbCesQ zjDjTd{2USAV+FmPr;nh_mL??!{O~J%#3-x`%4}|Ev{nF6JVTL0KTb}g!q#>br8kd; zG*y+A-gp3Ptt$9!HtgFs=#G>SdjApfeO7)yOUp+qKct;d%QLhFmzh#oR79lWnm6|g z^?gC=9K157=aiJcj6!6Bg+JpJ(92z%YF@hpZN1MQBbnwAbm=dNPUACu z5Z7ln6pp;e$^x9i_|c&--$$zx1Jt7t{+%CfTjD$vCW47Go}2&Jek~SN`b5g^5HP>0d4Uf2OAZiZN7LZLW-99 zGyJJen0AB2-x8q}+;)W(&&?>5Nb#%y|1B>Vb7_|9w# zVt*)=&RE6GInO*QVKSmnY~HHqz0Iuky7Vmk`3IcqMj@b1*GVP*!v$bKY#lg& zmZ@}-hCEkLJt$gXNqe`tI{Mx$}V`J=0L44$%ps(V4%HK*SB_}7L zgoGF?-&*EgHW&g8`2qr^xJEV)1PGE*WKcR=WT|=k)Fp+1(<}p@2EDSfNM$&fN!RXu zdfFT#@U0ecZNVTbW907(VlQt%zjaLz#2w|21ynw?aMp%F_mT*ArX`RGyKE|}{H@y$ z>q&_g3#lIPm~DCoFRTeV7X9X{I9J`fw<*FepILU>C_J1Jt5#B?&IL9q@^j9Oyu{I+ z7|2`R(GaosRu{=&-GY6jRQYrZ5rh6HDm}kImo~wiQNvYGV$5Cce;B`Z*H5bwC zv@E^-d92=hxW`^qoXhUvw2+NkZ&6;F$os^Mmi%`GA3tWe7VD;e`eR7}!=@Us$4Y); z@tw~yfm>4#O!&A>dY$XW*&D4zNb|KPboZRSm~PA)R9iw{Ektv2LgQl3o}fnP!gaBS zC4Os4NG^TCnb<(gDbUuH-M=P6c=g5QJzPMV+-XERl&0tO253=n9>S z%R7D%LzG=?a+Y~-Qg-O#jYRxK4*AIh_`ijPA8)>UGnSl`l;VefC6#$yN_1-{{#HTO zDN9f}yIYGwg^J>)bMbh|f!=&E)ce?~yyexoAR&+P zFDzpNB_;Dhd!Bt`6wdW&KzycY#Mc8(bs4wSRDa@cBtj#-^Rx9-I!@rQRT*t{@p3FG zK(SOK`r6Tl6?m;C71=JM;vVAlj`N^RpZMp~QAgimNUcH7Nov*7lxhgB8 z(U5BuI3XEKU*XbZ$Q5PhiL3!EB!5CWkHR*cOm>hvf7?{8B~$bE4mG9WbAkRm>|U<` z0Lwk`-fH&7S%bZ;tx}H?XB7^=R}K8M%V@7*i#7svyp{M3Z393$^IBYrFbZC?dHbc< z*8xppI=b9vqew(t`9_>8MAUEPPe%ey^!s?L^j~j*{8R9szhEThOFeh~5Al4+Oi{mr z-1Yan^7L0IlVi@s81;%}X^gQn53f3>R2jukD{7%GBqs@-NKVohg}9)}~zSD@q zBN1z?5ZySwz{#|FQ6`MTEPb0J%;-VBTd#Uo+(GW-0oLIpX<+XKEq1DB_r!^MUJHsrrhD%)*!Hb)T7t=VQcs zof+>gawy8ZcOf#=ZfG8GfeXJqMb_&~jjql+rJ@l7%x>tE_F7;KoU`ieXbg*ga~cdt z98yC7YF$zNHP6qnp1%EQWsaX}y3h!u5rzOIW4fGku(wh#*6=eB9^+s zc+2A7pWowa;f@W`<54_8U+<3mBW{T0IB8^3!L-P!af!WW<){MAEz@*By zKm_TPuD!{(-~1h3^YOQgoVSM3?^3>z^}r5?Z^w}y<_;=>DdAcWn|lME@%0ot#9Gn5 zB$qrcxn1Q1s7#BB+Lsu@;J9P-$WGd@0Z;k^H092tm-i&9u zw7n&FfEQ@+asIVOgi)A)bcf%kYNS(xBCSP{rlkZ660AEGX2ubu{w$9Jq6P(=Q0A8n zIF3wYGCm!%T=^vNi-3T-B>Ms;i=4}#V;BmB$M$AlB?Q2}0-#$bw zl5>t}!qk$A_!4;rOq5{lsCl@e)k#rI;*ulWf|I}bRLEplwTKk{%#QZ|*_DmRSM}4V z43#dF2vZV5>is*$SaO1I)l`beI>Y}s8S=>;hAmWril5Yc&5zFlM>P~^iyWAQCB!S_ zzdwRGU-8Lls~xzKq32^Jc}yDs)n2Anm=j?XHk!BQ`G}Pi=-}X)CO>K9j=o33h-w!` zNhkzX2jd%AO8>gE*Z-4NJfBr7QYL5iv+478*{O^%6Bk5=2ef!N*ViTUy)pj?Ip7&L zNh}7Q*Te3oTXr2&dE+_;O=QRN^kIW|%k|q7=VVC4C*bpG%OC?h{c+5sgW*TBLyRdK zsba&Fc}Wf11vh&6$GS%;N~CBCuBj-6+@Yh33{`l5ws~sN{cdD3lXOg z8G6Fb<~=v2&uldpKx~UaJ_^rNnJUS>0r&pzU^ecAtL^)UU=Jm^9+$wMTY}ZcrLUY!eQ?c%bYfo- zqN#(LDItMNN5L@^)L%}A-}Hrk+nkNR4p%`lRX%B(PEJ*ETX79!|4brxFa-s=ICmXI zL{TnO!eU2O{Q5^$G39&rh%xnXRM)qg`m)k2WSkzNQ!MK8iKX~b3;oV>5A+y`;kQM8_1ye#2hM*$xU*go2MmiaLr3uEGs+=$NbcF2RydiIoK`4g z#+?1Ww~867*+33L_YJtaO#Mawy`UlwHWdO49V5FU+W}TjTETKRiM}oXUyL^okcNCQz)C2} zo_QH3!+>e_Ry);@;ibyS)IPZnpdO-h!9T~`SZXQsC8TgyTPpzGEDf@_mCtxlj~@Ug z7iWz+!5%an`0Lj1fNcbxl@a$GjX2;??NY|WJSsDZCh?3d@sJtQg(;9}zPlNfmOq5x z(kL^gK87us3U}noJ%$&a@H4=x*+t+7o++#&4ik;x2{=IMfY$>{$VhXPT?}($2!g$@np~T8@}iF-{Li5g3Xf0s(UKH6Yw` zdZ-jJ8!V-~{==nI@cF|5J$4Za z@@7bAsp5aXhzNH-2lwk#JeLjd_dW}#fK*mK8?MI9dU2Ypt>!^vk-hS@XnG&9-$7MN zvp9GC_)=4adwB!2{reE8$pIug4V|WQIa}h4oSQ8ac{GtoJx&5PL8|EY%MiP+51FW{ zZ9m`^`b$DVgERRigw7tWm1S%0@0yzO$p_#)Lvz;v2LX|oMKU1-bogD#qxf3U=(E$` zuX5EwJmd1)nx}r=&%S+q!RZQ03G3~gtGCBaTTAxshG*}?uV8cQJL1?T697>2l~|NY zARl6IfG1*z%RLC3T&_Djo(^lkd7@ilA_sOdRkNd9|6FU+P@xO4Jr&S-QS98e6X}IX z6DyzCMN9J^+^*EX$skT_oUj`Ld8^Z$69_O!4sbahwk1n`R)WDfG9x+1BT1QoYT@5uJ~AUWgGx9% zbjz0YfieSI0nl#Et0A0tC{9~QHDIr1#D3k>JlJ-2XJ%y~$?$t*F~P|WDOz`~K_0%F zF+OF+9W@&)zqozhse|vCyX_Sj3ApdOejUzlKmTOf{-M@`#Fy&uzA&2RKD_)NN%V$u zJ=g!u&DNirAm^`1z5Z86F8qptnSb^FQufV!^K;Ms_oDu9IK}_osr9+}e?@fu|97Vb z*UX8fF)=bk%o;A}I`@mecT7g2&b>GA^!Go$aqHew0n?Qa9Z#9c1~_Rnlzc5D940$3@32VcA6rH8o436Z(eysIDFr}=ZI{awm))>0Yx=v-#Dt%JOR_%MF6sPk^2bgIw z|7&nh6Y$^r+KxC*-O}%FjzLui7!^O7dUeU%+}heaW~oPKW7FDF8Ftpog!<`T3(J9| zBFgI0j9p7IA9q-gfRW*~^!CCBht4c~VhO@f)T8^0baB0Jq_yJeBCToIzg|CiGC%)h zQ;=w>lO-a?~sgkO!9WL*6 zXz22C=$@bsW6ENSu8G9+sA3mb?Iym_7&VBn19N;=KG&(vnGkOHBva758 z==aV}P{k3vapQ)O(GAp#2!k6hUJC5w;o0->#2>fCQWb8~(MIz4>o z==kugk!bsk4h>aRfJJ@i`35IV`+Jaa0^|-fHE$&-1~iQR*Oi|V|K|+d8}~Y*r~7q; z@=`r2l6tdp+Ox6>c@}AkAM8|ie7uL z^!1o(fCn}6l9raWwbn~|zJ&EmvD37E(2=Y68jZ6msnZ$}&~%$)P!nT?Iv`w5*!umplEd{TFnn0#)mj7|XKg@tHeDQTbA}A`tM}Q^WDGNvZY#R^u>$l+{BiGsGmOv2Y*^V8C`z3Xn7y(W8lgL zCzEvY21@UTe2!z;YUMPp9)8*-ZKAE;?@7Cu*r7vWVkmWW0hQh>gu9@}WThTJr}X#p z@%8tk0Kwpsf0!~n#%MYH_g<{nn$Jx zkdxoWU=io~cP@ANR)6xunPaAWu)<+79`$)XHTB}fl#N!CVdLV&aCPIWANj5uPkpVI zNI$4*Xn5+F2#l5@`II0;J(W1y6kb##=KQEhEYOFB9zH8oq?`g#-wQ&NJ#ppg4zY>eXM zJbykY2vt$BabraVMpjuyCPx=BHL|ea*4-!xYFB{lFls9drQ8#T?rc#Sb zXw<)ENZPGLJxyqG(meFNwY9su^)Pc6h~o`xQ0L^}kd)NW;1m^gaS;`5SsI>B#SjhD zuvk~}IYMl9HX?O+>CT<&*R_M^mbFcb^7E6D@^5{}%*@Tr)cjCV5)+fER#~rBG}A_o zVZ-F-TXqD+jEskcakLf~B0F74P=yi^*eX6Q{WGW>RB{C<_b>3kwXKa05B@ zdFVrL&R+W%71iG##n*!V-qh4ZggyHXlODi^{Sm+9Qy0P zK=rYM?L_V5_UCsfD5{9Q%ImtmQDt2v*a_Mglz!^kL41|T= z)C~*Xi=!`fKxe>G$H@U=O_2WV^s{5_DX#OE37Z#%EJMTfw1dNszj*T|$YCym#l> z-)swIOZZZ)s{Ezew=Pol?zdvsINZaW2KAGFx&dheI(43b1lyQ#sql-icoxA_n!L{2 z(`RoIM&!}=4SQP?QCeU@a`>=ig%(F(MdR937m)3uxTM{eC)=_uma1)g^Y4TCs@Fg| zTj-?b#uEC*2V5iC3vy0llWi^WxeFqq8XwX%DCSDGU@>-FYpj7wFVk$MH{=9zfXYwr z>(m+d;^Qj!^J`^8cSf+ii2v{*{@5{J!~DO)U4J~8P%u4?Rzzl|zwa)+9LupfZ+7K4 zbzVukZtBCibPpvg9%5lj=# zO6KK=A5$G!najx;u2w#MdVb-|>1!;ibrN=lk5=*>P}Uv&=nf3&nUZq2uIDHH`z6N( zo7l{D?@6NQD}Pb!A3zp$a)d9IQ>Tj`_=kPyAbh)DDMzNT4{xLG&lipgo7PPy5 zROIT^Jb#XBcXx@bv}=b*5Ic7%dF&I*g4b)eq-37`Ny*9|?c^Vr*6z_NpYl;O%o_RO zlS-6JmEnqK#7g>fSFVxTI$@#Jv<;;}`BEoW?%EDsjuef?Liw&CQr|Q+qiKHnr{;hL z*PoXzf33N6nG;N1Vz2UJwC}7g&JD+F!IjlC$8d}CNthMOtc=4G1d_sAO zfk(B9~~HT=%>^KT{Gjv3yBh^UrpLi9|}>X4_4lvVfl6?C37hKNFt#xoKw@ zveetE@vbofZYNM)2E*oMDH68*w#EVIEIoPwlmoG{am{lPFm> z;lG(4rHEU)PuTozvf!X>(TBsblpZ20D}}&yi~n#KW}pVH zJ99WTOo>cN$-x_+G60 zg-_FYJ$4{P@b4&hn7SpfZY&}x5EGDd<(eO6^O&uz{xRb7=dWMSJJKAQn;8*{4+j{Y ztYp-zQE*Ul8(2H(NC%CQH;VQ}<=1gSr<{>QCeys#{@5{9cHw?O2M7IQR!)iKv25KX z)OnB_n9%sh5lYZ}Tm`Mg+2hlB$U2=recGlhddO@+rn)DB?NZq?D95Ik-e+^`zM`Xp z!RUn4I5pb#ELST&pBli8)svDL_LZkfvox1RmJ(N&Sppk$Cw}u%e>scrC zcC@-K&DR3|C0;SS{e-(_$9R9q@#F5K=g5_Ol%u3f$b9T@GQ&+`DQ&u5Ck$g|B>y?L z78-H06;6#^3b)c!Q?q;WK$o_H6&0^xQt;x1+1f7v51w;Rj2BSUkU_tUEp^?vke`p6 zsj-Fwhl`6$uBwQBc`P@eMCGw0*R7?6h2`aiU2`PT+?GF2q1$b3Y^f=vY!rmpNs?Q^TvMAm{Pv zKf?|}*FS6uNxGQD*GASs?*%oz=dZ;tGb8Owl|4OueLV&rk_oFzX(Fk^7DkbK25alY zSwg#eWMzAL%1SU?8Qoc<<&Q}N+^%Ec+jy{~q6(J}H=p~SIN|%;uR1YcC`oGpTzXW< z6zjGA+FJ3n)YR>br?6SyLPYkpVD` zj9yELTtgyN9iOqUFJoekX|$KxYX{@g)ARDu(;xQBN?Uc@wurZ)B$+BhmZ)c!=CH$n zSJk?4{M)zH)o)i?=Gx7Z2eS)Uq=D;G`K(b<(pVS46%37(H*LyU`dY2Z9+&KC%Zxk8 zj~$j|69OuL>{ZQ6>bItoT4GA`nn@D_1(*yZcrS3iJW@ge-D;B2@Hy8wC%FU02t==#sUyySsI=6$aRriN{Zz=?`?X z(;^I;2LjpP_UFN}`1eu#+UNH>vHvFl4IVr-HP3eC68ZNE4h;`aObnav2iDN{8z%NL zfjY+=1SVHAg4w=-7Vhj|duq1~dO3yu2#tmIt5n?FoTld79O~V>jT;XgLK%Ysb|TvW zadB};Npbugi?HB3cddA9U%ph<*YEBz&|f4i{P6LC7M6E4mCu5L=H}uEzn#e&wqpK) zkq@Hc4m#bwt^DO&WP;9v%KnWndV9Zr?=>8DaI2X2++Z@`xgm&&Mi`BJ>=_!iFH&O< zrBDd=8Z6j6dqwA;UL1a#FAF`=x_;d_DmtBoSnYo%Dlh9^eWXj8k+mDxYY%5P8sm&c zCflAofzl#P+TLD6!`?nj!F^DIGnb2uOR7V=u9^<0rX@~o3F1IRt?&|2g7mGPH+T!*!*7rZ#O^YwnLm--p` z`gKUi>-(5;Lzb`o9!?!;k^`*+19;Bv=r6wZMYdme2HmYi#G}u!)SrwEh@af+{Y`n1qxlhNhwZRm+ayLyZ1@h8{FT`N-Z;+^J}&Ks`jaQ?zh+Vk zE(8j_eTywiNcj8jpO!(1TEjy-cja!{xMfQmB{R2?i;D}5=Hf#2e8eoZeYA}m7m!DM zPbMbf&^8%_mu?~+!~TtmI2zivWWVLwWO2!Ol{3V?Kp zS`!n;G+uA&rgbFa@o(Sa|6Iree5j+NCz-3YD@%EVO13YRc7dL&6g`lce0?PA;WRjc zx{FdwtQi)!+RZ{wj@_O_yS> znsPpE)w?kPUCT3uX|H&CwY3M0Sp3H8!sT2W4%Es%PcEO0Qv+h#$}nn;v}V^&EgIP8 zaxgWaNhX@(?4NN@l*r`GtXXDePrS^{rnrT5wJolcm=>@-Nou778Ze#T;%D2W#Q7^*p|$Fk+~=gpfxe@-0;T*a`lv(7w7O&9>K z#>z@pcJ5n}JP8ksG$ddfBkHDFEQ~|%HLmoy)Jk3%X6}p0TGE=d)}gJorNh-eK7su9 zbS&kJesmk@bYA&WKD0@9u`98^J_0;i+ul)4=%Z2Y?dkj;=XA*ZBw&I~+&KBlz);w6 z&g^FU7vBNCj_-gZd^eL3*>zM&2^f1TG}+fj2%iN4Up>k9x=UX@mG4>5yxL^K%<&UV zpBJ#OuWF5d1^{g{2bDUG0v1>3$wme1-hDCx0-~Y<=Ch4l_e+5AS>O~VD#`M-%^^>M zOB)>6(1a*#xAU5vjg2iW?a5K0TWM@;w+cmsCf!Td=&)YO><Bn?HZLwvhme_Ua`I>OmX|O;47+y+c9(qSw?6?Hga7x~$%xt*Qv`6)H!aeQ|_C zQTVh)fNk1Ut_&c?wLWo1|TIP(c9{Gf~V{ArnLPBdjd6C4bUp}{{{r-RqgC@2RUxr$x6*n?iYxpSwP z`L3NxOdOZ{E0W!f@zCb(8|9ugO>4K{((c&BBb!foDw75@ZR?H*`$-o|a3ZFzOtdJU zwYgQ`IIKe9>b*|dSK?W415PF5>kk%K>QeRiZ8%NaoMPHpxe|;@RvTm?F$1@JVLkmTwO43O2Y;FK6ltoWY zrN%QOI|9jN@#hy`)d0)$KYqcP*64e2hRcV_cC85S=d4t=R^go z@_ORe!%|BDIr|0nt>S#+Gc#lNd_7+joX5G-whQfD?6Rm1z^o?HrO>^+Tpz@RY??aa zX=0Oq%C@??78JR=O_mXdhet<;&B+h1UQJHEdR46~J!)?F^JjadQ)dq=u@AXE$_M=F z7M(mc_VMG`y`ag-zy6xMPjf(yvXA+8b<B`Td@_6M}&j~1%d2;-+D73bUpKWioEYm>n`@6L{+XvR;2S`xhu?g(mH?<_A{m9kz(N<>@t(55mV}qW~ zTLvextUD65iXQH>UrUS!GGn}Au1Q9*Vy+!1xD9<#TzQ=68N{b!`tvgf2XA-g=hpC& zGG*U;_4+wA*ot|2-N{q2Gu6zS&-iKj^WRcRUE<&sz&Kq21eW5e1g!PUQQ1=yk=g&jZ((>}s zdbr;1T(Hp|zyz@4lQtBs8ZGsv5HxIUwX}>P=kg6On2hD(+~BgZK#g;rbL5_OMnP(g z+!@h~QR8Lh=hx7%W=ojrb6;JIlCSCj{T}u`y|}U^Z~X(K$>|MI@(<2^$eb%;zqzvN z=1N|Do^ngfW#(H*Kt$M)#@k*KO23y$4p?{^GxQ-hY}mV9=mddq;)K7fqAH^*)l;Tr zV>eSC*$PEb1dc`uof7fcE2iN+&%_QNK6vo(omomPDB1A*q`(=(%fn|!37Ag$Oz6ti zO^=dKR-ADkxOzpuu$4Z39@mjhS~M)PlT(l6m()jYA)x6_PS(~=*@?Ssky;c4`34c~ z?{c!UlasTx2)DZ1@2&DKDluwc`U=r$A`6>Ln4ku#HuT7mlO`fVlal}p-zU=#)LZsl zA5Ye={-ahfWB;yQ`}gk}&L>p1I1M(CKALH7xRXIxpwlcGrh1Njhov?lDy~hq6ZvW{ zPsA%r@-l0!C2!Wp%?tiFUcgxhBuVGiz6H-zIC)berxb+-UR_lIrhH z;!6AZvuVbfm$$DkGBOU=@J&dh;oJ9tsKRu;LgV%}35mA$=Wk@eGqS*Gb+{^!gM(ku z_zv@6uOBFlNgRH}L_1c8XG+1o$(x-QM}zX@;wvrFPdz=KhwmA({+37V4fuxEvPQ&h2ADx3rD=nywqADvHR+NOkVn*hN==lh3Ft zn~v86H8cpQzJ8(~Fq5JWFFSR8R-ffR)4VyU>GpPM=^Zll25Y{$NLP&9yUBg^GbiOuV1BgT4Qdq>=iL-K%#9N;K;}s zD1)VGR_CRvo%qkY>gsAF*mPLP3Sp*3!wzvvKUy?$mu@$|kGPGgsXZae|Fc+!q+?-m z?3jgxk6LYp>EoD9m6L9()fD~nk1t)mj7B?TUb3|{H@8h~pD6u!^FwlSQBNpuQd{9| zu%rIoq7k`sfp8&=){$Bc5*Kt56{ja{9qiLFtg6fA{JCw|&uU zLvRrQ`cDMucQd+gw z(JGn)fU(lqxUva!Lgtdph#-RJH8;myIIhC7yOnl7A)Q0W(?C;G>&*3cdsR)+pEsik zkaSzsFD0p>ujulYY27$|`o+uKgRYmK%`Nzp+%k|l0${-z37s`eZvT3gACI?nV|XzaHTHpqMo~LWrapt zB~IvQ^6G46)aTUBx8+Nv9{dt~TtB0+qocN#k5|q2xzGuAc7NF~J!v~C%Ok(HIRyA^ zWqba7Kb2nB#;9)HmurAhmc^oFZJs^RlooQr)pg&#P@G+Y=6OPdzl=SxNF$X4AxkvW zmnrPtt*ve8ZSaS2wYmA{PY3p$B2G=s%uI>Tn9dL(Rv_BbuuMckX?aHNGIWuREKZ!z zRgZ2b{ylBkzDGSVAt5 zp954Gwx}C6n7+DEAC;R#)C)38vcb{@`*eCt{i}GOC8>3A=F0 zMd5j>>??w1m66xdAy5n`{Ii_Sk>fLoU2;=kCq{$8GU zbRo?bHfLw{ujBvUyT~O(`FVT|G-lA2eE4PVVP1({G~jPfap+xryQv|mr7)(G;-8p@JBD`Z8Z~wD6;LpLTe`BL-iGv}UJ~vd+ zTP4{#69UQwRApoXoy*sf?(R;|eoUF2%`{Kl;(1)C$?#SJ+6-_=^$FS%Q7U;nNHtUh zGs4-!+H3oz_h1xTsQm!AZ!J&jt9AtM9&SwBV0+=hwQCoi)GST_72?(HLIv%O8?J@~ zTk?+hZ+i2wbo+Sy)l07=HST^{VW{YwXx4X>+Wqjlg|O!6UH~gdyc1 z>kc-yG^1TzITQWvlD0d;rNmC3R_I@y<}r$&^x&Ox?P+dqYiqu}TCym0zho*s$9d2- zaiODogQ>BxYk_<_Xf{<#th(}AI4aAsxh|ZY`*j&c)xpIDy)+9B92t=X zPVv{mWp(dRS7vADhIz9UKE&N8d~Qod@kplW=UTl?+?<>1*X}cDdU9}TVq#`y!it6! z)&UUKRz3cH+gzXF*RK;3@#@c}Ivo&TrmE3JXfPdX!L=9-7wkBs6eMO&rB?Yt4QjvG zr>|eBt_ifzu#VQ?FhXGV#|O`w-Qty$w$702V5;4>W|dL@hJ29nNRy$EH4ceis4 zq6YTw5dMehYWm92*~d=a))qW`ZBa~!N79auwhyh~AFzFUK)@ac2B+sERuMV4p_T(p z-+e|#z?^^sd#d?ac3N6u;>Vk7n6@A2_LOJ4EE*qrSllzv;;r?6GCJu3b?ojOS>kTJ zQn}++WJgYBTGUfNu43Yoq?N&zmTD}IqffS>!o!u7!^2V1(hN!*l=GLaBLK3Y4Mx?R zs})N~H7e?NyE>vhe1ITsglz7GjCK`05q88{YpB zHcHnXAAbJ)vDf={EU~-0s;W?C80c^B-Z?mUiC)@J+nccT1F4(bBz#WC#-?(FI*aRe zC^IlrZv!*)ix=#a&f}-1hK5pvX(Sz0d#Ci|6k%I;*@p*YKCsm0D!Q#_xa}z*#*=HU z{KSh!^YS{m23lTD{;Tp!TkrMl{aK(4i1=*AD6QMrFY5Ddoeic5dsg8=c$(j_7#|rK z!5@%!8>*ZeMkO)^6v(8dySh-Zv3FshQW*mUB!lVA@?o%j4vvkC!I%^pnn1?!ojZ3P zIB-Dtw8Ic|xgNzIK6>=<;iJ!?+tIY*2@7h=mY2sg!p(%_*pTNAM(d2n?|J(h)il|5 z(`z^FbIu9>ku+c+&DSE))AIZ=4bxYyU9(J(-!vw4E~)wpGDgQZLOU2)8GfoK>_wJK zI)oJEefbV;N&Y;_J9iBa#i{2G6#HRu5OPD}{wj(dIvk3|1EV&MrC*=2#FSj z&@q)gdQ?V6Mt=lU=~q7c@b7UQdWMuzc5d0WZOfJ|4vRL(n%#QjAMEI_eO&oMB55hY zLf`r0Wx`e&*;lu{f=Y#&&Sm+tXNBuH&!6J*JIz-9rLt29wlIb3toOL40`Pl5KF(~G zLTD89>}WxTxeTAA^<9d9YR=pDY$Fqz=Ple>Yq_}cTZeyc_`u0k9*6`Je&Qt}`r_8@ zLto+oD!|FpexQi>9AW%z)lN8%?#~TA;=Rwtf$G(&fT;p^t21+L93JZKP6p{fk?o7ek}L+=Y@raMq=jPJE#)7vWKCr zQBSXM{9;*hz~)Er%*>3PQ~Nfw!gjRExR==?6&`_Sguzv0_|||3_mHn>@xl3TC!prK zNO3e&NXW{{xQ=@h^JM0E^BgR; zty{NAu-r;*>+J0A2C}Oz?0474n_s>9`|nqK2_*A7t%4jJ_V&XL1qFBSZf0@w5kkLd zOO9%4^7L%FUX7NkuRTM2)J-Afg=L&N*=g%62Z3m@2L|qUGkQNS@6MgPwv!pQsV_i` z_QlSifPl2LfbBGgfbFkvfdG+ zC@45`L|VF?$a>LNi24AqPe_B1FqhP(TSa=usA-9EGeZNvHBwpvLv?r!qjT#5OUHC7 zazLjw(7m-7wBcgE>X6X(*5FWpja0?fq-_R23Bm2jmj?1OjOU=_w?>YJKGGU!$~SNs zz@UyCiH()~ya0l}8|;9g0Ia$t6iAd*?gC$%Rogtw)aSIpO5~Bow@g3-L{0v zs=uCgp7De*M^8`t@b^9p&CMl`p8slZ^?xc_R_vTGaO@u(1mL?*Sme%ev zc$3%3KKSFuhK7%4hX;;}i=R3rTt}Tw+MXsM;qNaYu{vzy8u?o5@6Vcq)=YEY{KyNv z2nq@d3wj5X;@b6saxF=V8FH*Gf$zzHqSUQBm48kLMy-?8=jXe-=N$bV^3X`}Y~MRa{g}Z*v9uEdw7ClA0HF%q<{Gu`6K>Yg9&`tA=o*tCSWK zs6cI6otBnGhOe+mDbjk5LWEdAjYZfInxoHHG~l&$kP*IIdjc#ApobcM5K?LSy2v=@ z_~Vl|G~wf^)Al$@5BM5p*?~wnq5WBY0W$Q~sIDV5&}kg-EJbgjd@~r40&5?J9c>wz zfm`JT>=)PNY6tg*gdm(*l&viPj~~Mx zP_Up0^!k>rKEa>qrFm?o-M(!2fPFFO|42-3rS-d0mP<%cHGgeOzG>U}mL(?cS|+WS zK|4&!38=3Qu!@w`h~6{7z%zD}$&LJv1_$W%k7SW~Z){vOoRyW+keqbU@zSMp=Pu!w z7VK@Oe_Gmd0p0qOcY4`bmLXY23yq(mz3uIdT!O+U5Prxmi1HvI@zA={o#QYZr?v~s zZ0S@9Yo)3HUU|2vTY$MJO@nQdMih03o#r4kxQ~Zt|NXC|x_Vxz6*;p?Jg0yPUP;+% zBdy}JKDUR5oIJ)u33{%3db*Vma;mLENz%EWKR%B)^2;2a9}SCF$B<(kuA^zI?lXF2 z#+A^T1MNAhG+8%{`jyw>$B$n=v8bv2K~dc(o>*3fTXQEqgF+>#lvE>tV(yV%(LV2= zWG5zuhjWX(N;7Hek{1&@dseLZA;l?}PWaqoPwc0)8^kT$u752{G|X0^7}s_C3#@vjH%+^SE#;8{Y)^XH0q-{Ui@ z^d1;PtHsqY^*1}D(UbF|FOR8JyMO*GD_=yFP%!=wYDK&YepECfL*oupedAOKAW9%JPtOPV z7)EN%`dY&mBk?HM90L^zMlzWqjin-jI#3RM1kyQCJ75{pNO?Ay10*Du7?k?8qxbf{ zYwps55K|_}si0tC?iW#Rj+BR06q?mW&S1k7MUkUN#l??StJiAl9zwi6jAD!Me_I`%@UiVtpTI;&T^d2Ay?w~&&jN6Ev>`*)- zXa3K;5I#@SKasw@fU9qmvrKRMc#FRKr1#+Z2U6BU4Q8ch*-g7`YhJkFQR5{G7}2tb zlD(ahWW`t3GM)RdV3?rwp!I9MqEvQJP+1v#MP=p7mz7En5)*5}hU<8sMND+vd8;X? zCS+zNDGvuM9cK&FQg$fh8q@ zTn||E2KSz&348Tpqo_bTRL2u=Z}sm1_oSJzBK{z}aqCuFR)F{1qYYh>Ty<$=_x>uq zbZOhhdCR-5Z$Fc%^rfccZjY1=0}8%fy669HxW#QaWyIMSu@^>^p~+~|K_DeMtW){+ zZGHXQx7Ubc^7S7;U!ZPXv75Ra)5_}bVJoX-YN_J0d*tJf4EdL{)8|e3HDW%zKjf-9 z@ad`Z@ak=4j^vvOTuIMY*TE4eB(y8wbX1~i=;~Fg{`=omQuR>X6gMsojUx;OzMt+l zT=9!ueC7KOkElbL#)lVQ6>-@RsOlHK%8*7vI&=D`zVgW_ZQfFFbQW*if6S#kn=*MP z?P8&S|TZI)qdbXgQB8iUtYs(b-HU`@o=H7 z*W}^MPanz`uHIUotO*k-jqM%-94z}(Xq9Uawrsc>^Euo2a~7{_**e#r=e;kBCrdTC z6ItML32@9Tb1FA8b)N>`<;~00)=}Od{zS_9vjDVvXYRXM+-8l}QbuVe#R*65q!L=A zRh0gjF9VtkKT4t3LWK|XoyxQ5K=IqC7EUnbyooc#0X-^U9I^84^HexmUS*1HM|O1J zF{r~0J+@SWaW9~mIRQx#uyVXOHZXHAg>g+5~BR@e){Z4wjk2yZcXFwqGG z`U;avsDsmOd|&3;iVDLEe-@ZZ%2>A*adk*bUnOg?{GLB}e=@Uasy-P~ovZPyrwa}F z5h`@7n=)Rm@SLhN(PlhGZ_g7t?9s5TDLvuimi0%^lJ6(oI^JB8#TBvFRNia8@7)l= zG(_amg?0P%8@4dwD9w%wb93|abL$~g7#kax>|RM*&R2xG97^R1$XDZgi!-@(_8RQF zSOwS`0n)r{#Vs9khs<6&*g1wILh2`}N`;LJ?c;#Q0No`sawn|>Vpaef?B zMc4)Vj3uRz1pq}gYmpz?Ql<%O<`&o-i~^K$jGs}c4=@jf$X`5R3BOVd^hfsRVTayV z*MD891bPD?To^%I2OK>SX1+_8sYO%@i%DQM*!v1PQObc^(^&YgO{unMp6zS#eP9=3rnk--(OnTbo{&<>ppYUJlvXomYfw4WOo`Fxi*Wb1yGL}i*^M)^lI>zfN8`|Ca#xLzPaVtBx~!e;9~WKB*X zu~n6Kut9@>Z(SS0`;vJ_xbOnc^6IWM!Lp?0r8t;Pl00+fv-TKGet9JKvf}cClc=4k zmCm`g;bhe(ajnZRBQzW#x7|JcWaFky{ECYcA~K#nXWMEu z2_<&jO`3N>AU4ayzWj36DO0WM2CjStUPnf>j$N~E=-*P`$Wdrcnft1u*w}h!%7J{( z8gB+!x_-s^vC-7Akg-3rT8TAb1*=C34_Ke|hK@x6VPV6kPw`iQ$cv9!&=V0VmU4KVlj{2zWDf~ zas->pT`&Fp9s4s_^xVsamTr2H77eivA9k14uX)+IT+w9al0Pq(MnXhLtZ^WGo-9^m zY9(f5l$Dir(Ho8|0^_~HV*GoI)3I}R-#9WGq6fqf=dbB-9x(G9MWlwOE+Hy6m3!-e zL7vwX^0EGgq5@He-$H3&^^}OzDR~631x(QvI^n2xKxcXNg!uq{uU(2cJTz~3H-mur8NaNC2^UIg1I?8U7 z@@_W68V_KQM($*1AXg)Jz{;Jwqh#-gY~kHzr|zJ}$S=5_im!_WagUV(<|J_O$J5!IkG^Rv(PO67OXf?^~67F$7 z$=3Dw6bVOKi#>Bao};(pzv~TJ4qo^haa1SAcRvtJO*JFfa_#L1EZJsRABE=WCrZj# zOjby_T*$rLiiMTTniJB0A9Xvoo@d3e70RE|lt0Ino;6Ckn_1ABrbq6$YTu$-pl_W? zZfTuME4PbxeODm<+~1!|N>k-vHNWNtE13lbT{(buWZHZ4VW(<7 zm3u)O59f|LULi4A8vp4r^bRxQuNY@dD`_nVDIOlUzgENl8gog83r0jYM1HS=P@(aCc~ndExZxl5*qp3=i}kEyPtU3RX!BX zCMsN3tt}T9+PMvA6!{K0w3!IbcUUh@+53ntEzh}v>d?sNmD|3!T)6T2Ch&{;jwapN zcGc6Hckd#wne7OmZjp5*6{*!q^D~oaH~4iqU%$X z!Fd^X35AP>|H^Tn3uBwpH{GPAi)`IAaEk-6?!_(4;+inlbjTh4dyxl+Z>|~o7`#!| zWvaK{<0+J5;|G(ZBtc|D-~Qv{)i378+Vcpk3LilQn$6$`iRdp67X7}KQWR$1dr=BZ z6$&-(@VSkpf`-xbbaidGZC&O4(Iyx^3YHO=p*lNLsYVJgyYymC_4EPnz5uJH*lXrg z%}JY&{=nyVZzIp=BKxMDRCOuWvGI1D6lt^Zi7%iSc#kiPGe3O3#|x(D7EGy}txEeR zrrs`ekf)#b|%A_Wi!2wVv-xtU7 zrcDr-c}tz$mm~PxzFdy*XEMBIM@TH|xFKSOL5@Xz;CdeDPdC`-<>sXA+Be<#rDi-p z;0mP&SiUD?>JDFXXu8z%`et;XLp04X`ml3P+2ezP3XJ@hi%ptsBoat|!9P_nugecJ!_?c{9YmFDNk)pGkCixYqZJwc!^vna}`g8K0ee+5-zhS~k)#>Kv0 zIN#p3B{E)IsCi=^vaQpm=~=bDVs>yrQn>;_OHWT-T~BXj>3-xF;AT+gwKK>|&UdMg zT1C<@pK+x0n3T>>#(0;XGCsO%TK;20LyZ+TrJf8P zo}mO51>B(C;@w7|+Y_SczI}8c6(ka~Ya_DH<#~I|xYF)&ad#F;>^*II<-*9PiNa2g z;bhjz6G11tsgJ{2&A#;l?4EZ2YMl)Sx^=el>6i|e71t~KOLqkPa;go4`jT4sy7f}(he(mbu6^EK zb5}iMKu~Oy(o@N~*{vhhj2PplS`nKcK3IGAF6dE49(HEZi+WTw&TF2w%g!<_$|~`E zTNL*4z9y-ny98RN-~PpW=9KYy!TmM=?M(;eIy2%uKEV=qAkGvw(T@2oe$d!=2}m9t zl`G%zYCZw2(=DcPG06D#W3;vw%71K@yz(jjm{=T8qEwv5vS-K2-q$x*uGzLV$J4dx z)O*Vok4s+n?}w~jgA^+aiftX5fe zMn+avhK-0_ku~pwh&C6dm{h<*w20Q?UU6|@Vexyw3=Hah{su)^Sy{=+sh=K4Z~2_0 z21F<&`7wVxtEFb6a$gAiOjcH!YQ?r)T=4ccu`?nfJ)x&LGz z>1;D7+qSjr;wM$M1+;yw{AWH>z3*>DGx_ZC@r;b|@c~MD-=R;2>*}uCmsH*wyZy(e z{pJxS0)c_h&hmDR4BdG+)@!mD=(inP^z=ggXrk!QmKkKz?E&aL``+D3CzW0wRMqyb!Ms;*~Q4ZlEb?S*9W|@ zy>P+8;=%=|H}Ynh39ll&6@WBx>@?|8!0#OaHDv(=?;}QIT9E;MZ<;u*!U^E z&2NPnZlJ#SDDR0%x=6Gp}t?^*kww2Y7MSB+3`fffSj~ zduqp>d_+gwo9=9jqGPZ^5kNDI3LU=QZUYBV*l9=fsT~HSrz4iv%o~NsJ&SWI`CNdU zo^KuKsv*YVLSu3GURf9f1{1)jhu{1Y%qoUoKta^i90MRn@Go$?hwxCXH`q+kc_^9T1MT36 zvEOK6jUFlA1;+gR=Sz%Vf3qo_@LPe={e3`hNAP$M3A>lXdYQ0Y+(PTazgRw&Ff8Hg9Bj18h<6f5iZ7)`J9jq0QGf ztFpK3i`SP}TL+&J4u>pgSyg;>#p-zNJRX>d#li57bczP7u(4*V{_!ieCp)xu#ER;LTM zh0IT)iA@rI{wO*O|IA^`mwT?-_<~u&=RV$KS9|yS!Ce`b35)quo+Uif8@$q$F2YP_=&aXw@nnbcp8}<^15{{va2~Spc{d|*)yBpq$RFg&L0v4bLBN+mz8DfC zC3-F%EwnEkdwwJ;G&_gbW_)}qL4Kgair@QB5P>semAF{tIxyAqJm)OqGL3lmJNBIt zs(-w8y309Ch%kRHO$S|z%@69*@b1DMJ<2pOGTH(^+(1yU)TjjVXXbK8L8?ZJ=NO!& zTeb*-egaILjy&^+PA%Qx|$~%5>+$-S&rovS99Ie5rr>`8sZHhN6go0I1#PHN?tDBs{+|Kc1Vbo6<1@ zGktBwdDk2(t+S6XTpS(Kn$QYXrq67UW&R=sdS4~p>Z%64-bJs zrVxndk5#6`i5nZ}JsQ(RzkceQ(?kE`XdaxA-R`v?1b~kl>RAI}aP)XKH|y$2Nh%o= z7`J#gtXGD$)+VFZfF7at54sE-90r=~mug#N;=AX8ijv0|qN@7CR;hKXcS5`MVH2@Hf}aj)MF-Bu0Vj)xvf4Q)KI9 z8gw+J*4IHz;p*ni5T?N|UAgH zem-7I`$wv&ghc3h?db4_?f}MIXsB+=(va8SBVnDhnX0a6o&3*__c0bo*PbQr#8f77 z_P1D7Ed90M?&D(;Lqn4xSJZ!cF%Y{tC)W&Srlh4MBvdGve|=NzTwAMyU$@#%*A2(O z%{3w-+A#?e=gO`zy%*%*<32_G{4<3%(|u`ax+zz@x+w6^N3Fk0x4;^f&PYhe&j(#8 z{M%ZrI%4(G!^P55PqFVr>xUcnlRljzU(m(+fBTr^y=+w z8G1;b3q8JG*fqsV{j?bOUwZ#si%&LDR=M**ELix4oc?>IlZI#Rv)ADd%-9?pmB478 zqjKRwnod67ufP2Pn68hKukW#A78dx%unqVY*ud3r{OPm&$Hw~+yq{AVR?7_xCc&a5 zeaT@_SfD{Ywhn&as8Qn2tGvgH-}4IS0&7gyKVn}^o9Rmat|T?~=Rf%I^QR(e^gTc#}649>sk^{IyvGc!YDZZP2{vNes$Exo=eypxcwd>Z70d+w!Fo8Zf(&5p> zo^tl0to>=h%>j>igKsOy4f^`tS^fBNsz%;ir)AvRHI!Dd1bfo;U#TRdWPD&Cg+!a*fBG^Dz)uz`+McO^hS$YvxADj^ zNu#(h&5DtP6~BViE97VajQt8A+~}hK8x>i4*t{DEZUbvH0P)KQ=-q2F)K52ihcH8xa0a_0s9ODOaI52k{n? zB6#zAxu-IHzDTB9^3q8qJ3HSBb3|40Lh9#dS-9=U@_c>GsSWjO`uss6c<=a7-J> zI;_|4awkoF*>Qs%QX{Z`})X)q8Ii5IXzJ9j9b+*sI0~7aPpv$9_gTlP4 zEPSwEw)nxHf)M*GU&e2%J~V_ZGAK}i7>*HCSnSO#g5YeM&+JDzMTR5tSv#S+}|mfnV&2ppI%(H1MB!^!TxrRW#)qd<}=u<{#bT_RH)g4bpeEQ5$2wwBnI7(4@S9acvMVB+wo8^nm@o zHoT=7RCFIb1T8*Yef_hoZ7P>6fR{4`Ie?+$6cv||7xnPGc{=Snv(4=6D&hSXnb_GW zwPmSe-{@DU`ctschy8kz@+?L1${Al@C-e|rwS~owp{xAS@_!1(zXbZsoI2OuRSXKO zb90X#;T!5zxWqb(*;o1x~Ms7T#770^*M}We|!pGxPUK2 z8t$mei_%q$Bx)FQ2Q8VsE7iklMMVTmedfY6C(C8}Qd2gFmob-hQ_#*iulDHikJoyX zs;Xvv74&6Z&UZXM7$PTb{_#m)AFr8>FJp`SUZeR>$9Y!r<#)S*4#I;qh+fpH!U)@p9T^a?Qk}M>P~ncw?59 zqF5Mgaw>g#!DbQ@Jmw;V4G#i8Ft$B9|3=F2twe8|+5sE$Jy$Aruc##>=S16`= z*#o)2FC{;QV@J6l>ym74R-!ks>K;?cW-3rxdvmMJj6`4l7~|~hwQ%py@Dm`NkUwmG zhfmhE<6=l_E%w@5)qi|@+UM(|#>O-igBNSfAd{JN7lg=?+K{4Y@5|_Y9V17{)2wW_ z1kn8EniK0bSXhE$gC}-5ixxln5x=vN_B~@QASmfrF9jW~v>sWv znMH(!J#Me?sT58bFCkA9sRZ$Lrnlu(7y1G$0!PB*9}kvz&SrQxx*%)i);Zpu61#c2 zQB5tJzCe&6R;Yx~>3nYfpegkE8Ncr#IMY`1-Cku~@DhDYKFB#lUzz9#1%tqxy~{pe z23lSaiVoEcwV`Yt^l!EhO3@eLmLJpy!QC!3fvgJ8s-TPa0t{X{Oms-lwvPDobeHlw zokSAio97mYDg(oomjP11AN>`hb#*f5zrJ~Qmsc$CTJLpeB2W*!HvJApH#LG`k`1hL zwi5(3!2qKp$ z=NuRnQ zdwShLOihh_LGhW8ZZ0p3z)J%y9v*$u!#>Lw?ns&K1#q-({L_xUC(b8Ad`F)8gW%u$ z`=VKA_M)4Kcl8h*isUGl=>4gZvUqEo3dZ0-dw# zSgnN6T_j@3HXBntJy%x{#BMXD4n>n_rj_LjA7i{;bMgSOV({D?Ih)dw?n8@l3j}32 zpZUj_=1uGoA~mM90i{G7u%I9hGGKz#ygYTbX$#A_+|#xcFsc*d1#JL%Ri7A#{y(qD z0{z-S`S~x;LYR~8(OJ5W!wZ?rzP^@p{p@>@imbP5?gko)e}6kijR2DO@X*q#r1;9X zj)7{peOZo8`|&kWMBj!ZUURaOFa4oQ$esY>)BdLATwK4cvBUS<6y;K~?9sGLL+EQZ z-a1WUF&2m^IlT&xujj3U zE`jSSCy9#SDxq&P(}+ND!wevWMH)%-3F6#EK&l#fn4SQ&GM|NRcl(O-3It!R2fq(} zy9^GF=&Ywtb8;#a`kvkyYGA$PhaCF(^N}?K|0{rJ*jzCn_#8V{>Sj`+L?6>Hop2-h z@Vve4Iw9-pO&&(sr(f^`I5$&)S{iI4$m~G1WBDqT3`%toL|EZsDF(6k_e9F1Jiqe# z#u`N%r0V(2j7oEJUCC#&?=3d4o+vQx9~S_UQ$<#zTC_y?0>#YWkhxMNbm>*lDwdM5 zXpO_@jRW66m+R`E1>8090^ygHQVw0>JXs+b&iqB_ce~{`!KpuP>SmQqsVT zO8x*Rxrm6N#CP`NSFL?5`ie^f1g215-(540%h}~o65*DY5|b`loS^rvJbv34>Mo-x zA)8$rjsy;7PV|SUsaiDLyK?1ssU$xihORP}7=ZZ_ zS#F&LhEK9Hj^DWf29oN?<`#sAW(EcZUphwreGD9hTj%D~-wmwX2ADO8A>Q{{MUg)B zK{VQol&Yig5jH2_^w9nlyA_hePMd>nHsnFu^s86Lfc`-+*7NGuH{`6l-%hG?+wDJQ zoDoQqJso<&Jdhp68WnSe!Hi3dt5wY748)JMicr}lcI)mBJ zg8K-RE{+`|4=!O2n`r`-1w}B4Y)nm;ebF{n|DO?$hMemp9fY%q{85(wC?EX$!Ed{MTx3l^(C!B6#3H zV^dzPG|7WXsee*z{_a`G31ctN5Y&kLQ_HCH)70f(BP-IZnxOTbNfQi5!m1*HFGmu} z=RKKA{&adqhDMAuYZ^WCLS4A&o>ZM`paqo%7IbXq70%7rqN3+u9ft2zOR< zg4HCjX&~V@kEZS1t*XeFeRE5u>rc=W=l5}`m*RQ%PESuQ+=f1}lZynpb9uucJPrbM z8geF{R!R-A6Ce?G(W#r-AYtlVE5-w;aF3Ve6CN%7wofmBz@RAN5dZ~YYaJU;m5w_# zsq>JSZlnrD#%Pi~Oq#2JAB&59mX)4(O^$qCbEH{v2Y70tr?|Ab`3*+B43YY=!FPj} zj*gj`*5~EJJwDJZV;N^#vi&uQxxumbdZ(>>hgD`A0+-?o3fgZh-QNKKd6Nda1jF+P zvl>QIN&}p)Cy5xx-&50S@zxS%zz2^9Dra! zuCK!yL=Z>AKFFL^SNHL`e7Ta(9VRD6Q|zxXK0P%l3EILtoo)sPIwU|SKqj=m5-_YH zXG<7KTWQbS;7FDBn4vF0U-)<_9GOB-{(KM<^8jXda8y@J2=I38T?a8UZ+;FA3cSX$`@n-=S2BlWc!;#_STBWzC*~e$<;!D2agaLzAf|ollzP2o zoN`@kxzpgmhC~d@Jz9%a$3KGi4$XpWt+g);B3pM-`NE01Crk64_QY<_;))R{zY;*H z6*ayLJRs1YExEqEy-0j@@>?&!DyXtusk|pQ`Qq)X>puo_=Vt~ys6ei@I1rYbd)V2K z@-jG>wLpfU6EOcKjV*^~vPuzfwBtC4RSIC?!LvE1X+lezjAV1`2@r5i(`!(S8GpRDHNAuKmZwSkK4?GU*OZx$-t$8*Fm&;WnPy?4{n$zvaC1!H~O zru(Apt}^;lk{G1ywQ)sg`d3ugiXl(;vTkc_&M@G~u`>ahUA?rX3`$;uh{y)<(-_+6 z7v46+Jp?$J?+0N>PPEQ^s_;4XdYNX8nIKdY$XTUBQT`yX43Y5>nLa4adR!iB_K(6$ zUC|EV_s5SbX??!I$?v-n=mSZ>d%K{#l|Vlw6m!kI(q}LcAc?*QiEVD7`BlxCjky3#BBcbON*+fT%7IB@h)MX)3O< z^~6jGSfo)FMRx?bRU!+NO~b-!)KmdbRwH^IE62sZ0}rw2c@02$=8x8agy}8lvtV2N zuKGBlMSZ?iszy%5ySr+tJsv^{g@sR_Chryy6+Lo9POc@jBWr#lFSoFLcZ+aT+tcH2 zZU_QI@#CkN)B9LAU~egSFHZRftd%Gk>AM>pcZI1OaB4tQKg)3Lvi@26c-|xU`{^uN z+B;x~h8CdDf*_WBI?7&$DOY{b#F1bahqu;P7?)pm3zj#k$CDcm5-?eXT|;GSRL? z*nDvc(?8Ws30#~nf`-^Q9|7ia8ze4YZ~NO8O|(N1UpEE8-?(+;c62N+XCH7#DF8%8 zvKfjnoB_Yj0ID$wGfq%BS-!o7(lPhy*Kc2XIa&5qc$QHSN<)JIIDylnfpG5{ZQ@)W z^f-OXBO?z};WB*X5^|6^Qu$=?B+Y!GTjkzXDG>hE{B}i< zhG%tkp<^7Nc+*n1$B#WcU@5(U;9~L!1Q(?gc+y?YsTyJ4%zIngpH)A-lgxHDI{QdU zf+~|Gu<&;m;Vw=IHu;mo6e9mL00Bf6lLi1;wn2`$GBkIgqHaSKg{dnfHN}Fl)nB=LOE8Qo{8Wh+EajM4g zzx$>^B=hTAU<`#m5K{uf?^gjF@-UK6VKHyrDxKWy_~nA!xWi;|rn@ovUR^a!*MGkS z0u{T`$&SpTE4$8ZZh93b52qd_L>?iR8vMq z+Ag+#cWlaVjEv{3V2IKsOUp|GgSN4qD82cz`A0xzs$l1CZOzDi*QQ{KOIE$oZv~$m zkaAVNhbC|+VWc&^*g=D2kOU{TBXddp76m~gZ{EzcB_;Wk_m98qm+lPW+v2!1NE<&0 zXK`DWhX-TXr@RwQ(tX+dV}<6$x$!*BI0Z$fBYgM~&#i6-WPZi{0m~7@t>`e2mgk8U zt9`Bo|KfYCvY>5}NPz73*h<@??okAbUa}~(Cyo|DEy0($T2ASS=a@ePQJbJhTvRbP zmd+C+J2)^qUc5v_?$1W-fDYgG7C5}#@tR%RVUD+d3@m^&Yge&ag#WLr0XSyNtC>^` z!3<%(Rd)G?={91ITW4lb7Lf(z6Ub0Qf&eTFK`F8o1BFw#y$Xk(lR*$m4T+So?Hk^^?);V!~B`7w7 zhV${&0g-Y=FBbCXc{J|qF>G9{Mdc)I=m37NO&1_ce)3VP0sArwM4ZWr9)(Xsrc8%v-QKGzJd?N1&|iBZAX4`L;cyab{)3RK1-#c^A3h2ppzZOmu1BJu)g%(oBzsC zdmKYRwV!>OwAnt=eO|LCvU7tGg3z_{IpG$!;BF0iH$}Vx!Hq}^{S;Q{z;8cZ3@EgK z@Pr#sz~!;@>sZH~6oAXtTvTwbF8`wyy`4Ig{F7evLLv316Q;x;uL&uOx-U7Y8s8zQe9nM`arR3;AwPwUqa0Q8!OY3T z0yC$CMYckF4y<<|=d9pCYS&O8E*lMtTFcp;q!z894`Af%XcN4KK}}FjferFt@6_&j zp+bn184xb>gCD94fFz*HvD&e^+fk*m?_E+7q-@YNs@Kw(1W8Ll0W|&LUh47QaCdTe zL=nu6vwV{-@7f(EBrbmjwSnvAGfN;e0m15neE`!zBlFwPwN==L82{p5;X|9B=#=qT z@lP zH+FotUVmp?HCm!Z>FU?4Z}|_bmw`34h7fsZKg2BX2=2*+>g%#cqT$EB82|Ndnmr8~ zwDG{D_n;~+Fo{q0$P_DTm8qXTpt-Ir4)5CBjX+;?ErOtveFT(J)Fr}&cJ7W7x)%{S z>rI6UI{d+dc0FwUt9YjQ(8C8Vv-i8?`-|+^Ou)S zmxn*{culsaxBc_GdRPqkJ-SVtfnm#g=ONCt&7Y8&3Kjaw5dY1N3Rba^dK8gGAEh|DdI8xl`z5-euK4Y?eXpof=J|?}iW<_^M9(??LSpV!;r1 zqV`(BZ6NETvdsgZaJ6;=ZJk{VzfU5}?Hyc^_p(muQR25aKhJ$u%`2 zP1wO>nAU^^DUmmpegjMo#M~WERC4ly(_0!=fmjVphNz&mS8*aguYuW;Es(6?1Jf{O zwm8DiUM<7l4l{II!5pbS%Bvu`x;xU0>O?UD+k6)R>+wC*mmCd^>dDapT-?ZXVwTh8 z*sZ+&kP(CP>^Y@TsPS?dsA|flt1eye!0~rA6H{h3JG+i!g3JnIR8x@sUxMnSVz1w? zs}J@1`J?P2N=mfvyj!8TTh>{)BwdXcT@qOlCk$GDkxq)8$tjl=Wk?R4z799 zVV64g7|7}7G=!1k>M75%Z z#&b&RL@kK-6sQ_+-!V;-!-p7mD=I>(F1GV{*smjcEFWDY86`k+lP}+{hJF_4OL1-M zb~p}A1*k7vygpmA>;cpv!gd3?TM0#-nq9nRTeYD7*z|0xCsuGnpTXfLrlN&e?sG#^ zWZOPt(IrjgG`_fb(D<-|_qDX9!ZIwP$Oo*bWGpQ`EAS;gzTY>%_74;@qMru2WFS;c zym)|>=N|V}tHq;>rKqF5`;mtE_Sp@8u8?`S=V|-Vy(iDDt90uxNiaXQ;+R#>cJ1{% z`qy2L{fAS@F^Tur8++6Zul%y(KYw}tZWUHn$9hd4R?o;s{IwL(Tf7h1jd(DwY3WbrIMkh?pw{>ltrEd?QZ|3nIY4xY((& z4@$8hV4H=Y9CYt-)Vk)z`LN_d+|W z$WBW32=doV`jR%j&#m1)kndzW6x$+RszRwM7z|m0&oWiTiapX2q{ z_Ut1L!3*s!QQrc44<1WMgn(eV=FYuAO`|TdF^wai`>R9vM1%QRuUArt5`&nnH?#Zs z&d#`?$@vR!f3re|bMoo^Rd@c_1hL7V!V1WG%Dme|%>?6dAElOd=IP(JxYj4)M^?r8 zJI=;N6)Odv;LA*Vv@uC7LR_pKfBB(tn6(ST)C-m_q)I{<0|)VzeyD;%tbIEl&z+(p zP^%LkNVX5y(v60;TJg5424a44JPUYa(Cu_hVP)_q51z2=cW z3RJ+#Z{Kg~<-9jv95k#nrD*ckOt_VH+ofK>7TZJU34_?0BTvVaB_L3?icl58ujos^ zc99+p{TM^h_KB#5doH)K%v&bBWg!zRFDDrPCrL5*>ew5SBHiaN=T=?AH4R_yZ zFZy;CL359D$}C1Z_lCPM_6Yd_v2~qso2RALw0SWzds z9uLeLkLTRrBVkh;BWIe-yIpQ0Kep&_5oiO!&W@qftf#!b*7aGAVdmL%J(Sl$awpi& z{91`jX%vWpP!L?N@jLd-ssdbfcLONDd=As}8KTmnt2KJr7+@dkQDwkF z=@)HM4p16&R3C&(+>J#5YS4TD9*Y|6NTQL+TSL;<0=mCtizrA-0zl*zyuDd=38_1fM zY$c+tS+R6t=9>Jrkm@o7@IhT`ApR9yw!hSYKJp9zA@c6vt%rfD?yL5dD<@B0dEWj* zB^&+ttGH8`FAfLMC5UT}T`a=~oY319*^BIS2~3epzU*Ip(Hn9&B zCZ~}Ft>ZyXy3IM-^OMZ`@%c9X%&|Eg~Vou6Quq zC~=MARz=@8|4D^8Ke7J)dJX(n|Ghe2iT%hv8`z_>;r6O;-o`br*6bCFowI9W&-9*0 zah5y0nf~dM_#qv#|KqPbf#L7Wa}4%sV_1-#O%NUxbPu8NIIvwR0Yu%U4r?D;1wFT2 zm?;a3#Nkk4QP1Xm=X;N`59-kyowtw|Udc;P`1i`Nzo_P7b7`e*2H7Z5mvybH)zKax z#F-#39Et|ndS9)0c2Sb4kKsdsF4I{2vAG{dh6+83RRi%B8GXaDYv>=jH!S02pLLJ^ zGCS}4Z01Puz5@q<<>}41!IG!!4X3!3|Y1vl+w^1E(99@cF(O0ENiGBDNa9v8eR zn!cYgdl#3ISi@2nW-;&&+9Pr{5C5+3AKbNf#{CA+|A0wJXr8)&!j))*+pk-9DQKAG z)k_#85WG2;cVIR&C?Y(=Qow<&Xf*2v_7E1||9q^mAi@^UovSKAPj~Ckps>}Ao5+Ia z>X4nL&KOf>2&N3of^Yb&%cQSS>ZPI?4-Sq%Zq6Tig0TOq?IiQY44t!VkKrcFsyvy$ zn9{T9ar!AJ=GX;K->JB+R!@6CV$bmZ-^ZLp=AVN)`(tD6Ok+de=>Hi*JTJo{{mK$$ z(I7m6&CY&nQ4#5h?^(1zHzT`hx(&OMGfrRXS349tIU`GQB}>~Zj;6dR5;dzZE}j`o z0**t3$u7=(2T{?l`Gtxi<}QIZ28vEt(vH^6VvnWS^?c1s$P&?FzE!S>jT6>1LduNt z<_(0b&^|V`P%D+?i(LW7x<^~GUdao-rCqA|`WC>B!?{xvef`if_)!kNA9>7|Qxm4X zOTjYBb763>AdhSv*S5FZ^T@nG$hO8X&G~UqN3_7&_wkQJf5u;Wj<4yUIrbul1*Xhg zXvbsN6Bw!jj%zMU8_qWoy#un3X|fT}o`{aFb&U8qIsBV? zEqK-AcK#r|A@US zD|TpHg*|rDBUC5s!TW{Y{KfhEt)aj9StsJh>48=WV-(tOa=G2@z_*fB21s{+MMn&u zXv)1@3rNvsGQ37ecndr{?A!t{(>6pFwLg}%fUo!X=VyK#9zoyY5Uhk{8fs`2n3k99 zufTRWFLL68qP=F=(Mb-P#z|9J%Zz2B=#(}b)!rF{M_6#f=LT6vo2mDC-}~539FK5pgd_rG5^4|wK}ha@2^{K%yY0gE-uUB>eTb)A zoWCJc1?ULjN0x3STU2ngSm@RrWNH|`#4MA<{WH60P=3knLv%Gd^FKbZ%Aom5ESjJv z2j|D&ZP9&exVga>J%ZCmfsxmc#k>ab<7i_6xrP5bIE?-Ds}%gqKfqPD2KT$8><}#x zRS2w_s>UD6R9IoaO}zog#zGxo>R767DzWwXe@#(v;BXSbVU0<5rzL8M*mWSX&%`y8GP%wG?jw+Vd zM{l6qF2En*Dg4)ct%GR3{3Czhc~cxSkvP+0nJjBIc2!A!Yam**3EIPB#))Vytl(Hc!wN6A0hYcf?nF-2>EcmJ=y;Ej|!6{Ey%kBb6cok*NQ z=3s@DDl{bJ2J5W>NP&BLggdaqqX?yFh<#Lok}WTHVJz=x8-LiwZ+2`6ODHy;4+1VI zsDDiV(~P_6=neQ=JnEMB>qD2C8kE=wWEwuY4;&AW7NS)u3SvKSP>RETzIE%?sYfEp zV5c&Ts;i5x?s`|*46sDj^v>fyuK@?f7Cg;P#F~MNG&=C_OTysiMrGgyK&vgO#I=0k z_i&eNytXEiiNT94Rg2hjiQdhIY$7NY`j{gWRb?md&DhJ7Q^lzFF5H}DR|cxeTCNrt zsyWcop$qFF$bHbp0gcc|(Z!OetEXW5BOh>{y>d9X>R2G(8Ub&)&S-=|f+goJEn#-5pJt3F7OxxeC_x@`QB4j3^R1d@kYlKjx0^4c%$os zCUz@~;5KOA5C$rExm#hdPKdOGrVO=!jePY!s~+3A0TB#jVDant zkx5M8s6;3cvv05$+ugQfbNomjq2iTyXCVSD@89DG#>&coH$`MT7d3P`1PNyUOalza zM@jwudt>fp1UPyOdQjzD#}EjV#AJ{>tv_uS7D6`M!H033eBUYSVz4%K11p^U_~9GO z60sIY-Bfm{BD0!et zc};lcv`)8ABFDDtr3W=x{Z>PSgc*WYwaKkwMpe~j%xNFKMkvO?pZD|zg^P7Y?Ha%xy!$UnZnRpb|$bMSUF=%WZf@KG^IDi-x za9J^LCP4G0**;$Ve}5UAaXq=P-j5gPaCh#M)P+jq;uMcyqVnAe<}x6C*+jtGY9*2+ zh)?$SQyY?`ZTtF-3Pk9Ks6#%~`Wu|uCr(&coTwTc{-6Ca^bLk$qj7uW7na(HOhjI% zmWK6uyC&i8Ll1-8o65Q(Lb1qk&k@Agqey@8&20)}rj2JplAtWQ>7d0)wsSmMJwuMk zezt^xIi(a;GmvD~H}lyA&L8ZQ6=scixhQ1gtu{RPFKr*?j=;>)<O?hJJnS+u^))f^P0`&DXfKAU&J2}Kr&a|M=}w~) zo(mwnn-Uk!MmB<14=Ge=jNSaLeEI~7sSV*20=B0P;bT;dX?mb-^1FU4n*IO5B89N} zr?w#urzFAgj?VZnJR?oQHiWM+8>dXdF)p>ufU*FP7rfLrgdN2XO4+ay5LmQADNAn| z_sd2XX?U-_A%2`kC*l=GehFsROKF@dM*mswGRzU7zKEbD2=U-aydSY)V&%ufc*UzS@Fj*^sX`R(u^A9G-Tyn~!N|%UMPb2`(rRt4Ccu`dz0-NuIuBMatk2><)LZ^a zH`1cs{Nlxn!Q5vEEfYmRGx##c@q!59DZRpn$S5SR9u5Cb&I8e0$^c&D(AkW^zQ>dB zVCZZVR`zmE#DfD3L!8DqC@BPk!>Xn~fXA-z_DDquk6MIuA$9$bDGu;A0*5OgS5s}= z%|=)f!kvoZ_2tvxsjTNXOa1g(Oz5pFyzzq51Ds~-Kcjft1tsa*)?7D9{!a{XZLz&au{S3X=aSRL->~Jn z5uoBk0c9Kga{q6G*6#;s-izTC_r8Afl$mfU!lrA)LtabyPunqN1S3#XMPXaE{2j_` zF7|o%xrYAq4$#Cry|WX8A+x&4sLvBb7J43j`NcWqpv*!87tu#^dzm(DF0}NLiqegW z+$LmQv*_~B)FN(@eEKV2`@sWcyv=)l;1fZg(K|FOx`-d0F~Lcic)pX5gWD%*^BxrU zSyyibJTniT@VQm^8Z&LIjGHOaf}bW;jU;5mFJ|I)f8qZW)r^;}x72naGq!>*NjP9- z6pAWt0J9a?AI~_tQ?QNyC=@vva5H!TxN}5l8@7`!_mJ@&vd<_$Y~PyItGT$iM7$NS ziUIjU2&J^wFfx8SWeLWO!FkVoXy^yecm4XU2AX)}l5EV+a3g?g2O7Od3HGDp-am{( z=$Iwqu*pTdrsS7?QA*D5+~3EK|NZxI?l?s}M9Zcx%DL^_J=vkR=-pk?BeVm7Dsv)C zF6=2y8h@qA^Q=S9^8c8hCR}#**-TUq;f^B}ST9UgDq%&xNuqDp!-ptke6*S$;nd>Z zrIC@a8d_-NYOy+K$AmCNXVKfi!C@-S_3Hm@aP}9Saf0_xg#ZL9qbCCWF(l{))yfLR zZsLq(GK!2@bN!G{nZE-OhaU0W$)@G$!uu3GXHiy|I6Hfnx2cKyBl4Nu;+&j^|1U%v z|MHqVf>J|48YZPKFX~zhUnl@BfFdHvy+|UE_yUyA-?Zy%Uw9N#-F!rZjAG zQ8JH}5M`b-HmF^aGS3>UB%(-Wiwc>GB$>x$o)#7sYkl|gzN@p_|L^~O&vmZ4&N+Lt z);m1UegE#?P!xz36I59yj`rWDYg`?FyhTudP@_SbPJxTtTMSF8jZFSOzIaU4#DbTp zsBL}RepTx_m}-Xdi8YSvmL=EL?ShT&49t}feJdiNVX&62u`ZSCv`*6!*(6Wn|g zWx76axZ-6f!+TFB7Wz@ijhdp-?PhZ*T+SiqHb=!N*)D&>Zc+KnB zGDw0H2ds5}Pl92LUb=O?kkU~HVJ#aK6^G1-_%X9W)WP!>n99m_Svh33ixhMg6nJ~< zm?t%lm{1z%Q-$q`(IgK|{q#K-%Y1b+pb=} z?ol)_#lt=@CALJpbIU8byqrc`ANt>yVA{A~cDh$vDe}2i=evnydIX2?_dLe|wUN7g zU}VtuH{21HZIeZf;}L-d=3S_NP;YC)K7SbHfr@})31X?Gl$G%%dG&1)IO2uIT!hk^^YhAit zx(>lkZ)CCvVO#o8c%hwx#ldsY3AW|zIT)h`!1fiH4B88=L?CC?P_(s<0_gSUNVJ8t zW7pfX>4}|(|G8`Xxu>S_=F{Gpd{gewh)2%LZr0D?ufD%kZbu~g(R{TYM1+Tf_HMtG zO|pD+qJ0KwASG2kQAg{6XVLgLE2l46EA{LjFjIlFjs>zLOG5y0?g5ph>Ey|EYf~OS zmay8jMS%Z>scg3dzZ&d6CerZN@4vIMZWO2LnH6m1gE!Ur#7lh2c6##hsuMJsH>jw@ad197U}e1psN@d^ zgoGO#9UKwb*QcfD#vM@Xzxu`!#_UZ^rF8R}YUct8iTg_hu9Wc|a=Jjfy*JvGI3P0tb{{Rj0z$lrG{c}Ru13Q+yOMz z&@T7JCieuGHWrAMnPrKZ&vE?2Roh=BW*#9S@qnlC(?d|2H~A|i#d?qGs@xv%@L{d* z9ULp0G|_095_@ef8eiYoXcu|oW^E+v7E!~%Nug70n?wHDxarY*@E+U37JcKUknTp7 zSr1)eT+*mRURA$`W^EKyNLOReiqi}LU4fbVbfE4tmBAVyTG+S4t$z1v?z<(}5Ino1 zn`t`IG+1Ni{oj#WD-m*MQAi76&MlSvHSGp@xBRykGo$J38GXwS!*dWnTgPD%A*-AT zdF^OOsmrnvW773C8tB$UxgQZUh~oBrt^cakLWZTrFB_ymqNZpR55ZAgVQ?i?LY`|$ ziQwRB8U5t-CAt{C1;mM8m>WK1nbK;`b>wwGz{vMEs5=)@a=5txfss1hrNAM0&uZYG zaFaPaY|HL2U~#;;xHS7d?@H6ayY`(@66S38?&T@?R)@)SE#?rJ>v~-VhYCBJf>_hi zMn)=Ub*@SW1jL_aVGX{=vN;m2q8`m#jPU+ohEcbl%#|nr#DLHD^_&j)3>PX;GcYW& z{r}i<%jWm<@+vAGI%^C8sw4fOtPOYWF#o2T0qr6fU94l~2sqk9QAipGOLqZDR|LDz zF0-b$w2KcRDuwFoyFh`i`xU+A%vZko_HPF0JuF;_dP>e)LQ+zoI>w?zPIjrA9`z$P zU1zY(h7c#E8SU`nYsOprC4y(LyDf}AIZ0~RQTzV4-)`OB@Ee?RYu3nnsJRY7@ms+O8*}@rO?R_UWNd6= zVywXFq?HQJa6V1Ip~tegq}8_aZP_mF{8YEl&C6?~sg+jzpZ(w-ATc?vB%v%d(da6& zDrN8dxDk;Sb13Y?g}ggK+t9_#&OWG>aOA8@(K#I*9hL^>4Om`}riTv#B(?>V_VrCU z=E&}guLSg=l2Qwy>Cd@0_{uoRhcb zCPnIFW+sayZ8Wy1o`3w|?27k)u7_#CX08Xj<7Kpel&*ffYgNnA04?qFQ^6cMwNa5m zlyRe#rND02qHtJ*@p07miXL%%69H{s1Zc((C$l2CQMf+7+XWs6oe#IS33j+@mrs#P z{cIXm=EC24Og!4393WazWsteD*grIgSChP)>xTj!Wu1o|6%o87qm)JVJ;jD-T_wra zMn_VEX}(ON6Q7?H7vE%tBTPb)Nbedy3}E-2Efa0~OO}Q{-d)G6vGt&reB6JI*L)g0 zK?eF!b4#Qmj}qFoa_?a1tBeVJNtZvL@B3ShyMOuNqZtGVh9)u= z#JY_|a_q!izMY3-#E*jln8*L}S2dS{j>!&F%PxvvXh_I?-{HO0y|3FpysyK&fS8yx zxLNA1$N$sG{m1znbyOteYIqcV=q2%a(bD{qaq3oqeg;gpw+TU`Eq&FnK*z5Aoj2KIqVB(}jh;pj zkJDD4scQ0RTU#IG-In0kd{7R68^&w@_Iv*t`hFQO)6KoYo9c=VK9+{|tEgGrzkUOR zo~Ikkkc!N8U$XDqxpjZ1pJ&U$4jMl{dFPK8 zHjnIXtdaAP7SgP#Q*alQJO`0Vesb{NYGyM@16~v%!FUq0vF%a?=jC5kzInpY#7Osnf95(piL25cSIfOERQmycF)#UZ z|2-w1Y2qxbl>7IQkGZICdQZ=v`-_tel$0Dl#D~GTTIhafbNIJcn(DENCK}qFa@vU! zL%_x^yS{1beP(s2l5Ty?wEuabTwrQwy57RZ>CUrLv5)r%90uxJ&v}6ZDHkgq{xKzS z#E@mnLgt;@*P@RfAFNrwUR^pq*+N}-WxmAW&Igk{QzquG;5pefwf?GOxwrLDb$IEC zxw=!&{s0N8)O?@v$jZ_)RWVcXchL$-O7gUCuViK8Wi0#}o_Z`g85`?_9k&0$<+wua z*6{^IeP%{yu;z5Uit>(RWM}#B8j3w+Nor^{4|j1f&AfmA2D$Y8R~^FIwfpv=tKrku zhOp{`1*Qo7H*@Ohremo1EE%|{?qe52Jv-q$kcG^Cc%Aw9HLd;KDml5*7q;~YHy9m_ z|Cs-AMTbtSkMpA>dgJ2!W7Ws6%Q~$uUacaiaxcv_-{B4u=7_JCcS&2#&<|FgCA0qi zww)K8BtA4Y8ZLtyp?7PEW>IHjqjmUI>7q_MsRhr1*;&)f8&$c+_R>=xUANGS`bMoZ zKtG*wBp?#eZ56`WCtM0T!>alf)3JVx$m3a5(mpuotx)MN3bi=B!6%wK)Ke+1eQ^q@CI@WtqqP+xH0_FE3qP!jhaoD>~~(OSh0J;gxprj)r#Z^5wSdb(&~O$#7ewD zzJ49k2!^#7BQU8Vc}nF1Y;gMNP}${mK}Xuu?wDl;_6q9*m_Y$q^#Hiz;KCT~*s29G zXk$ozt=){hR1W4q%`zyrCUZQL--W73>r?@6-`(wgny`m3ldssfy!4|+i4-kViP(*d zI8cIE1FSTs21m}NE=(!8RvJ3AFH~?si8NU2!#bI6;Mn|JW7|lSN!;OrL5?Y^|9mJu zg#Y;hYurYW!Ou@U+QI|YPVMh*kl(y{^oUJKSjtZK$$LKvRtC+^A`QUFnrg_jTNuAV z*1rPcxrhNLj5rPFz}Xg5D3~U&a{^*OnFJtBK!6w!(A*>;;ZHqnT)fy*&UW_U07R5D*v{fv!3&4f?=tv8AQ9t83QioPXTOy;Bg{ z-$J(>>qZiN6r8g-kJ&B1%OLta^m6=I`=}e zObZOeMxNZUYuPD&4BHX)Mt=~IFdq0x{ZGqwF^K}1es)kuS6segkaf#D z-&nTYoArN}kgx)oz$(ZKxwyXF&;W&Qyu7ovhiN=R10R1TQO30kS-ABm0q)t^3ndMF{O zdVl+&zR-7QyeV+t5}JMUPVHyU>|D}}yMMo` z;YpHyHQa#TI|l>?mhpBttCELAjMdO4jW&j*vADx&Mmg$Rs~y-jzHSeuue7ysiVh5@ z`B41ntEGORq*+}Su@JTIfRZp?Mw3%CCB-!V%nHseXIzUwC70e4S`F3Vz(*MSmTNEc z%E)!#Q(Y{aeyh>lJRxQe5_Uz8LAmhpZe88UJDHP)`LSNCRg#j(=cjJ_yce{Ol7tLl z$LmW=@t*W@QlYEh7Ud`yO^oq8=P=k=SS~teykNgs$@>p)_B%r0tSJq+}j{ zLk;x;rwgr_PnEK=_AjR_r^ytSs*bCjS z~tBU{w}CpNf-edSgkX#YO4+{6O#V!PDI$b+(On8?SBp@XO+-^Og6z*}XitHjh0Ss$ zD_IP|lr;@#4x@xMQ2-0SWoMs5qCn?Zu?_1p44oIJ`I2J{dM2nP@rPj#Nm3+qnC8jL z7cDYKl4P_e2An1OLo)MdI&6w>nYo8Q_tL0@q5Af>z-dV{FOjx?X%G!+)ZRN|E#Yy} zt5r(01sTBq__VHeo8JqW=%g;R6aM*U!)8It`w4;++2amYh(P@%4Df44|S{<*C z!*uog>s!AG@LKg(K2znLA{+lYp9y>lu7}{eobRl2u`li1rcD))M`e?p16Vrf!wbkN z`AVCVYpv5^H#iMMKEy79DQ-6sLLLa_1<>~G^eO^~qs5{d62Sw;N>gCJC8Pq~JP^tU zb!y4s$EtQ;@yyz`Si2Ty9_D^XT6}*#!+JI1i!x2gV}42 zbuh=5FFFN3&{8#(>QWhqv?iWxU;Nmj#WPn%>+7p)}_om!|$T0jF zz{T5}!}%c8Qp8B&d|9?tQ~AwJo7B}&J?X7b!C+rAUObspc(H``pES;&hEQXlM)(HH z^N_~1M990jJXCL;dVL9vMF8NnN%mVXf~$wfMA2*4`9LwE8J3|x#?!Sv0Y(8rRyGhl z3Y#RUp#m0w#FExttam~4V^ULp8b|{V6B;nZjTd|TE2IMuSkh#iF!YC)otdsyP54qfzgg*M1ddD_!qr zf4H9cZ_SFd5|?|KbI!3t<$iZ- zFlT(?+E)3Z5+sx)Oi!b6YS@VrSY#A$dM?tkuy%`yVYKf9(LykBC-nFpJBEmtP`r0F zkn*K|wdw&ORg+8l zR8q0?Ghi!C_X6{avDeT2XINhrQr%k6>Pt77_3r!Idg#f?FlacetYRZK$!wWgy|iWx z>R1m(3g-F)izV#C3`*$cS4XnTXxGDzscxZFAZrK~bgd2#?{~4Xj!Qg|ZAkM{kZB#P zX%Oua#x6#gDLTmYUYZpll~~GVE}-=m>F*SOY(WH5W=#K-??EacYfWvv(E7@xL~if# zopN7I&QA&*5wqh6Zn1l#*4w*H==LqOFJD5qpnb``l6Tc8_a*xdqdbSDS)KV&5flBi zeYy73Zzj;Pr|YlV(BYlR{%5bqDY2Em=5w8g>YkjmY19~N)lSI2a5LiJ^kk6|jX&|| zYP+LNBgbIue_pZu)iBu*H9ssL6hZgj3H%`EA_6K}TuF5`x40rJ{sOKTj4CmDjXFVt z7c@$0G#W-$jP6pBry{C>A?z-&%w6OVo1u8vwR?Q++Nl?S_y`hMIvQg;30M@1i`={yy4NSIxI=|^YR6TO^ zFzab{0i6`@KiEclRnCO+?*flwU0u0N%6kIUqz>$n`b}+b31o9BUh!v3GTd`XrzH*_D}NB`cXipPUSg7dQ2?$-mz~_i4s9f$d1BfvX*pwPR`An1N~e7 z>Ko*3dGRIN%IWo7**XzpT^Q8AY_Kc{S6*v*^I zp56SgTI;#Gj84?1g$Y;EWQTyV3I}^*bCW~I`5+s{5rX~-oUQHZYG|;|kyGwXNZ7T@ z)HFludQ(IB6U3Q2z!r*XuC3J{`jLcF&Bf^jdhp&8#bhW*_LmY7fh1euVd2amcs*8A zuZX05eYF<)y01n@jPf#D1pI3oGJA-EdcaLJYsca}fJ%2HvL{bv&0{y#jnfngB^t`s z_U6G}?*dSYvAmP5+GKwF!W6GnIDikzI)jak;Gd3Xf&J~{tBKh-8u zkegd);s?mgI1aAP)>68wKB|!#?AtlG;A8_ctpRqwOd*2@y9%!9X{hn@C*8S2nc(6U zg%0hES6&`K21fqBQtuwuv9i28vsb~i&_hH@>R{#Q;pZ&d5)z6_cx7Z%RmH^8n;&O5 zyNn{vb#-+bBALTO4YP`#bpj&x$T}!xWd#v8XcH7Gn<)T5qa$Jrr~O1l_p99BzPF$N zvr$s_@PLP(yJEFDg4=y`aq+Fako^zfNI4c?aNl_@WG8G?j-mzm->+^HG-OmF?0kZ5 zR(11ZsCaGq_6l5=x*Z@1PT{T^9FpD!HZ;%B>mYHg>QjbM@1HXv$6DMN^e`3@W5H#jbdh|H*tseznny9g)yEB*ZeI#^oFFWkUv zl34k*)X!;px>r9He_ZwXDeK9gB6wv|q>p(=)MU%mcNVz}A~>1AX&xizK6`1T)dDe$ zzks9XnIn9BaLcN0Y$DNUI`wh(KW^Pp(@W>LDq{yB95**KePAQbs8A*;M5m-Mm-*3& zc9;r)w@j&@&ZU8P$H{g+!t=_iRKm9ZUV}1YHbvds(bpH&OZ}kEct;cgdeQPy`>3ru zON7kA0unF*wuCXbp#VhAIWl4On6Nx3z{0!>sWbpFKy<1Dyu9;3MoWzdhuZJS$%<%V zimTJ>JWscX<+(JyD>dxt&9EO%PQv7Lx4eG(!d$aHL%^laf86n|aeq%acu4FH1GTOs zDYsR_;){ax!paiRFW=u%4>$KcTj;xl!~z)r-UlRxho`4Mdp1BaNRJ8)W#{=QiAP+;*rAHmJHsxE%PEmR>%* zs!+F?!iX1XDhNO(15dbS^q{znPuNTQ_*7T%9r#$Q3B-ld;BAo-C)J*prGMJ4^V-TH zhe%4M8L4sVtNKgh+{gcjZnN*~;E&*1PquHjuK)4oWTCgD^uo7SPkj&mvb8c9Uiki+ znFm_tmxf>3+8VRq^Yi;Y*xjB|eTPS5VZp;=%a)4db&FHGU>)F$2Jc%oP<8!4bG+&n zcf>~JMa|#{(a!=Tb4izSkjRSDu`jHy0alm!PNk#!`ual&pFiK*#w8{AfF!c$`1OTK zh?27H*!*5A0bq`=Y0dX{OtfnrJqqZIkI-P( ztCSSY=&*3YL_4XWGglLuiOpR8wAkwZRF8zn)YKf;!5T1;%e`9Qoii|Mm*efl?(ggG z|3x9|>|uy4*|3>5!v@j9?M3cmPi1ACh~L}vK)L;NU}yn(u?c#6BU#U#f#L6nsy5^- zZGzNknpzO%yfAUasN=6%!_OCo>ZI*~z8@#OdE;<%>Tq(^hY!`&tp;%l1I<>v#S$=PR6LfF`7H_}UWCOfMeA^4y%S}VD$cxl`S6pFEud5$*OvcEhG$85p< z)7<=YJPan@+UEEbv2P!qG*AEL7@Ct)lt*%Qe$xhBbY-Yx)1~^IX;)f5f3`_3$#Y$+ z@9gvfb-&fkuBd>76B%~9tSCWULtt+1OFJ*HKK)#jse{9V2it_=)=vwZGk&``DkPxL zQAK)kr>?p`VBXhn`Rhw5t9#H7rGjnK0p-7c`)zL0kM57-gJ+h%XKXnyg*d*e4e96E z>q!k}`A+3)u~NwP$6F;@>CJ5unZ%(qADbgU7r-ZR(Z3aatH6fq#8xk60KT zbYG@3I@^O>d6FOgAtqK`o362qjjg&W)lN@LEKMWw;OVvN2+09m`7<9k2^_Q@`vwKX z%F5GN`J@EjB^Ql*AOJ~_mG{(;vU8hUDO(3@?{&=IUJ1z_0lN1Q_6o^gx0)XRYdvek zvi{jPGT$oicEn8$-1>5CI7Pxr=|@E;J3R>z5g8d=GJvh4Jt8rYp#SQ|jSZW_ZvXB* zT@JN!afzAfjT@8QjcW|ctJ9FKFhlF?wH?Y%{bTcEwzkgBI;T!u>Sk~-@L9^&?x;MmqtXut*dB{}czYu^Z=!*bXnUr42^5-AAl(AFmsTXG zCeUd5eJJ!npdPlL4EW+Z@dIl2tZ4mAU;1iGI(>05kSPEbOx|JBYK(rVznP^kghUh- z7Y9+n-%yD_4O}|iKR(W)|Fy3E^y$;uVx_)Jlja^CDk@qJ*m>x+VlobD&dyYdMKS+w z*=+0jH72tIV^%^RKb=Z_sbR|p!7^eQg0NL^Rsg)lfiWs)ezJD!G)I{P93C^ zl)8N!2Q_Rz+-_9r&YuY-iox|tF_r>}4P40ja6yBG`9U7*Dem>Ik5|-Amv~Dmn!%|! zP(9X4u<&mylsc#)=W%u7M}HL*aS&`?_tfX8ygW0rygVQ@U=cBWTtIld_s*3T!TeMa*ld{;JP5-yXlmch4aEcCV07ZmE+(3wr>CQ%fdTNU;Q_u0 z*qrM9%N>TJZLTwY4xK5ZE%I&~H;WXKYVi%oe;KYsazK>FlzH|637wixY8o}4_zQoz z(f@vf9*TH*@gI2(yax{+)PQm%exXTI=j!+p+1WXW2ZGY$rP&lOX&v?i+NzTi|H>lp zf`A#6^Vos?8(l43zdk!_0N*n5Z zT;0tuQW9!whb8IHOliY3c0^I!RORH*{4Ri(w*o5xsUhm)hvu*TF5!YTB1mx!9B1A% zTrm=E*DAVQ;VWt{PshbjuT%G8N5?ri@U@1coPbE_N1Wdm^Hf!F`abxU&z72kRt&NA zeir7oL>pTDp3jCx9?(R=Xb|dnefnFb$@M7Jm?j7bD1p8 zOtdS_ooRp9GzTNQ(zzzb;Gq$00X)m> zI>`y?n3E9^ZWBMC)(v94v&F3NfU;`9%8a&>`kOcM9xGk%_Xk8Knw2YE`IZJ6Ua$P6 zmhU+E2t79u2jMx7aA&Uz=*Hbu_+R0sAx)S>ze|`QC>sildOFmP)_!+PTD+wR*Q4%X zs42p*Sfndol*DS@?N?E%gL;p9_au~BO~2mn4nX`9h(nme4TzpKVfM6^p|PyDnfRA* zYh^3W^<*Uh-ob^52zKy1LtaiWL6LJEnj3i^O3b;OlwkVWr5l9o%b@XVYRfrv2&{{$ z8mYt2Krb-?tjO1- zA4pDep`H}FQrL1~tY>512rTm*M2aj}IKes(?Fcr=NdgB+z@opcP;boE$EcNJM!Otp zm+i&db$3xTyj$Z>ZZUO?_Is#&8PyEnhcrx-jqBZ5yXvyx1DVV4pxHR8B3^JRLO8A@b7A~BW zpMtxN8Z%Tu2QW+PET6`kO@o+kUru8R@?49Rs1Ww;PQ!0>818hv2N!<0hvEC0P|gvb zJlyT1o@h}yUyQpfYamG_v?h+kMr52(r5bm%FLetj z3QUvuNsI2KfAoEsBM`x`Fdi#O7zS^>C$pj39Um&tSKy;mX@X(p@RuB$FM}1yC*jUn zM52U`@cnRyR~B2+o9=Fnmrhg^QdXryO5X!DS=rdwf&vOn0rg@Y9y-rdPTu~SB?f>S zp>`cx2NfrzpxYQoy^h|?%;IfzSU6X6y?PGAdf1ZV;$~1Pz|@i;ySJF(QNh|-A#${| z$MrmZ?Bv3sj#Vh`@UP+RL zw~c=|o77!b^mB|@%yfj0KE3yk2Ci97u#>n=WS2G2dbdrx)>J-j^ z?i(|793pwFVOPS!mXEb5m#=VJVY)tz=2YUsj|?M_%LPmZB>esWTTQiM+KBP{wRH6) zTduuNcV8bHI352{MB$--Ct7G|6nY(!Ef`M9x;DRM z_lc8)%8+E=>LAAG?t8MNc|;vetLl9`vaBht$1szlUf{rT$l46^fsL(W@=)IS8z6 zv|iOxRqqG=#jr{nVdxzho)@kc?%+qHAwyOwFdC(goAHJn#@v{1!*m)MH{>mOVHMVE zYQPZFjp z1%fnkKRy&(!oM4d(&vWHLjR6*iju*Dm82GiCeZcxAC@}a>LO8G_q+KjZ*b%8AQ6Z0 z>MXX(4>N99A}mpd8}5>@uii6xR$OeK$`{|RVo+!{M#1*kRjeHRK9n*iY#1wjAmx0; zF{Wc}eWS*2p629$KU$H;lP5Z)hUVwFSNNo^NZaZDed|(=tbF@b*nnCycPnx8h}n07 z+2n)W!0w9_5)h!^ftuKF1Li9Y*_Fac8T1u1Irh;&=umYvL%{zQT|}U6;pQua1H))t zb{{RWIkh5n(1c+m8did>w*i=jPZKv1eI*zeW`A&@LG4lvFx7=xq)I$2N076D91sAre*x|JuKn9q}={q?o>_QL#cH3uNd;ye< zb0dHX!G`+0{v_M#LjIN3J}5c~cekdVj+fIb^d_VI?VgetQx7d00sRw%o}SyAK?%em zqVnJ>v{6k~4GCLzr`+3i^QNNW)T*~bcPW7Wdca`MZS|N4gDURY+>cxz_zC|me(L?Z zgFnj+#83BKj6l9(YC$VI3NaZCn%cdpV^}^QO zj(rGox`3Dt-0P~bqZ>an)EPcOxLd|Wvj%F#hiB)RnizU>P5d%FUs?og28s3|&;(gt zyhi#yQ23dduMqK#a9Mp6KY|HZ2Xa7Q4_al#78F$OCLh&LEeU{`8S=O!lcZRNRlbzs z1_PFiBsI#78%ur{F@qbh4|r=UMihp_1C@J3#mT;k8{1B&o&uZTXp1Nv9fxk~Sz)FK zv!h4%?lm{pDY*uN8E#PkK0F;#wRD`E$V11EQ~YV;<8yN$G!YzqmA5bv4(aoyi87!6 zR|P}+7vPEjP@sV`_B$hCHf%+M(gAh|^PJ1(=5x5+<lgp5k`N(i={FejJa@dVrpG^Tl`TB!>lPAc9EU?my>X-S&`to zbay;RB%al%qfk#gUr-#aGe2xH9Hads< z^uCi5!Jp({GjnreV-*$u(w5`2Pq#NG2b98;84zW7ri~MavTCsvu5+%rNe4kNZD<+6 zu*J>IrI1SEIy{Wru}|%kzB=7g#Y3c$BV?{$fAVDS-l1Dd@3%V^4-Gwk{yde_;wY1q zww9K)wL_*`@B2sl4KmeKA7q$Oo3+6mB-#I3->nEhEG*cGge$EO9tJ=sn96O*Frjq) z5<1}aQ$uT|;g+w5^Kk#5lj+UIjWL%U*lRW3v@eQEqNP4pVJfUM3}h@}9mzf?f2|Y?1r&+)zCX(|7Esu8xfbQZ`;<{_$wV-qZGHQwm2MIz^JM4L-E*~6)mh>c6;H5M+2zg#p9c|Sn(DWv-M8M z4gPzoxPK<2^oXf&v3zn1$32oRE+wKUWw#L>U|ygjBpgl2ue6HV;y>^(p9=GDXMPvn z!ipKFTsJx(!$QYm3#N$L@arqz|5>@(YAD{@4Fg0Xebq4y=}NE7J%n*5gurf0$K7Pk zWVe|hXFxR%4>bAEi4!5m9#{-@brI~e>o_R}`ze9h z)%+*8f^Z3(0>kA-f-kP0vLn3906CRcu;jde&|zdB5ffz7VS(tCGc!$?p>&+pBoBUU zr7)Zcv%Lr^xE0W0+$lGn8q(*DdsVtG)yVai#)C0fQj+;%GP8d-7OZ3;>g|OVkmk^8 zVp#k!0(CT`i;BV8{{HW|#nfop=MOdJav9>lq7?`)17V}TE1Nj$bSENQ&71$9Al-@YB(Go0wyU_al7@cjH1c4p}0GzxK{2@uqVhijt=JOQS;qth2gzNVdy2W+20 zE-LW$DJs+e)?aMX^N@kwKmR!M%O-_aF*Bm+o9+b~ z3`-sLm$)SpJk!V;)-`Mi1BhbI!+W(Kv-UA!*@BjI9<(qJl=QnT=E>jqPR?p%o?+V$ z!X9Ko;W(*;+kmBDp2kfd3w^CBaGz{zjvB1j_OSoid5mLk^D8Z*D9(AQ& zPmiy2U30%EGRlK&eXS7c@Rg+^PZ(zdBRIj-?O$vU_N*CM25fb)pgd;!p3hdW-DPJ# zpvds)D+s{x&Uc~)M)SbQMD?5Xn~s<>rydb6&*5G)pbUbQUywXjaJd6RKTVqOT#?I@ z$#}L6e^j>+PM-OhVnAUOK#y=EPkS?5bFHzj>mK@UFeT5+%L#v}Z~uAEo?~`j`eJSN z?E^kiRmhdD;>Z6?_Bc^UjdiEA8tNiECQVHF5Y?NtVvT&W7Q$jI$;OzNaO-@@D*^gbrY+v87pN_WSKu;qU+rvPujU zm~4P|$O&LxA+@kgb>X*6%nI9_)KHeJgF_RZKXui;FxwLE-(^^-j2#adNnCBa_;X+4 zK)^-B8X7IvZfQ~N&p%Jz`IaS?Yb)t|F%_ffVr7YIlz6Y;qUXnU?hhj z8vb~87MfaBAaw_D&IX6j(!dR*&?))-&9jz~nj{<-PD6IuqhAkETot<$F%)x`EyBhi z?407NR7zxcX}S8~eNc`lK8oNy3p5Y$A{E>@nNX~%Dt`hEDodT$6g3)=)2sYONItKP0IXnaX{@xrPW`j5W;09x!XvC&`~ zu8E&~5tz#vpDflTXyO+?623#GJZod+N1Oh}HJ*HsuP!K9)4`~EV^(~Lo!*L5m_4WB zw?Tnd_k)gxA>DI${VKz{-|9_GG5+nVI~a~UghjNx#&A31Ghq?b8{YV^wKvq@VYpX0DoZO4A`Ik<5)Hl%?| zHk>ps+^_Ns5=`XtBqVlrCMKjX^NfFcr7x1E8Qp3=_WAhiEX$@e!x?xsLp+B<;OfhFu&h@nockjpGS%wG+`RsXK?D2ran0yZPG;b)+a zyJ|ev&>BxYg#EndE*9cIs02_|Xk}(#AR=O5ps#iv(=q4QZHU{M^7=J~qym+xZshyf z*%<)B`0ou-7odv@AOed3g4MG)jjsOuZ1DFqUx)04?-=0up-^G4J~7J^dnoU@dutTQ zXW3Xv9GVovvgRARCrQ_6SMqsGf*GGCNC*gfP=`y~f6JJz+WHrZzHwbWS|X*UOib*| z%*^ri<;MZ}v2O>u6}KXX@Ng3-aDArByG;TILkF;$AJk*DQ4{Ta6;;Vcj(^$p??(&l zdlZY7tpith?pXx{9GRNdP2hG^W3v(Zl^@4(DA1LNMMC7jITZZf+$NJmyiI+Ro6m!7 zZ)fu1ngNd=2^)BMcpRtb(r=_NG(im z*anOi<={e($hB*C9^SYypGqDYxMU4GvCl&BjEZiA8=?lY*Z%^yi8=Y<>+5c9pPu9k=4tB-N+Z4)5a*lWj{XM1e6c8diAS#Uct9P!3o%vz+(^A ztJ-ts3Fsgya2Xs8JH}#_zfOIW@eM0U*s0dU9&MS(QCay&iw~Z zi3hvi##$@|Tl}nfC&~xL<>@_n7u3|Ases&hstaS(E@6{hABs(VgBApG{wy3cP8B;{ zkNkIz1d%;EaTDI51;&nQmNeUkcTP(awAa|`Ydojl;jM_7@{Kezw%RLLKG5cz%MX-D z4P!D`IiXU6LBMaIGVlZwIsnvHJT3yg2u+#n%|x-+MdL4)A*K zPhIRPVcs&{Ee5bUGIKWrK{r#G24?$k<}er;_{=>7R~j~A-cxU5TQPPIVCi347w%j99h>2VRK3Y-iyV0_TA2HcLz4bm!`O`OO$)Q=LX!LI}yC-wEMpUbW(NqM1{exC3Nu1(9u!E;Q<&ZeUW z5v)pmbS0TJ<0STk80TsR)Bz==Mykll6G7ZSCNR6Cel&$askKM0qZ~Spcuo%06a7oyzKxe@ZYC)D zupErzQg-F!)Yi5kJ#EA*H|!%EGs4cefddSid0?Cepdd|6tm(Ghx}N;hntc)XeAjmk zz~?ZR;6ZrL--D&sUt^3thUP)Fi6ARu=(oZ7428P^fPf0f`i{nVUq?CY&9`9;7bLQ} z@%OD|)XnP7n`1X-mUrg+V_V>&h)+7~*MUu9{GVbjgB%f9=-%Ezw{$bSC?rjFpzkf% z3rNg{$Sh1oX6H0FySm)_?;B8#^IOh4;FAhk0p>>@fj)Jmml<;Z(a|{o6lYjzAQ=Mz zP>!70hz$m)GrSe!sjV0;vl9*gJ%*S4B?r9qDP**KsDqZDs(OSiASj{=7&TY;++7v_ zzNETUhHbq&F4TpHFi2|&+_!a?>6yb*-SkAyYx7|WitE-XDooOR^BfYDl4JNMx}d&N z;Nz1F|4$Vh(14ARcOEFfrod{9M};wgFiFfDUreSiVgEUlhr=Y=)i{U-Z9qLE`!lw^ zGGziE34VnCIq1+1e|(3MqF~Ws)4i~53o*)lAc~^m>kywkqWZy}rk^S#KUvHJW~s=` zA9(-+>hJh-Z`+4@xyPS^ZXI^mwVi){41l3fg?$A@2AShS(8U#bOCB5=IxQe**OtAG zIR!x+9UV^@hC4r>M=Y+6cQam_57BVQP^|_dwY?Lyu+77ts#uH73^!Z2=r4hz0BzfG zh7)bwDkG;3Dtk!kMrEa`26l(QzXL7)7|w0jQN#Sx!JLAr1WT!zZg>M_1h^7JAfiox zlL1FdLLamNeagp941(#>l0NgB8Yuq2F2ECKWunK& zckLP<|MhvF4EYsHGx>jGX$(wI9a|OAQ(CwMX@(JA{nbmc67UTy!+lAE%W~EUab92~ z${@u+EFbc;Ke!v`#OS9A7h%!hN0&b(Tz0@HF^;8^IJgD>ry_>?S8h(jVQc9;#<oMQ1hmJaqu6M=VDK|qX9Tb+M>!6U2u=yYI-Jh{sfE6ISc9FLWawR^5l{7A8my>Rd7~ z^m~3<#~NBsN_Ls1n%dYmkRjH`f&JH?7rK)FSAd-tfycO}ut{HB=02Lkf!P~l@*lso zfx+^q23J;C08V!^Vox-Xr0CGaTLl5YAO(cu5sp5{)b>Ss%VG^ zwUVPK!wlbgW)~3z16b%FZjtSyjZds1@OTtkfjxmYdRE0zd`OP9IzDxN$Cxa09KoMk zGe9eS87Cc<8JZ{;OGSfymqCpYn7pI$dqypD#CirxHaM>VfUq~4SjWE4TxU+{D(Uvk zQDv+C@};7}x`;|P%l~7W`^-}qXT(WWJ=kWZg|04R)$FsB$i&Ow2;AyC1e@r88M@@K z;)xB1h%~{|2*~?*cZh~k^|p%#Ui1cXJ+g05fU|KzQHrXz4Ey85_b=jEf4`5!FksfihYYuI$P5{oA%4;G7J=GioRC4w+j*7jDC>EFW2&+L%{i)Y5YtX>=Geo%6WfHI}kDLQu^YjN+4z~$GAoR<1 z)pAk6ah9ZH)1a2B?bzkJaP`aJzxm}%kA-(YrX=ua36P^Y3R!>>6t1oA;LO(yV(71h zzPv$aFC9Kutcub}lw-H%FmfCP_|bw%>|iUDGsw4H9V3stegeLsu=e9aFaIWn@4CCj z7|tuyWQ0gSXN3L{O)R3yyb0eAu4w(EIx~#t91?H_UVVq7X{+%08M=gds(gUSiTk?6YwK)Zegj`)BvpwnT=DTLs1!|f1^%}W zz*A#_$2@zh0&xfZE&_IZn7U@q{6sNp`fN_QC5dBc7b!@2c$4j@I8QP}AwU;Fz;gpz zvtt%5DhK-T?`u9gkCqf)Jq0nDLb-=h`e!ToqbN9&10NB*#oudwKL~$@1n9fEcv)|f z_-=(!VGtPmjxpExNYRs}7I8ewNF#vS-c4J`BO2k6tAS1bU~k1C zI^Vt%qhCQ?;xTccx?ys%AtG4}BCL4)+~!`ebLRO_mdMJ{|Cx1_b)sdqj0bdI z0n1(#rC5ValpjJ?I1m|lasrLN;b&s(dMbVhcldVji|<_T8X;UcUxc@cfB|C1C5*z+ z=CAe>N#)3>EyQO6dZWm|3Wy;%Yr+KAkcI2xdm8ku=yiH4CxUcafU4k6*l{%ChAy>k zy;u@XyD$ddKbbDC{>|ylT>*ef!eR^%4`3qDlDV*@{5R*{qd3wG!wZa^PD7G0HM{W_ z2dxmFkcKMkY{TlrETsu02oM;0a!Vt^lL6~5~}0ZjAk#QL-o>pdwDoQp$P z$}e$jgTTzaaq}zlP6h6Y{r`umJ7QSY zpFavt1sIdYx;LS5K5`4A7Dh}u%H+>6Z5T#?iC-ewvU}Fv!=UJb|GDQgAU~|huNNNJ z8J>Jr0%;&X1;JpN{EXTR{h6LLhew?j4c%ZNbmDK6=w_68JKfuaC~3e;iwUJLxG3-W zGO_h-aDB~9u;7HHL_Ajee-*Zz6{m;akDT7JTX2!*SqK*}%Y(&Iz=hLy@$+6h&?#>? zsnP4hvva9X-Q-0tQ^dS(e&SE+r#%M82;OFy?z)&aAlB_ELk4SrYU4si@JS&hJGSYt zYmXwI2oT+Xs6*DT(0Pph1IFwqz@k9 z3U>}Uk&3a#N`B_LF*s%|Y0i1TfxLgWijn)aw21ZeyZA-$*$+ldv)yUxglDS7x2Dgy zZcn}p)rD~VAKTVrd>$KyZIk|s$01b;ZR>S?^El1< zKrS*ns*QpOZL}|oR8*p6oLK6FQ&NLt+ha}vQ)Lx-xvbRPEnu&$y^Yr@+CPWKD7j&z zxe9i=ccA=64RaHIR++eP-u{G1rNeM6K~R#y$R6>}%*AK0VR)R>@q2@WNNk22{1)}6 zW3BP58}XPGbw>IA6`8<*&j5bVJuG;ALOmB_a#A$tJU*V>+w@lHY%8+j;@Md&8`nAn z?%UpXk0qZF8&yDZ0ELd79Z#)By@W`;h-=#6=#JK=!{?4Gdwkri{7|{=_=58JnAmO} za*@rlO3Hijo727tA7a-{$xl&t=9}J*rTP*XRCT@16R%B&Kb7LqJ!|lb#CmfO=j{AF z`Z3UZGt{o0ljBC`7skN=Ws&KhP;E7@>0|ABYof)N*PE5F6tBWGd8(APqp;<*1rvBd z=%n_3XwC3mvMTEY;$KIHol@v2eItSJHRa`8GPi@)1O=s~DJzerhvTpF&p%%r`UCl% zZ8yZ&P3f2qejpR$pxSn6o80vxtZQb%l|cKPK#d4pVynge=(vr$zk6cf#TLCg^Y~c* zH~i-^{k`vz+JUwBH2Xjg&SUuv!aY%IXyiH{W^ITq8r%&sxe}v-EuC__& z1sW`tq;SSNmHs8?3$kNa>yQ)2(W5UXZmr*{0PaePih8Vq8>>oQAG`iMA_}dSH~O&T zB_i>q!-c(D%kg9M<+9&aTGAhQ$M$IX?!YYA-?#*wXb(Ef9zaX;ebN{2_$|vKZ_62e z_ItNiI^pa8b@w;JA`dXSNMGaWIj9k#EAQda(D2~FF@1eR@2hX$B=)uX5`mzdbUE`V z+`zC}D~X`BN8Bz~-Vf)yo}Ukd^1tkqlK;MFC-{hoM&k+S$P+t%@uH2*)r`_>cYoeM z_&aXrl`DLFuC8U3l@%2~jN4oO_%kgz%{G|h+qaiJrl+wE{?twfzJVWM8U&p*_U|}= z7l;p-HmGT$m0nr`<}@K8n<4WZAwlpP(K?0`ATn6W;;;j$wb-KfS}7h?w?`B$t!;0M z-LQ&05Q0)5D&;W>5r6u0SpfvLu*w*;FQ!s#*-;lhvmV5h9oo4M-{W=u794BR?KVGR z9@KC2|1kF6@mRL+ANcLIDyy=JjFuv+%)>=N6DRuw%87(=C{SVIl$rY_(?X6WGHFjfsO78X&K>dR(zZtlmAceh!9UwmD( z0QoOuLQ~+%x|F+S)r0IW6gcJ! z+5kpwAt8BrAqM3O+S$T;*?kdc8bqd1$D)PEOG`hq3dX!i+KuPI!$gzwIXs-4ldwn?-c!}`HuR0J!t&k5+DCI#ww2JFn$0o}TyyzAZ_T}4 zZKes9A*GM{j>PkutyOQPS7*NuN1uMA?nN^*J<9R#BA#IBu3%@Ut9$MoJpJQ&g<|6H ztIKVaXmBMMiHPKHUet>H*ZID?Aw=~hBrVU1wDuh%VBoQ$SQMEdv~wrU1OuNGP=ciT z#Bc}7`Xs{&KWROiIh1A8%e4nV`w~y<$x|nlZ9|F3)En3n(`idQiOw5)Jrq9NaADgP zN==kf!KTy(5eF`ABQnZHpj_a&(cuBC%3$6K9;*S*(LOmDG)G{yxkzK012Uu$qOb4K z%dpFqo_q+s;ld0e8Dh9jy7s^OGeE>$S2Oc<7-=*x*Q2ZxtJF5TbO}5ycY)~m1DB8y z9@K${5A*2vs;Aj^6#=Eqi3&OmT}7tS^=->ZR;1^5M{4!8v`kF2$i_Q?3HatF1Xop6 z)1JHHBKB>cTbZV3jbFo_Rxt1VsH~y!KYLmq-P0ckr9Ru@l7hcBe*gY?tmxKMhO<4| z&deT7u}6_QhLSR5;dh6?wRUy2NmC~pEd-J-8vev46Y6t(P=rBUl0^l`qIixj0>a#P z>}G3hL)Sub;;VB@(ubc%h=@edmERgDPE+>g$aj_#M;|;y3}opJTm2k^E%>j!C`Kz} zrkhPNh~$(7c)4B8_l;}N)2Hd_>Aceu#Tokk>te$GWv>UycFM3GW!e#}NM=$7{J1?I z2`6{$5);@BsKyz*>Qk^K|CUFB=2Uf6p!|bp&thWYA^&7%d6mM%Om^y2uRrT<{L)Im z+`|Y4ZWfh8CfomO2j0D#=6FlJ2&<-}i!$~TpJCb91rL?E1IJO(F!>g8=U{MpE0c*$ zNS?qKfSeP;Jp-1)B&?L|1cCng_1-u!72h{AfhQykst6+fE8wV_+FoIL_3D{3UL`}L z5H#(SY3T$6=x7P)IuV>467<3%ZqCADS?hk@-rKi(dn-6kzf!w&iGaqm(TwPSADI98 zURfvh8c9Z6TyS#3U+=?I;OMs|=-<;hLo2+vxWmt1qXkvFb8)kT)^4_+nuqD+K=8t2 z_B^8ITrjKpG~ByZR@Z1%<9wE;OI!$fF0(`D&K1TBNlWwa9HHJu(^VvJVz=he%dZ1{ zIZthU`v3b!tESj@f_Fdwq71Dc;E*mW^%zMg^?4DE7!Kzh@B0PB&t$85aM>ONWu1Mt z;DG~4w?Ed@eERf-Hb!Q7`sZ;g967n$?3H>ud2=5hU0olkoqHh)&X0)+8UB6f|1Uqb zQS>KaIgmQ19<9Vh4Ky5#E?$INuvKQGfLj(mpH6d9aA;_un6UNdpKq-`z)puvqrJM! zDOcesaQN(A(TMOXjnDt~lit3h^*{mHzW3={EPl;Ap|pa&lI|Lr0u?vnNKk zJ{%isUJ*?ri;4;jjY?hY2hbD35`!l;_)7*_jV|>ALqk`9g%F!@=kDE+v;E^gGNNyi z3ww@h$X9MiIgd2X{XU|BKVhV&=g@;wzp#T=Rh`NmNiEz7U*nFb&CF3CsqsWD1$NeUo#~8yQ&S_7{$)iOhgYtLgiumy zX_2x`i=6_e$#$|vN3-sujd^cG z9*m4!U)!xs|NQo?L7v)Y{&g`I9IN9^9mTJkFP3g?oG``62@6LD2kUurA^tOGOsYAV zUz%Jh*uTK7cK$r1*OU;h;Jjx^`hQczq(h zAXn4ZWA}P=U9^t2=afEW9c6GZGqaHqDTL9*B}3mfNA3Wwv8AQyp)x_vf8RbH)igOX z6BDDS&oXwzZareHZa8$M<-Uj@7l(#$U9N`DNMnpj@$|t1HE+etdt07M{^@c`Rd17- z{P`1ZdHNBwNob3nKvttW^r!EXmEhjq2A)Bk5cz?J;p(P75g$Ip%f~;!0ey9(F;4pb zR91IK<0~se&flRYJ=mXR-0)P#zalp`>3}r5q$j_iU{$dpW;nk^~Gx8ah(0c+Lk!6~$q z5^G(|aYx6xX!4<<-62^H^MCSf7#SrT@XgH^E?8QLnQ=A+o;cCmlAnuvALiz^S{%HS zNc=VP`GQ5mi

T8ZmROrrz_1%F1rvCOvcV951ocn|DE@2q8||srQ8lwdT>sTw7aZ zZVdvsiLm86Wa|0F`hmTB5zZ7T=`2@Z#pUe};=mRxGP!hx;?0{&ml6|6%`cDX^BYrr z9CR&pC41iZmkVHG<}Z!qseOadVD%@dIqLx_t{9JEqu<8|QO8ynsR?E8zChvSHp~fX z?H{03woRsNq1J6}gq;1?I8d>=N}__G&ZcH*gtU=+UGv%5^}dN#Z=9~N>bTPRJmeLT=r?_TFG!&MDk2;|?A?efl7bTXP{N*Bk!x`Za<&kYVls zLBD<>W)c)2UI>&IUs#rY>FeVOjWfpSdI|G@Qak2^9AufVPATbF+YFD7k8Hba4VH{H z9TjoYZqc7EsKm=OnZOHc6~1+AZOQ8LAwWoG27`h;;&VLg0|RYr5>%qob)>KBugC5G z*BSEBGBTDv`Sck%sL7ExV*a(wex;}uI};o$_svdfkun!C7o zd+*;*8jd%w>@1f^&^#(nAufLIoI@9WtQ~mM!}JNMsmTCwgG14Z#53`;XVqe$Hh2>2 z)2A^1Cxo%PyLy?*YogF|f<>quHd!E;r%50qEIVq>GEbmWM|z51y zfJFFaNUBLP%6}qIXdoo!aQJXkl(#o&Z5jUe5?pOs|%n^wojcP5@+Y3Tdl!m z@%FY;wRJ8eQp(bPem(xh_6DThz@Lg-@nsFsk9M=g#_qUv=h)3L*HYE@)`YE$%rCSH##C-d>UhVXx23wgLXK@d)plMm)v z*R9O6i{k)|eJ*Lc+v3UxPiVg{CYF}7=ks2&Q8zToTmSdc@PGXDqGA zEB@RLt*fSV4i0ZzUHtHF&6p6Kwts8aQjL$_zu#F57v2WNy1xb~@rKJYhSF7ZbHV?3jjf{+uGae}`51dt-cL`Qp&T|{iGIkrn zL6!Gr%s|=L-Q(e^=qV^Xy2m_Am^C_3J|9KXU@36CTa>je8P3A=b1zhc-j1lq+!Jc zD+=b+VMeO`);*Lz9?QW=I9`U4n+E>Ss29qKlO_ucRQm9{1MdNfXG`TK9M%yWW=^#a5a$dga8#_V4H2o|~UvSXh{~ zi9PPLg>P?6>Va(pQ4_5F5D5vDpFgzqTByC|+hEucEg7Is2nxP;q`Tav!K@Oe(SV33 zERm>?c6=0ZS^pXrbm?u?^3Y&3*+XR|r9;GZztYl>5Qs{Hbs74Ulw{V{rKKh#xBf;3 z?9a4IBh9t#p5KH?b#?Erj5Ll8eEJj|+|&f{V6u|*bx0MHY>r!BNLBCkrydy{9U1wp z$JP6vO#3m7&4VJfxY3_^0kYf=M@HG$^tt5yB*i_ypGZhcOFD2wY2G7US5QcZ8fK32 zoe&9n{`~dpUzZhlbdC~-Zl+* zS8u&269Ao_2_67?Mp%H=g~M)_vN%E?qi%)>GVh+|cC5 z=O~5E4Rv*qE4V*@kZV`L$LIW~^;P0TSlIj=zd(?Fma3Yx2VTmvplD%Mhw4VyebLRO zG?zRyQKz^~XW!xYQxPzi)kTAB-LU8<7hWzelRC`r+}=SGc$8@?f!Akv99j!}tQA6X za(en5>c)JVx+hle0V~hCsP+_ZXeerb#U}Ophpi-3*ZhpDw~>)|sbb=U;$1epv@~+J zf>#}Id&-9zsk5`Kt@Gl4A4OTA|1=bWr;K-MSzWg4ObRXpOD%NGdZN8%9t9Y3xnFu+Ty}M# z_8q?&?b^obO=|lNeXb4&Chsg21OuzWOD8&cZw}>D_f)MbaglYGcYP1rmtIvCg6l&r zsiXrI8*4PICZ>9EFE-T=Y4^xA=zXk@4S^P-LXMe$aX1If{k;Q2MV6En*47q%eF;@7 z>9*F~=t^Io;m1nj71a&y|)1EIj3F%+AP=iC`4F^8XK;=Wt+EfP1U8 zwWOSZeQ0#Yea=d&5B51^mT+ZeJ5CHoUa0$=qTM&zR%m}(5w=-c+I`yjHsq@N_iAuz zJ!;Sab@l!Gb8}znGa}@ja!scDU^=qlo?J&$ucb6C(r8;^Vonutv{faA9xc&%g)Psl zE~q?NTNN*~bIK_TN);Fij_)9-il+dJ~>y2Y{Szjw1K?cEzvyXje#m2q#! z)64>H6;A&=am5lNC#jPMs?tnsM=h`ElL_eQ*f&p zjvsT9SM2j!U0|2E@|7Z-qdYKh@bgL+mzbbysp9@fGIsGZXYO+`96G|v++AU`xmp<@ zdu;5>-oEmw$29&(U1MUlxw-`aX{W+x3!FPDCU%%o(sR5u9lB*2@}@At*0ry&1C;Et zY%yYEHyMV$QU!h}ai7jAjd3o`H*(G{oVteJWpP^+cx=ip^LmNfZ{r#LWcfsp;pQP)r=}Q)W`XTAs*t19c z+T6&)gZA_Z256tfc2x^{lue;2XK4%!?Ctxqiq+#{g~@UY+&znO(^f0a!(84^pAA9H-* z%hTHvB)bvsHFQLq-Z( zstfJ*@p1XhR!_0k#@ctkhN!6cBAz{Faxh4C#o|fI1YcU>cAC16k^v@Ndb-yK&Ur4B zx^-sX*m^79(~fJeTVAa2+E`a=l{wv13SQne_H;ccspe1Qk}K>zm+v-DxV@G>An2 zhQ#z#OnSh6)q0zn<8(DGmHIvxIA(l&Nc!CZ;+^GL1^2li@?xis0JHSDPmJkI+vs}= zctx2;T5Vg8UcXLi1H+)MVgvK_zt3Xp&oCnw7i()r!3U4Db=`-KefhmnSJ%&#xWjvo=81`A;W-D0@8jbV|xR$oR}ROphqJ2?$zg@okgg`A&Q z)PT=H7ZDzwovlnk%e664e3P0Si%!t!1v1Ai96?d*nK$!}(tS9`UO88Y&_@Noe&H9S zs;GFS>izq$0y1hsNhvPke^bOi$|}bMtFCKw>9z99R+dPL>v!pCo{o;~%#9ep(kG~` zVY2Sb%$&P}ftIP!Q{9V(X%+WW5`ob%NWB%7PQN28yX}?=U0niCx%|{oeNAKzofg?U zgnv*=23w+%oss-UIV*I}Y2bTy->DbGo8Ar}bqCA|>0L@+U&tKQS3(wbj4arDT<;+} z7X}_7yAF*V<+jkv0^WmsU9e~9Ua@-0T`bhj+doTeu-4^h4Jzymq*)_ zA_zBb!0S4YpcG-0U*-w;!ZnAmu(tW5*lzykD;qVMzIJ#ri)Ek*M3X0TYoi`S0%qpU z?4&Dj<+VQuY*5ahn{#(R^ys#803+LtZO2^)qfD_os;un5!x)1x3|7`6uMIS6Q$=Vl zyA#}OkY;Mzg#31n&%s}ZuTQ>%g>!LX;C%NX13!vH<_5-{k#&Gb?mLQ-CiHs;kPvsf zuG@df*}#DGndo3lLjwi-r^pB{YA}BlQMq6z?{w;vt1HB#-^~c3L=1=QSWfQ$bmo-L zA82Y5JJAdu%)VWfU;H@w!G4d8K@M+MelK?Ko@q%QW|g`t_2UykU%oUqQ!^A8ecGJR z=&2|T3W{VziAQu#b&*{Pc@WICWO5$7pxM}#LFz6Cm3$=)bYUUk!$)upgAyK(%EDeM zAiij)%^rl@jTJWOHp7`v}7N?==@wrx3Qt7E?Up z9=KWM@9(cyeB;rh=H^Gc`x+Aw>KG*$c)9d1xg(s9 zq{Q&z%2FDBXmk8vwm_EgvuD?TCv~&I?i$$yDRX-kl)Ui)ozRR^w^kqfxC`ZJ$eVYy z?b_953LU>Uy$v?UkAJ2V`5IsC^`|Cyvv8&&x}y4Xt}ZNrk7RjNoKuAvy(Mx7XjVNvt7>i7#F}-P`vI z()`kVh?igACVS5Ykwe%Mb4M`h^-3-6)B7oU>%Sb@&CU)DUb?fu^D_=-d%0rL^~Uv7 zyc_~&UoD5iE9uq5*SPZQR+fYgGj=h%U&;yg23+xGm4q#d1XW$g-I^NYXA?@@Sove* zxvsXnI!$e0U{N0ner(y+;f3j!NG7L==mHRItRp#z0M=`cKXS?Th}qTL`ZEyZJ9eR$RVFK2Xc~4e-aJEJC)KWehuzhRN{4Gu1WLwDOrV$* zb(y`ITX%~#yuU~ur@ zU}3xgPviyb6Ocx%uR8Toxw;MXySf3G!K-8Dv;Bdxs@nW~+amIS|Gn4_nD^>u@n}$~ zKffDlT)5-oC*ET!>g{H-0Ldo4CF&6%PX5m2*d-gRoU*n@>~q_Ei$>5qz{l^y+stIq z2YZs2)iFla*w;hz?V;x#SH4Wo{U~ELEIlFVMZzfv8XUcRqP|1KAvSgRl^Ve?Gx_aU z3j6}12gSq$fF-a;ST*kl!B?kyo#;cLrqKzn2Wmvk~u*4bW zTg(=ka-_494;8-SMxf=&w9caWMW=2yug&#i20cDBl73$A@9U%z9zVW&x1gY`AwHIE z@6#9bzka3N7<%!7aPxFWw%>*#Jj#Equ&5U=!qxMykf^!5d^cB)<@$MRK8WYyj^t(1 z(~He`+tt+$Q^gamJ5k?}=xzNGknS?_J>R8%E^?mk^#J8WLAP!!i3YZBQS`Zpvd>MVQV9$v& zZb*@2_u0}4IcRO8mUL%j`RFr4_^riD~O=%*@~^z^rg}WU*K2433_@yX<8u%n*q@ za((j4SBwz!&qHjLEJedCF8_+R_xhShu7k1rT$fWvVB?S4+UC~=LKZz0*`^Hp(yG@r zTZFC74S$7*NJ+`e4Bfzqu9GKO1zUSJZqbj5*znyPq#bXb-E%z2e>Fm0Utlipx|8ac zq_YG#W*-L|L?WFFA1lu}CD-7$S-meQ6)>m2zwdYd%OQ=prY1wlX`ji z=TG1?6+6~HB|mhCi3vcQfGTl^FZGp`LC|#bxLD2U?3Vv}w95bhF0sr1UvQA!+76n~ zdpl@?IAvEBCR(WPMg$^uvBU8nnzWt{Z)q`uFbi_Z2MELW%sQkfVxpL#0StlbTkPeMF)U}< zM(a0swL_2_ts+}fd(GkVK}SGHi2YgO>7bu)pyQCXwm2h^{Oyit#J^@j$@&Yuqs?#LmxwXLmPoFv;3Jo6SICmbhx9#{XRq5`L+ zq@%;Ypa4CD=C(G^dB7S(f%EvVXdi+~0BBR<0#=aEm&O-cP--mome;5SHtZm+S}NqO znL8>^JWImF9dyVT2hf}~1O!S*7{KC|k`fh_G4bGh#Y#>-)UX$j3<;nIkq_1TZmyqn z!^u~Jv|}M_Q|i13x^;cZT3bg(?$h=y{egKB{%ju`0+({-1aDn!|MDf%NQBhw-{bk5H8SSJqL^ zl}8XJ*r&j##|KBN&7fC{(bMq&ogwaJ1k7vn&-bb7EAbaFCG_Y7r?e1v0&_%i_Ago_0r z$A89}!pt1?7s9m>x$6HEAL#_(nvt6{8tAA2&)* z-Mx(lS>!;2gasrSSdwjcPV}czBG>9sCgQ+1M4jHa^C~!+fUa8ag9oM_pj}!)79QmS z>vsmUA~!x5O}~(Z{OZyx8&W?fJ1F zm{bhJ?Owfgd38GD$SDg>4u3=vPFkL27223*-MMcc8ygE16KnKiCRTus*q= zi}QLto+AlGe-W`4aBGYz07fTz}j z2RrqIi>pL2^|}J$53(>pql!saNgt6hIs4M3CPQAFMQ@M8px;7F#Bf_z5PDWw1%by< zTkBE!V$t^2nCvamGA5)+mCEKo#Gm^{oip*0ShXvd??^p))DGHHxPISEXh^h7Y_5 zkcX*Yu=G+*%~Dm)q;O(pFAA735IMrrGTE401&dAaCY2zE0Wk|*B3D`i<8&neUfs~B z3F2gQL&TBL{)E94rFfI7eN682d_ZCbUps@i$-K6DodkbhA90s^R+e) zxuDtF&@=lEs3YS8?%l%^i7DDoGr=9@^`MH-_f9;AbojpSiR2cJlOtEJEQ~J#F|fY= zGhW=Or`V~52X01ke848hgF5DWHp@yQwlcD&rf{#a2tF5g0D_WAG;}iD(^o70$zTDv z+XXcD)^8BsV=;OEHq5G4jD-24(gD7ryXJq%{V#}!s0t?OOHkL-brO=9DtAFW;c%!lAz~#b@@`uCQ_R3z zkETX8ECM-0zIfOK6?=ASZq93U3tMd5zty*VlR6}1`*zR;0jYV9^KWGI8ty?X(L^h| zC>HqTq_*Om2o1mybIjlu9^dZe&1-Px^0WzdBWYKEh!_}{ogwI?vIt0Br&m@ByWjeb zomcUW8*8+Ixrd7uW#c9|td?KTF{cJ`Z>7(MAGc6WZmuBB4%x728O!!emw_t{R96}} zZzXALz6FvAS|mOPUiO*WH;R=3k|ZF^&K>C`PuE_%*`lj& zc1Z2ni>h^GG8qF`_KLLHnKSdJ4V^U&r?XxKQ&TDmDteh+MVULvr9Qux0czy=^a(bp z-!=*=Gte#o5o`JF9c0()u6oyhd3@~F0tUhna-1LOW0ndr=VX7^G{n*q%-M$Iq( zg5Gt-b_%M1SvAd_ng9ak@oc=fc(KUA-gbLQDIG^=Hpfo(V^Qzl<7rp}X6x^8;q~-R zeDCeO+woYUcc0W;y+n|PocCh)OBJ!|!2cxTNh>5sY{fijV|4s?;`o9k z=@O|Kg9r3SyyP)QYd09FFi$bKh^kY$!W3p0ys6LDoL6 zDb$}_R`0`1AjX^2;TXnjSz?GciDm5fU%upJPm05S1b~x>#eFp%nIjB0{yqs!3~Ra+-oSvp@mC%42M(KGi7@Rg{LOv-|)oaiwkRn!$|mG7bZBgP-X%jPnwCXkT<-FH$u1^=oKH zQsT)wkc|Dn!Rr(E!l_c4k7%ScuXH)7hpRq`qgz{ZJO3%1L*Xp6o6XDuSAF$C$L=-+ zC}UwMOG&<){F^} zQh`ENL-@FD&yUYL9w1HK%%O>Sw9X=6=7VjUaA0+-|Bktv_xakwZzz0yl9~$#NvIi& zT3+u^Dtt>QeUg%D1A2NK81R&{Fj1IP5-UKN3TR%2|MZXMW(0zX5wU5{{GLyS^%2_4 z1FdS|IPH44z{Hf2!o-5NX%IB_{Jnc8SKx-9rR79C>w2VO;u=`@rj6X;B79MO%6~9< za+Vlsn3-{mh5U#{z~*|o4k1#f?uoiOh)DjErKNd76hi5yM4F!^d$AxLgbhhi7n>YI z7R@-81_6l&Sqr0C86brOG34Juic^!ZstQZA#ny1L>(W2*vr*XKpm~p_*60 z7|qPMfh@e9%@}5ZrXV(niV?OyNBnQT=PO`7N$Hh7zpJs?kvPoJOLcxWa(b2tKfGl` zy)f#pub4WET@X8ApfqxW=nk;3d>*S0o}JtpL;*ZjyKl%xTwy`7tnPAPStljy#Cy2b6wDbo$ zI(x|>JqcKUA4Ym}6OM8>jo;EwYOXKOsOLu8Dt#k3v97sBJSfEA(&JKA4?z5KRs#1S z8P%wzV-GRv>E7v~XVTZJ{!mS~8>eb$#NY}XyHg`(!dxGw3C{Lb7#Z#5=$^hYc!S9I zG?TdFTg7sRxr9Trr`W%eGWa&d5y^pTYl$>2n|t|LrTTZUj#rIGB z>Oe#MgGs>6nVp%W_B4lH0#{yerb*|7e<({6^o~{5P!K6}p#ujWiNoI85yVi*ZTT;O1@(+n?GLwfIvyc9@#!K$yHp62K0`tH3$$L}WZgk7OY z#d?tI85$l{=dVT#_Kq3g#L%@BOevorrpU{#d3}Z*SJBz3WJmz6@D>4LKWcZQpwbVTL+PN2F=CW`FcyMHbn82ti?CFYAo{PTO*^EJZV4POQ`x5sncs0hbE#tQjiWxfn^-9>% z?qbYWrWni~BWUYleIg|QZAA$qBN(J(l(YHAV|`fVKvFC*DW{s*-~WhhYmm9O{hi?k z#Q&NAw?Gda19iG-THr?58-wU0b9O%A%=a98? zpnLc3xhy*u!*lt~?&}~fKY#wxr3g+k(&mO})KjC2u@AMxOV|Eboli2jJ3ZUi_eSIj zEgQwiC|^`rnRY7niqNmbJx^5=H4TKi+G}s@gI1`N)P%l!%<@QsUsBL8*W%3$N)np?$v3`SHS8>swnn2&A}-Riv*cK6R6AQyHG)0Y+F666bEr$n`+Jc|Xf-o# zK-e41neX0x-S1`eaBX4YwZtJ#`Ro@_)UXKw#K9fQxJ{RpN!(aQ4qZxf=F^;&ch_0QdIwZ)F? z*4I(iOAkIi6#>vjmIl=I6P;n~1XO99-ugSO=o<>^7ze@DMfNZAq7ard%oiJ)z0f=a z!q1D7I(5O z6f%$GipwSo`E8PzgCXk;;e?IJ-{01-!ipK*mg3Nj=Y~(Quot zt_VCe_U=7@UdRjwB!TCWfpRzs%JXp#|LYCdMYpyh)iwFTq^z^WW`M=#$1rwQ{jn5t zn>#iK0_0y{sP>F!l68ll;+w}C9oUYhF+nX^$1L|_mMr0vTbB=t*IA{vv~ywiA82C` z$3-&CYbH?M*qv{&Xg z%#nCD(nd?iF4o*ZO-pB7(AYt3=k#Vx&#j~M`Icb|hM8)4e1er8KK3Eaap%23#a$f` zADf$ZZ~37}Dh%n}N*cfluWB;vrY)5WGK_Jr!u+Jp#}#cXZJ?%>zCeUS{35AZQE`6| zI`g(LGLWcdNHQ~&TX{FdW_rva0lqw+G@nJu;5RgG%~8K1wM8_0L&P|Yx6ND zq^G|;97%?7%Uw@eT)TGVRU%nhdU}RRTwGcaaglit9LQ$s8su3+f9a`tS(TiRM1B>j zA3wnV&@`w$tM1+}Gc!(3hfW-FN9gMNb3!~%D*K9|5u;2_lX~;6KVKM_yOZj6{nsAu zd4fhbDln2MpIR6@;=xAzy=61O2z*_{?fBh#%{xmL7jq3{5|yYeo*zcVLh?&L`H$kZR>ad1a)EL$TnDk9?HE+p})?oA*Aj`xS~bLXsY z-Z~~kr#12J#xnZ}QT}JQeoyu!ovnLf8C0Q$_*fKE@$<8ZUTsvso;J)&8yx)2>v8Yi z?0j4EXeaaZLVL4aR}o))`Z%kVtgMQPtSsqWijfEirGETqYI;W@eB8xdRE&~ohk!u# zk8@~jL%-zIy-RViA}1$($+Xo`w>zBFc}6X3yjlD7X>#(@r_)? zjPB`{7~^{gop$PHfdL|v3kaoSGoTOia-l}uLdGErxsDmDhf=z|!6v&MV)6W4zil|b z8d>tw*o((wKuWQpLh3zlbQEyJy8*tX{!pQ+B}l=r*Hq?L*!CCW!wdjHUk6G`yp-%X^HlB zS~k&3iUaS#kEy%-S&VYr6J@r{yA?N3vn`gs(NXv${OX*G(?^dzl0a|H^d)La^uRqe zF$ETb$-5AIQxh^NK|6Kjdi^u|t0kpm7cbh`b$04)`kg(?%UfGZ8u-A=tMLLC!4)sR z`D=T^E1t;obh7vFi;8aFCX|+D*x#g5xJi|redP)vB&4!3FK@}^KX2&_&cY%g$H@YR znJt}W&At%~DmxUaXM+v}1S_K(=wvh;HgpY#O?bQ`nHR(N0qx72 z#HS#%h?gN}H@9p7A4-`{*kGPAVCst)Z6QHwY#Ysx)6kX;DX>|Q@*g%9ER*N78cy%g zzS6Ee*zDRM3q&yfM_W4hXX zoz#@Py1*fcgY?V&H<)Hj|AY?JUc96vNL@4chN6yjh4m#aR_|MH%U}KW?c-ok5jQ-#dN9L9okZlj0NU8^TDri83u4c zXvhn!mTfFqb!0zgO4r$?7vW+AYona ziERs9jxu|%Hm4wMk(cVTCoYj4l&>ywPzuBUa#d3+H5t|2%q}TONJydZS`j_a|68Z; zYn=b;WDli!yjj7>xDmIo^TIf&W9&PM94lSOmDQ_U4j!gF%FD~g$NNwUj9>n>nx4@h z;}5s*IwDJR8+EjI{_WbPw*~TgNu#|T77QnTC}?21Up0V!2eNiA&iZAuVVN|m1!{w- zTSTb7K)E%aNjo(|cFT#I8}sd}*tkvOubYj*q*R#k8uQ{5mdG{_BF{33c$k)Lb)uLn zKv|VSKP&e5!4tbbe)9g4RAM;l9+i`pmXH7fs4D-#&(sWr_&~GQ-~)3M-tyo_F=EE3 z{~Oe+W|SIz^8ywvuja=BSJH6>M*7TNFWTC9_QeuH}!cI^V!(RgefK16o;pG#~ z(M4poxH2?y)ow>x`lriwcG{^M*Go%nZ9#o`lX|$}$RS*`p#SDNkfWQx(Ugh`Z;+j7 z&c(Ll5RX~uBN*h)JUG}^E3xmtH}52``8y9+K6d98)To^8d~`VXhbBC5}yfbDItW&Ynk zfq6A5mdT*eT1=PNtd09tVEd=PL=xIa<^ks~Jd)Cz2Mf~m)p!}Q_Ut%WX}%pt`S|$x zrB7fs;_nE=|fKn439Uk)WajEM?d1M>2@j2C#oy;*ZCy!qJvZt>_ zLPU|aj{TwY9H~Br7Q>e|#Ty z=@Kc=swH*v&mF@vfpbvOKV|})q@;vr!vr;O`zNx`M{9m$cE<*)HV>wcVY&Ji9_O-& zA+QJFi6^ZskE8S4aF{RU1$aNl%!RA{(2>c9Lv_X;n~x-8J@sfo4O4@FHz6pPvxgh) zOq?n+K_7K#k&}7hD8%2R04zakLH%Img9orxMM20m^ffGe=!_fD_?I^IgU%b2p)CH( zhn-hFVF=Mu-QrYNvD@%uHv~^eMP25HeWM!W%`3c`4uEkEg5!HHZisYwji`3szn{!&Ze*zbF;n07{E?9Y(S#J3wUv@GQ(YyY zr>(84dvV91BfTXLA02QM6Z7y86D7P4>ngPWu_w0(Mvl8!fp1`Yd!yzkO78gQ73gxE zJ%_A&#aQ{{_Isw470WG1TLXB>QT2$Hb}Dh*OHSpqWIQF>j0#ae{mVHMz>zU4OTe@$ zmJjWWa)CcfU{3NRQb&YyAYmO*B6xd~p>@i=n>~ss$&$<-UFkZAjbYO>DX;0_cyOm6 zK{>CZouaNYd+YX#laWuTAiKJv<|iZUGnX3Q*?A%E-pE92-_zT38dC08JF@*(4SKm4 z8QIwxb^N`Nhi;bv<;4BH(kzm0L%%-BZ&FlLbQb)X%Um1ID<}Xg0w?aY@jI1{ozPvr zz8<(BFYYDzK&P6Vhk zpWQM0&qGJ|;vy3|S-4UrPcLRkRj&@sBD5+v&?R8{0tqwxeaj}YpW_?QH07lNoNN=5 z=kBF;Qa}9!czJo3r^e2d2rITdLX<0OgB{dW^hn*&=6HSTcChsoyzk=1T+7=#+NtTw z;at6?B8MrV!itc8AsZ=0*VL81$oR$n7~<}AvA}D7y{U;m2Km=|XUaVhA||jo0BDkD z*e3_`cbbw(PSunY6ch*>a(Osi2c#UZ+B3M6V$Mtsv>>z>$d%!@yves|c|`~hPfyq8 zwbn*1r+*gl7~+H_B4REmj=7_%L}yeT4Se1Lt8ODe%_(`!ezdXRRR9~Zf>Tgz{2YT5t+*| zrbZndNZ*JrCOy6l-}g3l6c=QM(cu3Zvzk99UuuFdiCxX2j0RyR1ylAL2?vT`XkNd=i-tCp z62Y@aV`zp&)+=F)wYHzy36E=_o)U#+?4s{5AOemc`OP22Q=p=3X$^=LjFVX&-`kkc zG5wQ;1-hOY`YS5{+xy7+jio+8#fH>o10-=k22mR@tKE+6v_(x-G|3145A zXVHuOX9MIO#CT0yys*Q0%FM#TU37XxOZj865-H!tnz1RUdi8hF%r<%X(BRqJ++UXy z&cjf4HVLZdajT2hUGeT7_4OX^#1q^9wI3j~=p$s5z{SOP25RD|pY^If9_4?$K@4Q| zksUnp1QJconj6e0RjRZt}>bVFvy@kUGASS5U4-}8e%Ppr;Upa z9gbQzF)cK3>=2@+zt;2oF$KR#$)%g2p@4v!F~Ey&MJ9W{`%t|Skf{095)p;$YNP1v zTv@qzk&tW^EeLhZ&6@zR(>;ieerlwNlkxLf_i;VpJp48BGziZWff5S@B+rGG)RQOm zqE%k!{@v?l`G+L%ST*9q5&sW_@-CzJmKB@EP^6ZBQ znjM6?XpI+s8z!To9t~N>(Sp{Oaoe|RX`MVtC@f4q$Xb&e8*X3NrVU)8ldenC8B-F+ zk3(*sU4FwV zMWm4sY3c6H{XR3p`5n*y`_^?X;RxgvsnR@K^SrW8M~3mMpS%nE1F*rHTP6uuyl&u_02#mV<{9Qk-Iq(B$tO+2Y>u z@si=s#+EZ4X-EmWgu)=@P%p9^_M|Ka{u$?965Ph%M_xOqJtvhpBU{F;fa`bfs;l2U zbdftJqp6KpP)Pi}wH?Vz@}8_XH@EV}+485SZbGc;dqy>f;De;Rd|cMV!qBj;&d@L+ zI2SI-8=M2&uO}s-F1a*fW4Bf%>(H0|=MM!u)_m~HN4vvk;%enJZ=o3LH~APGGqzS< zdCoadY<;l#3UT~hJkc^j%|H+he2d~%hhTR7jb<9oZyTo8;dC4MV5R@{5X z@M!-?J+KlxhzyL33=E9Q92(kzN&>=OdlJz@m61G5ZIW_#xcFI|GY;{JWb z`F%fH57|b59#mU zQoA{ef;oiBtB{efVbx|+u{^CdhWKD4+DgdE-UUqqKfjs2#`*yMyFEc6>st=@j{r{h z7);Xd-`Dsj#_m8AIor1JY&~26vB`vNg;i$nKBb*O{JK8U=NlF=Q#AZl*IQ;NA9eE; zsIlilz=Ui$_uG7`hb%)5UgXUOU8sFU)**b^E>2N4ll@;|vCZ@dSe$0rSKzRi-v_k& z2;q0H@7zr-8RbF~dP1{40OA5xYhmbDDyuB$3T0Ik!|idk;kbw4IR06I%~)Ga9axn} zw~o93E8x0gB_~nnn*~TF$^W89z0V}LsA)aiNE`*Q#M2#wkc*1=v2G<3Ra7zh8oco9 zLf5b3ox(3Sj<#z*LIwe_!(b3m0Qq9>&r|!dtVbF=FNoYw1)0zS9Oj1V$4QNR@a=3U zs%rowkN@`eF$RXCej(M*_}WY+eLq|x=&u@v4PTT>ei^+!q7|)s3R)a#ibgR2=27#>$sl#!@nK|~h1{_MuA;Sd zY4||ru(yEX`?Fj z*rdBq&=Ua?-1qkSRVLfiP%mJ=(GkRIB0qc$*1?zOB$Zti^P`Wr;R>QdFYxgR3v*)IwH2l!I&&z}i(FyBZP3Vft$dLcj^Vq~(P*hq|6L;x@m_9f$CTr$U zrj&)9;ycVt2AUE{-xW4|9O6Vt@ok0Fi}vHfmDUYzHnaUqJn@IH}MXV%H{I-O$6f z^1T=cfDq08?moikNM%Dmgl+`I&=`^A`tee z4*3adWLsP^Us$lTl9Gh;5)U@@Lvsc4cdIl5P*^}>Z%fM+9>w#7cB`wsR<`>#R`ENV zy`|72h5e=@Yk}osLTq=*`r0Lw?nBKLNZCL}*0*DUVG59<0gOBRpxO879xz*xo_b(` z8wRW-#)?z)(7{ytf{yatHrne=3`BH8#xc!^3}ELOkDl6xVIf21V(57>=;Cn*o&p#w zVvF)kOQbXeb3wT&sEHtbR%g`zV6C4(n3rX&ce)3B6algFyuhsn^w#60kKpm*$j9eV zy?$MT!Kg3^7g%*~}$tif>l^aj4QZP?PrrW}(aA8XeA^%(@zW_q9; zI!X@$`^|E)v(u5I>x;jCL%plJP`8#-4dhubUtU<~{r^nHt~u;p%s!lO7n*=U8}>n@ zLCJM)$8MK+w%gTW;6?hOva%L(mlQ8NmfHgE7GR-SX21y;G1IyNRV$>G>CdTYdgl0w zNA)loCOQtdItri^iy5d*BG2vFnMf1}wz%7AL8cyIQUKo%XtOYg$52qG7hV$)(~9oA z&dF6Q9GV=29DJcP2*O^C$=fK|5#O9)(h+?dzv@=r{}txDYjxq*j~|ep-ox66x0s35 z)sG#EI|_OXm%r5?8tZdI%AD@;cZ==vvz<1p8ta^w#wy8Ru7+#5H1;kmYL@(ANbRhlT=L!XKKnz@XabUP&ua*ru{_KJWE4vhgexV*6 z56hb}rW_wWj-JQ*wqHGt?c7CAXr>GdS>?6qF~G?hq?`saMqr%t`LpPmAi!fF0~E^; zqlXJNMV*7#v*hMr3G_&$X+i<*G8hs;2m<5vc`+#|adGHg+}@5!tsj)((JXcIx{JmV zqO!6eNHaTpq3<;_dhVb?&mhWYJ}dUlok57|!bCGMOp?H_9{PLoPQ`sRS=o_-)eZZA zytC3(8}u|fdTVQ7phglAFZg$~?V8x_Md2u|=PYm+!JG~?c=F@aylaDXIm^`ch65oA zuowiG?JC@FWkgYzic0IJ8YogBCp;)fBEX<`*6T*em@i#u`E5?)->~m3qLXNh!&R*-8t!mckPC{YfD|$J`BtLXW;fB_?v@i<(_(71S zp`Oply!T#`q!c?BdIBP+AUYITANv&oP}<9j3?u98UBWEgKv)z37_!<(j(ec+3?i&u z=FCKe2#aElTBmI!X|OJ)rpC3$nCtc)B6P&oD$DOb){DM~o%wv;#d!zJd+8{g>}`iN zcwcDc%xwr@N1-R4Q$ftWXVqbir2lFA<1PZDIlAXM`nQN z=#5jW7{`VHO>a%0S-*;zPZMsUEKL!twtZ+fw&23ewAx|m%&C7m?wdHw6jf}?6>0QF zcP3eAJ2_E>r)b8A+1f$?&|)!NObRS4Xsw+raNS0QXo~I5oQ5voQK~N>$Dz@XGc|^E0)qy~o%{LWM zFQEIk_j_2%HXbj><>EL$U^VIvu5NWeTNW|1UV3vZGZRE?Qd518G!ZWIeyInB`Q6|2r>62augymo>c4_0a;_-w*%h>ucKCP`++@#7(P7(G@W$t z#p@HTisI)u$d1)w0Rth@cdd3un7qF;_l#ki2;43_M$03_oPh-{VwboFW22xpSqD!L z&|xSftxKh4|6_EZeIqXFRkQ;=_Ol#=)Ul}xBh!#f*U-SgfK=QP-PF`Nb1q%<;V1qn zqWxt{6N=A(u_1?TueX$t5V~Et#*ZKCR?g#7-{T?%(9w>!$FPmHL5R6Hae*@*^Uy?_ zvRg@bcxvjqLrowB?a~rY*@&L(x6EZY+gm?WyDO#cBe%9-+kBoGO7mpk+cVxamY$k^_m&_IN_|P6x3>P>YT-Kt8_X{4DQ5Cz@ht7)dI4sEeVoh< z!-sH2#Uq2oW`kE5VN(S0lr>H%Lo}xqRRHV_>W9R@$N`wPAhRyF&%+~T`FoxB9 zilygA5SBLFEF$Uq?X#E)UvD)jVjZ@g2u1dq$7c+maNHByYE%82fiP@f>+c{lfRxKRZBifq{7 z04Q;YbR|_QrJ~UlJkSiJc`I=gG&V8UQZF*jHE;;s=XP*>ur2KD;P3K}@MXgK9=M=~) zaj4U1qwpROVT7>I4)pn9NKUj;+F`UKLKMeXCX|67@VuzK+6^6{C24Q}+W&=Wj=|69 z+mLt4-#&>tq3ywtyB}1zsrMf%LF+F)l?PUG>){LqR^h>2-|vAT<4-D}VFZJdf#g$@ zG*2ytoj$k=&~}GTcJ1)Mq$0*;dEnI8qAY=e@Q->e4SNmmb_OY?5XjTc_J9QU1@0Ht%7G^W{mHVsJJ+V8XdWWQycmm!FV?;$Ooz2bd~vfUg#^q2eeDK z_E=bumage_pX@1iT4fN@*tXDb+(!~A!sRN2E_7!4PX;snmrQ~`(t-*KYa|@I1m<~V zi`k&t1^V%&PU7CbzLVYg-$Wzd++jXm`xWiEx}&JtOE*e1gFmw$PftLyolb5hG>E!i z)SZ6%ct5laVR@Y>N4OqcsvJIK{!cv8Zw8x~V$5wDM@Lm8#4IW*-$f7Yf}SyQJ%FrW za5U`_;(#TM7`l?FVZaNy1UInsfkBgj+%hjJ$as+fCNT(t;H+yHlu**sxt?I05+JtQ zzz*rJkThpl(y9psSQk7m0k2vA&l(g5?UHwbxyT{l(ZtIiuLKeRCx;vTeA)a{NP zR@a?{A~3Gm(_PeR6N0O4_QN11iUBg=8!J4Jt>5mc8kEjGKsJK!%QF?Q-P&LWF1-iY zmoNC8`HC8oh6Y`8(2MIql;8&Pk`FR~F3KJfA_QLS#=CwIg{cj(G zZz7C+=TNBfaj$0>>N(`vsdY^Ag4h!s$-?GXM>+#@4E4PI7?V)IVj4}3YowdcpCQA2 z*Rhg-8!gk%y5I#d9PNpl_QyXfJwKmbbx|5l6?_;zT@?hB^$?`zDW`)B98fvgbP=mq= z!rnWG?zPtlFpzzcy>RRC8@(Wa;_glmh1KGYQZF4Yi^NJn-#nPG)ZJ5AGYCah*mz}U zzj_7jNBz-(=oEIF(4wl=)@C{RV{>z3t<}F(Cb(~6xGSpnDg?2(1#n7ptE%NN1Ga&qdjpL+QUIlfA^ zEIxe#nIjKCV+WO9!X%fQ{i~0Y+StGbty^1UM-n0U=C%FGK?DJHnrC^LF#&;s$ue@#sz(Z`I#O|{~Egyhh<_U4QN&30SG}NG`quIMHNG{C@|%bg@7SyyiJID@5Uc$ z!m5>C{=puLpn4BOI!yG!@oo=~!!J%}T)ZxX?(?Jt7=)!#4ZEE6+V$n-+O%U4yO?w= zXQss(45>3Q5{i`wp`k&>+2t73(%J+H<7J=UTElDttpMqRtd*nG8*>P=W^oVL@c~ZK zNfc?iWhK|rqR0B4DYO95Q~n;EI>K*ge*cD%)ma4H1A{MVeNtO1LpSw}BsYAfcIsz$ zz}+vkB%Xu*B>ikDuUS|CB~uXlaRh*M%28;!>`|GqvM6lkyR`zYzVw(Fg^4kO6lH|y z#rJ3I_veu3H|F_1CM0w6{*zZ>$rVN_sk||X7EeNmFe^(T zEhvosASDJyJq%F`RYeTHi_-bUDKa1NJwfkh7I;-kohu?oim6f82OKOX6gos%5oHWF zH&B`Yg~!#t%4ci4s3fzLP}H!NWY>zG2-y{d9JzN9cFT>j%||srB@apJ4?eMB7)jjs_5GJNLPL&9p*_;;hbAIuj)G=q`9>XUS{h% zV`IO62L~H@WBm%sN00kKl9JSV{IYojqy!5?)S7#V6}K$RdN!u>1?+&AWoJi5Cd$&% zlvopx@t?v;;s&}M8ou#2@JPLPYYSt$a%H;PV->{L#J4|XY!#hO&Mb|SP!N#3>MdO-+2v$n z=WO)G7xeU(3uEFmA%<2`oE#yR20?vI(Y8ki4NTsvEK!o~mguxBd=vQ(jDiL|5jtT}oC7GSz8HRhas*z6B+<*bgAJ z*4J;Zjvi@{M3)~+u}MrQ_UUyg)z|%<#zTH3M*WKWDLazin)VeVR$$_ zfYf2I^j<|MUcCC5D3JG`+UrH*U!gqj-$O$=JRHhJNk$CX+E!MF4gru9hwrUEaPJ&9 zPurxaK+uGzqd={U%KWqQ)x$){14SP`fi=o+nK!oEtxT;<13haG zQN`D%B_(g)dUDWF(nH^emJD$2rNyN}O#X%jKXep>{%bO7c&WAtT`rtun>Eon-78`j@EiDM^>Nqa&@Wjd7R^Xd3 z{h|iE?a@fjcC1<17L*W;Lb6HS!@|0|aqKm<2%>!7*x0!M410H^jgy9kpPz;Xys7+I z92`N5n@f{{Zfhe_^PW$*y2^fLX0@UZ!TW!AtZ#I7Dyjcp?1rS|45BOgqdEj>o&?P* zE2Eh=SYN4JOz70^EBo=|wwL?2Z`52f-A7jQ4Ib#sl49AJ0#pps4UAWmZ;73Yr7yWrCEHM~*;Q`T&YoSYFuP zw-3=Cb4QDF50^(#gN*3>(c$I(SE;IdB;zvYKbD+2LhCdE5FlL~uYxN-wvYY$XEO9e zs=U4F2yLhKQ$z}F4yQ^guAoRZ-w!~yy-P{@=w~!YLi3Vz=1uqZe7iNFpqQ>(Ydd}L z&{O1#rImJO*hHSA>c#vFgQoI|fwt9Gulk@MYqmU`l<4D=k%3dql=(9>^ykl*%I?FI zxL{~-E`XF6Qqd1=8XE8{QFHnELm4kY_RMKHdG`Ni9S#il4f;nSz2q%?9MuxP)`d z(nj6;K-s{4o^u8;-|+CO{q@}c`>g^1xG(9v_8^|?u@irvV?=B{^*g~k`2M}TGxrraShj9&dea;0Dms;sN7vjlm$k)ecUMgxg4y!M@TQd|6f-RW ze~VPElSTScOn!rU$wywi(|k`$%h#{q4Q7c>*ZsDi&CTuY%|zWjBowwbscWOq$1B@j zyW|rY84?nyxxV{^B8mQABXQ^A<;y&6O$70Gp;z+Y3P|-(&>OXpLe-)UB_mva$lPrv?oEpheW2NZ1$MOmpo?xjRVOEpKB9 z69rJg`fogWvOIhqB5UZhGwglODB`dX$r427;h?H&Y)t#n$P26OwUu`{ZP^1-AYi`c zSA&xf*4h?ywjZvE5m&_eGJjn;_AORp&&ho%;lDGB54}q4y0cz)QdSo9y0W?|zCA&V z?g~p5A~jV(ZjfbztwbME0mQ5U7D>+pAiI5Yk?M{_j0Ens%Ud(WS zp6W;ZWuqQsM+i+%r*N_!`H9z_ZHS3Up2d5Eq$5M%-lKVkpMAdW<3c9zOo@>CaKOL{ zF>g+)YU)w~F7OvIyD71$dX&m7i|fgEC;@`Z{p^J8DHB4Xj#b^2kUqxs;aJW5qjxO* zs~0WE^}{|o3$F&$(lwl9P2b!{@SjnyY}4;F^*i~^NSpUl_dYI((FR?eYjkpYBh~%^ z0di($dhxYq0|Ke2odo?_9^CI=lyG%Jb^`I+4>&;CSK&k3c@XKFI8O6W-ek7v6dN1I z=j7Q3AFpeOTK$?L8)=&U%FECK@!b9t+6ZGnCe1!j*0Rn=k z&}yBlQam1W6XFDiyq~S(sj1tMmPxa}?9PlG4qv)dz6XNWNlhu4gqCq@SNtZNoHpmr z+=Rc0DH(tH(edpiEEUzhrWaob4zMqQnHaYJ~_Bl7=qnFOL%I#>BcwOeAu zVbdsfg$**Oa5 z*=uXgbER*pAwT`kh?>u$p^wTm{&^apv=1L<{F$$cw7EzpgM!^C@|l{f&z_BowVvVd zcyUYY<%>I<$_|CKHanAz;hQ5Ltwv)Rgwl$VomMw$5B%qPkpH2fARWoIu0AUvp*y?9Aao$npJqiJrP2 zr>Cc+q`z<*QLDKvG2K~Nm2b?dZu_9GYJ$4^x$P0+ILJB1qw3{-)(y zWQW^Yh-Eg!@3?JGc9}Q2x!A7kY!?cnV_w@jG*j>C9eNOSWZ5~KI|X7n_j zpPqATi#0~zHp3s!yGPx!SwG!@%o-;&O_1=9#~XRKrhASnTOEx>HYqM&N}|B`t>Q-Y zq)lN-Z*m1cZvheVD}Rk9pOvZV>h(2k!`a^MZdu_ZzTQl21qI8?#8y$l!SAs3T5wIh z_&rTqVYW`@Zt#EUSHZgyEV`kn*U-U%!~B?CQq! zXHh~Uy>E8j89#}9wUl@&+J-)Y1Oy77u&3<$X*R>wL^3wW`So-I0we%WK};?lUiH@u zM9JvreE2Zcai(-@AwtM%GScma4KpB!QFv>6R>V3n3L;*pib3(tN`E}JePtFu z%oPV`XN^BAt*}UF{sb+(f|8?PWu?fD3;C;dRi$4~3en50_ir0Rzi}`6nW+tx<#{;+ z0|kXUuZOGy0}9nfal)*lf4+39B}oPSi~-akF6^&Q8AcIQJDQT{0}nh9DT`%0ixc9Q{t-Jv{>|yGxrXxI49((<;n(K37V)Jj8mSx0A%TJZi$BGiBX^eClw0B@aQN-_ z^x9Psz`a1m)&~|R@6x{QnQB)2nmC()0LaEwjd8zgY;?7)q*PWrbvJw?J5t>y;HM$- z>)ZeyzNF1>7f8;if!i7Txu_WwWViOj)wPXe!4FARmIIC;zlRO?S<7M<;a4{uS31(m zLirVIew<_L$WGX4EH>9Pn@Nb2#nj^Hcu;ZgIR^YxK9n@OKj%`x8Ow0UOXA3n5Z4VOQ)0YMfRqEC#o zh!@|!1<9sxKj5uey%flB>C1TR;c@fjiEw1r-H-VB$;t8CrET*kWaqRF`<*{;X;oVr z_v1%F!H*wBjek9s8-rxR&T)b$;!6>Hn)-tWvp6o71qre5aJs2m+z#Sg z?P;ImYsvv-FgHAx>wUM%h1v6*wuM>QDQ4d;>Uu7<%4>h0>O7l^?nXDaBhhE>FkL|c z19HiGLxO{2W0g{&q(H|0dUTkcPww8mRqSa%eojEJcFMsaAmHRlhz?j~ceZE65`3W& z`oou)jQQ2q$qN^F_z%&fq~jVIG>Vl#Iq1w_To4Vy>XFe`3S3&nxh>XD=kso@qxk!)!^MErPR|(1jlQ+ z8Y4_!ziBmiNc2>+d^Sia6?*5HRc~d^Om_tZct&w$g2-YhA%FBpbP)rN*wg!?%kG>?I{(T?fqpuX+bbNRl2Z!}*$FG17z&Y}(GIh29f#bslZNFN%mIT-WxE&`?+!4wBQ;d(iRe zrdUE!riHfHclPu<+Z(y20uEW&A|`mJ?tdY;&uKQ?uGc2$C)gtC5Upan`)=+Y%C>YfZ|1^}z!W))w^&=S>$=9XyvLVXwV=n&(3$T~S756jA=*7#2sYi~8C5URv zt4&$z>eGe~R8dkZ_ndh8j1PH*KMD6Prt52@w@)rhPPUtO1FLAM(Jf7FePdGY`gH_Y zG`%V%DJebGe0yWP(Y$Cp{$p&Ww)i_5p(5;p_cI(gph!I5NnPhn$966e_g6qy)@TNy zOD$JW-N@S7nmw$1A+KRSsdIwSp_N)!yG-P)b9#E?-zmrqSPl=J2u~JEQTp_0x{EfP z=-pj|#LA;54Xr&HscDRI#crQOw=ROF-}f)3YrEq5W>=*m-O7+saC389dTE|>q4kU! zLb-(LZB0U%wE&1~C>dul9QcOl5BS&VWp|jQZEhhS`kCyFil$HD{B5r464f2qadCdN ziW)PvQm0P&`r116jQ+bE?tL}Gjf5JfB{}R3eXdcer6uMaC?^jXqg8eIIAc8mEYK2< zk&ntW?BVD5e3K+beyiYD>dl+9R>*GrM}(4!KU}|2GA_={&TM8CH}k~46rw_q!ym5p zm+Q*w?^iG4c9vl}0Uzs3v0VZLjS^hA5|fVRxMqZP(W-a(QSMb!M72JyBip>p;TOkv z4LcXkxtY0ID^rCdu&D76ybse_u6bX+xmuV`wueWD32a+W>;*@&FCX@aefCVdij*vF zWtyv);{@wIT!%E)A& z;=Mml!h|pMxZz(Ol8}(o((c6^^SP zJ2>D)ABj4bfDH6|dgxdq&-oegg~k7D@Do){u+C&7Ic>%cpIqPUlhSVtgviZAEuyzn zTf6El-0dBC{EmeM*trlJzhx-5V%0q*yTxxxw39K&V4y`6J|?G`)kF~ zqZ6DWhwBPhzdGq%Pc6!jNG+^W2(sb@PCts)@Xl3JZE4yJ!P@*J|o9}Nv4 zR_432HCpKf0vDlIM&ZOR6z|N^?aFHu5y88BR!V6z3P>y4@MKRbkpu6 z{`%ZoO3i6fuox<>=r&VU?1qn%iu?AB>H=r+=l%xo`0=92B0K!FdE8agim%6xy{o-s ztYo>6-T3QxA96>}C_-F*_H1)@V|=_!$Z5*s*XSS^XeISe;%rbwx2ijUNkW6kxHwK_ z4Gs0FgL}DBeiG7nZ9&K28IfV7CvUGxq1?vW;2~P!ZH0w(=d#Y@=TK&a-}ko?5+`{i zVLtM@%y8;PePsy3Wr7P0o40twA(ClL3x|wpn#yZvv9M=!(Y0!Jb)ASXDPwMJzT!rb zDM0JGa+2^R|K4Wzk@1NXuEL>DuVQ@;r|_J<@vzJpzoWTzV_|*E)jMIP;n-2F%v-na zto8~#DmPA-0D~rT5f{gvY41N&M;>SA8lBzVXutW&b?)iXw_{y-aj|#Mj6{iAKQUrx z?W@N}3I8JN!chjpiWd#xqYbHEi^x1t&rau4FoH$#_*BQj!q-={J6pR^nkOX*x!_uq zb)U-~lCmAgucHK^&-4VoKua3h($eU|joj*$DL$*20&p-l+uraNNps0`{!@;qLj`HL zI#l~nYxqRi4`f!2G$yDZiy&$~qobn2t(6V< zVik?;jd0;oac|ZLpP7Of^FC_L&t8kjOoRDrde%ZKo8jR1w{L?qukydkaoI$+WVUdA zMY$}y^q+?A-;+9|FWT{k%OuEewBv-go=iV9Y)giU#VCDJNlA2cNy*CQS=Lnm*amUi z%}nRx8}WCbWe8`#EVhTa7r{ceHmG_J5!}OvO25|AYwLxq&jG=xXEW5;apg1auXu}K zD*;>7(i_v};&0cM(1iPkjS>g#LpO;N#8S*!pItaatZXYy9@1leM>ZOebX>c zNb$oJx3oSQ5|WPNtdHo4zKwGgOCX{Nin6frT< z5z6fYMa_nApdcXg454G(Zs5_NjU3RTrBZiJT>Y#qKJLY(;b_>Nwy3Fm@5z?^<4;4j z$_n;^emxAZxZ5;kklVLAT<=u9zkk2fsa=rhorHZs{jX>b>z2EvP9obm*7ZC+#Ud-g zIr_3P4I9hNpKcNptL963c#wqrF-X&T3BnDi;hlXgd*>)V17m9SPZ>x z0IzQ_)!b}pDZKGx?06pl2Ew;z-K4VhSy@F^!;rOc)_`;b0vAmi@i+7WdFDZZoG#P3 z!?kf%qgh!-SA5e!(E(MjSggOI-)kSUlpP7uf(}_aS3lP4S@n#fC61SV!PlJa6J-1< zwenRt{2E7XH=Xe=>QL7pCQ|gTv$BeNPftQI)AVU)@vr=vfLrnLVcb#Ge|xey$52__X1UF;%_#Tb$1O!Pxuij3sNxUEhP}DcTN>jx%4@)uOFuC9*x2A_MtaYk%umg_+(82L=IOMLot>eRlSa%62a-3kaS zQgd)Xas%(GS-Zm68cFX2fVaNR=y;gN%}?2Mjk{xFY0#TXWe(yE0o&Mk*LB_LcJbSw zFLPUhx5xVHA>M8#b*E{-<|IfW2<a6$ZJKkTZDGp2PAiiojbYo?+uW@_lIZ4Wn@#09h02Dr0^0oBzfzn{htIEG%v?P< z?`WLeN5Qzd4p!ie5sVv>ikaO;;oOGb_E+nD6mptSfG?MIr&J_J4`g;3uiyOCF~7O( zDp6A_V8wFS2Y_L&-LpZYWZBt!2$K@e@$w$_p?kkzDPdVm|9*naQ?7oRe`=-ap1%aN z1Ui~^{2u0+bSe31X?NxGevBih=PdjNf0yg&HQ4t6CWV{o$dRk6DN3O1vZ$y;6CVGv zQtR@AR5_L4HX2G@YnmtvL#ToPZziI?P7ptv&iP)`t_M-hYCB#F*u>MP&rEW$BD2e_ z)Km11u`kXm$6}BX4;~Kd=~nzwl3_AQu|us%16oPCwcl>d4E;OZtz0;Km$_`1k6N03 z#DgM*1$(8`ja6J+Czbi62IfZCrJ4DS#ORvr zQ&Csf`@TcA0ED!R8?wdCReUs;M10^4la9OzlL?YqaBNTODJdNJIsVq$`(40|8w}1M z9e?)Y^h~jS1FX=*#Mk@JSVmhUCcjXo{z1Xmn_D{@1Ohhsjk7`BW(kX0wszNQYGImV znMFhn`&_=_O`o#!P|>4QQb$LT5c;-+d+PLneDvjcyd^+j1Yqv8M%Jn_sAnQ#IdSZ-nq!OAF~= zc8*yiv-+qc&(vw@^}B$Fc~ieH@jpDz*--bno@DvKgU!{^5jnJ8i~Jq|!Ng6bdvbD0 zEQM;ag7Xz*eqGxGUMWfvu(d6o44{Ru1*;H19P+U_Jv`FTw&U)#t z&DC;V;Xg~G(PpCWtv_5tA@U)t0aWx>IznkFxs`Ue7weskb}uRk&UR=@G`dNC`b0)8 zy!NO*)~Z@3x{0;~cD)YIcQU+w0~ghDQ?%qs+P#iMe)r$@|sHC4WN79k?pof%XS!GQngq3 z+dLN6A+mB-Nlv^Y5hA3T)s@0>{nbn1<<@l9vl3T7@))>%q;$ns`-g=1eYF^TMwW}z1LhOLI zFgUG%Ads$D0tkT2vPMq*J{1tOIt$9-a`tQB<2}sfS9w|Mn{Lp_aPnNm?erNC!e9F7 zCbKs^;!&@Ht`42x*eWEI3<4voQrcBAk!HD)LXHP%bgt5dBeCq4Xzi-RL?{7$_&`o? zR`#GX@4^+UVadUTr5So!0o%{539=?rYxCcS323hL9z{N#=#`)k+(rtc4cO5?isL+- zxUrw-3J_Pa^(VQ|f-3wP0m0!gXW>X$Oa9qHeW>IQI}W@#D;4{PJrI8}l8eV?RwF4I zgo7VsGvh>rgwA{&Qz%ejXq-$>S7%pL(y;5{ay?Q4#aq(74dJ!*0q4(u_r`78!cv$m zJw*Ff#$$2#$%i1RX57y5fER;zj?-%V-7ohz@SNUN!+x=cXnXCyP6hy%bvnOPqZ*Qy zw+)b(yZ=Gcs|pV}w7S#Dv$g*9t7#t9h1f!?&1I+YxR)X#O&@l9IC>3c-mf#d;?mSp zJV$bEHmr?|^z{C27Ce(z)cx6CF!;WTF{pbcNYizcKIY2Fs@cXL*PN7+6Hf@N@CFJ3NiAGqQFkYs)i5 zy4!acysHN1PlU(Mzd`YC-26zT(>LaYvg>`KmaPk$QHc#DGgF_&!eXArNPQDZx;RrQ{?*GD=Y z@m{~mPw)D+eRF5?<5darsvbKo6(-`ox>2&>L zv*X_V`*L#X9IKATo+I^&dU}pUeO$26o8vUnxpiyQ?H;7UdNj>aM<(UOte@1wT$;oH#0gvL2wiPMRw*r0Dvg!V%)EHcjazh zb|ccH7J@P>^5OO~2svq3+|Dgwg7W7tf< zp9Y?S5q7-~a2l4y)E6A5d16|)HCzFiogmvT?M_aSettv}@%XdmS4dfRN{&#OSzLD( zOE7v%N1h;`{JCUjLvu&Y^R2X$)2tB4X11r@rH#qv5#dzUjbnD1`y$14p95c3SEpUI zPi_d3~{QD)ceQFO#hm0$EAgSU;s#h2+85Mbz)e&!A;&) zxnS1w-CI^Nd3)pSThlI?$UtW#zD)nC@GdGpvch@Lh#FIdK0;cdv6iDgE)T<2Tm<(Td%Dcyf;9U5OX4A=p{DVXGqx3J#zs~ceuDzd)BuedmD zDYV+XFznZuZ)a{QEGtHtZuj*iSDBAsM7ySDu~JrtS)pzxcZ@tS&Sf*te04qc80*Sx z!V}A#vWB$sIIfBE9G8F?PEgN|Tzpy?sZt>G5ub-mP%RFH^hN+82wa zidH7Q8T$(6*XD~F(GCgv3~--iXq;$^bUp7-3gQIoqp%8Ul3DZw!f_jIR~k=*$E`!U z6WLJX*A4wC=XG6pK3rr*&v*;2(jEIVse1dip&=7fT)gYj5&r_?bjO{+k^0$^!DUHT z5oM&KDPo3kjy{-`%zvjfFS!qo2vWF;#T3xR9f8Y_5c+4SYwM9hd*D&@Q^uh@kZbpL zY1wg@98KAXJxZ_iL(mSt@F#F;C^nrb6-xF%UTWT*MoEm>R|+6jL|H)s&?G?LGQO!v zA7v4Zb?etO>-4-Tb^IU#ACH&fO5NVr+CsZJTU$#@&z}9=%;YwED#~>4iUY09*GYAp z>!xk>XjkT$3-x2%_1;~jPx`ZTVd*>=w}xb5oNTY96&cyt{LM;g<v%O3f}jb6^6M&Mjnhk4I*ro< z0#Q!sQ9}%z?|U8Gn$>T_}25VNGcxM4)}J!*IMuI~Y)C74U101Yzx zRr{eI;*9h{5C1Bxx__^m1Z&d^s>}$LamhNSWiMmUWQe|oOWWA-dT}NnfBAb%g*^b? z3grrF|h(O z5Ksur_+Sz?Tsw}0cL}jBTRDa2Tay-+(>I_1H<9ABl(@a|`E#jLc6Qvr02I6>Cxriv zyqZoF_N13>%oK|y?AOqk6=yWnR+aBIK^A2*`L^NcmS98xyU144*zqrogAX#JlYe-7 z_1h}fKNYbxnblwkYLC46N>0A84A#b%bjN`;j8DQ6mw=3RX>zxTq=X2^iKI}X4UEKe z8jfFiQ@6o_Q+I@eX5CrS**8$n zIxwF7%wW?g7GqwzG+szlo;aX>u!D!jBb;UmMk9}&6yr!YtNC`WS_}Z$lRXpfq54e)-*bwKKil>cZQnf zaAGoFq>$6rHILDkRx49KW8R*CS1{Q4g}Qk-jzfp0cpAwkpxwL)xf+b)|Ln}@kpw|v z%P-syWZW^t=;#5UWsQ)NL(>5y2*>Nf>l`DLba*o8SR&c(lay<@KI|}Y&KbiB-gXR1De0aLT$zSuIm^G8%BZBp%`2B1A_9`V zMhsM3-5ebOYr^)-yAP~W$6<{cxNhylh!;M-F-=K1JR)adW^b0?!X`mUsjI8zhNMX` zjyKkKP4J}F(IJPDe&2$zB0`6i*!B1QY50yB70O}R4J_m^E+Mm`0y6IGo|;2|g*@1M zL;fa)SbK8)`#Yy0-}^DlA1`pX8bL@QpO6RbvWHOYc*4Y+KZ7>Eup4yf)M1dF2l&zL zMauo)*dA~){PYP*%770i!auF|_xY2_%lSphe(AV&_AHc!_2D0tud5;y8)!%Zsu=!D z9a-B|3B$ZFPXwiBdZOB)0lR+0XrG^I9Anh_>^@TsV;@APv7DJe%?E6stzUckiM`us zOMgj$^Px``?%m#)jFW0^-mnsnpL;NQ{60SIA{u zPmA?XPmJ*|7m6uU8NC--AMyv!kXUQX&izCXMdBe0+Uf3f*>Xr|^&kUBWfh!fd8X6t z0(6y?aL}&KHx~>HR*OrkiqQLBj)_Bac+Jj-`pv#L=`p) z;td#3sqnLi2o|UZh$R?1?##Us+3KfogKPvDu_*aY(hze;; zLFIM(atJv0-gw*4ycH~662VpHu^mA)@v>Sc-XH#H)9V0mdJhVcl0t(&iTZgb%#b)> z0Oe%At8G_6QNiL;yR=C)D`(7j*B`WRV7#j(38U!6a-)e`H!6Hi(evNA`Lf&57{5bZ z*4SHWUXtmCQ&6#o_SfT{VPtx+G4Z^*HCfR*=OG<6VJuS?~Q?_m2;8*=Hl1M z^@`uq-Q-{HT%~P?NG9r%DyGL^%o6nK1v2hX2+o!7p%8pzT@*iyC^o=J6Njx#NlUcT z`7l$f(vyp6JEhSOC*uI~l~TatmeUN%Hoh?&K;~VbAzNiT=4f-Q1TiR8paR)hOat zNr_d|a{H>rIoK@t<62v(HMX`PkmvF#DRV;<$828g|{eOck(? zXs(1P*t?@UhNQi89n{V|Nc$^49d5DzgciR1X>~Pn&{5T9Jl@_o86Lf!sREnA)a4j?ZXwtiO{Kn+ z^ef7~ry%osJG22Sg!-TAqZQ0f@ViEz%fgXmWO3Cm1P>gRU_S*~zW z&&lsTL=$au{dPS(_8A|-1a&378DL3vWEa~(3(wGyU1_RE)$Xqot>{tids<%WM7UlG zFWs@GGMBUdY?rf=2VNKHWP-SnNih86SaFY@KS!YNnax#ReyNt0EZw%fi*s{{=R6w@ zB_N4+T@I3#(xm>gjXKy6V#K$K0<|wSCP>%R5Yu2v zW6gG=^|lv_Y+z^3c&`x4NX4pvg;s5#KWp4`68v)d*H@G0&tgje{(NHb`4@XS9Z&KE zj)Mx)Ad!^iiIl4Mu=&qj{&?(YXD(cCnM<)9FXW5a4^v2?-S+KvEIlcTLKr)vR4O4m31z7evSl|U2{9oi`))AyZR~#Mb&uZn^Ss|b ze%C)ePo`=Ya0R{lu`geXXDOVNlaz@wP2t2Ie6un$M zMeCA(Ztq3k-_n@+w0gSky)WM3otF)df4K9Xr^@4d zv1PQB!-5@bNU1~06Q;HwE=^3J!g*~l3FB23Tlxn}#{(18BN7i@Rf{<7UI16KD8*2u z@b|rtVSA(G89vz}TeCoA^QLt5gFI+QKSk>(^~8uwSTxzos(J%gs-zC$25PI&s%h-K z(&}K3BYAe<6Rh+qCD(MKTOc(E*q8G+WgR~WhmAE&eLuK3```l{fNN`isW}vPt!FCk zjn;p-E)F+A^s84LOQto4;NjxnxoTjb_VO0OL9$4!kvwyMMi`~7tAw!8HLE#5QbhBt z7VZQW>O=bQPlot_Krco@*f|96e>8@!b;O<|t&KEMFJ6cW>)1}1kaDpYfr73nI=Ls= zHQ1YwpBX%fGbcs?ZnR2XeR;rkViDTwe@dS-X_^mh7a4Bln|EdRBRWhh{&y%sE{8f3 zoFP^h@neOg0l|_|^TO^IL3=B10vG9cF+xDvjI@S7Y%vt4LB%1%vrbc%c@+bvO3aEq zCVGUJEAG8FH42T1(a#bMKQ@l8vpwjsx~yGS9kI$lx0HO>k|sGV!UNR>E!x|*M{nEX z!av`h<&UzSQer*X|8O(xM{~K zZoTmJeF?L;@#nt2&rgKMMag*Wc(=vSVH0DNbkj|LLFWEY^eIf`w7D?GPDa<%DRE3r z7Th7XVp3*XtWSl4tw;0(-GIq$i4aS3 zupFGTUYn=G-9^~VnNrkj9(-Ot;eo-+FZY@DsPQD|h-_Pgx266NAsr)PehnbUgymD! zV6gND=L-{s-c2TV?m2p6N5q|=@4jvW?{;&>)yCpylJdgtj9TyACvm8*FwW|{ z%^{wo!4hh@X{%V{M1)8#*O7DEb{gi{m8=J-kWHJC^FaQo(vc&6GN&CA%<4$Wnp3BeDWk&cVfC;>moqn0G|%sod0-*WMGnoFts$@#FXa8TThzl zCl{C_K;t!Vf?>TTBVVD?vFb*`m=T$lUkoHuSj})IGOnG8cYb44xj$$8R;GR;hm3xJ z@F=}%G!gjX@rLx+KnUE_{JJSYEt5V~>0(=9*4b&U9$Xip-5q6M^iBH-)S zc4v^7DW~hgW`4CR|7X8t8|XT|el>C#so>>aiE>xd)xGm^FZ&9FTgZuot3i8r*Tn99 z|A&iy=RAL!@>r7^;lmkOWT~7uG178X2(I=WXPQYF_3zgBz3;9t&7`U8HJN5T6@dsn z1svy0N>%ru_xXz}F79W9_^oGlBUw<6G-zo#RHk^Z)@sUBxb}Q6=YW9tN}`+%7bH#p zpGU)8>COPqs8+IWWh^g|uf9jKq~qb;JwOv4AJ>p|n$dzG2KcsFz(*sb>8BRjcPqei zV}*BFdhq-}dBZ1dZ^dnlkoBa25BPh^GGSBOB&`>I8fv|`g&wp$0rx`I?ZV5qbnvWz zd=A4FNYY6A4N#O1Y^}6}zy|3x%VVD^`lY??lkoMz7aUaNmP#nn5dq4$_NSatNr(;s zVrl-In*jghlz>2d@^u#B)*{2^e20d_BXR_0A+bFW~jd8x__*^|vixq9npLL5h)_~|c0eSXpCwWd>0b*y5AL2up-eB2?<9wF)k3f#%?%m>+irLF0k3RYxeeuM1`jW@q z$GZ-51)Zupd2-B4qCaf8lId=sn#byxr)v6W)~JR0d(+0;l)Lp@Ni!U)`{j%RUVcw{ zXY#4ycdjj^QS(OU7y+>nFPPjL79-8&@f+}a-~Ji)P99h%lvHwc;Et!ies$h3*3p{Z z@pNF|wOD*{afdsIpDS+Wj(nk{QgK=zpAiVvJj&Va3x7Uym2FFeR=mJMi(6$Gch$ z#;W1Yr7e%7;H22x1{f89Gt8|Fa0a2>)4cpH{sPThU8thWFIDmSCt!vzO_b zpI>uHUPwt1Xo$8VVf&*a9~NEM=zv>?@8h4_vIBjZ9M-u-ug7zXs+<=fHL_Y<6)21| z*GMS=wRcXtOl|M{`BTOvJw2|&9mdUlDjMUU=O@Blpj8% zkVFiQZQS5GT?<2qO_1E78h8y zOKOwg%)o;xA)Y{Jw)Kdbr>|RoE;-z0S5MCvRt*>p{pLI)os|BS5%{1wMQhL6)YzJ3 zU?60VKj{9pwW9$SPqVxW0?GmM(Ed3!CD$=}7N<~r2wfv<#S{BqUhq6O)Ih1=&9@H* z{do)UWI?)gP;9b)>o!cmt#bD+r7`}4YE_7O)KZm5RI!ugXl<;MQ+vdJY4kcQo<{@) z&*)B4@jX6fQT~q}*^eyrAB0<~yN#c#xUpsDPKH^WkD2Y}^5jOK zG)yY<9XlrBG^j~@;OKm=r?PY5{uj%(j1LuDK8GZn(#wvD-P_NBm#{zW&>;m+S++Q< zOnLp=a|W$_jtBwGIfG5&vO9#IU=CcWG#~Ohnjb%fG9-*2E0_W)egP+jR3==-2%O0q zem-#Oj6H%bUFQpM;%fO)TU+PJ2oY&*4yyN?cW^|#>Rfg@#E`#CpeKW_2P4xER#(15 zn1f1q`19wymmD9_nk)2g6hAr63YmFz3fs2K^#+C-hdg@3z`oSSQenPKmIFbzXgJXM zo+sov?|8~8c3vI`U7$TGjVmrj^MT9Twl(KYQBt|R`)Z^%?+g$o)lfbfY?8lq3z(T% zHDMETJ)jYEUa%r4uUp6AdffIslvN`wxf$1RESlrgY<=zwr}0jsLij#JiX2D8_|BXW z8X*~TCjo=tK@XSbkuztGf94-Lhug)h4AVCf*jQdcI%`o)@Xe`g?ay$ySU5ZSCE~!DmKT`D@q!(3C3K7L<)iX z0OO!UG8tSV5ZoiskZ=_NkVQ$1XE;oaS&GL*6A1|*=TRvO4;fYC;@-J4zALD}bVD_Ea6nDV~GNpejfvpmx8|{S8Ic|-| zTh;vMuJsTIuhmU8O4bi(ki1>#Ms*6gWOm^@bO}x%AAv8-e$kh0k*dmYQM0bZ6Nq2~ zztT(s?E2M!J#E+Dn^VM_(X@U&T&Ux}vOXC~iE4_5-!wTW2B*f{9FIB-fOJx4N4QaE zmUBjjyWzy0=T+WPIrr0AZHd+5E+LmbP~6S4!OiWq_pNLYm05)LS`T-O<;ihKJNAN- zIZ84(kW(UZe*Vdm6q&r0gL`kmL*#!^0S+Lvwd9TxeGaPfTn!ZlvW%%MDFuGfJWJQn z5_7b+*5}~C9WW>KIT%r0H&|cpCl#rwSr;P2;1%>b&-O#8*rj4@3&^9>^y~G$?9;aVO@kccjQwTw-(Vpi3<+(qn%iW zl^D?fYRym_y&bu@5_opTtNz77EX7Wd6ut~WJrLl0P@x6LobCy-n zpk(d)%-@#Om4b~Mc`xl{R(bv$z_2!fk+#Jd(&8-S`t3aU^r=d1?fvH8DMAgY9l5rJ z&YITNBhBZ|wWt2)6ri4S9o32o!t!i6N3b{noHz1{lw|FW@s?+_=2P*j4y*2b zr!p@^zS@;wTHRl5(HLaj_|n_^WzbPh6BEv(TuEZbeh^b9hyHsN>FCHJTyYn6dX{7$ z6f!YzEq-}=Llw>6)Oig(3i*NzA{XrwXtRYGTvo$H%wYYC9U1hqPUJ|?b;8Qs%Yl}N zI?bB0C}mI1@eMS8_7#jnMn?G^mwzWnPl->KhOJGLho%W)}e+hK=0 z%eXC3@8t2zqTx$RYVQ+20*L#s)$qLb&M8)(Iu`KkfRV1!8e9g*HnJsG!pz0*yjmMk z!99ppQA)D|t*4CtI~iXa_f%l+_s04VlL>)w+!zzs%}~htpS5proP||v2*_bFcUyC~ zRWJAi1O$W#fug@Ld67hb_!QqmO+|&~>&f{3ZEsoj-nzYy**WB*AJ`u0%;+W`Iij7k zcmICSY$&g+fYI0nC`pi@PcONoL_4XMOg7rIA*?!}X?SSb@_3lqCeK@^H*e4tOp!a~ z+;az<^^TzT0J2rtb5T&)hTAMo>>ufhTw7wsE z#W$Nt(Vj5GUPu30Y)X)kZDE-@ZFjdVZ+=Sret_mxofK)uU!(@@PjOr#sd3*jf*9C; z*39CxbT|UR>4B9yqI%zScGJ(|G1c1q$NdB(qbm4`E|8W`xj!FMLdvhCHb3iF-Y zzyKCE^Y`AOK93`J+eK0Ke1zXQJA->SW=5pCi2{%%3&Fh*m~~^&lTmiA(~}YG6260G z^8!fHkZuv$Ni>PSxX^{=#cu|51XdkMOD77Xb4WZ#^O6L43}6pX0xe)u$xx$!Q5xf; z#R0dz{Vc7*^HBW-EqKZd#U+GS9ZiTXzjhikgHr)gNq72jByMZiF|32k*hN+l2lrpaW{1x5@ zSD9|#vSrIF6vF`%trz8}Gn`mPS3_8b>`YiR1Nl6xU>!JrKT3}l+hOM6DQhUY5+Z$O z-VOYX3~}1>lxfeR>w`Yr=p}5;Zm5EcWN^g2L|mXj)zP8YaIJE0N5fV}rggU1g)cZJ zntr#QRV*ON8v>>^HQS*U`P_Wt$!FV~VFN9M|vfQnwSndp3q zJNA;W-)la`+=5l~^dQ@|;fXx*j>sV^!;I9I=5oscfQN@> zInEh^$rn zcb__k4j&GJUBdL@m{n2k-9WqPfe@i`Uu6cbwo$u8ill$jSPL7HI0BCcsq|O%6QvICQH(iK@ zvr7eIu~~$kx`E|YC}EDwX|W(tgcFDb9&og@j2*DBzvtkzg+c&SX;aM5-!zJY3Xq+^ ztU8vwUIHc=ha_y`GHKT3j^F8ZL^D#?9&`2!u}$|*smxHaEm+t_^kxU3%ZQW$r?1j3 zJCzR_9FjqSoNRJM4p!PBLD=^3I4C^VVeC0m$_$tXU%KS%Y!r3P$VgMuXp|BwkAvBN zsE+1QZr;`DtLBM80h3cipaZq#jkJ&wILp2>uK0VpV>A(ReC(VDl60RyL!Y_mM@XLb-mo7a>yQUi!X{dWF zICvj(NT@0|Hwd9Z@+AL(nfmS9ii-C6*R-__475SawzASb@W~SGZ-Oa3r&zf&nux?( zfN^?wthN&f_&XmPhUT-QqpSPLyy0r@?iYHR7PE8>B0GF80FN}$(H%Pz4OIh`;jtAI z6qx#y-C}rdd2+J5d(wuufEYI2H+630Xa1fV`}(#1gSR)BI+>JDPQ};NJ$h7Er%H(A z_pTqbR;u&oj5y6E)vwo>(w3+-(yZytoZZIEA@byj*qvRhL;v~4iyh!RY)EpjB0f(= zk&JlUI}#0ECDm_Dr#bbf#N34Y!(+;h=ButmBSSXLTagF^fnzYFNMRqn)Ca!i`dQ|| zyq(KHGeuleaK=El5`P~VE%3|0=Aff`c{I|DGU5QX=A`Y#>iHuZvE?KgA5Ek5LT`m| zI-z(B3w4$Z*7=648h8?D)lDFXv!C-uIiAn!dV0_@r|W4YA<|>$C9M;p(|Oq0`SD}% zS)yh@Osw1W`i38Dzll}08*6NBPm03DV&V-5xD*w1DN;pQ!c8B<7TkTk%6tL>e1p?> zHEy)&fSN6fGWUS*q%C#yr&@yha!n+qArM&|c>9H}r|0Cnf4ZXqn{U9wpd}<)hl>Fw z1bA6wr-H^(Zq-$G-J7+pZH=G6<%xD({z3!zfzE=0@vqy#eCcbh$lG3K4i4CCc_DTr zQH#<@+m?&g(ng5j%7B{o04!jw_9$`Vz1D|z4rUWHi)i2gBfcbIZoVzDj+WP=kpMJV z_{~r-$AiprYc$GuJ!SfEm1FG?_u#*owQ1x0yt0_Z_ivyy4N;Gn9cuVk+td?z$*XiQ z=+YY{bs3zBibh9zS%aSIRDbNn_{>b7gMNqLQLC@Bu@xY=Bkw`U_);%Ys)k0WFFPbl z{yCB0H1$p%@PE_lO*`&1s)@3y^IUqi#;~v!%b~WTLQG=SW1g1pBm}AkbZ$HZ1pE)| z7uxQTaAk^(_15Y%j4-GnC$l;NB)-x7i+(8udGP0bRc+6g-g&V*54`h|Rz(xQGjYi3 z|BUrnEdN9WtfkP3qlK|1U}-zWC)?Xkk_cMv!!=PT6HX@Rbry_Y zrfq>A-|yHITYKYGOw7%jM>%D{e)fXzy@tw@!U9zd>)cjXqTNApfVCCspi8#Jv4_5? zsr*Q^6cNg5iEjh#M{~Z8it6=jVHv}`*=Coq`z_i);cfhM!KX6p0DMBU61}cl9uU1X zaG6h77{FESWlw2sQ z*jF%QjR&2)IFzUSgiC-r_8n*Sxe$BBoR-8OtxBgw9H6YtVy*AO$1>sMjE|DxRU2s4 z%UfNER|QMV*TO>mB@szWr-Yu;47gyR^L{2&=b6Yw(L^ zQBDhkpjt%n43*N1=<1*CJ3=Fd(^)^+wjGiQxDzVNd zid9b6QnnN=U106Bkq6xsN-g0}g)2yB(6%NXpxL4uHq-V)B7QMMh-r_0<|}smlK(|^ zx6H{Q^a(G|uN^OR2HdoJ=jP3Y+54@!dDM2Rq5~(+v!aOsh)pa~1{;&l(T@=$A|j%q zLV1OZ;e<-m0{_N?rw>VVFFV0MhE_4D-HqC@>b`hCK|2|hw^JQ8ZRgT49AI{h-+4{r z1FFe8Zw6sAW92n2C2hBmRHntxkO>@E6&wc-6EedOqInQyrmv$ro7HP485vL?4zw^b zMW4=*{_pmX1d%vk5qnWJ_9A}1Z@jB+pw^qY?SU7R=TrSGHtTzHgF-`tKn@mhx^Q_m zM5u0dB-%X>05-ekkxL(_{cDv3o$+&DR3Y9U1ZaF^u3m%It;0o}M9XH7)?J3i^MK93 z-8u!JmLRTPJSvd7)KgpyEAZe_ zya?s-+lN8ngLy}-6K~KPB00Lb45FNI=0KGQ6k(&eWre@^u1`%= zyq(r!$g<}%I6+NG5P*x0sK@>c9G8?Otlv&jO3O|x!mf?2YZ@t4Ny;Q6DVtkK+L{Kf z#Sg1rD|g_*nwco4x=39emshEbCk6&*q53w{2K0ayjY@|3vJ(pA8qFIwZpBsG4=(;a za*Yq19tKP!S5ZH`7osVawV{!KvhwBlhDX9d=ukLRN82yE^w8GVego^v*}NX#joY6x z1Op*E(!nxMdE1sP+o!06>18s=x?YF!CL7Fya9l?R_(1ME%X1grIL67M$(L`kJ2GZuvy4`C+ z`(o~`Tc7(fYzz4A1N2Rpox-6Cs9W>Ylj$;kz6zoU--C_SU>IX#v*q;~M4BVI0jmd< zVT3`%gP0l+6=WE$^YJ=4?Cbp{(n{L(}@2hqq%6s(HBtE{XbaOmpH%(`**H86{Ad|P0}z0<7m zC7vLcUs;YnX!S-c36HNpJ^g#{4l6yqD_5LyGflySghB%Tce!7*L{DMff4=YTZUf$a z_qi@mX_MukmseKiblDqWioF)2b%7J-IdxWW2u115!-5A+a#e| zf{hLABASjuX*)*3_B?oVMSIvV8CM;XhV<;89zT~5TEknHVu;F3&XJC25G8N{q5t-6 zQx$NrhgFoq4nG+zbOtTm7ccE_?0!D?8wGhTn78FY{nuk=0fhd7Ax6+eCoU||IsPqO>8>Sy_sPdu{J9LODxw^Rtii%?Mr|yM zNYUJ-UPZ;GCPl@%*J2rFt1J1x^QpfRWL#9VEtIxIy1@HE%K*MuI1mFR9Y&$#yhy|d zFbFqdC`U&PH1p^fb(?keECHa|c-sz01#iwwOl3UVcVgl1K4!oc6U(&6yfNteOK_g+ zDvkgA`RPuPz88a|9t%SasYQAA$=CGtFJIQ~FLYkJDQK@wmlLp$xd_wCT`~iFZnTNA zyv*S;oL0^in}%d$N$`XRug!AcroE={O^o#W;}IYB<-X8TFV%PNcCs3%{E`+Imyr?C zXwI4FSZy!Rvyo(D7}NR-6w+R)I5@t*6)|Mu0|Ee~5SDf+tkp%xpXS-(SQsqbfv5BB z$L*ua*DT#%Z--i`!giD_)my~2#Y~Bp^wxTDg!ytE^9bN8^D0C^*;a&S6Yrp7h zLh?cg=Wv^CGUKl3nj`4vZP-+VS{tQJ;O&v2h4Z0HT)$RW(9K<|eytwS`0+^FgK{s9 zcGrws8Hx%UHW)0e%#K`7=aSHqw7FFkVp3l4zpoRT5fFf=_92y(D1N(Zcm{DbBPHQ6 zLSj7wczi!fuFX2=E(`rmZb`qLtY3FO8>~8C9SLY)-E%X`=x5ZMOUhtJTu6nT42#vC zD!eZ6?++BZ{X+&c3}^WTv0=p$;X)XoeS7zwLgKZ6TL7AAUFY;jRHUK5@aR^GkpLqm z6xsFoWSGv3iG){cCso*WEkY+LEG!aw`d*kEe##WQx8lB8Qr!#x{c6|D6ctkmU}_ss z>JRI|tTTQUDVErQI)w&R{347VjJwvh(6d=!va2p$R;JvRuMzeucdBfRR|Fhr3#9M1 zd|{MpO)GVo`S;yseMChS239Rr-1%;3g2a!P&0qcnrXO+L-PnLWgLH657p#ElS)|W0 zoSy;o{BJ4y_OJ^kf1BV0ibO{J!}T4`7jJ*rs#-oFOS>(_t%y0jdBM83aDcGph1pH zHkI=4i*h#LO%2SU_EdD8K|Ke76(wAA?%OL3AT&`~LINIq3U6>QSdh6dKl!N(EMXq_ z!>OMqiPxn0kB_4=SuX$z_xba)jGZdy{@#0`!Ff2y&(KmGB8>s&Ne$VtDX`*3&iHcN z2dh8Uz0cMlQl~<-f8BM(S~WL5gT*@^S1%G%T-wF}*3}xa{x82{3Qk9Qaixl&nm z5HZ8~z-}2z09Bhab@lc20_`au2ihDu+;q}gAV=#e9HUw7HsG`)@=n|nLD=jmgs(XA6^W}df-166lgne z`I7Jd-b0avMnfXyMX!k$g3SFnGt{?(q zk34xI1Q~(3d-tC~hkiiGF34DRUs*g6f#yor0t_OF>xzB;R;DRiXfXEjg3PLGsu6gk z+Syr;KN;f{u;?fPWy8ytky0m578?K0VL~p4vl$XA5Zx-|YpG#m0D6k$4h5!r4xI_>E0Oj7bwkvf1 zJ#eiR;dC@3Uhs+IQHRaqwS}UZ7Hw=$)VzS~Xiqsxv2!y7ebCw4=&ZINU1Y!8VFX&2 z)82hwsR2Qmx0G$t5z1pH`nPSSeG>*nNHGX(!p?_)`F$-#=!)JX^m0H52yH!QgV=_G zYUxcpUp0kI@xx4myk#(ugPXO+A*meeWZnWM_97hE2yQZiw

N-XJ(`h{B%_0DhE6kUIOf_Nb$Q>8r$E@Z2DT%@E`VK!NIhI$ zoUr6Y_oE}cl%%zOd=vC`DU#*Bx$VCo6cWI&x!BYs2|R7S2cs%>8BjvQ1Ci41Qrt&@ z$S|+^x;Q|SoX8{D0_@~5tE`1ZRcJD(1dRy$i7Axg5*K&vkf4J_yR@vV>`FH|!Lqev z;rDO3l{40FyCKjEkcI-Mh6b38by~FL$t(a#w+^02d~^_3)5z`H4CV7y(QlS|{P_6( zo=<-t5*^V0p!rE7NsI2|4){|8ock(xuUoQ1(0=f!$APo>OQ;x) zb?6<-8bluy2u9(F5!7p*oH5ygye-2x+o$9wl_A*3}_ z))<#&2C~uT&&lkeuXb^0Yz8#bTFk~lRGhWiv`29%YuHatJ4G7y&fEXqJE60D z%09o7z^Cy%_X5lneS8Y%<^e8)=)F*w&%UW3raBtX02=h3doVIWro$MT=;%oM*7U&* zWo~wSzYh@X-d8`{Ep#0bh@m8pUY$jQNPq>L7ry&k^i?7m)MuELJ`L9S3;fVNLvj8K zZ?x9r-|EfT#D-2`h=$cX3NHxMoxXfIz~>4`ZNVUH)b^> z&@PO$N|O3(s(qT-gU}jgOrxvN7$7rtXCUMeR$u_;2Nl1BmMiqCuv8biyGPQ%V{xe2mB zw{PDDMO=Lyn9MjDK&J+?OWr3>3?r>_P#j#>tMqiF1~{*xD&;yi{tuegqJJl(vI;FX z!;vyu4m0VvLbOq79Hx>yYOG`1)k-Bm#R2$j-PB5z zn_Qu0yVttVKr{w~Li*{>e7gkW)vwta8XcK~16P3MC|PI>An^ZL#no=?)6hsF-vt%g z{o2-4G6{$toJsBV64IQdxb_8%La2MVjm8klr#|Ylqz!j+rw0&9Fc2HXFf=%ra_B2| zGkS|S_v4~jpu0lcG?fPrQl2^+yUjoVoLgUE9-RjRJe7{mpCjCmESa{NdTGR}DIHCJ z5|gTQ0s^5$)r^DN1uAWo<}deAizK~{$AK>OD6;;~Qb|igcMA`0q&e3%RJhJZoB{EL z_wK)wv2l}j+e8k%4#I9LDl~0u;DWuFF6Tgb-UC|`O>f;YWtVdw?F`QkbW7Gpo>-cN z&WJZ80H)39w*hgbjzX6*!Y_9351NK*IlRI5GlT({h@-&74BiNQBtE!I05{6i)yAT? z*1z@8N;nWPBdRs4Un4+Bv;I9WB<>z9`W5A7kf%2jpTHtTr zzN-MI7E1V;GGewF(b!?!URBB3?MBka_8E%!{pOr2`nfjfzK!=e2s5IB`PPSIiw(ftKdGiUyzBLn@ zE*TQ*U8pJ&5(w)hw`)N202>1*cG7w?*Qtx|WCb`ZYO%Uu)W*%-di5VNa8Ch|9ph&w z#XO^hJ9uvCE3W4yXJMs}CZ5jox?TLjXOkuP1PFm!HTc2T}` zNm*Ha=8%T@5R$1cQ7O$6JqHdzhKZ4pQF|`+AlPy zXpx%ZmQQh0H6P-@A3D=HU$`RSI8wwx`q-71e(T=74AT=QfEJUosGe%nmQNix0`WLh zMh|i~gYPO_-hJTJ+LArinrq@^*XcoV^Il|pwC@2&=%Sl0!s;CcI-S@H^hJU;Tzjvb zY)Ozga&Do=4<_Y9k8b0&bsdMUfiuw1HI>SQtHAD5Q&Uig4~AL9|5-Yb$R!MH!od3r z8GyyHNg0sC^U!1hW)m1R2*awKz-@rpc~KIT7!!+DJa`%*W231Jy&aglgrodx8p$=T zr`(WSl}A6$2oo-OMwwm-VLY~sId*zf`ImHoUP<_U#Gb>-pkiPZyK@-B?Qd&I*RY+< zYT3R`xSZj+P6Y5~(M%`=p5+W8v+yU!RzL?QzFpN&rr$IT-dy;G2Aw9j;}9!-aG5H% zGFQqN@3sgSS3rTBpOo&(Hzv#@st!kj`z}A5N`A2U+eJUP2OjiDpKDI+c3*O!^lxj_ z2pb=W?I~B?y&JPZbDGNY{0W5P84~d4R6~~LdLV;_*7yXATiMy6O+{6_!?j)=bijc7 z?muq*b}x4HT6ZnB5ac8vbKJStA21iSkB)D$+5Nzq0FJOCN^aZA&$iq}{3^9dgheP| z{raV4`t=4S1c;^clQYU0uh$^9ty^}@^@J#;OVKNSc*pgA?O)6r;Po1nz*kOHr238C zL=MSlkt}Ccoi}|Luh?2bda|7`*9{SSV@22VroA|7*xnZCLWUwJF7hF6jEP4r?C{3T zn>TLU?1GOP>Q`}c|5Mbq?=jeinMH+5=XO5;HeDo4FQPm?FFN&MS25Nv4vpDbzKnGH zRaIkLr@@Dtzx%R@*VsOMRw;VB5)Luyn@p!EyDva<>(=iiJ7rI{q*9!KwFjjrcpb~$`*S~AIZ`rreM@_H(J%i+x3ER`(fgy@ z>Hbbc!8;JPLH6NgCyyk5IGRDX3a!YO5lFmJRFsflnRM`YufB-L4d(Uzqxsjf5(^}; z`uwBs|1;;N-RX(3|Nj$b`I$`Ttfa0cgibTC@%Lemg=5Vsnk&F?LGLbBd0d)#W9F2r zOe zT)StOje0BIqhZL&RyF96%gvm;nOV7Rz3dW)7 zdV9-iZjMyx%3{Y@QT~mGWY30IM^Y{&u$WUvzkN$|m5!oJjEx>2E&BXpxCssaDf5NS z5mMuezpoOdPeOp*7@im@WfcWI3SyQzSwZQED$HcZ!bMM8*8<9md+lE!Nfl>7Li44oM}&k#xzBx`?vDU6fSK>!y&!Pddu@J7N6g`J!}5}K%JyEzmgr~>tQ1@l zmi?3G;&8J&N`}l%9zC{#f|Y8*Il;M21oU>^RQje-#^QG8l_VvaYhvd8h@?QA*5<0V zwZrx~Q?$D?#Nd8^NmzATumht~j0sp7L2~N~bLarC5Nb#03KfqBgM@%e0$b~%gPd<` z)q#^hEs!-FYRN^>p#3?oe+k<0bhW(Q%}Wty zIaX@yp>!~A+oS3Cdk@;5E!(4d>N#udP4D-5dn|4$e@atS^x-idPW$$4&+_+=X`auX zu?DxF+jUt|KG>Ha*YDQu#t>BKy+EqCgKp zrZ%u3p=RGxi-}&|C_!flt44kODsTl?=6V=o*39Xe8cx5-LQAZc)^A;cryVJhnbzDi z6-uzBK+`tS)mBFY5Ry)dhi-6LNB8(Jkf)NFBkcH2rL`2FH8wVm{_z!zzJ1vuQe+iP zm_mSB-Igb2@l5k-JxpHavdz}j*F;9XdGm(r9Q;SFuj23u+Qb9)#Qf2%pzPnX2ToQV zY31qShnyD~IQn@`K@6gw$F$w=@H3rBQV zSlACjq^`l`!^}+8;TbndmgZkXzpC<5f770a0~f89+)W!_>^Y#fN*V6FVPHT{iSUWqcY$m73e0=Gta>GlvDW>`Md3htv zyMse@t^v;~#X?b00bN+QwAjs&^>r~BBh~dbe&}$Qvgsum@9W6*chk_zGGAW6QJ&S+ z!`q%Xzfhh*ZYwHGd$2gG&K&1}QC$2mT~36q({51Iy};XhcpU^c#>7;r#0(FIg}pg+^y*b{aYX~U|5FF8 z{bxHft_{%j_Nd>_y|e zT7H${c}?%J3(&K-4JvA`vx0oj7rTFaP=$DP@$C0Ws`aK6X^Sa#HrobsKCySrg;~8ySs;nhktHt^?4b$c=IQZPzPZZk=GS~DAdAGBs zAD(Q>4=5f=zP_^J?rw0{|DV9;eLLGvoM$R)n*Z_0Ve*ByDkReFVql)!c&%vyAQdQK zbYhOk7ZgHxF^_x3jfB^)6BA#vUb%2VTicZ9%8eV~d%UZ*DT77$jT~`f#k|7Bawt9b zJb9uBVBM*L-SpST{w$PVyu#GoG*O}S78x|a!e`kwK3CI*Sd{D~m7yI3Rz@bq?^~r^>9Fb_2z$XHFkj zDe=Uwx=lYDh{hu%!e^j1mRAFsKiim`C?kYSJcwqwn?|hfE~^R^F|1sbxH(ooP|JDY zDe)m(hpD9#S7@TFACv5zuEX1u;g5u27XJ;_XTQd&G2JUcdA05x3uJXebTJ!>-^L_ z@B0k879eQAkg#dI;y3Ia&61J|Q~hoeWy4JhQBm+vjENjN70A3j%!ieGu=O_qj~EFm zJO=ogefVE*Ha6_p1IG^2ZN{(+Qadf^T#)`Zk0g^SD(Mvh?Z_DzqsPT=>mHP3@uAG zw>p6h??d`U>Xh7Qe>Gg|HuKzdwtA$^#vRoW__=c{Pj{WClyczTfK*E`TlRC$k9^tB zTief*l?^|2m44Ez|A1dgYp3Q`^^!6Mo8Q>6^f&sj{fV9&BWK%jUE$?GF zZZ-xrYQWTELx(qS4jnqgcCg*rQ|!p0OJ|I;gvq zE**wjSFc_l=8B5SEXU<+`-yVINKUXiR}EcR$)BLy{G%{X>O~!0?qeCG54~4MS(pKf zmb*-_Pnw#V_D8g&DW|}9*j{kkdpgh}zHGe(xWTWFjSyd4ux$BGa8pup1Q)VW`hH_K zF|(T1+(|hjZNVQisQZ+1K2___3C)=l{5^yKUhy9;-?{~g)pnV#t$Ev-e@0OILMJy@ zJ$a@eDS31^%bP=|?_on|(I*rN1*pj)J zdgfWrey*q%+IO7;sz9K1%x9ZWJY!_bacMJMQ$(}sgNaprjcJW?&L9T7b8|!K)0Q&p;ZL-r(?@jO)Q@g|e>0vP_PI)!L zj~+TMA}GkuFBr7y`02>k<}5hW{}iit_D{jA(Dk^zU~Q-|q;r}1E|vF{KI#Q9uQ|&_ zytc>6I*u%yE4ib zA9~x>+A2Hu*4C_vzCYEduP-=w_de$L@%xzf3{tM^4GxMKA(6@dETIOVVs9#h95h%q zcyS1yx^+1OMlt zC?STNZ@y8W#I61&5 zhuCh1AHL4A{qeSq+A`9xC6N5?EH5-9kv?^;4}I~Shl}Hkb?=X^(xrzDzkg3pXJ$U- z&^V@RWeREtFNVp~?N6Qr)L6mCX)m;3S)B?$^I&O?QSM&B4T;i56b}G&CC`B&EoI)k zytzkYp(h0V+2Tm4C2IEc%n?YNp=70`D8(hI+AYnMczQ8bv2O@rwrDNkiQO*deq-l3 zR@UP>%!8>G0pHh8O1kOS{ooZAK5|4h3ZMT@z7Q%Bp4U=Ts43>oukBiN^>+z@pFDvsg)-d6NV`iv9pld|eLr44kIukaw z3W|V*{Gt1c0AgnldgRHjI`5MdO5`JM2sLyZsRv+BDZEk+^rgLP!npHURYa+7cWD`R75W++}>w=v(3S zLiJCyZgt2lvV(^y=ms>Vtjbx91ofv8I^Qry5#_*)*40-QtFU3jGq4f>0DCj+Hakzp zEgurwn{UZ_@F2`QCaiP}1ltyO(tW+A1?$?gPoEa1{mInimoHzv`l(h1qviiyzckZI z%#7W*=Up^ssS}2IN}DDGQHNa@Uzw6VZ{iuCdp3GG@-7yNa;O${bz|+x!~E;sN+AB6 ze&n-fACKMT2^EM)O1gKB2%j)|rH4_t^BT)`=0XHj`?4qJNXEy<9G&Oj@K@q8|FPls z`|poD?@d0ivr|)ZTcllAGAmcqg* zDLdti6cm;NUmeiV0V)w0oFuj`!|`$?Xycobw1k`7d(b@ zpBIIO)N`OR7^bdx`ksbon8V6f_`VOe6A=G%Bp9LI7IvqpTd}%i#$LS z!ov|Tv(!@ITzKyoRtM5|jp*x_uAg0gxRC%GQEBPd#~fs=6&6{XfcnW{bXafYdGpV; zJvi>lBVXU)^1J*j!b{84GVj)TZ59iU z2wnoasKfjsB7#95(suptH$`{W!j?7;+ATwq;I|T~n0;&1`_;wikQB_x&w=+fO|zaG zjjB>O0~At?l*K)E)9K3zCe!^I+OqLsI8iQIj1s8vY^};6q~yiz%t;rqgs{Rq+!W8M zJq&f(rEhIvv9shCJTp6_rKjg+e0=9lZYGt32PxNr0Sb$Xx&)%3}%6jStj0ja{m&Jp0mk9LHFW+8bZrFhOhz;%@|=mdunnBfPMT?f2E5T51g|E zuvGY1CxMVq;wis-Kb`4w1@1ZH> zAK$_3t%y4I!E|rcfXR3^iRr)rHbdj$HyZ)abNKempEI}9$adc@YdB3^zLtFT@Nl87 zr+*$Li(<>~=Pl@ts~pRL7)dm)>h`VTG3m$wKxCvvVRc1d@Y+5$wu1)`R&5-5tr7~4 ztEJ_nTzi{g-H{<^_uz1d!~^cp+iOOA1|Dx!BIKIj4b9LgY}zqCJw44e)R?Rqnqv5T zdS(Xxw>S0Tm6(_~DUQCKvLtT1mHZq#m|JE{KeSRr^oj(lbVqsKd)qfs^g3(5f3K`; z)?Zjof4WoLYGJ;u=>KEuI^eNv+qZ_iB`rl!DcKnfD>5pT5mCw}BeMu0g-2Q>$(Egw zBxG+|_R4(7s;unn@fiQ}y6;Ep`(MBB_pA5&-p}*6@9R3R^E}SuJdUcuJ)+C>Jm5Oo zf1!USiDTC;#4TBvIe2@~#B^i?cKE2m%^q1pLr2dSzP5Dt^94_5Qt7OiYq?W9CTm zsBYc5dB2`A==46@Vm>Y!{`oWFQ$-%LrsFm)U;bR&r1N4_thd+DkjH+{TH~ku0yZ`R z{H~RiIW|WHSY^)>7G`_o`kBIgXlZ?X?yWFD|A+y3`IrduHdnkV%?{_oH7v{Hw`G<1 z)eFmc4lY}M`i|scBI)_G3*PWGcLC({#&uur8`V>5#rKE=!eK8jB)qtiA0LnO^M^)- zS}jhTfRnm^+4h>ArGtZ>-bt59k_8uy7Qy#=UG#cd@p;!DO$n%`)2Nx>H<^9){rJnU z?V#pxfm#0Ewu={mc0)Vo`EhmEP>yX^G4$2VA-AOifTgTZ=QO0!vjJ=`|Z&;ShSia=tUo34P&O0#@tD|vWdxBQ8mn_S{CLWFM&7V^v1akB3>uYLiJafbI`9|}O8kBy1Aw|m$ zS>FBiDTU`9nhi)MKWcZ^|279KT2^@^T(8&^m^!7~_`0V;<;^}|7ghK(IT`0neT(ue_Jp}c zW(;4BdMFW&Y1SMu|1QELB-EpsR9~l^Cw;!JPzUR2x#v1byK5CzhZo)&ODc4Q^I-XX z)-v(Ly}agVyUR6%jtmPvP*63qCJH2HMM!e9<=mb^K1#DQ2S;oRlxy4nTOU_=h2Js&)DHP^7Iok$3osYe1r3TKs zu|Q7Khwy^8-_2k$8$$rx6y`+$;obW z+D(01RMZZ-ezZ#A;?VILkq3Ag=ENnte;8Yge%*IR(yH->1{$Gf}XPG3?V880uvO|pj>B1)N0i6`UUw?@r_;2pEP*!h53(|I}Af{s@+?bSD* ztF(YTd3)by=Q%jwuw7)ig~d?tMRptuE7BUK#nb9>i@t7_=MCHk`|nMS=U2llBdiat z2+G<5O1-bY>?U}P))h6TA4~L18J`>?CJ_kcj#pOokYPT!Fwy!}@=b%OVCnXImj~2t zpi+fE&$$^UT3V$3pqb?EjsnF(iPsJd9SEo11JnhnWdn5zw~T76EBrxY-GV*GQR9f4 zw)&7r*SFeCi$W)Fw+RJ>Hk+z8O{-A9jIjDxpg6T1TO##b5AhBN02#=d_Hj$wk%l-< zqOLtINuwfVV$$C~C9wO-i8<~3+mko!EOO?fV`ACooFXwmJ#omCLY@8MMHS-ouv=Q% zVod$cD#(BZo~;*7%V4(d8ime5WV_ z7zZalF;D@sYkrDRa7#=qoT=}WN|NvL@7%pB_2R|1Z@RitwYABx+N7@7C-2)6{G^f% zY@80RAEBgD7mTvW? zTPH4`9DF7n9d%&aRvxV!<63Xllu@Sck4=wYgQlBKneu+VLyp&Cj!@EXi=3U(?J5R> z?zL~#QN`*^&4hP9VD~gu$uH$x^$QB}_xEROYmT`y0|C{>$EgreBXf;BC*O~+S_3ep znA=NvpPN?8{+|x2KK>vCB$l*~kU0Q#+@iaPy`)uUG!!v;7$v9+z1ExVZ7ZN=|G=De>+~ z8Y?pdcVt|5LrCfIgX+}5V48N^Ic7S`7g2V+5DmF+2ISu!$ZWi?@zeJ9SHyLRo|MnvBSu6(6D z3*85oo51y};3G|Mof>ic@!9J@%5vns?N|5@eTH_W#q3-uTXabYQNlz+&4U%vfIC9_ zoR^)ZMc%rVraXS~hG3O@?_OwVzL*y#I|hk-O%1*KpvEJ(gy0%7=;Y(@_wsu2;>CV1 z&ziGL@*$<|f+X}Xkg&Zkp>QCGf(f)#sb#|8U?DCOtg%DlRE#MD|vNl8tub3#|WeB#^3)opz>I(f51 zorTu^fyYugIZ_f!SvK)Wd`gctp|IwmqGDjM=u@%lDrLYf=-t3#W@o3OI(v3x`rhU< zo_miz9AudqEd#Ip*OWn?2f;;cSvQSj-Z?1vAMYk-|gh)Q2(Ge+q)kFT#Mjc zTZAmBZg{ZGX5|PDldzi2@AUQ^Q=NsgO;aPesK>&2M>0S@+VH)uxKt?&t?n7PWD*4j^s@C9NX(t z1M`XOHkXuPH0JWQ9rQ+qbo8|8W=4iD<6Cdp{BKdjq2Ykm@fi!G_{z@S(>Rgw7Mc^8 zne3)mulRb_?lYJVD>sB%ivznNVTP{?%v=_Iyq~|^6ey@1ENE(aJ=%E91yxmLma6WS zUKkWyT8!BDZQUv#cEV)sStbFew;^s&p6*MCMWcDP9zrLylvHm#r=+(V9-s1KjR^Pi z11C$K#W8Kv;qH-RhMXcI!kHi{l=+Y{{5c>buS%r>o4V)r(rS8WZi28>MyWEWSNIHc zdjb!S=ChNQT3Ad4Uj&^$MHG8s^Xjc)P8sp@@v(%>hK87Y&B85cchE^2g^s}c<9fO3 zLE6H?>eVA{-&`gfI__8?Z=44+GYi?#_jFF4yl_E}dD#|7?)~+d7F|>o@cHveX6N*& z7S!%N=~d9e)~(z~W|=6^)?TwlPEJgW*{ifc`Rv*0lD-~RmhQfTzcd?uhcV|~HtY#M zBH5KZtr88WRZqiU+YBj;V^`c(gK^!h{Z!~FI5wje!FQlAoRvFjk`uS)B~45ctXTFu zEj>M?Dbz)*SB;E{3En<30;T56h=`NzKV6(ZxNLjo z3<_6LQDoKc$*`AIs;_=>Zgd@3~qR z(Fa4%KG<-YuFgzpz|hR`&Kj4AJ)%LNmLpfF^MWEOvihvxE=`WNuV3xU-6AOCQ1TRV zy>$0iIcUvS4P&RY!4(V;kK2zM%z3h>jXVzyhBA8VE(V63J9m~6cAF4i;P^m~#3p{e zp^3_~9aH;{q%0Nh0T-90QxC8jFJ_YDM}#S%@rsW84?fLCRYBs=kIa7Rcv8E-cPWRh zD*6^&y?l&cgin8&V&mp!Wo7)YJf0ez=da zvaV_iwd9F?A|g;3_(NC`Dmp%jdI~q}=sQL#ca_Z_m~`T&o6dP#HU@)dll?yI@;YZv zQLgJKWZK?vn@IJd7DB@LQ7iDBG}?x}$P6I`1}xq&?~n(a9NaW3N}HeX_%Ya_G1i zkfJ(uZjpfZ7IMrnsI-P}-&gQF<@2<%o&c33S1@m}9U|(ufr64dpE&6Whk$^X7?1q? zqA_5Wi$;A1#Aik@M1+uUle}*Tmva#$=!SEMTnM={olIi$`7_a-e0Rjueg=EO zDSWX{v>xva0KBc`hb^hrjK$fmr+cIbi#BuPF>(v7sb728!z%;F#!AMSW?E8VO5Wg` zPDFc~CcM9HiA^7ym|nc&qkfX8k!ez2>>-5(w5v1{;!JcLMt6r01QjR|ZroQ5hdf_n z`m43|Sht(OqVC`t>JJ&vfWnzGw=QHoI9>8|{G7v%4iHXCB2a zXL@@_m_W2{_~z64gP7vU!otx^1*}V=NFn(^h!z(C6J@hLOr z$h^EyQs@4e*Myzr+;mO_tpJi8nl@1K8XvH4ZE(zoiKkn4(j(LgC@7YBxMXvjnhGB)XFff+=Ch&cuCWTkqEn^MY9p`*{Q1%=C`uC^YmydTKXPurWS$L z-|eX&fpLQQPP*OOBjJ+v_lG$GI&UHfJh>)n=fh|v&C+no+8Nl1K#vNC79d|ipjhy$ z^WhN2ro0J9Y;e||)QJ;_pC%Q+r;`uCR|+5KX|u)Jw+vDUf1x>M;may02(zMLq#2mQ zfF=je^GS!%u5jR7KK~I2w@0oTo%q)_FyC?E-u|+ruBggBQs#h{>UCtS$bci z!NT-(KR@7<-d_(`9wWQsp+L&%(GHpoId+~uK0I)zU!Io}F4a*v#TeVr({&V$S!rrH z5Ge&MN%2WAF_-3Q+>%n{UbqxQ3XyRi4%d2Q-tO(7lVe}s*;(UB+WS#hL98tv-(4o3{sbc#1JA5Fz%T9>jmni+pclyGudwQ6a} zyVaRu#OdWl$ktBhc~b0?*sD}~CiyD{9^n9`|iq|69s6%pcL_~A5w)79mtA?Jv!4@?716)0@@q|qJY};VTBg#vl_Y!R3&*LNZ-|iiaX?;20DH5U zFk=YQtbNrgbZ>@Ge}q?y<-LuZT;jy;JNXk6thA3(Q?0F1Qr$j$Kz4o6;Wsd5t`TvZ zZ6>9!hOL2E1bnC(izMw4SZ(%gbxn_QRG;}n&EJf(Ri#ir!q9Mq(uze?fwsQ;lv6R+ z_eCb4C7-7IaiGzRDCiJ6fb*cTas~zUbepGoaWXR-NI-pfFwvJiP!3g0VgDJY}} z%&&4T);I5nI{Ro-3RPv%cVAx@mtr)^{m+tY5wY>^W(my7THf1D<#BJ+CXwVs@var= zJsMjAV^sFB`-6L785vDYfZ#HFJ$)+OV9+BFv|0SwIV&Cv(Ea9;a&i?r-8JyMh5N40 zoYDOaZ6!38>SHZ*cyF=tmxaj4%R_G2W!_WtRP@%*h!Y(hZQV-Z=H`is<7+F?W4$x| zM8dfAk^J!_(K$_}99tWxyAG&ln)j49##-4Z}~iHAEn*nm3$U8C~@SHq34V0fu$5ApM7AZj=plcuYJGq3H3@sFa% zS1UR~_EkR;xV6P}^0Oj$^OriH*TJA18%wIj>5JX-`{dr`@lNM_!oa5+nKVTVwr|uX zK)l+qgtD2jyi|JI?j@KB72hf9Z}#6l76}~~gmxS0B+UMNzh=&}hAoLORs>cf^PIK* zJfgPOI;)rGyfZByZ=ox#hL&t~IrHs>Su|4ofC+>$Ll%a1*~J^D2!7B79`44S!p~me zRBB^lqSzf64mG>>F?Qts)WfjNC$|f@?WJI-{_vr_y)EQNC&6Tn^-%C?iAKWo)WUdtlB?5#<=|x&|V>gXQI~+-_fHfmcuwv1$Eg4Hy zfrqb_H^fN+NErCD_H23lS?wwt$L4In&#$+3C&gl<`E$Y?m29m-(^F66x6h2t{fKg- zb(`M-TKuz7kq@t##uC6AdeAz!> zX29?Jii+H)%X_yS};E#t<=V3zoxvtd!G3EkL*n4>Iu1ldJB>4*N$M0c%!|v{P^NC1@EEMW^kj z$Gz8p;Nnb5u zGpQlh4wMpZZ=D*1Z4@r?6cNI=Z|@QLF|f_VWY?Bqms53MT7%adU}$!UjR{P&CajGx`u}O`d3+ZyXvnB4+^TgptdBr zJAyM=Qb$(SbYP;7oQ6reG{nS^C!VAr5r^e{B}kfOyogXKENR^e_VMW-#)p4ey`2rAI-@yhGg$e$fc%-GOcpg(jbkf1Y2H)^}UG+FbP=9a&mwlQOh`gY02(i zJudH|HPbvpH|-b`8JUt2=_0L_FVARWGcwWEMs&*wZ%s?1=c}vFp73*YY9Un>JW8Hu znqDUDZBp;FaLz1C)@O3MHP2r=(YJYTbgbNRR&{8}6H6;*E9>AxFAg)_C2t#kHhq0F zGe<|5N@8b+*R4X9pN0Rqs`f1L#hI;ukX zP%qURPupGe-csnvN${y}5LC;wvncDfRD1&J(}nL+TYI^V91#)Wdc5pJ?T)w`+c&wS zPWV%nv|N`fTKcH6yaZorxT3vaSiRLIDc#Y0m88?lm*(a#U!qJ>uWT(+7XN!WH<=<= zIyU+53{-DVC?LTbn}O}MxS>bv5SK;)xywtM!Q9$+yIna(u|*(imj(87KG!9eRUJN@ zoNQ^i&E<;zeVq!ksAgv7Rach<>wzZ=bY78R^QD;0ZXggATc32tY*+9D$%}253g$4(w z9!2Kyl4h~-W_rxqwwjnRLfk7`nq63cynglnOM%rCMiuU{tw_NPMzPvzK>ipeT7{Gn@7p5JFT}ygvT;CKP#lfN=!N6*raGG|~s33LnW_i?fqr^5%o$@%}V3 z6Sg8@{uLOdyswra@qe3xud!RkH?|BvK3B#GehJ1)UpR8{pKLs*T~GR#*FsaCvGA);c!Z0EwS0sS9$lJFo zOlSggmn>tK!i2D#^1=MU*?+|~!T7C7J=^)|v2W&ZUYva}^3D01GrV5mOtp>i4<4u_ zZEI}Ua!G|+Lj34O?&`{J^LzJBow|3=EyF_Mb^|fMxcSg#PrHu&^Yeqxj}|U5-2LAW zY%E6J+UDrBO<#}1ZTh@9kouEI5T4#V0=g4o?(Ijznb0M2ZD>TxPs{Nmexq2`OaMCs zkwQn7k?QXvK+`xS*ZEgeSS?xc;`Pw)zO{N35ShSJ&$+a!sy+XX9b{Cr+jzCS#Z`Hu zGp45ozo^5Yu8T{e4m+TK?_DgrTvxANS`^wB@$Hvh|L^x=%*&1J$avhyj8L~;diCS`a$lbIR!${&db8k}^%aD%; z`ZUD|GPxNx$sPgIPyaz&1gvkUSi;=IL`@AEMJ|-VLN(#%Z;nNVcNV#O5Rfy^-^=-> z9@fZ|?gm-e(b4m1Xu?1)!0P=Vc`W1=8sWJ!1CuP+=yJBq*Qy=CpGTn83e8q|Hmm@v zVLt*LFhM~!Y(7CQz!hopfl?KQNx|I!3z}lr(c-Di zvAHw-MoSJjvQnR-&dTfjE$WEAxuiZmtaRNKueStwBZkrMJai7PA5KAChTc9c;99V@ zK)sCg@1fj5tF2Q*zz>&%ibR?kAgsX(=ouQ3aRs?FxH%3*0tfHw*DK~E{Ghnu{?|{8 zQ8OQWG;?mRikLEu`g7}~kk65f59~$}zgI9ro|Xpr&(=#S#0F&*T1V1wb?Cv%TeJ#* zv7?f>1=?DsrY4-Zc=-M6brkJ_JqTmeZYNKnNKRi3O}3N zk+Kl)0FRxIAMY6>(Kx|tU!f_h$WP8J&=+KYVIm}uzy?7Dj;OM&fCVV&)znn8iCBII z-b={7AhA2&KeeR#Y5hN$&371YLvKq8-H&;<4%Z^7tLjiRR5b>oF0^Rc4Acgs5QpyP z*HyK6H8W@UGmjUqa}XJJo0}^(p2qKrD|@-(B7bxDx@_Qa!rBI7EhrZd$CQ#QpMRtT zNm>TRKbU+pZ>{^_m$v21-JnagDdboxK|;yFK~`3Cx7TBAr698mSk6tdr%q|)Ue{oj zmxsIhDfJ<)NTZ!f{_YDAXtwuZFS8GRJg6cEepsJ?VybD`yiJIA9!necx z!z~z@fj|D!~ zejuQt3l%7g_u<}AQMm*F1o&rH1(zp+N!i~^Jr}TqJ)|j>Nbnib&b#SmT)IW(9bLq+ z8z8Z2W%b>><&!m=C|beLih=c%0~5+~$G5QWE9|7W1RGbIWATh9dvO3H5PtmN7`0zb z@$;8XH=N2%PEII1L=ABn%z!)q94URs@&8%;iFjHP3Hj@2M>?=)jn(jgpQQoM{LH16 z-(yf|QdorPFHig(q{%-n!k*Thdc!BZt12k-U0%N;JPrSF%)qD**aIB78~*ud3g_PI z3$v(af6*50(4XPIZglu3XMZ>)u)}<{et!Y-50ISDyLJtF5mNkjra`D@=~!*#X&8Ye z6kvPBdHFs$w?sc>H#RU<>8tf%=%vD*qlN>@Fp@03ywGalr$vMRytK>3#Z67~^HMKg zDkuP4^Uq6L@_C)|8{al|1B)~Wr9xL#_UBfI4iAagUB0eVY2VKaO?xA-zv;bw~3~MPn_61lUw@STNg0 z!_bfmpjt{iR$Q!n5ca3>aj-lGYCMgS+H;mG+KQi1_=HG~bl&8oCehn3PrP8OXK8PL zW?k)zQ@XmTMzo;(J=)>CN~&;?ZcqNTUA3u3l$4%K2Xkd9jMx9U%kSYZ60o~GkV$dLNnPz5mB?73s|FgCyy&k}TBCdl;hzCZpzkVI&T-Pb7wIE5vqg$1L z&Fzu$+E)j-pd+E8Qkmv4(YudxxRnu`tTIcUo|fWPhcBMq4Sq%re|#HbXBx&P)NbUx z(b4v{tcRNJTzJ8a7ys`=*@$uw7&?KWarL4?zo*syAau25D>&Z0l)u>cQaCJ(j!s-$ zikG*z_};pFdxEB>lat~Wr5iup>5Z!S9icR^S}6_S_xnsiM~9-KGh2578!CM9jgI@ygGZTm`=e@*i>|Q;x2xoa*jx ziFy>vUi;xe{Yzb||2gFpX=l>Y(IgUFE+}W1>s{pHLZA^0f1@g)esW5Hj*(F;f21Aq zmh_CJg$be2nhMb8JkJjE>a(}XKG{+@FF*X_V6Dbr*;iY@1_({z(mKxdfQD2rzvG?* zXKvYh>^zZXM$GIS>5z{`yZ7<(hW}Q+|F1t2KF6ydsTJwTc^e=X)CSL(neb?4-PrH- z`Zf5yoUSJlo7v9W+IFPDjXATNY}fZ*$#0IKBz&a0z-x>5vn|^c|J#3Ge(hS{MkQqC zNO|IhuJ5Y%yLM42dYz70yJNe7=G&c0Yq!7O#mlk5l{t9z5!d?y*L2t49aq{ORM|MVIULCgwJ%kLaeZf0zI1>i7VDbRzl`iPO^trGw_qp5CEhT$Nt)0>R z_2Kr0#Tz;Iz3Y_N7qI|{`=6__7fo$h#~Nhvse|)rQD6Rpac5^lYR{UUOZ0oTMWXOa zdJJjAtj^&3C-)lB-R7C?yzsE@%%s+6lN>0x_%@J7k0mK@4<$ntMB}q*cXR%on!O-n zMz0gXFJp>CD(QI2m!={kuVwr&j*|;;b~bO11|`yoaEWH!2bdbYcQ=@r(Muc@zJ<)8Sln5m@cyZ8ls9djo1pt~>w)O|_usyiTh#v2l)!$T zSA%W1?fLV$MirtslXH1V$q@NhmXzOu(G<8mn3jo!;-oiYwn@X6_?%BFsv(s~z@%`0 zY)pTBu5Ekv#gvvemvuVL!s(so0#_7J0y*}-Ky%wM=I!R$F=i@pr>P|hFDFF%^DHi? zXZk1RRueOoqTJnkwC$ng($l9i(frrfyHR!PIC7T);|Mvvd=NVc`vw`w0ZOX#2-Zqh zP_gGXyBw>KX%1?ZMMVHl6!jt3(3v5xf_W}6$LbKXaIgeA@tzzBUagIc3=&MZ7&}C= zvi96lQN^=-{IAbbRNGEp2!^OhGUhW#L{7^=eBTvJsysLW#lR%Tf^x&sXAKQRoq&bK z>lqOd?lpXB-u{A?k-k3qnK}a#YZVuj$WAa6Tz3NlU&=>CRTS{?@f|q8cYgeqCa-7g zg7sh5k+Yg+B0%yt`xoXgC13X%4Q_NcFDQOKS_AeX=`|{9r_Zcg*ObIJHPZg7wmF$T zoR8O5WMVuTRoeF79>6c@JjVgB6t?^%&z;~AI=RpW zv!4KoU27|+g|VQLHCLFKQdfT3vxNm07YD}}_4M!GPo9bi3F#`C7*BK{n2#jugH5lh z>a}ae#zj4U*{wJ~?!DoF{HJBf)_?TjGh-&u39#necjYr^u_oH*aeb_*F@*lb-rKL# zQdM;PI&O89FpU;=3XhK6I&Pi`4jYMDQD@}{b8@-175*}$nQ+le6CYnMCB?T!p32JI zH@bUeSFI8kfAQjigM+cL>|@^$&D`lKAvs;$r6nb$-u&|vSI_?198!@{!Ga!-x$e9N z8cK6=o2HB@aDMY2%l=irMX-(C0=?l4aFBuY-mRXe*B?Fp;R7lG3LESJPxEqdfm=r8 zk~b*C4y$*+{$ifP$(u+Z#Hpo<*yPyw*p610t7ldV7h33;yjXB!hn*^zk#=ijY+;(1 zj?Rz{Na6kX5hfPnv?eNwNExjt;|yIn zapdh>7~VQ;D`#(y?WhY*OQ%3+^jWvn9^io8D9Sgr97CQmiSS<_P`s#baS`Z^#Pj1* z!w3y}T%n{Tws2#jH`P$)a(t0qzEtj{Rnd5bUzHYbX6v_SPV@Z@afGFdL5ILQ?Mr3= z9XE*46fT^$$`#ui5bw~r#(Dhrk(1KXlVuMKxMZGa_fIapAl_HQr~3BF-R_%kdxEzh zD{DN&93F6xfeXP$SydRBtQOy&=&TqP2h@HSI07N;o=@B&dF{G&>ts)y2nfFRbh)^T zb1_w~=8h_Vj7yg!e9HGda-89`7FSsbddcm>J_LO@83Phxbw%L z#`GeDOV6WazY-ku*55V$RM@bY2DqId3G3j1oR%4RmmM-mpk&V;ooUi&RmG}zlE2RmH(h+Ao>yd~w>R^FiUJ8y(ofx$Z%^KmPMa-~^DZZ# znKIv#Ck-Lb)<{twgqy!_oD@=x^2BFW)^|W?Lyn7Mwmy7mlD%xW8Y+PK8lxQ01|@HY zx*oQ0DoXk1N3K3LNS=iTdcf$NH|xch9Xbo*F0uwx4BHAS?ZSoTP%Gp#x`AQY$3>$|jtHN=?(%!PN%U-cFpy9lC&%7~||*!UVczGAMD$ZYZc* zoo#o-UO|EEP>Oj!dbbx`0h=oC`fMbIKtDP?H4I6K5nP`)nMKN9W;OR$R`@`~>@Mr6 zs8Y~x&Yqa;=PUHB4&&h!cWN8rm#jMT>mlCP(+8s{jm#ku_&3*ETb2L)9Vt|~kqa1D zqoBLcd;8u3bhUaXS)c}~mQ#3%4-oJV?%3g{z{1C|6FGLviKV8!-MjlZ(tX}B#rwK& z4OL2Nrnw)01&QDFQtNl-`BZ}Xy`A~Tb*c3f0*t>8Mb4M?y_A%(3Ondz!2)AK!Dz1U z?+TVLI01N<9wC=>yH~gX;ID_7znwfK$L^z%upZX(_1Jp*xK4}liG!iO=Ba2@Q$=}T zV03nDVL^u=AX?OO)u6jCHs*Qg>Q^nlZ!kq=P?HQ5@%Hot|8?6Q((%2JP44A99+`D&=aEBmMhJ9@t*Tw9Xv zz<$Z6u&|15yMgWF3hMvfwwyd!sj#Zy+V5}iMmyi12d1M*1tB4mlWlF|H7ge`ex$Bm zO-E#2+5P)bPxAnnKS2)n+#nSxzi2vzw>n~;TPNP5?gUsq0=H|3^BA;;EIOTr$5jNT z1|L0q`BFPiTdjO%U>|M*E#OSl~0JxW+!oay9)w*u(8&-N`pQB35O0mXLPI7hIP<7ojW;#MvJ(Px-jw?yl>bZ+;@1VsP*iBP5h z2S+rJKQ&G|9)?<6ac_TuYWN)mvJqa{H_Q^!jIOY*zdcte$|%gs!7-u9nPS4K`5K+O zrzigv$@-T*?7;zRobRsOv5IbL3F6|HOz zZA(u6w3{ch8^Jp!|8_uUpVctz=0Z3*_Esh@vTt5FD}OQ5{Kk!_Gj-4Q$HgV(8)`ol zcVrN9npWf7zn}ZfY3d0pibIMk$?t3D=H|-@dV1vrAk02_^PltcdW}ROW}yh77Tu^| zw}grrKX8e1mXrT6t#C2`AjTf`*o5OtKOa4$33s@VGf_R5#B{V5WFWM!E`ahfk?FW9 z_@cj*k3Gj3p0qx~;g8Rroo!0!`d(hZ$Np&j-vU#w=`CIy=XjNNW$)esB-!hYPV6E{ zZfOb2l^~p=j%QG4lLMVxfA}LN1$oCVny%W;PDAPqIg=Af533B5XJ@51iwAm-k5|;W zZcWgr3Ae}-cP{_V6d(-3YP1+qvj39L#lC3i*MgHG(09SQ6%mylqG|R%ByN?Wn^pyq{YRZ zoCJfBL0FciN=ki~S9D0ofwNZDF|S^AcbAqvuKF8w>_x`aM@3Kd(C^r>9c;HJOC&N( zrztNhqV^%Dp!7H1YylKDIEi7Ei zcqhrp8lw=JsO52%qH*)DD{DiX%IHHzJ^c#pLlSm?xUTAh}4gC^Wb*Kw9(tZ$?uW%t0Pid;6 z#qj{m1U_UST4PFBAq^OXBS;!!^>SXo+tAEK7%?h%(fn??$I7EoeDJ9#-B>Bpyk!RP z=pUc6t^bMA?;5R9u6ha==Sf_=^xg%SP#)B-8a?>J5X@VF6RGiJ&>m-|2LKlk7T3}gf~c}A_2aO< z^|T+kr2_>Ja(#)PB~ra!{d)^sNYWl`Qkhs2{NY1oWh8T4max#wf<5P9TtQcLr>`fWXR~oRztlOt6_1Wh$9iduIBwpN*;`7 z&p>ti;>FTZ9Z0***^>N5CGOZRFIo3R&(1PhJaLcD3i&JCKY^iM>~jz1BkSM1pDs!i zGb!LP8h;5C-BGXBWBqre?Nb}|r~$WL^4HY<(c<;1S&Amf1-{YN|OXkeU&B)p3OY`k8FFv(oXi5QR1G_ zo+%8NIkO(Atb0lm0@KU zE(%{0$UTg*0?#yD+*cNBYL?ZZ>JhX@{Rra9yd8|2Zdn|<(Rw|z-M01mndCN&?Z}QE zLRAb-^iZ2e4zqKhd}=`ebaZK22yg-v!gveyvIC&9gw+7mI}Ghe<67H~SArTUtMhNC zH{k73MiOQuId~aV|FQWa82yL0ZVUhv;<@k@I!IoX`c;&;Y@=;WcZagI;LV%5f9}%q zPE3RG5fgH@f&V0=;XhFhcC22qG~R{{RB~|a@(=>-h6eHkSnr1>FJL?;=gHCop2x>a z51diz&|m?Y3@l%q_Yn=OWDtPVWWX#{){q^rQadTj-R+oXX@uHte54WD=`)mXUNDEG zfLpSvC6H~D#Bv+Qwcsj}Rb)v-d35JOY0aR3rG|R4`U7sK_Xs zTR7W~bS5|LK19-@*m3VyaHVWa0!DQHZMesMtY>f7W^`K}+ih<5PcdW~iL8tt&}%>2 z3tC0+NL0CCvXGnG7jMctMtz=tPsQZ$^F7rCAZ~#+QcD~m*sd6fIT?dXOz;(6ihw~ z`!R(>Iyki=2EPd^IC{--KH3Fx=(`F%N&|zyPzIIqJ5kPvJu}>@g0oM(k-srGbSiwo zxr{OFVYj}!v4;MbWao^t9Zp#Zr2iz$inN#)wAf4tzY%u%>>Rwe4kZN7CgHvq)LEVn zP%2GK47)vmyx3$xBMv-jE1s+;A`<|3|EvW#5 zifJs_{~7w72Zk{1@q3%2u^1AdBiMwA{rtRQf=ssQxDT-%Aa2LwL#7h{4CH(h6984B zbj3UlF-zvBd^Ax4bwrdW4}XNbacE{46hLt*Lo~9#u;^&x@F(K&#xOSDHjlQIh!n`G z7&u|3Qe0fS9HZIBasCuY9*pJozI2^gy zzwigh;C6Bfu|Fpws-x$6bGs*kI*j5&1#$id% z;7Jc3woi7*Ahjqrw>t6@lEu=#t%k7zn4`o=mofYMkI<4s6nMw^G=5y1)~ai*vi$Fz z^yb99O?w82d?ayHq4xV)Sv}odR>t{vp(<(f6*G)PsU$dx$RMTJqM{4btFoxky zRl%xD8hPPFjFQT5^$l3n98Ag^e+-VIC?g39NP5YLlTKnVwhq7k_XV83$<O=bov%2b|KtN4}m7W7n2H{1xdQJa}0A>HdA`ty|ZxPdD{*BpCLB)N{2j0Sq*M zuLzMq>0-^AFlJjzraPkbr=zG6vm5U_h7W;HQPr=7tZ7jUjvbvHQuGdiKSa(&Y5Xe$F}N zcP6w3T+9Z1pD9i|!ft8t@w@cT&VS8~u|ed5aAEQ%VCaC|ECUGX24kTLl}oqS^~q%9 zGbadmCeP1yvg^xEoOJjkl7LyeSnw{+)ex2@!k4ev=DhAg4v%2-7!CO_+`=m4kdLK` zZNjPbt5kkJTpCR~t-fkEH@HUp(kX`(aPLz_GVyP2$>LwG@MK^IQEAxb5lW)TWPx+UC}CqVV6>t$a@K_htYl z+-sb1Kz{UL@&vu_XLvRY&$f}A%oejuK#vP`xya;Q_+=c)G}~fJRB_u5aoAwt zW~8_0^#HkK;6$DfU}TaFp+}DFomQzpwP5$_yqWG3&Qb`C*auO29Zg~{mFn~7cc#G$ zZz=oFFY5f-fLx=XIiJ*2kFsi@!9muO*3$pF0Jt{Y-3DEjzC4kSV+%XwK55RNVEe|M%MKA&o_L%uR3mmXKqo zRx&F5dqLj=1>PrJxTD<2Gl1S1MIvhS|LYK zjmLP#gk6gxITb@U8%yvk#&~-*5~Ua)kH)s^LZ3vH0+lAi@AsR%G_PSUbB>!-kZLpo zm)&J6kzw0___hOI88S{8W)x-L>zhXEBiR$=C((Kg+&^Lmt@U3 z@qmhNH*#Yt&#^uK6a0+mZNYi7Pa?B1%P@NSGfLull=$gwYf&wH`_(hPEB`67%(kB} z)L(4U!0`Gic)(h-b2!O7y|-u8663E@RAAe7sP(t(EBeH5Mz=?6dJ%^10FSu&PrApI zN=}=E&2jQ>4Cr`)lGlXQB|9MQKzb2xIm9#HH3M!8XlKJ$Bt8fiDp$cC;-KMfCOl{Z zWCH7)*%194JL4`cFA1%@Gkn)H@Z&H-u_Z1Ol0}pqeX&5NNh(1Zo(|i~68#{Xu z9UXr#ke)8=*hOWQp1yFAONxsBoThS6ZA9E;p{G6oR(X3@R$RP@hgY`ZeQ~_J3k$q6$D;H!XYH-UqK^DdYERL*!+w$` zYS~rrtX~h3N&^jvS}Rcmf4GVl@w8xP309`;@9l}>#AjAmf)OV2WD2C-K#e23x3$K~Pq3G^tqhRxVO#xBx7Na%2SjTmPObX_ zc2p2GyZ_%0PyfV;bTg`TvWE|Iaw;jo!&{imxX!NdZ*p)1$qG?ZAAO2zbydNxz(Q-c zW}d?SnVIaLw+q_(o;k$4q}=sa?y-jd`t6cE9*mH^mib65JItqb+lq$%PnpGa z4$MHWq)_ww_dm$%HWnfp+<*_VcxdaMooKK^Kyt-ju43MWE;{%e<+I{W$p zNLm*?MB4o{lKIi8@=BQKJ!ADibqzXonZakpqq_CKMN}7Rmm>In6<2s1q$-% zcp<=0(osmYAPy3pu)u>CR!VXKx-kZuP}IqV7mroxbB1Lg>>A7jl37A#hbi1Q zFYyt8Lr+1w77DT>6XVJ%Sk5Gk{Hc@m9wa+`>)Wi%wh|1S8KTYG4XYxfVt)RdoqhWj zib2co|L@y5bmg7%sx|9&mf%V73#EOh=YHMmU@Ex;M8E*^ys=_Ni@aKRCshbZ1vqtQ z2^p*4ULwxOEwXka@c!aoA;~iuZztz;`Wq!=2H*9 zlP4piPMs_-ST6NqauT+E^KaJk9^>;fS?mUHVe}H?5deu$NO&Bt!2k!!O|^bxo-x&^ z;xR=ADE+YW{vA@@c6;gtn4yB@4I!a*xDKIG08IslCJx;0eQp$H-@B^}ZxUiP|D^%s zL@w_5cV5fzYO){=JdbBOTGLEgW{eE3wc38a-+d!QV)UlJ-Csi&?=;EiTLV6zvuhAb zJ8a+hf^KAJ=ymOa*M0Oo*nvD#}%Ld%56;no?o|7TAqg_9uOb>smEI(WW>nMWrYhcJ61x= z{y$;05{GFoU^88=pc4v<6Wnf*Ub$gx{K92y&_EWvim}4nV~RYzQr1KKLM|l9fNyd4 zFb;JpmxDk;Rh59~)gBvs5JQff*(Z;Lsye}a-)=+Hg7T)^<=1_4@APR_*3)NXYir5Z zS$FA6d1yZVQ|lga#W2+Xa1DcU|EB&TjF+JqvuJW~Il`xN)dnf8KiVt@lj$(F;;LkT z3@0J!i@|5U>V|v;Ji)K%{%UOI!3FFJk;4r`oqhe# zf^UhIEKFy@zRPIgyqoeXRg_H7m>DGq_*5P}Is+nXXSle^%K<9;J7`K?{fQOPpJ?k4 z&_Kgr@CKWmlvqqt5>DzT?`H59N86hJ=>fcpL9Q}zzV2bs>s92wmP}GUB1h&MzTv}7 zT}H-DlGQ227^$NOWugd!rwS@@E9EbG2L(7l#tl z*1sbb=!I3mo=i!B*Z!>AB(EOE=C%4{@nYAb8!H9*vGF1*IiM0jn;@ozGbtZp6l|_D zIpEF>7TudTu~85C@foy)9#`Pdj$!NrB6%N?cU|#3xpN?o4Hmlf_8fJeAsO7(jg1>j0zRZZR(V<1r8Z znhuN**?`GY2t4k_@^BgG+n{2TZw1r?LL$cbbv&7ERuw#%(&V?sf+M&f zm4(X33*?HzR$a3ikJuJ+>Nh8b{M`#Y#@Y%}qat zZ~XR{SejY->wij41p=vy%oU6an)O+q7{IQ=SsN&Q_tuGvBqqU!9iwv~xMw5^c@_kHuuny7kzrGQ=RxPMs zsbMpL;;~ACGB9#zsh&qu9|^#i!Q2S0FuQVcYOGy(V`+8O8WGa)8j~&to-^zI|BJ9^yK4FNs0j|#W6fP9MW{XbWrE>h7hx}}Q!h|n@x+~Hca z?J1a@Lk91*h7EIM+=XqX$I)!;3I}gXMl*nGFaJO&ySyRo*#5nT@{&^*kdgBhv47!> zCDJDaJ;ARXu06yCw5AxQxhHIj6Xp%m(~m8~rd1s}Tb><_cQf3z5)s!Q}cx2a3)Ze2x7O$;ZC-<{Fg+4z1RwD7b1A{@;8K@BnI zQKdA9iTKaZhxwp6y#hTsJMa`zB|`=_)_o0X}t455i$}_Mtpu)?UF6k$u+(hMHhH*Qz0E zgao<_Qc#PJ*XKM}P$1r@AbNXTB zwEkzw)tD$(6|Jh;#XDo6uTfm>s!LT^CI(Vo%0TvjR%SlFr>Ng3BnP?4mk%N~V0q*#L19hbdPH4K6jKwUvJ=m&B!2&vU zLyVgc^q-acl@k8rD7las^z-O|QK=Y8L^yy#yCjmYZXB}_ve=+lqp0v+*!RAIdulwMg zjlAxs4G{ro#IY3Yz%n(27En-5VQJW&u%+fFe;SoRYT$Rn#ynB_4-(PX8pymZ_(!M%Z-gC{hjHd z+kgLkn~vw9uC}yIzvOzeU!1k>+$;U9SdC4iWzB)VSFpIxZFk7P&&>mkLjx+5gMk>J^!WxLm%&K zeR4hb#;tbU+VrK~-6x@l{DEd=IZg7Li3^YS`Fc(xcsuaFck!Ayc&t5C%9MXqA3W_aU*{8ogF`}2uv6O3Mjfw6AWq@A|}DT||3p?7F= ze-3aTbALR#f?oA5JkU&H@7^^+6UzGO%&|5aTlXP&EspjlwWl_p-CA^GzYm+4eK}TK zRXD2li>v7h%V(7}=C?$N>M7wnk!0H&(DXBBfuld#f5ec2dVz}(9`=6?`uuotF8lf# z&*$RG{l65IHf&UDY?Sj7w=-H|LjUar9pwkQ7jFZT?##;AKXG7q!#5FT-|pyGXEpO> zNbya9=>cY|-%P(3aEB8J9%Ej#NDWc@w$V@(!;;+e@PFRT>1Oj1kntZ%G^)f1%4+iR zIajEw(&a3jOiquGB@|e+EMNX-`K(C*C6K+6US;HdN@DY)MK?sP^^oEWd_s4&i?Pqr?wm z^&NRwX8_`RaMPi)M~L-{`oxMzh~Ls7k&pSEI1N>ZJ^qxo96X+1Z<-(<-6Jc z?`gpP_66TiI+K)Ye2*N_&M^dH^Zf`P_MP=4@2~`6E>z=T^uIpwV!*d4L~6#k-@!bI z-UYV31r)cky<4KxdaAru=HGq7NRXLRK4rHIg)@KL?K3g-@?-3W_(yzdx zNfoyKQSb}@d;Wa^$8O=%@du7>w=1)jNa-|2S|u8m^|@5|P&@kwcC?RG+fQ9vO*1q1NCRVUY zcUzru`uk_EX|B)t!_}*<VUZ#yPfG3QPMx0kt z-0QP262<57wKMOeMg2C-k1=`@-Idh^-?uR_D=Zp6eXrYxCJ;Oh4H#8I1VW}dZJY8; z%N*a{)yv}FAq0LUb3>jXYnudUi>EmAYqQ<^Cs37pFCd_u;aqN4yb>8L&kR+${t=&^ zNuMg5n4tfILiovO?YDBzK7?G>V+_w+l3Do*|2aRIl|{_U%ME@e&zx(p`k4ODIJo&f zHa}kV|GLL{?%hK^UagB4jf^fLV__)f3srYqqPM73O90pZ7>f)YY%Gdn^>d`%25zR| z@2nRoPxoWzT;3n`82?OkWWXy;{qg&2w{8`5)0@B1f=@eUW}S@w@WGGeE^I(M7S=d& z%eur*_{Mn*qx7G)d*e^>9#b<7=(3EG_vtAi%}+w7nqr&&a=ZsM0nr>x{A03hwr-Be zgq~*tygtrLQ>G05p+gG00`-BHE0+hn*ei^fnDU{Ok{Tw1$|J4V=i1wzA)u^S zxjK`nmseBGq}B#sz@|gj41vsGI7^$4e!+$#Iq9K1KT#MRSv>JsV+-gGi@S{-@z4hDq^QN=$nqyf{55CtfR&+#xB{1}Mqt(adMosXz zy9Er${-s5U9Yj;F>DsM)UdM;#n;L>9NebrO1>pYg=hsVon0gKyhjV?ORoFv2*Kbq~ zk0`P>Ff1P-!YL9bbxdCo8ikkCRIS=Ezn@fBC;R-^G8D$R3NEj@{8}R)yK8n8XdciG zbyUg7sd+MQE4RMHXYa*{2c(^@2RL7E==^!ZqN7J1Nz%ugL=@)V=a^d62P&{VmZtDr z$3|OC%L-WE%RH|v1vO2|7szP>Chlf$@AlgDvR3Vn$B>*_7sxw}UNLD8>p73`hS(B` z-L69$kV*2Q)o!H_ESvILM?|BIgv|*+WQ-F%m;?rM1;xcIr*E8_*_DEBBjK<|Ak4bn zT)sd^Zd1JQ?A5i#+N~;;Y}Q0anBc+qpZ09T0O9AK&!uQ*;PGE-AztdT5C{nP(DXQ< z*gM{3638Dl^5*mf72fC*FROLFzrWJ;R+D`5zEb>F1)~brr78G;uZ}J?Cf*Kj?~>T^ zWU)_@oTVG2G1+NcQEao@VJaUe80}hDYFh4Yu&6(7v@8EwW3npH@9gKkO~2*;gdKwI z%JCZE2&+5%NK>R7^@1Ysm@Erb)9zdwIfSVx2Olp?d)4n=o!WN7k5%fhX{R!@Ls)2Y z8ns!G)=3+1BVDmqf_n2y6>!;3NdX#uc)Qm(<;n8KhzJz0gei(b8}@AGv7>effG)u^ zdF7}cc=hvsPHje|Wz4+R;EenW!fZstojDPv$={isk!w;d3%F<-yu zpSi`SVyuJZrIRe1jNODpV3nhLRK}xcV&vQkLCxUz*H1b$YNri2M-Ee*|Ae4&Y6%?;=7oIBRiXz94#7|^ybXp3yG}v z0w=Gx`+e(};Xj(2epn>$wHSFj&UAsdFbTRJ6ckLyZrBscNXEi3o7`OEty0Ob7Jpb@ zz1r`~nYDo4gBNJ&6B zJlqJOQVPbW?nmf*2jlP5gCFY9kg=P(^g9K$lnLLWTY5%)`4)tm`z~Ya)w^(H_4oWtF_(O>o# ziqIGvOKZa&N?5KSZRXwq%@$0mPr3cs0{gjWG@fW$GZHC53QSMGR0!+o`?p;uw$qeO z5Uz-GH&=v1GKE{~agk|_v6~z@Ia%lQ@F%?dDfE0SzR+7-K^Z7_sZ%}F@7VOp440uR z9e>_-MVebY+vu_u?u6OjY)0#3o=SVCz8mQq$*iPHt$Z+SG zy>r8Seq^-}1>VraM2($0U{Qt0mtQHd_w#DQb#d~(8=~47x<~oVmuI={WtY0}uG2tf zZo587yz=U5U#Ze#{_Cy0QjRly^z+}2fluCmHqdNWN};TI|)+IvlQBO^*mIIH-@!F#5whKiTr=t@bsQZw)|8hAES z-8kx~9Ielb(qa0Km6N2I=sF!ND>_7<43VD5Dd7*6&QyzXY7IJ;6d*a7E$@?CRcv=v)$s8Sc>`Yp7A);Kzqap`krE))}X*|%^jCR5xt;IWKLz;cTleW_}72Ct(D z=yO(Xz%x-xG9gqzVD#hVGDpTToG?d^Mjn5Zp3{6iD@(wz`1sLVBzg0a{tr#G?n6U^ z_hejUS<843@fJ-GHDBy4{tJtcK7DnWc+F<<$SB8o&rg^5!Tu5==Q`k_DaRGsd|kAx zFEU%#ZRzz*8cD&&6Ix_AIGj0CXIHUEA(c7RUi%i`-T2T`EOdn2CpGlUqTG!=KojS= z^I+KIS7h>?F8o|Ud$M27Q}Nf`^I4{w_q<-5MC$@O=SE}wmTSY0;M5{7Brv`_T-@<( zwyt~rmg7nxCc|6>yztCMC6L+30+ zB&sN0D=afoRCI7KGwYu$tCZ!Bhu&vSW938_Xxrl9v5~K`RUUq>-^lBHQSoR|n}(3# z0lNQ-&+{p~$e`XR4weTXYvY!{_t&kh3%l_|lZwgQ#;_9a_#h>!1c_102j@+CM)#{1 z<*zRjs<&EG z@T4yTMvU#2qnnwXoqT{_feob^1=*zMg9@zSzqawuQy*@T8^Zthom24z5Nj&8cLwt^ z>$!2KPHmOFNb}^CnvXDGu^#-lS1`15ftX&^ut+cXUj4>KUk9h@MYV@L_G`WyP1Te$|Lw z`gFD}P32ml%R8z`Rj^#KN{D9=I_F@7-fTG@1?4}NN&d_%O6l-t6@knwh;N|1p<`LZ zF=DnVe=B{Fiwka6Q~t8S?L3)OZ2*;RxwS62e^!EEdixF#33OYjBx|RnynENHa41Mm zUES6e1`9MTt2T;y9jAyOS%?)3v-jgZlu|>V2tN`VtfvQcdKaS7_U&ngU_3S^(zck>rJUdWTV)?E-X{Fa*fiWvX zQT!OQ*skL=+ODFFJapu8z2LGf-uf1tfDk%%=Jfi|EJA`Hby{h)uRKv^zETs`1iT6J zcd2ocor@EvoX1le&QSF^Pj<4C=k}Y%Ln^wufx8^KEme0kv5SHvw9|80{S?-61Kwp4 zq%vKv@R^xFT%In*LxbAP%w(OvmpE0-S+-glbsl2HFpct&$UN_Z=6O|M7209lOYFb& zN22IRf>$c!MeR zyL3#KsAOMp8@!Vi_j_pLg+zIK6GHcMvm=EAc1GF~ zxo~gq~L>dnR9>|9R|YhQu6W6_|TZAvPkz;g_31YXDj zSv4)wuc$~srF#AYNui}N%&O&rG}od~EaWn9aCPQUh?Ipkfm^p`s%Rp9s?vJQrt46v zRZuWz(pk(_*^^1Bqt&Yko=3^LpZ?$wSgPODKN@Y|WA~D_@a*|qLfLHvHS6NM3h$Nd z%S}-#fjnOQF53hZb#=2Z>s&6I{?@DDNp?)kM!vmLqUN;^!Zhe_xAHrdbz~89)ur`n zo31M?UnLXpo4KKce1bozc&Tj6#OD-Q*Cy-2^$+3ECj~n5V1hZdbcY^_u+J!ORLU;2 zUE>0ba&bYbI1;6ztH)%FNen!57ECwALbrA7`ue1m*)MDgo5#&ak?yRzD@BT}3{<17&@3Fl)Th7DfqW_@7t z$vMikLIBd=Zp3km|H?y8WbY1b@>%LGcTr8dC7YR1^9Sp4?Y{%cfNyyw!W)VAK)yxiyu>gs~qPTVB)yJ^PnfsPwKw5mmYMe*3i z<+lRZ>R)$yIJCK%HZb(gPa$76tnu1YjgIB7j+33XUB78*Im|aIET2&nrjgUK^bf`d z_~~E1tj7hfPh{*g-VWmj8-o%ddQaYm50Kc$So4cU&kd((s7r6Q;lWZte_Q9lJ5~v0 zlxiF(V#eZYAF6EM9v;4ZyUl9(rX7L13vZj%W#tXru3ess6^vh7<4?l<;y&8`O&x8# z9(DY3@$sajA#M`HN6BroetP<_u@Fu9V1dSpd$|&By8c*H6nz0^!DTCBZwE!;l3N{C zi3j6+pvXB&T2F3kqDP&#RUA^lQokx#?X1KFWkXBGM4} zXnA?Kgk(}|(@R`qYF=&9)$6}qD@RkjCTd>;RvGYtvPDI$@?hKoTQ`t5XhwvaU6OYy z%IUNk=;)fy;c5FxmZ%>L_rg{|B%IAS#lQV#N{-Nje9@kThx_}$uG8Fwo;m^ zr1E;bwyl_+)Yr=~zM{tkLA|;})skV|0y#up+5&c}SO~m(s{xfg?W3APAnP6_Z%3cr z;-OgM*T5g)&&>3t##YRnmu?QWAFi7+vSZQ%0+QRrRH85R|2RYOq13RB@$*MfSub-8 zjD3j4NIcyLLM^B3gqv5XoV;4>iMVaKn|;U8p-L)nl%@(L)Fnx-E($Ht5|pyB0WT5r zsV-Q@9R>oOxxoJDFQ;DuEc9w`vbKi@2e8o5Hugc65)RbUm!q9ycua+9pH*PjX>WfP z7ynmG44BZ&y~Eoq#k-9*t4XWtJON@Y4je#@T~?=6t?o2)lGIOc0s;(QA3h!kPYXK1 zZ_~gp&qs+=*bKg*$Bx5h&sYJZsB(cI;wRcD@x+7|h1q2KRHJPHHln2xpg+6%**_Aeulkw^-+Z)U@KIJU<>8 zasDum)#)-PSZVASKCobg%jQsqu5moT`RE>?exI5IeLRwqY)uuyGBO&k3xM_$fWwx+ zT@t{^7rcPKRKp6>1h(ALBK*3z!O@~Q`_t%ilPQLsmKTbyob#|vOs=dC6hHH-aBvu( zhQhuCQu&A3pMR;&ZO$rQiUx#BRa&VnstM}AnR*ai1Kns*pKx=K$~lI`e&-y+ zQ8nJ(mVm#-In;w74^ruyHzzyay<044UCUfQ95XPLvoop-KSJxLbzXtUjEn2ksl^gN zt3P>L7Dj`J33(oGf{%xJkW+{zYSKzh+6Kq-a(tMJX^vo-$R>)ji9~{ z4?_NywMvNZa8R<&n=uZ!dn4JCCO`TtK~A8WIStJN0`XlakljTE@25$132p0L;< z9JuS$1VK$DB=}OL`%v9MwF#CVbNZ)s>%>I5vum`lnNe_Ibdd->I>_6bAzXGCdVLd~ ziRT4^#)Gl=HT>>*sCBm^(YUEepharz%R^1MQ$ty%P@S|0Mr@vs9Xp;~<8$<=eqL@m z-ksW9F%u&zWxg;DkL0A_P?#pY7B@69##ezn^fKsG?Ob>eqp%h;O;s zStbQ?&Z*LZZktXFb-St(35nInPmEquyr zTXj+uAp`YZp)W4hh^$-pYWV%g1*~4+s(b2GQ4tO{#*PkEtDC-#WkuGTrPCp_DR)UA ze*NlbP4raY3gVbRoZhBm0@bn0m+KxK0tFesL?}XWC~+@1krQ);u5_|}xi^hH-T}R~ zAiQ{~Z0y?IB%*R5-jmI=uS&TM^`&O5ep&bdSC=;HewmrON!Z9r+FYY1hiJMP6rFGH zxsl|Ou9SR!S>gO>mjWyD%7DATP!Z9W4JPCK$R02`Q)#SF0KIeofM+obOfHxHflYm( zfbn+n^Lx^+f#V&MrNf?!0XKS!ty(*CChbi@MKdHHeE_J1xofGkbNpyTgWgxQZPPgWxhQ1geV5ZKaU1Fhj2@4h~z{%^xmC%h2JFX zzSu!+dEDj4*3lrh9paBT4`2(O^I958wqi3qhb0LXrQPI?nVfU`GV&%`j= z5Xrf^SbJXa<3nH(>a#ReC{XUg{m0dk{yn~Iu4B+nedGfI3<5Gr3UpuU24>Lxo&0Mj z2j|4NvAh=+2U9I&etyr;Px|O{=~a{NFSLphhS}&#Ae&T`yQ;%BIlLGb=v?kJwuOhE z|2*^uM2;)Y%=E|OyIhEXL0d)v<&oEq0eM7= z`oJcO){h@cWOuikc%Lw5fP;khbP+y8K1Or|LJah=7Js3_&0G=cR4o*{DEKTet=;6{lZcAo=P6>gf+8@#L6VB$}bi!(kSPsn*G1I+_494}?4mJrk^ zHGC)R`s)9tEs)is#QRufh}2l=I8tUTu#64fupuR7!v1u-& zB(G}o!zTI@(un(}1^V>-c`lg@?0+~_VhSNzznj9!HNwr9kjl!lTjd7*lXb-8JUp0y z#`__+jl8;8*>;I@yv&NEXhVaifvShUl0OTWhsXuXm#c)}y9*P&piLDV`j$=CTUlSj z9<=J{6awm|UYDe_O%SyGsTQh096ERqS26ASet*2QlJkV~>|6MW)(x`sT|&;z!DB5B zVK9bWDNqB5 zPF3~H+of|*oNRtbDMW7DpT}6b|7C++g;H`GFk;7Xq0KEZdNld}?)lS~6;)$oPzSD3 z!Wz=*Z4rqIHeGM-0Nmo%H}_ru4$yM#3~^h-V&~c)_pE8#CX}LtnRJ&4T{l^BGCo8h z;etoV%Lfp3CypAW`4J=hwOo>@Ls z5NmfHZdLE%EFar}F$WWu{>v}bEYJyaedIPg^Ol^pm1hr5>(cmxN-=#-UMPkS=Am_` zoqhNnxR@PO6XB8k11gUI*i4ro(a_h>-6#1WSVroy(}^NTlz5FlQY7(|^~$_@L(n|+ zalkxP0MNVsid_F{NGT|L0S;udjLQ|bb4|Yv`x~Gq#!Cj{@4qW6;Y2GCC5fO%rTQ7O zFL>OcxZfaS9f>IE-+|MDPAy^1nW+L1w@B5{Oyure=$yS7`C4E=IsRhf-rqtsD231f z5b(*s-IVHB_%W1B~we!NT@9`vB5UdULblv|j6*`~RDyW+wm7@=(B z-SxS^a;!yWI^5`dOqz{&RMslv9G&{(xL3+LqkXuucV~FURfCf zFe=We56ySl2Pe+fp6MAuhz zSp-=uR29J~Tu+aX;cAqj`*4eGuk!XCz7#L3xKQVqQ5fsMlMl8axLULQOyx=b*myZF z79&|_`aM#+NJ=07a7?6hANlwz4}$795Zs?G=DC2-9~GfQyjjA?&xdoXsrxW+7bb<8 zuoMO2=&9v^$M&UP(iDQuaSqG2y?~64D20bJSTqA8Tz>w(=FTIBC24(OP&RCm`TB&p zqy~99?*^x38AP$UbQ#@|;H#u`AvRl26>3s-~u+!-~%r5fv*W6#hRF`gM8jPbu|YEEiJ{HWQ&k~cMHX%dWMEZ zan7mrA`zh3x9x@Jy-ESVD0dbAs5?l-VUFVK)@^AQ_iAP0r~b%rP*_0$Dp?z7(Lmu8 z>=ONDbk;4md?Ko*awq_gX!1y1oNxLjI0Krc3SB7*C|w{VGN-H*U__8R__RHx&5Hu( zt)j!69F0LIy6~x5Px=HSGYwAwkJieSQT1(!H;uG23JRV+tzkRe>MhpGO4d1L^6s5P z-)vi=^4BpaAij7g82?kT22^mKpO6BIO0eV*9uJz93(q7^0P%ni{KFse>tj|%$!+Le z^}>;2X=!U)*HhFKnR8{Q*5#FMXrYU{e;+*pa|~U`gaS)w1asz$i3#E659|DEh?q}` z3IN0s)pO1Eo$7y32nWf!$TvByqYtz>^4W*VUmcsG@{D%F``zPfS0A^V0aq$$ucXH3 zyZnHge|~<8Otw7W4*+bxN zy7IxT2H-n1MFiBB^~)x|*?Uecj}8l0v*?M817xv_3jbI~=%@RqK7TdqMUtU@gbCEZ zTLEMg-OS3$?BitJ%`mgN9LC}WK726oT}kkQN`i*e$TN$l8t;lfG))riNj~sT^?`t5 z!4j})g^o%ZMRI72x_u|fp&`$gOUnqX8=_41;6l%*XscS?qkog>pdY?&-D3LlL2FZP z(E~}@HuGN_cpt+W9Q2o?T|h8h&SKgj1c%0aBfhe-cFSb11X;Je#2HvR(31J^F<`6A zH3&e7LlW@xWSx#0X9!FBT_3~0{P6{5(Jz~7sPS!@n$lcizhWUN=Yt`rT}NKv^>Uuv zp`|Z=lVA~|1UK#6*6PO_dVcz~&f^^jZl0kF?oEcszj%yA7$}EF0%&UNrj(49Fk+ph z_w>{gZB>EpLArewX2$zaICY=|K^Z7>B9M#0`p?%_(d^4s-`g!xI7>@V+K(xyKt0QQ zcEIaU{N_E8YxFwKO^Ky57;vWj{WrjdlcpgzKBEC>(Bb2i%R@+MGzGvPA$93tDEPY$ zl);gZl*DFH04@bR>?lhBFw*ffoR8)R_%MOxO&|M&_FY z2xMVnY1a$V{bNUt9z7liXGSYqcKWq?;zL-cByVy`5RLj9L@k^W>)Mb#hm^y$I|Uj{ z3=K`@v4I^F5FlJJ)k}f`n8#H9SYk+e#>y~Xq6bo+lbnO1E+C&5QulA;Lh=^Q(pQF( zjZ@3)7uXU3b#%Y2sHm#y;Ba=PH8`iVH2pAqgH@8kWVZT-nVueS`&{h6bMSXS*P#L= zA}5wCA%ipK4s8tNk%3yiAhn(wDRhZCjR`{~u^G~Bps?Y900qD* zTDqJj<@J^?YRGit)U;_p7@B8dT%o+SHGD5v`YzwusEky!0>0W*+`Y?SKmZH=Z4>G0 z4N&x%m{89f?&(1=;h^`|t(qa>EGJT-P*T>HmY8d(NAol(5$5Lybv=;x=I09v@c44o zVX|{;0)#-xfHe`T61K{_15s_Bx^Xj@>hNRn&4I*?H!A=2b)VyUF3GmGDt!6t?L7$| zvj(W@T-p^HC2@Q3?M8d)|MZ$llh;OO?WfHe%)j;mgt(kC_V-s#pZwQSe&Y%mpms+4 zXd-y)gB-1PfyilnK!N-RbGfH z%$Bu+N#d@bP5EK)u?^fGu+&{92ddr8sR^yzu3q$7=)j${5B5z@ZaY-|T<5K&e?Fa%_AQYe)X`Tm!1Q z0QhRkK^0O{u4skG<4|YzkjK}(b|mTF@AL#O;^%?15rbjEtiNV@biIFkZYGN~e^g*P z*I^bm^ORN*tl^X7!l$!aq`p3R(ArS^jg^bt*gjlZ{8CX~yyJOA#O6`r<+L~^EL4_- zUjjSAi?w6xZ`dIv_pnE$;KqnpGB(%D)NMn|f@G7xQ5mi;^I8i38oF~pUT{HV%XJ`I z@L71WKi04RV3d(##(e3Jm!#j#@R^-BS-X zM?{nv5zed)CHnJ50yqjGevtT=!O}}zLPuiw-1;0EpjuXk*bG3G9hfn2k#0-<5R=Jq zTMXHS8B0OE2)Woy7jWwU7Zy`U3iB#OU2X0)Bqw}p(t&;6>7<{wpw2TPk~5|I&jw3f zr{;NK(yA4_z0c$o61}qo+2#bpZi26*dNW7Rs<;=t^%1+O(Va~aKn4PXs);P_y zrONPE{sQcb)m|{BJdAoGbTcMr;9Q41Twy3&2M*kD9e%8b<7)O7$Nx-?qmGg7>FV2> zIO0cVY94Hu@a%^Jk8i{5Ah|KSPBdQ4HKaFJmAftcF&2v(nF}5 z>6`UHl0*#q++P59Zt8|Om=h*F7A_x8dJN@rwDl?;HF7PwMJ19!_W;(I0=~2g(DBdJ zKWI{`J#SgaEv~CS>ZrOAiQ29y z0>#u$(?Iu`GNjWjeTeG01ciluHv<+Kx<(Voh8a2&V4ou5&6Q5hBZ%7_sz92>CMh_sjg>2d`wA6z(0v1?h! zF)LJtX7SL^^AQe{zU##$PBfRr4z|{o3M$y1P-IH;Ad-b4SSssX@9)) z(TT@iY1lI0{P`&z%Bmz6BB(qaRO*5xKz_Da0)Zvr5{%#SoZMxd2V5_wR{YP~Ogt<< z?s_+$dLDx#*WSmU=TC&(r;P(Em<>C<*{e8c5yH#-a100JzcU+oyl)f8>s)0qa~_0; z)_4%Oy>-c|!ws5oyYgE>b3Rq&Mj+of%mE$N-gxTC7U^_*()z7|&mPo#;u+oBf7b1`iu0VfnWpsG9snMo z8#|wW`pu>X`--Q-o+2l#ZXHf#uWOgtLtAM(Xz+wM+o^yW(7N+uG!Ceuh->D~d`wrX zqKmeNJQT%u)d>~OM<`8|TQ>v)be2DsfXF6!0FXyrCm@eNF4eT;eC&+ypXT(7oZVWy zHpEYo!5|8Hh+4Mc*2QeY_Lp?9@C3&5(}Tblt7Orw^ORsSNLID4-VLBK;)7~d7jp_A zU!Y_ap%)I*QsIQI%)ntSqcl}~1+k}6+3WZ|sv5i+;N)AR_>I57fqy3==_Q2Ng{@G* zPw&;fp=JrBIjod9RBJ%n8E~oKD^!{pe*nK85s?L@XJ;cV!VW`Fd;EAHwlfIvgO%wg zvnXSJ&jqMJ^}B_PcVr>LegSm4R6`EabmjG75t46+)o^?|$=m5eID)Tze1<5a@$Vi- z9bXx|2b3K|zAX$Z5MmS2q*t%NE%|EOaJOX?VpoYD?{=c~do94vLc~{Pg17a~Mmsun zty~V-#_@k0WnCwreh$i6cZ)g*?ZE`NeP^QE>NH4csm(a>fN$Wf^0Ke--fX!tk80KN zuwLNV!fZwxTm?RQ4^b9_jS4MFxnLR^?Z2*QtESiGStw{u-*nyBmnRaJ`;h zy%4*ESfB7Xu$iz$4Bmr%sTBcWit|?eY#CGl>J0Mamhiiz7Z3+var5_2UIy=xl}tjV z$E7UV_hDFe!)iJHLVq|6!MVZmtn*_Mi-;yp>WX@L{mC=*;{0^^TkVK+)Db8Uh(Oo8 zj?2KvwHuf+fSr9hvysn;y$ZO7Z<{()xtfGS4@tJpu$=FjW*z9cjj=8CkZyN z4Uh|O${5Pb%B^&4t6QKK=DLDOe4Fr~+uA20i{DWkFMF+VI8Ss9|b z4U{3aYy28A)7GXkBjI@9(=B}ZVLiXJ^9@8G?I-UCD;azzA4Aouh$yHL=)Uk7++!JY zKypPaN9Ge-Ns?v^HduAl7Us6D-XTey-na4I#eKj1s=x2&hmMVB6ovTreYrUIsjSE# zB7+)Jw0(QZt(@NSqIWyOFFTlLO{eBgPnElL=I&71u6gX-nGGB6?*09T6n>5Q13&El zo3b_6YU|FWo4@~>%#_O`Dv+AIDcpQuCTnqm!UrGD~fVye9=gt3ho|lsu8-$41OqACD7KU=~X1 zVV>nQ70~V=vQ(8yI_mAMoNc%`-;`yb0^tH8<;88@92B&9bHf1pbL4RkBv930n)y4U zYGg-#AW|-j7q$dElP!aN<|u3hm6b_DFR9phzdpmGGZ$*)L{kOXRw&XpMb#`2;4L31 z`uOmFc13DLoa;3g*4A`c4zu^H#>46w4ql<^yq$5b50aq)kzc^B{N~aWw;g^Q$v`yX zV``uo8M|M;$NN1mN6=@YINQlzboG z_YvwjnhI6UH|xOO^RcNc{YD+QStD+w^HNWr#&$vHBiP>GZfqkSl*n$4r8V2P#B-l; zpGC|T#o-NKdgPfv=hA~2R(c)KO-(RaychgY5F1n+{3@K3rfjZ!7i(Kvb@jLJ}YNF}kR4QfD{j6*sY z%X_=i=`k@9r0kraOO?wRX_3coGJWzY3lK9voYxZ4Ogts8V*UfTm1x>~ysAur1P?LK z!#@_Lf3y-V-8b}5!RYn47wK{7XiN<~D=QD=N@c!2E^yV!P^RFRF`$==cz+RL4LK!R zBk%C^2R3xD0WtfLA*c*hxqVK;N1p^k7*L@dKKvg1lW$b4u08j4>kONIazg$l`KROh zrI#UKn;9Y(SuMQ#$C@t>E*Iuj2=gO05fz)+aTa#y1wmFzj0mMMB=0uPbNNk53Qg+e7MC*kRbI{`}7u%PX4qRSj5>j%)L1gajVosn1isZbo#M@ z$=%yY@aPe}l%O$B8!Ai$xBJJ!(k$Bdp%-i5+#NvOh!v!5T`&)74@sUB)YvOw2kF*K zzrx%jP4A)QMICJd;=hB0Z(vhuLoffDx>#h5Hr~GC>x*`EZYF}@7zs#-^G>~L{92|Y zf`=<$d7X*c9r`aaG*Y8?v=_$ z9wUh9jS7Nyf_{WiJ)8sjAMZE*qmv1~^lmFqaJ+9t8yestYo7lAT7tvE^5o<&4e0^Y z?g1Nv*L>JkAo(Z4dbYKt(|qXR&?h(bZs(!%nEm&5Eko1*0oPjs{r4;yR3?k3=R8|V)mAeK07C0!{?3KK6Q4w2_ zIlNR0fJ$^UnO_eH&}jIWUte6pVkX%oT zsP^8qE^s%|i26=M8N`$%Hj`MB;Ct3n+XB6AZF8TGb|$DIvHwGfDg)iU1IIxlrez|J zILhG?>FtAW&pt?==rMFmkaDuCT8z9BlW2w6fCK?+01{W$O8d!-^z>J+(hnEymn&Og zj(e0l9|8LoyVZX>ZV@^H6+wUV3i*= zD}Qqb&zU1DPGPa{VF5@vb!OusV53w6H5qAz8xvzlvJxF<5!ABufl!xWr7hZ((D$3~ zXQiD+f7lwbhd(|?jxKNaju|Y#xn>czACC`U1s!zTJS^b|@I^iM$mxkgFyCA5E}6>C4wEe1_x#I_>&F z9g)TKJA5gjo$zL9j)2WxaZ@6}BN(1I_{^m#A2(d+rwsVG0d#_xKo8KJVw@0!Y2#Mq z%B3E}>_O>cyo?{K(gO$aQ365(lXzVM(kf(ESA-Of)<@N3hyOx2wEm0j!Lt26O!@>| z_!TOp-1_ZZyoj$uXEuF)G)7;|2w)h)WbMp}5)*Dp}Qm}6sZ zGjWN2Q?vz&U(Zd*pFSqCbL{(lz3OThO|)t^HWLSe$CVLSj9{gNScik41GyS}TR)52 z^}QwsN$_89fwZK%uvhqo??i^BCFn{(+@ip!m8izeeL4$;)q8x3Mm~!WX?j@Jfx{HU z(}X3eO}DmAp^J5$3$Ym(u^JOK-}lNMH9Ic}bPfCcin%B2yq$XRpuYaWgOJXYRr(`s zQ_`o4rim;cGqW>i%*<{j6cbA9FT(|u(~+Ikx4SJftaQ+;E>#`4m;-x(fsOcNE5n_B zdA>|v1T4h>D58}s*KKW^C|Ox*(8c^)q`=+Ldp=Pf$=QJAy;Rof!=h%4ar#au+YD49 zqSB0@uZFCOU69;*PDU3xMX;%ZF%l#7;4D>WZ@GPqX~+c=Rw`OG9xde&a32SCFfS>~#o7c%qsLF)!#F-gwB z=it4r#^wRCuI{h9W>^37c{)cW1d0DbN|%Q=2|p7T8hY^%;I@qlH$1L_%ov?V!z3#; znDa~EZPe0iT+_fwO1Rfa!rGuvL{4k$Nwh6#F0C>)= z+UAtQrI@r*&MOD)?mxd=DOcfL31KgHw*uqCv}`^lO5WEmM-P_Dr%%5*Al7aVx1{7v zetwBqI%ygK4Q}mH{SV4Yo%LdLCmMUt9gGq)b!(NQ^_SexsvB(vJJxQ3D-9akSvHL} z0St{$;G{PRi}W8S21GiJHSxj2&Pl5vF>|Xb9;Ig=7s*S5%Z1eoDL|SLydX)bbQm@y88}*aKpY201pCEi zl1?f#eAiQo^Q9x>SInwT{#rkc02h}F4xECJA&~`i3EWOoS=$~^e*C)k6420bp@<2l z&#!*f1sTY7WC(zIKZZd~!1Cu1UXQONmXMDRsTye!f*ri~HkPoezmBbZJPD&dRfw~w z2a%D~m?B{MfEYV#)jipd7%4hWQTHN1#M^r~=vM>@ge-2ZmQQ}+)4i>!d77;1puJKy zU9(?uYQD#5gTue0A>iO&H-z22lKQ==n!^&8uM1q2vKr4ABH0bAS25 z4=dL`$(Eg1J*2Qg*7T#d;ZIlqmFUW{chJWzMSgn7cZ*ihd}M*J$HYnc5Cs|Uq7@)JN3I1TBY5cT3fQ~ z)=eL*sNzQc>aVZ?$SsKfY#r>&4h@jmW8vl3M-^-kV#zu!jN|Wbf{hU31$3_%U=AnB znEegQqCw@?U7zwy*(^SGrA0@YCgMI_2koSMSKX?&Y3ZFp+9BsCSWR`oG?0@p9|Vy^ zKtM62FvWB6D3nwlfu^^5F38^JnE8irNZT`)Cckfe`;JTwzOAqKS>3{Oi=vF&>2e!% zqe@bu4RE8oUQ=X|n}iU!r6Nr)5M{Z?SP-|{)L6Drndc%T`CAphE0_%i7KkkX74@1?rS5YKn~`Lm;v1nhUHSFx@`2>Uk)N!E>jLP6_^^kl9JpgbOZZ))lnSNXl zTwXME9=Ofy1-B;f{wP-pk6fBDHr(R?1p|;3?8X_FBVC_MXktewH8lt(fwQm72cnxg zXbBLE7e!Hmg5U?@&W=+@FW~AR7mkDMbAX-jC}^|*b|#I7+{lC!wbkY@Ebi^-;0D%? zG7wc`?K?Y_+ldllVq%J7;=I1RSnn&~4{vs1Un4>|GL@5{lZXQKgjHdk3ja?Ue>KYVX>rc8wsYt%}C1 zSw(UCd+vSiKk)l--uJxcIiJsS-gDj}b=0USSt&_KNT@Z`mGwzTNOAx23BZkiNN7qB z`bRfkDm_smA*o5Y{nv{8pC)zJSA&yOjzTv73E&%b6L%64nlJwe(tei`+keF-q_%;| z_4W11kG1oI!_K~y{pp$DxUR=faU^VE+XF+yt}lbVtM6huo}0Y?b#NNvQqYoGPs{(- zTq|Xa@N;?f*ImgZY$^VMN+#+}O;yvkgzN!Mz9?PmQkS4lOAVdAu2oOqiSCxUT*5K9 zkn*F$v&V|ba^kW5@0%t*wpJA5H+~#e##HHOXF3>Ur1_MD*kNa;wy>G~kwJ}4FN#|m zXS=c*i^9wQ{`qsdwSBm-wA|EnadL9J^8MEY;g5@WE(r-Uw}!HkfzRA-u0wdOOl?T6 z73ZX2^gXiG4zGFt)8WPI>t8Jzf%Dw+G{$?J5WEz4kqxy4EN0=^6W&~(&TxA4tA1Xlh9U+)B511rhR#*8 zsr}mXpagAr_LWeh3;A0<-S$WLtF3uu-{5-fLMLqjA74dU6A12f%7;;3)asS^TMnx~^#G zJ(Zfd$I}*I)?@PAnRLBD>fO|HwLFfQC$Kf?PgeI4ZjZXlMPw2DYu$8Q*yAyL=*BV_ zN1cvcoZslzvDvj5mxI&LGur-08bct$`qb=){XNw$`ddOcT10RhKk6WmNr$%f2dtVU zjPJr9!5_B8CG|fjmVqKs%G;B&m;AMbx9BN{4dXBQ$xnCy-)X~JfFl{M?F*0@hx~?Y zO-x>-@@DmDA^VQsz!Z=Npz@}5tii}$gZkE&=W9tnGNQSsJS<_rGu)qQ1-Q$H0878B zODv$FD2|6AIS6w+&#hP#@5XXyEW(%&k3OvKG&*+}C{`xALW1dIP z2_{DzBIVI`9?>n?2S;aal~jR-XwdoEZ}Ts{$A;?=pg}nwEeNSZLK##_{em+D;v6t%a_el0$Q_T_t zIQ!6*Q9*f)SJ5D5p!P4PF6)eARU#EUm+p4k?LH2``~@|@WMQGG(X^|$LIy|m6Jz#*STd0Mj@dM8u>alAyB2IhJ3WUcK$C4Pmfx%WO-a=V}q^wOavAJsLV; zU>A#$PO@fovh=&WNT=9yS>$k)0ayU|}+GmD%M`)~f2tFz$&hzTF+$$=FZ33L%t#1|Mv0no@jVty3=)x8mS}Du+=?^i?Rd25`0VgR-XKMD#74N&o1uF+fTt zWRRqgei5Py zvdQ|pT|a{PYnP)5(4ith%UvqN9;P>D&N5{ZB%0~)7gL$r3s!Y=@|Es>Pu^~?T# z<6^@#D%@8vSELz=wEhm6*!GDx1yDW^iYU1cKe|*^4b3R4uWD&lb7>WH%+AJ7_Rh_`44$`H%mUlV?tjFki9fQm|lto>d%LYyS6-tZ${GT%+6UI6GeL2ZQ&B8Kb? z`%1pTFgL$kX47RIDaF6{V|E2^-HzJ&VjH5vDORy>i3$hZT7wy_a;DVNSjj2z)(+L@ zmVr&(*13bD~!(Dxur{6B+K&TF68QpP`E0Mh}?EDb4W*y_~s<#FL5c_dA>; zkfK&6PfqticLBLOT>XtMn)a~aaNym4^XH?4<{oV(J-b>-_Gz(YT;iAX+-0hTF%Pc)Q)}Df|Y<-#phr7T}~+<`F5o8lXYz((@T7 z`WQT@WNG_>quHL@3(^!I#5>r1oK02Zvw|D1DUW?%f!mb-voyfX{o*;bo|B0r&vD-q zao2r)f|~us8!}vP>lOLj40jMs7hH;h`VK2bGsn)?bGkFIv)` zNJTuWjI=!COrKP1P3H!#gK82_4FRQ{zcW~Ft_g-G<0XM`roVh-_v1nB#=cj-(dRix zEE{>?lt<#ZeP#@O11`1GbLdWaIfpOd;tYS8&c)ymZmurs!vHr*LUyIq(DdE~vb;;7 zG#3TD4b?WL>K|7DV+7Q3Nz(B^rtd!i0U@!vVkx#ZPNJpV3-V zBXh3kNb~eh@is~0L#yPBG(#X=X-1ct+4@1pn>dOHBuW-!w6sD6ZW-TVuuJ4gtdkwq z)vtIZZ*a^drb1hq{}cv`ZC#QFxy||oq*t0f{~Brb54qMC&W@?M~*^jEw=5R*Gz-~M|8I(6cF zi!Vqg(mdgeLGj2qQSbqK;Z8Gd{yF@@pNBw6C)?QDHr3B3c9~8NA$wDE=5;GbTJ`4R zcjtZq@HSX&1uxweyAptG0n0d}tDYN0(ZWj^uPEtB`WM;6KYyG^oNX5=jr#fNn9v<6tnfea*jq z4b1KFmt{G4Kg~s|m}Ji7dPjgoC}g0^vFClxU(fek>j2}2OdkOnaKFQaR~Dp14j`0aks3PJ zXM7Li>BR2iLFe~ z7aB?1X>=1q1Aji~HVQKFHt&f8;u^IKbO0lFHw<(8grtM>UrPO%02~NvPo9VhT^`}y zA}?Ak=%KXn2-dGUL=j=)i5LubD2LhXu1XFzDXVmy16@SO>#h>YXM z_jC>snN3}m@O=~FfJY=7Xf=<+a#W3*podT&Tiveq?-=g|3KZpRLuCs(eFlp8EFk-Z z{TYBH*jji%bE2ZQR^HM1ENN^iI9Lm|Rp17H6q{jU19UL$ETi`$bc9N6+9U6441`<9 z*hq{j$Agl&c4JYr=ri7f-N> zIwd1jX>?nbd5P0cSe~A0#sv#&nbAczFt}*&8(H#W>z!3Fj7eX?b8W|ImqEeH{<8)k zeYCx)X34(iTobG(ChH?wRM@JW~t7C{8A1LWCZ z^(Ekz!0s7F^ZvtNBB4friEpInuoU$#iiA^skNGlv!|&la%L!uh%cM<;y*0< zJI%rZwdP{=Xh?Q%5dn_bx08&rI4Xl3ryK2uzh8Rx^836eYzR~}>>3&T(rbE0Q@%Xy z(eiCB${aX?1?WLd?*Kgy2Ng}b2cypOY3a!yN8rOvaR|jy=%f|xe1JT`|G@)&pZAMe(HA{TNgt5Vk!C4PQ<9GSa@Yr09 zlCIU}42=m1v<_e4ZsVto?NJAswTly9LPx1fKhyqK7&h<1BFXW~q>Wp}+UT8|p=RSJ#s3D|A=+F#UAC3_(i zb%QMb4BUK!8MronF?OUWtc)&9s5V2s0`+^^2Oes0II*qV ztcZD#OPn7K)1n))^&5)=$p4i_%NeDPyFXCpm(S<-i$nAJ!s}}FoP+NaKxik7my%{3 z`@u3rQ|js!=ji zv$?}jDBzB~4WcZJCx`k7w~Z8pnx5Ge{f)G0N2|_#PP_YlM0wQsx>Xa+gzY|UJijuR z3_~hE4U}h?vq^Xzkl>%h`#?&fY&ShQj98;)$h7&Qf0UCVl!2t)WrTe$g! zR6cShQOrg5=+*GN<>9MQ|DfuWTix1R=ia?Xxl;ncalT=5y%O!5P;Y=n=bGByJDo;j z`OZh`H=5V{7^23s=G5fa238$mk*qj$^argMJOwTVFC;9GzMgi|r=Kb}U2Q^`0aZJb zBbJ<5>6G{jjr*?*!0$d8^8&9N=9Sgo^xrBMbdS7<|3&!hwxqt>iLuZ>YIOJw_^K76 zO{c*hhW0OSQ8$GJy2q-)uQpgu@LE=)p_$*x!bP%9{f>gc%2fqe(o6h!1HE-z;YlJ^ z+`%}-XO)Ja)F9@2q%r2GBB5c?mtm-$j#if@xUSaD_hi4&33`pjRN}56&2NV)S5`?Q z#02EbNqUaFodpr4>y5`R`rEdlxS=|W7t$KILisZPEbgB2@Zo2ZN9?36s&M=Imruuq zDUM8s^+_VoL+)OL#!tdf9tUCTP7k&Ot+ap}7L%B%fegO04WN~kYxyd_8uKj8;@y7z zr2uMpe!H6rtjX+Yp}iTb@E-RSFF2~dIC=M%vnt@8vun8&oL)H{7!j~CsU}_Y{t(?I z&WbiZ4tSwq+vDC{rDV?;+1z0*gppX@0KVm4kZr2zEE<6ltQqSU)#a7e>z{y{2Crl0;jXmo=zL0NA8NS4HI*`^MCy9b!sM@gXT{?|{R6{`AI&+)*GEui z$=L8T@tbDxmlN_aeC{@rGWl9v^tnhl$I*{Aj#{gBLGjV2=XSyBL1b&<_pi90L18Dl z*BKc0F>zxNZLrj#wa$TPm&&{R;)49f0yO)2bHK(R#+?V0=Osom1nLXKR&_r0s)Ef9BS2`;5zIhsU$+ zVOjp;$;Hr|iOI*>hP`w@9k0O96P|UPLMiQTW)dV1Xe1lv=Xo=2d}! zQMK3ASQkN=3X6(Jg~NflNc=3iv_f{cIedD4Ge+y=hxTd zIHPcYN<6nvWT8%kD81Y_lMXK@2=55*&7eH?*w+O?8pHk)pTuyiBHQw=bVdI{#6ABMj)^9gK;c*3VFUqY6Ym?MZK)8#&M zVuEsfaS!732=>FYGI4l)Z1Sk)amS70h+n*Ua8=v%hd#+_iur{piH@=~w;LOhnH>ci zrKNW4oxTe_Qa(`UV!!IY`$LFRXRBa@^CpJ(hP;RJPD|5j2Hyk&lOgwWzJ#OFD}JAW zEwThXz@{WJjjDEqn`3!{1+YV@HPh(8`-nQlUukc=2t=m*5n-ki>2>*{biVkWR`EN@ zp09zF;-J;_YWWm09F&s&@rOf(#1^+{<3TXgk*mBb?S$muo0N7rL+zauwQK~yV;q5s zb*!dob5ek5M@+T6x@o@l*Dd!P*v!$u_>kXtf<9EL@TNIcnXbMDX5F=a0E~vGqmXxB zgP>yAHA?f?jSDyU*k9VV2ZDYcSx2vfEub?LnzrwDBq-7Z@N1}aVln9BrC@XPy_cij zFsO;EUSPcj`V+#ej9!$utL3JnGTk^}zjMe>CbiL%W^vb#zf=dVFkkTb4*YXkqiMik z0jx)Yex(l;|Ie}&0B~ToZ)wu9{-XSGj}*)I%I0^2I(`;>yq6lEE58BsO#K~D8X%qg zQi>`2*1)qA(8SIj8T4e_4&2QIG5gk#!=C=AxL$2B)+bA$s?#`0nguWPmC_j%4XR<3 zQ#qN}R5Omy8+^=-Xaa_N-E_)qntxM3v6zxOK5ACp}9sI6V-EG zv-$zG~rA36o^~Aixn=VsS7ydE9@3NayU)d|KVI-e#VPof8oK z7>aN_IJAEXv?}<%?&+ThN=v)Xa4FOWokkspw@q3t3N&h! zPhZy+tWXG0`+dEtOvW>2K?%op02X*;;=il-|V>{$!nV z?wvcc_ntjbDoV2GD8wiL0012fl2U_SNB{dEAwa*Yb!u_}0AmfXl(>dh_L)Dt8;SP) z8>kSQbAn@3;WJ$c9|oO+x?G03)v$f%CeP+MK}*}F$An^*$3(h4i4`s4S-SmdLtjgJ zF_GD;j!O~h0p^uhoDNJMEcN`;DJ$WeU;1NxwQd)5yE01^NIBme;VV@Dch0sTkNyaiV# z08lr8BxKX5hiD2nt6#k&QaV4ock|>EJ4|`15qQ*yT~wai=Y|+3Qwjp^8nhdz4(;8@ z!}*Dm<;}1GKt(|4;gk4MC`;#89qQASSE^cQyTx0#9U4Ei>M+-Uvj=q}-l;*cSW!|` z?Nqis2CR83sUR!om28)teUyYqB(JVqtN8@y-mM?o=3E%|v-b}V3U@^%xNqMn3WJ8s zX7Qqno|?E8C8Qx{*g3=W@Ss8cd|PC~a6vSLS1bF#_wcuXDXYrGFBvENG#t=B@tM@G zR-ILyq0Va@r^y3%!vJDt%6HkcNOkkSSJr1&uMBHDj=mPo^06=C%5lAriz@|BS#feU zHq2<3&(%UeKzSUmbuLvTKGJwY!<caU_eeYc2D|S4cbxy;JtE>DE zvqZ52d>H5E&i}fZYs9Fr#(Y+Uf>ZlieJJ0J4v7N z_`B--_KA_;V2F`n2rWeWV6nH)@5Pq;kWbmU4ob``Q2$w2+JGQ?% zI6U>)a1rlvU$_mv1I0BeZXp|8U4jsGwOU#jfTxgoFa=WG3Ud%!@+XBUmUk(NR8JRp zNI;|Z1LO8oa@$yBR(R#u=?+<$J8MZ%qk%C|6 z>H}KUgCfEa0&VT>{c9^5&8b5u{_u@tY5mKi0{xCHh>3}gzOZiOzcc?7Dv=NH6CvMm z;s-2IZ0@%Fuy%nG zTH@QXZYxiI`qD+FEN^W+(u+YR^cOpXqNhHdGskHO7Y>f0=;fs=Ms9qZ-24~OqB$W| zAFkZ@5(@%5dAW(LqsCj|eb;qH$rcLJNHee4}AA^*j**Krmr!thQ#eSITApQ0<=+T~NCQ@@fA(|RF6cqsgAZ12%? za}A}0_3IzS6BXJ;g=_8N7)!lyvzY$vC9hpNkNRe{RAcn@;DyW#D?nyPgMS~(TW<=G zx$N|xI?q0L>RUZD@vzQUtbhCf01RDw6NcYaSF_ZT3eWwkSw3|iadn6aX^f|E6ZkYf zK5k^Br+3el)1QugegpzG=+i5HQLS*{Ej>zop-rH_mGbv@=q%{9eDJNCNs;^opIV$I zLaAc$=GpXoGRb;XSn1h~Z+pP;AoZqLHP#>M^Vee&2XSCf*>8eLor1%7m5qSx(kQkP8(D;fX%DBaG%Q(XF0 zRyT|@u#i(n)$t>2UEY?b*+{2IT8h&;ZG!cidaCLZhU&8p`n8wYYhq7FuYcgqIR(lu znVLiZ9w@v@3|kSCp28Om6Zwlkz{|hw?_{=q>!)|Q_&noH!q_68bXQjoVhC8?XgN7g zv9aL7RQ-VTsznZYy1i$QYeQ*0^zurg;=yGg<_BOX#Q;7{t@|p1{D(STqT27vw&hfb z{V=rJepF2?l%vi~j`!O=qJO84_xX@h+s%mOpedS!nS!Tlm6a30`!@fo{9tAS17I}=A zW2jaEO?i;5TsN+#OD@AnjSRleStOVb&i1VJ26+C>p@^QlT5CrGz2CFk)F`GoH?Q=5 z(n_j3-f1}%$ig(j7c&XqdZ^Q3KE1zOcl|C?cpUriLWeq^O5yGOc&E9@Z7hcM?fD)< zTr4rQyT+$qn(g}ATw5NNIq=wi?Y?~5oQ?9&H6oaHP@kKahira9bOd5V2QK5^{YF3!U;Z(r+pBzA}yl`{btiEcq!}8{wHtF+jTU5BM zBo<1T#56RxwG0h!lu_WysUBz_4;Y9#V;GNmt2GYD@~Ze{t{qmp0DtdI0e@)!UMYmP zetAYVJeW5=_h-ZU8F&-J?{*inytI{Digzm`STbY-`m)h{VPxp|3=4OELv<&ux)5*+ z+A~*F91(r+>7J)jw$#ItVkV$t)9bR}&YH^L)iY)_-r%}?IVHoBOB!fFOo9>0vgm^c zysw}Fv|xLuE$k|xZ;H0?^VFMX)Mz536}kWEVLNXOpWBhnuqVIWhT&0-TE?<| zXCU1<(7^Jy@Z4$VQX%5j8ZuZk_xMk2kVugZr;i2)%N0IzpfWBwhs_O(=XBr&zkUlB z%0P>r<7{*g3+<;3?f)gP zN`)&mszfUTGUGr`?e3V!5&}653lZ(FELG*)P4Yf(Q&Sev3wKXfs{I6|H2uX#D3q!%uGkXtSmbTKY)OGpGB~ z)|M?<|N712kkk0mH!p#dYy8(K@3gLJ0(0zFVpdQ-9E9`wfoZOR7vp3>TI9RF%tG44 zo@S}F1uGf*pFq#f&3LbAYBCUC$f(726OBB{Qj}CdapDs)F!}?!_J(&7Ge7n3)IT<6 zl@4t1L25(*fvKkNshbJnQ05~+GBTRoeh*0ZekMd4P{EFrBWEl(`X^&J zh|hG4rZoUR>W;YrA=mGIwx@D2VH#P42dF&1D?5gRC8$DWx^N%rO&mM(&&uD=UIEAj z%w6|Dn99AduU{P56tI;>$K3@+EwH9W+17s^qUcr2NS16LVej345RaEjab`)8X@oul zoMA6z!VnG3FH>6=ge?Jx?q^ zcT?YWrt>gE2Ns16clM{2u(RrM=nz#cyV@B+*s$HFQ;)C8o%wjwh@?onC0mSelku&N z8Lbin<_b}1m~ad*no3t50!f?Yr>E(m1^*CZg~)2PShe@RHm`BBpXI6T`O6_oi9!GysCAY`22{2N>2J~G=FIEny zk4PX@U>tfG;O6!$nP}_K8O}k9JYdKH+wy1m=n>DLB80ZlJ=tNDsuauBo@+k5{CRkO zO%k0*O6T~m_!sB@-k8Bd8B&z;r^i~<>pja9!8+=cZ> zfBFdbp$_SY`ZLMJvj7^6@{9G1tkk}V3d7;DV_B!EOhp;>a4oN?iL)1hrO$nH5C9}D^cMqV-tK>lC+DlesM_kM8H;uuDP zGV#j}Wu5u-nhRuu+F5w)s|NZ$4#$}=_R7KQw#q}Nl7+L$wiUMs)h+MO<)eDpZvQ>w zKO3$y&tk0F2GR?%iJ8p-v)5Udhp5HKOcp$uttk5Z4u%^4mcO332KId|72~4Qr`Z0} zLNxIq67w?KMB{QPzox%nM0ES6J}-zAMWpfhQhRwrH#ya7pAbf>_>mK3Jn*iKlrs_-g9mHM2!)+_%jXP z;%LhWe$UP3^n>%to|=(y;{ zofq>FBwsvh0llGNU)*Q3>$XK1*nWX2k-{WkQhBnUQzi1-GRl;F9LA2C3_rd}C`*;``;e1ffJGt~F>Ey)(G zzGju7fG{pvpcE}XxKEByBSSNnT5;)eg|AOfi0S(`YZFBj@x#gTKmo;KpX@T>#vf*y zoBY~uISRSg=0p-w<_YG1eyv+27t6QEd)Ie&%Yw{EP7Gx%+Ia8&e5`$`4$MePCvDNL z$@5pY?EtdUU8}=qaCC>sncFm-w7|FVAg7c-CJw?3b8@y3Li>?5eX{@3H8fQCNcWFP ziW!u-$cyH2D#ZUZ;xC{?MBu}+uoKzZX4it4gbU_+RxTp|YR?hHFk|QbipYnGtyeBD zZfRsv<}B?K1_K$Y(Tl_o3R0le=3rtU#Z=aJ{Sue|J2DL@AfO+j+sN1p>`*qcJ=cfc zKyU6uZH!5ZK)bsO%qOI2{=e)JIAKAH8I*g{IXQ^g92@)+LkO*d8dyQygW?SSbYn1W z$VC-J1~Ly!Ojg@Q$+SvseN$HeeefSU>{HcB=0 zkDimX$De(Yj5jd>tgtSiw%FXjO@m%4^=bJs`V}v6X60iu=YO9vYYq{*&Qo=mGcG+k zJ&EFmk)z~tu|n!r?S^-0&`+ZZT=2_vPmfqT58E62_1z8qFCz4_ozrb5 zWj1V(95>H2YZq9|D%%M+e5Z+`1#uLhni?&jXYd zH(B=%GE3X@_^Y;A3Q#epuBLcy3)(N*Ge&kJYU0D5hxyi|~zP|{(O z=h~{!|A;T*33j(iKLScm&RUPRMX-083jz7#NWFq%0iWQ45E)@8PA8dP-;p6=Som5+ zR*sh<&i}eh*s)R>#txmv$1GgFE0qco*ZK~}QBWoFd5_JxwggcSDVtELbnZ7G;_x$i z^7-xWeX4XP&=xTgY;h6tFHSz8{xAlE7~D{t~YbXDeo7ed8yRvCIuL+y=+)h+#hI(^^YTnmtBb+YK> zmcVGm?4MdL2?8#6woY|2OAgP=;->C8r(5Noue0QHl`kLE%}$1{MgQW#f@`P9I6FN( zT^HDTj?JR56D0uK^n!3};JpkVYb``xhaptQiHJ9+5!XFlf=V@-I~>wIsvI(n&d z$W-My@BMA(s{=VzKS_iHZTq{A=AC^p;}|*RscOQ0-~cUH4Jx{w+EiTm7(f?GlrrGv z@VhxhgUv^nyV7af>+&;pI$Fw|O_zS>I@(cRFhxxt ztW120w$`SW@ej0h)*KZ1RV&^vsqwtWUphh*5L7XY7v?uzyuANt#lR)dqqG+k6gMB> zx{+S#?NNb@i~{^sRj>5D>N#MecEz9obcSYk>5I@-h0faqVaaR@tip=()W>%%ut#{jTB-U zNJyMh?%1|FO@izE6(7@4vx;!46CZ^&w8Hmwn4gKU(XxRF<1LaWdUDT$_t~-j8Wn|gVsbKou(sOme(p$}0~N<3Pte8{71Ira zweRbErlGe-tEf&6r^vCgP}3YD3BV;H5hfPwH#wDC)1H63TJ=NpdY;e zAcOKOuJF5iuG8%qD#YuHa3u~U0fF9ixcoc_{J!K_-l%Gmrs_q)0A&##?4R_5LZue|z@KkQe_k|**9 zLRN@IXIelNip(T7O=&cF=ghk!J-3`?IPAdmdD#2*253O?$YysrbR9QgURVJq*`HODRH;JSCf6(>@bYNKwB1b@JpV>6Dvy+;bguWR48Dg^%>D(o|7f zyVG--*#nQ9kdd>glb@qkWAQU*4x$%d!V>r5NKUjgju_*=6QnjYYWB8q$hX)suUF3w zr~!ih*&*nIyOiWPWQ#V0azL-fp?Bg28hq4z}Qn-1!H4#9V>2d=F4Zm?wG0NWio>h7P4PQK||mjml8A#`e=5^Q=HF-YrI~wOYv^ zOra-V7~;IlQBQCiMt(#BFOiz-v(rK89sUd6PO zZ&20b#faA%v`vy)!i0ws)7jZ6@>e?ljs#yE`c9;kLQfqtk5^{wF%`;;5va%TFAhKr zwrugc?D3FnUyXX-`6&U(74O`A``%jH(h)g!wGZ8ba4EAr36wZNynu$kgVEHm5@3lw z(VoNC`&~f8(}3S7fOPWKiJ=B?uU}F zV3Q&R&eR_pM_=ovHR?i~A}5(yn&V?4%&^u3zZkZjV-JB)?(#3|xG(}KA=%oWJubB_ z6C?w+W!FV{alh5E+v3gZ^DY~63o1MFWj>k!%V(6I*b)_SDm^D`KPTUF+dnfBMmm9_ zV8zAN?nPlE^GKv#zG>RlpKAf`RaYe7e@FRKiDwoGECu*&KO&up4sI&K0uXYP5M}hG zWoSkR;A6Im=WJ~Am**R-UedLB1ZmONq=t36^}8i8R{hEC-zU$me=oI~p_EM;KDttwbw?Ln3V5-CC{h|v&C{Ed&ge(?mWq;IxayCMaKm%73A2}ScJ@)w)}H-Dc@)>*oThF)xLq9PP99MhHN8TynB46b$xc9Wgq z9pV=|EqU*?PXz9}5r6z!bdc>!DXM{3r}lbuD8i^wV9FL5T(X}MzB!>TDHB0F1jYm@H>Ql@)^!__Pd#W6 zi^(Kw!)6@8_xBzKzL^OWH-~Kh@Ged2ima}f8uo8f`6l^)2PYQgGoSY++CeyX_R;jA&s+&GFJD?q0TY}P;v}Gg_ruX)F1#Iw4mKai zkOb40a{vIuHJsv??)Q$Sm79%60F-19I(7Yse#4Y5+pdOb;&I{kyUfGMxSZ`CH_wm}=dPNHG z;oK4+MifR0E4{?Dn;gP6>?2C6Emc;t`yk*n6NG~;r-^aFnVp^O0*|CNaGz}|$`mtY z6+?s5H3#2++cg(y88^d&rn5QVE4tA$ZsLwhaE>-)0Rg6<-#9Xemlq~VrYFBbn7j7} zuQp;NEU{9PFsS~f4{Fnrj2(L;QZTYGUz3LXSlHj+ucMBu%j03OK6^SedUr;d8n zPb`}L*QlZSGS=n@qLSsq0@663cVh+N(U*<045he@k56N)^M_$erPK^mo98BK6D)V2 zM#YL}>Hl3hF?2kxb};x2#~60zb?~&RJ;SCzg|_f=?sOUVy?X2JL@MED)oGi`a?iVA zh}&8cMWPUxKgBZ=;@TTCB0LKS;15@S$ke*>B6|Ec;{xrF9Z(!hiY^nunbzxY)k}3? z9X0-^<(7>fT7O`7*|_^@M}(cnQIrt zAQs=saKtmdW=t_Yus=PJ7P$^OADz*oBjCz}C|#8=_nH z>9RwvSRnL+HI@`@(w=>7P*GDAa;0Pr5@AE<v@6R+~K~3^Y2MKsTk_kD|erU2IK4!$V)`VS*=bl?sj_+fQ*GEu3 z&cbg+17NWgIRHRWmB1V^l`&=2_&#d>ZcfgW2>Qtx9c_$EqnL2=K_R1ah#_0Ivy4LU zcj%ni(2q@q_RBrRJX=Mh4SRezh#_XK_RIc3Ge33?9(BF`xj>AZb-yQS>#cqTnig** z6s0O+~xAtu66|3n@x0FeX}kNhW&p zQjy=KpQ$16n@wa&wZc<)1K7i_28G!CSXhJBj;pe(5Hs*QV> z&%r0VPh?rE7;&pF)JDqFliyn@a@(|-d`5ETPMeqqZ!n=*CwS( zmz68VG-KB%;AV9t(c+zI2aAS4IH{TJuzBlx7xg4JLDOFcW z0_$Ah>o~L}Yp9#Vv_1AiO=fdj{kTdTAtvyb!yM}eK(b2Cr~7tJ=BJuUe+OS2sH-SS zswEU_F{VJg@6s8RP2hj7;y7<8**%gc{gNA*&y5!E)eXf=vo@~s7VPPyH&?Iv4oLVj zg|jxhxOADu5?FBX%0@rbt)?pca4BG{U)sb`(Eho0%#@K^M!4%DJX}p4%i-{vnZ2&K z9z_rYUON4y%pe6c>G{=OK*{E!4t%vNXl}uJJlZ1Z8^oe*_o5;v&o*|tq5J#;=jTpZ zMhN=~0&&v%ANH>#bzw9T+M}2CGfwGEA9c_STM4;YS~H&XFPn%v9NnSJZ@@@fiAxVY za=ZH5pR+wT0%cCUZ7FynxY?fRl2x)aYK{7cibdOA&z18JgQDLIDA`7*r`y@wf&kkH z6yw2l!KF;#jmV5g^9Mt6JwM?C>g5$uP7_i&gbjz6{k|(CJ#%3BSfXQ$mfGl_zfKN; zo)ezbG&ohP#&d7e!Pii3xI9ORVrnyiWTQ}%I=(~do_;4!RSl#BjOc)(cDYVdl{_Ko z2<{mr!EbeP?OHLG+kHX5|NO;FN=ow0h4viSn{cV4=JpA`{Pf~R`V6tjejcCW<6bWb z{e2-`6?@s~XlQ>`J|o0HQz#}UN3!GL8p@M}x4ia~YObk=V#}lwc9B5 zL0ju-)i|3+)3$?KHUq%a`6=0V?Y0@J6E6LtU?+y$a`F{)D>XV$Mk6?@TaLir#+I6< z0|8NX&}=}r8&C@lTHZ6W?Z})#?}iE+O;AHsFFI}!MekpPU@;Z^wepVZiWD>3>$iaA z{B|#(Go>WMe19i2)t2UVZgW0&ILCN|SoC!kTxSaAU_>!NGRJhfl?lOz_>8;p!v@_eaZ!j)>@wcr>-eYJGh+4~28OAMEmXJzMR|fIpt$hbGxneI#CZhKQUfXP49ME@8_UN^6?*YtFh zhX40rr|)ougIRMcoLuJOs@EMhAc^2V7`X~}9{>qeMy17kAtZd)T?`505WOa~T+O%a z39~XFRrZK!O`+JWmViEcb;a=a|xD^z7?>ZxViQ%p9d{h2e1EkfZN8A2nZGxk*Jt7aG z?4&y{^RXH3f;~X^g163s6BXOw1u^%_IAIEsYI*9OPL9OxD}^aid6owAJJK9zyhaTr zH3d=ZLuuI89Bj~T6Cr^DZ`L;{Dj4BvS%OC)R_{^wl8(}&PYEMO^Qb7+T_6zTxNa60dbMt2ELH6{IY-6L#SAql{QZ#%<)Hpp#p^Ya%Au&}T&XNzUzw(`?7?!;0^<3yoZ zTpv10!W#AVyLK^Rck4U#p}+p}f36UpiK;6LQWvwDxb!cP2{^J&9FAIg#;f!^6+03e z!!QzIA(s~sv=eyh=$T#K8R;b!@G4S2=PhU z|6LSOXi93G(IWr)I3ju|ZLh>2oQn8Toq4Nz(>}a`u4m;Ye^8zo4ILo%_YnS(>D@*5 zz%^Y}#O7h=PsJ&4PMv_{xFp40m#|0Q+*sKlJSoSI1Y%ESHh{8J-F>rI#rO?+jpmq|ftn7cyNnzjLq` z&98o$Sbp9{g`-9V=c%VYU8#SZ@nLX_cSBk~q^W)FuJw$<}gO*~0R zfBA&O50zsjZ<)tIDJbuFv*=xh)=Z9}pt9dHg2)ueeH|SgvLK*Z`m7HBWk}@swl$jD zcqjaiAjKnxD(Y*8yOq|(BG)6k=(OK&>NDMrwozl)RjHfJ4NA`2zE{k~evAw!p4DUh z-!(pY29Ahb1wtz;?ig;E^UIs7d~S!k^Y4*;)qt;*Sr?;V98$f&rb{!Sc3NoT0BUK8 zm@77r2yTsn+kI$oJAd9rp$afSgv*dv1goKLD=)zQ*sPA5=ytF!(-BNTO8~VMx10Iz zLBM!F^a4gsz8s&=m|@Zxktfwwo<&@&YxDnxDd-?p9o#)lu{A`DQWFntzV>|=lK0uu z##LR=EZYG(ze<21qNn8Z&CxHM=5W%%N1zWz}Hw0rcT)s4_Nq z>5R3dpU8dcPy=)~NNFiSS@HS!knm>~#Ia*rLsY9sRbcHQVS!MimBwqL{`Sj%osmw6 z?;?c}XIKt0@wLIIyG`I`xqhRON^%Ve0`}G*?wcQX@% z*WJ(hKx(udhv)_OSHu@w343g~#y32wf-Pz}z_EX=u8Hgt5D1s5#sG%)^mM>uk0s4F z?kkxO_^_%e$uat$KT5+`^{x_?XWDOIvG5li50NVm`_ZCU;Mnedi};HF&?TCYCA5DQQfNUAjE!$o_c2Z~cOa_5l`IIF?<>yTxlSFpRX1!Ey8( zf63>;*X*V=Eg7H4&ybhWz39u~CoFTO#fF7I16c(6HrR1Ou!v*t3vc%+VIs#)+u!rt zY1E5Xn`d65biP`p{nMS_yUtSjF}!DU-h09(1W|MK+W2S+L@T5diw|X}9FJy{ErIu2z85zznpkZ;BB+fm<4Zh3S%XXn%gz zRVoIq>i3d&dv`sM^mkDEe=~Dbt=T*{1@M>k#FuqbsS|r9UcJ+Vl44rm!8=Vn zD*g zHK_t?Lt$Uzx7^0oiI!p*_>hHP9>#r?4m|H}^$^YaP{|bOissLZaCVuE9P%Bu@{Jz# zm>5{uk_kb$uc?`-0WmH{`7WrScoy2@-^!jnO{JT4*=4U?D2t`?^7Fd{!a<3Jt+wk& zb<1ENYcSEiXEek$Abwf66eq&7rduSaFQ1K^oF5BmCs*dVE4OTcZ8+3s`oukB)TRX-Q?`$geGydfnu9WQbz}HRm2?tcV!IlQR}6xk3+MH+) zk-2#CRt4fC$D*!!BTn$^exWa~uoOxZ1OqO?VeYJhpY7o2qY%MUen&Wy;}m06dK2%@ z;9yL)ZNYzAjb8a1git@zQckVUt0_tb4{fVktNquZTL14gw8VL`nk`1zS6k?Ip!<<% zfj_p2kL5=f%9I@QuHa$cW!G}Bs{Ihu55tdHv(_FxYQ*=+0%vDT^)E>y-U};K;``ZR zlY^jd)w!h?U7$KN)=$3KzLRZGY_ef`@m|RjvB*d9ay+j+KuS8CpC4zU25C^CP2&E> zGY*-@1SQSUvPh!qgN5ocIR4mYge{9~O-k9(5ZMmXabY$YmS(u2{ z^Yf97aR{)l@%xY`P0~1c5ST(rSXB~yJAD{xI#g)qvCf(>bx1!yH#b1s?&ti~MJ8Zl z97#45iXTNHlxH}e1mq&oJY#{3(`PwY8Dy>?co_+lD1kC}?xi1M>}N2flu-$}-e!eX z2RE!1f4>tG4Fa9*vXX|&H^+bcmG#H66e_6~GHkHdt_%qFjD6Cc9Y96&($8u}9iOKW z95Q%8IsygxljR@&jDMgC`yQFx{+>_~trZv85{1}ZQVFNrr?+1F$ObB%w}nppcz)xN z(8&B;>13sVLa{egKKauyaqE^4+;Nt5I&!ipXO@zSHQ$Hq z?qJ>;FfONHssdQh7YUWL(`xrzK-+@MoroAyS}{yQZ-C2(;jI{#l$Q?-R7wl(6ZI*Q zu4W_8g+H}6sWq%*t7iFfX6Jn@`hO^WqQzeC~{_R?QjGuS-Q~kl8#D$75GX%WEp-k$rm(ni^crG$fLmhNaT5o>&s{ zm0k=@)3B~#kWV`kvfTbgbk$EGx4G_+u5X-hOY$8|?FT~2#i-tzF(|tyqB>G~@ z`?!YpEJs7c_uuXNJM8q2tcL0q2hT!_i_1?x;urfNLcmI$BQtfrFA^a^vVqVye?bNE zwCO()o!8zXa+!twEa5SST<3ao^@ae%G6If#hto}0 zH5lWR;$f9MyORmky+{3yFtZ)xzl6${TLe%2P)BP!jc~2o(Y_)+ zImuJ5ch};*e){z$((oQEk9Vh9&q>$)2t{&21KZGf1mi@8P0HP0?-cB3 z?ql|$CzXF?Y1)4>JYK3DpZ(oUwx&e$&%r;rH#b#9k=gt86n}r87l90`MlS}PKd8>n zfeuK~HNg#Nm_T>-<@sVRZ^1M00(FHtg&uV}dE-`_ag;;%)nCf=;~-B||7LO$ZbcyCk^583T66%hrmos(7?ho|@NneyPea?Q?>aDSHr8fnqb}ouO1d zhv2c@TT=xAH$fBmcHmorNY|~nw)KdwK+eSuyEqo%=a2aKqGVtAe1w%eoEJlsaim!} zhzGkzda7$w+Fm+AJm6M)-$%#H5fP*UCtz@>Ny=@!b;Uuef6kC$on@aZ)#BmhNbN^- zKoBk&=mv2!m`lli@=jtHl_<}aSu@JhVZaWD6ap7QZ~s;OeU6Bspc^c)L~;LMaaFty zwIxV|M63UpFECaxzb3I&m`+BTRV0YNSocbrFh!q85ZZD(^Uhja6IH+>yr+JI4@(on zavNU9Lr2iHU6tPctdkAKjG~j^0!CT1d9Joh8mvG3d={r@m{Mi#+BI&(e?TLTHLa8& zaQtl*`s~&6X$hNPh5RpFmzuTzdAE*{uJnrbZnqQ8RQ8+_WPP>}^Yo6Q{T zCkceKF^9J+)L76-na4A&@v8=wPJIkP>h7M&ZnYzIj2*0L(si$M7Z*BS&=?ZV=_<2OeeC%PRwO{K5`$g`T$f`<=D^oQ^oiyce-U607YO~am#Q#%Uz>5k5twUceP<8tq9tDnSd>0Ri^~K5b zI?tGPuZ+@kk3PNFck$k^x#!0xZP(>6v|@&I8h!7k{m5c!S`-(Nuk>_L+ih=UhZ0?l z1ZkMqXh}fh`rHXVFphw})2PEjHX^`g#TyG79E*W@)Z)n-*jzc~^cJ+3vnXuB_S9Yf zFklCNsS?fil=M2v|lyzM@PI#7agG@`T>bE zj#Zt%wz{wJvWSNm8ITNrtebavL?;=!S{x3uz}C+LTD1PBg2c5#O#Yj?;cewpbQ2q} zOfPp^!pdRc+i5`8Dukv0RBB*8N81!N&sbLPr_SE`5wCC_4v$(x`zP<>V~8P#(XQh} z{Q0(D%%&MyQs~KJJdg=y zL$sjvHvM|_t;6%u4Q!bxWD15&d9t>2&Q-ut;R z4A)QLc-YZg;m(U&pYFkW59=;QL90!GQ?YV|J_@`Fr)R9Iy}ZkS<^4$3uP%%x zzuZ3N_nWMIIlgMc)U93;B?#q2Dwwr#LY~{+6z~i=B;t)t0Uqq0Zqs8KiM4&YMl=AT zfF#F?IPa+0NoZnPomgg%5QM9xiUG9v2SjtK;Opf}jIJ+r9pRoBvk6k`9S_@SsbDGu z_LJ(1Y^bdF8jgvfklu9e^+R({bpCbijg!v_LHvo^p9BUkNK%x`;!owZj{!DrAP!7v zB9JjTx+cJ~WjFVGZ1`~evOTU=nxpDBg((bBD8TkT<^^*JwoemRnf%aG;fZ_R1bt994yG({w|56Yh% z?_^JdSNyd@Noq1i2@hC5J}9TXm#^S=F7FB@TvO2@Dor5+q9E zh}92*5Rn?;bQ8EJh54Y^a;e+P{(K4>1o3}}SQim3`CkBR9+TlV4p;KUNRm=me{HBu zV)g)lJ<709FC5@M{`v0r`;21`3XK;~6a_k)58&#H_4M?75qd3*AV#Bc(BX98g}76D zT8|J`lbuR5n}1ob)9}XMM-!4>lJeZ`+5AO>dG;7Ns30Ra+R8D4Ax|rA5l;+Eia;OL zAX9)@S<+)KUR!fBl|sfP3HCrg{MpV=+I5!Uuo^tW{YZ?lzHT2P`pZ}Q{^3Wac4aka zy7D|OM_9NJilXM;UiH?{>$sEc?C8Kvl+koGhpC?=0#uyY`vugrQH7hk>|2%w393E# zVkF1#c(%=9r?4ZCF!I`>9%zDL^Yu&HtZQp*e(fJ`@L5^1V=rA>OGpxrKOlJO%YCm8 z+T6p^MHop^Pmu&g0bpxHHDY{p8f=yCu5TKb{OWko*VP=B)`6kFU-N_4>kV^I;Sxlx z?*0z%x_L;KkHG$fbK9{Xk#l**ySMPEsS!!iVcT%+dd**+4x(pnp8WwQ8H$k{8s~w0 zldlU`q6h$hU=pjWG3vo45Igj5-1b@f@-6E%Pk-`x+a+s{o4)%)9Udde3)j@#0#V4g z!KiwRD+jYl25s))TKcq8E6Jfj$fzR@UybP5`gV8coyU7kS>yUr$>cG%3)ypoz9$2-}H02O5UGIw)~pnEQwEG=EvCbsZ$M$Esy_yd-7jca7mI#05yu zPu|$S@=s0XAMVC!CigmbFGPYqB!xZe5Q#(rvJ`xEl7Mw$PrG4W5DgDlba-L$_7>gz z{AA(5&$hPSc&K}bs6IXL=!NBfy0kj;r)G^gOJ{N6t`ugcPsyf3ni;90N!^AX-tqh0 z=0R60m`?7Sd#-a>v{g!ByNq|!;$7bydf9kNUyN0L_nGGHBAuU1GhfZ8|IAnMSEf zy#9_QGd>1EGFqJ@-~L;pdYKmv4}QeZsvpnsuKoHSD9#Ju;KBX( z8;wTX7aE~Q!DKQShK2@l#llWB?!0!K^PNy|AerUjjQ4KfK#GWYECZhA+23^C@NKVS zFQGST1P1r<%o1IFsi}s@h7!uEt96b)_P>m zMZsXW!X*O3-JPACgwjTlUvns6PD@i=A9~qtF=k{GlzmI1Ge^~_ohr~kwkLyIzp>M{ zX)zph6P}IugD!rX_4muW>{~0n0UI-jA}A8{1-yurZuY6uJ8T;k?9{*c!2ZDx9(N%| zT!FC>q_S())G6*GJe{9t?9{(;W25nl$7A`7(c4xI2YqlVr|J;)?^H3zkgeb!*w(B) z2XDJYgjt!=-)>xx|M}_HGUdF!J?(~Kquq;Jbd*XVJF0W!ajV}*gaCq&cl`e4%Lwcb zOLu5*Z+l6tRud}sL?npKX6?z%%fB3gpwQ%gN-!Aor%bYTZ>*q!T(^o-x3SZXk;D^G z3DJX?mHn=Rb6c&yUVhyC-Ob0%-`>(r}szLQ0V!sJ-RY`SK{ zG0mlTpBu7!1Xs?^A*?hOFLX8^T-4Lrcy;J?6hJ*&w{E%4=k*f4=p!E5AP9nXc6Pi) zaMP>2Zs&v-tsgH0^fdkQ^nYK+0EH7SKG1Gkd)=n~zdkmyWtl9DMh*cjz45x7?-nVT zB}8vZaJ&8=FP`q*nw_UOT$h(Ls-g{|z1iwP z`-GmZqbLeAAKZ#tMAe|ve_^v)BPMo@YDo?l495#+6kQ2|;2E_p&|r}6^|~pkS%q;g z92svgC;~?=|JZj3Q~j<=FMt5y64=k6Nkd=MifB3n>TH|)a`ah z%%LBZAi-cTK&R6YnM@Y;V_Amu`5Ad--_sb(Nv)JS7EnQ^FHdmp&sLvCXz}%oYLt%$ zc37LKbsjFv<}F$`ktErrfAh8$>zZ4L+A(sRoBGmIRFDbx86DC+t>zkLpyo&rYUg`{ zgJJfR+ruVrJ|LX+>3Z+g2CFwC(!I$f!1wfJm3PlARE}yxSY1BW-j0FAcx^I1vu}2u zVnSZB2m+J0{IdED1ojC++YEZcsv}1lKOb$3sCWJw-j}WzwkOL%B(N$YouK4qpdq3RSsy}!8iNR%Uo!L}BOoDtq2F2+V z0D64}(A-o9G&U{;KP|iHX9kO% zkkPAn5YjWWMZ!zJ=F?J-dk{0%2@j-3V}x^|q^6nDo8MfT^4!xhW?{FAQ@6*37^#FL zfd|qYegi*~JAYd|4foM(4k;sl_l2sr?#IY+q_8@^%3%sBaQFn<>fyLL6G9i7L?k!d+mJ-F1+DS(TS_W@|Pt-T5Y>CX8{Pre!tl0;*WpP%;ny(4Eao16O^VlA~m1S*B> z_|x)=hnJMZRxd;$U^!1EYK6U!ogR2X96cu*cV6N3xbU(%k%I>g{59Hfq9%yX>vgxb zw*0-Qs5s24rB%1jcR8$F7KcA=M8i%8pO#|c(^9ZyKIWx~?)Bk-76B7NA1sK3lG#Lw&Le`1ruB>_>H%Sn494~ls$A(J~9}@qZ^*{h2 zb)7hT5nh{Kum5~tz!0@lAf`7) z(5ibDT`?AN04Gn)F%saOr|_7xQA^pyipE{*Z?;>8@EkG0=H}!7jAg8t*z5QEeGo+T z<5k6V+RWKpfuvC&Q4pzNoYlY#@pR6dT@HAVZuGW=1;hcv@n8MfI@giBY~G^vAQ_7K zp~Y5?(OkJB-m1{HWD$EH7(~rS)J9z0Fd~phfcN66jQ3x-ruL!YG;s?AlE+Lkt=TF1 zaewzscx`e%v-A9!>2a%nXf+uWJAVJ_O}s-PiCGTOH4bZ-?=pIa6c zetB0z(UZ~ENNgxg`{>(;8sTMJSNRJ-tkYz?hW7nIaG`q zIC<{jK6voJQ?ZU0^ZqXo2m}xWRwt*VhPmw!*w6R-ylA3_piCsN?N&Nx&Tfa_z%+W> zadm?oup!+Wut6$r-5yeemwGJTs?p|ElqzavQYrfVor8p->LV~%UC9M0qC;sCPFPOR zSg^0dP_?JsfSVprnI+v)ldFi!^U~3DU_oo+u6yy?Iy*X^Z*FRed8HbYfiyTc*q)w| zS;b&5vP0WU1O26n)a*@ct{~yHStkm^B;nTYvcm%`B9aVxS}NR#nWEy(-it?)Xbkd; zRBzo$qi~|Gs5K*1)XJcO+5??~^CImY{78_s>3IJINFezC*gNy!Hp)Exw`84`+LA0; zmnBPz@5Cl{2mw0@Aqm6esK77WP{2(626njyYHNX-9g3Q%U23P8*@FdUVF{b;07JqN z2uU0}F;3zbM^57Sh>!TvWnHbqx@8^R>fUlTZrk`tsmVXBRCNn!xf1aHmxyF z_LbQKqvBzABkpbw5aWV8Rv0vLa96GDgwE>a>FnNHn!0%cVSf8CwCii-*yH09UV$%& zP_Uc+X@OiSDH1_3z%b!ss~}Ht`;fW*Xou>N_fGZx{im(NuSa{%N=59e58YLKES~?z zgvGF?t?}@?cuBu73~Np|oq8l34$s@&iQ>`Dd2B0#hLx4#~7H_dB6i-kmrV>TED0Do+{_Uw`N(WrG@F@Q`zON;u!eYC#h z{a5y^|6?5A3p5}7u}>`xG-UIq4=4i4KuSv~TXUa45j_ zx*d7xm{65!2m~UqCU0AtJ7mb42#qZ&8X=#m=-#jR@TFw5@=mS4HaK z62azek;VXVDMtoYcYr?=2e*Xp1p2O=e{i^08ST~Tz@-l5l3%T6NXRk2)8V*Yxpv*7 zbHjIl8wWR*+o*Jgsz6i}B}-%V@E4KjSrZ{uOd^?CkjJy;h=npSTeG7|a(u+>l3Uz? zd8x0-U^0YoS_e(rw=O{>7Ne%D?bMO?@w+53--Qe3pYg{~t$QmHA`k>YV3*UWEM8Om zbAT}4&cm!5-71omoMnLQl&8O@8#5v?`mV0?!q9>bVm!N5OJV9E-LpZ~z-Q5i2K0{V zAdH)Sn@}d_WG2S+Z+sr`%r^%P!QmiY&O6ZE-TlJo$Vfsqh!R#P=61VGD2fh<3kx5c zdkw=dih8JLuS8LPCYPC)c2RDrW=bR#oZSts;5f$-Qs0Jmj~v``G~V5+rHzdMl#4m) zC%2Y;Cgp;?YO7oBnG7ejE!H1GI43%_4^_+Zl_Jijvac}X)|xcyYBUP&NVhR`~pp&ZDYdiH|TUa z`Ths?p9ev(9`8C=AZ_3M_zQnaB9WIZ;4+;+F$CzaeDweO9p62PpaFU{_t8Js310k& zM5LtF`5^`(C<+W3oW)&g+a{gOQ)Y7bMPUTx_(KRKCx?JBC?p?)Mz$64ml0>h@0 zCr{jNx7!jLL7fzT8ZMV7+PCliP7;}ndk9rpwdub%|MZbRB;&iYq(5D1Yt`$YT|5{~ zBmx#)^}(~-ekS5D{!b)BJ<8o3E#Lk--u)N=gj>&@-99!pn(*HCr1)b70+T+U&(|TB zE1m)f^P939R^$3yCToljZI&git?3B-Qy48Z4diHNPgRO)7^Kk6`y9( zC;^L6Th`Wi_ z`83@R_X8-5>j~`jdYVrh|NaRSMU%E(OS%QQR;&F%C=^wIAc)rjNidI(-9x6(41BRH zZ4#NXqz-XD!@5?If9ZU`ao22-6y$h;-QX}lA>cpzKCic@;pB-u!3AtX6G74if}tn? znN25Ta(NwZ!PG{14j#3h05e|nVI<4kgnOt!%l}atdxn*i5*-py^RXm||)t98KMy5nkDapUo zdwpcrF2(>g+ROpNu(_$})OM@Ik`nKOl%>3c!{P9hNaS+GE((<@#JPoF)DCTDfb20Y ze|4A0uU5!GJBzGo-b;wG=73??e!A(@y%s2T+n#tyX$(?091du;nxhhFQ5}s&!^_$r z=~V+ig~MS~AW?J^iL19GakVkjb8*jwQ-|M+MA@xE(TJ+4v0)zs;b#dZi= z@p0WrxmLS1sROP2H}f*{29Ghe^ncj@e}qMdV0%^Z!5 z4f`w*w4jT8GFX-%y(y7sw3@FKa>Y&xm5O`X?)SRny3xLSL`5YR=(%9V`2J>zo#3P| zx8=Ko@9I^9^V+s&KyI!%re3R3I&;jhY)O;w&DX6XGP$CTN~PlERRG~ofTtSl+9#B* zxsWZDUs+80JYd5Y9~^et@e2=u>D{WP##1{MV-=ccmM@BR+Nn{e)qE)s2-h+g4BUVf z6phf;Lp^&LAZsk2FV?1hlvxsu#i%K5K6>Dg-|NCHSqG-iIa*qpcUmB5Np`1+Vp#95|p*+Y&WCJNk){5yF3_^~IGeL@~9sgGm51?A-x+w1D;za-61)}0Ni zsI2|G{wELr3zV`$lqCsHT z+}e76Z(m<>O4j2c?F2G~&*yXNblOjOT%M2#g1Auvz>PnES2EIf>0uN_gM6{9FS|BL zA4dBx?`S#pKmX;hnQ+&YGkCq8^G%J7_Zf|bw5-ERyH~8aY}|Oq)9Y(Cd_*7s3r2N; zY~DcK&i%g;%gg#xH@YlyaZOl6${&utX)$PS=_0RDtKV*IJ@;D#L6RDm9S>-C@X_H_Lof}o73+Rhk(%pj3SDz|L8`x9mq*Ob}h zkjUv4;@7(bzjm}t-y=4}B5CkTU^mg2T?NZCjQPO1p3K&7O9m@9ShU4_gO*I)O zkSRzc67jCP>Rzs>T>Co!Sa@wR1({5Bl-JZ9tf{;25Q&`lQ2*5ghGD>PuX1;9N6Rk* zeh*#)+&uK-$7f$6*tCVE-(!1dV70b>FMrDSV(88$!LK9)3eF?n%bXN zS5^NriA;{kB9la>I7-%S{Ia5E^AR?eZ%O_rGne3`k1^D%{C~r}%BKTYMb!_nSsS(=hf8K{;IUJ^i=>L-14<+8n{qie!6m-xk57*cbUucnky!0UQM1{6xa;bbH_c|VF3Ceo2`fe*GYAAiX+>q_%cZ5I zF9HA|W*=FQ#qAf%O1s4J^0N{}`Q;o^>^bHufvL3xq*qnw)q}fiCS8@yJYKhmgXDcrDe|(0ANvu%VY}Gswl5Hv8JNtgg{z6 z6mQCFI^(pNMe5<6y{duE{gXaV)bjHvAZD}atE-(?{t1Gh6*&X1+`s%ZEH;~0TT}aL zNom=O007|jJ1+!{&d`hH<>#fvYcGh4N-k6BjEr8~BXF2#F=(m{n(N#2>g(HlZpSV2 z3Fm`_AT#uNXXoX2AP5>w#yHc36)%t(KoDeXxP9ZVOG-+gBM=A+RSGXexIk2NxlmDY zfiIR{<%?xQBr+wfw~a9j1tu)UB8x%25z?#cjoRU@D7wU891IAUA=4L^FLnH*&1PHH zMy6D;Y6LO^jYgwYRaHMxUQzi1old_ap3fo>2!0MvG{6%{dkcg`eLSJGkHr<3iNr<6 z^(73q)5dYxp-PKUQ!@b>s%?;dJsLq4J#)?mfnoLN=*WTo{{91Qw`0 zibgoeYE!^4%waSbj%l>&Zy*Tjb-P@qWPDF1krl`sa&mG2sZ_eLq_pgDNulJ?7%GS} z9hY9OKd#kkzR+nkXM@3D)`x5sS%ECT4Y3pzRSN~eJuP>Is#F!FN)Z(lX`vSZktQNVdPfMMg(S29f&qI$0V_%q1?f#{C;}=9 zN|ln(K}6}rLO>Hj?he-fd*1JS=brQ2`#j&h>^yt#HEU+ptf_m?Wc~Kg`f20)9~y-F zdI5l`DIf&^04u-&0RRS&fJIls(>VtK1$hOShPWBV$nb}z3s8`UscOJL*-CW5N=h0Es&qCp zgyCo2nE%c{b*tpaBX$t_yMxNdDOaTaO z5#ZWz0iI{*;b=p^1%QKWfvNIuoGVmCGR}GSbq0q?}z2gidTe>BwMf0O9@$(O~lC+RU(d@y&fxtJ?r56x5b+LnjtyCglwkcEh$af*J&h^Drr#y}5&~!E?*5Pl|gz#)Hn? z(zDtL4_5lTkD0Cji-huvZcvE~K2HN1l@P@H-zxmCHIV$H0&NiBVAx1=8=wP_tZy0b zJFrhkx+rf15yw$@rg|w5@{rScN{z}};pvGxS=cl=;b7|Kl{ui&u=mEe6*CQRn!iqU zFOO~c@Rf>Ix?$317>7!2~qLOu6Y5?INOxFU5mGz zC$+tfVhxHKL@tlxWxf}eBzPnXFRHau;A7EUsQ496!c2+t%elhcGyuuTkvSy$y4cos zd^!1^U3Gu0a9wd(@0*v!J!QSEhhIKEsxc$Ms0QUYpR-%T@8jNE#s`e|-a2LpUhdp7 z-kV8h(B6`4{#h1RD&iuIC_sLNNlh^?E zT$V9;Rjb9Jvi0qK(dz5>s0#P>#@vu z<4v>)bs!t4^C zL^dG#d`EBD*D+F^yec|5=9WzZm@^ISGGiQDeX~_QwI}K`ls2c8I^o)o{&-P|HZMDJ zYqaHhe0_oWr*qG7Mmg3^3~qDydy4jZJy0WD7;2>Ga#~kuL(=lwPp>XZo%0iNChKK> zQ6b;uL=NEB_Kl8!Ev=y^)9se-+DP18g76g)HYp^13u-cH|Ka>sNr+i zdn2ec=T$zTddO*aAz+d+vFzX^v=}*@;dwl<18F$5wd;L|bBCMj>(`NaxuZ9*7@RWk zoyll-6Mp+p{wg)S(@AtWyd$4%$~W=Rd*YFY_M=3ruXzvE&R~jOH1`WS(txlGb@h%n zp+|G)v7PHz(X9v5$vCBT2FHR4z6=6vK0HB9E&RNc$?eYN_WnlBDq>xQdNDH5hP!g4 zAtUl&ZFgO=3^Lltq;9>U;c?b*M4g9X!Ptc<7DvN3a#>(=d|v1iIghLC@AK?lnr>*L z*3>L@HoqtqS|>PHaT^526HHcVTAu8p^BCV#WIq=gQ53A>?A2+O zgwvTMrgoObWl77#n3*{Qo*}Xp%PlXJomwM~4i#YC-Ua&604BFVDVttd4!Db6GRLDL zX1(+Ir$P;k)`hlL)(jVatEB;pT6wx_^~605U*?~EulTX? z6XaAM;MEt@M9w>0UJ0z7uW+xf zP#Fx`?>#^jqPlq*V8+PONUQwk3`K=4sFLa(o=z;gzZ2!FYWU3ub`cw9A~fA>Or!JN zzNWpS0Vy`0zXslK3377ieyW*dT9k$x5>l=id5}NvJ%^oNo@qAkUf3~aa(lp95=HG#z}GqGAb!?`W%5TB?4B^l1| zl!!CMwxeQ6U%$W_?B2Au=Oy6s;%$@skDqyatKQoJO7fVPfITkhD4jG@;e>aW5>4jE z(9h@GPnKbqnr7yyIs*dJPAg!mds9WcA5`KLkKV#ZT)B6-PsyX?oC|`_J%%cMELu5{ zt7bjJ%gayUv<56V1TytQnhfO*K(RE9JVOE$8YSFws4GiTUCh!Qaf9a?FM zs&h5yZML5gu(zEcaYXu3ljG)xW0GYn;*p6-lTS5cO<_F`2i?$e=pW$)4#n zkvSz1;pC>ZOM@$JaMR*o_Ef|?USx2dZzOo>Mby$04}ziaQsZ)TYW`bNam`qzZF=Bb z!&|IUE$_;u4_#-bpdxRX&W@-IsVLOutgW$!!WCAcVX?DtlEIyh!tP534*Y5YdU6U$ zO?>9{m8F*~cCDV6e&^9D4KH<^FLoSzw6;39zuD1cUqNe0KUaIGp^G{?3fmq^1I%WV zTB*CtPt+nY`H^|}J#UMN%RxCsDSleg{`$HiY>dJcZi4fbf~BiMB8^<_6(0*;SAJc1 zS-c>dJzqrwGKxj#@AkkyM?5gl>A>AnX)8(-A%EGAAZ>Sm>m`eGH9YNEcCKE;_xK1P zJ~(phN@7+!_2lXLd8tZjYEgYmDx$wyq*4dmVfYwd2X(2Id$7L$N6Nz(1vJ=rsa*=SYrK|bq}sFHW&{>iR#>raDUg-$Z#twm&f>%nKl+g|EI zWvBNeLqkKOT=L#&;nT!6-w*Fd+KH~RhO#(St?J_X!Nt(Qa$Lyh*olU8)F}8M-5F8o zKm&Z|!G3zIVEvI#b-CRgtpo>`^3qF-nS|tmm!(ezX@K!;#ER3bWhWupjs~#C-^TU{ z4tb4xsaVa_Rq95jtwa{&wJ)F|Q_WOoE1hV7A627}1~BGKdVbtRgf|=@!AqMfGQ7r) zH%}+mwNdx@mrhZVF>5LYp%H#3HCIkb;zK)>L!F1E=0fpah=o8wVB%(Q>P*xEc4>KL zJ(I0&Z^~fkwZf*lAz|ZTid1yAQ==??xjd>DYfn#1gi=D~F7u9x`LI0h-q01EUMq|J zu2j2UIje~m1D7jZ;Uo;jRy?>(1D?B0NBGcyvJ$_RyrG$_R=oCLpq|Q^mYm9k@5c)& z^Yh`!(*#sonfTDcdhjyqOfkXQ{9O|Up<7a#(yA5mA1!K7FOezsMe?Nvm3XRfD_+`0=2oD13<{X>=1m!eL>O%2-ny5WBK-G!x3P5YwC z&}Qb~Bg(sJxuJWwras=LskqWpeW`Z$bsy}b!m{pysA~k2ZiUK_GbPA>xxdrAZ#nw8 z#Bsv6={FGUc;1Ltt+baiR=85TPdRSbfeS0Z=}Qt=@~&F;-ouIuA9GiDK8mu)ozg&o*ie`8msaED1Cqt$FNRP6uClIvsTfYJzt8J^Ua`5 z*SId*j*6Pj2=A;I*HIK7n#q1kF;ffa79gAVkVWcZBdKoX{;x?e6~*sKGbgh1#zIAO z(%-LFHaVbS%XK>C9+mBBKCg2L6;%tby>n32;1!1ELN$^K3ixGV0Ow=(64Q4FhF5Cgg+n3?pon2dX(<7O)Js*pHZ~HxExL*HYQ| z$3FGJhsPY3-uBtpo|uWKzc+2%GdZH?QqDmxQEz)i(bSuN{irkl@H>XItCgLRq6@i8 zMPqhd(V1&BAd{?QcA?b)b-l`78lhaWUN(Yky*N<18rMYr)#_gTc`+6bfpnyNz8X6g9EQ70y)@DJg2{n1Rd!@)C%swsg6h#s?ZT>1+qu*k@OR||t0O!)le-K*oR17hwkY^mnMKKuS{<{RQ9q?ThDBvHSoP8X z1{%OdsvLbV=PKP<{-HX{$wKIW?=JPKFW?+yES21TkBnLO?$#S-pzth=g$d1eaJd?p z%d{2tdT3B&mdBQtwrfc`i0bhT&8nxF%g}&TE3)_TTgMI@YcFk5I$)ACr=>9HOaqQ| z9?2i>H0=J;l828h@E&AE#ShuwUGDbKfM+;7$v?h}dNm|Z4ldFRTi}A9Fi<++`T9u#B z4bJI6X_7cvM@-|o_pN+jKhQGRUO~ayQxAeAXr+v#>5}WKcfg313Ys&TqXLwM69{P#3wV9sf1z zauK~z+8o*%QF6mb|LmBLd(qmYcG+%1_vAwLm`a?+~8 z{W}@1>L(l;UJ5QO$KkV!xuW4P<+x_7f0S5WL-~jI^)-G}PP_5< zQ6=6ps74n}N1_t!jB?>tVl2S$#3DT=a2BQX#Lg+)XTl16YfJfHuqzWeAqY-A&rQ*K z!PPK(D$5+}oPditKRijt%TtrT>ZxY$plhe43chC@Go20*d+@sCWLW5Sd#cqO>kJi> z6_Qq#Y;L6j3H{XNmc>wisV^cqdo>}V)I+~pL zy$J8!t$)PGy?gzN;+0`icCNAevUVMzCc$aCeHy>qGT^#07TlOLg+}6bR}`+ILYHMz zNl&~(9u)W1zeWo0UM2dGASCUMPRFo$k+ht9j1BiU=8}bVuLZGKm1^1#;I=ddb@2;{)F?-cx z92l3D)|h3jqanDYw$|^&Fvp9CwhOB1z?hbC4O^_@;`(AcklNSk zOzX$2$X8N=gyK10TzDU_jD?n2 z{AZ(Gehbr<&PyibR^r!)i)z(6c3%Q~%4?%+;(d|3iz3663)favdk)X)IDduJOxhW~ zm|h_X1qwD-6YSrbxDp*|dxEuUUC^D6?=coVl?y0RBaAr?%vw6H>XXOaPRz>AsQ252 z)IS#VNANx8KDlIb9z7KeC#M~GSu@thrV$z$Vap{`XO&llRx6J>DgO?GADM}CX_&@w zPvLYd%d7Tb9T!2FLvJ5fUl%P3eUNE%e9lE~&*KjtQ>)?v`E1;Gl@W6bSCN!jfpxwf z7Y*jU=o`8NGy=(HN|-smpbr~eAo`@Vq$Ek>Vtv(X_fxWC==NlzuE9ECM2K7dH|ieA z98W83LT&D7kUw&z(fR$Ve=*!?fhswb{o?SJaN^v)?Z;2cdCWjvGAPir5m;*SoLbJmygssj?thxKANau30)J`FgYR^RLUP zPr1Ebwc%W7z{@n^(l_u`VeLyz)HPDj;@vxI*EA}_EVzq%mV*{Z{2Udd8BPq#4@UCT zbZlS&HQrV;ZS{S9gtXv=$jU|cx(BzZG6kF~QRwASF}dc;?oN^ylE{mZPskT(z*UiC z8o;|muH`i%WZQXvdq#fl1z}<7IayUUy(=DEpuiB&VJlP{kK)e}Ez|skbGQ>#XHXPP zS)@Sum*-B%eqt>-KRP4CEV)a*iO(#@#zHg23v4q&GLdzi(RdoLdtSd~&-L@CqhB3S zSU#W4{v2nRF?TVQJ50Z&F@uK~F8vxlOkE$D3T7U;_IS>Q6tkW|QXwV#)+%;Yy2Y_O z;Me#sU!qh#^q>LPD#vZ6$4MR8vDTg0riF#2r$SrikYO@jI4993K@qZsQMOJ&=Nn6l z!%N?ZelLt1!XtHH0v!^ztfMQ0trsr%tQ0PLlgw!Vk1)6v#%4tWEC`*{a5S>M4CjJo zm@Ae~iPv2@H`|zAJS8|5I+A=h3wNY4FWFSbUZYSM_Nbz?w$YIoD@cSDa3UScHE00A zFJjbC!lX<=e(^c?PKP+hKGS4X&B&xF<*|&lmyj!|BV&AKGvbEIHh8-`YhF&CMtUV%a$j<0n!^;|S!7R>PCzqgy$BRn6Bez~&QuSJBAlTKc5{^X>Lsi0t zf&z+P!V|4Nrx2?!+EWp6@CSWS-W4Kh{hzka%#fmOc5Ux_8COF-ePa13rdYZ&mujcT zJiM)zSaeCNQWROI6&DPy8EBRS_qh>sXaGOXoysRz@bq@P1ujgd2a*h{YY$sm8my5` zBw4O;%$5lg$q8`3VKZ%mq1mX(nucygOf4FGCuwN4EvYYtPf$Ht=N4+3-4d;Qagvy< zw_R3YibJz#D$CMC$*pEh6HXQ*5__*KJuVJQBxfl`mElf;53i9UExFOA$dZH4bJXmc zZ>-cV$l#|b=vwkhbo%nP`V7J3zV*_+(@{O@=s+&AVd_dmR0^d|CpdbcE&7{sZ9EAn z#52c44c<;U5b6~A@x3Z0!=1szd8Bp-z0{3C(tvInkX^xEgfpL^I?1FO)}m*qW+j~M zuR@z|Fn7(a(*XRy`fcxNs=4VNwPYbEAWA5@vQ<3p!*+90%IV^Q2A2r5k-4|c^XGX5 z^GPLm>(#nvb?w|e(fH-aK7Vkq%jqXf*`yJIztl7ts&i#5m?!n?awCT<)+VbP8fL)R zc2TN|mqh-Yqud$srJ0BZ8j)m^_*N18w^goeH)XV~t;X>rD?**`gbA)>S*kGB5y?GU z(Z)Gz&!rhuqH)QpD2FQ6cCE1e6&^!A_<0eTAHC*HRx)g!jw`&T8017s76o)jNO?@% z{Mo|mc;39Rh8csQZf(pkCGI67R*??vH9ouhEJ~17D#7 z8^!|{4SCD<%ssZ$Yhp3Soig)fgnj4jLTkyzXCU)lR*s}iQ+1ZF2y14-vFNk6ubzIg z{p%>a}`pqM7NfN6PIRO5R)>B@1dRy`P8BfFq#W`j!As7DD_aB|$Vt(Yb z3oS0SGm%a=gPO|xyyKl2K?#m#9ND-uXhgcU7lmWM%+o!dFn6 zPGTQQZs7kofna7!t4L6}mixM>Y(~AExM+eaD`cInyi_q#eO-?OVSo_FH~2hC zTUOb6z((d4vFFBGQsL{@uZz*cbqNzu$-PB2bC%?Smj3x6^0g6++rt=*)P$#pE-9dz zL-+8vBpR8$hL7BiYnd)y+apT~+F!D>jvZWXvGJW9k?ossxUWjB&32wOX?s)JWF6Ix z1D|3k6dPU|@M5nI&oZ&xqCd(m&ws6`_+od7+f9U?@<3I&Gg%O)YKOM5UmR>*t!c31 z?ToHnwvATBeA5>#u)(Gr7s((5Y82in6B22QDbW(#^~|qe;K=~Oth&8~1U6rXg;@a? zz1c~vY8BOe1nhPHP%n9A{O&s>wgbg7vBk?MQfOqITo+~?xr{{4xvlRbH?MDdLjyWh zc9#fYjEAxC_@0Q@g^SS+l|3j~lv7SKw00Lu_6;ViVsys(Rd9LLBokZW#cRHx=c*ER zEPp``)>BbUwpVR+5j;8gIY|?sbxD99HQHkH~jv<+e zj{5dO9nXVRhRWO?)%nQ6ACg8dUyQvQpV%81Sd5Me#M-$zi9lLk2dgSHSBy@ILxx>b zZy-IE-Yu_*q#ka1)?6%j!@DQ<(Zk!VBlsDuuH~-%%^AWM@4zZbI! zVrg^Tk~5_y`}nMmBiU|#twj-BsUEX>TTzJ`4p@nJa61(r+J_oWV~3^{*nYrr<&Bk( z_uWSE^PBJMWro*%i+@uqI^^=5Z_H(hs)<_mU9OY+l>8>%(gp{FnMuG}(C)dH_gz<3 znHFl?r8nXVuE&%`s!C=EiSlbzkt!d-N05zx(1Wk_L&BnI@b#pr8oc={awQR4bZe{x z4lcFL^4s{vqj>A?IGk+SW}|LjyWVB9Opc^#9;odlZ6$xL!Qnz2NC|kI^q7Mbo(Ihi zmxg1B_=5}cJ~&iEPn6Dpe=GR!l#Ww3RW;{E?0m>NYYkb8|HVsz%W9UL6-iW{o8=J? zQpgYPH97x?x{G&$T>OJ7kB{ORmE4Erd<^*w`ua@*Ipfo;`ohbau3JV=wQF2v?1d==vj5;s=2?BvG5`pxe{*f6 zp^|)@VwXKl{-jEdtTQ)>?p~&vM-kF)ldNV(ZS_hqGrih#Td+k#kVVPh)JTDfd(~r~ z3L~QKk|NVj);w*KmMZze8EJampFhAiGP55Dlu`U*0Ph|L-y z&TxXpN{!DGFiOby^D>@_Ji{W@>TDOSuUr zOhvN4nVVHas}|ezl#bX&X)V8B;L2COTQi#yGUn3Yg{t(ZyA8fj2+Rzu-}HNYH#Xnk z#8Q5HNY;A<&Qr@IW1>NHOMje&H`>cc?aJzYc7WPR|j-AFtATjKhhhbVU7JC4|9uNeYA(~@D0wFLBAcA-od87 z9eP1%y+00g$REdX5C7obK4#t_p}!plD1ZIm4zM);h&}>GdjBkrA7urA)vgC>!$4Qb z(o;;#6NB|QjCn_QZX8BI=>Nbw;{PAR9SQQZwn2v&?y>Zz*YNM-h`*=UzvEj5`-g1s zEyDc|TmBBt7K(s}V1o4BL)_^(*ih2K+amZ^+o03*z~G&(HgFu_^+U|RBx?;?!2Y{r zt>FGY_!dF%!wz%_8^>075GKIR2LVU0DX5`sbbW6<6|qj3E4 zp{wv0pYs>r(%0MPZx8lg9-wZ&!_#{V!@>_8epT)_)uBNk{cOh4Fub``L}ZfHQ-;2s6!yu3gkfA9+0?1Bg6 zC+AUO(r=E!2Hz39{tBbK!J)VOpPUVu-#|A21ONc--yRIpbnk!bMf;!lZIlHoUG}ej z2t5pD6Fh&Gn+ToSur&Trj)HV2Ll}7Zp*`IRK<$5=pf&b!aK!KiPdC5@FahgEAEXcf z8szzdRKUh~;tP%?zCbAGwgilTBj6ndsDh_Fpa`D72Br~twcnm};;#U| z`G1BM0FCvhkArlRab^z;7VR1QFFhL`0t5Xv9uD;G@Vm`{%ztUKz>(i=o308t68vtu z8*b)ce_uEv*w+6zz4Jl-kq*;_AIRPgo-7*+kFR ztE9MpWd7(cHkfl3PlT5{c4Nrh5{d{4`8UCBf3g1=oZZ7)595ys`m1oa{g8je=(h(L z1u(;)>1Dko1QP&0z=IKgk7;cF;NbTkxEvlEgXMqVvx8Oa^RK}-`s;prLI4MNLUlfE z&_DVn9sls72}3r*(L(@|^p-~N91nk-kaqw?8YDra06%E?zljXkL<>i1wI^hBCa3mr` z%mV@1d}@g=)i#KW`Fd)J+bNsMn+E71e0+~a1R<;<%&g%NNVvMExQ@2ip>U0GQ~(MQ z;w~1B@<#`2glma!2-g5`6himbd0TwY#5OjTVL zrlO>zrY0>0e*0KnPF__GCNHC)pdqiKp{ywO^AHD93-a{Ru+%sFnHK2M691X0u&^-M zFhyBRkhdI6U0q#HUO`SlK?V#V6MPCC;vO!84&L)if<7V`9^|`WjTsW<-yvJ{}EI#2;mNz{#%1)|G(<=57tG`N?Gjp zx2*pPkN71TrYZvir7O`zZ+wFKXZm1U@dUvHzk>ZQHSmOMcwvH2?qE)RQSROdIllme zx478v0@OGTf@R>Rj4iD7^nJY%!C*LjC4HEou7NJhz(7q+Nks*w2-DS9P%xBNS65Nf zRaE{v_J&0*SQub2DE`ei*3$#=BwoJ$phqx>#Sk+#&{Kh_tEk8*$igGMJTDuE33$;sVK|KC@Cm;$*3u~tIK%0d#b8=dLq=6)YN}T zGe!r8xTE0+x-_tgWPL$N9x8Ap510~IfC#vnjFN}4hm41pvbv1BhoXm~nx~?Qr?SGY z_&*G_-TnX8N?%V;MNRLBimtwrg1(x(ysm+PqMp9K!4ZWc@-QVuReBczOE|5W;#-yQ7@Y9#a1qFG$~zlB{oBuDRh{=T5>4eCcSa(^Yh(fT!x`UZoI z?bJ^dtPp{Jl-X$T8t!m9TnDTb_fUkVxY!S-@4qQKgqoM963o+GMqSklA)}gf99hIH29_z2F^BV?>X$j_i#50OLIfx;|3d(XO5%CebE>w z2)9Im_-Xo!xxIs<7)u8Tx7-5aM8OHMJ3KhR)XItPp=dID2G{ zT8N4L;s2MYZSa5~5J(NN07EN!f-_5yz5vqxVIcu@J{={u!vjgDp>&Anjv!D$kmje; z-alwMC~k+x5Be~j_C%pUKqZu}bATtxlTN<`=_{dFI?$5gI7nX#^+kYKScYDZ-s_J= z`GPbZ$-4uEa0kJkjC2Iv-Vg-b2c+denj^^C5=3G%9s;*Z;_&{9_V|kq0TGX2SnzXA z0jD-FfMWaM2gJY$wVK#bM3_G!Bt*snTqJN0@&u>wr~r5LDFFD9XL>AP`+t}jZLoh_ z{!`Dt!u@9?y>5T_e?75LXAs`DKfFIN|L`#BAetCNO*7p1!}CZ40Q^M&;2-?M+xrk) zhq(X%m7Ra(hnL=7{#s!0MZjh01^WB=-v;;{@_$YIm7Xj;z2CD+G5sHqQ89X}hJz4L zY>-$mxJH8zllj+1{NIlFms)@6A#I89LIfeexu=*d*vdedJy_jnPw-n57_^u#`X6)O zza;!Oqx~g;PX1`uAi?u^9oXR}3vBJ&0Wd7I0gOEC0E6=b&C1C#^011b!afXYGDpt?{K zs5R6D>J1HqMnEq>CggbCGe2eFnQ(NM4EufdC+x4;$JxJgZ0C^T(Bp9C zz;eWKWOF>@7~uHI$;m0fd6?6YGlVmaGnccGbCmNN7Y~;#mob+oS2R~LS0z_B*CO{8 z?tR?4+^*aa+zH%e+@0L>TeobL*s8bHeQVU#Q=i?6M9g;hYclhnNwxe)I$Bs`s zx9?QiX}dFgXY$Uvo$q)VcqMp^dHs3gc}sbTyktIMK3zTp-&MXMzHYu%ej)zD{0ROS z{$hRtKUqLbz(4>ga8m#;Fe1n(C?$A8Fih});48s-p&de+LU5rNp;Dp2UC>=pyDWD_ z?#kHJwu>YzB5WiaAe<=NC_FF1D{@%GPvnkBy~vCxkEph&ujn1o2GLouonpFT{$lsV zUW$F%y=(W;-Pqlac6aQih)aswh@TTL79ZKewnuG`*Pc6jUhMg_S9GuG-qU;Y_YUsc zvQKTF&%S&6n)j_rNJ`jAT$aE~OiS`h8cRk<=1UIm=iINeKX8Bg{@w%32hudb!oJ8x^$lmhm5XFs7$`hxGb;iaoKaSc-cj{ zy>gCnH|3h;*5#Gu{pBCa55cy>j=|2sYG7X!q!i!^$qK!SoQj5u(TY`ypOp?OA(S2{ z^(*rzn<`&cexXcNQB?_2DN>nH-K%<1HAS^gZHJnL+I6+p>P+fK)T7m(s(;r|(FoBf z)mYM$(L`$IX-*%KJcKy(_|SxwxR$%tBdvGZV%jIQA8NnT*{$QQldkjr@Sek-hqDe( z=^oJa(=E_lJR*N2=t#wpRXq(ooZd5i27M#_82t`|?FKdmNd}{a;)dRa`G%j2l#L>d zo*iX6YI5}E(LQ5gW4Ljy@uy>|$8g79nsAs{nIxIKKQ47V=y;7O)byC?ZPQ`1eP(Dg zyg6WQY<}B(#6r>{(4zJP^9hR+$tNZ)VV0*Yo2_`P+^q7fR;-U$$6F8C?6<+%ys+iA zb+*m5UA5DEjo`*f}c+McS5VsIhURqwa zyr#Xiyl;EY_~`f~_{{t2`6l^(_B-mA=C_J8M`j~w{&xPwC|1--R5f}#8i{_15y6CG zx&jUcTncy>s1bNK@KcaUP*yM`*d@3sWC!>%)rQ@Vy@(wT)ecP#{T5~$Ru;Z3939?v zO6t_rQ&SO!5t)&Uk?_bDr+1$|dwLwFi+dCWiSmeg5xpn+LiEQoMrU%)vYkbqZ9gY} z?$){G^LFQJE(l*Zb7A75(Z&2rT$h3_^udc^<#)3gw(0H4J7RZY?kwMRyZa_V zDIx71+db^PclVFquS(pTcq4Hw$tQ`Bd?dLzWmn48l+{$v)b0m|9~7ktr(H`UKlFXr z|H$Z3Wx7OqLI!h2XvXAY+sDnBYMHrNf?3zHsM+Z3cR7|hFLPCMbMtoP#pgrwvH3IL zrWkJv^$V+tWQraY^A=xw0zAP!nJqb4LM$~YeNm=XR#d*PJf(uCBBl~jd8+ag-Ut7# z%Au;O`dIag8qJ!DTG`s{r@Nmf*X^u}uV<^jP)}=!XdpcccsBps`}xERw--Z=_Km$S zPrU4SW%BBElVMY1vu<<4YpvH$-)Ow4Zc%H&x2m*Owkfw&v@5q)bf|PxcB*z(y;Xl( z({-q;zFVjJd5?ZiQ?GGvE5VG=MYJLI_c`~y>-X%R9`GOdJQzAi89Fn}G#oRsbtGYQ z*J%3KfwAIuD(~vX^~c-ZTfHBefKSYQ2>!74@xmnMWWto_RPMCG^wSx`nYXh}vmfUI z<|y-*7Pc*&v9-!8&o2(DhP~f+1{_IM571W&WgVe7FK2^#w`qN;O?B@u9N^X z1DO7APtc12+*bm!1z=;}3P2$Y;J%a$bd8|QTd)vt$I5L?+nIN>@Q4GfupPPzdvuOgpi;8}i;oBQ-0m3)#=3Stv@-lZ%#Zl!YW^R0A!>tF*zRU`O*8(TZU(ih$D zzj&SxxqShVQP$WqaX`)MD^^Nf0$JZ}3Ec{f&#Y>m3T#dPNH{ss>#H7cW zS=l+cdF2(A_^Rrfm#>#L&_W0#`lMj|&E|2N8m_I9%b|7Q(|*0ouJ|HBgO{vVg%OL>VGG+^P1==>I5 zZEF09zMA)l*l4S~p`&8S+j0ib+}%@S4Y0n8=1e+eMK5EB2ZLCvcH76Vtl%4VVV7L1 zwDe)ImKsg1(Y>31d07diG(Ex;`fIw_b4wYeABN?Ji=%Bsl!w?<1^&;O+T5D)A-+FPa|6`!xk zcw+tK=jH~8)iG>(pzF1%pwpS(ran&yoVdT(F*k=UesuJ~$)U0Eag`5*h!ZKgaSz|v zzPiyuXyNU8ZoH%H=u0NUz1+wG6_>_9gp+XHaLVZh#b;68>9LIwLn@gHXrVI}I*R5` ztk*lP0PC0$Tz~5cqt7}MqOD7J9Zv1Nbx2ze9)gZMiLEzj-sV}Dvk*6dyIS$N%4&bN zREybO=;yunEDW~1UVZX}`njgR|BTd}Qto?5^EMghTME1nKRuh4lhhe-J|Lt*h>Xf+ zefx4#dgUnu-P&_1AsfBs6)#NloTH<3Vc2ZTJl4+axq4tMDSwxcYmr%l%q`S6bfM zyt*)~M6!NjWW$&z5j*yVr`h{d#8=OeFqhJniQ5Ya#A6lMmV=r0p9v|&{iXrj$G-~4 zeJ@7|C5-bayO;;v&U?Gpp2ON|TH2uLX66 zsx%MZb-7vk{@K!luDPPBj8T`uz6$IOEOj3z(w`$PQowxWPC#Zz$QMGbb;-r!mmj^? z^mUOkyz^fB8Ip5jNnR40*D2XScJx0P(v$%XlP9t4vo%LQhD!rA> zW`R~nB>7rEI=Ko|C#GJ}fIC9P*%5jX?;4W8eME&D>L_|SkMtmt#m*9=7_kDk*-RfXzGo}0Wt0L~)eSJTajG`H=f-cG zd25oP#8P3%$!T`9)^7lxD;+vFHdpuUfu}J?Q22HxxlwB#kvz7$JNH^a&kOI3619$2 zjhp#4)<*?*ov8O-!;J~J%$cX%ty!wBmo>TivQdRSY*D6U8@Tmvs!q*HovFS9>k|{$ zP1v3n2-v8pM$7`~lvLxX`k}0kl*cg=06+T9u5=iaSM2jQIT;5?#kWw`$doGo1flDP zT79Lvb9M6lkM%eeamW^a^YIgEU64?@{j?#)+jTZ)UhX0d;M45mJ324n7U#B4p_V+`Oq zZ`DW-T^%Yb?i(Uo6Zd8=Yb^4JbKni~L5{AT(umgmbxH9zRRvOFW7a!9@thbRmb+>$ z_4u)`(t9bKRK!s5;+RMIn1690>+{bt_nY0c6bxOQBX$C5{X5DURNsd;93~MP5 zX@w2it6pwVh-432pbqHqPmV@h--mPTQNDao;y}0$iz8S6k7dw$|2t2TBe_ZYd*AF~GO+WOn0?9nh(B$y)w?1*=zyH-F>5qLG)zQ=R9L zaX)c|D5w$0qjHrw*0m$FKXkt*GRo;=S~{LppE zgkxQ^Vle+;W#jtg?a2F(xex*5m!Uy(wXh zQtM`aVCT`@2C=6VFIwKns>tPFRmxO+aYjeBqcd20Vqvn=Hv*YCSuNZC{$1&Lm`zW% ziJyfs@Bc;JS+_+2c3XcG5T%rsM!JzM0TJo$lJ1zHa|i(iL~`iv?wX-Px}4nrwS;Amq)EFIm!;R0WWQgfjZuBwiURDt0oFrJ zOu%V}gViG$$?OtQs`25Ekp(MzUYAi7?X!2v9&w`_t>$5$V){oP;fRONu4{<2X_8a~ zM#86l!>>E@osAd{A4{2kT({-Nplrd{UT zlX;kGXXPJ&qRoi4^R~j{-s{w)1Ku|HY;i@cnOB?4;UTTnPOw_FfhG|S&mm@5%vx*U z3zpGk7Wh1^IhS7_#w$&W-!wnxY~2oIC%)J7;u|JpD1C_&wS{Yf(}JOfH5obU$spa1 zSUoaAKnyd0zgJmxwwQ{((7*8n2%v>jvubpwYfnAlysybEC6l?&{ZCGgS6dX@b(c{X z-`28zcEU^yOPJ%u-0iM{+^qPBuTX4dCY{ACJi^Grg3sJye6sN&w^B3{Rx=m2BFFRW zk38bgq<;YA2@-{33^xZB49A$SpYFPMsFe|?BM+QSzo9kH;|JN_V5YrOjpH?yCuZ=_ zXgl@vmXx`-Mu~K_4f5!u)I6GJppjmfngcWEq-QmNpg&6w-$}q|lLFf6qa01B_KAU& z(Z)?t zZEj+TTZ5~cM*Y0+@du`w=V)k9az0CPX&)QQYCf$60%ML3O{21+zrwTlI@khb@68Vh z&kuvHp_=3l;~6VPTYJAJMvo>EvYZvv&^;0cm0+ww-e*LK+T%||E3eq>Y>YGh?{`*6 zaLnHG08OrOuYJ2ZRQa+_)pE(^T;T#$<)M}?v2g&<+ZrkvjU9MZFYRJ0az=iIrCNxC z#aBixqnqv`r3;f!!2#!!+dHhMK6pc6?=XnAdGZ&lBq zlppiKRP%)M?3#cC7ZVaDYio+%!9@#oG=`^u%!~H|uZ3JGy^lBzcCxNIx$I}dkNc;^3W3=I@XetNVmtZrLEPq3uXw6q4NLfP?RNb^Ij=<;+8PfYKotdeBX;8tnD z8%~u#&2mU&v{h*`xuV^6X;m_o9eH)Wm3*%-H~n`bi1@F@1rhnD^W>;?oU?xby`9+w zjxtca66dsR7huET00vRx{wzCi!QiRc9M<@xod@H9ydD(Qr`6S zPwqPMKtL>eX$zcq%&e3R(j3?-c_FWq`vyuzM=1&^Flu;MUO{K0C4X)fe<(9lU-;cj zDLwwg25CE<;7GD;lW%(V^>0QaY^j?((zZ|z_z%Du^zES_n_}zrJm=Iy5%z~!s+zN2 z$%H@AC}|xpkLt&F3rTOIKw5P5;$vx8hW!cgv}W>bm8h9iPD?w+PG6^tD9!7#t13s0 z^D5CN6kL3Z-&JRx*Ch-=xRLy9gZClb?nR&uDkk{*Va;yI8JitD^tJsl%`VkkBCmF3 zhdF|%83aL*N=4rB7w3t&x4FocRKv1>{N?1OdvzXs%H@iRR99&D;Ngrz`?lHyhjx12 zfqeb9e^0-EdiyvOtYtWS!dgKMfG zplz#Pq5&p3q0DJD=;J!p;ez%W^L<>N4BqXhCpn z-Ax-LHx4{|Zo%#q|LIO((7(C=4<#}y05LirkX2xwNY z{m7lW@mgVI@qvDMaD+$%`5)R$-ET9Z{Ve1p6ob5io%S6hU{CA-4(?TTYThPr6OM)q zU?cCxLC@_A*d|PC&!vl`lN}h?)VGD4M~GE;0J95KU@y=tfwR~@ySKe9Hc0H55Mr?R zx>y23@+ietp98j4X-dXIoRfl}4qgy^rGM$uC*~hXWg=4*U#DNa1Iq!Ptuw=EQaDd2 z92aw8pD-gH->R#!;Ix9%%B3*M2ioo2sQv-o19$G*4w2c*2eCOB8C4eWBm>f;@v6yz&4>q37c0jD>R$I^ zq|Z|5yQ-rHPW~r&aC*9;L-{c=lW$ZLdD=F^cjnzTC8cbKAHZejDu}fKHs!!_61%zs zKjFps#v~M;cya<1F<#XU|Fii$`+WtR_F3VyPZ_t0iA~ysZW4m%?V@N`V|g+pTeM7c z&1+gmO-V)hiM?g72EE2P)2PzST_C2PS3HwlOOpYFAHnPwC7z%Ut61bG!_`&GH{wlFbk^>~Vs)FsEi!^Fbj8_vSUsP}Itg7dn<=-U z#oXnB%H;~8((>l&eP2}wb?X6TXvgBx-b&8QwC5q?x=lvE|8`NZRW8R%(K^tTzXr_S zFH2aT=KL_~%DX#AD1gC+aW~*bDSM>K_YupN58<;E%Re3cy-r3%k3hZMm$G+5Hf42n zo+n%duR^n|N)q#-WPj+ehKXddmpHE5z;~~%1sY<3;ZE5IJ1+@g6;+6=UH?#eWq*YD zxFOm!ms!`66`Tv`g*wH(Tm5_q5ikcanBwM{$!nY9B^Jq8DhpsGY{5Ie-;cw%?}WQ3 z-8%Nqsuj5sZwk1bKmqeB^sQy}SxH}y@!D1eh%@jli&xw>yoTVZ{+w>o@iBxNj0z=O zMdUK-9Z4xH1x|OFf(S+fR@vM-9D*8|Tym5z*JrCbJ^x zPL;jE$CT|4KUSN+s1S3SaQki|3q@Lo=!a{P=yS-~-Z7N(NIWU?%0aj0Ec*Ir!!s*` zY{MIy=dI@XEV`nJp1RIr6JYIVnrceg(_M zymeiD)2ntL8RP;WqMs76Q07 zGSfn++LHo4e?U`zWep6(^_VXigR-ik(Oz{7ksue6$c0DgP2K^*bkVNmlFs4|dfcYPdml)|qA(pTnJ1Po)z7tTLjpy@8WzQSZoQpbPN?=#R zRhrI=Q78<4F8W@RuG4t+1WC1Z{XJ9uJd8yk%HEB*E1v&@)YZmp*O(Z`hu$U?Oa2;4 z9UPCz?4DA<>#^5J;j3c3^Yt6=`vDlK<+bxrPH4yXh^360(mO)8%h{_Zk4GxGWR>E= zN!RKRo8pcOycatO68VaSWiz{;JdM?%Mf+R0Ci>Yp_>{R)7cOxh%b;0ZWcTyUH*Gx} z_C9>|RehpEnii!Lk>P9Xsy(xK`u0c*iv9vpX=U#+G-8Ytg-y}5_JO0tGD$hSokN15Z&|5b5Q`V7pTgPO^uE)(~Y}(1+}L-_L!|T(ub8 zWE6AatN9)a<~;nrsAY?B!yffc)>6S;)%D`fQRQPfvVypFf9LMJZGranJdubPR{HO* zmrGPlD!9fTN%bFo=vI#S+b&jk8;9-A*fcI}vbNL*GeO36`Kvq$*iD|f_GyJnQDwD2 zeqZ>ut&Rvze@k6@j>WR^J+FJKR4=$pKpgGrAAnsliTi@L*QqmawS_8l`3*AJ-Q^h6 z0)I%Ty*61LvG%qhf%uIzF@JHUEM|Xm1`=hH|8QF?!csAZ)zK|6$22wGUJj!u#5r5) z-?&MCY1Utn`@vS-Of1&zO(RpTZJ}D*xv6j}bQs>(5nzq>Jf?A`v@%lq9kV?77t$LQ zACF;4wfn!1rVyEon~ipFn%}RZd){}^|?tlG zV)RRl|Fqd@f8dp20^7`Urh!(o?+%a`N#qe_r#BTBp#>7g!22vyqZ9IW+3V#b&CNFE zQlVYJ0vqI@9tg`@-@&Er!rVp|XBW>pF%WTUou8S}`(Z=?jC~4zv0pbra*HUcn61pz z36Ga0HX%D1CZe^?lb9G2Gr1rXXqqII|L7CzRO<8Q4>(Sb*bKwfaMr_B;I_-~Yr*_0 z$`=m|Pb~71+tpzf7vh7p6uBh!6hpjv*49w)+Qr~qe-||pSH@ly_UXOamyXl_#8tED zzxn?MP3h`2UHJ6pVctNTFz*Ng?!uSme_{|@#uO;%#=jyr=Hak1UYX@e=r#*tXzK6k z%?UKQVwCZj&JJ*TBoFlLm+YP6M^22JY@@UmGcvZA&*w{eclNsVW`ThhsH&V|$MJE&6Wd08LAV(eUMG}DM-j2YIE}3`R@Q`@`)~p*wq%TNxgV{-AY%@F|EK7O8aly}Szl<=f z%juO0d_cqdY9+Q17X8_H#eV<-`!?9?GYS;%PTT7S(MYcEWhjx5g2RXK=)?4mt|hlQ zg@uRs=-zE_H5(mg{}@uv558DSw1#Y7aETxzm%D~FbUurgZP8WN)gDk-ZKkvAc&`Yg zyqpUC8`g96K}9G}oG99H{v%aMVsU3D>|t!7TvH$>x^&>^2`szC{KhfUL7Y-Dd5Kb% zKL3fK9N?w&E@D7KXhNd!+q{mFnjDt4&|p_o?YzhXy-?L@X+UXhBS49M;z(DXOCVV^{UX7#!HctY;41*7+fmyRBh~$lnyL3+A_Wnj!mVf%UoQo?h<6yOO z-V&6_y$IrlYw8cx*|fpyBnqVm>Lbs?fF39;dwOMd<>z7p@JQCZ$u(n?HRAWt{U=8C za!lvmxZ>h0qETU;=5n;gAVb((0Ce3nLtJ(F>aaAbfKGr#e;=TyWRp1j=T$S)QD$D9 z!iz1ml}afAUF>->xusQ^;j|jTQqHi`{+V*2c69&m6BFKbp23y363=Ln>VT zb&dm~&&k;i-af9_AR4KBlVhveM4&?uHT*=&?JPE|{&gEqruUCkN7wnj93tsN>bfDD z%wGvc4C1={Fja|$oc0}X#&E~(jAaiR<3RAwSv2gqdFkt zEcuHG%t+DFg0dg_4aHeXNNN>Cj^A?LDn}ahm%@DY2O&d(m#!5}(X7E5QPh#Xp;^cX zsPPKY@n&_0#sb^4Fes3wU}4wkXb5^*@>O7W@|N{l@bY{ zJm~Hlj;RY4*Qi?$*J*}Uj@w~DuKwQ+{e=|F>a)P%6^9y~*HLdj1Q71p3F&$jmpD3= z9v=QiNH}Pm0PG@N`4|EpxY5RZubGkjZW)$Rf64A;2 zOKgkmX;>p%&mnDxE;!_LAv~KNYT9{Y1}!Yh&z2nYE36BPAqC8FcLcbiNl~x8#fFcN zZP{RWA%y*B0>R5-Vg>qjD#Ei&^2jMt17b{C<1SF-p-1Dk$}YbT@LP4g5pt;BtTyS7 z$0Yf4_R{?q-#i1emM$!PJWNMVpP0({u2iI1s}z#Zzs;>tgI-Flhc>xO{BFDD$Z2)k zGom}iR?(=&tHfGp3$J?NsCL+a!ZigDjL~^q=S+cUgUB#2 zXo3)zc^lmOA;B!%$$mZa&3TBz$0h(&c=ox1NayT+wwLg=WVqk&iw7)hC4*E$aRlm*!#pJc(UZQ^&oKAXY{$$3W5%lz8voh3uprCuq zbBrzO2=>%!o{`HL`Ul9^+s_VfsfIL4NG}}y18{4`U#c-LGSCVRhho6HVYp!f}W^^6-B7a%blQ|8@CJ_GY zpVG0aH~8>fM?xYjB$P&t6X%SZ`A!Y*u9465t@Wc9T8 zflcRM^@9=Dn<-%F!d0`a(*~{~T-HR+M$c$s!#!ix3f|_FEtpd8V z@{K3a8GCWK0Gm3zME~kV_n(;No~u}8r>wR*FPqWcPB91I7Yqh|{So<%l7s=Qg9~jd z_VQPd>gs&C(u%BAgRGUb2;PIoL$|Km(YsK7NRx5u+``d4KP8LA@38rK-8NuWN7eV* zNEXeA7x;C5b9mWRxAZO;uBw>Ob|)@a*GxqoMed)Y@)~d3ifgIX5?3-}{f@^&wSJ5` zXZ6p54MW{+&N3{yTLr6kf1A0aR{shIrYlEkymibVI%j|DpKhp=liZ>xVZ7q|($QIi%7D|WLf6eG^7%4QH72j!iI7Jj_B)$^}@t)|RT{025`xTWaCK;uIJ2 zr(={Az`Ick?a1*o?O-aY_)y5$r};*}i|X`90VS3{$a}y+b=05Js5aZ}2WtsZd!*zL zDE*KNi4uo{Q^c4E0!}+&x+8_FU|68@s|KCg4dfAV+Ssv<&WM)Qw44~-cO``67(8sN z`Q)171NyL|qdSMXY?)zc=|>hewn$uDdqs<^mm;9)LC{hqtm2%my%ieiyAt!Y_-hM8 z91B$h1LXpxA3Ycwm3*It;ydTtm4M$U)gejUuDtd77r;;5Hr1#VPYR_1Wb~V!y>p`! zuf3qq8C@i|B?t&_*=Mu=d+FonQ#Yfo$#9`F(>KZxeodLv2oy8rQtDX6cC3J4b9it` z<&6@&!6+rl+e**$AcgKx?Rl>HCgUa#9^}Ie>Fcav#8qsKczxfQ$|Zi0it938h%Pc{-ERpim1H?$Yp7BIj5p@0IBQ_h*EZd^r7!stLm310P> z9dG~3V_MB5O25*a?^(pz$FX5Fc-MMEct2OgD{8@Nl!27@&VyG}*2-x)G2*T*heBMJ zM{6nYko@A9Dps&zSM8YxWQ*CHm=TYZpsu}wV}tSSDLhm6ZsL7E)U+RGD%73Dfg~+O zkug_*Sc;5xe-7bz_|at0TyUfDXvR6is+wBL_L)?~9{T*@KX0R zb}M~|JVPlNVn_MAMtiO%5}3SxL=ia5JpJX%(&QHbFlS%v`>0GRXLcW6_5HtFXmsgS z)_9jem3l@;uRZPU{XLD!vkw!TY7`l<3paEYX#AFCEL!LSAi?Pw;ws~gH|;ks#^~tox%j=uL~y`66OVIK0i0* zXJz^a03UNV>YsQ`R&`#vdviF_2ia1{2bn19VH^7B+$fO$Ve?y?bjCkv`@P`GXYBOe zpocZujv=0&81{5I7nY#;tvrjEpUO35%XTPw^t@tAPU&j)szYarhQ5;<^m`znLXTwt z*)Si1hYE()2XU=`_mKiLRgjfr`Ot zDb)=t$(`9Qo?UD1Ou89FP`OVnoyJO%cPiYs?2jD7CymCe>zW=|SE-Df>)RZioF6je zM2jr07Cf(x(W{b+OM@978Rdx19{b|?YL;yq9gjyQT-t6sR)6=0{LU@sCwQ|?ZuNne z2V3peJ^PgIsk7&$nDOe0^CejP;g%$L$d;6)^6NF0k2~Fg-#V{Va7+zJL%txM9%{~M zwYPG_nGrGZH{8YRWkGm=jUM*(jmaUL$~!tg_BFBJO!e|x^474jJpIRC^&Q`h*wxCu zxd>tBTy;X`^*7msLx-R!bw;G=5Lkad52oceCE z!e2J?g`C{u?*0nNH8b)L!1X##ES$aRFWH9^yja`W4c@C84pnK+Z&|S4SXt$NQKCbE z*TnCN%X}8Q4-7@#>LczJV0;K}{$rjhMEN)9GX{TLsiHP_q-Dij3J^UruZ`nx0V7GU zHsKkU!wn7JKvIzkrjF5BEX`UMeo*phUu;4b>D_|YjExw(&(&%VqKoD(eI@#A&(#LZ z?O%+gT+J0pFTH4NAgaKV>Qd2RZw<4V{{1z|}T_ zE|m9U>JLpIN7M<5hyfw6bEV1AepI-NlgaPj^G_DO%aym~$7bc#MR?mta-s$K2ZV5C z60x703X4mKff5jD?l`J>LBk4?HU33*FF^h>ML9C$Gen$&Ar~n1bxJXlO1i-4(IVNz zHZ%p*>l{V}Rq|`nzwzPH)!)&?BG8jf21*~%R|v0|;vsDZI)cx=w_kUk)DOeq{*f_hG^Aa>=mrWhHd1>DbVPT39E)=rMw|-T8EwLjw({w>K z^SBR9L{5hM{KS)sc3v#M(MyF5PpN|X2;t5o9sdM1z@v#htu5ruq}-L)Ap_yD)KRcr zhb~Cd16qTdBv-9)R@XWDEGYK0gJd-WB#12y$}DVV>XTTkt{Diz74t3o>~KNWqv-%h z(LidAq1mg9Y&*s5IWgLoLI!Jb{JdS~)I=?^D4o!}#efygJOddSFBS^1Sm#xE1}f64 z{L3BZtnT+vFgQiVPPp#9;*EPJt6-R1q5ICKfSLQYHf*P-^SGL}`i`u#39oH?!IA-*3~)vdu{DN+G|%7_^QiyfL$MG> z7kwm4*j#R;$~WMb#D$o^{Z#mH34Qc zJgaxWBanWWGbD|J?3d9Bk7ixijb(;B1`AlamNub}MHDm;W0&@&AS5(Nw26RZq#u#d znBG~uZHTywwV)~|F3$vPDZ0M>2T(uwI7h}c!uMq}NuujuYiG8Hj%50EsmbPGh$QAM zfe6hkxT{82xa7;je^glSe+|B z)-Ue3v(WTRQ#&1NE25-iVurfIvEe*no9-UD(j;yjHF^@zbl-%ObHBQlzg}=U>WNoA z9e!M0HI5BCq;wt(NYnZB*J|TWv$u^Kx$#bmolTVPSl|Hj`@&*-F`MO}3KxosuO;b) zVX|Q)fCzf|rBxeh=Z!G@(3`){rY|F5$4juoq6U~PWo5!=7~wnmL0<+ex=$}3*mCBq z*Lit0OQcaD{t*K~+%-QaK1rl!SbAbmfo>O#S!=Jub{EqghNmB-l@iCHtQT!}WK9k% z6{XMtLShBBkN9ya+NGfn3UoUiEiDy(9XTGHt^`J8G|i3y{OWbvG=%hO&$_kEE@^jF zdVEc78XuMkRy57ulB*_tq96if(f|IM&0n@Jawdd|yZY7<`~Ak?oOC8bV zO4r0-6&j*IL@%5>#9ZuU;@Ct`JlO8+s?hl&&sBzo3>S2;7W>cQFgRpt!W^J&KZ`qL6(JxwF$816g zfpMlnlRRZH%_3!wK@)k>$6)u9Hzy7H&;0X)_jA<#x=3UZ{R3qG1B}t+1yVbW#a=^0 zx|+l!avb$efgRHsV%RFpFzp*BkNwDSAJAesZF$ils3nx$l#2iEC!77g#_kkmwi=uX z0UKGk?+GBCfz2!>YcPy?U=Ryy+Utqra~gDhDkOB5;|FGTIMTK!D!CV>z0)YI1H4g; zoYF#X$!8H5&ONBO;!oZ(g*zXfOCSbGdQ!!$f666w?;5yPUzA|eKYDD&{Wgi1Oy;qpZ)>5 z{m5~g$6xQsMdyZO$ArZ;`kh2ZLXyelc`kjHIU5%FwG*}ZFFhu;rhB7`ixfR$7}d~u z=rWoXb9X-$*ds5;K7b3z;trXEd1fX)xId~=k)Q8#cHBkPwHOJcv-}#skoIvyL(-@r zF+XFX!h;ZkUAV)wof9`%6>2a30shQL7_O~z$^Qe;Si~6p1C$hW`~wta+_O&VrTqi! zPdWMAzyAjqG_6YQq#*eRusYpLMF#{5Un+K0e4Jj)LL_`}(CfC$MoFh&UdnZJ^ z3b%novv<$vx{`v%rzti`mA$Aj*Hg~>R*ckkN=BkH6wY%RktNbzsuS?GJ?BZMc2d2) zQX%B-ka_DJt{&9U0UD@22W;LT(?%c4D%wocS#;0h0hlY)Fb0RisB-X6z#2t z&+ccyTDJGyDAtHIQ)&qlU{-u1Z&_vR<1`-SX)XUKLNRU6K5^exh)6tokUkD)%WXjg#cbi{rTz zKGVkw_{k-w@yj@o7)~o9S`zKQ0}$5yTpaafn@3jAc*eQ+o~o_weHY3(a^lkV*JH_X zM@oy$(HAB)7b}L+T_nb(`??;EPL99pC{@9XIenyMaDrHJb?yZ5baXBe)y3k=2fZNh zh|^vWxWgt_#|trrO+5rJ<_Jlq%&$)PH=}eo{sCwuh$NkySKxRL-BMjVX-}SUBTUZB zwl;&*hiS$g3iY(vE7+qpFSRb_BpA)teBKjekqH}z$khWQl2g)&aa8@K^f%E%P(Y@p z4}4O=pFjON2(;L~vEIcUk!`QjvtUrRP&g2ipdl!iOGVpLU+Y9NTc4VSNaA%GdclTc zp5n357fUqkx4Q}cPFcsTb#7P2Ks-WMXM`+y%Bv=xw@yauhc1m78vIsfnf#|3>c78< zem6FE1v-ystWMcO4dDZ{)`g0CcWN)E%2hrgXTou|*Smb{JKMI83%uG_xNN&1o(w}H zJyvSO+Khmq-}#Q3tJ=ejPDuN%4RtX~!h1_zp586(8xcFzPkAhCJR0}@V<5FUMV2M| z0q(o*!!Pt`a%-%KxF7W;*JZ`?T9PJxYFrpzq&*_!29M_M>?gmfcs_PGzVR~(5MVX! zx!fsxM6#<*R0u!%Ec^q6^`SW3Uf)G5=`kNZz3tyi9nDXfhKJbN8d%Ob49NfZG?m7{ zq`BRKb~IPm|49B4tx_o(JU4tap*e^hu8EXX#T1|W+0r$S{09I9{HT`P3EHhuD^7V7 z?!bWFKIM6?S#2e?Xzl}U-%GL!&abWJOrUK&&aNy{lI+7pa(4FDw9^7$%`VM|->(@J z;T3*jOeUes3I;ObXtnBJ2FtA1X|#-~hgqADcL6Qm(`;hSNoJeK9gqju0^mTlXM0~R zYf|ZBoZUqH#0qsA9Tn6o)WaUcQbhI6;y=3Y;tE@J-HZI(w(Skt8J+9m5ml;Z2h*3n z7dOyrZ_C+qcCm6~J5vkm1*PBHXu0_N9TBj*Kd9vNZI;nvL+fb*zE-x!l%X$UbF6LG zuA-_h%va3boA7^?^NJK87%GMgs$)HOK{=>TVr9oW;h%zEv%^pCzHDxe$xR8?nGxs|)^(<{dX!Xsl;6l~N&OhnGJH-V*Pp1^coE2vhjWRqy}!t3#!vAlu+$>|%sG51n(w$;f#%w5Fs}37Q$NT4@vE%a%nd3QSC@YceJ~}-}i4o!$ zN(s4*swZNOYM^WQs7Gn$15bU^-Aw}&Z2?; z{sVO0!cn#UddJ6I@BpJwLr*znG>Nv88yvOUW6Rr;_D!>rfcj=0EBb4DfWH`^51o;cNhc3NqLCOAGb*7Ac zuEWpO)|+W?BA>@?PZBe48Criq)0p&p%3?t8m{DMF-SHct^H6UP6>3U6$@pRIM(aGt zw|QuLZ^$QIS+YNHYiz2YHn6*U^K9lHz}vma`3*ulGLC?4${bnYUR%E_UTr zabYY;u?=;X37RP$Y-}3^Z(Gw6V+GJXeFSDqHTIYj;_|jXFw3&9=l_G!ivL}|#Oy0A z<$8t3G9v7+zBC`-X5_!FneM*0x?T_NrJs>JTYK+U;nU2roM@|7;cHv&f+|~nh(6C~ z&V76mK4e1TAhergcADl#$Lqk^p>~}P=IJG05^|Gfc*_W{DJ~+Q2knElEU!adv;J-+ ze&DUr%Y~G8aAXx!0<-G8664ei=Xh!|@i@wq&akW}xGA4cEnA5O5 zbleLJbQZA*eQor$_k>(Iq}U{;gi!+rg>&&~E!{?wWe{O}d?!tFGAu4CWM?p>up_6NiLb_hqlP>BUR4aAwOGULC(Ww{#l zf*WIlKj{^t(pLbrMIl-gxmlOzX#UY4)D1c3$Tb8iXg{TU@`(V?1-$lS|_EIIpvVMxA!qu!b zv@|yaSGG7I!>Dq_nPhWdxaCs8j`Lc3A68|`P(;P@IqSP`cFo66f2exXtMYx5rmoYr zzRYDfH+O5Tl2CkFsV2cr(zbhgA^;;YG(u$74q*OA)a~{5;0pMphA#@y#U-I|FFJG$ z^8}6WWXHOCtC>xtuBiie5NRK>KSMW+fBZ!7yK0)3ZOHTJcd#S>4xGNTWIIv&edqsT zHoAQJqWcHnL4YNyN7jxq)HDZc67R<@uE#@d(IV=&iJXSt6`*AxGB9`LepSj|_gM03`{FNgJAZ>d@bPEF`2E60%2Ka_*LGWDnYeh|Esl zZ8$J|(H41&d26Ve>tkOd)zxFMx4U*xNvieq98JylZv$&i_AI`4?R^Tiyy)wqZ^#=JznG1 zv11|^?p#OEu4yF3jv?L(Ko4WHk9)cC$x|IKk1Ey!?o|!i%k%cJfF+B4mz_Q;Y9jbm zUMUdtlEI;fq&SN!P}INfW~cEHFNj5=b%iP~r1vy16(!jyMB@N#MW`MY4m;s+y#{&- ziZ<}IS~>}T(ZL|rUC%4#t;7E?hfU7M+x$`p814!(zkYr$CUdLwQ&$GmZCpVEL?d{` z(hU)Q_T`PADa;*jg?ex(na{Xu-e{Fw)DBYG@i50m9CCne&r}#`MgFWQh*6Zpq~_7N zxmipO)bVr$^Ay&csAOSv1&2AsTrD?(o7@DJDsgeC1uz^DDoFiDL*-;5p-y9WM};oO4%>39=i3LsUe`tZ@; zka9tOX!E^r<|4@z3U;Ph(IJ^y?3L0g*w-95eS

rmtzh*8-)v!YjPBJh`nVwU7N+ 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 Ul{-Mhjg_B}@D<9mDe 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 literal 0 HcmV?d00001 diff --git a/docs/landing/index.html b/docs/landing/index.html new file mode 100644 index 000000000..1db704a0d --- /dev/null +++ b/docs/landing/index.html @@ -0,0 +1,1295 @@ + + + + + + + CORNETO | Network optimization for biology + + + + + + + + + + + + + + + + + + + + + + +

+ +
+ + +
+

Network optimization, for biology.

+ +

+ An open-source Python framework for expressing and solving biological network optimization problems, + from network inference to general-purpose graph-based modeling. +

+ +
+ —GitHub stars + Nat. Mach. Intell.2025 + BSD-3-Clause open source +
+
+
+ +
+
+ + +
+
+

For computational biology

+

Infer mechanistic networks from your omics data.

+

+ Move from gene expression, phosphoproteomics, or + metabolomics to condition-specific signaling and + metabolic networks, using biological knowledge. +

+
    +
  • Intracellular signaling from transcriptomics
  • +
  • Context-specific metabolic networks from omics
  • +
  • Multi-condition network inference
  • +
  • Compatible with Decoupler, Omnipath, COBRApy, and more.
  • +
+
+
+

For optimization & modeling

+

A composable API for optimization on graphs.

+

+ Build network optimization problems with modular formulations + for flows, paths, trees, and acyclic networks, then solve them + with the backend and solver of your choice. +

+
    +
  • Reusable constraint & objective building blocks
  • +
  • Backend-agnostic (CVXPY / PICOS; +20 solvers)
  • +
  • Supports directed, undirected and mixed (hyper)graphs
  • +
  • Graphviz and WebAssembly plotting support
  • +
+
+
+
+
+ +
+ + + +
+ +
+
+ + +
+
+

NetworkCommons

+

CORNETO is part of NetworkCommons.

+

+ NetworkCommons helps you build context-specific biological networks by combining omics data, prior + knowledge, and network inference methods in one platform. It makes it easier to access data, run + different methods, and compare results across workflows. Many of its optimization-based methods are + powered by CORNETO, the underlying engine for flexible network inference. +

+

+ Paton V, Türei D, Ivanova O, et al. + NetworkCommons: bridging data, knowledge, and methods to + build and evaluate context-specific biological networks. + Bioinformatics, 2025. +

+ +
+
+
+ NetworkCommons graphical abstract +
+
+
+
+
+ +
+ + +
+
+

Nature Machine Intelligence  ·  2025

+

Unifying multi-sample network inference from prior knowledge and omics data with CORNETO.

+

+ Rodriguez-Mier, P., Garrido-Rodriguez, M., Gabor, A., & Saez-Rodriguez, J. +

+ + Read on nature.com → + +
+ +
+
+ BibTeX + +
+
@article{rodriguez-mier2025,
+  title   = {Unifying multi-sample network inference from prior knowledge
+             and omics data with CORNETO},
+  author  = {Rodriguez-Mier, Pablo and Garrido-Rodriguez, Martin
+             and Gabor, Attila and Saez-Rodriguez, Julio},
+  journal = {Nature Machine Intelligence},
+  year    = {2025},
+  doi     = {10.1038/s42256-025-01069-9},
+  url     = {https://www.nature.com/articles/s42256-025-01069-9}
+}
+
+
+
+ + + + + + + + + + + diff --git a/docs/releases/index.md b/docs/releases/index.md index c573b582d..758934fa3 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,9 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.5 +v1.0.0-rc.4 +v1.0.0-rc.3 v1.0.0-rc.1 migration-1.0 v1.0.0-beta.2 @@ -41,7 +44,7 @@ CORNETO follows [semantic versioning](https://semver.org/) with the following re - **GitHub Releases**: Follow releases on the [GitHub repository](https://github.com/saezlab/corneto/releases) - **PyPI**: Install the latest version with `pip install --upgrade corneto` -- **Development**: Track development progress on the `dev` branch +- **Development**: Track development through pull requests into `main` ## Contributing to Releases diff --git a/docs/releases/migration-1.0.md b/docs/releases/migration-1.0.md index 8e6f219b4..5cad33060 100644 --- a/docs/releases/migration-1.0.md +++ b/docs/releases/migration-1.0.md @@ -14,13 +14,12 @@ were removed instead of being carried as permanent compatibility aliases. | `corneto.methods.future.MultiSampleIMAT` | `corneto.methods.MultiSampleIMAT` | | `corneto.methods.future.PrizeCollectingSteinerTree` | `corneto.methods.PrizeCollectingSteinerTree` | | `corneto.methods.future.SteinerTreeFlow` | `corneto.methods.SteinerTreeFlow` | -| `corneto.methods.signal.cellnopt_ilp` | `corneto.methods.signaling.cellnopt_ilp` | | `corneto.K` or `corneto.ops` | `corneto.opt` | | `corneto._ml.build_dagnn` | `corneto.ml.build_dagnn` | | `corneto.methods.shortest_path.create_multisample_shortest_path` | `corneto.methods.create_multisample_shortest_path` | | module-level graph serialization | `Graph.save` and `Graph.load` | -The old `future`, `signal`, `K`, and `ops` paths in this table remain warning +The old `future`, `K`, and `ops` paths in this table remain warning compatibility paths throughout 1.x. The private `_ml` path and duplicate graph serialization functions do not have shims. @@ -34,8 +33,9 @@ serialization functions do not have shims. modules (`corneto._graph`, `corneto._data`, `corneto._io`, `corneto._nx`, `corneto._core`, and `corneto._legacy`). - The British-spelling `corneto.methods.signalling` implementation and the old - module-shaped `corneto.methods.signaling`; signaling methods now live in the - `corneto.methods.signaling` package. + module-shaped `corneto.methods.signaling`, as well as the singular + `corneto.methods.signal` compatibility namespace; signaling methods now live + in the `corneto.methods.signaling` package. - Duplicate module-level graph serialization helpers from `corneto.io`. ## Multi-condition convention diff --git a/docs/releases/v1.0.0-rc.1.md b/docs/releases/v1.0.0-rc.1.md index 758a8336a..90e83984c 100644 --- a/docs/releases/v1.0.0-rc.1.md +++ b/docs/releases/v1.0.0-rc.1.md @@ -20,9 +20,11 @@ It requires Python 3.11 or newer and is tested on Python 3.11, 3.12, and 3.13. ## Compatibility window -Imports through `corneto.methods.future`, `corneto.methods.signal`, and the root -`corneto.K` and `corneto.ops` aliases continue to work with `FutureWarning` -through the CORNETO 1.x line. They are scheduled for removal in CORNETO 2.0. +Imports through `corneto.methods.future` and the root `corneto.K` and +`corneto.ops` aliases continue to work with `FutureWarning` through the CORNETO +1.x line. They are scheduled for removal in CORNETO 2.0. The experimental +`corneto.methods.signal` namespace and `cellnoptILP` function are outside this +compatibility window and are removed before the final 1.0 release. See the [1.0 migration guide](migration-1.0.md) for canonical mappings and intentional removals. diff --git a/docs/releases/v1.0.0-rc.3.md b/docs/releases/v1.0.0-rc.3.md new file mode 100644 index 000000000..fbd7b7bc6 --- /dev/null +++ b/docs/releases/v1.0.0-rc.3.md @@ -0,0 +1,27 @@ +# CORNETO 1.0.0 RC3 + +CORNETO 1.0.0 RC3 expands the candidate 1.0 signaling and metabolism workflows +and moves publication to a public-`main` release gate. + +## Highlights + +- `CellNOptDAG` provides class-based Boolean signaling-model inference, + including dedicated model and fit visualizations. +- The FBA and iMAT guides have been overhauled, including a new standalone iMAT + guide and refreshed multi-condition examples. +- Public releases now use one pull request directly into public `main`; that PR + runs the Python 3.11–3.13 tests, quality checks, warning-free documentation + build, and package smoke test before a release tag is created. + +## Experimental API cleanup + +The experimental `cellnoptILP` function and `corneto.methods.signal` namespace +have been removed without compatibility shims. Use the supported class-based +API instead: + +```python +from corneto.methods.signaling import CellNOptDAG +``` + +See the [1.0 migration guide](migration-1.0.md) for the complete supported +surface and intentional removals. diff --git a/docs/releases/v1.0.0-rc.4.md b/docs/releases/v1.0.0-rc.4.md new file mode 100644 index 000000000..0c880a406 --- /dev/null +++ b/docs/releases/v1.0.0-rc.4.md @@ -0,0 +1,31 @@ +# Release v1.0.0-rc.4 {bdg-warning}`Pre-release` + +CORNETO 1.0.0 RC4 adds an AnnNet-centered signaling workflow and clarifies how +experimental data are represented across CORNETO methods. + +## Highlights + +- New signaling helpers read signed interactions and multi-condition + perturbation data from AnnNet, build a `CellNOptDAG` optimization problem, + and add the fitted model and condition-specific predictions back to the same + AnnNet object. +- A new tutorial uses proteins from the LiverDREAM signaling network to show + how AnnNet can keep the candidate pathway, experimental conditions, selected + interactions, predictions, and reaction activities together. +- The tutorial uses normalized synthetic measurements with experimental + variation, making the difference between observed values and Boolean model + predictions visible. +- The Getting Started guide now presents `Data` as CORNETO's general + representation of samples and measured features, while method-specific + `build` and `build_many` functions are explained as convenience interfaces. + +## AnnNet and CellNOptDAG + +Install the optional AnnNet integration with: + +```bash +pip install "corneto[annnet]" +``` + +The general `build_from_data` method interface remains available for annotated +or reusable CORNETO datasets. diff --git a/docs/releases/v1.0.0-rc.5.md b/docs/releases/v1.0.0-rc.5.md new file mode 100644 index 000000000..9cc24dc1b --- /dev/null +++ b/docs/releases/v1.0.0-rc.5.md @@ -0,0 +1,23 @@ +# Release v1.0.0-rc.5 {bdg-warning}`Pre-release` + +CORNETO 1.0.0 RC5 refreshes the project website and strengthens the release and +documentation publication safeguards ahead of the final 1.0 release. + +## Highlights + +- A new self-contained landing page presents CORNETO's biological network + inference and graph optimization capabilities without depending on assets + from a particular documentation version. +- Documentation publishing now prepares and validates the complete Pages tree + before making a single serialized update, preserving historical versions and + preventing release tags from overwriting the homepage. +- Every generated documentation build is checked for the canonical + `corneto.org/switcher.json` URL and the correct version match before it can be + deployed. +- The release helper and package publication workflow now require canonical, + committed release notes before creating or publishing a tag. + +## Compatibility + +This release does not change the CORNETO Python API. The landing-page language +and links target the supported 1.0 documentation and interfaces. diff --git a/docs/tutorials/README.md b/docs/tutorials/README.md index d6444d0cb..e878c13f9 100644 --- a/docs/tutorials/README.md +++ b/docs/tutorials/README.md @@ -72,9 +72,9 @@ git clone https://github.com/saezlab/corneto cd corneto ``` -### 2. Switch to the `dev` Branch +### 2. Start from the `main` Branch ```bash -git checkout dev +git checkout main ``` ### 3. Create a New Branch @@ -121,7 +121,7 @@ git push origin contrib/my-tutorial-name ### 8. Open a Pull Request -Open a **PR against `dev`** with title: +Open a **PR against `main`** with title: ``` docs(tutorial): add my_tutorial_name example ``` diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb new file mode 100644 index 000000000..af0ffb265 --- /dev/null +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -0,0 +1,2088 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "intro", + "metadata": { + "tags": [] + }, + "source": [ + "# Fitting a multi-condition signaling network stored in AnnNet\n", + "\n", + "A signaling analysis contains more than a pathway diagram. We also need to know which proteins were stimulated or inhibited, what was measured in each condition, which interactions were selected by the model, and what the model predicts.\n", + "\n", + "In this tutorial, one AnnNet object keeps all of this information together. CORNETO provides the optimization method that fits the network.\n", + "\n", + "We will use AnnNet to hold:\n", + "\n", + "- a signed prior-knowledge network;\n", + "- nine perturbation experiments;\n", + "- the network selected by `CellNOptDAG`; and\n", + "- predicted protein and reaction activities for every condition.\n", + "\n", + "The biological question is:\n", + "\n", + "> Which routes through the candidate network are needed to explain the responses to TGFA, IGF1, and several kinase inhibitors?\n", + "\n", + "The complete analysis can be saved as one `.annnet` file and explored later without rerunning the optimization." + ] + }, + { + "cell_type": "markdown", + "id": "data-scope", + "metadata": { + "tags": [] + }, + "source": [ + "## What data are used?\n", + "\n", + "The protein names and candidate interactions come from a small part of the prior-knowledge network distributed with the [DREAM4 Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/). The original challenge studied signaling responses in HepG2 cells after stimulation with ligands and treatment with kinase inhibitors.\n", + "\n", + "To keep the model easy to understand, we use a small **synthetic perturbation experiment**. Stimuli and inhibitors are binary, while the responses are normalized values between `0` and `1`. We deliberately include experimental variation, so a Boolean model is not expected to reproduce every value exactly. The example uses real pathway names, but the measurements are illustrative and are not taken from the original DREAM dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "imports", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import annnet as an\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from annnet.utils import plot as plot_annnet\n", + "from IPython.display import display\n", + "\n", + "from corneto.methods.signaling import (\n", + " CellNOptDAG,\n", + " add_cellnopt_conditions,\n", + " add_cellnopt_results,\n", + " build_cellnopt_from_annnet,\n", + " plot_cellnopt_fit,\n", + " plot_cellnopt_model,\n", + ")\n", + "\n", + "plt.rcParams.update({\"figure.dpi\": 120, \"axes.spines.top\": False, \"axes.spines.right\": False})" + ] + }, + { + "cell_type": "markdown", + "id": "network-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 1. Create the signaling network in AnnNet\n", + "\n", + "We begin with the biological network that will remain with us throughout the analysis. Each interaction has a sign: `+1` for activation and `−1` for inhibition.\n", + "\n", + "The network contains two familiar branches:\n", + "\n", + "- TGFA activates EGFR and can signal toward ERK1/2 and HSP27;\n", + "- IGF1 activates IGFR and can signal toward PI3K and AKT.\n", + "\n", + "We also include several possible shortcuts and alternative routes. They are candidates that CORNETO may select if they help explain the experiments.\n", + "\n", + "The interactions are placed in an AnnNet slice called `prior`. A slice is a named selection within a network. Later, another slice will identify the interactions selected by CellNOptDAG, while the original candidate network remains available." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "create-network", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AnnNet contains 21 proteins and 25 signed interactions\n" + ] + } + ], + "source": [ + "display_name = {\n", + " \"tgfa\": \"TGFA\", \"egfr\": \"EGFR\", \"grb2\": \"GRB2\", \"shc\": \"SHC\",\n", + " \"sos\": \"SOS\", \"ras\": \"RAS\", \"raf1\": \"RAF1\", \"mek12\": \"MEK1/2\",\n", + " \"erk12\": \"ERK1/2\", \"prak\": \"PRAK\", \"hsp27\": \"HSP27\", \"pi3k\": \"PI3K\",\n", + " \"pip3\": \"PIP3\", \"pdk1\": \"PDK1\", \"akt\": \"AKT\", \"igf1\": \"IGF1\",\n", + " \"igfr\": \"IGFR\", \"irs1\": \"IRS1\", \"map3k1\": \"MAP3K1\", \"mkk4\": \"MKK4\",\n", + " \"p38\": \"p38\",\n", + "}\n", + "\n", + "pkn_edges = [\n", + " (\"tgfa\", 1, \"egfr\"), (\"egfr\", 1, \"grb2\"), (\"egfr\", 1, \"shc\"),\n", + " (\"shc\", 1, \"grb2\"), (\"grb2\", 1, \"sos\"), (\"sos\", 1, \"ras\"),\n", + " (\"ras\", 1, \"raf1\"), (\"raf1\", 1, \"mek12\"), (\"mek12\", 1, \"erk12\"),\n", + " (\"erk12\", 1, \"prak\"), (\"prak\", 1, \"hsp27\"), (\"egfr\", 1, \"pi3k\"),\n", + " (\"ras\", 1, \"pi3k\"), (\"pi3k\", 1, \"pip3\"), (\"pip3\", 1, \"pdk1\"),\n", + " (\"pdk1\", 1, \"akt\"), (\"igf1\", 1, \"igfr\"), (\"igfr\", 1, \"irs1\"),\n", + " (\"irs1\", 1, \"pi3k\"), (\"igfr\", 1, \"shc\"), (\"ras\", 1, \"map3k1\"),\n", + " (\"map3k1\", 1, \"mkk4\"), (\"mkk4\", 1, \"p38\"), (\"p38\", 1, \"prak\"),\n", + " (\"akt\", -1, \"raf1\"),\n", + "]\n", + "\n", + "signaling = an.AnnNet(directed=True)\n", + "signaling.history.enable(True)\n", + "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", + "signaling.add_vertices(sorted(display_name))\n", + "\n", + "for protein, label in display_name.items():\n", + " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + "\n", + "prior_edge_ids = []\n", + "for index, (source, sign, target) in enumerate(pkn_edges):\n", + " edge_id = f\"liverdream_{index:02d}\"\n", + " signaling.add_edges(\n", + " source,\n", + " target,\n", + " edge_id=edge_id,\n", + " slice=\"prior\",\n", + " directed=True,\n", + " parallel=\"parallel\",\n", + " )\n", + " signaling.attrs.set_edge_attrs(\n", + " edge_id,\n", + " interaction=sign,\n", + " source_dataset=\"LiverDREAM\",\n", + " )\n", + " prior_edge_ids.append(edge_id)\n", + "\n", + "signaling.uns.update(\n", + " {\n", + " \"title\": \"LiverDREAM-derived signaling example\",\n", + " \"pkn_source\": \"DREAM4 Predictive Signaling Network Challenge\",\n", + " \"data_scope\": \"Synthetic normalized signaling responses for software demonstration\",\n", + " }\n", + ")\n", + "signaling.history.snapshot(\"prior_loaded\")\n", + "\n", + "print(f\"AnnNet contains {signaling.nv} proteins and {signaling.ne} signed interactions\")" + ] + }, + { + "cell_type": "markdown", + "id": "network-plot-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Inspect the candidate network\n", + "\n", + "AnnNet draws the signed network directly. Arrowheads show activation, while a bar indicates inhibition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "network-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "AKT\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "RAF1\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "EGFR\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "GRB2\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "PI3K\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "SHC\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "ERK1/2\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "PRAK\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "SOS\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "HSP27\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "IGF1\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "IGFR\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "IRS1\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "MAP3K1\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "MKK4\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "MEK1/2\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "PDK1\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "PIP3\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "RAS\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "TGFA\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "plot_annnet(\n", + " signaling,\n", + " backend=\"graphviz\",\n", + " layout=\"dot\",\n", + " vertex_label_key=\"label\",\n", + " use_weight_style=False,\n", + " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", + " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "conditions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 2. Add the perturbation experiments to AnnNet\n", + "\n", + "Each condition records which ligands are present, which internal proteins are inhibited, and the measured activity of ERK1/2, AKT, and HSP27.\n", + "\n", + "The conditions were chosen to distinguish alternative explanations:\n", + "\n", + "- **TGFA with RAS inhibition** tests whether TGFA reaches PI3K through RAS or through the shorter candidate edge from EGFR to PI3K.\n", + "- **TGFA with MEK inhibition** blocks the ERK1/2–HSP27 branch while leaving the route to AKT available.\n", + "- **IGF1 alone** supports the route from IGFR through IRS1 to PI3K and AKT.\n", + "- **IGF1 with PI3K inhibition** tests whether the AKT response depends on PI3K, PIP3, and PDK1.\n", + "\n", + "We store every condition as an AnnNet layer. Inputs, inhibitors, and measurements become attributes of the corresponding protein in that layer." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "condition-data", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Condition layers: ['Basal', 'TGFA', 'TGFA + EGFRi', 'TGFA + RASi', 'TGFA + MEKi', 'IGF1', 'IGF1 + PI3Ki', 'TGFA + IGF1', 'Dual + MEKi']\n" + ] + } + ], + "source": [ + "inputs = {\n", + " \"Basal\": {\"tgfa\": 0, \"igf1\": 0},\n", + " \"TGFA\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + EGFRi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + RASi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"TGFA + MEKi\": {\"tgfa\": 1, \"igf1\": 0},\n", + " \"IGF1\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"IGF1 + PI3Ki\": {\"tgfa\": 0, \"igf1\": 1},\n", + " \"TGFA + IGF1\": {\"tgfa\": 1, \"igf1\": 1},\n", + " \"Dual + MEKi\": {\"tgfa\": 1, \"igf1\": 1},\n", + "}\n", + "measurements = {\n", + " \"Basal\": {\"erk12\": 0.05, \"akt\": 0.08, \"hsp27\": 0.04},\n", + " \"TGFA\": {\"erk12\": 0.90, \"akt\": 0.85, \"hsp27\": 0.80},\n", + " \"TGFA + EGFRi\": {\"erk12\": 0.10, \"akt\": 0.15, \"hsp27\": 0.08},\n", + " \"TGFA + RASi\": {\"erk12\": 0.15, \"akt\": 0.25, \"hsp27\": 0.12},\n", + " \"TGFA + MEKi\": {\"erk12\": 0.20, \"akt\": 0.75, \"hsp27\": 0.18},\n", + " \"IGF1\": {\"erk12\": 0.12, \"akt\": 0.88, \"hsp27\": 0.10},\n", + " \"IGF1 + PI3Ki\": {\"erk12\": 0.10, \"akt\": 0.20, \"hsp27\": 0.10},\n", + " \"TGFA + IGF1\": {\"erk12\": 0.92, \"akt\": 0.90, \"hsp27\": 0.85},\n", + " \"Dual + MEKi\": {\"erk12\": 0.20, \"akt\": 0.82, \"hsp27\": 0.15},\n", + "}\n", + "inhibitors = {condition: {} for condition in inputs}\n", + "inhibitors[\"TGFA + EGFRi\"] = {\"egfr\": 1}\n", + "inhibitors[\"TGFA + RASi\"] = {\"ras\": 1}\n", + "inhibitors[\"TGFA + MEKi\"] = {\"mek12\": 1}\n", + "inhibitors[\"IGF1 + PI3Ki\"] = {\"pi3k\": 1}\n", + "inhibitors[\"Dual + MEKi\"] = {\"mek12\": 1}\n", + "\n", + "condition_layers = add_cellnopt_conditions(\n", + " signaling,\n", + " inputs=inputs,\n", + " inhibitors=inhibitors,\n", + " measurements=measurements,\n", + ")\n", + "signaling.history.snapshot(\"conditions_added\")\n", + "\n", + "print(\"Condition layers:\", list(condition_layers))" + ] + }, + { + "cell_type": "markdown", + "id": "condition-inspect", + "metadata": { + "tags": [] + }, + "source": [ + "The AnnNet object now contains both the pathway and the experiment. The following small display helper reads selected protein attributes across its condition layers. It is independent of CellNOptDAG and is used only to make compact tables in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "layer-table-helper", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "def vertex_layer_table(network, layers, columns):\n", + " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + " rows = {}\n", + " for condition, layer in layers.items():\n", + " rows[condition] = {\n", + " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " for label, (protein, attribute) in columns.items()\n", + " }\n", + " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "experiment-table", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TGFAIGF1EGFR inhibitedRAS inhibitedMEK inhibitedPI3K inhibitedERK1/2 observedAKT observedHSP27 observed
condition
Basal000.00.00.00.00.050.080.04
TGFA100.00.00.00.00.900.850.80
TGFA + EGFRi101.00.00.00.00.100.150.08
TGFA + RASi100.01.00.00.00.150.250.12
TGFA + MEKi100.00.01.00.00.200.750.18
IGF1010.00.00.00.00.120.880.10
IGF1 + PI3Ki010.00.00.01.00.100.200.10
TGFA + IGF1110.00.00.00.00.920.900.85
Dual + MEKi110.00.01.00.00.200.820.15
\n", + "
" + ], + "text/plain": [ + " TGFA IGF1 EGFR inhibited RAS inhibited MEK inhibited \\\n", + "condition \n", + "Basal 0 0 0.0 0.0 0.0 \n", + "TGFA 1 0 0.0 0.0 0.0 \n", + "TGFA + EGFRi 1 0 1.0 0.0 0.0 \n", + "TGFA + RASi 1 0 0.0 1.0 0.0 \n", + "TGFA + MEKi 1 0 0.0 0.0 1.0 \n", + "IGF1 0 1 0.0 0.0 0.0 \n", + "IGF1 + PI3Ki 0 1 0.0 0.0 0.0 \n", + "TGFA + IGF1 1 1 0.0 0.0 0.0 \n", + "Dual + MEKi 1 1 0.0 0.0 1.0 \n", + "\n", + " PI3K inhibited ERK1/2 observed AKT observed HSP27 observed \n", + "condition \n", + "Basal 0.0 0.05 0.08 0.04 \n", + "TGFA 0.0 0.90 0.85 0.80 \n", + "TGFA + EGFRi 0.0 0.10 0.15 0.08 \n", + "TGFA + RASi 0.0 0.15 0.25 0.12 \n", + "TGFA + MEKi 0.0 0.20 0.75 0.18 \n", + "IGF1 0.0 0.12 0.88 0.10 \n", + "IGF1 + PI3Ki 1.0 0.10 0.20 0.10 \n", + "TGFA + IGF1 0.0 0.92 0.90 0.85 \n", + "Dual + MEKi 0.0 0.20 0.82 0.15 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "experiment_columns = {\n", + " \"TGFA\": (\"tgfa\", \"input\"),\n", + " \"IGF1\": (\"igf1\", \"input\"),\n", + " \"EGFR inhibited\": (\"egfr\", \"inhibited\"),\n", + " \"RAS inhibited\": (\"ras\", \"inhibited\"),\n", + " \"MEK inhibited\": (\"mek12\", \"inhibited\"),\n", + " \"PI3K inhibited\": (\"pi3k\", \"inhibited\"),\n", + " \"ERK1/2 observed\": (\"erk12\", \"observed\"),\n", + " \"AKT observed\": (\"akt\", \"observed\"),\n", + " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", + "}\n", + "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "experiment-plot", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(11, 4.8))\n", + "matrix = experiment.to_numpy(dtype=float)\n", + "ax.imshow(matrix, cmap=\"Blues\", vmin=0, vmax=1, aspect=\"auto\")\n", + "ax.set_xticks(range(experiment.shape[1]), experiment.columns, rotation=45, ha=\"right\")\n", + "ax.set_yticks(range(experiment.shape[0]), experiment.index)\n", + "for row, column in np.ndindex(matrix.shape):\n", + " ax.text(column, row, f\"{matrix[row, column]:.2g}\", ha=\"center\", va=\"center\", fontsize=8)\n", + "ax.set_title(\"Perturbations and measurements stored in the AnnNet condition layers\")\n", + "ax.set_xlabel(\"Experimental variable\")\n", + "ax.set_ylabel(\"Condition\")\n", + "fig.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "fit-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 3. Fit the network with CORNETO\n", + "\n", + "CORNETO reads the signed interactions and experimental conditions stored in AnnNet. CellNOptDAG searches for one set of reactions that explains all nine experiments. The selected reactions are shared across the experiment, although their activity can change from one condition to another.\n", + "\n", + "CellNOptDAG predicts an inactive or active state for each protein, whereas the synthetic measurements vary continuously between `0` and `1`. It therefore searches for the binary response pattern that is closest to the observations rather than expecting a perfect numerical match.\n", + "\n", + "We use a small value of `lambda_reg`. Reducing disagreement with the measurements is the first priority; when two models perform equally well, this value favors the model with fewer reactions." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "fit-model", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Solver status: optimal\n", + "Total absolute error: 3.70\n", + "Mean absolute error per measurement: 0.14\n" + ] + } + ], + "source": [ + "method = CellNOptDAG(lambda_reg=1e-3)\n", + "problem = build_cellnopt_from_annnet(\n", + " method,\n", + " signaling,\n", + " network_slice=\"prior\",\n", + " condition_layers=condition_layers,\n", + ")\n", + "solution = problem.solve(solver=\"SCIPY\")\n", + "\n", + "total_error = float(problem.objectives[0].value)\n", + "number_of_measurements = sum(len(values) for values in measurements.values())\n", + "\n", + "print(\"Solver status:\", solution.status)\n", + "print(f\"Total absolute error: {total_error:.2f}\")\n", + "print(f\"Mean absolute error per measurement: {total_error / number_of_measurements:.2f}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fit-result-text", + "metadata": { + "tags": [] + }, + "source": [ + "### Which routes were selected?\n", + "\n", + "The fitted network keeps both stimulus-to-readout branches. It also keeps `RAS → PI3K`, which helps explain why TGFA produces a strong AKT response while RAS inhibition strongly reduces it.\n", + "\n", + "The direct shortcut `EGFR → PI3K` is not selected. If it were present, PI3K could remain active after RAS inhibition, making the low AKT measurement harder to explain. The candidate routes from IGFR to ERK1/2 and from RAS through p38 to HSP27 are also unnecessary for this fit.\n", + "\n", + "An interaction that is not selected should not be interpreted as biologically false. It was available in the candidate network, but this experiment can be explained without it." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fit-plots", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "tgfa\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "tgfa->egfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "egfr->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "grb2->sos\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "shc->grb2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sos->ras\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "ras->map3k1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "raf1->mek12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mek12->erk12\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "erk12->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prak->hsp27\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pi3k->pip3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pip3->pdk1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "pdk1->akt\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "akt->raf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "igf1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igf1->igfr\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->shc\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "igfr->irs1\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "irs1->pi3k\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "map3k1->mkk4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "mkk4->p38\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "p38->prak\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "(
,\n", + " array([,\n", + " ,\n", + " ,\n", + " ], dtype=object))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Lhg19OLQgeoP1eWSSy6xcfFf//qX/cJXk5lXsbCw0B6zv8tJAzjwunfvbuOsSayYypu6ktpm6O0pp5zivzhmLpibob01+zEm1vmG49Z222232TZMvA1VPWkS2b75xnyxNVTsDBXn0Uj7uboYIohZKvm2226zS/WZ5ZB//vOfe++8807vrbfe6h09erTdn5iY6H3rrbdCLgc4fvx4+7jzzjvP+7vf/c576qmn2v1ZWVkBy4s+/vjjdgnZsWPH2qWfzbGXXnqpXe45KirK+/bbbwec/6GHHrLHJyUlec8991zvHXfcYZcnNec3y6uapaIbulxrTd99951/uVpz++6774Y8rqCgwC73bo7p06eP94orrvD+9re/9f7f//2f99BDD7X7ay4PbZamPv300+3+Xr162ff0pptu8nbo0MG/nyXigYYvEb83oZaIN2bOnGmXNzZxxSxXamKNWY7U/G72m/trL0fas2dPe64jjzzSfs7NEtJmmXffZ7f2Uqlm2XoTF8x9Zkn4a6+91sbNiy++2Dt48GC7f8aMGf7jWSIe4cy3ZLBZArw+Zgl283fb/N3zLdnuWx7YfJZMX8J8tsxnzHzWzP7u3bvbJd19brnlFtunMMuXX3fddfZY078wn8f4+Hjv9OnT/cdWVFT4zzNo0CDbT/jVr37lbdu2rd1nPpO1n1+oJeJN+2Y5d3Of6WPcfvvt9vmafsI555wTMs6Y52X2H3300d4//OEP3gceeMA7ceJE//1ffvmljTfm/TjhhBPs6zL9KnO+jh072tfSUE3dH9rb/U8++aR9beb5m/6aea1miXqzr3///t7du3eHXCIewMHp/vvvt30g8zk94ogjvDfffLP37rvvtp9vX19m1KhR/uP/+Mc/2n0mVpmYamKx6SeZeGv2hYofN9xwg//730UXXeS96667vNdcc42Nf3FxcfYcPqbflJ6e7j3jjDNsbDQxzbecvTl3bm5us703rQ2RGI32ww8/2ASH6ZCZzpbpWJhO1W9+8xv7hae2ml9qPvroI5swMR0U86E2X7iWL18ecPySJUtsB2jkyJHenJwcGxDMB910iKZNm1ZnwsZ0/kyH0nTGzONM4DDnmT179j4lgYzevXv7A5XpRNbF3Pevf/3Ldn5Msso85y5duthAZZJau3btCjreBNoePXr4X58JsuXl5SSBgGZKAhnLli3z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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "display(plot_cellnopt_model(method, show_unselected=True))\n", + "plot_cellnopt_fit(method, view=\"heatmap\")" + ] + }, + { + "cell_type": "markdown", + "id": "annotate-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 4. Add the fitted model to AnnNet\n", + "\n", + "The optimization is complete, but the AnnNet object does not yet contain the inferred results. One signaling-specific CORNETO helper adds them:\n", + "\n", + "- selected interactions are added to a slice called `cellnopt_selected`;\n", + "- predicted protein activities are added to each condition layer;\n", + "- selected reactions are marked as active or inactive in each condition; and\n", + "- fitting summaries are attached to the corresponding layers.\n", + "\n", + "This helper works from CellNOptDAG variables and standard AnnNet attributes. It does not contain any LiverDREAM-specific proteins or conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "annotate-results", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "selected reactions 16.0\n", + "selected prior interactions 16.0\n", + "condition-specific interaction records 144.0\n", + "total absolute error 3.7\n", + "Name: stored CellNOptDAG results, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result_summary = add_cellnopt_results(\n", + " signaling,\n", + " method,\n", + " problem,\n", + " solution=solution,\n", + ")\n", + "\n", + "pd.Series(\n", + " {\n", + " \"selected reactions\": result_summary[\"selected_reactions\"],\n", + " \"selected prior interactions\": result_summary[\"selected_prior_edges\"],\n", + " \"condition-specific interaction records\": result_summary[\"condition_edges\"],\n", + " \"total absolute error\": sum(result_summary[\"condition_errors\"].values()),\n", + " },\n", + " name=\"stored CellNOptDAG results\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For new conditions, use the fixed `CellNOptDAG` model directly: call `predict(inputs=..., inhibitors=...)` without measurements, then call `evaluate(...)` when held-out measurements are available. This notebook stores in-sample fitted results in AnnNet; the reusable prediction lifecycle and result metadata are demonstrated in the [CellNOptDAG guide](../../guide/signaling/cellnopt_dag.ipynb)." + ] + }, + { + "cell_type": "markdown", + "id": "questions-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 5. Explore the complete analysis in AnnNet\n", + "\n", + "AnnNet now contains the candidate pathway, all experimental conditions, and the fitted results. We can answer biological questions from this object instead of combining solver variables with separate dictionaries.\n", + "\n", + "### Which candidate interactions belong to the fitted model?\n", + "\n", + "The `prior` and `cellnopt_selected` slices can be compared without losing either version of the pathway." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "selected-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcesigntarget
0TGFAactivatesEGFR
1EGFRactivatesGRB2
2GRB2activatesSOS
3SOSactivatesRAS
4RASactivatesRAF1
5RAF1activatesMEK1/2
6MEK1/2activatesERK1/2
7ERK1/2activatesPRAK
8PRAKactivatesHSP27
9RASactivatesPI3K
10PI3KactivatesPIP3
11PIP3activatesPDK1
12PDK1activatesAKT
13IGF1activatesIGFR
14IGFRactivatesIRS1
15IRS1activatesPI3K
\n", + "
" + ], + "text/plain": [ + " source sign target\n", + "0 TGFA activates EGFR\n", + "1 EGFR activates GRB2\n", + "2 GRB2 activates SOS\n", + "3 SOS activates RAS\n", + "4 RAS activates RAF1\n", + "5 RAF1 activates MEK1/2\n", + "6 MEK1/2 activates ERK1/2\n", + "7 ERK1/2 activates PRAK\n", + "8 PRAK activates HSP27\n", + "9 RAS activates PI3K\n", + "10 PI3K activates PIP3\n", + "11 PIP3 activates PDK1\n", + "12 PDK1 activates AKT\n", + "13 IGF1 activates IGFR\n", + "14 IGFR activates IRS1\n", + "15 IRS1 activates PI3K" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "selected_prior_ids = set(prior_edge_ids) & set(signaling.slices.edges(\"cellnopt_selected\"))\n", + "selected_rows = []\n", + "for edge_id in prior_edge_ids:\n", + " if edge_id not in selected_prior_ids:\n", + " continue\n", + " sources, targets = signaling.get_edge(edge_id)\n", + " source_node = next(iter(sources))\n", + " target_node = next(iter(targets))\n", + " source = source_node[0] if isinstance(source_node, tuple) else source_node\n", + " target = target_node[0] if isinstance(target_node, tuple) else target_node\n", + " sign = signaling.attrs.get_edge_attrs(edge_id)[\"interaction\"]\n", + " selected_rows.append(\n", + " {\n", + " \"source\": display_name[source],\n", + " \"sign\": \"activates\" if sign == 1 else \"inhibits\",\n", + " \"target\": display_name[target],\n", + " }\n", + " )\n", + "\n", + "pd.DataFrame(selected_rows)" + ] + }, + { + "cell_type": "markdown", + "id": "akt-question", + "metadata": { + "tags": [] + }, + "source": [ + "### How does AKT respond across the experiment?\n", + "\n", + "Observed and predicted AKT values are attributes of the same protein in different AnnNet layers. Reading them side by side shows both the perturbation response and the quality of the fit." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "akt-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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lStX2kcffeSCg/r7tNP+71pTel9f82fPnu22mV5f3Xm0jlesWOH+1smQqM6M1+1T68ArgOzdZ9T6V3aD3pf2OQVpFExatGiRe021KeE+4unfv7/bt7SPKViq/UpB37Vr17rHB3r//ffd/qoTa91r3/ryyy/tiiuucEHG9Ljllltc+xRAypkzp1unOtH/7rvv3DYODGSIjhUFMnQirhN7vWcF0EQnuNpWOgnVSbpOahUIev311932//bbb4OOLe0zClToRFrPpUDNjz/+6PaHBg0apPo96PHarxWo02vqGNWx7R3zV111lTt579u3r9sXPv/8c+vUqVOa6tUoS0SBJ+1Xen69f2WHarq2nwIYWn+B9NmhbapAnPZT1cjT62tf0T6mfdOjz1EF7RTE076g19m2bZv9/PPPbr327t071W3VfqJglHdseMGSzP4sy8htqnWjdiuQrKCUF4BMGIh87rnn3LrX+1KA0Qvi6vjVdte61+u2a9fONm3aZO+9957NnTvXZsyYETILKaM+11Ki11FQV8eLgnz6jurTp4+98cYbrgt7UrTN9Dmubat9XNvi6aefdvtKqACTgkAKHuozQ8e49jvtH127dnXt1XEQigJkWveqEalgnALfKRk6dKjbblpW66948eJu/1VXfrVT37tqs447LffCCy+4x+m49NANH0CW4gMAZAlPPfWULuX7hg8f7p920UUX+bJly+b7448/Ei0/ceJEt3zTpk19tWrVcn/37NnTd/z48RRfq1OnTm55PUda/fXXX+6xuj355JNB84YOHeqmFypUyNerVy/fiRMn/PPefPNNN69v375Bjxk8eLCbfvfddwe1XX937drVzZs1a1bQY9auXZuoXUeOHPE1aNDAlyNHDt/mzZv901988UX3HC+88EKix+zfv9938ODBRG1ZvHhxku9b6y7UuixVqpTvzz//TPS4unXrum04bdq0oOn//fefr2bNmr48efL4tm7dmmi7Zs+e3bdkyRL/dK3LRo0a+dfvlClTgp4vqXV1Kq+/YMGCoMc89NBDbt7IkSNDrgOto4TSsv6TE2qba5107NjRPf+3334bsk1lypTxbdiwwT/92LFjvquvvtrNW7ZsmX/6vn37fIULF3b7z4oVK4KeS/ust8+Heo+haL1r+fPOO8+3a9cu//RDhw75Lr/8cjdPx0Qg7zVuv/12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bQkAAAAAAABiXrqHvLv//vutffv2Ied16NDB+vXrdyrtAgAAAAAAQAxKdzDqww8/dDWkQtH02bNnn0q7AAAAAAAAEIPSHYzasmWLnXPOOSHnlStXzjZv3nwq7QIAAAAAAEAMSncwKl++fLZp06aQ8zZu3Gh58uQ5lXYBAAAAAAAgBqU7GKVR9Z577jk7duxY0HT9f9SoUVanTp2MaB8AAAAAAABiSLpH03v00UftmmuusWrVqlm3bt2sdOnSrmveG2+8YRs2bLBXXnklY1sKAAAAAACA+A1G1a5d2xUxv+uuu+yhhx7yTz/33HPd9Msuuyyj2ggAAAAAAIB4D0ZJkyZNbO3atfbHH3/Y9u3brVixYnbeeedlXOsAAAAAAAAQU04pGOVRAIogFAAAAAAAADI9GLVq1Sr79ddf7dChQ4nmdezY8VSfHgAAAAAAADEk3cGogwcP2o033miLFi2ybNmymc/nc9P1t4dgFAAAAAAAAAKdZun0xBNP2Pr16+3zzz93gaiZM2fa/PnzrXXr1q7L3g8//JCu592/f7/17dvXSpUqZXny5LFatWrZ9OnTU/342bNnW926de3MM8+0fPnyWdWqVe3VV19NV1sAAAAAAACQRYJRCvoMGDDA6tSp4/5ftmxZa9iwob333nt20UUX2bhx49L1vApmTZ482QYPHmwff/yxXXrppdauXTubOnVqio8dMWKEe3y1atXs3XffdaP69e7d244ePZqutgAAAAAAACCLdNNTVlTlypUte/bsrmueuu152rdvb926dbNXXnklTc85b948l12lwJMCUFK/fn3bsGGD9evXz9q2beteL5Tvv//eBg4caE899ZT179/fP10BMgAAAAAAAER5ZlTBggXtwIED7u/ixYvbH3/84Z937Ngx/7y0+OCDDyx//vzWpk2boOldunSxv//+25YtW5bkY19++WXLnTu33XPPPWl+XQAAAAAAAGTxYFT16tXt999/92cvDR8+3L788ktbvny5DR061GrWrJmukfmqVKliOXIEJ2zVqFHDPz8pS5cudY+dMWOGVapUyWVQnX322fbQQw/RTQ8AAAAAACDau+mpG56XDTVs2DC76qqrXOFwL2tKXe7SaufOnVahQoVE0wsXLuyfn5QtW7bY9u3brU+fPq64+gUXXGALFy50daQ2bdpkb7/9drKvvW3bNvf4QGvXrk3zewAAAAAAAEAmBKNuueUW/9/ly5d3WVKLFi1y9aNU1NwLIKWVHp+eeSdPnrR9+/bZtGnT7NZbb/VnbKm74AsvvGCPP/64VaxYMcnHjx071i0DAAAAAACALNhNL6F8+fJZ8+bN7YYbbkh3IKpIkSIhs5927drl7pN7Xj1WmjRpEjS9WbNm7v6HH35I9rU16p66AQbeZs2ala73AQAAAAAAgAzOjMoMqkOlzKbjx48H1Y1auXKlu69WrVqSj1Vdqa1btyaa7vP53P1ppyUfd1MRdt0AAAAAAAAQBZlRGaFVq1a2f/9+V4Q80OTJk61UqVJWu3btJB970003ufuPP/44aLpqVykQdemll2ZSqwEAAAAAABCVmVHqUte4cWO78847be/eva7GkzKlPvnkE5syZYobIc8rnq4A1bp166xcuXJuWpcuXWz8+PGuu92OHTtcAfMFCxbYmDFj3DRvOQAAAAAAAEROlgpGycyZM23gwIE2aNAgVyuqcuXKQUXJ5cSJE+7mdcGTnDlz2vz58+2RRx6x4cOHu8eqsLpG07v//vsj9G4AAAAAAACQpYNR+fPnt9GjR7tbUiZNmuRuCanA+SuvvOJuAAAAAAAAyHqyVM0oAAAAAAAAxLZ0B6OOHTtmTz75pKvNlC9fPlfPKfAWOBoeAAAAAAAAIOmOGD388MM2atQoV3S8ZcuWljt3btYoAAAAAAAAMicY9e6777oi44MHD07vUwAAAAAAACDOpLub3n///WfXXHNNxrYGAAAAAAAAMS3dwSgFon788ceMbQ0AAAAAAABiWrqDUS+++KJNmDDBZs6caUePHs3YVgEAAAAAACAmpbtmVK1atdyIem3atLFs2bJZ3rx5g+Zr2p49ezKijQAAAAAAAIj3YNRNN93kAk4AAAAAAABApgejJk2alN6HAgAAAAAAIE6lu2YUAAAAAAAAELbMKM+qVavs119/tUOHDiWa17Fjx1N9egAAAAAAAMSQdAejDh48aDfeeKMtWrTI1Y7y+XxuemAdKYJRAAAAAAAAyJBuek888YStX7/ePv/8cxeImjlzps2fP99at25t5513nv3www/pfWoAAAAAAADEqHQHo2bPnm0DBgywOnXquP+XLVvWGjZsaO+9955ddNFFNm7cuIxsJwAAAAAAAOI5GKWsqMqVK1v27Nld1zx12/O0b9/eZs2alVFtBAAAAAAAQLwHowoWLGgHDhxwfxcvXtz++OMP/7xjx4755wEAAAAAAACnHIyqXr26/f777+7v+vXr2/Dhw+3LL7+05cuX29ChQ61mzZrpfWoAAAAAAADEqHSPptetWzd/NtSwYcPsqquusrp16/qzpubNm5dxrQQAAAAAAEB8B6NuueUW/9/ly5d3WVKLFi1y9aNU1Lxw4cIZ1UYAAAAAAADEezAqoXz58lnz5s0z6ukAAAAAAAAQg9JdM0qOHDli48ePt3bt2lnjxo393fZmz55tf/75Z0a1EQAAAAAAAPGeGbVjxw5XuPyXX36xkiVL2r///mv79u1z82bNmmWffvqpjR07NiPbCgAAAAAAgHjNjOrfv7/t3r3bvvvuO9u4caP5fD7/PAWpPv/884xqIwAAAAAAAOI9M2rOnDk2cuRIu+iii+zEiRNB884++2zbvHlzRrQPAAAAAAAAMSTdmVF79+61cuXKhZx37NgxO378+Km0CwAAAAAAADEo3cGo8uXL2zfffBNy3vLly61SpUqn0i4AAAAAAADEoHQHo9q3b++66WnkPK9eVLZs2WzFihU2evRou/322zOynQAAAAAAAIjnmlEDBgywr776ylq1amWFChVy05o0aWI7d+60pk2b2r333puR7QQAAAAAAEA8B6Ny5sxp8+bNs3feecfmzp1r//77rxUtWtRuuOEGu/XWW+2009KddAUAAAAAAIAYdUoRI3XLU+Dprbfess8++8ymTp1qt9122ykFovbv3299+/a1UqVKWZ48eaxWrVo2ffr0ND/Po48+6tpXrVq1dLcFAAAAAAAAWSQzKrO0bt3a1Z0aMWKEnX/++S7A1a5dOzt58qQLdKXGjz/+aM8++6yVKFEi09sLAAAAAACATApGNWjQINXLKitp4cKFaXl61+1v/vz5/gCU1K9f3zZs2GD9+vWztm3bWvbs2ZN9juPHj1uXLl2sV69e9tNPP9mOHTvS1AYAAAAAAABknjT1p1N2kkbOS81Ny6bVBx98YPnz57c2bdoETVdw6e+//7Zly5al+BzKqNq1a5cNGzYsza8PAAAAAACALJQZtWTJksxriZmtWrXKqlSpYjlyBDerRo0a/vl16tRJ8vGrV6+2J5980mbOnOmCWgAAAAAAAMhaslTNqJ07d1qFChUSTS9cuLB/flKUidW1a1dX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aIXopJPVCRMm2LRp06xu3bp2991327XXXmszZ84kEBVj+vbta7/++muKy6kIrgajQPS6/PLL3TH85ZdfWtWqVV0gqnPnzlz8jREaYODIkSORbgbCTOfSqvn29ttvW5UqVWzhwoVusCgkj2AUbO3ate6LUaOvia7SeIUWlVXx6quvspaikEbp2Llzp///Gq1DmW4rV64MWk6R++effz4CLURGSqoQJgUyY0vDhg3tueees40bN7qAk47d7Nmzu+GFA6l4qgJXiH66yqqCxhoxsXHjxvbhhx+6YcMBRBdlq3o3BRVffPFFd9HwxhtvdAGp//77L2gZRG/2208//eT/vy4YdezY0Q02gthSo0aNoNsnn3ziputYVsZ64LyaNWtGurlZUugxCBFXvKEoddJ65pln2ubNm/3zNDy8hhJHbAg10gNip0uPF1BO2PUjcLqO8z179oS5dcjIK28avaV8+fJuuyrIrFGXEgae3nnnHbvqqqtY8VFKWcmhAsnKpND3ciCO6dgwb948d8zqdxhik47dUMe1Asy6JaTPd0T/b+2TJ0/alClTXPZjuXLlItYuZLzChQsnOqaVxYzUIxgFly2jmjNy6aWX2muvvea6BuhER1lRqk8AIOvy6skg9qmWn7Ke9NmsK+dXXHGFG1I4kGrCXXnlldahQ4eItROn5qabbiKrMc40b97cdbu97LLL/Cew9erVc9009TsN0W/QoEEc10AMWbJkSaSbEPUIRsF171i6dKk7oVXdqCZNmrj6M8qYUjFNFTgHkHVRPyS+lC5d2h5//PEk56tO2EsvvWTHjx8Pa7uQcTTQBOI7m0L/VyacBilAbBgyZEikmwAAWQrBKLgrNZ4GDRrY119/7YqlKjPq+uuvd91/EL0Re6/bpa6yKpV08eLFtn79+kTLtm7dOgItBJAZxVOVTaEimsqSAgAA4ROqOyY1PGPPm2++6c6VixQp4p/2999/W4kSJVw9T49K3mikzKFDh0aopVlXNh9FZICYFKp+UFL0BUltguilbh3KpLjgggv80xYtWmS1a9e2fPnyRbRtCA9lseoigoJQK1ascFkVGphCFxcQffSDtXv37laqVCn/NG3LWrVqWd68eYNGSFW2hX4QI/q/szXCrddNT9/JOXPmtO+++84uuuiiSDcPGUgXBNX7QN2uPbNnz7bff//dKlas6C+Vgeik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Eu5qqn7Mqmi9ul9qWysQ1aJFC7vnnnsSbXsAWdPVV1/tMmNScs455zCSXhTjezo+rV271i6//HLXHVeOHj3q7pUV9cADD9irr74a4RZmTQSjACBGqZB1+/btXRcfnbT+888/7sQWsYUMmfg5kVXR+q1bt9orr7xilStXdldia9WqFemmAUiFvn372q+//pricrpopMEpEDv4no59OXLk8Gc2qnan6r55ihYtalu2bIlg67IuglEAEEPUreeJJ55wtSkaN25s06dPtyNHjtgzzzxjGzdudF19AGRtdPMAACB6KEtdv8Hl0ksvdbXhVEJBGezKilLGIxIjGAUAUU5fdu+9956rJaMg1ODBg92VmSFDhrj6FLoid8kll/iv2gDI2ujmAcQeDUigkfIAxJ7rrrvOli5d6v5W3Sj1TihYsKAVLlzYZsyYQc+EJHBmAgBRrlSpUrZr1y7LkyePG4FHI25pSHivXhRiy5IlS/zp3ydPnnSBx8WLF9v69esTLdu6desItBCZgW4eQPQPTPDNN9/YZZdd5v/8rlevnhs5U1kViB18T8cfjaDn0W/wr7/+2vVO0G+066+/3urXrx/R9mVV2Xz8ugGAqKZiifqy05fffffdZ82aNfOPxqNgVKFChdwPo2uuuSbSTcUp8gpjpob2AYYGj97trFERvZNWbcecOXPad999ZxdddFGkmwcgHTiu4wPf00DqkRkFAFFu9uzZ7sqqugAoLVgFyzt37uwypIoUKRLp5iEDKQMKAABkTXxPA6lHMAoAYiD1X7d///3XjbalUXhUqPypp55ymRXKkCEJNjbUrVs30k1AmNDNAwCiD9/T8al8+fL+XgmhaN66devC2qZoQDc9AIhBX3zxhcuWUiHkgwcPumFmb7/9duvZs6dVr1490s0DkAy6eQCxeVwvW7bMjbQV2P32+++/twsvvDDSzQNwCtQjIWEwaseOHa52lH6Dqz6cLhYjGMEoAIhh+/fvt6lTp9obb7xhy5cvp45QlFPB28mTJ7tRE72rr8p6a9GiRdByBQoUcMulJaiBrOPzzz9P0/JciQeyPn0e582bN+hzWd/RCaeJTmoZgCQ68T2NQDt37rTGjRvbI488YjfffDMrJwGCUQAQ5W655RbXJe/cc8/1T/vzzz+tTJky7qqrZ9WqVS4o9fzzz0eopThVH330kd100032ww8/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SwAQjGAUAMSAyy+/3BVRfPXVV23BggX+EXqqV69ujRs3tu7du7vMKQDRgW4eAAAgltFNDwCi3NKlS12h0/z580e6KQAyAN08AABArEt5bGgAQJYfQnj16tWRbgYAAAAApArBKACIcoxDAQAAACCaUDMKAAAgCzl58mSkmwAAAJCpyIwCgBiQLVu2SDcBAAAAAFKFAuYAEAPFjvPmzevuUxO02rNnT1jaBQAAAACh0E0PAGJAvXr1rFixYpFuBgAAAACkiMwoAIhyDAMPAAAAIJpQMwoAAAAAAABhQzAKAAAAAAAAYUMwCgAAAAAAAGFDzSgAAAAAAACEDZlRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAABRol69eu7mWb9+vWXLls0mTZrkn/b111/bkCFDbPfu3Sk+HgAAIBJyRORVAQAAcMrOOuss++abb+zcc88NCkY9/vjj1rlzZytYsGDQ8mPHjmWtAwCAiCMYBQAAEKVy585tl19+eaqXv+CCCzK1PQAAAKlBNz0AAIAU/Pbbb9auXTsrUaKECwCVLVvWOnbsaEeOHHHzV61aZS1atLBChQpZnjx5rFatWjZ58uSg51iyZInrUjdt2jQbOHCglSpVys4880xr1KiRrVmzJmhZn89nTz/9tJUrV84930UXXWQff/xxonYl7Kan7nn9+vVzf5cvX97N002vnVQ3vV27dlnv3r2tdOnSlitXLqtQoYJrn/fePHqeu+++29566y2rUqWK5c2b12rWrGlz5sxh/wEAAGlCZhQAAEAyfvrpJ7vqqqusaNGiNnToUDvvvPPsn3/+sQ8//NCOHj3qAkJ16tSx4sWL24svvmhFihSxKVOmuG5y//77r/Xv3z/o+R555BG78sor7fXXX7e9e/fagAEDrHnz5vbrr79a9uzZ3TLqZqdbt27d7Oabb7ZNmzZZjx497MSJE1apUqUk29q9e3cXXHrppZds5syZrhtfchlRhw8ftvr169u6devc69WoUcO++OILe+qpp+zHH3+0uXPnBi2v/69YscKth/z587uAWatWrVwwTUEsAACA1CAYBQAAkIz777/fcuTIYcuXL7dixYr5p7dv396fjaSg1OLFi61MmTJu2nXXXecKiCvA06tXLytQoID/cQoMKVjlUQDqlltucUEedbnT40aOHOmCPApYeapWreqCWMkFo84++2yXtSUXXnihnXPOOcluW2Vv/fzzz/buu+9amzZt3LTGjRu7QJOCZPPnz3f/9xw6dMgWLFhgZ5xxhvu/MraU4aXHP/TQQ+xHAAAgVeimBwAAkISDBw/a559/7oJFgYGoQIsWLbKGDRv6A1EeZUbp8SowHujGG28M+r+ykWTDhg3uXssrY8kLdnmUfaVuexlJbc+XL5/LvkrYdlm4cGHQdGVReYEoUbdFZYR5bQcAAEgNglEAAABJ+O+//1zXOGUcJWXnzp3+7nCBlDHkzQ+kbnyBVIPKyzoKXL5kyZKJnjPUtFOh19Jzqh5UIAWYlA2WUtu99nttBwAASA2CUQAAAEkoXLiw60a3efPmJNeRAjSqIZXQ33//7e5VayotvIDP1q1bE80LNe1U6LVU10oF0wNt27bNjh8/nua2AwAApAbBKAAAgCScfvrpVrduXXvvvfdsx44dIZdRFz11d/OCT54333zTjTinOlBpoeU1gt7bb78dNP3rr79OVXe4hJlWyVHb9+/fb7NmzUrUdm8+AABARiMYBQAAkIznn3/ejh07ZrVr17bXXnvNFSqfPn263XbbbbZv3z4bPHiw5cyZ09VTUgDp448/tg4dOriR51TcPLB4eWoUKlTIHnzwQfvggw/c6HiffvqpK2SuulWp6aZXvXp1dz969GhXf+q7775z7QylY8eOrmZVp06dbNSoUa44udqsEf9UhL1Ro0bsGwAAIMMxmh4AAEAyatas6UbSU9Dp4YcfdoEdBYUaNGhguXLlcqPbKWtJAZy77rrLZSRVqVLFJk6c6C8EnlZDhw51hcXHjh1rb731llWuXNleeeUVe/bZZ1N8bL169Vw7NVKegmcnT550ATRNT0gZWJo3cOBAe+aZZ2z79u1WunRpFwzT+wUAAMgM2XwJiwQAAAAAAAAAmYRuegAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAAAIG4JRAAAAAAAACBuCUQAAAAAAAAgbglEAAAAAAACwcPl/cJycenVI9TYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "akt_response = vertex_layer_table(\n", + " signaling,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "ax = akt_response.plot.bar(figsize=(10, 3.8), color=[\"#9ecae1\", \"#2166ac\"])\n", + "ax.set_ylim(0, 1.15)\n", + "ax.set_ylabel(\"Boolean activity\")\n", + "ax.set_title(\"AKT measurements and predictions read from AnnNet\")\n", + "ax.legend(frameon=False, ncol=2)\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "akt_response" + ] + }, + { + "cell_type": "markdown", + "id": "reaction-question", + "metadata": { + "tags": [] + }, + "source": [ + "### Which reactions are active after a perturbation?\n", + "\n", + "A reaction may belong to the fitted network but be inactive in a particular condition. The result layers preserve this distinction. For example, MEK inhibition removes activity from the ERK1/2 branch while leaving the route to AKT available." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "reaction-query", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0 egfr -> grb2\n", + "1 grb2 -> sos\n", + "2 pdk1 -> akt\n", + "3 pi3k -> pip3\n", + "4 pip3 -> pdk1\n", + "5 raf1 -> mek12\n", + "6 ras -> pi3k\n", + "7 ras -> raf1\n", + "8 sos -> ras\n", + "9 tgfa -> egfr\n", + "Name: TGFA + MEKi, dtype: object" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def active_reactions_in(network, layer):\n", + " \"\"\"Return the distinct CellNOpt reactions active in one AnnNet layer.\"\"\"\n", + " reactions = set()\n", + " for edge_id in network.layers.layer_edge_set(layer):\n", + " attributes = network.attrs.get_edge_attrs(edge_id)\n", + " if attributes.get(\"selected\") and attributes.get(\"active\"):\n", + " reactions.add(attributes[\"reaction\"])\n", + " return sorted(reactions)\n", + "\n", + "\n", + "condition = \"TGFA + MEKi\"\n", + "pd.Series(active_reactions_in(signaling, condition_layers[condition]), name=condition)" + ] + }, + { + "cell_type": "markdown", + "id": "save-intro", + "metadata": { + "tags": [] + }, + "source": [ + "## 6. Save the analysis and use it again\n", + "\n", + "AnnNet's native format preserves the network, annotations, slices, condition layers, and fitting results. To demonstrate that the saved object is useful on its own, we reopen it and read the AKT result again without using the CORNETO model or its solver variables." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "save-reload", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved analysis: build/annnet-cellnopt-liverdream.annnet\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Observed AKTPredicted AKT
condition
Basal0.080.0
TGFA0.851.0
TGFA + EGFRi0.150.0
TGFA + RASi0.250.0
TGFA + MEKi0.751.0
IGF10.881.0
IGF1 + PI3Ki0.200.0
TGFA + IGF10.901.0
Dual + MEKi0.821.0
\n", + "
" + ], + "text/plain": [ + " Observed AKT Predicted AKT\n", + "condition \n", + "Basal 0.08 0.0\n", + "TGFA 0.85 1.0\n", + "TGFA + EGFRi 0.15 0.0\n", + "TGFA + RASi 0.25 0.0\n", + "TGFA + MEKi 0.75 1.0\n", + "IGF1 0.88 1.0\n", + "IGF1 + PI3Ki 0.20 0.0\n", + "TGFA + IGF1 0.90 1.0\n", + "Dual + MEKi 0.82 1.0" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "output_dir = Path(\"build\")\n", + "output_dir.mkdir(exist_ok=True)\n", + "analysis_path = output_dir / \"annnet-cellnopt-liverdream.annnet\"\n", + "\n", + "an.io.write(signaling, analysis_path, overwrite=True)\n", + "restored = an.io.read(analysis_path)\n", + "\n", + "restored_akt = vertex_layer_table(\n", + " restored,\n", + " condition_layers,\n", + " {\n", + " \"Observed AKT\": (\"akt\", \"observed\"),\n", + " \"Predicted AKT\": (\"akt\", \"predicted\"),\n", + " },\n", + ")\n", + "\n", + "assert restored_akt.equals(akt_response)\n", + "print(\"Saved analysis:\", analysis_path)\n", + "restored_akt" + ] + }, + { + "cell_type": "markdown", + "id": "why-annnet", + "metadata": { + "tags": [] + }, + "source": [ + "## What does AnnNet add?\n", + "\n", + "AnnNet is the central graph object for the analysis. It provides a common place for the biological network, experimental data, and inferred results:\n", + "\n", + "- **Proteins keep the same identity across conditions.** AKT is one protein with different measurements and predictions in different layers.\n", + "- **The candidate and fitted networks coexist.** Slices make them easy to compare without overwriting the original pathway.\n", + "- **Results remain connected to the biology.** Predictions and reaction activities are attached to the proteins, interactions, and conditions they describe.\n", + "- **The analysis can be exchanged and extended.** Another researcher can reopen the file, inspect a condition, or add annotations without reconstructing the work from notebook variables.\n", + "- **CORNETO methods can share the same graph object.** CORNETO supplies optimization methods; AnnNet supplies the annotated network that those methods read and enrich.\n", + "\n", + "For a small one-off calculation, separate edge lists and tables may be sufficient. AnnNet becomes particularly useful when an analysis contains many conditions, annotations, or results from several methods and needs to remain reusable beyond the notebook that created it." + ] + }, + { + "cell_type": "markdown", + "id": "limitations", + "metadata": { + "tags": [] + }, + "source": [ + "## Limitations of this example\n", + "\n", + "The normalized measurements are synthetic, so the selected pathway is not a new biological result. Their variation illustrates an imperfect fit, but it is not an estimate of experimental noise in HepG2 cells. Different perturbations, measurements, or regularization choices could support a different model.\n", + "\n", + "CellNOptDAG uses the signed protein interactions and condition data needed for this analysis. AnnNet can contain additional annotations and layers that are not used by this particular optimization method; they remain available for other analyses.\n", + "\n", + "CellNOptDAG requires the selected model to have no feedback loops. A feedback interaction can still be biologically plausible even when it is not included in this fitted model. CORNETO also checks that selected reactions connect experimental inputs to measured outputs. This is a mathematical connectivity requirement, not a biochemical flux or a measure of interaction strength.\n", + "\n", + "### Further reading\n", + "\n", + "- Rodriguez-Mier *et al.* [Unifying multi-sample network inference from prior knowledge and omics data with CORNETO](https://doi.org/10.1038/s42256-025-01069-9), *Nature Machine Intelligence* (2025).\n", + "- Prill *et al.* [Crowdsourcing Network Inference: The DREAM Predictive Signaling Network Challenge](https://pmc.ncbi.nlm.nih.gov/articles/PMC3465072/).\n", + "- AnnNet documentation: [layers](https://saezlab.github.io/annnet/reference/core/layers/), [slices](https://saezlab.github.io/annnet/reference/core/slices/), and [native storage](https://saezlab.github.io/annnet/explanations/io-annnet/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/annnet-signaling/pixi.toml b/docs/tutorials/annnet-signaling/pixi.toml new file mode 100644 index 000000000..5de94efe9 --- /dev/null +++ b/docs/tutorials/annnet-signaling/pixi.toml @@ -0,0 +1,16 @@ +[workspace] +name = "annnet-signaling" +channels = ["conda-forge"] +platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] + +[dependencies] +python = "3.11.*" +matplotlib = "==3.10.3" +networkx = "==3.5" +pandas = "==2.3.3" +graphviz = "*" +pip = "*" + +[pypi-dependencies] +corneto = { path = "../../..", editable = true, extras = ["plot"] } +annnet = { git = "https://github.com/saezlab/annnet.git", rev = "e37ab0069c2882154582354ed0ba2b01dd9b1c37", extras = ["polars", "networkx", "zarr_io"] } diff --git a/docs/tutorials/causal/README.md b/docs/tutorials/causal/README.md new file mode 100644 index 000000000..b23ab887f --- /dev/null +++ b/docs/tutorials/causal/README.md @@ -0,0 +1,56 @@ +# Linear DAG discovery on the Sachs dataset + +This tutorial uses `LinearDAGDiscovery` to find a network that helps explain +single-cell signaling measurements from the Sachs study. It includes two +general-stimulation conditions and six conditions with an annotated treatment +target. The notebook selects 100 cells from each condition for a practical run. + +The notebook demonstrates: + +- inspect the measured signals and treatment conditions; +- map treatments to their measured targets; +- fit a network using hard-intervention annotations; +- read the selected arrows and their coefficients; and +- fit an alternative model with estimated treatment offsets. + +The [`LinearDAGDiscovery` guide](../../guide/causal/linear-dag-discovery.ipynb) +covers the method's other options and held-out prediction. The notebook uses +GUROBI, so running its fits requires a working Gurobi license. + +## Run the tutorial + +From the CORNETO repository root, install the tutorial environment and the +checked-out CORNETO source: + +```bash +cd docs/tutorials/causal +pixi install +pixi run python -m pip install -e ../../.. +mkdir -p build +pixi run python -m papermill linear-dag-discovery-sachs.ipynb build/linear-dag-discovery-sachs.ipynb +``` + +From the repository's notebook runner, the equivalent command is: + +```bash +python docs/tutorials/run_notebooks.py causal \ + --editable-corneto --corneto-root . +``` + +The runner writes executed notebooks to `build/` unless `--rewrite` is used. + +## Dataset provenance + +The `v1` dataset contains 7,466 observations of 11 signaling proteins and +phospholipids, together with an `intervention_label` column. It is a +natural-log-transformed, tutorial-oriented representation of the nine measured +conditions in the [Zenodo Sachs dataset](https://doi.org/10.5281/zenodo.7681811) +(version 2); the simulated conditions and ground-truth file are not included. +The source record identifies the data as [CC BY +4.0](https://creativecommons.org/licenses/by/4.0/). The versioned dataset +files are under `datasets/sachs/v1/`; installed users can resolve the same +files with `corneto.datasets.fetch_dataset("sachs")`. + +See `datasets/sachs/v1/README.md` for the transformation, citation, and +attribution, and `datasets/sachs/v1/condition_manifest.csv` for the condition +to target mapping. diff --git a/docs/tutorials/causal/linear-dag-discovery-sachs.ipynb b/docs/tutorials/causal/linear-dag-discovery-sachs.ipynb new file mode 100644 index 000000000..7d71e29e4 --- /dev/null +++ b/docs/tutorials/causal/linear-dag-discovery-sachs.ipynb @@ -0,0 +1,2071 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "00000000", + "metadata": { + "papermill": { + "duration": 0.005965, + "end_time": "2026-09-21T19:12:48.674066", + "exception": false, + "start_time": "2026-09-21T19:12:48.668101", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "# Find an explanatory signaling network in the Sachs data\n", + "\n", + "How might the measured signals in a cell be related, and how do they respond\n", + "when a signaling molecule is perturbed? In this tutorial, we use\n", + "`LinearDAGDiscovery` to fit a small network to single-cell measurements from\n", + "the Sachs study. Sachs and colleagues used Bayesian networks; here we use a\n", + "linear model. An arrow from one signal to another means that the first\n", + "signal helps explain the second in the fitted linear model.\n", + "\n", + "The study used human primary CD4+ T cells. Across experimental conditions,\n", + "researchers stimulated the cells through CD3 and CD28, sometimes added\n", + "ICAM-2, or applied compounds that perturb signaling. After 15 minutes,\n", + "they measured 11 protein and phospholipid signals in individual cells by\n", + "flow cytometry, a technique that records several signals per cell.\n", + "\n", + "The original study called CD3/CD28 and ICAM-2 **general perturbations**.\n", + "In this tutorial, their two conditions are **observational with respect\n", + "to the 11 measured signals**: the cells were stimulated, but no measured\n", + "signal was directly targeted. The **intervention conditions** use more\n", + "specific treatments with an annotated target. Together, these conditions\n", + "show how the signals vary and respond to targeted treatments.\n", + "\n", + "We will load the cell measurements, mark the intervention targets, fit a\n", + "network, and read its selected arrows. We will then try a second way to model\n", + "the interventions. The\n", + "[LinearDAGDiscovery guide](../../guide/causal/linear-dag-discovery.ipynb)\n", + "explains the method and additional modeling options.\n", + "\n", + "Data: [Sachs Zenodo record](https://zenodo.org/records/7681811).\n", + "Original study: [Sachs and colleagues (2005)](https://doi.org/10.1126/science.1105809)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "00000002", + "metadata": { + "papermill": { + "duration": 1.310467, + "end_time": "2026-09-21T19:12:49.993781", + "exception": false, + "start_time": "2026-09-21T19:12:48.683314", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from IPython.display import display\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "import corneto as cn\n", + "from corneto.backend import CvxpyBackend\n", + "from corneto.data import Data\n", + "from corneto.datasets import fetch_dataset\n", + "from corneto.methods import LinearDAGDiscovery\n", + "\n", + "DATASET_DIR = fetch_dataset(\"sachs\")\n", + "DATASET_PATH = DATASET_DIR / \"measurements.tsv\"\n", + "CONDITION_MANIFEST_PATH = DATASET_DIR / \"condition_manifest.csv\"\n", + "NODE_COLUMNS = [\n", + " \"raf\", \"mek\", \"plc\", \"pip2\", \"pip3\", \"erk\",\n", + " \"akt\", \"pka\", \"pkc\", \"p38\", \"jnk\",\n", + "]\n", + "# Use 100 cells per condition for a quicker run; use None for all cells.\n", + "SAMPLES_PER_CONDITION: int | None = 100\n", + "MIN_ABS_COEFFICIENT = 0.25\n", + "SEED = 7\n", + "SOLVE_SECONDS = 300\n", + "LAMBDA_UNEXPLAINED = 1.0\n" + ] + }, + { + "cell_type": "markdown", + "id": "00000001", + "metadata": { + "papermill": { + "duration": 0.002061, + "end_time": "2026-09-21T19:12:48.680803", + "exception": false, + "start_time": "2026-09-21T19:12:48.678742", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 1. Load and inspect the measurements\n", + "\n", + "Each row in the Sachs data represents one cell. The columns below record the\n", + "signals measured in that cell. Most protein measurements indicate\n", + "phosphorylation, a chemical change commonly used to track signaling\n", + "activity. PIP2 and PIP3 are signaling lipids. The values have already\n", + "been transformed with the natural logarithm.\n", + "\n", + "| Column | Biological measurement |\n", + "| --- | --- |\n", + "| `raf` | phosphorylated Raf |\n", + "| `mek` | phosphorylated MEK1/2 |\n", + "| `plc` | phosphorylated PLCγ |\n", + "| `pip2` | PIP2 abundance |\n", + "| `pip3` | PIP3 abundance |\n", + "| `erk` | phosphorylated ERK1/2 |\n", + "| `akt` | phosphorylated Akt |\n", + "| `pka` | PKA-substrate phosphorylation signal |\n", + "| `pkc` | phosphorylated PKC |\n", + "| `p38` | phosphorylated p38 |\n", + "| `jnk` | phosphorylated JNK |\n", + "\n", + "The measurement file contains these 11 signals for each cell. A separate\n", + "condition manifest names the treatment and, when applicable, the measured\n", + "signal treated as its direct target. The next cell joins the two files and\n", + "shows the first few rows of the resulting data frame." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "00000004", + "metadata": { + "papermill": { + "duration": 0.053164, + "end_time": "2026-09-21T19:12:50.050544", + "exception": false, + "start_time": "2026-09-21T19:12:49.997380", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
conditionintervention_labelintervention_targetrafmekakt
0cd3cd28observationalNone3.272.582.83
1cd3cd28observationalNone3.582.803.48
2cd3cd28observationalNone4.083.793.48
3cd3cd28observationalNone4.294.422.47
4cd3cd28observationalNone3.522.993.83
5cd3cd28observationalNone2.931.323.25
6cd3cd28observationalNone3.803.602.88
7cd3cd28observationalNone3.862.713.81
\n", + "
" + ], + "text/plain": [ + " condition intervention_label intervention_target raf mek akt\n", + "0 cd3cd28 observational None 3.27 2.58 2.83\n", + "1 cd3cd28 observational None 3.58 2.80 3.48\n", + "2 cd3cd28 observational None 4.08 3.79 3.48\n", + "3 cd3cd28 observational None 4.29 4.42 2.47\n", + "4 cd3cd28 observational None 3.52 2.99 3.83\n", + "5 cd3cd28 observational None 2.93 1.32 3.25\n", + "6 cd3cd28 observational None 3.80 3.60 2.88\n", + "7 cd3cd28 observational None 3.86 2.71 3.81" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def load_sachs_dataframe(path: Path, manifest_path: Path) -> pd.DataFrame:\n", + " measurements = pd.read_csv(path, sep=\"\\t\")\n", + " manifest = pd.read_csv(manifest_path)\n", + " blocks = []\n", + " cursor = 0\n", + " for row in manifest.itertuples(index=False):\n", + " if row.start_row != cursor or row.stop_row <= cursor:\n", + " raise ValueError(\"Sachs condition rows must be contiguous.\")\n", + " block = measurements.iloc[row.start_row:row.stop_row].copy()\n", + " if not block[\"intervention_label\"].eq(row.archive_label).all():\n", + " raise ValueError(f\"Unexpected archive label for {row.condition}.\")\n", + " block.insert(1, \"condition\", row.condition)\n", + " block.insert(\n", + " 2,\n", + " \"intervention_target\",\n", + " row.intervention_target if pd.notna(row.intervention_target) else None,\n", + " )\n", + " blocks.append(block)\n", + " cursor = row.stop_row\n", + " if cursor != len(measurements):\n", + " raise ValueError(\"The condition manifest does not cover every cell.\")\n", + " return pd.concat(blocks, ignore_index=True)\n", + "\n", + "\n", + "raw = load_sachs_dataframe(DATASET_PATH, CONDITION_MANIFEST_PATH)\n", + "raw[[\"condition\", \"intervention_label\", \"intervention_target\", \"raf\", \"mek\", \"akt\"]].head(8).round(2)" + ] + }, + { + "cell_type": "markdown", + "id": "00000005", + "metadata": { + "papermill": { + "duration": 0.001192, + "end_time": "2026-09-21T19:12:50.053209", + "exception": false, + "start_time": "2026-09-21T19:12:50.052017", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "The first rows come from the CD3/CD28 condition, which has no annotated\n", + "direct target among the measured signals. `condition` names the treatment,\n", + "and `intervention_target` gives its measured target when there is one.\n", + "The archive's `intervention_label` sometimes names a different signal, so\n", + "the model uses the target supplied by the condition manifest." + ] + }, + { + "cell_type": "markdown", + "id": "sachs-select-cells", + "metadata": {}, + "source": [ + "## 2. Choose cells for the analysis\n", + "\n", + "The full file has 7,466 cells across nine conditions. We leave out the\n", + "LY294002 condition because it targets PI3K, which is absent from the\n", + "11 measured signals. This leaves 6,618 cells in eight conditions.\n", + "\n", + "To keep the fitting time manageable, we select 100 cells from each\n", + "remaining condition. The next table shows the direct target, number\n", + "of available cells, and number selected for each condition." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "00000006", + "metadata": { + "papermill": { + "duration": 0.013789, + "end_time": "2026-09-21T19:12:50.068510", + "exception": false, + "start_time": "2026-09-21T19:12:50.054721", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
targetavailable_cellsselected_cells
condition
cd3cd28—853100
cd3cd28_icam2—902100
cd3cd28_aktinhibakt911100
cd3cd28_g0076pkc723100
cd3cd28_psitectpip2810100
cd3cd28_u0126mek799100
cd3cd28_ly—8480
pmapkc913100
b2camppka707100
\n", + "
" + ], + "text/plain": [ + " target available_cells selected_cells\n", + "condition \n", + "cd3cd28 — 853 100\n", + "cd3cd28_icam2 — 902 100\n", + "cd3cd28_aktinhib akt 911 100\n", + "cd3cd28_g0076 pkc 723 100\n", + "cd3cd28_psitect pip2 810 100\n", + "cd3cd28_u0126 mek 799 100\n", + "cd3cd28_ly — 848 0\n", + "pma pkc 913 100\n", + "b2camp pka 707 100" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "analysis_raw = raw.loc[raw[\"condition\"] != \"cd3cd28_ly\"].copy()\n", + "\n", + "\n", + "def stratified_subsample(\n", + " frame: pd.DataFrame,\n", + " samples_per_condition: int | None,\n", + " seed: int,\n", + ") -> pd.DataFrame:\n", + " \"\"\"Keep all rows or take a reproducible sample from each condition.\"\"\"\n", + " if samples_per_condition is None:\n", + " return frame.copy().reset_index(drop=True)\n", + " if samples_per_condition <= 0:\n", + " raise ValueError(\"samples_per_condition must be positive or None\")\n", + " rng = np.random.default_rng(seed)\n", + " selected = []\n", + " for condition, group in frame.groupby(\"condition\", sort=True):\n", + " if len(group) > samples_per_condition:\n", + " indices = rng.choice(group.index.to_numpy(), size=samples_per_condition, replace=False)\n", + " group = group.loc[np.sort(indices)]\n", + " selected.append(group.copy())\n", + " return pd.concat(selected, ignore_index=True)\n", + "\n", + "\n", + "sampled = stratified_subsample(analysis_raw, samples_per_condition=SAMPLES_PER_CONDITION, seed=SEED)\n", + "condition_summary = raw.groupby(\"condition\", sort=False).agg(\n", + " target=(\"intervention_target\", \"first\"),\n", + " available_cells=(\"condition\", \"size\"),\n", + ")\n", + "condition_summary[\"selected_cells\"] = sampled.groupby(\"condition\").size()\n", + "condition_summary[\"selected_cells\"] = condition_summary[\"selected_cells\"].fillna(0).astype(int)\n", + "condition_summary[\"target\"] = condition_summary[\"target\"].fillna(\"—\")\n", + "condition_summary" + ] + }, + { + "cell_type": "markdown", + "id": "00000007", + "metadata": { + "papermill": { + "duration": 0.001209, + "end_time": "2026-09-21T19:12:50.071359", + "exception": false, + "start_time": "2026-09-21T19:12:50.070150", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "A dash in the target column means the condition has no annotated direct\n", + "target among the measured signals. The two general-stimulation conditions\n", + "contribute 200 cells; the six targeted-treatment conditions contribute\n", + "600. Each selected cell remains a separate observation. Set\n", + "`SAMPLES_PER_CONDITION=None` to use all 6,618 retained cells." + ] + }, + { + "cell_type": "markdown", + "id": "00000008", + "metadata": { + "papermill": { + "duration": 0.00115, + "end_time": "2026-09-21T19:12:50.074016", + "exception": false, + "start_time": "2026-09-21T19:12:50.072866", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 3. Describe possible connections and interventions\n", + "\n", + "The Sachs pathway diagram also shows CD3, CD28, ZAP70, PI3K, and other\n", + "components absent from these measurements. Here we model the 11 measured\n", + "signals: `LinearDAGDiscovery` requires observations for every graph vertex.\n", + "An inferred arrow can therefore summarize a path through unmeasured\n", + "components.\n", + "\n", + "Before fitting, we give CORNETO a set of possible arrows between the\n", + "measured signals. For this example, we allow an arrow between every\n", + "pair of different signals, in either direction: 110 candidates. The\n", + "optimizer will select a smaller set without loops that lead back to\n", + "a starting signal. An interaction value of `0` leaves each arrow's\n", + "sign open to be learned from the measurements.\n", + "\n", + "We then turn each cell into a CORNETO sample. Its 11 measured values\n", + "map to the 11 graph vertices. For a treated cell, we mark the directly\n", + "targeted signal with `intervention=\"hard\"`. The fit uses its measured\n", + "value when explaining other signals and skips the target's own equation.\n", + "Cells receiving the same treatment share an `intervention_group`, while\n", + "each cell keeps its own measurements. See the guide's\n", + "{ref}`intervention metadata table `\n", + "for the accepted fields and the alternative shift intervention." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "00000009", + "metadata": { + "papermill": { + "duration": 0.308967, + "end_time": "2026-09-21T19:12:50.384197", + "exception": false, + "start_time": "2026-09-21T19:12:50.075230", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "prior_edges = [\n", + " (source, 0, target)\n", + " for source in NODE_COLUMNS\n", + " for target in NODE_COLUMNS\n", + " if source != target\n", + "]\n", + "prior = cn.Graph.from_tuples(prior_edges)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "0000000a", + "metadata": { + "papermill": { + "duration": 0.029209, + "end_time": "2026-09-21T19:12:50.415173", + "exception": false, + "start_time": "2026-09-21T19:12:50.385964", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "measured signals 11\n", + "candidate arrows 110\n", + "cells used 800\n", + "targeted conditions 6\n", + "Name: value, dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def to_corneto_data(frame: pd.DataFrame, intervention_mode: str = \"hard\") -> Data:\n", + " if intervention_mode not in {\"hard\", \"shift\"}:\n", + " raise ValueError(\"intervention_mode must be 'hard' or 'shift'\")\n", + " samples = {}\n", + " for sample_index, row in frame.iterrows():\n", + " condition = str(row[\"condition\"])\n", + " target = row[\"intervention_target\"]\n", + " sample_name = f\"sachs_{sample_index:04d}_{condition}\"\n", + " samples[sample_name] = {}\n", + " for node in NODE_COLUMNS:\n", + " feature = {\"mapping\": \"vertex\", \"value\": float(row[node])}\n", + " if pd.notna(target) and node == target:\n", + " feature[\"intervention\"] = intervention_mode\n", + " feature[\"intervention_group\"] = condition\n", + " samples[sample_name][node] = feature\n", + " return Data.from_cdict(samples)\n", + "\n", + "\n", + "data = to_corneto_data(sampled)\n", + "targeted_cells = sampled.loc[sampled[\"intervention_target\"].notna()]\n", + "pd.Series(\n", + " {\n", + " \"measured signals\": prior.num_vertices,\n", + " \"candidate arrows\": prior.num_edges,\n", + " \"cells used\": len(data.samples),\n", + " \"targeted conditions\": targeted_cells[\"condition\"].nunique(),\n", + " },\n", + " name=\"value\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "0000000b", + "metadata": { + "papermill": { + "duration": 0.001466, + "end_time": "2026-09-21T19:12:50.418297", + "exception": false, + "start_time": "2026-09-21T19:12:50.416831", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 4. Fit the network\n", + "\n", + "The model predicts each signal from a weighted sum of signals with\n", + "arrows pointing to it. We favor fewer arrows, allow at most three\n", + "arrows into each signal, and require selected arrows to have a\n", + "normalized coefficient of at least `0.25`. We also favor connections\n", + "from treated targets to measured responses. The guide explains these\n", + "{ref}`model choices ` in detail.\n", + "\n", + "This example uses GUROBI with a 300-second time limit. The result\n", + "shows how many arrows were selected and the solver status. A status of\n", + "`user_limit` means the time limit was reached; the selected network\n", + "may improve with more solve time.\n", + "\n", + "The {ref}`guide's prediction workflow ` shows how\n", + "to assess a fitted model on held-out cells or conditions." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0000000c", + "metadata": { + "papermill": { + "duration": 300.302974, + "end_time": "2026-09-21T19:17:50.723041", + "exception": false, + "start_time": "2026-09-21T19:12:50.420067", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
intervention modelsolver statusselected arrowssolve time (s)
0harduser_limit22300.045893
\n", + "
" + ], + "text/plain": [ + " intervention model solver status selected arrows solve time (s)\n", + "0 hard user_limit 22 300.045893" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def selected_edge_count(problem) -> int | None:\n", + " values = problem.expr.edge_selected.value\n", + " if values is None:\n", + " return None\n", + " return int((np.asarray(values).reshape(-1) > 0.5).sum())\n", + "\n", + "\n", + "def require_usable_solution(problem, solved) -> None:\n", + " if solved.value is None or not np.isfinite(solved.value):\n", + " raise RuntimeError(f\"The solver returned no usable solution ({solved.status}).\")\n", + " if problem.expr.edge_selected.value is None:\n", + " raise RuntimeError(f\"The solver returned no edge-selection values ({solved.status}).\")\n", + "\n", + "\n", + "def fit_summary(label: str, problem, solved) -> dict:\n", + " return {\n", + " \"intervention model\": label,\n", + " \"solver status\": str(solved.status),\n", + " \"selected arrows\": selected_edge_count(problem),\n", + " \"solve time (s)\": getattr(solved.solver_stats, \"solve_time\", None),\n", + " }\n", + "\n", + "\n", + "def fit_model(fit_data: Data, **method_options):\n", + " method = LinearDAGDiscovery(\n", + " lambda_edges=0.03,\n", + " max_parents=3,\n", + " min_abs_coefficient=MIN_ABS_COEFFICIENT,\n", + " lambda_unexplained=LAMBDA_UNEXPLAINED,\n", + " backend=CvxpyBackend(),\n", + " **method_options,\n", + " )\n", + " problem = method.build(prior, fit_data)\n", + " solved = problem.solve(\n", + " solver=\"GUROBI\",\n", + " max_seconds=SOLVE_SECONDS,\n", + " verbosity=0,\n", + " IntegralityFocus=1,\n", + " )\n", + " require_usable_solution(problem, solved)\n", + " return method, problem, solved\n", + "\n", + "\n", + "exact_method, exact_problem, exact_solved = fit_model(data)\n", + "hard_fit_summary = pd.DataFrame([fit_summary(\"hard\", exact_problem, exact_solved)])\n", + "hard_fit_summary" + ] + }, + { + "cell_type": "markdown", + "id": "0000000d", + "metadata": { + "papermill": { + "duration": 0.002175, + "end_time": "2026-09-21T19:17:50.727628", + "exception": false, + "start_time": "2026-09-21T19:17:50.725453", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 5. Examine the selected arrows\n", + "\n", + "Each row of the table below is an arrow in the fitted network.\n", + "`coefficient` tells us how much the model's predicted target signal\n", + "changes when its source signal increases by one unit, with the other\n", + "selected inputs held fixed. `normalized_coefficient` rescales that\n", + "slope so the `0.25` threshold can be applied across signal pairs.\n", + "The `sign` column summarizes whether the fitted relationship is\n", + "positive or negative. The guide explains the remaining\n", + "{ref}`edge fields `." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0000000e", + "metadata": { + "papermill": { + "duration": 0.01134, + "end_time": "2026-09-21T19:17:50.741123", + "exception": false, + "start_time": "2026-09-21T19:17:50.729783", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
sourcetargetcoefficientnormalized_coefficientsign
1mekraf0.5939700.923388positive
11akterk0.8784600.820500positive
14pkcmek0.8075020.638058positive
18pkcjnk0.6908710.608625positive
17pkcp380.5918430.570519positive
19p38pka-0.611769-0.567900negative
2mekerk-0.332300-0.546553negative
6mekjnk0.4287360.477999positive
4mekpka-0.417555-0.472875negative
3mekakt0.2430350.427971positive
7pip2plc0.3084200.406950positive
13pkapip2-0.441460-0.403002negative
8pip3pip20.6881530.374042positive
12pkaplc-0.299091-0.360261negative
5mekp380.2579650.314708positive
16pkcakt0.1941900.270202positive
20jnkpip3-0.146542-0.250000negative
0rafjnk-0.348597-0.250000negative
15pkcerk0.1923630.250000positive
10aktplc0.3227300.250000positive
9erkpip20.3977350.250000positive
21jnkp380.2284700.250000positive
\n", + "
" + ], + "text/plain": [ + " source target coefficient normalized_coefficient sign\n", + "1 mek raf 0.593970 0.923388 positive\n", + "11 akt erk 0.878460 0.820500 positive\n", + "14 pkc mek 0.807502 0.638058 positive\n", + "18 pkc jnk 0.690871 0.608625 positive\n", + "17 pkc p38 0.591843 0.570519 positive\n", + "19 p38 pka -0.611769 -0.567900 negative\n", + "2 mek erk -0.332300 -0.546553 negative\n", + "6 mek jnk 0.428736 0.477999 positive\n", + "4 mek pka -0.417555 -0.472875 negative\n", + "3 mek akt 0.243035 0.427971 positive\n", + "7 pip2 plc 0.308420 0.406950 positive\n", + "13 pka pip2 -0.441460 -0.403002 negative\n", + "8 pip3 pip2 0.688153 0.374042 positive\n", + "12 pka plc -0.299091 -0.360261 negative\n", + "5 mek p38 0.257965 0.314708 positive\n", + "16 pkc akt 0.194190 0.270202 positive\n", + "20 jnk pip3 -0.146542 -0.250000 negative\n", + "0 raf jnk -0.348597 -0.250000 negative\n", + "15 pkc erk 0.192363 0.250000 positive\n", + "10 akt plc 0.322730 0.250000 positive\n", + "9 erk pip2 0.397735 0.250000 positive\n", + "21 jnk p38 0.228470 0.250000 positive" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def solution_edge_table(method) -> pd.DataFrame:\n", + " graph = method.get_solution_graph()\n", + " rows = []\n", + " for edge_index, (source_set, target_set) in enumerate(graph.E):\n", + " attributes = graph.get_attr_edge(edge_index)\n", + " rows.append(\n", + " {\n", + " \"source\": next(iter(source_set)),\n", + " \"target\": next(iter(target_set)),\n", + " \"coefficient\": attributes[\"coefficient\"],\n", + " \"normalized_coefficient\": attributes[\"normalized_coefficient\"],\n", + " \"sign\": \"positive\" if attributes[\"coefficient\"] > 0 else \"negative\",\n", + " }\n", + " )\n", + " columns = [\"source\", \"target\", \"coefficient\", \"normalized_coefficient\", \"sign\"]\n", + " result = pd.DataFrame(rows, columns=columns)\n", + " if result.empty:\n", + " return result\n", + " return result.sort_values(\"normalized_coefficient\", key=np.abs, ascending=False)\n", + "\n", + "\n", + "exact_edges = solution_edge_table(exact_method)\n", + "exact_edges" + ] + }, + { + "cell_type": "markdown", + "id": "0000000f", + "metadata": { + "papermill": { + "duration": 0.002195, + "end_time": "2026-09-21T19:17:50.745758", + "exception": false, + "start_time": "2026-09-21T19:17:50.743563", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "The network plot makes the table easier to scan: blue arrows have positive\n", + "fitted coefficients, orange arrows have negative ones, and labels show their\n", + "coefficient values. Pick an arrow in the plot and find the same source and\n", + "target in the table. A positive coefficient means the model predicts a higher\n", + "target signal when its source is one unit higher on the log scale, with the\n", + "other selected inputs held fixed; a negative coefficient means it predicts\n", + "a lower target signal. These are slopes in the fitted equations. Biological\n", + "interpretation requires the assumptions discussed in the guide." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "00000010", + "metadata": { + "papermill": { + "duration": 0.394283, + "end_time": "2026-09-21T19:17:51.142425", + "exception": false, + "start_time": "2026-09-21T19:17:50.748142", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Selected edges (fitted coefficients)\n", + "\n", + "\n", + "raf\n", + "\n", + "raf\n", + "\n", + "\n", + "\n", + "jnk\n", + "\n", + "jnk\n", + "\n", + "\n", + "\n", + "raf->jnk\n", + "\n", + "\n", + "\n", + "-0.35\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "jnk->p38\n", + "\n", + "\n", + "+0.23\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "pip3\n", + "\n", + "\n", + "\n", + "jnk->pip3\n", + "\n", + "\n", + "\n", + "-0.15\n", + "\n", + "\n", + "\n", + "mek\n", + "\n", + "mek\n", + "\n", + "\n", + "\n", + "mek->raf\n", + "\n", + "\n", + "+0.59\n", + "\n", + "\n", + "\n", + "mek->jnk\n", + "\n", + "\n", + "+0.43\n", + "\n", + "\n", + "\n", + "erk\n", + "\n", + "erk\n", + "\n", + "\n", + "\n", + "mek->erk\n", + "\n", + "\n", + "\n", + "-0.33\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "akt\n", + "\n", + "\n", + "\n", + "mek->akt\n", + "\n", + "\n", + "+0.24\n", + "\n", + "\n", + "\n", + "pka\n", + "\n", + "pka\n", + "\n", + "\n", + "\n", + "mek->pka\n", + "\n", + "\n", + "\n", + "-0.42\n", + "\n", + "\n", + "\n", + "mek->p38\n", + "\n", + "\n", + "+0.26\n", + "\n", + "\n", + "\n", + "pip2\n", + "\n", + "pip2\n", + "\n", + "\n", + "\n", + "erk->pip2\n", + "\n", + "\n", + "+0.40\n", + "\n", + "\n", + "\n", + "akt->erk\n", + "\n", + "\n", + "+0.88\n", + "\n", + "\n", + "\n", + "plc\n", + "\n", + "plc\n", + "\n", + "\n", + "\n", + "akt->plc\n", + "\n", + "\n", + "+0.32\n", + "\n", + "\n", + "\n", + "pka->pip2\n", + "\n", + "\n", + "\n", + "-0.44\n", + "\n", + "\n", + "\n", + "pka->plc\n", + "\n", + "\n", + "\n", + "-0.30\n", + "\n", + "\n", + "\n", + "p38->pka\n", + "\n", + "\n", + "\n", + "-0.61\n", + "\n", + "\n", + "\n", + "pip2->plc\n", + "\n", + "\n", + "+0.31\n", + "\n", + "\n", + "\n", + "pip3->pip2\n", + "\n", + "\n", + "+0.69\n", + "\n", + "\n", + "\n", + "pkc\n", + "\n", + "pkc\n", + "\n", + "\n", + "\n", + "pkc->jnk\n", + "\n", + "\n", + "+0.69\n", + "\n", + "\n", + "\n", + "pkc->mek\n", + "\n", + "\n", + "+0.81\n", + "\n", + "\n", + "\n", + "pkc->erk\n", + "\n", + "\n", + "+0.19\n", + "\n", + "\n", + "\n", + "pkc->akt\n", + "\n", + "\n", + "+0.19\n", + "\n", + "\n", + "\n", + "pkc->p38\n", + "\n", + "\n", + "+0.59\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "solution_graph = exact_method.get_solution_graph()\n", + "edge_styles = {}\n", + "for edge_index, row in exact_edges.iterrows():\n", + " edge_styles[int(edge_index)] = {\n", + " \"color\": \"#0072B2\" if row[\"coefficient\"] >= 0 else \"#D55E00\",\n", + " \"fontcolor\": \"#333333\",\n", + " \"label\": f\"{row['coefficient']:+.2f}\",\n", + " \"penwidth\": \"2.5\",\n", + " }\n", + "assert set(edge_styles) == set(range(solution_graph.num_edges))\n", + "display(\n", + " solution_graph.plot(\n", + " renderer=\"graphviz\",\n", + " custom_edge_attr=edge_styles,\n", + " graph_attr={\"rankdir\": \"LR\", \"label\": \"Selected edges (fitted coefficients)\", \"labelloc\": \"t\"},\n", + " )\n", + ")\n" + ] + }, + { + "cell_type": "markdown", + "id": "00000011", + "metadata": { + "papermill": { + "duration": 0.00228, + "end_time": "2026-09-21T19:17:51.147063", + "exception": false, + "start_time": "2026-09-21T19:17:51.144783", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 6. Try another intervention model\n", + "\n", + "So far, we modeled each treated target as externally fixed. Here we\n", + "keep its usual equation and let the treatment add an offset. The next\n", + "cell marks those targets with `intervention=\"shift\"` and estimates\n", + "one offset for each target and treatment condition.\n", + "\n", + "The first output compares the solver status and number of selected\n", + "arrows in the two fits. The second lists the estimated offsets. A\n", + "positive offset raises the target's predicted value; a negative\n", + "offset lowers it. These values are on the log-measurement scale and\n", + "describe the fitted condition effect, not the drug dose.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "00000012", + "metadata": { + "papermill": { + "duration": 300.333981, + "end_time": "2026-09-21T19:22:51.483171", + "exception": false, + "start_time": "2026-09-21T19:17:51.149190", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
intervention modelsolver statusselected arrowssolve time (s)
0harduser_limit22300.045893
1additive shiftuser_limit25300.066989
\n", + "
" + ], + "text/plain": [ + " intervention model solver status selected arrows solve time (s)\n", + "0 hard user_limit 22 300.045893\n", + "1 additive shift user_limit 25 300.066989" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
conditiontargetestimated log-scale shift
0b2camppka-2.963049
1cd3cd28_aktinhibakt-0.396231
2cd3cd28_g0076pkc2.058811
3cd3cd28_psitectpip2-3.389326
4cd3cd28_u0126mek3.518794
5pmapkc0.383895
\n", + "
" + ], + "text/plain": [ + " condition target estimated log-scale shift\n", + "0 b2camp pka -2.963049\n", + "1 cd3cd28_aktinhib akt -0.396231\n", + "2 cd3cd28_g0076 pkc 2.058811\n", + "3 cd3cd28_psitect pip2 -3.389326\n", + "4 cd3cd28_u0126 mek 3.518794\n", + "5 pma pkc 0.383895" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "shift_data = to_corneto_data(sampled, intervention_mode=\"shift\")\n", + "shift_method, shift_problem, shift_solved = fit_model(\n", + " shift_data,\n", + " intervention_shift_bound=4.0,\n", + " lambda_intervention_shifts=0.1,\n", + ")\n", + "shift_fit_summary = pd.DataFrame([fit_summary(\"additive shift\", shift_problem, shift_solved)])\n", + "\n", + "# The fitted offset for each treated cell is stored by vertex and sample.\n", + "shift_values = np.asarray(shift_problem.expr.intervention_shift.value)\n", + "shift_rows = []\n", + "for condition, cells in targeted_cells.groupby(\"condition\", sort=True):\n", + " target = cells[\"intervention_target\"].iloc[0]\n", + " target_index = list(prior.V).index(target)\n", + " offsets = shift_values[target_index, cells.index.to_numpy()]\n", + " if not np.allclose(offsets, offsets[0]):\n", + " raise RuntimeError(f\"Inconsistent fitted shifts for {condition}.\")\n", + " shift_rows.append(\n", + " {\n", + " \"condition\": condition,\n", + " \"target\": target,\n", + " \"estimated log-scale shift\": float(offsets[0]),\n", + " }\n", + " )\n", + "\n", + "display(pd.concat([hard_fit_summary, shift_fit_summary], ignore_index=True))\n", + "pd.DataFrame(shift_rows)" + ] + }, + { + "cell_type": "markdown", + "id": "sachs-shift-plot-intro", + "metadata": {}, + "source": [ + "The plot below shows the network selected by the shift fit. Solid blue and\n", + "orange arrows connect measured signals; their labels are fitted\n", + "coefficients. Dashed purple arrows show the treatments. Each is labeled\n", + "with the treatment name and its learned shift, and points to the measured\n", + "target. Two treatments point to PKC because each has its own estimated\n", + "effect on that signal. The purple **Treatments** box only groups these\n", + "experimental conditions in the picture; it is not a measured signal or\n", + "a variable in the fitted network." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "sachs-shift-network-plot", + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Shift fit: selected network and learned treatment effects\n", + "\n", + "\n", + "mek\n", + "\n", + "mek\n", + "\n", + "\n", + "\n", + "raf\n", + "\n", + "raf\n", + "\n", + "\n", + "\n", + "mek->raf\n", + "\n", + "\n", + "+0.54\n", + "\n", + "\n", + "\n", + "erk\n", + "\n", + "erk\n", + "\n", + "\n", + "\n", + "mek->erk\n", + "\n", + "\n", + "-0.33\n", + "\n", + "\n", + "\n", + "akt\n", + "\n", + "akt\n", + "\n", + "\n", + "\n", + "mek->akt\n", + "\n", + "\n", + "+0.24\n", + "\n", + "\n", + "\n", + "pka\n", + "\n", + "pka\n", + "\n", + "\n", + "\n", + "mek->pka\n", + "\n", + "\n", + "-0.56\n", + "\n", + "\n", + "\n", + "p38\n", + "\n", + "p38\n", + "\n", + "\n", + "\n", + "mek->p38\n", + "\n", + "\n", + "+0.26\n", + "\n", + "\n", + "\n", + "plc\n", + "\n", + "plc\n", + "\n", + "\n", + "\n", + "erk->plc\n", + "\n", + "\n", + "+0.30\n", + "\n", + "\n", + "\n", + "pip3\n", + "\n", + "pip3\n", + "\n", + "\n", + "\n", + "erk->pip3\n", + "\n", + "\n", + "-0.22\n", + "\n", + "\n", + "\n", + "akt->erk\n", + "\n", + "\n", + "+0.88\n", + "\n", + "\n", + "\n", + "pka->plc\n", + "\n", + "\n", + "-0.37\n", + "\n", + "\n", + "\n", + "pka->pip3\n", + "\n", + "\n", + "+0.17\n", + "\n", + "\n", + "\n", + "pip2\n", + "\n", + "pip2\n", + "\n", + "\n", + "\n", + "pka->pip2\n", + "\n", + "\n", + "-0.27\n", + "\n", + "\n", + "\n", + "p38->raf\n", + "\n", + "\n", + "+0.20\n", + "\n", + "\n", + "\n", + "p38->pip2\n", + "\n", + "\n", + "+0.30\n", + "\n", + "\n", + "\n", + "pip2->plc\n", + "\n", + "\n", + "+0.31\n", + "\n", + "\n", + "\n", + "pip2->pip3\n", + "\n", + "\n", + "+0.26\n", + "\n", + "\n", + "\n", + "pkc\n", + "\n", + "pkc\n", + "\n", + "\n", + "\n", + "pkc->mek\n", + "\n", + "\n", + "+0.46\n", + "\n", + "\n", + "\n", + "pkc->raf\n", + "\n", + "\n", + "-0.22\n", + "\n", + "\n", + "\n", + "pkc->erk\n", + "\n", + "\n", + "+0.19\n", + "\n", + "\n", + "\n", + "pkc->akt\n", + "\n", + "\n", + "+0.20\n", + "\n", + "\n", + "\n", + "pkc->pka\n", + "\n", + "\n", + "-0.28\n", + "\n", + "\n", + "\n", + "pkc->p38\n", + "\n", + "\n", + "+0.59\n", + "\n", + "\n", + "\n", + "jnk\n", + "\n", + "jnk\n", + "\n", + "\n", + "\n", + "pkc->jnk\n", + "\n", + "\n", + "+0.89\n", + "\n", + "\n", + "\n", + "jnk->mek\n", + "\n", + "\n", + "+0.41\n", + "\n", + "\n", + "\n", + "jnk->pka\n", + "\n", + "\n", + "-0.25\n", + "\n", + "\n", + "\n", + "jnk->p38\n", + "\n", + "\n", + "+0.23\n", + "\n", + "\n", + "\n", + "treatment_conditions\n", + "\n", + "Treatments\n", + "\n", + "\n", + "\n", + "treatment_conditions->mek\n", + "\n", + "\n", + "U0126\n", + "shift +3.52\n", + "\n", + "\n", + "\n", + "treatment_conditions->akt\n", + "\n", + "\n", + "AKT inhibitor\n", + "shift -0.40\n", + "\n", + "\n", + "\n", + "treatment_conditions->pka\n", + "\n", + "\n", + "β2cAMP\n", + "shift -2.96\n", + "\n", + "\n", + "\n", + "treatment_conditions->pip2\n", + "\n", + "\n", + "Psitect\n", + "shift -3.39\n", + "\n", + "\n", + "\n", + "treatment_conditions->pkc\n", + "\n", + "\n", + "Gö6976\n", + "shift +2.06\n", + "\n", + "\n", + "\n", + "treatment_conditions->pkc\n", + "\n", + "\n", + "PMA\n", + "shift +0.38\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "shift_edges = solution_edge_table(shift_method)\n", + "shift_plot = shift_method.get_solution_graph().copy()\n", + "shift_edge_styles = {}\n", + "for edge_index, row in shift_edges.iterrows():\n", + " shift_edge_styles[int(edge_index)] = {\n", + " \"color\": \"#0072B2\" if row[\"coefficient\"] >= 0 else \"#D55E00\",\n", + " \"fontcolor\": \"#333333\",\n", + " \"label\": f\"{row['coefficient']:+.2f}\",\n", + " \"penwidth\": \"2.5\",\n", + " }\n", + "\n", + "treatment_labels = {\n", + " \"b2camp\": \"β2cAMP\",\n", + " \"cd3cd28_aktinhib\": \"AKT inhibitor\",\n", + " \"cd3cd28_g0076\": \"Gö6976\",\n", + " \"cd3cd28_psitect\": \"Psitect\",\n", + " \"cd3cd28_u0126\": \"U0126\",\n", + " \"pma\": \"PMA\",\n", + "}\n", + "treatment_vertex = \"treatment_conditions\"\n", + "for row in shift_rows:\n", + " edge_index = shift_plot.add_edge(treatment_vertex, row[\"target\"])\n", + " shift_edge_styles[edge_index] = {\n", + " \"color\": \"#7B3294\",\n", + " \"fontcolor\": \"#7B3294\",\n", + " \"style\": \"dashed\",\n", + " \"label\": f\"{treatment_labels[row['condition']]}\\nshift {row['estimated log-scale shift']:+.2f}\",\n", + " \"penwidth\": \"2\",\n", + " }\n", + "\n", + "display(\n", + " shift_plot.plot(\n", + " renderer=\"graphviz\",\n", + " custom_edge_attr=shift_edge_styles,\n", + " custom_vertex_attr={\n", + " treatment_vertex: {\n", + " \"label\": \"Treatments\",\n", + " \"shape\": \"box\",\n", + " \"style\": \"rounded,filled\",\n", + " \"fillcolor\": \"#F3E8F8\",\n", + " \"color\": \"#7B3294\",\n", + " \"fixedsize\": \"false\",\n", + " }\n", + " },\n", + " graph_attr={\"rankdir\": \"LR\", \"label\": \"Shift fit: selected network and learned treatment effects\", \"labelloc\": \"t\"},\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "00000013", + "metadata": { + "papermill": { + "duration": 0.002988, + "end_time": "2026-09-21T19:22:51.489895", + "exception": false, + "start_time": "2026-09-21T19:22:51.486907", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## 7. Final comments\n", + "\n", + "We turned single-cell measurements and treatment annotations into two\n", + "fitted networks. Their selected arrows and coefficients describe\n", + "relationships that help explain the measured signals under each model.\n", + "The dashed treatment arrows in the shift plot show estimated offsets,\n", + "not additional signaling pathways. These results provide hypotheses\n", + "about signaling rather than a verified biological pathway.\n", + "\n", + "For a biological analysis, compare predictions on held-out data and repeat\n", + "the fit with different cell samples, candidate interactions, model settings,\n", + "and solve times. Then examine which arrows remain stable." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.14" + }, + "papermill": { + "default_parameters": {}, + "duration": 604.215521, + "end_time": "2026-09-21T19:22:52.016787", + "environment_variables": {}, + "exception": null, + "input_path": "docs/tutorials/causal/linear-dag-discovery-sachs.ipynb", + "output_path": "/private/tmp/sachs_800_gurobi_executed.ipynb", + "parameters": {}, + "start_time": "2026-09-21T19:12:47.801266", + "version": "2.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/tutorials/causal/pixi.toml b/docs/tutorials/causal/pixi.toml new file mode 100644 index 000000000..4902fe120 --- /dev/null +++ b/docs/tutorials/causal/pixi.toml @@ -0,0 +1,21 @@ +[workspace] +name = "linear_dag_sachs" +channels = ["conda-forge"] +platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] + +[dependencies] +python = "3.11.*" +matplotlib = "==3.10.3" +pandas = "==2.3.3" +python-graphviz = "*" +graphviz = "*" +pip = "*" +ipykernel = "*" +matplotlib-inline = "*" + +[pypi-dependencies] +cvxpy = "==1.6.6" +highspy = "==1.11.0" +gurobipy = "==13.0.1" +corneto = "==1.0.0rc1" +papermill = "==2.6.0" diff --git a/docs/tutorials/contrib/multi_condition_tutorial/multi_condition_carnival.ipynb b/docs/tutorials/contrib/multi_condition_tutorial/multi_condition_carnival.ipynb index 04d2015bc..8bba7846f 100644 --- a/docs/tutorials/contrib/multi_condition_tutorial/multi_condition_carnival.ipynb +++ b/docs/tutorials/contrib/multi_condition_tutorial/multi_condition_carnival.ipynb @@ -5,10 +5,10 @@ "id": "733ed707", "metadata": { "papermill": { - "duration": 0.007795, - "end_time": "2025-06-27T16:26:31.958477", + "duration": 0.014082, + "end_time": "2026-08-06T17:18:33.995397+00:00", "exception": false, - "start_time": "2025-06-27T16:26:31.950682", + "start_time": "2026-08-06T17:18:33.981315+00:00", "status": "completed" }, "tags": [] @@ -22,10 +22,10 @@ "id": "f6d68759", "metadata": { "papermill": { - "duration": 0.005521, - "end_time": "2025-06-27T16:26:31.970289", + "duration": 0.007242, + "end_time": "2026-08-06T17:18:34.009927+00:00", "exception": false, - "start_time": "2025-06-27T16:26:31.964768", + "start_time": "2026-08-06T17:18:34.002685+00:00", "status": "completed" }, "tags": [] @@ -47,16 +47,16 @@ "id": "898d2193", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:31.981279Z", - "iopub.status.busy": "2025-06-27T16:26:31.981112Z", - "iopub.status.idle": "2025-06-27T16:26:35.690468Z", - "shell.execute_reply": "2025-06-27T16:26:35.690235Z" + "iopub.execute_input": "2026-08-06T17:18:34.022895Z", + "iopub.status.busy": "2026-08-06T17:18:34.022755Z", + "iopub.status.idle": "2026-08-06T17:18:39.293179Z", + "shell.execute_reply": "2026-08-06T17:18:39.292438Z" }, "papermill": { - "duration": 3.715461, - "end_time": "2025-06-27T16:26:35.691165", + "duration": 5.277507, + "end_time": "2026-08-06T17:18:39.293705+00:00", "exception": false, - "start_time": "2025-06-27T16:26:31.975704", + "start_time": "2026-08-06T17:18:34.016198+00:00", "status": "completed" }, "tags": [] @@ -77,6 +77,48 @@ "OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead.\n" ] }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:37 | [INFO] Downloading data from `https://omnipathdb.org/queries/enzsub?format=json`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:37 | [INFO] Downloading data from `https://omnipathdb.org/queries/interactions?format=json`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:38 | [INFO] Downloading data from `https://omnipathdb.org/queries/complexes?format=json`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:38 | [INFO] Downloading data from `https://omnipathdb.org/queries/annotations?format=json`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:38 | [INFO] Downloading data from `https://omnipathdb.org/queries/intercell?format=json`\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2026-08-06 19:18:38 | [INFO] Downloading data from `https://omnipathdb.org/about?format=text`\n" + ] + }, { "data": { "text/html": [ @@ -88,17 +130,17 @@ " style=\"width:100%;max-width:100px;\" />\n", " \n", " \n", - "
Installed version:v1.0.0rc1
Available backends:CVXPY v1.9.2
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, SCS, GUROBI, SCIPY, OSQP
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.21; graphviz-wasm
Installed path:/docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto
Repository:https://github.com/saezlab/corneto
\n", + "
Installed version:v1.0.0rc5
Available backends:CVXPY v1.9.1
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, SCS, GUROBI, SCIPY, HIGHS, OSQP
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.21; graphviz-wasm
Installed path:/docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto
Repository:https://github.com/saezlab/corneto
\n", " \n", " \n", " \n", " " ], "text/plain": [ - "Installed version: v1.0.0rc1\n", - "Available backends: CVXPY v1.9.2\n", + "Installed version: v1.0.0rc5\n", + "Available backends: CVXPY v1.9.1\n", "Default backend (corneto.opt): CVXPY\n", - "Installed solvers: CLARABEL, SCS, GUROBI, SCIPY, OSQP\n", + "Installed solvers: CLARABEL, SCS, GUROBI, SCIPY, HIGHS, OSQP\n", "Plot backend (default): auto -> graphviz\n", "Available plot backends: graphviz v0.21; graphviz-wasm\n", "Installed path: /docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto\n", @@ -145,16 +187,16 @@ "id": "abdaf92c", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:35.699557Z", - "iopub.status.busy": "2025-06-27T16:26:35.699364Z", - "iopub.status.idle": "2025-06-27T16:26:35.701274Z", - "shell.execute_reply": "2025-06-27T16:26:35.701023Z" + "iopub.execute_input": "2026-08-06T17:18:39.302901Z", + "iopub.status.busy": "2026-08-06T17:18:39.302707Z", + "iopub.status.idle": "2026-08-06T17:18:39.304423Z", + "shell.execute_reply": "2026-08-06T17:18:39.304021Z" }, "papermill": { - "duration": 0.006679, - "end_time": "2025-06-27T16:26:35.701978", + "duration": 0.007145, + "end_time": "2026-08-06T17:18:39.305025+00:00", "exception": false, - "start_time": "2025-06-27T16:26:35.695299", + "start_time": "2026-08-06T17:18:39.297880+00:00", "status": "completed" }, "tags": [] @@ -171,16 +213,16 @@ "id": "6e5049a7", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:35.710475Z", - "iopub.status.busy": "2025-06-27T16:26:35.710346Z", - "iopub.status.idle": "2025-06-27T16:26:37.153536Z", - "shell.execute_reply": "2025-06-27T16:26:37.153280Z" + "iopub.execute_input": "2026-08-06T17:18:39.314162Z", + "iopub.status.busy": "2026-08-06T17:18:39.314065Z", + "iopub.status.idle": "2026-08-06T17:18:40.407036Z", + "shell.execute_reply": "2026-08-06T17:18:40.406718Z" }, "papermill": { - "duration": 1.448152, - "end_time": "2025-06-27T16:26:37.154216", + "duration": 1.0984, + "end_time": "2026-08-06T17:18:40.407571+00:00", "exception": false, - "start_time": "2025-06-27T16:26:35.706064", + "start_time": "2026-08-06T17:18:39.309171+00:00", "status": "completed" }, "tags": [] @@ -417,16 +459,16 @@ "id": "6da46b87", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:37.162941Z", - "iopub.status.busy": "2025-06-27T16:26:37.162752Z", - "iopub.status.idle": "2025-06-27T16:26:37.167505Z", - "shell.execute_reply": "2025-06-27T16:26:37.167246Z" + "iopub.execute_input": "2026-08-06T17:18:40.417129Z", + "iopub.status.busy": "2026-08-06T17:18:40.417013Z", + "iopub.status.idle": "2026-08-06T17:18:40.421569Z", + "shell.execute_reply": "2026-08-06T17:18:40.421201Z" }, "papermill": { - "duration": 0.009649, - "end_time": "2025-06-27T16:26:37.168160", + "duration": 0.009982, + "end_time": "2026-08-06T17:18:40.421988+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.158511", + "start_time": "2026-08-06T17:18:40.412006+00:00", "status": "completed" }, "tags": [] @@ -454,19 +496,19 @@ { "cell_type": "code", "execution_count": 5, - "id": "040bd32e", + "id": "22acccbb", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:37.176455Z", - "iopub.status.busy": "2025-06-27T16:26:37.176347Z", - "iopub.status.idle": "2025-06-27T16:26:37.179943Z", - "shell.execute_reply": "2025-06-27T16:26:37.179699Z" + "iopub.execute_input": "2026-08-06T17:18:40.430816Z", + "iopub.status.busy": "2026-08-06T17:18:40.430710Z", + "iopub.status.idle": "2026-08-06T17:18:40.434972Z", + "shell.execute_reply": "2026-08-06T17:18:40.434628Z" }, "papermill": { - "duration": 0.008389, - "end_time": "2025-06-27T16:26:37.180556", + "duration": 0.009313, + "end_time": "2026-08-06T17:18:40.435425+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.172167", + "start_time": "2026-08-06T17:18:40.426112+00:00", "status": "completed" }, "tags": [] @@ -488,20 +530,23 @@ } ], "source": [ - "# renaming conditions for clarity\n", + "# Assign conditions explicitly. No sample is silently assigned to the control group.\n", + "sample_ids = adata.obs_names.to_series()\n", + "is_normal = sample_ids.str.match(r\"^(WT|Pax5|Ebf1|PE\\.\\d+$)\")\n", + "is_spontaneous = sample_ids.str.match(r\"^PE\\.Leuk\\.\")\n", + "is_sb = sample_ids.str.match(r\"^SB\")\n", + "\n", + "membership_count = np.column_stack([is_normal, is_spontaneous, is_sb]).sum(axis=1)\n", + "if not np.all(membership_count == 1):\n", + " invalid = sample_ids.index[membership_count != 1].tolist()\n", + " raise ValueError(f\"Samples with ambiguous or unknown condition: {invalid}\")\n", + "\n", "adata.obs[\"condition\"] = np.select(\n", - " [\n", - " adata.obs.index.str.contains(\"WT\"),\n", - " adata.obs.index.str.contains(\"Pax5\"),\n", - " adata.obs.index.str.contains(\"Ebf1\"),\n", - " adata.obs.index.str.contains(\"Leuk\"),\n", - " adata.obs.index.str.contains(\"SB\"),\n", - " ],\n", - " [\"Normal\", \"Normal\", \"Normal\", \"Leukemic_spontaneous\", \"Leukemic_SB\"],\n", - " default=\"Normal\",\n", + " [is_normal, is_spontaneous, is_sb],\n", + " [\"Normal\", \"Leukemic_spontaneous\", \"Leukemic_SB\"],\n", + " default=\"Unknown\",\n", ")\n", - "# Visualize metadata\n", - "adata.obs[\"condition\"].value_counts()" + "adata.obs[\"condition\"].value_counts()\n" ] }, { @@ -509,10 +554,10 @@ "id": "608b1a5d", "metadata": { "papermill": { - "duration": 0.003716, - "end_time": "2025-06-27T16:26:37.188116", + "duration": 0.004012, + "end_time": "2026-08-06T17:18:40.443450+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.184400", + "start_time": "2026-08-06T17:18:40.439438+00:00", "status": "completed" }, "tags": [] @@ -526,42 +571,139 @@ "id": "e1808e39", "metadata": { "papermill": { - "duration": 0.00373, - "end_time": "2025-06-27T16:26:37.195743", + "duration": 0.004171, + "end_time": "2026-08-06T17:18:40.451484+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.192013", + "start_time": "2026-08-06T17:18:40.447313+00:00", "status": "completed" }, "tags": [] }, "source": [ - "We will validate the network for the comparison Leukemic_SB vs Normal (enough samples)" + "Both contrasts use a fixed stratified holdout for lambda selection. The normal split is shared so condition scores remain comparable." ] }, { "cell_type": "code", "execution_count": 6, - "id": "cd7dc0f3", + "id": "holdout-split", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:37.203776Z", - "iopub.status.busy": "2025-06-27T16:26:37.203668Z", - "iopub.status.idle": "2025-06-27T16:26:37.208069Z", - "shell.execute_reply": "2025-06-27T16:26:37.207707Z" + "iopub.execute_input": "2026-08-06T17:18:40.460031Z", + "iopub.status.busy": "2026-08-06T17:18:40.459925Z", + "iopub.status.idle": "2026-08-06T17:18:40.468184Z", + "shell.execute_reply": "2026-08-06T17:18:40.467792Z" }, "papermill": { - "duration": 0.009229, - "end_time": "2025-06-27T16:26:37.208705", + "duration": 0.013392, + "end_time": "2026-08-06T17:18:40.468594+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.199476", + "start_time": "2026-08-06T17:18:40.455202+00:00", "status": "completed" }, "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
contrasttrain_normaltrain_diseasevalidation_normalvalidation_disease
0spontaneous11542
1SB112348
\n", + "
" + ], + "text/plain": [ + " contrast train_normal train_disease validation_normal \\\n", + "0 spontaneous 11 5 4 \n", + "1 SB 11 23 4 \n", + "\n", + " validation_disease \n", + "0 2 \n", + "1 8 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "adata1 = adata[adata.obs[\"condition\"].isin([\"Normal\", \"Leukemic_spontaneous\"])].copy()\n", - "adata2 = adata[adata.obs[\"condition\"].isin([\"Normal\", \"Leukemic_SB\"])].copy()" + "# Use a fixed, stratified biological holdout for lambda selection.\n", + "# The normal split is shared by both contrasts.\n", + "rng = np.random.default_rng(seed)\n", + "\n", + "\n", + "def train_validation_ids(ids, validation_fraction=0.25):\n", + " ids = np.asarray(sorted(ids), dtype=object)\n", + " ids = ids[rng.permutation(len(ids))]\n", + " n_validation = max(2, int(round(len(ids) * validation_fraction)))\n", + " n_validation = min(n_validation, len(ids) - 2)\n", + " return ids[n_validation:], ids[:n_validation]\n", + "\n", + "\n", + "normal_ids = adata.obs_names[adata.obs[\"condition\"] == \"Normal\"]\n", + "spontaneous_ids = adata.obs_names[adata.obs[\"condition\"] == \"Leukemic_spontaneous\"]\n", + "sb_ids = adata.obs_names[adata.obs[\"condition\"] == \"Leukemic_SB\"]\n", + "\n", + "normal_train, normal_validation = train_validation_ids(normal_ids)\n", + "spontaneous_train, spontaneous_validation = train_validation_ids(spontaneous_ids)\n", + "sb_train, sb_validation = train_validation_ids(sb_ids)\n", + "\n", + "adata1 = adata[list(normal_train) + list(spontaneous_train)].copy()\n", + "adata2 = adata[list(normal_train) + list(sb_train)].copy()\n", + "validation_adata1 = adata[list(normal_validation) + list(spontaneous_validation)].copy()\n", + "validation_adata2 = adata[list(normal_validation) + list(sb_validation)].copy()\n", + "\n", + "pd.DataFrame(\n", + " {\n", + " \"contrast\": [\"spontaneous\", \"SB\"],\n", + " \"train_normal\": [len(normal_train)] * 2,\n", + " \"train_disease\": [len(spontaneous_train), len(sb_train)],\n", + " \"validation_normal\": [len(normal_validation)] * 2,\n", + " \"validation_disease\": [len(spontaneous_validation), len(sb_validation)],\n", + " }\n", + ")\n" ] }, { @@ -569,10 +711,10 @@ "id": "07c7d3d3", "metadata": { "papermill": { - "duration": 0.003725, - "end_time": "2025-06-27T16:26:37.216269", + "duration": 0.004263, + "end_time": "2026-08-06T17:18:40.476851+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.212544", + "start_time": "2026-08-06T17:18:40.472588+00:00", "status": "completed" }, "tags": [] @@ -586,10 +728,10 @@ "id": "e7c71295", "metadata": { "papermill": { - "duration": 0.003862, - "end_time": "2025-06-27T16:26:37.223929", + "duration": 0.004058, + "end_time": "2026-08-06T17:18:40.484816+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.220067", + "start_time": "2026-08-06T17:18:40.480758+00:00", "status": "completed" }, "tags": [] @@ -604,16 +746,16 @@ "id": "8d3736fb", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:37.231879Z", - "iopub.status.busy": "2025-06-27T16:26:37.231785Z", - "iopub.status.idle": "2025-06-27T16:26:37.242595Z", - "shell.execute_reply": "2025-06-27T16:26:37.242384Z" + "iopub.execute_input": "2026-08-06T17:18:40.493582Z", + "iopub.status.busy": "2026-08-06T17:18:40.493465Z", + "iopub.status.idle": "2026-08-06T17:18:40.502081Z", + "shell.execute_reply": "2026-08-06T17:18:40.501653Z" }, "papermill": { - "duration": 0.015527, - "end_time": "2025-06-27T16:26:37.243183", + "duration": 0.013804, + "end_time": "2026-08-06T17:18:40.502529+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.227656", + "start_time": "2026-08-06T17:18:40.488725+00:00", "status": "completed" }, "tags": [] @@ -622,7 +764,7 @@ { "data": { "text/plain": [ - "AnnData object with n_obs × n_vars = 22 × 13585\n", + "AnnData object with n_obs × n_vars = 16 × 13599\n", " obs: 'condition'" ] }, @@ -650,16 +792,16 @@ "id": "3e985dfb", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:37.251601Z", - "iopub.status.busy": "2025-06-27T16:26:37.251494Z", - "iopub.status.idle": "2025-06-27T16:26:40.745733Z", - "shell.execute_reply": "2025-06-27T16:26:40.745361Z" + "iopub.execute_input": "2026-08-06T17:18:40.511385Z", + "iopub.status.busy": "2026-08-06T17:18:40.511278Z", + "iopub.status.idle": "2026-08-06T17:18:44.078771Z", + "shell.execute_reply": "2026-08-06T17:18:44.078375Z" }, "papermill": { - "duration": 3.49943, - "end_time": "2025-06-27T16:26:40.746431", + "duration": 3.572902, + "end_time": "2026-08-06T17:18:44.079527+00:00", "exception": false, - "start_time": "2025-06-27T16:26:37.247001", + "start_time": "2026-08-06T17:18:40.506625+00:00", "status": "completed" }, "tags": [] @@ -676,10 +818,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/b4/gwkwsdb93sv11rtztqbm3l040000gn/T/ipykernel_39621/3807548237.py:3: DeprecationWarning: design_factors is deprecated and will soon be removed.Please consider providing a formulaic formula using the design argumentinstead.\n", + "/var/folders/b4/gwkwsdb93sv11rtztqbm3l040000gn/T/ipykernel_6018/3807548237.py:3: DeprecationWarning: design_factors is deprecated and will soon be removed.Please consider providing a formulaic formula using the design argumentinstead.\n", " dds1 = DeseqDataSet(\n", "Fitting size factors...\n", - "... done in 0.01 seconds.\n", + "... done in 0.00 seconds.\n", "\n" ] }, @@ -694,10 +836,10 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.49 seconds.\n", + "... done in 0.47 seconds.\n", "\n", "Fitting dispersion trend curve...\n", - "... done in 0.14 seconds.\n", + "... done in 0.12 seconds.\n", "\n", "Fitting MAP dispersions...\n" ] @@ -706,7 +848,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.69 seconds.\n", + "... done in 0.59 seconds.\n", "\n", "Fitting LFCs...\n" ] @@ -715,21 +857,21 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.42 seconds.\n", + "... done in 0.34 seconds.\n", "\n", "Calculating cook's distance...\n", - "... done in 0.02 seconds.\n", + "... done in 0.01 seconds.\n", "\n", - "Replacing 35 outlier genes.\n", + "Replacing 24 outlier genes.\n", "\n", "Fitting dispersions...\n", "... done in 0.01 seconds.\n", "\n", "Fitting MAP dispersions...\n", - "... done in 0.01 seconds.\n", + "... done in 0.02 seconds.\n", "\n", "Fitting LFCs...\n", - "... done in 0.01 seconds.\n", + "... done in 0.02 seconds.\n", "\n" ] } @@ -752,16 +894,16 @@ "id": "59939567", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:40.755486Z", - "iopub.status.busy": "2025-06-27T16:26:40.755371Z", - "iopub.status.idle": "2025-06-27T16:26:41.102050Z", - "shell.execute_reply": "2025-06-27T16:26:41.101790Z" + "iopub.execute_input": "2026-08-06T17:18:44.089859Z", + "iopub.status.busy": "2026-08-06T17:18:44.089740Z", + "iopub.status.idle": "2026-08-06T17:18:44.360535Z", + "shell.execute_reply": "2026-08-06T17:18:44.360131Z" }, "papermill": { - "duration": 0.351851, - "end_time": "2025-06-27T16:26:41.102751", + "duration": 0.276523, + "end_time": "2026-08-06T17:18:44.361113+00:00", "exception": false, - "start_time": "2025-06-27T16:26:40.750900", + "start_time": "2026-08-06T17:18:44.084590+00:00", "status": "completed" }, "tags": [] @@ -781,40 +923,40 @@ "Log2 fold change & Wald test p-value: condition Leukemic_spontaneous vs Normal\n", " baseMean log2FoldChange lfcSE stat pvalue \\\n", "ID \n", - "Itm2a 319.854773 1.040954 0.173014 6.016588 1.781313e-09 \n", - "Sergef 518.491011 1.165972 0.102390 11.387579 4.822033e-30 \n", - "Fam109a 353.074249 0.270614 0.099379 2.723045 6.468333e-03 \n", - "Dhx9 28622.656109 -0.009588 0.058553 -0.163747 8.699304e-01 \n", - "Ssu72 3007.691599 -0.047053 0.044517 -1.056967 2.905267e-01 \n", + "Itm2a 297.542647 0.893484 0.215371 4.148578 3.345473e-05 \n", + "Sergef 516.318790 1.271089 0.118853 10.694655 1.078196e-26 \n", + "Fam109a 340.369933 0.246593 0.111188 2.217812 2.656763e-02 \n", + "Dhx9 28163.396930 -0.038032 0.069192 -0.549658 5.825541e-01 \n", + "Ssu72 2932.274736 0.002847 0.056434 0.050457 9.597584e-01 \n", "... ... ... ... ... ... \n", - "Ctsw 204.692803 -1.015983 0.513348 -1.979131 4.780130e-02 \n", - "Ryk 82.285327 -2.689443 0.325351 -8.266294 1.381879e-16 \n", - "Rhd 519.107839 -4.933983 0.449260 -10.982454 4.641417e-28 \n", - "Pxmp4 791.774976 -0.367077 0.068277 -5.376307 7.602927e-08 \n", - "Gm25500 9.166514 0.879435 0.429192 2.049048 4.045745e-02 \n", + "Ryk 77.201401 -2.781647 0.394009 -7.059862 1.666677e-12 \n", + "Rhd 378.982439 -4.297269 0.470384 -9.135671 6.500233e-20 \n", + "Pxmp4 787.520768 -0.381142 0.089869 -4.241074 2.224523e-05 \n", + "Gm25500 9.541753 0.665993 0.526790 1.264247 2.061412e-01 \n", + "Prss39 7.693766 0.742798 0.663470 1.119565 2.628993e-01 \n", "\n", " padj \n", "ID \n", - "Itm2a 5.852272e-09 \n", - "Sergef 9.577094e-29 \n", - "Fam109a 1.008288e-02 \n", - "Dhx9 8.900440e-01 \n", - "Ssu72 3.376801e-01 \n", + "Itm2a 7.810706e-05 \n", + "Sergef 2.958178e-25 \n", + "Fam109a 3.984264e-02 \n", + "Dhx9 6.351182e-01 \n", + "Ssu72 9.670747e-01 \n", "... ... \n", - "Ctsw 6.506168e-02 \n", - "Ryk 8.517614e-16 \n", - "Rhd 7.596825e-27 \n", - "Pxmp4 2.123474e-07 \n", - "Gm25500 5.581542e-02 \n", + "Ryk 9.404290e-12 \n", + "Rhd 8.472136e-19 \n", + "Pxmp4 5.345232e-05 \n", + "Gm25500 2.544401e-01 \n", + "Prss39 3.158001e-01 \n", "\n", - "[13585 rows x 6 columns]\n" + "[13599 rows x 6 columns]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.23 seconds.\n", + "... done in 0.22 seconds.\n", "\n" ] } @@ -831,16 +973,16 @@ "id": "f694aac5", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:41.111867Z", - "iopub.status.busy": "2025-06-27T16:26:41.111747Z", - "iopub.status.idle": "2025-06-27T16:26:41.116795Z", - "shell.execute_reply": "2025-06-27T16:26:41.116547Z" + "iopub.execute_input": "2026-08-06T17:18:44.370968Z", + "iopub.status.busy": "2026-08-06T17:18:44.370852Z", + "iopub.status.idle": "2026-08-06T17:18:44.375826Z", + "shell.execute_reply": "2026-08-06T17:18:44.375497Z" }, "papermill": { - "duration": 0.010205, - "end_time": "2025-06-27T16:26:41.117451", + "duration": 0.010821, + "end_time": "2026-08-06T17:18:44.376540+00:00", "exception": false, - "start_time": "2025-06-27T16:26:41.107246", + "start_time": "2026-08-06T17:18:44.365719+00:00", "status": "completed" }, "tags": [] @@ -886,49 +1028,49 @@ " \n", " \n", " \n", - " Polm\n", - " 2883.081884\n", - " -7.255498\n", - " 0.281539\n", - " -25.770836\n", - " 1.883068e-146\n", - " 1.279074e-142\n", + " P2ry13\n", + " 850.345057\n", + " 3.279132\n", + " 0.139851\n", + " 23.447320\n", + " 1.407802e-121\n", + " 9.559678e-118\n", " \n", " \n", - " Egfl6\n", - " 958.998149\n", - " -6.296339\n", - " 0.244241\n", - " -25.779215\n", - " 1.516794e-146\n", - " 1.279074e-142\n", + " Zfp518b\n", + " 587.950374\n", + " -7.670839\n", + " 0.327080\n", + " -23.452452\n", + " 1.247909e-121\n", + " 9.559678e-118\n", " \n", " \n", - " Kdm5b\n", - " 2202.514358\n", - " -5.510307\n", - " 0.220788\n", - " -24.957441\n", - " 1.772980e-137\n", - " 8.028642e-134\n", + " Blvrb\n", + " 1843.921725\n", + " -3.118163\n", + " 0.139554\n", + " -22.343761\n", + " 1.388454e-110\n", + " 6.285531e-107\n", " \n", " \n", - " Milr1\n", - " 1647.365126\n", - " 1.244237\n", - " 0.050208\n", - " 24.781408\n", - " 1.422471e-135\n", - " 4.831069e-132\n", + " Kif19a\n", + " 326.577342\n", + " -5.914527\n", + " 0.269931\n", + " -21.911251\n", + " 2.029295e-106\n", + " 6.889963e-103\n", " \n", " \n", - " Adgre5\n", - " 10346.763067\n", - " -3.102891\n", - " 0.125360\n", - " -24.751915\n", - " 2.956557e-135\n", - " 8.032965e-132\n", + " Zbtb42\n", + " 319.477801\n", + " -2.080728\n", + " 0.099745\n", + " -20.860557\n", + " 1.222398e-96\n", + " 3.320278e-93\n", " \n", " \n", "\n", @@ -937,19 +1079,19 @@ "text/plain": [ " baseMean log2FoldChange lfcSE stat pvalue \\\n", "ID \n", - "Polm 2883.081884 -7.255498 0.281539 -25.770836 1.883068e-146 \n", - "Egfl6 958.998149 -6.296339 0.244241 -25.779215 1.516794e-146 \n", - "Kdm5b 2202.514358 -5.510307 0.220788 -24.957441 1.772980e-137 \n", - "Milr1 1647.365126 1.244237 0.050208 24.781408 1.422471e-135 \n", - "Adgre5 10346.763067 -3.102891 0.125360 -24.751915 2.956557e-135 \n", + "P2ry13 850.345057 3.279132 0.139851 23.447320 1.407802e-121 \n", + "Zfp518b 587.950374 -7.670839 0.327080 -23.452452 1.247909e-121 \n", + "Blvrb 1843.921725 -3.118163 0.139554 -22.343761 1.388454e-110 \n", + "Kif19a 326.577342 -5.914527 0.269931 -21.911251 2.029295e-106 \n", + "Zbtb42 319.477801 -2.080728 0.099745 -20.860557 1.222398e-96 \n", "\n", - " padj \n", - "ID \n", - "Polm 1.279074e-142 \n", - "Egfl6 1.279074e-142 \n", - "Kdm5b 8.028642e-134 \n", - "Milr1 4.831069e-132 \n", - "Adgre5 8.032965e-132 " + " padj \n", + "ID \n", + "P2ry13 9.559678e-118 \n", + "Zfp518b 9.559678e-118 \n", + "Blvrb 6.285531e-107 \n", + "Kif19a 6.889963e-103 \n", + "Zbtb42 3.320278e-93 " ] }, "execution_count": 10, @@ -967,10 +1109,10 @@ "id": "9d225d14", "metadata": { "papermill": { - "duration": 0.004119, - "end_time": "2025-06-27T16:26:41.125903", + "duration": 0.01456, + "end_time": "2026-08-06T17:18:44.395758+00:00", "exception": false, - "start_time": "2025-06-27T16:26:41.121784", + "start_time": "2026-08-06T17:18:44.381198+00:00", "status": "completed" }, "tags": [] @@ -985,16 +1127,16 @@ "id": "db5c29e6", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:41.134833Z", - "iopub.status.busy": "2025-06-27T16:26:41.134709Z", - "iopub.status.idle": "2025-06-27T16:26:41.149591Z", - "shell.execute_reply": "2025-06-27T16:26:41.149323Z" + "iopub.execute_input": "2026-08-06T17:18:44.405462Z", + "iopub.status.busy": "2026-08-06T17:18:44.405354Z", + "iopub.status.idle": "2026-08-06T17:18:44.415403Z", + "shell.execute_reply": "2026-08-06T17:18:44.415055Z" }, "papermill": { - "duration": 0.020297, - "end_time": "2025-06-27T16:26:41.150303", + "duration": 0.015533, + "end_time": "2026-08-06T17:18:44.415921+00:00", "exception": false, - "start_time": "2025-06-27T16:26:41.130006", + "start_time": "2026-08-06T17:18:44.400388+00:00", "status": "completed" }, "tags": [] @@ -1003,7 +1145,7 @@ { "data": { "text/plain": [ - "AnnData object with n_obs × n_vars = 46 × 13404\n", + "AnnData object with n_obs × n_vars = 34 × 13286\n", " obs: 'condition'" ] }, @@ -1031,16 +1173,16 @@ "id": "e89d9909", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:41.159530Z", - "iopub.status.busy": "2025-06-27T16:26:41.159410Z", - "iopub.status.idle": "2025-06-27T16:26:43.521865Z", - "shell.execute_reply": "2025-06-27T16:26:43.521582Z" + "iopub.execute_input": "2026-08-06T17:18:44.425588Z", + "iopub.status.busy": "2026-08-06T17:18:44.425495Z", + "iopub.status.idle": "2026-08-06T17:18:46.519936Z", + "shell.execute_reply": "2026-08-06T17:18:46.519517Z" }, "papermill": { - "duration": 2.367767, - "end_time": "2025-06-27T16:26:43.522638", + "duration": 2.09991, + "end_time": "2026-08-06T17:18:46.520455+00:00", "exception": false, - "start_time": "2025-06-27T16:26:41.154871", + "start_time": "2026-08-06T17:18:44.420545+00:00", "status": "completed" }, "tags": [] @@ -1050,7 +1192,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/var/folders/b4/gwkwsdb93sv11rtztqbm3l040000gn/T/ipykernel_39621/3739200126.py:3: DeprecationWarning: design_factors is deprecated and will soon be removed.Please consider providing a formulaic formula using the design argumentinstead.\n", + "/var/folders/b4/gwkwsdb93sv11rtztqbm3l040000gn/T/ipykernel_6018/3739200126.py:3: DeprecationWarning: design_factors is deprecated and will soon be removed.Please consider providing a formulaic formula using the design argumentinstead.\n", " dds2 = DeseqDataSet(\n", "Fitting size factors...\n", "... done in 0.01 seconds.\n", @@ -1075,7 +1217,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.55 seconds.\n", + "... done in 0.53 seconds.\n", "\n", "Fitting dispersion trend curve...\n", "... done in 0.12 seconds.\n", @@ -1087,7 +1229,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.75 seconds.\n", + "... done in 0.64 seconds.\n", "\n", "Fitting LFCs...\n" ] @@ -1096,21 +1238,21 @@ "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.42 seconds.\n", + "... done in 0.36 seconds.\n", "\n", "Calculating cook's distance...\n", - "... done in 0.02 seconds.\n", + "... done in 0.01 seconds.\n", "\n", - "Replacing 201 outlier genes.\n", + "Replacing 400 outlier genes.\n", "\n", "Fitting dispersions...\n", "... done in 0.04 seconds.\n", "\n", "Fitting MAP dispersions...\n", - "... done in 0.03 seconds.\n", + "... done in 0.04 seconds.\n", "\n", "Fitting LFCs...\n", - "... done in 0.04 seconds.\n", + "... done in 0.02 seconds.\n", "\n" ] } @@ -1133,16 +1275,16 @@ "id": "59f5a51b", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:43.532100Z", - "iopub.status.busy": "2025-06-27T16:26:43.531996Z", - "iopub.status.idle": "2025-06-27T16:26:43.858701Z", - "shell.execute_reply": "2025-06-27T16:26:43.858453Z" + "iopub.execute_input": "2026-08-06T17:18:46.530648Z", + "iopub.status.busy": "2026-08-06T17:18:46.530544Z", + "iopub.status.idle": "2026-08-06T17:18:46.794080Z", + "shell.execute_reply": "2026-08-06T17:18:46.793765Z" }, "papermill": { - "duration": 0.332112, - "end_time": "2025-06-27T16:26:43.859447", + "duration": 0.269301, + "end_time": "2026-08-06T17:18:46.794635+00:00", "exception": false, - "start_time": "2025-06-27T16:26:43.527335", + "start_time": "2026-08-06T17:18:46.525334+00:00", "status": "completed" }, "tags": [] @@ -1162,40 +1304,40 @@ "Log2 fold change & Wald test p-value: condition Leukemic_SB vs Normal\n", " baseMean log2FoldChange lfcSE stat pvalue \\\n", "ID \n", - "Itm2a 336.316323 0.710476 0.224228 3.168537 1.532084e-03 \n", - "Sergef 692.078769 1.218302 0.070644 17.245745 1.204506e-66 \n", - "Fam109a 382.268647 0.329745 0.097073 3.396873 6.816056e-04 \n", - "Dhx9 27794.304719 -0.031645 0.064081 -0.493828 6.214275e-01 \n", - "Ssu72 2994.457694 0.004410 0.061412 0.071816 9.427485e-01 \n", + "Itm2a 354.819498 0.814702 0.274887 2.963769 3.038960e-03 \n", + "Sergef 690.444712 1.247942 0.089243 13.983566 1.963960e-44 \n", + "Fam109a 372.293652 0.304612 0.105585 2.884977 3.914420e-03 \n", + "Dhx9 28125.836843 -0.017291 0.070394 -0.245630 8.059687e-01 \n", + "Ssu72 2943.414653 0.012841 0.071734 0.179011 8.579288e-01 \n", "... ... ... ... ... ... \n", - "Ctsw 151.303280 -1.150780 0.374313 -3.074381 2.109398e-03 \n", - "Ryk 50.267450 -2.400835 0.309995 -7.744751 9.576951e-15 \n", - "Rhd 259.540718 -4.740190 0.424503 -11.166439 5.951916e-29 \n", - "Pxmp4 783.587183 -0.148554 0.095118 -1.561793 1.183368e-01 \n", - "Gm25500 8.618646 0.386326 0.302098 1.278810 2.009639e-01 \n", + "Ctsw 152.509072 -1.282962 0.455445 -2.816943 4.848307e-03 \n", + "Ryk 48.834169 -2.269091 0.335420 -6.764932 1.333718e-11 \n", + "Rhd 192.158985 -4.350260 0.483113 -9.004647 2.163614e-19 \n", + "Pxmp4 779.412902 -0.184564 0.117464 -1.571242 1.161264e-01 \n", + "Gm25500 8.770752 0.167093 0.366501 0.455914 6.484515e-01 \n", "\n", " padj \n", "ID \n", - "Itm2a 2.906320e-03 \n", - "Sergef 2.409731e-64 \n", - "Fam109a 1.365860e-03 \n", - "Dhx9 6.748999e-01 \n", - "Ssu72 9.529865e-01 \n", + "Itm2a 5.951595e-03 \n", + "Sergef 2.438614e-42 \n", + "Fam109a 7.476564e-03 \n", + "Dhx9 8.450873e-01 \n", + "Ssu72 8.875218e-01 \n", "... ... \n", - "Ctsw 3.916660e-03 \n", - "Ryk 6.703365e-14 \n", - "Rhd 1.323043e-27 \n", - "Pxmp4 1.573129e-01 \n", - "Gm25500 2.530503e-01 \n", + "Ctsw 9.094254e-03 \n", + "Ryk 8.976585e-11 \n", + "Rhd 3.401867e-18 \n", + "Pxmp4 1.596332e-01 \n", + "Gm25500 7.073339e-01 \n", "\n", - "[13404 rows x 6 columns]\n" + "[13286 rows x 6 columns]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "... done in 0.23 seconds.\n", + "... done in 0.21 seconds.\n", "\n" ] } @@ -1212,16 +1354,16 @@ "id": "2b55a0ae", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:43.869016Z", - "iopub.status.busy": "2025-06-27T16:26:43.868905Z", - "iopub.status.idle": "2025-06-27T16:26:43.874053Z", - "shell.execute_reply": "2025-06-27T16:26:43.873820Z" + "iopub.execute_input": "2026-08-06T17:18:46.805070Z", + "iopub.status.busy": "2026-08-06T17:18:46.804956Z", + "iopub.status.idle": "2026-08-06T17:18:46.810179Z", + "shell.execute_reply": "2026-08-06T17:18:46.809805Z" }, "papermill": { - "duration": 0.010542, - "end_time": "2025-06-27T16:26:43.874723", + "duration": 0.011077, + "end_time": "2026-08-06T17:18:46.810700+00:00", "exception": false, - "start_time": "2025-06-27T16:26:43.864181", + "start_time": "2026-08-06T17:18:46.799623+00:00", "status": "completed" }, "tags": [] @@ -1268,48 +1410,48 @@ " \n", " \n", " Mfsd2b\n", - " 2252.744179\n", - " -9.412063\n", - " 0.308793\n", - " -30.480193\n", - " 4.769906e-204\n", - " 6.393582e-200\n", + " 2514.371164\n", + " -9.636851\n", + " 0.378623\n", + " -25.452370\n", + " 6.645556e-143\n", + " 8.829286e-139\n", " \n", " \n", - " Itga2b\n", - " 8434.243135\n", - " -11.914356\n", - " 0.401437\n", - " -29.679285\n", - " 1.421308e-193\n", - " 9.525603e-190\n", + " Pf4\n", + " 3805.666665\n", + " -13.199275\n", + " 0.541930\n", + " -24.356055\n", + " 5.001204e-131\n", + " 3.322300e-127\n", " \n", " \n", - " Adgrl4\n", - " 148.349960\n", - " -9.117488\n", - " 0.322229\n", - " -28.295029\n", - " 3.978579e-176\n", - " 1.777629e-172\n", + " Itga2b\n", + " 9515.339854\n", + " -12.057495\n", + " 0.503300\n", + " -23.956866\n", + " 7.836582e-127\n", + " 3.470561e-123\n", " \n", " \n", - " Gp1ba\n", - " 2396.209744\n", - " -8.226071\n", - " 0.323265\n", - " -25.446856\n", - " 7.648486e-143\n", - " 2.563008e-139\n", + " Ppbp\n", + " 19266.371435\n", + " -16.866204\n", + " 0.706022\n", + " -23.889076\n", + " 3.978005e-126\n", + " 1.321294e-122\n", " \n", " \n", - " Ppbp\n", - " 17321.675345\n", - " -15.613716\n", - " 0.621843\n", - " -25.108767\n", - " 3.989417e-139\n", - " 1.069483e-135\n", + " Adgrl4\n", + " 133.471953\n", + " -9.102316\n", + " 0.387205\n", + " -23.507763\n", + " 3.397368e-122\n", + " 9.027486e-119\n", " \n", " \n", "\n", @@ -1318,19 +1460,19 @@ "text/plain": [ " baseMean log2FoldChange lfcSE stat pvalue \\\n", "ID \n", - "Mfsd2b 2252.744179 -9.412063 0.308793 -30.480193 4.769906e-204 \n", - "Itga2b 8434.243135 -11.914356 0.401437 -29.679285 1.421308e-193 \n", - "Adgrl4 148.349960 -9.117488 0.322229 -28.295029 3.978579e-176 \n", - "Gp1ba 2396.209744 -8.226071 0.323265 -25.446856 7.648486e-143 \n", - "Ppbp 17321.675345 -15.613716 0.621843 -25.108767 3.989417e-139 \n", + "Mfsd2b 2514.371164 -9.636851 0.378623 -25.452370 6.645556e-143 \n", + "Pf4 3805.666665 -13.199275 0.541930 -24.356055 5.001204e-131 \n", + "Itga2b 9515.339854 -12.057495 0.503300 -23.956866 7.836582e-127 \n", + "Ppbp 19266.371435 -16.866204 0.706022 -23.889076 3.978005e-126 \n", + "Adgrl4 133.471953 -9.102316 0.387205 -23.507763 3.397368e-122 \n", "\n", " padj \n", "ID \n", - "Mfsd2b 6.393582e-200 \n", - "Itga2b 9.525603e-190 \n", - "Adgrl4 1.777629e-172 \n", - "Gp1ba 2.563008e-139 \n", - "Ppbp 1.069483e-135 " + "Mfsd2b 8.829286e-139 \n", + "Pf4 3.322300e-127 \n", + "Itga2b 3.470561e-123 \n", + "Ppbp 1.321294e-122 \n", + "Adgrl4 9.027486e-119 " ] }, "execution_count": 14, @@ -1343,15 +1485,130 @@ "results_df2.sort_values(by=\"padj\", ascending=True, inplace=False).head()" ] }, + { + "cell_type": "code", + "execution_count": 15, + "id": "holdout-de", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:18:46.820876Z", + "iopub.status.busy": "2026-08-06T17:18:46.820773Z", + "iopub.status.idle": "2026-08-06T17:18:50.899155Z", + "shell.execute_reply": "2026-08-06T17:18:50.898672Z" + }, + "papermill": { + "duration": 4.084438, + "end_time": "2026-08-06T17:18:50.899944+00:00", + "exception": false, + "start_time": "2026-08-06T17:18:46.815506+00:00", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
conditionvalidation_genes
0spontaneous13739
1SB13536
\n", + "
" + ], + "text/plain": [ + " condition validation_genes\n", + "0 spontaneous 13739\n", + "1 SB 13536" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def fit_validation_de(adata_subset, disease_condition):\n", + " validation = adata_subset.copy()\n", + " dc.pp.filter_by_expr(\n", + " validation,\n", + " group=\"condition\",\n", + " min_count=10,\n", + " min_total_count=15,\n", + " large_n=10,\n", + " min_prop=0.5,\n", + " )\n", + " inference = DefaultInference()\n", + " dds = DeseqDataSet(\n", + " adata=validation,\n", + " design=\"~condition\",\n", + " refit_cooks=False,\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " dds.deseq2()\n", + " stats = DeseqStats(\n", + " dds,\n", + " contrast=[\"condition\", disease_condition, \"Normal\"],\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " stats.summary()\n", + " return stats.results_df\n", + "\n", + "\n", + "validation_results_df1 = fit_validation_de(\n", + " validation_adata1, \"Leukemic_spontaneous\"\n", + ")\n", + "validation_results_df2 = fit_validation_de(validation_adata2, \"Leukemic_SB\")\n", + "\n", + "pd.DataFrame(\n", + " {\n", + " \"condition\": [\"spontaneous\", \"SB\"],\n", + " \"validation_genes\": [len(validation_results_df1), len(validation_results_df2)],\n", + " }\n", + ")\n" + ] + }, { "cell_type": "markdown", "id": "6e64e7dc", "metadata": { "papermill": { - "duration": 0.004459, - "end_time": "2025-06-27T16:26:43.883740", + "duration": 0.004856, + "end_time": "2026-08-06T17:18:50.909734+00:00", "exception": false, - "start_time": "2025-06-27T16:26:43.879281", + "start_time": "2026-08-06T17:18:50.904878+00:00", "status": "completed" }, "tags": [] @@ -1362,20 +1619,20 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "id": "6a207d41", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:43.893521Z", - "iopub.status.busy": "2025-06-27T16:26:43.893400Z", - "iopub.status.idle": "2025-06-27T16:26:45.713556Z", - "shell.execute_reply": "2025-06-27T16:26:45.713257Z" + "iopub.execute_input": "2026-08-06T17:18:50.919850Z", + "iopub.status.busy": "2026-08-06T17:18:50.919735Z", + "iopub.status.idle": "2026-08-06T17:18:53.183748Z", + "shell.execute_reply": "2026-08-06T17:18:53.183110Z" }, "papermill": { - "duration": 1.825943, - "end_time": "2025-06-27T16:26:45.714293", + "duration": 2.269916, + "end_time": "2026-08-06T17:18:53.184202+00:00", "exception": false, - "start_time": "2025-06-27T16:26:43.888350", + "start_time": "2026-08-06T17:18:50.914286+00:00", "status": "completed" }, "tags": [] @@ -1405,9 +1662,6 @@ " source\n", " target\n", " weight\n", - " resources\n", - " references\n", - " sign_decision\n", " \n", " \n", " \n", @@ -1415,75 +1669,63 @@ " 0\n", " Myc\n", " Tert\n", - " 1.0\n", - " DoRothEA-A;ExTRI;HTRI;NTNU.Curated;Pavlidis202...\n", - " 10022128;10491298;10606235;10637317;10723141;1...\n", - " PMID\n", + " 1\n", " \n", " \n", " 1\n", " Spi1\n", - " Bglap3\n", - " 1.0\n", - " ExTRI\n", - " 10022617\n", - " default activation\n", + " Bglap2\n", + " 1\n", " \n", " \n", " 2\n", " Spi1\n", " Bglap\n", - " 1.0\n", - " ExTRI\n", - " 10022617\n", - " default activation\n", + " 1\n", " \n", " \n", " 3\n", " Spi1\n", - " Bglap2\n", - " 1.0\n", - " ExTRI\n", - " 10022617\n", - " default activation\n", + " Bglap3\n", + " 1\n", " \n", " \n", " 4\n", " Smad3\n", " Jun\n", - " 1.0\n", - " ExTRI;NTNU.Curated;TFactS;TRRUST\n", - " 10022869;12374795\n", - " PMID\n", + " 1\n", " \n", " \n", "\n", "" ], "text/plain": [ - " source target weight resources \\\n", - "0 Myc Tert 1.0 DoRothEA-A;ExTRI;HTRI;NTNU.Curated;Pavlidis202... \n", - "1 Spi1 Bglap3 1.0 ExTRI \n", - "2 Spi1 Bglap 1.0 ExTRI \n", - "3 Spi1 Bglap2 1.0 ExTRI \n", - "4 Smad3 Jun 1.0 ExTRI;NTNU.Curated;TFactS;TRRUST \n", - "\n", - " references sign_decision \n", - "0 10022128;10491298;10606235;10637317;10723141;1... PMID \n", - "1 10022617 default activation \n", - "2 10022617 default activation \n", - "3 10022617 default activation \n", - "4 10022869;12374795 PMID " + " source target weight\n", + "0 Myc Tert 1\n", + "1 Spi1 Bglap2 1\n", + "2 Spi1 Bglap 1\n", + "3 Spi1 Bglap3 1\n", + "4 Smad3 Jun 1" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Retrieve CollecTRI gene regulatory network (through Omnipath)\n", - "collectri = dc.op.collectri(organism=\"mouse\")\n", + "# Retrieve native mouse CollecTRI interactions through OmniPath.\n", + "# This avoids a fragile human-to-mouse translation download.\n", + "collectri_raw = op.interactions.CollecTRI.get(organisms=\"mouse\", genesymbols=True)\n", + "collectri = collectri_raw.assign(\n", + " source=collectri_raw[\"source_genesymbol\"],\n", + " target=collectri_raw[\"target_genesymbol\"],\n", + " weight=(\n", + " collectri_raw[\"consensus_stimulation\"].astype(int)\n", + " - collectri_raw[\"consensus_inhibition\"].astype(int)\n", + " ),\n", + ")[[\"source\", \"target\", \"weight\"]]\n", + "collectri = collectri.loc[collectri[\"weight\"] != 0].drop_duplicates()\n", "collectri.head()" ] }, @@ -1492,10 +1734,10 @@ "id": "31c0ba08", "metadata": { "papermill": { - "duration": 0.012738, - "end_time": "2025-06-27T16:26:45.731856", + "duration": 0.005057, + "end_time": "2026-08-06T17:18:53.194362+00:00", "exception": false, - "start_time": "2025-06-27T16:26:45.719118", + "start_time": "2026-08-06T17:18:53.189305+00:00", "status": "completed" }, "tags": [] @@ -1509,10 +1751,10 @@ "id": "ee1d5eef", "metadata": { "papermill": { - "duration": 0.004369, - "end_time": "2025-06-27T16:26:45.740709", + "duration": 0.00469, + "end_time": "2026-08-06T17:18:53.203817+00:00", "exception": false, - "start_time": "2025-06-27T16:26:45.736340", + "start_time": "2026-08-06T17:18:53.199127+00:00", "status": "completed" }, "tags": [] @@ -1523,20 +1765,20 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "id": "e908dd4d", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:45.750661Z", - "iopub.status.busy": "2025-06-27T16:26:45.750515Z", - "iopub.status.idle": "2025-06-27T16:26:45.756676Z", - "shell.execute_reply": "2025-06-27T16:26:45.756449Z" + "iopub.execute_input": "2026-08-06T17:18:53.213972Z", + "iopub.status.busy": "2026-08-06T17:18:53.213861Z", + "iopub.status.idle": "2026-08-06T17:18:53.219387Z", + "shell.execute_reply": "2026-08-06T17:18:53.219020Z" }, "papermill": { - "duration": 0.012124, - "end_time": "2025-06-27T16:26:45.757362", + "duration": 0.011313, + "end_time": "2026-08-06T17:18:53.219825+00:00", "exception": false, - "start_time": "2025-06-27T16:26:45.745238", + "start_time": "2026-08-06T17:18:53.208512+00:00", "status": "completed" }, "tags": [] @@ -1572,9 +1814,8 @@ " Mks1\n", " Vps28\n", " Setd6\n", - " Psma4\n", + " Gstm2\n", " ...\n", - " Cd37\n", " Rag2\n", " Itgb1bp2\n", " Sec23ip\n", @@ -1584,58 +1825,59 @@ " Rhd\n", " Pxmp4\n", " Gm25500\n", + " Prss39\n", " \n", " \n", " \n", " \n", " Leukemic_spontaneous.vs.Normal\n", - " 6.016588\n", - " 11.387579\n", - " 2.723045\n", - " -0.163747\n", - " -1.056967\n", - " 7.738055\n", - " 3.636604\n", - " 2.671039\n", - " 6.008118\n", - " 3.939383\n", + " 4.148578\n", + " 10.694655\n", + " 2.217812\n", + " -0.549658\n", + " 0.050457\n", + " 5.610092\n", + " 5.178963\n", + " 3.846342\n", + " 8.079712\n", + " -2.671615\n", " ...\n", - " 3.891274\n", - " -2.875231\n", - " -0.371605\n", - " -11.321515\n", - " 2.340763\n", - " -1.979131\n", - " -8.266294\n", - " -10.982454\n", - " -5.376307\n", - " 2.049048\n", + " -4.541439\n", + " -0.473154\n", + " -9.441182\n", + " 1.012695\n", + " -1.222221\n", + " -7.059862\n", + " -9.135671\n", + " -4.241074\n", + " 1.264247\n", + " 1.119565\n", " \n", " \n", "\n", - "

1 rows × 13585 columns

\n", + "

1 rows × 13599 columns

\n", "" ], "text/plain": [ "ID Itm2a Sergef Fam109a Dhx9 \\\n", - "Leukemic_spontaneous.vs.Normal 6.016588 11.387579 2.723045 -0.163747 \n", + "Leukemic_spontaneous.vs.Normal 4.148578 10.694655 2.217812 -0.549658 \n", "\n", "ID Ssu72 Eif2b2 Mks1 Vps28 \\\n", - "Leukemic_spontaneous.vs.Normal -1.056967 7.738055 3.636604 2.671039 \n", + "Leukemic_spontaneous.vs.Normal 0.050457 5.610092 5.178963 3.846342 \n", "\n", - "ID Setd6 Psma4 ... Cd37 Rag2 \\\n", - "Leukemic_spontaneous.vs.Normal 6.008118 3.939383 ... 3.891274 -2.875231 \n", + "ID Setd6 Gstm2 ... Rag2 Itgb1bp2 \\\n", + "Leukemic_spontaneous.vs.Normal 8.079712 -2.671615 ... -4.541439 -0.473154 \n", "\n", - "ID Itgb1bp2 Sec23ip Gosr1 Ctsw \\\n", - "Leukemic_spontaneous.vs.Normal -0.371605 -11.321515 2.340763 -1.979131 \n", + "ID Sec23ip Gosr1 Ctsw Ryk \\\n", + "Leukemic_spontaneous.vs.Normal -9.441182 1.012695 -1.222221 -7.059862 \n", "\n", - "ID Ryk Rhd Pxmp4 Gm25500 \n", - "Leukemic_spontaneous.vs.Normal -8.266294 -10.982454 -5.376307 2.049048 \n", + "ID Rhd Pxmp4 Gm25500 Prss39 \n", + "Leukemic_spontaneous.vs.Normal -9.135671 -4.241074 1.264247 1.119565 \n", "\n", - "[1 rows x 13585 columns]" + "[1 rows x 13599 columns]" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" } @@ -1647,20 +1889,20 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "id": "98b26a75", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:45.766692Z", - "iopub.status.busy": "2025-06-27T16:26:45.766599Z", - "iopub.status.idle": "2025-06-27T16:26:45.847069Z", - "shell.execute_reply": "2025-06-27T16:26:45.846746Z" + "iopub.execute_input": "2026-08-06T17:18:53.230255Z", + "iopub.status.busy": "2026-08-06T17:18:53.230141Z", + "iopub.status.idle": "2026-08-06T17:18:53.303782Z", + "shell.execute_reply": "2026-08-06T17:18:53.303420Z" }, "papermill": { - "duration": 0.085951, - "end_time": "2025-06-27T16:26:45.847784", + "duration": 0.079526, + "end_time": "2026-08-06T17:18:53.304435+00:00", "exception": false, - "start_time": "2025-06-27T16:26:45.761833", + "start_time": "2026-08-06T17:18:53.224909+00:00", "status": "completed" }, "tags": [] @@ -1670,84 +1912,42 @@ "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:16 | [INFO] ulm - Running ulm\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:ulm - Running ulm\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:16 | [INFO] Extracted omics mat with 1 rows (observations) and 13585 columns (features)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:Extracted omics mat with 1 rows (observations) and 13585 columns (features)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:17 | [INFO] Network adjacency matrix has 4442 unique features and 640 unique sources\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:Network adjacency matrix has 4442 unique features and 640 unique sources\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - fitting 640 univariate models of 13585 observations (targets) with 13583 degrees of freedom\n" + "2026-08-06 19:18:53 | [INFO] ulm - Running ulm\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - fitting 640 univariate models of 13585 observations (targets) with 13583 degrees of freedom\n" + "2026-08-06 19:18:53 | [INFO] Extracted omics mat with 1 rows (observations) and 13599 columns (features)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - adjusting p-values by FDR\n" + "2026-08-06 19:18:53 | [INFO] Network adjacency matrix has 3416 unique features and 540 unique sources\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - adjusting p-values by FDR\n" + "2026-08-06 19:18:53 | [INFO] ulm - fitting 540 univariate models of 13599 observations (targets) with 13597 degrees of freedom\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - done\n" + "2026-08-06 19:18:53 | [INFO] ulm - adjusting p-values by FDR\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - done\n" + "2026-08-06 19:18:53 | [INFO] ulm - done\n" ] }, { @@ -1771,79 +1971,82 @@ " \n", " \n", " \n", - " Abl1\n", - " Ahr\n", - " Aire\n", - " Apex1\n", - " Ar\n", - " Arid1a\n", - " Arid1b\n", - " Arid3a\n", - " Arid3b\n", - " Arid4a\n", + " A0A087WPA7\n", + " A0A087WQ36\n", + " A0A087WR05\n", + " A0A087WSP5\n", + " A0A0A6YWE3\n", + " A0A0A6YWQ4\n", + " A0A0A6YXS3\n", + " A0A0G2JEM8\n", + " A0A0J9YTU7\n", + " A0A0J9YTW3\n", " ...\n", - " Zfpm1\n", - " Zfpm2\n", - " Zglp1\n", " Zgpat\n", " Zhx2\n", " Zic1\n", - " Zic2\n", - " Zkscan3\n", - " Zkscan4\n", - " Zkscan7\n", + " Znf143\n", + " Znf148\n", + " Znf263\n", + " Znf354c\n", + " Znf382\n", + " Znf436\n", + " Znf76\n", " \n", " \n", " \n", " \n", " Leukemic_spontaneous.vs.Normal\n", - " 1.452427\n", - " -0.114799\n", - " -2.245622\n", - " 0.882775\n", - " -0.297864\n", - " -0.176459\n", - " -0.632378\n", - " -0.453538\n", - " -1.821644\n", - " 0.260495\n", + " -1.656074\n", + " -1.979076\n", + " -5.328064\n", + " 0.162649\n", + " -1.833279\n", + " 0.779211\n", + " 0.51319\n", + " -1.233113\n", + " -0.126254\n", + " 0.446425\n", " ...\n", - " -1.439184\n", - " 0.110701\n", - " -1.527737\n", - " -0.94774\n", - " 1.098365\n", - " 0.530819\n", - " -0.030262\n", - " 1.943526\n", - " 1.943526\n", - " 1.024536\n", + " -0.910795\n", + " 1.29885\n", + " -0.013044\n", + " -0.382275\n", + " -1.58947\n", + " -0.731727\n", + " 1.448071\n", + " -0.402687\n", + " -1.753189\n", + " 0.140664\n", " \n", " \n", "\n", - "

1 rows × 640 columns

\n", + "

1 rows × 540 columns

\n", "" ], "text/plain": [ - " Abl1 Ahr Aire Apex1 \\\n", - "Leukemic_spontaneous.vs.Normal 1.452427 -0.114799 -2.245622 0.882775 \n", + " A0A087WPA7 A0A087WQ36 A0A087WR05 \\\n", + "Leukemic_spontaneous.vs.Normal -1.656074 -1.979076 -5.328064 \n", + "\n", + " A0A087WSP5 A0A0A6YWE3 A0A0A6YWQ4 \\\n", + "Leukemic_spontaneous.vs.Normal 0.162649 -1.833279 0.779211 \n", "\n", - " Ar Arid1a Arid1b Arid3a \\\n", - "Leukemic_spontaneous.vs.Normal -0.297864 -0.176459 -0.632378 -0.453538 \n", + " A0A0A6YXS3 A0A0G2JEM8 A0A0J9YTU7 \\\n", + "Leukemic_spontaneous.vs.Normal 0.51319 -1.233113 -0.126254 \n", "\n", - " Arid3b Arid4a ... Zfpm1 Zfpm2 \\\n", - "Leukemic_spontaneous.vs.Normal -1.821644 0.260495 ... -1.439184 0.110701 \n", + " A0A0J9YTW3 ... Zgpat Zhx2 Zic1 \\\n", + "Leukemic_spontaneous.vs.Normal 0.446425 ... -0.910795 1.29885 -0.013044 \n", "\n", - " Zglp1 Zgpat Zhx2 Zic1 \\\n", - "Leukemic_spontaneous.vs.Normal -1.527737 -0.94774 1.098365 0.530819 \n", + " Znf143 Znf148 Znf263 Znf354c \\\n", + "Leukemic_spontaneous.vs.Normal -0.382275 -1.58947 -0.731727 1.448071 \n", "\n", - " Zic2 Zkscan3 Zkscan4 Zkscan7 \n", - "Leukemic_spontaneous.vs.Normal -0.030262 1.943526 1.943526 1.024536 \n", + " Znf382 Znf436 Znf76 \n", + "Leukemic_spontaneous.vs.Normal -0.402687 -1.753189 0.140664 \n", "\n", - "[1 rows x 640 columns]" + "[1 rows x 540 columns]" ] }, - "execution_count": 17, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -1855,20 +2058,20 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "id": "8fcafe29", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:45.858454Z", - "iopub.status.busy": "2025-06-27T16:26:45.858302Z", - "iopub.status.idle": "2025-06-27T16:26:46.031323Z", - "shell.execute_reply": "2025-06-27T16:26:46.030982Z" + "iopub.execute_input": "2026-08-06T17:18:53.315182Z", + "iopub.status.busy": "2026-08-06T17:18:53.315078Z", + "iopub.status.idle": "2026-08-06T17:18:53.453952Z", + "shell.execute_reply": "2026-08-06T17:18:53.453588Z" }, "papermill": { - "duration": 0.179107, - "end_time": "2025-06-27T16:26:46.032159", + "duration": 0.14476, + "end_time": "2026-08-06T17:18:53.454427+00:00", "exception": false, - "start_time": "2025-06-27T16:26:45.853052", + "start_time": "2026-08-06T17:18:53.309667+00:00", "status": "completed" }, "tags": [] @@ -1876,7 +2079,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASMAAAJNCAYAAAB6NhOaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX9NJREFUeJztnQd4VNX2vneCcJWrXhGESxHEhkpRRKkWEBVFERC7FEUpIiBWuIoFUf9iRVREFBUVRbCCImKjSLEggiLSbBSxoFxA8Cck83/epWfumckkmUkyyZmZ732e8yRzzpkzZ5LMl7XW3vtbWaFQKOSEEKKMyS7rGxBCCJAYCSECgcRICBEIJEZCiEAgMRJCBAKJkRAiEEiMhBCBYJeyvgFRMuTm5rr169e7PfbYw2VlZenHmuKEQiG3ZcsWV6NGDZednRkxg8QoTUCI9t1337K+DVHCrFmzxtWqVSsjfq4SozSBiMj7491zzz3L+nZEMdm8ebP9c/F+r5mAxChN8FIzhChdxKhv1n4uUxgT+jbm/kxKuTMjGRVCBB6JkRAiEEiMhBCBQGIkhAgEEqNicNFFF1mBsW/fvnmO9evXz45xjhCicCRGxYTh14kTJ7rt27eH9/3xxx/u+eefd7Vr1y7u5YXIGCRGxeTII4800Xn55ZfD+/gekWrcuLE9fvrpp13lypXd//3f/0U8t0uXLq579+7hx1OmTHFHHXWU23XXXV2VKlXcmWeeWdzbEyJlkBiVABdffLF78sknw4+feOIJ17Nnz/Djs88+2+Xk5JjYePzyyy/u9ddft+fCG2+8YeJz2mmnuUWLFrl3333XhCk/EDYmxvk3IVIZiVEJ0K1bN/fBBx+4b7/91n333Xdu7ty5rmvXruHju+22m7vgggsiBGvChAk2zb9169b2+Pbbb3fnnXeeGzZsmDv00EPd4Ycf7q6//vp8X/P//b//5/71r3+FNy0FEamOxKgEIKUiohk/frwJDt+zz0+vXr3cjBkz3Lp16+wx53kFcPjss89c27Zt437N//znP+6///1veGMZiBCpjJaDlBCkZf3797fvH3744TzHqR8R7VA/ateunfv888/d1KlTI6KnRPjHP/5hmxDpgiKjEuKUU05xf/75p22ITSwuvfRSi4ioKZ144okRqVWjRo2sTiREpiIxKiHKlSvnli1bZhvfx+LCCy+0NO2xxx6LKHDDzTffbNMB+Mo1iJzuuuuukro9IQKPxKgEKWzFPMcYzt99991dp06dIo5RyJ48ebKNuB1xxBHuhBNOcB9++GFJ3p4QgSZLHWVLl5NOOslGy0aNGlWi12Von1E1itmyEEl9C5HNafj7LAwVsEuJX3/91UbT3nvvPffQQw+V1ssKkTJIjEpxpvZvv/3mRowY4erVq1daL5uWhmMiPZEYlRJMiBRC5I8K2EKIQCAxEkIEAqVpIrD8MurqUnutKgPvLbXXErFRZCSECAQSIyFEIJAYCSECgcRICBEI0kaM5s2bZwtUWT3vZ/Hixe7888+3FfLYdLAU44EHHsj3OkxIrFChQth3CKZPn26+Qxs2bIg499///nceU7O1a9fauWPHjrWvBW233HKLPSfWsTFjxpTQT0aI1CBtxAhbjgEDBpjj4vfffx/ev3DhQrfPPvu4Z5991i1dutTdcMMNZkwWa0kGz8VMH5vYp556Krz/mGOOcbvssoubOXNmeB8r6zmXNUSrVq0K73///fdd+fLlbYX+Dz/8EN6uvvpqV79+/Yh911xzTfh5WIv4j/Xo0SNJPykhgklaDO3//vvvbtKkSe7jjz+26AUhuemmm+xYtFXH/vvv7+bPn2+m+Z4Zmse4cePMHvb44493l19+udm+EqWwyv7oo482McIaFvgekQqFQvb9gQceGN7ftGlT989//tM2D66BoBFNxWKvvfbK95gQmUBaREYvvPCCpVdseE8TZSAS+cFK6L333jti35YtW8zCg+ezsh6B80dCbdq0sajHg++x/UC4ovdzbqIgjFjVInqkaLm5uQWeL0N+kW6khRgR0XgG+NSMtm7dmq9rIlERUVSfPn0i9tP77KCDDrJUitoTERDX9UB4VqxYYSkUzJo1y4SIzRMtfKi/+eabhMVo+PDhJoTvvPOOvS4p3R133FHgc2TIL9KNlE/Tli9f7j766KNw3zJSoXPPPTds7eqHmlHHjh0thSP6yU/QgO+PO+44t2nTJkuhWrVqZYVthAcva5o2shKfCIy60cqVK03o8KVu2bJlQu9h6NCh4e8xVoNbb701Yn801L2uuuqq8GPuQR1CRCqT8mKEiOzcudPVrFkzvA+BoIiMZUelSpVs35dffmnuiXTpiP6QcwxXRWpOgwcPDu+n1xlWsJdddpmrWLGi1YJIw/Amol7k2csiPuxHjFq0aGFNGItD8+bNTVx+/PFHV61atZjnyJBfpBspnaYhQnTbuPfee63Vj7cxnF+nTh3rTeZFRKROjFDRnyyWoBEF8Tz/da677rqIVI1rEBmxef3OwEvV2IpSL4qGJo4IGhGZEJlCSkdGdGQl+rnkkkvMotPPWWedZUKCOLCdfPLJltZ4c4WIahjy37Fjh3vmmWcsLWrQoEGebh6Y4iNSpGZch/pO9LA8YnTnnXdaETxRMaJdEfdERMU8KCIsph/07t1brYhERpHSkRFiQ10oWogA43uiG2orP//8s0VJ1atXD2+MWgEG+Bs3bnSdO3fOcw0K2g0bNgxHRwiG16usSZMm4fO4FikdYtKsWbOE3gPp5OjRo+3atCtiQibCSLQnRCYhQ/40IR0N3DPZQmRzGv4+0zoyEkKkDyldMxLpTdCiFZFcFBkJIQKBxEgIEQgkRkKIQKCakUiYTo8vKJWf2quXNi+V1xHBQJGRECIQSIyEEIFAYiSECAQSIyFEIJAYJcBFF10U0zw/uglAouClzbVZB4cfU6dOnYp1PSFSEY2mJQjCg62tH2/xbFHANcBbZDtw4ED30ksvFflaQqQyiowSBOHBON+/eQZuX331lZmu4UV02GGHmY0skdOrr75qx7/99lt7jO0tfkicR9cSjPsfeeQRM36TKb/IVBQZlRAY6JNe1a5d21wj8TbCyzoWuEliEUKEVdSoCkN+Nv8qbyFSGYlREQzdaDsULS54Gq1evdrcHr3oBlfJaK9tGDRokDvzzDOL83szQ/5hw4YV6xpCBAmJUYLg5EhK5Ye2R7hFYojvT7PwzI7FUUcd5YqLDPlFuiExShDqO17DRj80AaAeFO81iosM+UW6oQJ2CXHIIYdYW206enjQbUQIER+KjBKEorFn6h/+Ie6yi9WGDjjgAOtAgok/BWyM9SGeiIl2SX/++ae1QeK5+Hf7+6gJke5IjBJk+vTpZujvh7baDOszhE9HEYrZ+++/v7v77rtdhw4d4uqj1r59e/fdd9+FHzdu3Ni+FtSmW4h0QmKUAE899ZRtBaVqH3zwQfjx3Llz7atXY9pvv/3yFRfmIAmRyUiMSpBXXnnFhv1pcbRq1Sp3xRVXWFts0jchRMFIjEoQaj10oV2zZo2rUqWK9XRLx/5nMj0TyUB909KETOyzlc5szsDfp4b2hRCBQGIkhAgEqhmJhOgwdn6p/cSm9m5Raq8lyh5FRkKIQCAxEkIEAomRECIQSIyEEIFAYlQEM/7y5cvb2rNrrrnG/f777yXyi8CGNtro/7zzziuRawuRCmg0rQhm/Jjoz5kzxxbFIkbRZmtFBQ/sW2+9NfwYk34hMgVFRkUw48fR8YILLnAXXnihrdTHVB/3xj322MOOc+ynn34KPw+BqVGjhtu4cWN43xlnnOGOO+448872qFixYoTRPzNwhcgUJEbFgMiFKAkfouHDh7vFixebOH3zzTeW1nnga8SKfSIpGDNmjJs9e7ZZ1WZn/+9XMGHCBFvTVr9+fUsBWetWkK8SSwb8mxCpjNK0IvLRRx+55557zrVt29b17NkzvJ9a0qhRo8z/euvWrbaKv1y5chY9YZQ2ZMgQ9+CDD7qxY8e6OnXqhJ9HlFW3bl2LiL744gvzuEbc3n777ZivL0N+kW5ooWycEOkgKBil7dy50yKijh07WpSzbt06d8stt5g7I06NpF7btm1zS5cutf5pHghQnz593LnnnusmTpxY4OstXLjQUj++HnnkkXG1KiJ9TPbCSs3ALh02a6GsKKwzCIKzfPlya0n98ssvm7n+ySefbBEQYoXvNb5GQPrmh9SMKAkjNQStIBAgRu1WrlyZb/0K0fFvQqQyqhkVoTMI6RVCAdjN/vLLL+7OO+90xx57rLk9+ovXHi+88IKJF33V8DuixlQQRFVEX9EWt0KkKxKjYkIH2QoVKlgd6Ouvv3ZTpkzJIzRr1651l112mRsxYoS1v8a6lprPggUL7DjNHxlx++STTyxqmjZtmjv77LPNBxunSCEyAYlRMdlnn31MXCZPnmz1ISKke+65J3wcz2vqTRS0+/fvb/voJML3Xbt2tSI3Yvbuu++6du3ambn/wIEDLfV75513LK0TIhNQATtNKK2CpwrYpcNmFbCFEKJs0DwjkRAyPBPJQjUjIUQgkBgJIQKBxEgIEQhUMxIJodE0kSwUGQkhAoHESAgRCCRGQohAIDEKACyexfN606ZNZX0rQpQZEqMiwFqzTp06lfxvQ4gMRmIkhAgEEqNigrf1yJEjI/ZhL4vzowcp2OOPP+46d+5spvsHHXSQWY1EM3fuXHf44Yebm2SzZs3c559/XtzbEyJlkBiVEsOGDXPnnHOOW7JkiWvfvr15XmNR6+faa681+xHcIqtWrWodRDBYi4UM+UW6ITEqxTrT+eefb06Rd9xxh/Vbw9Tfz80332xeRw0bNnTjx493P/74Y9jCNhrM2bAM8Tb8r4VIZSRGpUSjRo0i7GvpsRZtT9uiRYvw93vvvbcZrS1btizm9egegneRt2FlK0Qqo+UgxYS+Z7g5+omVWnme2f46kr+BY35wXn6G/GxCpAuKjErAdvaHH36IcOijiWNR8Dyx4bfffnMrVqwwg38hMgFFRsXkhBNOMA/sDh06uEqVKrkbb7yxyL7VmPJXrlzZVatWzbrQ0l1W85lEpiAxKgKkV7vssku4dkNXkNNPP90KyXQGKWpkhJn/FVdcYb3SGOJn+B+zfiEyAYlREaDwzKgYYH5PTzQ/PXr0iHgcXVMC/9KP1q1bh89B1ITIRFQzSgDqOG+88YatJTvxxBOT91sRIgNRZJQAPXv2tAmJV199tevYsWPyfisBRob8IllIjBIgvwmIQojiozRNCBEIJEZCiECgNE0khAz5RbJQZCSECAQSIyFEIJAYCSECgcRICBEIJEY+8zPsOqK3VatWJf2XMHv2bFtoW6NGDXvNV199NemvKUTQkBj5OOWUU8wOxL/VrVs36b8EXB9ZGPvQQw8l/bWECCoSIx+Ylf373/+O2LADmTVrlmvatKkdr169uhsyZIjbuXOnPefpp592u+++u6209xgwYIA7+OCDTWSgoOfDqaee6m677TZ35plnlt5vXoiAITEqhHXr1pmB/tFHH+0WL17sHnnkETdu3DgTD+jevXvYYB+BmT59unv00UfdhAkTzF62sOcXFRnyi3RDkx59vP766xbl+CMWIhzM7kmhqOfgvLh+/Xo3ePBgd9NNN5ntLOKDx/XAgQPdyy+/bMb6iA+MHj260OcXBQz56TgiRLqgyMhHmzZt3GeffRbeRo0aZYb4GOX7vahbtWrltm7d6tauXWuPcXgk2iHqOeCAAywN84jn+UVBhvwi3VBk5IO0yjNN88D0LNoU3zNC8+9nRIz6ElEPtSJM1xJ5fqLIkF+kG4qMCuGwww5z8+bNi3Br5DGthmrWrBl+fNddd7mpU6eaCFHATuT5QgiJUaH069fPepIhMF999ZV77bXXrCZ01VVXWb1ny5Ytrlu3bnacGtNzzz3nJk2a5CZPnhzX84GUzUsNAQ9tvv/+++/1NyoyBqVphUD0Mm3aNGs9zVwgmitecsklbujQoXYcA33SO7rEQv369d2IESNc3759XcuWLQt9PnzyySdWr/JAqDwvbTqPCJEJZIViucWLlIN+bXQnobusV69KBrIQSa/fZ5BQzUgIEQiUpomEkCG/SBaKjIQQgUBiJIQIBBIjIUQgkBgJIQKBCtgiIdqPmVdqP7FpfVuW2muJskeRkRAiECgyEiJF+eOPP9yff/6Z0HMqVKjgdt11VxdEFBkFlLlz57qGDRu68uXLu06dOpX17YgAClHl3Xa3WdqJbNgo89wgosgoyfz000/uxhtvdG+++ab78ccfzfuINWq33HKL+RzlB+vTjjjiCHue3/BNCCAi2uZyXHdX01WIM6b40+W6pzess+cGMTqSGCWZLl26uB07drjx48e7/fff3wTp3Xffdb/++mvM8zmXaGj16tW22LZWrVrJvkWRwuyWVc5VyIpPjMqFspwL8EpUpWlJZNOmTe6DDz6wVfysyq9Tp44Z8+PSeNppp4UN1saMGeM6duxoq/8vvfRS27dx40bXs2dP+14r90V+ZGc5Vy7OjXODjMQoiZBesdEHDQP9/MDfCDH6/PPP3a233motklipPXLkSPv+3HPPzfMcGfILKJeVldAWZCRGSWSXXXaxqIYUba+99jLv6+uvv94tWbIk4rwLLrjAoiDSOKInWiQREVFw5PvddtstpiG/vzCJ6b/IPMplJbYFGYlRKdSM8MWeMmWKa9eunZs5c6Y78sgjI1Kvo446KuHrypBfgCIjkRCMXJx00knWmgj/a1ppk5p5UCsqiiE/qZx/E5lHOUVGojhg0u91mxWieGKUlTY1Iw3tJxFGxM4++2yrB9HkkY4g+F3TSYSCtRDFJSuBWkuwpUhilFQYSWvWrJm7//77bd4Qc4goNPfq1csK2UIUl3IJRDzlAi5HioySCHUdRr3Y8iO/fgjMURKiMBIZJSvngo3ESIiUF6Os+M51wUZiJBJCHkPBolwaRUaaZyREClMuiaNp69atc127dnWVK1d2FStWtIXbCxcuTNp7UWQkRBqsTSvpyOO3336zFQOsqcQ5omrVqjYIw0qCZCExEiLDRtM2b96cZ6CFzQ+Luxn5ffLJJ8P79ttvP5dMlKYJkWEzsPfdd9+IdY2xRntZvsQyJebJERU1btzYPfbYY0l9L4qMREK0Gz231H5ib/VrVWqvlUkF7DVr1kQsH4qOiuDrr792jzzyiJn8MSfuo48+cgMHDrRzu3fv7pKBxEiIDEvT9oxjLWNubq5FRnfccYc9JjJaunSpCVSyxEhpmhApTLlEUrUErlu9enVbQ+nn0EMPdd9//71LFoqMhEhhshOIjDg3XhhJW758ecS+FStWmN9WspAYCZEpNaOs+K975ZVXupYtW1qads4551jNaOzYsbYli2KnafjzlCtXzp1yyil5jhHSdejQwfx6qlSpYgWw/Po81atXz3o6MdEqFsuWLXNnnHGGVf9Z/d68efOIkJFhR2xaPTZs2OC6detmTom8PoZmL774YsQ1cVNkW7BgQR5LVyZ6cQwzNOD1LrvssojzyJ85Z9y4cRH7L7nkEvtFPvPMM/baq1atijiO2RpdQh544IHwvvnz57sTTjjBzmcuR+vWrd327dtj/iyESPakx6OPPtq98sor7vnnn3cNGjRww4cPt8/XhRde6AIrRk888YQbMGCAGc/7xSEnJ8dM5/Ht4djEiRPdSy+95K6++uo81+A4vZwYRoxlPs9kq2OOOcYdcsghJg6LFy+29j8FtVtBiAgzGaLEW/rMM880L+lFixZFnBc9lwL4JUS3B2Ly1/vvvx+xj3vh+bH2cz73gLtjjx49rCDo0bt3bysIIs6eECHmJ598sv0H+vjjj13//v1ddrZKeqLszNVOP/10++zw2SQYwG0imRTrrx2hmTRpkkUM3LhfSGbMmOG+/PJL9+yzz9oH78QTT3T33nuvzVWInnRFZIEPNB9exC16JfsNN9zg2rdvbz5AXAuvaISO+Q/5wQcckaQbB+cPHTrUIo5PP/004jyEAqH0RyHcA/v9IC6IGwb5HrNmzTL7Vy968oZNGRblfHj00UctMrrvvvvsMT+jOXPmmAASVXkhMcI0ZMgQV79+fXfQQQe5s846K+aQq4cM+UW6masVS4xeeOEFS6/YWMPCB8wTEsSA8K5GjRrh84kS+BD517ds2bLFTZ482Z6PNSsC5/9wE1G88cYb7uCDD7bnI0B4BNFxoyCIpLg/+pNxDQSH1yb98dOkSRPrsknU5onJ7NmzTRijC3r0M/PuDaFFwDBOQ1xXrlxp+4mSSDdJ02CfffYxQSKSe/vtt014SM+8QiBNHj/88EN7XzynWrVq7vjjj7dosSBkyC+8onQiW9qKERENIgKkGVu3brUGhV7Nhg+WH+okfFA55oFIEAkQEVB7Ou+88yJqMHxYue6dd95pr0HE1blzZ0u7iEzyAyHauXOn1X6IMPr06WPp1wEHHJDn3IsvvtiiIUBQicIQET/UcsijPTHiK4LHtREq/37EkoWFHrSnpgjI/R933HHmge1BFAV0mCUMnj59utW32rZtGxa4WMiQX0BWuayEtrQUI1IW6huIh9eWh5qM96EGLw3xQ+Tk3+8XNOD7l19+OWwu5tVasGklqmDlMOkMaSHND/ODtIzFfu+8845ZvTKTlJoUOXA0vCaRHMJAGkW0EwtSL7/oeFEWkYx/P4XoaIiMeC989eO9P8QSUSQNxRmSaNP/s4xGhvwCsstlJbSlpRghIkQeNWvWNCFiY3QJIUEEGMXyR0DAfqxXvYiJVIcU5brrrgtfg1Er0h+q+MAoHPsTmYBFwfuhhx6yDzMRBr3t6cbBjNKHH344z/lET4gbo2AU60499dR8xYi5Foz4EZUhQn4x4n6++eabcL3ID+/B/9U/uQxKe4KZEGkhRojQ008/bQXpzz77LLwxykUtZMKECa5Fixbuiy++iCj4kmLxH506jSdopC08z38dxMlL1UjrSI8SmYC1bdu2v95c1GgUaaB/VMsP0RCCwlR3zosFNR3uf/To0SaY3vtA5P773/9abYgRPgQ1XpiSQF2ttCeYiTShXLbLinPj3CBTpEmPr7/+ukU5RBLM+/HDKBBCQmrEf3sKwXfffbcVkq+55hqri7AuhgiJeTi0c6bQ7Yd+84ycIVJENddee62lgAgXUQd1lalTp0YUuv0wBeDAAw+01Oeee+6xyIeCNwVk7j0W1HN+/vnnAtfs0NmVetCDDz5odSJPtChsI77s9wQrXkhZeX9EbrxX0lA60H711Vd55kUJEU1Wdvy1oKyAG/IXSSoRG4bqo4XI66DqRUmMghEp8MGlgEshF3EA5v/QyodidDQUtBs2bBiOjjiH+hACxf7HH3/cRr8oIMcCcZg2bZoVoZl0SZsgIjk+5BSn8xMFUkIisYJADBkBjB6VI1Vjf6wUrTAGDRpkBWlqYggSgwAIZ6xiuxDpWjPKCuXXnkKkFEwv4J8D6WIyu8vKQiQYv8/Nfx9/tV5j9898ygrR/J6T4zotX5T0v5GiorVpIiHkMRQsshOIeLIDnqZJjIRIYbLKpU/NSGIkRMqLUXZ857rYI8lBQWIkRAqTrTRNCBEEsrDBoV9RPOfmKk0TacKJDxW8eLekead/7Kkb4n9kl8u2LR6yQ2k46VEIkYIF7JAiIyGExKhQFBkJkcJkK00TQgSCcgn4FAU8TQt2RasUwfCMkQlM3PywwDaWL5MfbFNYuY+tLSZsLHZlEXAi3H777bbIFlM2riNEPJiDY3acWzo7PaYbLOodMWKEORLEA00HsCTZe++9zacbg7YlS5aYSRrbW2+9Ffdr0zUF87foDiRCFES89iFhG5EAE+y7K2VwIsAUDn/pWOACSdSCDQn2KFiFfPfdd7aCH2cBDNFYaX/FFVeYU4DfxxrRQuiwNuF5tWvXtmjIY9iwYbZqH1eCeJAhv0i3VfsSIx/4E9G0Dl+itWvX5mvchlhhY0Lv8egOJZggYAGCWRr+Sx5YhCBG2M7icPncc8/l8QhPBBnyi3TzwNZoWhREONR8MDuLbs4ImMLh9IjvkB9sGbDgJWJB1DiHbieAzxEdQbDC9VogEUHl58cUD4gbvt5+Swl6uInMIiuB9CsrN9ixh8QoBkQwmOrHajiJ+RopWDR0ucVUzuuQglDQr40UjgZ4iBR+3CUFqV4ijpIiPcku91eqFte5wV4nKzGKBekVPdquv/76iLZCnvVsrNE1/LapBwGRFQJEKoUY8RwhkmY7mx3nDOw4zysrgh23lSEM8eOzPW/evCI9n9oR0ZBno4sgeT3lhCgpsrP/WpsW1xbwdunBvrsyhFGtCy+80IrZhUEEhGc1fdcw0qeVNZ7bXj84pgwMHjzYup6wn1ZKCxYsiKhJ0ZaINI+vTBnwOqWQ9glR1gVs/sbJCPBrTxaqGRXA8OHD3aRJkwr9IdKSu1+/fjYCRwREd5Jnn33WOpp4MIpGz7SbbrrJrV+/3vql9e3bN3yc/TQM8KCZo9cuO9r8X4giFbCLOM/o448/dmPHjo1ZKy1JZMifJpSGIb8sRIJnyP9Jj9Pd7hXKx3XNrX/ucEeNf92tWbMm4poFDYYQmdNundHh2267zeqhI0eOdMlAaZoQKUzc9SLfglqmgCBk3pbfJF+4/PLL3WmnnWYTgpON0jQRNzI7CyDlEljm8fd5sSKjWEycONF9+umnlqaVBhIjIVKYrOwEakZ/j6YhRIWl8ggWy5poSc8ATGkgMRIi1cUoOzExioeFCxe6n376yTVp0iS8j1He2bNn20oCb6VBSSIxEiLlR9PKxXluTtzXZbXA559/HrEPJwpGipmmUtJCBBIjETdtR80p1Z/WuwOPLdXXS0WykjS0z/KmBg0aROzDq6ty5cp59pcUEiMhUn0Gdnac3UECPgNbYiRECpNVCpMePWbOnOmSicRIiBQmqxTFKNkE++6SyLfffmtrbVj/JUSqkpX112haXFtWsD/uwb674rT8LWCLtgVJNhj2Y0lSpUqVfAWQtT+sQWP+B+ds2rSpVO9RiLImLcXohx9+CG+so+ED7t+H62JpwkLaVq1a5ek8Em1ne8opp5iHkhCZaMifljUjTPU9WHtDpOHfB14HEGw/MML/8MMPzXdozJgxrkWLFnZs48aNrn///m7OnDnu119/NatYxOL8888PX4doxhvqZKU+8y/o8MGKf8+ErVu3buHUMD88a4Z4i4RMOvP8kryFkyLzyFLNKH2gxdA111xjqdPBBx9sQrNz50479scff9gMVLqBfPHFF653794mLAiXH6w/sAdh/6hRo9z9999vhv3JRIb8oqgLZYNKsO+uFECIWJWMENEuiNZDq1atsmMY7HMc2wT8rAcMGGC1n8mTJ0dcg1XQCFC9evXMkI3zeJxMMOTHXsLbWEskMtV2NjvOTbazgcZvGIXhGbAmx1uLQ28zzmHm6e67724LB3Fj9NO8efMIX2zSvJUrV9rzkwUrrb0Fj/EsfBTpSZZqRulD+fL/M6byBIWGi3DvvfdahEMRHBtapsNT26H7qxBBICuNakZpWcAuKShcd+zYMexljUgR8dA51g9+1tGPKYYnYzGhELHmGcVD0OcZSYwKgNZDL730knUIqVSpkhntb9iwIY8YUa+hT1qfPn3MjAoTf6IqD0biSO3wvga6zQIjfN4oH9dl8+pVrJhmsSJtsPfee++S/82LtCCrXDmXHfeq/WD/cwy2VJYxmOjj/0vRmiF8hKNTp055zuvevbvbvn27a9q0qdl0UsBm5M1jypQpZrBPoRzOO+88e8w0Ag++Z1+vXr3Cvdt4zHOFyISakQz5iwkilUyT8iAZ8stCJHiG/N8/eI3bc7f4Ogtv3v5/rvaAe5L6N1IclKYJkcJkJcnpsSyQGIm4kdlZ8MjSaJooLY8XIQqd9Bi3IX+wJz0qMhIihclSmiaECAJZ2eVsi/fcIKPISMRFm5GzS/0n9f6g40r9NVOO7HJ/bfGeG2AkRkKkMtnZf23xnhtgJEZCpDDMqo6/b5oiIyFEsshOnzQt2HFbhkwNkOe1KF6aVi7OLdgf92DfXQrRoUMHd+KJJ8Y8Nn/+fBMcFtEKUZJkxW2sFv9M7bIi2HeXQlxyySXuvffeM6fIaJ544glbv8ai20TBoM3zVxIiD1nxRkXl/jo3wEiMSojTTz/dVa1a1T311FN5un688MILJlYwbdo0s7jdbbfdXJs2bfKY9PP8vfbay3y3DzvsMHN0jCVwmPGzWNK/iQwkOwExUs0oM8CQHysRxCQUCoX345eNMyTe2PgenXnmma59+/bWAODSSy91Q4YMyXMtBAzDfUz9ly5daiIXjQz5BShNEzHp2bOnRTr+9WqkaAgQ5myPPPKIGfv7zftjNZTcsWOHGz16tGvZsqWdh91tNDLkF8mMjPhnd/TRR5vBH/8M8fHyTAGThdK0EuSQQw4xAUGAYPXq1WZdi0jBsmXLYpr3R1OhQoWIRgGxkCG/SOZo2qxZs8woEAvlt99+29p3nXzyydaQNFlo0mMJQ22Ixo8PP/ywe/LJJ12dOnVc27Zt7Zg/fSsI6kl+wRKiJCc9RtcX+cfG5mf69OkRj/lbJkJauHChuZAmA0VGJcw555xjRvzPPfecNXe8+OKLw8JCQTqWeb8QxV4OEu/2d58/XCK9jZSsMHCHhGT6sSsyKmHorXbuuedaG2x+gf6aUN++fc2o3zPv579M9OibEMmegc1Ait92NjoqioaInr/ZY445JtzKPRkoMkpSqvbbb7/ZJEi6e3jwPd1Gpk6d6g4//HAz4b/jjjuScQsiwyxEsuLcILr5Z2FiRNlhyZIl7vnnn0/uewnFW8gQgSbZhvyyEAmmIf8v7z3v9ty9YnzX3LrNVTnh/IT+Ruh08+qrr7rZs2e7unXrumSiNE2IFCYrSeZqxCgI0SuvvGJTVZItRCAxEnEho7OAD+3HQwJD+wzrMwjz2muv2VwjGowC0RijvclANSMhMmw0LR6YoEs6R1/A6tWrhzeWNiULRUZCpDBZSTJXK4tSsiIjIUQgUGQk4qL1/bNK/Sc188rjS/01U47s9HF6lBgJkcpkS4yEEAEgS00chRCBcnqMBzk9iph/F1lZNrNViGKRlUV4FOcWbCeIjBxNY/EqYsDC1Wj69etnx2KZniWT22+/3byQKlasaLazQsRF3EL09xZggn13SQQbhYkTJ7rt27eH9/3xxx+2GNC/uLW0wJr27LPPdpdddlmpv7ZIXUJZ2QltQSbYd5dE6NSB6Lz88svhfXyPSDVu3NgeP/30065y5cpmfu+nS5cu5nftn616wAEHmEMjNrHPPPNMxPkrV640Q6pdd93VPI1wzotm2LBh7sorr3QNGzaM6/5lyC8MRUbpAcZnONh5YBfrWcQCkQqtgqZMmRLe98svv1jnDp4LLCS84oor3NVXX+2++OIL8yni2Pvvv2/HaTOEBzaGaxipYRsyePDgYt+7DPnF/2pGCWwBJmMjI+jWrZv74IMPzESfdkBz5851Xbt2DR9nQeAFF1wQIVgTJkxwtWrVsjU7cM8991h9iVoTLYgwoUJ82A/vvPOOeV8TLdE7jQipJDyMZMgvkrk2rSzI6EmPVapUcaeddprZw7IWh+/Z56dXr17WJWHdunWuZs2aJkxeARwQmt69e0c8p1WrVu6BBx4IHycdRMAKMuFPlFi+xSLzCCVQCwp6zSijxQhIy3CyA0z0o6F+hCsj9aN27dq5zz//3Jwa/USb5yNs3r5YCw5lti9KjKwERskCLkbBvrtS4JRTTrGRLDbEJhY0WyQioqaElSxFbo9DDz3UUj0/8+bNs/1Awfr7779369evDx+fP39+0t6PyDCy0mdoP+MjIwrLpFLe97Gg2eI111zjHnvsMYuQ/Fx77bXWEYTROVoSETUxKketCBAvRtgYfcOMH7vQG264Ic9rIFi//vqrfaVoTsdZOPDAA83kX4iYKDJKLzxj8oKOM5yPKNBZ0w+PqQ/dfffdrn79+u7RRx+1KMorcGdnZ9uIG0PxTZs2tSiLCY7R3HTTTZYS3nzzzW7r1q32Pdsnn3yShHcs0oVQVlYC84yCPZomQ/44Oemkkyz1GjVqlMtEQ35ZiATUkH/lYrfnHnvEd80tW1yVgw5P2t9Iccn4NK0wSJ1mzJjh3nvvPffQQw+Vyi9FiLhJZP5QwCMjiVEhUAuiB9qIESOs9pOpyOgsoGSlz2iaxKgQmBApRFAJaZ6RECIQZCUws1qRkRAiqWKUJTESGYRG0wJKlsRICBEEsiRGQogATXqMh6BPetRomhCpTJYiIyFEEMhKn0mPwZ4FlSAbNmww10UWl2LxWq1aNXfMMceYu+K2bdvsHJwYsYjFOG2fffZxHTt2dF999VX4GosXLzafIL+7I7z00kt2TdwcPUaOHGkTIbkWK/mxjcVH28+aNWvcJZdc4mrUqGG2tHXq1LF73LhxYx5bkVgba96EKKtV+6NHj3Z169a1v/0mTZq4OXPmuGSRNmL09ddf28JSlm7gpLho0SJbOY9AsJLeW0XPD5SFrKzUf+utt8xv6OSTT7aV8oB30Y033miGaZ5g/PTTT9ZJBJ/qBg0ahB0fhwwZYgtbuda4cePcCy+8YA6M/ns66qij3IoVK8zof9WqVSaM7777rhmssdTE44cffojYsCtBjFigK0RZGPLz9zxo0CBzmeDzdOyxx7pTTz3VnCWSQdoslMWXaOnSpRbl/POf/8xz3G945mfJkiUmQAgFERMgTIjF/vvvbx1EOnfu7H788Uf7r+DZjGDIhgghLB74YH/00Ufh/x784oikECOiJ38Ex2thK4KZfyxwA9iyZUvE9f3gAuBvFMDCSaIzLZTNrIWyP27YEPeiV55T7d//tmjd/5z8XEObNWtmy6H8f6MsFudvEw/2kiYtIiMiGCKiyy+/PKYQQSwh+v333y1KIgz1G6YhOFjRvvbaa+aBTQT11FNPRfgdkf4tXLjQxMeLgqZNm2bWtUDUw/PwxvYLEfz73/82jyT+88T6X4DwvfHGG5be5YcM+cX/RtPi34C/dYTM22IJC2aD/H2TNfjhMeaBySAtxIiohg919EJW/KzxIGLzd+QgD/b2T58+3VoHUc/xw38AQlTSq1tuucXM9v2cd955bvjw4SZK5cuXt0inTZs2lrp57Ym4J8/xMRr2swD3559/znMMIdxjjz3M2D8/ZMgvgP9liWxAZETE5W3+0oK/Cw4ZAnVXPzwmsk8GaSFG+UU/RC04JmJ65k9piErIgWfNmuUOOuggc2qMLjxjcEbkQofXWEW7mTNnmkkawvbpp5+auyMtjBCoePAiomgRBOpF3CNFw/wgrPZM4QozhxPpS24olNAG0X83BTV2KMjfvaRJCzFi9IwfkH9UDKj5cCw6TSI0RYRoG/Tiiy/a83BjjLaTRSgISanbRNvNUuSm1RHOjTRepK5E4ZyQl15p3j19+eWXMe+Z12Q0L7qVNcK3fPlyu64QhRFKcIsXsgrKEtFREIM50dFSSZEWYkTXV5wYMT+jDpQoqL0/ciJte/zxx61ORHEbkSFlY5TLg6kCWMr64ZfHtdi8eyJy8rfQBn7BjMbR8igaRuUY8eN1hSiM3FBiW7zwj5i/w+juxzxu2bKlSwZpIUbAh37nzp02lE56xUgXEcazzz5rUQhCQZGZyIXCHMOTdOkgRSNyat++fXjEgcIxBvzNmze3fQMHDrRUz98frUOHDjbKwGjbN998Y78koqUzzjgjXOhGHBE5uo7Mnj3bcnVqVIgUNSh8r/3w2pMnT1ZUJAIBDUn5p0zZgM8T02T43DDNJRmkzXIQCsjUgYhiKMitXbvWcmFaBSEsjGpt2rTJ0iAmK1I8JtwkVSMVq1q1ql2HCIg0jjlFHkRAjLp5/dMYkh86dKilYXylwSMpFwLlN9snFfz444+tAI7oEeISNVGYpsMs9Sg/CBvHzz///FL8yYlUJvR3JB7vuYlw7rnn2kj1rbfealkBc+wYMWbibjJIm3lGqQKTJO+77z6bilASnWU9ZMifmfOMvln7Q0LzjOrWqi5DfvEXRFz77bef+/DDD21SWXTdSYhESZdoIm3StFTi4osvdqmGDPmDSW4ChelECthlgcRIiBQmlMSaUWkjMRIihcn9e4v33CAjMRIihQn5lnnEc26QkRiJuDj+3pml/pOadXXrUn/NVCNXNSMhRBAIqWYkhAgCuaoZCSGCQCiBWlDAS0aqGQmRyuT6rEHiOTfIaPpvnLDC3jPJx0wNexLWvBXFJSA/WLh7wgknmFsl1iKtW7fOs+JfiNKwECkLNJqWoM82C2Z37NhhC27xHEKM8vOxTlSIuD6LfB988EGzcKBTiZaLiEwZTVNklAC4AOBfjYcw3ti4Mb766qtmU4J1CVaxHOcYK/Q9WPVMqyJ/eyKsRnAMwIgNsGfAqgTbWuxKWPF/1lln5evChzUJCx/9m8hAQglYzkqM0hd8kIiSMC/HbpZIBnHC38hvnEarFxbHeu6NtCvC3wgbESIfhIuFs9iYYFyFtcnxxx/vPvjgg3xfW4b8AnJdKKEtyChNKyL4az/33HOubdu2rmfPnuH91JJGjRrlmjZtaj7amP5jtkb0dMQRR1jkQxo2duzYsC8Mpm+A79E999xj5+GbxLVpdUSUFA3pHOZX0a2KRGYR0gzszATDfcQFR0kiIrrRIiyYuiEkmP/ToshLvXDFw9zNEymEho62mFaR4nl453PMW9FPQ0q8t3HZi9VKJr9eVyKzyFXNKDOhFRGCg50t3UToCMLIF72kECmiH5wdPXN/0jc/pGZESd9++60Jmkf16tXtqydc/nZGyereKTK3VVFQUQE7ARAeun6QXjG8D/hr02PqzjvvtPa/hxxySETx2gNfbsSLFkd4YftbGlFPosCNyPmhE22yLD5FepCbRjUjiVExqV27tg3Dk65R+5kyZUqe3mn4cV922WVuxIgR1vSRriOkXgsWLLDjzF2iNRK1Jlon0ZQSc3+ErqCuskKE0igyUgG7mGDEj7hcf/31Jib0Jqc2xNC9t5CRkTUK2v3797d9dAfh+65du1raR4pHIwBSP4b4qTth/k/HERoNCJEJM7BlyJ8mJNuQXxYiwTTkn7n0O7f7HvH9vrdu2exa168jQ34hRMmTm0aRkdI0ERcyOgsmuaGQy5EYCSGCMc8oFPe5QUaRkRApTE7uX1u85wYZiZEQKUyuakYi09BoWjDJSaBmFO95ZYUiIyFS3QM7FP+5QUZiJEQKk5Mbsi3ec4OMxEiIFCaUQM1I7a2FEEkjJ/TXFu+5QUYLZYtpzu/f8LAGvsfxMV5Yk8Y1GzZs6HbZZRfXqVOnotyWyODRtNw4tyCjNK2Y5vx+imp2lpOTYxa2eGC/9NJLRb0lkYHkpFHNSJFRMc35/VulSpXMmwg6d+5sEZL3GH9szNkw7WfhY5MmTdwnn3wS9kmiw0ivXr3sOvEgQ36RbkiMShicHoGo6Ycffgg/xma2Vq1a9njhwoXmhe0ZtBUFGfKLdEvTJEbF9MP2b5iq4W8ENGEkyvEeYx974oknmhMkBvtnn322eRYVFQz5sZfwNtwjReYWsHPi3IKMakZFhJQrunnj3nvvne/5dPKgVRHtiRAlxKg4xmky5BfpthxEkVEx/bD9W0FiRPeQpUuXutNOO8299957Zr7vGfcLUVRyc0MJbUFGYpQEqAUxQhbNwQcfbLayM2bMcGeeeWae0TghEiU3gRQtWVpEtxu82uvWrWujwkT8N998c57uOIWhNK2IMJq1YcOGyB/mLru4KlWq2AgaPc9atWpl6dSuu+5qhvu0q+YXhkE/hewuXbqEn/vll1/aLw//6y1btpg3NtDQUYggp2k0jqD336OPPmoZAo1HGRn+/fffzQ8+XiRGRWT69Onhfmce9erVs1/MvffeazWixx57zNWsWdNaDm3cuNF1797d/fjjjyZYREbDhg0LP7d9+/buu+++Cz+miWMqTOEXZUtOAFbtM+fOm/DrNSyl7RY1VYlRkqEbCFt+dOjQwTY/zz//fKGhrhCJkkgtyDsPM/9kD4YwwltQDTUWqhkJkcLkJDK8//dz9t13X+ss4m2x2qcXh9WrV1sfwb59+yb0PKVpIi5kyJ8+NaM1a9ZEtD/KLypiBNhfSogFtc+jjjoq/Hj9+vWWsjF1haksiSAxEiLDakZ77rlnXL31aDR63nnnFXiOt9zJEyLm37Vo0cKNHTvWJYrESIgUJjeBhbKJzjNioIUtHtatW2dCxJpLpqxkZydeAZIYCZHC5ARg1T4RUevWrV3t2rVt9Oznn38OH4t34TdIjEShHHv3+2XyU5pzbZsyed1UIicAYsQk3lWrVtnGYnA/iUxN0WiaECnfNy0U55ace8AYENGJtSWCIiMhUpicAERGJYXESIgUJieNxEhpWjFhLkZJrB+jADho0KBiX0dk5mhaThybVu0HHBa7DhgwwNbTMPmL2aks5WChqxApMc8oN84t4OscMzpNYz0YK+txZbzrrrtco0aN3I4dO9xbb73lLr/8clv0KkSQyVGalh7069fPTPM/+ugjs/fAb6h+/fq24n7BggXhBX+9e/d2VatWtVmrJ5xwgpnrR4N9AlFVxYoVbSr8pk2bIkYbaD/E1HrvOn369Mnj97Jz506b9Yo4Vq5c2Q0dOlSr9kWBxD+SFn9tqazI2JoRvkHYgBAB4doYDYLA0CTOjKRy06ZNMyP9I4880rVt29ae78H8ikmTJrmpU6faNfEi4rp+SPuWLVvm3n//fVvBj8tj9Lqf8ePHmyfShx9+6EaNGuXuv/9+9/jjj8e8f3UHEbAzN5TQFmQyVowQEMQGg/z8QDg+//xzN3nyZFsMiJE+M0wRqhdffDGiCSNCQiH7uOOOsxXLEydOjDBfq1ChgnviiScs8kLgbr31VhMcTKk8iKwQIHyR6CZCLYvHsVB3EAGKjNIAb0IWaVp+EAlt3brVUiZ/F5BvvvnGbBI8mAbvn3nKQkFEBoMpDzqBkML5z+Ha/q4ezZs3j7gfzlm5cmVMC1t1BxHpNpqWsQVsohw++KRO+bWTRlBwc5w5c2aeY0RH+eEJSkFCF31uoqg7iAiK02NJkbFihAtdu3bt3MMPP2xtpaPrRhSgqQ+RalHH8VslRENPNBYL1qhRwx7Pnz/fVi1TEPeg6L19+3YzLAcK5ERZ/ojKK5r7HyOa5cqVK7H3LdKLHI2mpQejR4+2FKhp06bW456UiEiJWg4pEv3N+ErkxHA/UwHmzZtno1xea2rAcL9Hjx4mOHPmzDFxO+eccyJWLDNyRgcFjPfffPNN657AyJnfaoGUjZE80juK3NSerrjiilL/uYjUISeNRtMyNjICOnV8+umn7vbbb3dXX321taOmAyyeLJiJk0IxinbDDTe4nj17mjUCAkORulq1auHr0BEBg31M9Rll4ytC54cROKIcnstIGKZVzN72g2E/0RPiSDREAZtpBUJkQmSUFVL7iaTDPCPSvldffTVpr4HJOn7GzIuKx8UvEWQhUvpsLuT36R0/Z+z7rsJuu8d1zT+3b3WTerdJyt9ISZDRkZEQqU5uEp0eSxuJkSgUmZwFl5zckMtOkzRNYlQKFNRjTYjisDPXuaw4RYZzg4zESIgUJkeRkRAiCORIjES60+TG6WV9C27h8P/1bxfpL0YZu1BWCBEsVDMSIoXJ1dC+ECII5OSG4h5NC3qapshIiBQmRH+yOEUm6IststNt2QXrybwNH6JTTjnFLVmyJHwOq+/957ANGTIkfJzFsP5jmKKx9uy2226L+GU+9thj7thjj3WVKlWyjUW12NfGup8777wzYj/LQvzWIViUdOzY0exKcA/ApG3ChAlJ+imJdEvTchPYgkxaiREgPix4ZcPqFfuP008/PeIcXBa9c9hYhR/NO++8Y8dYyY89LItpcWr0C8j5559vbpBYhmCwdvLJJ7t169ZFXIcV/SNGjHC//fZbvveMEwDNAHAOQDhZlMuiWWxshSiI/Dq5lkSH19Im7dI0TMc86w6+Dh482FbKs+KeFfmwxx57RNh7xIKoyjunTp06JkSs8McGBKIjFyIlrGgRQITEg4gJi1tsYulAEovrr78+4jEWJFiW4JNN2yQh8oMULe40TZFR2YGtK6JBmoW4eBCp8Jh0iIgnuktHNHgXIUTNmjXL95xt27ZZmyNM2/xgBXLHHXeYN9HatWvjvndWVkdfy48M+UW6pWlpFxm9/vrr5qAIv//+u9Vh2OeZmGFWhoMjdR5qPHhJ42kd3YWjZcuW9hyECpHBV8gf8URD3almzZoWCUXTuXNnEz4M1caNG1foeyDC+vjjj639UX4QaUV3FxGZRyj3ry3ec4NM2olRmzZtzBgNMDrD5OzUU0814SHduvLKK8PnUqdBlOiZ5kVLHi+88II79NBDTYjoEELqxLnRxWgg/cKZkToSNaJYcH16rmHiVhBcg8I3aR+dRPIDEcUV0u9vQ3cRkVmEEqgFBb1mlHYFbEajSMvYcEwkEiFC4sMdCzpyAHUdP3ywuQaChIXsoEGD3L333mttifzQuog0bMaMGSZu+UHdCs/t6PqQn1mzZlmN6L777iswCvNqYxhk+TeReeQqTUsdGEIn3cLONRaLFi2yr6RzBUHth46vpG1e9HP33XfbkD/FZvqqFQZRFema36jfHxEx6kcEJatZkYkF7LRL0yjses0TGU5/6KGHrJBNxMEQPB03SOWw7KQuQ9p2xhln2NC8n40bN9p1ECDStAceeMCe50UgpGY33nije+6552zukveaXm+1WDRs2NCaM1LMjhYiGjtSz+rSpUv4WsxxKqiILYRLQIw4N8ikXZpGe2miHDZGvxAcOsK2bt3aUhtqQXx/2GGHuZtuusn16tXL6j3RUIjmGggNkQom+zzXg1oUURL1Ju/12EjbCmL48OF5cnfM1xiNoyjtvxYm/0IURG4olNAWZGTInyaUtCG/LERSw5D/iMEvuXL/iOz5lx85//e7+2xEFxnyCyFKnpBqRiLdkbFZapCbgAc25waZtCtgC5FJhNJonpHESIgUJpRGM7DTbjRNiEwiN2CTHplaw1w65vd99tlnCT1XkZGISeMb3izzn8yi208t61sIPKGAFbCvu+46V6NGDbd48eKEnysxEiLDxGjz5s0R+5l/x1Zc3nzzTVsWhS8X3yeK0jQhMmzS47777mtzlLyNybbF5ccff7QJxM8884yrWLFika6hyEiIDIuM1qxZEzGRsrhREaN0OE307dvX1mhi3VwUFBkFFNarUQTctGlTWd+KSAFD/lA829+RUbTbQ35idMstt+Txi4/eMB5krSWpH7Y2xUFilI+hf/ny5d3+++/vrrnmGrMgESKIhBIYSUu0gN2/f3+3bNmyArcGDRq49957zxagI2p4zmO9A0RJPXr0iPv1lKbFMPR/8sknzVRtzpw57tJLLzUx8gzbShoW27I6X4igTXqsUqWKbYUxatQos9LxWL9+vXl3sbC8IKvmaBQZ5WPoT5HvggsuMMsPWgt5adMbb7zhDj/8cPM04geNvYjfdoSOIbVq1bIiHpYh0Y4AOAbwHweXRn7RJ510ku2fNm2a+RzttttuZlVS1LxbZBaheFO0IkRG8YL9DhGSt3l+XQcccIB9FuJFYlQIiANRkse1115rNiFYk1StWtW8kLzjuEA2adLEPLe/+OILsx7p1q2b+/DDDyOuOX78eAtn586daz7XFBSxC8GmhIliRGP+Xm6xkCG/COKkx+KgNK0A8M3GPK1t27bhfZjqe9EMooLy01IIa1oM+akxeQwYMMD8lfBT8oer5NT+tkVY0VKfuv/++y36qlevnkVcuD7mhwz5BYRyc2yLh3jPKy54gBVlHZwio3y6i5CGtWjRwryr/c6M7PPAhRHhoJAHOTk51voIL2zM/bkOk8C+//77iNeItqjl+Xhx+7vM+l8nFoxc4HXjbURXInPFKBTnFmQUGeXTXYTRNKa18xW+/PLLfH+Inohg2E90M3LkSKsX0RwAI//ovmzs91OU/yIlNWtWpDah3NwEIqNgr5SVGOXTXSQ/GML0/LLx2F6xYoU75JBD7DGjbx07dnRdu3a1x7m5udYemw4jBYEFLkXy6NcRojBCOTm2xUO855UVStMS5NZbb7UW1hSomZfEiFinTp3sGCL29ttvu3nz5lnq1adPn7C5fkEwc3X16tU2wrZ8+XKrU+GLLURhhEIJpGkhiVFaQbshungwavbDDz+4KVOmhOcJ0S2EbrXMsWAInykCnlAVBJEWiwunTp1q0wbGjBljvdiEKAzVjNKUeKKRY445xqKiWFDQjk63omG+Uizomcbm5+KLLy70fkRmEwrgaFpRUZomhAgEKmCLmMjYLDUIpVFkJDGKE2pAQTc0F5lHSEP7QoggkEu0E2fEY+cGGEVGQqQwIaVpIt05fMi0sr4Ft/jO9mV9C4EnJDESQgSCnBwXyo4z/Qr4DGylaUKkMCFmVcc7mhbwGdgSIyFSmBCLX9NkoWxGT3qU6b1IdUJpZCGS9mKUCib7Y8eOtXlMdGpQRxCR+Dyj+Lcgk/Zi5Jnss6j166+/NuPw0aNHRzgyljXbtm2ze8TxUYhEUGSUJib70Wzfvt2ddtpp5rr466+/mik+kcrLL79spmuY7LOqfv78+RHPY8V9/fr17XWw3MRkzW85gkkbZv0e+GbjIInfEWDAhuc1rytEIkiM0sxkH7BuPfnkk82VEb8iVuB73HDDDRZJYZZP5wM6gOzcudOOLVy40PyvzzvvPPOtpvEdViKeAwDPRaAw2QfsQWbPnm1tgLOzix6YypBfeLOqE9mCTMaNpsUy2adP+LnnnmutVWgtFN3HDCEiYoJhw4ZZFLRq1SpzeLzvvvvsWggQIFZY1N59991WrypXrpx79tln3RFHHGHRD37a1Ijq1KlTrPchQ34BoZxc57LidXpUzSjwJvsnnniiFbYnTZoUs6EiBvse1atXt68//fSTfcXRsVWrVhHn8xi7WQz6gWvT3ohuHx06dLA0sbjIkF+km9NjRkRGhZnsE/VQ9+ExRvrReOf7zfe9eg8r+f1dPbx90ZCaESVRhyLFo29acZAhvwAbro83Mgp4mpadSSb7pEZ+YfFbydITnHSroC4g+Znpf/DBBxH78MAmXUN8gDa/FMGZ10RLoeHDhxfzHQmRfgXsjIiM4oE0irTqhBNOMNHwOn4UxtVXX+2OPvpoExjqToy0PfTQQzZ9ANauXesuu+wyS9GwrKWwTSR26qmnhkfPMO1now4FFML32GMP88b2F9KFiCa044/4RSYnctAmaEiMfNDzzC9IsepH0WDAT63ppptuMkGipsRwPsVr0jW+Nm3a1PXv39/Opxst39POiNE5almMsFEY96CmBU8++aQ9X4ho+NtkusqGLye5ROA58fxdlwVZIdkXpgWbN292//rXv2yKAjO5i4ssRIL/+/zjjz/yNAgtDISIgZwgoshIiBRl1113DaywFAWJkYiJjM1EaZMRo2lCiOAjMRJCBAKJkRAiEKhmJIwD+r4UuJ/E6jFdyvoWRCmiyEgIEQgkRkKIQCAxEkIEAomRECK9xIiV6qxSx8s5mu+//958fFg9X6VKFTdw4MB8p7HXq1fPpqyvW7cuzzFM0FirhQ0IFrC8Fr5BHp5NbKxt8uTJ4fM+/fRTWyO21157ucqVK7vevXu7rVu35rkOa8eiwTgfm9j8HkfjvwfWoWFb67lA+mF9GwZsvC/cBTBnEyKTKDExeuKJJ9yAAQPMTgPx8WDhKavU6cbBsYkTJ5p3EKvdo+E4623OPvvsPB9YltB16tTJTPVfe+01t2jRIvvQYozmdfrA4xrjff/GAlREkFXysH79ensOliIffvihmz59ulu6dGlSF6Sy4JV7Wbx4sa3sv/jii91bb70VPv7mm2+a4Vrfvn3dF198YSv+cZBk9b8QmUKJiBFiwH92rDJOP/30CCGZMWOGeQRhvdq4cWMTAgzrH3vsMVsM6GfcuHFmmN+tWzcTN/8aXiKgBQsWmEkalh1EUHxoiWiwigUiM1Yl+7dXXnnFBICoxHN9xNPo4YcftmtwLb5HID0Lj5KGCIx7wdaWDiDYgvBz8cAPG6FFjHCFRLwHDx5stiNaxywyhRIRI8zD+GCzYY1BJOB9iPD3adCggaVWHu3atTNDeczsPbZs2WKpFM8nhULgsPHw4HzwLwxEfEjpos3NPLg+qdYll1wScR2e4zfDx6Af8rtOSUGUiGjTecRv8sY9RS945J7wQvruu+9iXkuG/CLdKBExIqJBRIA6DtEKHTYA07Bq1apFnF+pUiUTBI55kL4ddNBBZnaPyNBtg+t6YHZGWob382+//WY1JxwauQYpUH73deihh7qWLVuG9+FVxHOoyXANruX1K4u+Ds8jovJvc+bMSfjnQzcRnotVLFEakZHXLcQTZ5wg+ZlhZ7tixQo3cuTImPfkN+THYsLbSFGFyGgxWr58uXXcQDwAb2c+cKRZHtEe0bG8o/2CBnzPB3TTpk32mEiCVIoPKh9mCr1ETtSCPHvX6B5odAHxR0WA2I0fP95SRa5B+kRqhGBGX4eIj8jKvx111FFFMm3juW+//bYVqXlMzcqjV69eZrhGiotI4wDp/TxjvTeQIb9IN4q9HAQRwWC+Zs2aEUKDeBB18GGnUOyH/fQt8yImakqc8/HHH1utxJ/WUA+iFgVNmjSxDzWGU0Q1++yzj2vWrFlMgXjxxRetU2v37t3zHKMuxcboHMVtRJGCcd26dSPOI9rwi4Y/pUsEfgZch41UlNoZ94x/NvD61IfuuOMOi9p4X15kSc+1WMiQX6QbxYqMEKGnn37aogx/9MCoESnVhAkTrDUQI0T+dIPiLR8mxMUTNKxWeZ7/Otddd11EquZBWsIHlqL2J5984jp27JjnHJ5H51bOyw/EkPSJCIiaDbWqZIMgdenSxSKbaIiCEHWiI0SYn13VqlWTfk9CpHxkxMgUUQ6pEALh56yzzjJBQCyIABgho05D8ZamiKQm2GkSITGahG80hW4/1FXuuusuEynm5xBVIC4Y1WNaf8UVV9goFJ1g/TAqRmugadOmxbxvhsy9ehCp07XXXmv1J0a9isLPP/+cZ06SN5oXC6Y18H742RAh/fLLLxbJMWeJqQ0MAPBeZ82aVaT7ESLjIiPEhqH6aCEC/vt7UdIbb7xhkQfNDWkFjYDQjQOmTJlifeg7d+6c5xoUtOlj5kVHRFeIGsVsJk7yvTes74d6FRFGtEh5UOMiCuLadHd99NFH7XpFhdoUqZd/w2Q/P3hdfm6Y+HtQx0KY+Bkx74l6GEb+QmQKMuRPE4pryC8LkfRusJAKaG2aECIQyFxNGDIyE2WNIiMhRCCQGAkhAoHESAgRCFQzynD27ZbXWykorHkmebYuIngoMhJCBAKJkRAiEEiMhBCBQGIkhAgEEqO/wQM7lpF/sqxo/WCl26hRI5v2z8ZqfXyxhcgkNJrmA5dKVsz7KciCpKSoVauWuQZ43kksmsUWhaYDmMEJkQkoMvKBx1K0oT8eQ1h5sIKe49WrV3dDhgwxLyfAzwkrEn/LJLqkHHzwweGuJQU9H2jj1L59e3sO2+23327XpAGBEJmCxKgQ6N+GUNBFBDsUUiosTW677TY7jpMkx2k1hMDQ+ghLEozlcJEs7PnR4G6JHzhCRrqWHzLkF+mG0rQoszivpRHgr02kgv0shmzUkPBSovca9rj4EdFlBPGh5oMnEr7dN998s4kP0E6psOcDZnGID+Zq3AMtljxb2vwM+ekJJ0S6oMjIR5s2bSJsb0eNGuWWLVtmIuFvHoABGh1QaCXkdTsh2iHqoTcaaZhHPM8H2jzxmqRmeH736NHDvMHzQ4b8It1QZOSDtCragD+6i4m3D/z7sbmlvkTUQ4rlGWLF+3x8r73XxvGR5gQPPPCARV2xkCG/SDcUGRUCqdK8efMiOrvyeI899gh3ROExXt1Tp041EaKAncjzY8H5XuNKITIBiVEh9OvXz61Zs8YE5quvvnKvvfaa1YSuuuoqq/fQCRcvbo5TY8IPm66xGOrH83ygiSTNIb/99lurHd1www3mgU1RXIhMQWlaIRC90GWEDiJ09KCBJN1Qhg4dasfpUEJ6R88zYF4QPdD69u1rHUgKez7Qvw1Bo+EAvscUwxmVK43WSUIEBRnyZ7iBuyxEgslmGfILIUTZoDQtw5GBmQgKKmALIQKBxEgIEQgkRkKIQCAxEkIEAhWwM5xaF45zQWXthEvK+hZEKaLISAgRCCRGQohAIDEqBVq3bu0GDRoUfrzffvu5kSNHlsZLC5EySIzKwNAfe5DevXuHH48dO9YEi2UcPGfTpk0ldVtCpAwSoxI29Gexq3+rW7dunvMw+a9YsWL48bZt2+y5rN4XIlPRaFoSDP0LgzSNtM1L3byv2IYIkalIjFIUjNf85mus8hYilVGalgRDf287++yzXbLAkB/LEG/D9F+IVEaRUQkb+mPK74HpWrLAkB+3SH9kJEESqYzEKMmG/slChvwi3VCaJoQIBIqMAsCGDRts8+YkYcpP95DatWubZ7YQmYAiowAwZswY17hxY9erVy97fNxxx9njKVOmlPWtCVFqyJA/ww3ctWo/mGyWIb8QQpQNqhllOPIMEkFBNSMhRCCQGAkhAoHESAgRCCRGQohAoAJ2hrHXiUNdqrDpndvK+hZEKaLISAgRCCRGQohAIDESQgQCiZEQIhBIjEqAn376yfXp08dW2Xs+2O3atXPz58+P+xpnnHGGPX/XXXd11atXd926dXPr168vidsTIiWQGJUAXbp0cYsXL3bjx493K1assNX2tB769ddfE3KJnDRpklu+fLl76aWX3OrVq91ZZ51VErcnREqgVfvFhB5nlSpVss4exx9/fOwfclaWGz16tIkU5xE53XXXXQV6ZHNup06dzHS/fPnycRnyYztb2Kp9De2nBpu1al8kime+/+qrr0aIQzQ33nhjOILq2rWrO//8892yZctinktENWHCBNeyZcuYQgQy5BfphtK0YrLLLru4p556ylK0vfbay7Vq1cqaMS5ZsiTiPKKgSy+91B188MFu+PDh7qijjnIPPvhgxDmDBw82H+3KlSu777//3r322msFGvITBXnbmjVrivtWhChTJEYlABEPxWZSKwrXpGJHHnmkiZRHixYtIp7D4+jI6Nprr3WLFi1yM2bMcOXKlXPdu3d3oVAo5mtSKCcd829CpDISoxKCUbCTTjrJ3XTTTW7evHnuoosucjfffHOBz6GW5KdKlSoWOXGdiRMnumnTprkFCxaU1C0KEWgkRknisMMOc7///nv4cbSo8PiQQw7J9/leRFRQHUqIdEILZYvJxo0brR7Us2dP16hRI+vq8cknn9hoWceOHcPnTZ482epExxxzjBWnP/roIzdu3Dg7xvdsHGNk7uuvv7YI64ADDsiT3gmRrkiMigkjac2aNXP333+/zQ3asWOHDbHT6YNCtsewYcMs9erXr58N7SNIRE+w2267uZdfftnSOqIpJj2ecsopdj61ISEyAc0zKo0fclaWe+WVV2zeUFnPS9E8o9Rg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", "text/plain": [ "
" ] @@ -1899,10 +2102,10 @@ "id": "57ce04b7", "metadata": { "papermill": { - "duration": 0.004759, - "end_time": "2025-06-27T16:26:46.041865", + "duration": 0.005101, + "end_time": "2026-08-06T17:18:53.464888+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.037106", + "start_time": "2026-08-06T17:18:53.459787+00:00", "status": "completed" }, "tags": [] @@ -1913,20 +2116,20 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 20, "id": "a0e08969", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.052285Z", - "iopub.status.busy": "2025-06-27T16:26:46.052148Z", - "iopub.status.idle": "2025-06-27T16:26:46.058100Z", - "shell.execute_reply": "2025-06-27T16:26:46.057854Z" + "iopub.execute_input": "2026-08-06T17:18:53.476084Z", + "iopub.status.busy": "2026-08-06T17:18:53.475980Z", + "iopub.status.idle": "2026-08-06T17:18:53.481029Z", + "shell.execute_reply": "2026-08-06T17:18:53.480743Z" }, "papermill": { - "duration": 0.011936, - "end_time": "2025-06-27T16:26:46.058798", + "duration": 0.011552, + "end_time": "2026-08-06T17:18:53.481597+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.046862", + "start_time": "2026-08-06T17:18:53.470045+00:00", "status": "completed" }, "tags": [] @@ -1979,50 +2182,50 @@ " \n", " \n", " Leukemic_SB.vs.Normal\n", - " 3.168537\n", - " 17.245745\n", - " 3.396873\n", - " -0.493828\n", - " 0.071816\n", - " 6.812841\n", - " 6.314824\n", - " 3.452622\n", - " 5.558162\n", - " 5.259825\n", + " 2.963769\n", + " 13.983566\n", + " 2.884977\n", + " -0.24563\n", + " 0.179011\n", + " 5.428026\n", + " 6.215017\n", + " 3.262983\n", + " 5.410293\n", + " 4.873833\n", " ...\n", - " 1.184029\n", - " -2.941684\n", - " -2.355503\n", - " -7.619795\n", - " 2.099912\n", - " -3.074381\n", - " -7.744751\n", - " -11.166439\n", - " -1.561793\n", - " 1.27881\n", + " 1.520396\n", + " -2.272855\n", + " -3.153128\n", + " -6.110922\n", + " 1.6341\n", + " -2.816943\n", + " -6.764932\n", + " -9.004647\n", + " -1.571242\n", + " 0.455914\n", " \n", " \n", "\n", - "

1 rows × 13404 columns

\n", + "

1 rows × 13286 columns

\n", "" ], "text/plain": [ - "ID Itm2a Sergef Fam109a Dhx9 Ssu72 \\\n", - "Leukemic_SB.vs.Normal 3.168537 17.245745 3.396873 -0.493828 0.071816 \n", + "ID Itm2a Sergef Fam109a Dhx9 Ssu72 \\\n", + "Leukemic_SB.vs.Normal 2.963769 13.983566 2.884977 -0.24563 0.179011 \n", "\n", "ID Eif2b2 Mks1 Vps28 Setd6 Psma4 ... \\\n", - "Leukemic_SB.vs.Normal 6.812841 6.314824 3.452622 5.558162 5.259825 ... \n", + "Leukemic_SB.vs.Normal 5.428026 6.215017 3.262983 5.410293 4.873833 ... \n", "\n", - "ID Cd37 Rag2 Itgb1bp2 Sec23ip Gosr1 \\\n", - "Leukemic_SB.vs.Normal 1.184029 -2.941684 -2.355503 -7.619795 2.099912 \n", + "ID Cd37 Rag2 Itgb1bp2 Sec23ip Gosr1 \\\n", + "Leukemic_SB.vs.Normal 1.520396 -2.272855 -3.153128 -6.110922 1.6341 \n", "\n", - "ID Ctsw Ryk Rhd Pxmp4 Gm25500 \n", - "Leukemic_SB.vs.Normal -3.074381 -7.744751 -11.166439 -1.561793 1.27881 \n", + "ID Ctsw Ryk Rhd Pxmp4 Gm25500 \n", + "Leukemic_SB.vs.Normal -2.816943 -6.764932 -9.004647 -1.571242 0.455914 \n", "\n", - "[1 rows x 13404 columns]" + "[1 rows x 13286 columns]" ] }, - "execution_count": 19, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -2034,20 +2237,20 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 21, "id": "4b241977", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.068952Z", - "iopub.status.busy": "2025-06-27T16:26:46.068759Z", - "iopub.status.idle": "2025-06-27T16:26:46.135301Z", - "shell.execute_reply": "2025-06-27T16:26:46.135063Z" + "iopub.execute_input": "2026-08-06T17:18:53.492841Z", + "iopub.status.busy": "2026-08-06T17:18:53.492741Z", + "iopub.status.idle": "2026-08-06T17:18:53.546079Z", + "shell.execute_reply": "2026-08-06T17:18:53.545698Z" }, "papermill": { - "duration": 0.07234, - "end_time": "2025-06-27T16:26:46.135988", + "duration": 0.059643, + "end_time": "2026-08-06T17:18:53.546578+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.063648", + "start_time": "2026-08-06T17:18:53.486935+00:00", "status": "completed" }, "tags": [] @@ -2057,84 +2260,42 @@ "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - Running ulm\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:ulm - Running ulm\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:17 | [INFO] Extracted omics mat with 1 rows (observations) and 13404 columns (features)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:Extracted omics mat with 1 rows (observations) and 13404 columns (features)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:17 | [INFO] Network adjacency matrix has 4378 unique features and 625 unique sources\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:decoupler:Network adjacency matrix has 4378 unique features and 625 unique sources\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - fitting 625 univariate models of 13404 observations (targets) with 13402 degrees of freedom\n" + "2026-08-06 19:18:53 | [INFO] ulm - Running ulm\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - fitting 625 univariate models of 13404 observations (targets) with 13402 degrees of freedom\n" + "2026-08-06 19:18:53 | [INFO] Extracted omics mat with 1 rows (observations) and 13286 columns (features)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - adjusting p-values by FDR\n" + "2026-08-06 19:18:53 | [INFO] Network adjacency matrix has 3335 unique features and 530 unique sources\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - adjusting p-values by FDR\n" + "2026-08-06 19:18:53 | [INFO] ulm - fitting 530 univariate models of 13286 observations (targets) with 13284 degrees of freedom\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2026-07-22 16:14:17 | [INFO] ulm - done\n" + "2026-08-06 19:18:53 | [INFO] ulm - adjusting p-values by FDR\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:decoupler:ulm - done\n" + "2026-08-06 19:18:53 | [INFO] ulm - done\n" ] }, { @@ -2158,76 +2319,79 @@ " \n", " \n", " \n", - " Abl1\n", - " Ahr\n", - " Aire\n", - " Apex1\n", - " Ar\n", - " Arid1a\n", - " Arid1b\n", - " Arid3a\n", - " Arid3b\n", - " Arid4a\n", + " A0A087WPA7\n", + " A0A087WQ36\n", + " A0A087WR05\n", + " A0A087WSP5\n", + " A0A0A6YWE3\n", + " A0A0A6YWQ4\n", + " A0A0A6YXS3\n", + " A0A0G2JEM8\n", + " A0A0J9YTU7\n", + " A0A0J9YTW3\n", " ...\n", - " Zfpm1\n", - " Zfpm2\n", - " Zglp1\n", " Zgpat\n", " Zhx2\n", " Zic1\n", - " Zic2\n", - " Zkscan3\n", - " Zkscan4\n", - " Zkscan7\n", + " Znf143\n", + " Znf148\n", + " Znf263\n", + " Znf354c\n", + " Znf382\n", + " Znf436\n", + " Znf76\n", " \n", " \n", " \n", " \n", " Leukemic_SB.vs.Normal\n", - " 1.198672\n", - " 0.664946\n", - " -0.932051\n", - " 1.41717\n", - " 0.441607\n", - " 0.676726\n", - " -1.148908\n", - " -0.229291\n", - " -1.489206\n", - " 0.929682\n", + " -1.03892\n", + " -0.881134\n", + " -5.416913\n", + " 0.317954\n", + " -0.179198\n", + " 0.755719\n", + " 0.235632\n", + " -0.68796\n", + " 0.674024\n", + " -0.397479\n", " ...\n", - " -1.618189\n", - " -0.165162\n", - " -0.623841\n", - " -1.382759\n", - " 1.355504\n", - " 0.659013\n", - " -0.049629\n", - " 1.390874\n", - " 1.390874\n", - " 1.316169\n", + " -1.245498\n", + " 1.207684\n", + " 0.267398\n", + " -0.224013\n", + " -2.08245\n", + " -0.238626\n", + " 1.961743\n", + " -1.454379\n", + " -1.668492\n", + " 0.348216\n", " \n", " \n", "\n", - "

1 rows × 625 columns

\n", + "

1 rows × 530 columns

\n", "" ], "text/plain": [ - " Abl1 Ahr Aire Apex1 Ar \\\n", - "Leukemic_SB.vs.Normal 1.198672 0.664946 -0.932051 1.41717 0.441607 \n", + " A0A087WPA7 A0A087WQ36 A0A087WR05 A0A087WSP5 \\\n", + "Leukemic_SB.vs.Normal -1.03892 -0.881134 -5.416913 0.317954 \n", "\n", - " Arid1a Arid1b Arid3a Arid3b Arid4a ... \\\n", - "Leukemic_SB.vs.Normal 0.676726 -1.148908 -0.229291 -1.489206 0.929682 ... \n", + " A0A0A6YWE3 A0A0A6YWQ4 A0A0A6YXS3 A0A0G2JEM8 \\\n", + "Leukemic_SB.vs.Normal -0.179198 0.755719 0.235632 -0.68796 \n", "\n", - " Zfpm1 Zfpm2 Zglp1 Zgpat Zhx2 \\\n", - "Leukemic_SB.vs.Normal -1.618189 -0.165162 -0.623841 -1.382759 1.355504 \n", + " A0A0J9YTU7 A0A0J9YTW3 ... Zgpat Zhx2 \\\n", + "Leukemic_SB.vs.Normal 0.674024 -0.397479 ... -1.245498 1.207684 \n", "\n", - " Zic1 Zic2 Zkscan3 Zkscan4 Zkscan7 \n", - "Leukemic_SB.vs.Normal 0.659013 -0.049629 1.390874 1.390874 1.316169 \n", + " Zic1 Znf143 Znf148 Znf263 Znf354c \\\n", + "Leukemic_SB.vs.Normal 0.267398 -0.224013 -2.08245 -0.238626 1.961743 \n", "\n", - "[1 rows x 625 columns]" + " Znf382 Znf436 Znf76 \n", + "Leukemic_SB.vs.Normal -1.454379 -1.668492 0.348216 \n", + "\n", + "[1 rows x 530 columns]" ] }, - "execution_count": 20, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -2239,20 +2403,20 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 22, "id": "6eb7b812", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.146483Z", - "iopub.status.busy": "2025-06-27T16:26:46.146381Z", - "iopub.status.idle": "2025-06-27T16:26:46.314456Z", - "shell.execute_reply": "2025-06-27T16:26:46.314128Z" + "iopub.execute_input": "2026-08-06T17:18:53.558181Z", + "iopub.status.busy": "2026-08-06T17:18:53.557948Z", + "iopub.status.idle": "2026-08-06T17:18:53.669875Z", + "shell.execute_reply": "2026-08-06T17:18:53.669504Z" }, "papermill": { - "duration": 0.17408, - "end_time": "2025-06-27T16:26:46.315218", + "duration": 0.118305, + "end_time": "2026-08-06T17:18:53.670432+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.141138", + "start_time": "2026-08-06T17:18:53.552127+00:00", "status": "completed" }, "tags": [] @@ -2260,7 +2424,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASMAAAJNCAYAAAB6NhOaAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX29JREFUeJztnQu8TPX6/797S0fK6eJ2KpRuLlGE0l1JuukupdJBSlIoquNUUvQjofs9CSWki0oJ6cqhpCKJolRKCSeKP/ae/+v91JqzZszsPbP3zN5rZj7v12u99p41a9asmdnz2c/zfL/fz5MXCoVCTgghypn88r4AIYQAiZEQIhBIjIQQgUBiJIQIBBIjIUQgkBgJIQKBxEgIEQh2KO8LEKmhsLDQrVq1ylWpUsXl5eXpbc1wQqGQ27Bhg9trr71cfn5uxAwSoywBIapdu3Z5X4ZIMd99952rVatWTryvEqMsgYjI++P9+9//Xt6XI0rJb7/9Zv9cvM81F5AYZQleaoYQZasYdc/b12Urj4S+ibk/l1Lu3EhGhRCBR2IkhAgEEiMhRCCQGAkhAoHEqBT885//tAJj9+7dt7uvR48edh/HCCGKR2JUShh+fe6559ymTZvC+zZv3uzGjx/v6tSpU9rTC5EzSIxKyWGHHWai88ILL4T38Tsi1bRpU7s9ZswYV7VqVff//t//i3jseeed5zp16hS+PWXKFNe8eXNXqVIlV61aNXfuueeW9vKEyBgkRimgc+fO7qmnngrfHjVqlOvSpUv4dvv27V1BQYGJjceaNWvcq6++ao+F1157zcTn9NNPdwsWLHAzZ840YYoHwsbEOP8mRCYjMUoBl156qXv//ffdN99847799lv3wQcfuEsuuSR8/0477eQ6duwYIVjPPPOMTfNv1aqV3R48eLC78MIL3cCBA12DBg3coYce6vr37x/3Of/v//7P7brrruFNS0FEpiMxSgGkVEQ0Tz/9tAkOv7PPT7du3dybb77pfvjhB7vNcV4BHD755BPXunXrhJ/zX//6l/vvf/8b3lgGIkQmo+UgKYK0rGfPnvb7gw8+uN391I+IdqgftW3b1i1cuNC98sorEdFTMvztb3+zTYhsQZFRijjllFPcli1bbENsYnH55ZdbRERN6aSTTopIrQ455BCrEwmRq0iMUkSFChXcF198YRu/x+Liiy+2NO3xxx+PKHDDgAEDbDoAPzkHkdNdd92VqssTIvBIjFJIcSvmuY/h/F122cWdffbZEfdRyJ40aZKNuDVp0sSdeOKJbu7cuam8PCECTZ46ypYtbdq0sdGy++67L6XnZWifUTWK2bIQyXwLkd9y4POMRgXsMmLt2rU2mvbWW2+5Bx54oKyeVoiMQWJUhjO1161b54YOHerq1atXVk+bEwZkIjuQGJURTIgUQsRHBWwhRCCQGAkhAoHSNJEx/PpAv7Q/R9Wew9L+HCI2ioyEEIFAYiSECAQSIyFEIJAYCSECgcTIh+cvxLbDDjuYnexVV11lkxXTPQepa9eurm7dumYlsv/++9uCWRwAhMgVNJoWwwoEm49t27a5xYsX2+r69evX24r6dIDgLFmyxBUWFrpHH33UHXDAAW7RokVmxvb777+7u+++Oy3PK0TQUGQUBYZl//jHP8wS9uSTT3YdOnSwNWUeCNMVV1zhatasacb5jRo1Mi9rj8mTJ7uDDz7YzrPvvvu64cOHR5yffYMGDbIojIWQiI4ngDzffvvt584880zXt2/fCJN/IbIdRUZFsHz5cvfGG2+4ihUr2m2il1NPPdVt2LDBjRs3ztIpoifPv2j+/PnuggsucLfddpuJ2OzZs61/Gp1B/P3Thg0b5m655RZ38803x31uVmvvscceRRry+7uNyJBfZDoSoyiIcvAbopsH/c9gxIgR9nPGjBlu3rx5Zn520EEH2T4iGQ+Ow8caoQGOQawQH78Y4VVE5BOPr7/+2t1///3bRVXRhvyY9wuRLShNi+KEE04wc3yMza655hqzkOUnsJ/0zROiaBCpo48+OmIft5ctW2bi5lFUC6JVq1ZZ2kZ7I2xq4yFDfpFtSIyi2Hnnna2IjCc1BmikQl4EUpxpfigUCnf78O+L9RzxhAgxPPLII91jjz1W5HNRk/KcJYtzmBQiE5AYFQND7IxoIRQI1Pfff++WLl0a89iGDRta/zQ/1I2IpOL5YnvgjY31LL5HFLPz8/XRiNxCf/HFgEAwOnbnnXe6448/3h133HHmYz19+nS3YsUK9/rrr1uRG66//nrr8HHHHXeYYNFHDVfHoupDgNDxPHQLQfh++eUX99NPP9kmRK4gMUqA6667zjp60CiRofsWLVq4iy66yCKhG264IVwPIqqZOHGie+6552zI/9Zbb3W33357RPE6Fkwd+Oqrr8ySlprUnnvuGd6EyBVkyJ8l5IKBey5ZiPyWA59nNIqMhBCBQPOMRMYQlKhFpAdFRkKIQCAxEkIEAomRECIQqGYkMoYNY25L27mrdErfuUViKDISQgQCiZEQIhBIjIQQgUBiJIQIBFkjRqyOZ2U8XkB+Pv30U1tHxiJULEAaNGjg7r333rjnqVevnttxxx1tFb0HC2GxBoleuIo9Lef1w6p+jsUCxDP3j7fhCAmx7nvkkUdS9M4IkRlkjRiNGjXKTNCw8Fi5cmV4P1aw1atXN5vYzz//3P373/82YzJW00fDY3F3xNhs9OjR4f3HHHOMdQt5++23I4zUOJY1RCxy9Zg1a5bZ1F588cXuxx9/DG+s6Gf1v3+ffzU/tiH++y677LI0vVNCBJOsGNqniwar5T/88EOLXhASVswD3T38YBM7Z84cM7vv2bNnxH1PPvmk69ixo1mFXH311a5///4WpWBDy0p9xOjCCy+0Y/kdkcI8jd8xZPP2H3744Wag5jdR4xwIGtFULHbbbbe49wmRC2RFZDRhwgRLr9guueQSizJiOSwWZXaPyf6kSZPs8W3atDGB80dCODAS9XjwOx5ECFf0fo5NFoSxWrVqJnqkaJj/FwUOlERl/k2ITCYrxIiIBhEBakYbN240k7NYEBURRV155ZUR+/EgOvDAAy2VovZEBMR5PRAeDNNIoeCdd94xIWLzRAu/IwzXkhUjzNgQQgz/eV5SOszcigJDfiwmvC26diVEppHxadqXX35pHTu8HmOkQrQJooZ00kknRRxLzeiss86yFI7oJ56gAb/j6kifNFIojPUpbCM8hx56qNu0aZOZqRGBEZVguo/Q4U191FFHJfUa/C2LmjRpYj8xZSuqlRF1L0zfPLgGCZLIZDJejBARur/uvffe4X0IBEVk2lLvvvvuto+WQbQIomli9Jec++gGQs3pxhtvDO/HwZFOsrS4rly5stWCSMPWrl1r9SLP1xrxYT9ihJk+zR1LQ8uWLU1cVq9ebc0iY4HosQmRLWR0moYIjRkzxvqL0UbI2xjO32effdwzzzwTjohInRihGjx4cExBIwricf7zYCnrT9U4B5ERG2mbh5eqsZWkXhTNggULTNCIyITIFXbI9IaLRD9du3a1uomf888/34QEcWCjdTRpjTdXiKiGIf+tW7e6sWPHWlqEb7Uf+pbdddddJlKkZpyH+k70sDxiNGTIECuCJytGr7zyil0TERXzoIiwmH5AC21FPiKXyOjICLGhLhQtREAHD6Ibait02yBK8hvdM2oFU6ZMcb/++qs755xztjsHBe3GjRuHoyMEwxOIZs2ahY/jXKR0iMkRRxyR1GsgnXzooYfs3LRCYkImwlhUN1khshEZ8mcJuWDgnksWIr/lwOeZVZGRECJ7yOiakcgtgha9iNSiyEgIEQgkRkKIQCAxEkIEAtWMRFoYMmtZys950wkHpvycIjgoMhJCBAKJkRAiEEiMhBCBQGIkhAgEEqO/+Oc//2kWsyx49fPSSy/Z/qLAS6l58+a2yh6rWTyJWHybDLgJYEWCVYlW64tcRGLkA9uOoUOHmhNAIrA4FntYLGxZaY+f0WeffeY6d+5s27Rp0xL+ILZs2WKNAPBOEiIXkRj5wAEAU3wsXWOB0T9RC9YlDRs2tBX83377rXkbseqfNkj777+/69Wrl63Ap9uIB6KF0GHcz+Pq1KkT4a00cOBA16dPH3MJECIXkRj5wOMI7+n777/f+p/F4o8//jCxeuKJJ8y0rUaNGhH34zKJ/zZ2uBi2eWBlghjdcsst5iz57LPPxnVxTAQZ8otsQ5MeoyDCoeYzYMCACJdHD8zY8B/CbM0PVg9Y3yISiBrHeD7bmK7hU0SvNq8fGhEU1rUlBUEkmhIiW1BkFAMimKefftoimGgw5ScFi6ZKlSpm5oaPNukXrpJe1xAaPiJSrVu3TtkHR6SFAHobnUmEyGQUGcWA9Kpt27bWxJFRNj+4OcYaXcvPzw83ciSyQoCIXqgn8ZhUI0N+kW0oMooDQ/z4U8+ePbtEbyy1I6Ihz74WQYrXy00IocgoLoxqXXzxxVbMLg4iIOYZUQdiiH7q1KnWteThhx8OTxmgBRLdRkjz6MGGLzcFcJoJwMqVK60FEj+ZMkDKB0RbtMYWIttRmlYEdAKh+2xx0Aq7R48eNgJHBFS/fn03btw4aybpwSgaDSZpILlq1SprCtC9e/fw/eynTuXRtGnTiDbaQmQ7MuTPEoJm4C4Lkez6PMsC1YyEEIFAaZpICzJCE8miyEgIEQgkRkKIQCAxEkIEAtWMRFrQaJpIFkVGQohAIDESQgQCiZEQIhBIjIQQgUBiVAKwEClqi7YdifV4jP79/Pjjj65jx46uXr16ZkfSu3fvklyaEBmLRtNKAMLhMWHCBFvkis2sR0n8i7AbqV69uhn7jxw5siSXJURGo8ioBGDa720sZiTS8e979913XbNmzcw6ZL/99jN72G3bttlj991337C9LY/zbvMTa9pOnTrZOYXINRQZpRjaE11yySXuvvvuc8cee6z7+uuv3RVXXGH34auNLS0m/k899ZQ75ZRTzC+7JBBJeeZt3ipvITIZRUYpBv/rm266yYz3iYow5ccX6dFHH7X7ScWAlkdEUd7tZMHQjQjK22rXrp3S1yFEWaPIKMXMnz8/bMrvgXPj5s2brc0RHWNTZciP6b8/MpIgiUxGYpRiaNZIjejcc8/d7j5qSKlChvwi25AYpZjDDjvMRta8TiGxqFixokVLQoj/ITFKMQzzn3HGGZYytW/f3uYMffbZZ27hwoVu0KBB4ZEzOoVgzE+Es/vuu9t+z4R/48aNZtjPbQz8aaUtRLajAnaKod/aq6++6qZPn+5atGjhWrZs6UaMGOH22Wef8DHDhw+3+xEsz3gf+J2NuhPtr/n9tNNOS/UlChFIZMifJQTNwF0WItn1eZYFioyEEIFANSORFmTIL5JFkZEQIhBIjIQQgUBiJIQIBKoZibQweObSlJ/z360PSvk5RXBQZCSECAQSIyFEIJAYCSECgcSonHn77bfN8XH9+vXlfSlClCsSoxTRrl07d9JJJ8W8b86cOSY4H3/8caqeToisQ2KUIrp27ereeust9+23325336hRo1yTJk3MXiRZsBrBI0mIbEdilCKwDcHbevTo0RH7cXekgwhiBVOnTnUHHXSQdRA54YQT3DfffBNxPI/HkpaV/1iHYDESS+CEyDYkRilihx12sM4eiEkoFArvnzRpktuyZYu7+OKL3XfffWcOkNiC4FV0+eWXm192NAgYHtdPPPGE+/zzz03kosGMn5Xd/k2ITEZilEK6dOlikQ5FaX+KhgBhoPbwww+bST990WjWiEDFavi4detW99BDD7mjjjrKjtt55523O0aG/CLbkBilkPr165uAIEBAm6L33nvPRAq++OILM1ujmO1x5JFHbnce3B0POeSQYg358brxNqIuITIZiVGKoTY0efJkS5vojYbDY+vWre0+f/pWFNST/IIVC2pJmG75NyEyGYlRirngggusMSO2sU8//bTr3LlzWFgoSP/nP/+JOD76thC5isQoxeyyyy6uQ4cO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", "text/plain": [ "
" ] @@ -2283,10 +2447,10 @@ "id": "1622ab72", "metadata": { "papermill": { - "duration": 0.005062, - "end_time": "2025-06-27T16:26:46.325734", + "duration": 0.005458, + "end_time": "2026-08-06T17:18:53.681656+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.320672", + "start_time": "2026-08-06T17:18:53.676198+00:00", "status": "completed" }, "tags": [] @@ -2297,20 +2461,20 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 23, "id": "876f79a8", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.336712Z", - "iopub.status.busy": "2025-06-27T16:26:46.336578Z", - "iopub.status.idle": "2025-06-27T16:26:46.386615Z", - "shell.execute_reply": "2025-06-27T16:26:46.386344Z" + "iopub.execute_input": "2026-08-06T17:18:53.693068Z", + "iopub.status.busy": "2026-08-06T17:18:53.692958Z", + "iopub.status.idle": "2026-08-06T17:18:53.735320Z", + "shell.execute_reply": "2026-08-06T17:18:53.734974Z" }, "papermill": { - "duration": 0.056662, - "end_time": "2025-06-27T16:26:46.387278", + "duration": 0.048985, + "end_time": "2026-08-06T17:18:53.735875+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.330616", + "start_time": "2026-08-06T17:18:53.686890+00:00", "status": "completed" }, "tags": [] @@ -2322,7 +2486,7 @@ "849" ] }, - "execution_count": 22, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -2341,10 +2505,10 @@ "id": "4dd5caaa", "metadata": { "papermill": { - "duration": 0.004966, - "end_time": "2025-06-27T16:26:46.397472", + "duration": 0.005164, + "end_time": "2026-08-06T17:18:53.746740+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.392506", + "start_time": "2026-08-06T17:18:53.741576+00:00", "status": "completed" }, "tags": [] @@ -2355,166 +2519,53 @@ }, { "cell_type": "code", - "execution_count": 23, - "id": "2b319745", + "execution_count": 24, + "id": "d7432d92", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.407894Z", - "iopub.status.busy": "2025-06-27T16:26:46.407775Z", - "iopub.status.idle": "2025-06-27T16:26:46.410503Z", - "shell.execute_reply": "2025-06-27T16:26:46.410179Z" + "iopub.execute_input": "2026-08-06T17:18:53.758484Z", + "iopub.status.busy": "2026-08-06T17:18:53.758373Z", + "iopub.status.idle": "2026-08-06T17:18:53.760454Z", + "shell.execute_reply": "2026-08-06T17:18:53.760114Z" }, "papermill": { - "duration": 0.008711, - "end_time": "2025-06-27T16:26:46.411121", + "duration": 0.008698, + "end_time": "2026-08-06T17:18:53.760899+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.402410", + "start_time": "2026-08-06T17:18:53.752201+00:00", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ - "df_de_receptors1 = results_df1.loc[results_df1.index.intersection(unique_receptors)]\n", - "df_de_receptors1 = df_de_receptors1.sort_values(by=\"stat\", ascending=False)" + "def select_receptors(results_df, receptor_universe, graph, n=30, padj=0.05, min_log2fc=0.5):\n", + " candidates = results_df.loc[results_df.index.intersection(receptor_universe)].copy()\n", + " candidates = candidates.loc[\n", + " (candidates[\"padj\"] < padj) & (candidates[\"log2FoldChange\"] >= min_log2fc)\n", + " ]\n", + " candidates = candidates.loc[candidates.index.intersection(graph.V)]\n", + " return candidates.sort_values([\"stat\", \"log2FoldChange\"], ascending=False).head(n)\n", + "\n", + "\n", + "# The PKN is created below; receptor selection is finalized after that step.\n" ] }, { - "cell_type": "code", - "execution_count": 24, - "id": "4868219e", + "cell_type": "markdown", + "id": "a99812f6", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.421541Z", - "iopub.status.busy": "2025-06-27T16:26:46.421443Z", - "iopub.status.idle": "2025-06-27T16:26:46.424966Z", - "shell.execute_reply": "2025-06-27T16:26:46.424729Z" - }, "papermill": { - "duration": 0.009433, - "end_time": "2025-06-27T16:26:46.425544", + "duration": 0.005268, + "end_time": "2026-08-06T17:18:53.771486+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.416111", + "start_time": "2026-08-06T17:18:53.766218+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
baseMeanlog2FoldChangelfcSEstatpvaluepadj
ID
Mrc1314.3243263.3120830.17966718.4346026.932705e-762.943150e-73
St141073.8197251.9041580.11609516.4017361.858495e-603.078982e-58
Cd485533.4708980.6646550.05460412.1723064.365699e-341.212843e-32
Ifngr16551.2689021.4182800.12096111.7251469.473804e-322.174014e-30
Lrrc4c82.85978410.0192580.89565211.1865474.745541e-298.584311e-28
\n", - "
" - ], - "text/plain": [ - " baseMean log2FoldChange lfcSE stat pvalue \\\n", - "ID \n", - "Mrc1 314.324326 3.312083 0.179667 18.434602 6.932705e-76 \n", - "St14 1073.819725 1.904158 0.116095 16.401736 1.858495e-60 \n", - "Cd48 5533.470898 0.664655 0.054604 12.172306 4.365699e-34 \n", - "Ifngr1 6551.268902 1.418280 0.120961 11.725146 9.473804e-32 \n", - "Lrrc4c 82.859784 10.019258 0.895652 11.186547 4.745541e-29 \n", - "\n", - " padj \n", - "ID \n", - "Mrc1 2.943150e-73 \n", - "St14 3.078982e-58 \n", - "Cd48 1.212843e-32 \n", - "Ifngr1 2.174014e-30 \n", - "Lrrc4c 8.584311e-28 " - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "# We will take the top 20 receptors that increased the expression after treatment\n", - "df_top_receptors1 = df_de_receptors1.head(30)\n", - "df_top_receptors1.head()" + "Receptors are selected after constructing the PKN so that statistical evidence and PKN membership are both enforced.\n" ] }, { @@ -2522,10 +2573,10 @@ "id": "76abebef", "metadata": { "papermill": { - "duration": 0.005078, - "end_time": "2025-06-27T16:26:46.435803", + "duration": 0.005325, + "end_time": "2026-08-06T17:18:53.782177+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.430725", + "start_time": "2026-08-06T17:18:53.776852+00:00", "status": "completed" }, "tags": [] @@ -2535,167 +2586,37 @@ ] }, { - "cell_type": "code", - "execution_count": 25, - "id": "db13b8a9", + "cell_type": "markdown", + "id": "951d061e", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.447140Z", - "iopub.status.busy": "2025-06-27T16:26:46.446924Z", - "iopub.status.idle": "2025-06-27T16:26:46.449749Z", - "shell.execute_reply": "2025-06-27T16:26:46.449460Z" - }, "papermill": { - "duration": 0.009265, - "end_time": "2025-06-27T16:26:46.450405", + "duration": 0.005261, + "end_time": "2026-08-06T17:18:53.792917+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.441140", + "start_time": "2026-08-06T17:18:53.787656+00:00", "status": "completed" }, "tags": [] }, - "outputs": [], "source": [ - "df_de_receptors2 = results_df2.loc[results_df2.index.intersection(unique_receptors)]\n", - "df_de_receptors2 = df_de_receptors2.sort_values(by=\"stat\", ascending=False)" + "The same receptor rule is used for both conditions; no fixed top-$n$ list is accepted without an evidence threshold.\n" ] }, { - "cell_type": "code", - "execution_count": 26, - "id": "94f89870", + "cell_type": "markdown", + "id": "7a480889", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.461276Z", - "iopub.status.busy": "2025-06-27T16:26:46.461168Z", - "iopub.status.idle": "2025-06-27T16:26:46.464669Z", - "shell.execute_reply": "2025-06-27T16:26:46.464417Z" - }, "papermill": { - "duration": 0.009608, - "end_time": "2025-06-27T16:26:46.465295", + "duration": 0.005371, + "end_time": "2026-08-06T17:18:53.803621+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.455687", + "start_time": "2026-08-06T17:18:53.798250+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
baseMeanlog2FoldChangelfcSEstatpvaluepadj
ID
Lsr770.4171824.3604080.34609712.5988142.143445e-368.425435e-35
Ptprs5164.4245361.3033090.10946311.9063931.096177e-323.257906e-31
Nlgn21309.7016651.9503020.16526311.8012083.847470e-321.106684e-30
Cd2442529.4739982.9928440.25503311.7351438.418380e-322.345945e-30
Lrrc4c267.12584210.6504990.91674411.6177433.348651e-318.801043e-30
\n", - "
" - ], - "text/plain": [ - " baseMean log2FoldChange lfcSE stat pvalue \\\n", - "ID \n", - "Lsr 770.417182 4.360408 0.346097 12.598814 2.143445e-36 \n", - "Ptprs 5164.424536 1.303309 0.109463 11.906393 1.096177e-32 \n", - "Nlgn2 1309.701665 1.950302 0.165263 11.801208 3.847470e-32 \n", - "Cd244 2529.473998 2.992844 0.255033 11.735143 8.418380e-32 \n", - "Lrrc4c 267.125842 10.650499 0.916744 11.617743 3.348651e-31 \n", - "\n", - " padj \n", - "ID \n", - "Lsr 8.425435e-35 \n", - "Ptprs 3.257906e-31 \n", - "Nlgn2 1.106684e-30 \n", - "Cd244 2.345945e-30 \n", - "Lrrc4c 8.801043e-30 " - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "# We will take the top 20 receptors that increased the expression after treatment\n", - "df_top_receptors2 = df_de_receptors2.head(30)\n", - "df_top_receptors2.head()" + "This avoids treating weakly changing receptors as condition-specific inputs merely because they occupy a high rank.\n" ] }, { @@ -2703,10 +2624,10 @@ "id": "db4b045f", "metadata": { "papermill": { - "duration": 0.00524, - "end_time": "2025-06-27T16:26:46.475629", + "duration": 0.005175, + "end_time": "2026-08-06T17:18:53.814172+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.470389", + "start_time": "2026-08-06T17:18:53.808997+00:00", "status": "completed" }, "tags": [] @@ -2717,20 +2638,20 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 25, "id": "2f4dcaf5", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.486523Z", - "iopub.status.busy": "2025-06-27T16:26:46.486406Z", - "iopub.status.idle": "2025-06-27T16:26:46.492465Z", - "shell.execute_reply": "2025-06-27T16:26:46.492181Z" + "iopub.execute_input": "2026-08-06T17:18:53.825714Z", + "iopub.status.busy": "2026-08-06T17:18:53.825605Z", + "iopub.status.idle": "2026-08-06T17:18:53.830722Z", + "shell.execute_reply": "2026-08-06T17:18:53.830391Z" }, "papermill": { - "duration": 0.012545, - "end_time": "2025-06-27T16:26:46.493260", + "duration": 0.011718, + "end_time": "2026-08-06T17:18:53.831205+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.480715", + "start_time": "2026-08-06T17:18:53.819487+00:00", "status": "completed" }, "tags": [] @@ -2747,24 +2668,24 @@ " style=\"width:100%;max-width:100px;\" />\n", " \n", " \n", - "
Installed version:v1.0.0rc1
Available backends:CVXPY v1.9.2
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, SCS, GUROBI, SCIPY, OSQP
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.21; graphviz-wasm
Installed path:/docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto
Repository:https://github.com/saezlab/corneto
\n", + "
Installed version:v1.0.0rc5
Available backends:CVXPY v1.9.1
Default backend (corneto.opt):CVXPY
Installed solvers:CLARABEL, SCS, GUROBI, SCIPY, HIGHS, OSQP
Plot backend (default):auto -> graphviz
Available plot backends:graphviz v0.21; graphviz-wasm
Installed path:/docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto
Repository:https://github.com/saezlab/corneto
\n", " \n", " \n", " \n", " " ], "text/plain": [ - "Installed version: v1.0.0rc1\n", - "Available backends: CVXPY v1.9.2\n", + "Installed version: v1.0.0rc5\n", + "Available backends: CVXPY v1.9.1\n", "Default backend (corneto.opt): CVXPY\n", - "Installed solvers: CLARABEL, SCS, GUROBI, SCIPY, OSQP\n", + "Installed solvers: CLARABEL, SCS, GUROBI, SCIPY, HIGHS, OSQP\n", "Plot backend (default): auto -> graphviz\n", "Available plot backends: graphviz v0.21; graphviz-wasm\n", "Installed path: /docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/corneto\n", "Repository: https://github.com/saezlab/corneto" ] }, - "execution_count": 27, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -2775,20 +2696,20 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "id": "905f837a", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.505512Z", - "iopub.status.busy": "2025-06-27T16:26:46.505345Z", - "iopub.status.idle": "2025-06-27T16:26:46.509701Z", - "shell.execute_reply": "2025-06-27T16:26:46.509361Z" + "iopub.execute_input": "2026-08-06T17:18:53.843520Z", + "iopub.status.busy": "2026-08-06T17:18:53.843415Z", + "iopub.status.idle": "2026-08-06T17:18:53.856223Z", + "shell.execute_reply": "2026-08-06T17:18:53.855733Z" }, "papermill": { - "duration": 0.011658, - "end_time": "2025-06-27T16:26:46.510626", + "duration": 0.019815, + "end_time": "2026-08-06T17:18:53.856786+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.498968", + "start_time": "2026-08-06T17:18:53.836971+00:00", "status": "completed" }, "tags": [] @@ -2805,10 +2726,10 @@ "id": "e622292d", "metadata": { "papermill": { - "duration": 0.005725, - "end_time": "2025-06-27T16:26:46.522102", + "duration": 0.005808, + "end_time": "2026-08-06T17:18:53.868419+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.516377", + "start_time": "2026-08-06T17:18:53.862611+00:00", "status": "completed" }, "tags": [] @@ -2819,20 +2740,20 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 27, "id": "26362a71", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.534112Z", - "iopub.status.busy": "2025-06-27T16:26:46.533965Z", - "iopub.status.idle": "2025-06-27T16:26:46.772513Z", - "shell.execute_reply": "2025-06-27T16:26:46.772222Z" + "iopub.execute_input": "2026-08-06T17:18:53.880170Z", + "iopub.status.busy": "2026-08-06T17:18:53.880063Z", + "iopub.status.idle": "2026-08-06T17:18:54.022017Z", + "shell.execute_reply": "2026-08-06T17:18:54.021603Z" }, "papermill": { - "duration": 0.245546, - "end_time": "2025-06-27T16:26:46.773234", + "duration": 0.148604, + "end_time": "2026-08-06T17:18:54.022540+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.527688", + "start_time": "2026-08-06T17:18:53.873936+00:00", "status": "completed" }, "tags": [] @@ -3027,7 +2948,7 @@ "4 2 1 18258429 " ] }, - "execution_count": 29, + "execution_count": 27, "metadata": {}, "output_type": "execute_result" } @@ -3040,20 +2961,20 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 28, "id": "5d99c8b4", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.784967Z", - "iopub.status.busy": "2025-06-27T16:26:46.784841Z", - "iopub.status.idle": "2025-06-27T16:26:46.788828Z", - "shell.execute_reply": "2025-06-27T16:26:46.788587Z" + "iopub.execute_input": "2026-08-06T17:18:54.036271Z", + "iopub.status.busy": "2026-08-06T17:18:54.036165Z", + "iopub.status.idle": "2026-08-06T17:18:54.039977Z", + "shell.execute_reply": "2026-08-06T17:18:54.039505Z" }, "papermill": { - "duration": 0.010398, - "end_time": "2025-06-27T16:26:46.789425", + "duration": 0.010785, + "end_time": "2026-08-06T17:18:54.040439+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.779027", + "start_time": "2026-08-06T17:18:54.029654+00:00", "status": "completed" }, "tags": [] @@ -3129,7 +3050,7 @@ "4 Rack1 -1 Trpm6" ] }, - "execution_count": 30, + "execution_count": 28, "metadata": {}, "output_type": "execute_result" } @@ -3142,20 +3063,20 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 29, "id": "2321fe29", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:46.801142Z", - "iopub.status.busy": "2025-06-27T16:26:46.800943Z", - "iopub.status.idle": "2025-06-27T16:26:47.118733Z", - "shell.execute_reply": "2025-06-27T16:26:47.118462Z" + "iopub.execute_input": "2026-08-06T17:18:54.052695Z", + "iopub.status.busy": "2026-08-06T17:18:54.052600Z", + "iopub.status.idle": "2026-08-06T17:18:54.546516Z", + "shell.execute_reply": "2026-08-06T17:18:54.546168Z" }, "papermill": { - "duration": 0.324346, - "end_time": "2025-06-27T16:26:47.119472", + "duration": 0.500912, + "end_time": "2026-08-06T17:18:54.547085+00:00", "exception": false, - "start_time": "2025-06-27T16:26:46.795126", + "start_time": "2026-08-06T17:18:54.046173+00:00", "status": "completed" }, "tags": [] @@ -3167,7 +3088,7 @@ "(4304, 9505)" ] }, - "execution_count": 31, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -3180,99 +3101,198 @@ }, { "cell_type": "markdown", - "id": "6e9dc57b", + "id": "heldout-pathway-resource", "metadata": { "papermill": { - "duration": 0.005477, - "end_time": "2025-06-27T16:26:47.130597", + "duration": 0.005926, + "end_time": "2026-08-06T17:18:54.559107+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.125120", + "start_time": "2026-08-06T17:18:54.553181+00:00", "status": "completed" }, "tags": [] }, "source": [ - "## Identifying target TFs per condition" + "## Independent pathway view for held-out validation\n", + "\n", + "Individual protein activity need not follow expression of the corresponding gene. We therefore use two unsigned validation views: whether selected internal-node genes are disproportionately deregulated, and whether the selected internal nodes concentrate in pathways that are deregulated as groups. SignaLink pathway annotations are used for the latter. They are not included in the CARNIVAL objective.\n", + "\n", + "The installed resource currently exposes human symbols. Conserved symbols are mapped case-insensitively to mouse genes present in this dataset and PKN, and mapping coverage is reported explicitly." ] }, { "cell_type": "code", - "execution_count": 32, - "id": "f889a11a-6288-453e-8208-1dbb34c50450", + "execution_count": 30, + "id": "heldout-pathway-resource-code", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.141998Z", - "iopub.status.busy": "2025-06-27T16:26:47.141795Z", - "iopub.status.idle": "2025-06-27T16:26:47.143488Z", - "shell.execute_reply": "2025-06-27T16:26:47.143272Z" + "iopub.execute_input": "2026-08-06T17:18:54.571330Z", + "iopub.status.busy": "2026-08-06T17:18:54.571217Z", + "iopub.status.idle": "2026-08-06T17:18:55.242079Z", + "shell.execute_reply": "2026-08-06T17:18:55.241655Z" }, "papermill": { - "duration": 0.008109, - "end_time": "2025-06-27T16:26:47.144139", + "duration": 0.678076, + "end_time": "2026-08-06T17:18:55.242885+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.136030", + "start_time": "2026-08-06T17:18:54.564809+00:00", "status": "completed" }, "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "human_annotation_genes 1938\n", + "mapped_mouse_genes 816\n", + "mapped_pathways 13\n", + "Name: pathway_resource, dtype: int64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "max_pval = 0.01" + "signalink_human = dc.op.resource(\"SignaLink_pathway\", organism=\"human\")\n", + "mouse_symbol_lookup = {str(symbol).upper(): str(symbol) for symbol in G.V}\n", + "mouse_symbol_lookup.update(\n", + " {str(symbol).upper(): str(symbol) for symbol in adata.var_names}\n", + ")\n", + "\n", + "signalink = signalink_human.assign(\n", + " genesymbol=signalink_human[\"genesymbol\"].str.upper().map(mouse_symbol_lookup)\n", + ").dropna(subset=[\"genesymbol\"])[[\"genesymbol\", \"pathway\"]]\n", + "signalink = signalink.drop_duplicates()\n", + "pathway_net = signalink.rename(\n", + " columns={\"pathway\": \"source\", \"genesymbol\": \"target\"}\n", + ").assign(weight=1.0)\n", + "\n", + "pathway_members = {\n", + " pathway: set(frame[\"genesymbol\"])\n", + " for pathway, frame in signalink.groupby(\"pathway\")\n", + "}\n", + "\n", + "def heldout_pathway_activity(results_df, contrast_name):\n", + " matrix = results_df[[\"stat\"]].T.rename(index={\"stat\": contrast_name})\n", + " activities, _ = dc.mt.ulm(data=matrix, net=pathway_net, tmin=5, verbose=False)\n", + " return activities.iloc[0].abs()\n", + "\n", + "\n", + "validation_pathways1 = heldout_pathway_activity(\n", + " validation_results_df1, \"Leukemic_spontaneous.vs.Normal\"\n", + ")\n", + "validation_pathways2 = heldout_pathway_activity(\n", + " validation_results_df2, \"Leukemic_SB.vs.Normal\"\n", + ")\n", + "\n", + "pd.Series(\n", + " {\n", + " \"human_annotation_genes\": signalink_human[\"genesymbol\"].nunique(),\n", + " \"mapped_mouse_genes\": signalink[\"genesymbol\"].nunique(),\n", + " \"mapped_pathways\": signalink[\"pathway\"].nunique(),\n", + " },\n", + " name=\"pathway_resource\",\n", + ")" ] }, { "cell_type": "markdown", - "id": "9152ec15", + "id": "6e9dc57b", "metadata": { "papermill": { - "duration": 0.005574, - "end_time": "2025-06-27T16:26:47.155112", + "duration": 0.006546, + "end_time": "2026-08-06T17:18:55.256428+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.149538", + "start_time": "2026-08-06T17:18:55.249882+00:00", "status": "completed" }, "tags": [] }, "source": [ - "### Contrast 1: Leukemic_spontaneous vs Normal" + "## Identifying target TFs per condition" ] }, { "cell_type": "code", - "execution_count": 33, - "id": "71f94374", + "execution_count": 31, + "id": "952fb95c", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.166548Z", - "iopub.status.busy": "2025-06-27T16:26:47.166329Z", - "iopub.status.idle": "2025-06-27T16:26:47.170610Z", - "shell.execute_reply": "2025-06-27T16:26:47.170379Z" + "iopub.execute_input": "2026-08-06T17:18:55.269700Z", + "iopub.status.busy": "2026-08-06T17:18:55.269591Z", + "iopub.status.idle": "2026-08-06T17:18:55.271095Z", + "shell.execute_reply": "2026-08-06T17:18:55.270761Z" }, "papermill": { - "duration": 0.010873, - "end_time": "2025-06-27T16:26:47.171316", + "duration": 0.008995, + "end_time": "2026-08-06T17:18:55.271583+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.160443", + "start_time": "2026-08-06T17:18:55.262588+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", "\n", @@ -3285,44 +3305,44 @@ " \n", " \n", " \n", - " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", + " \n", + " \n", " \n", " \n", "
Myc5.9272946.919333
Nr3c1-3.807611B5B2N2-3.745155
Klf1-3.827762Ppard-3.772645
Pax2-3.833372Pknox1-3.841270
Pknox1-3.854072A0A979HLR9-4.223345
\n", "
" ], "text/plain": [ - " Leukemic_spontaneous.vs.Normal\n", - "Myc 5.927294\n", - "Nr3c1 -3.807611\n", - "Klf1 -3.827762\n", - "Pax2 -3.833372\n", - "Pknox1 -3.854072" + " Leukemic_spontaneous.vs.Normal\n", + "Myc 6.919333\n", + "B5B2N2 -3.745155\n", + "Ppard -3.772645\n", + "Pknox1 -3.841270\n", + "A0A979HLR9 -4.223345" ] }, - "execution_count": 33, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# As measurements, we take the estimated TFs, we will filter out TFs with p-val > 0.001\n", + "# As measurements, we take the estimated TFs, we will filter out TFs with p-val > 0.01\n", "significant_tfs1 = (\n", " tf_acts1[tf_pvals1 <= max_pval].T.dropna().sort_values(by=\"Leukemic_spontaneous.vs.Normal\", ascending=False)\n", ")\n", @@ -3331,20 +3351,20 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 33, "id": "416634be", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.182677Z", - "iopub.status.busy": "2025-06-27T16:26:47.182554Z", - "iopub.status.idle": "2025-06-27T16:26:47.185810Z", - "shell.execute_reply": "2025-06-27T16:26:47.185569Z" + "iopub.execute_input": "2026-08-06T17:18:55.313016Z", + "iopub.status.busy": "2026-08-06T17:18:55.312902Z", + "iopub.status.idle": "2026-08-06T17:18:55.316113Z", + "shell.execute_reply": "2026-08-06T17:18:55.315712Z" }, "papermill": { - "duration": 0.009613, - "end_time": "2025-06-27T16:26:47.186414", + "duration": 0.010417, + "end_time": "2026-08-06T17:18:55.316726+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.176801", + "start_time": "2026-08-06T17:18:55.306309+00:00", "status": "completed" }, "tags": [] @@ -3353,23 +3373,16 @@ { "data": { "text/plain": [ - "{'Myc': 5.9272938726510445,\n", - " 'Nr3c1': -3.8076109957400055,\n", - " 'Pax2': -3.833372272814152,\n", - " 'Pknox1': -3.8540720496124936,\n", - " 'Spi1': -3.870956617433766,\n", - " 'Cebpb': -4.041315700038792,\n", - " 'Srf': -4.189456236895589,\n", - " 'Ets1': -4.531838015984738,\n", - " 'Stat6': -4.762013996738547,\n", - " 'Fli1': -5.337254315751466,\n", - " 'Sp3': -5.344906237393298,\n", - " 'Runx1': -5.966766274845339,\n", - " 'Gata1': -6.145405587377315,\n", - " 'Sp1': -6.180554655220554}" + "{'Myc': 6.919332774298009,\n", + " 'Ppard': -3.7726452616087784,\n", + " 'Pknox1': -3.841269863918438,\n", + " 'Foxo3': -4.4365678956436305,\n", + " 'Fli1': -4.488422107569552,\n", + " 'Sp3': -4.919151910048148,\n", + " 'Gata1': -4.936540966143217}" ] }, - "execution_count": 34, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -3387,10 +3400,10 @@ "id": "0108fd04", "metadata": { "papermill": { - "duration": 0.005361, - "end_time": "2025-06-27T16:26:47.197273", + "duration": 0.006281, + "end_time": "2026-08-06T17:18:55.328822+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.191912", + "start_time": "2026-08-06T17:18:55.322541+00:00", "status": "completed" }, "tags": [] @@ -3401,20 +3414,20 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 34, "id": "06cb9872", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.208512Z", - "iopub.status.busy": "2025-06-27T16:26:47.208404Z", - "iopub.status.idle": "2025-06-27T16:26:47.212441Z", - "shell.execute_reply": "2025-06-27T16:26:47.212245Z" + "iopub.execute_input": "2026-08-06T17:18:55.340974Z", + "iopub.status.busy": "2026-08-06T17:18:55.340859Z", + "iopub.status.idle": "2026-08-06T17:18:55.344384Z", + "shell.execute_reply": "2026-08-06T17:18:55.344080Z" }, "papermill": { - "duration": 0.010442, - "end_time": "2025-06-27T16:26:47.213053", + "duration": 0.010212, + "end_time": "2026-08-06T17:18:55.344848+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.202611", + "start_time": "2026-08-06T17:18:55.334636+00:00", "status": "completed" }, "tags": [] @@ -3447,64 +3460,64 @@ " \n", " \n", " Myc\n", - " 5.456814\n", + " 6.785773\n", " \n", " \n", - " Phox2a\n", - " -4.102671\n", + " A0A6I8MWY6\n", + " -3.894287\n", " \n", " \n", - " Runx1\n", - " -5.481601\n", + " Foxo3\n", + " -3.979161\n", " \n", " \n", - " Klf1\n", - " -5.749658\n", + " A0A087WR05\n", + " -5.416913\n", " \n", " \n", " Pknox1\n", - " -5.823616\n", + " -6.016046\n", " \n", " \n", "\n", "" ], "text/plain": [ - " Leukemic_SB.vs.Normal\n", - "Myc 5.456814\n", - "Phox2a -4.102671\n", - "Runx1 -5.481601\n", - "Klf1 -5.749658\n", - "Pknox1 -5.823616" + " Leukemic_SB.vs.Normal\n", + "Myc 6.785773\n", + "A0A6I8MWY6 -3.894287\n", + "Foxo3 -3.979161\n", + "A0A087WR05 -5.416913\n", + "Pknox1 -6.016046" ] }, - "execution_count": 35, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# As measurements, we take the estimated TFs, we will filter out TFs with p-val > 0.001\n", + "# As measurements, we take the estimated TFs, we will filter out TFs with p-val > 0.01\n", "significant_tfs2 = tf_acts2[tf_pvals2 <= max_pval].T.dropna().sort_values(by=\"Leukemic_SB.vs.Normal\", ascending=False)\n", "significant_tfs2.head()" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 35, "id": "5b92adb0", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.224584Z", - "iopub.status.busy": "2025-06-27T16:26:47.224484Z", - "iopub.status.idle": "2025-06-27T16:26:47.227351Z", - "shell.execute_reply": "2025-06-27T16:26:47.227122Z" + "iopub.execute_input": "2026-08-06T17:18:55.357621Z", + "iopub.status.busy": "2026-08-06T17:18:55.357515Z", + "iopub.status.idle": "2026-08-06T17:18:55.360585Z", + "shell.execute_reply": "2026-08-06T17:18:55.360318Z" }, "papermill": { - "duration": 0.009245, - "end_time": "2025-06-27T16:26:47.227923", + "duration": 0.00981, + "end_time": "2026-08-06T17:18:55.361083+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.218678", + "start_time": "2026-08-06T17:18:55.351273+00:00", "status": "completed" }, "tags": [] @@ -3513,15 +3526,14 @@ { "data": { "text/plain": [ - "{'Myc': 5.4568137702067805,\n", - " 'Phox2a': -4.102671408127372,\n", - " 'Runx1': -5.481600720105362,\n", - " 'Pknox1': -5.823615535106708,\n", - " 'Fli1': -7.269774022313037,\n", - " 'Gata1': -8.17857460262512}" + "{'Myc': 6.785773233182686,\n", + " 'Foxo3': -3.9791614216864715,\n", + " 'Pknox1': -6.01604625567456,\n", + " 'Fli1': -6.153183562598498,\n", + " 'Gata1': -6.283017534496937}" ] }, - "execution_count": 36, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -3533,86 +3545,40 @@ ] }, { - "cell_type": "code", - "execution_count": 37, - "id": "fc108c48-c2b8-4c57-a202-e271dca017a4", + "cell_type": "markdown", + "id": "f42a2f65", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.239358Z", - "iopub.status.busy": "2025-06-27T16:26:47.239263Z", - "iopub.status.idle": "2025-06-27T16:26:47.242510Z", - "shell.execute_reply": "2025-06-27T16:26:47.242279Z" - }, "papermill": { - "duration": 0.009694, - "end_time": "2025-06-27T16:26:47.243144", + "duration": 0.006136, + "end_time": "2026-08-06T17:18:55.373256+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.233450", + "start_time": "2026-08-06T17:18:55.367120+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Myc': np.float64(1.0),\n", - " 'Phox2a': np.float64(-1.0),\n", - " 'Runx1': np.float64(-1.0),\n", - " 'Pknox1': np.float64(-1.0),\n", - " 'Fli1': np.float64(-1.0),\n", - " 'Gata1': np.float64(-1.0)}" - ] - }, - "execution_count": 37, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "def balance_dicts_by_top_abs(dict1, dict2, discretize=False):\n", - " # Decide which is smaller and which is larger\n", - " if len(dict1) <= len(dict2):\n", - " small, large = dict1, dict2\n", - " else:\n", - " small, large = dict2, dict1\n", - "\n", - " n = len(small)\n", - " # Take the n keys from large with the largest abs(values)\n", - " top_large_items = sorted(large.items(), key=lambda kv: abs(kv[1]), reverse=True)[:n]\n", - "\n", - " # Prepare output dicts\n", - " small_balanced = dict(small) # already of size n\n", - " large_balanced = dict(top_large_items)\n", + "## Comparable condition evidence\n", "\n", - " if discretize:\n", - " small_balanced = {k: np.sign(v) for k, v in small_balanced.items()}\n", - " large_balanced = {k: np.sign(v) for k, v in large_balanced.items()}\n", - "\n", - " return small_balanced, large_balanced\n", - "\n", - "\n", - "# Discretize not needed, but simplifies multi-cond analysis since both conditions have the same cost\n", - "d_measurements1, d_measurements2 = balance_dicts_by_top_abs(measurements1, measurements2, discretize=True)\n", - "d_measurements1" + "The conditions contain different numbers of significant TFs. Truncating the larger dictionary loses information, and the previous helper also changed the order of the conditions when the first dictionary was larger. Instead, all TFs are retained and their absolute weights are normalized to sum to one within each condition. This makes the maximum inactive-output cost comparable without changing CORNETO's regularizer.\n" ] }, { "cell_type": "code", - "execution_count": 38, - "id": "75be182c-259d-456d-a96b-7a1abedc447c", + "execution_count": 36, + "id": "70a12a3d", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.255207Z", - "iopub.status.busy": "2025-06-27T16:26:47.255077Z", - "iopub.status.idle": "2025-06-27T16:26:47.257100Z", - "shell.execute_reply": "2025-06-27T16:26:47.256883Z" + "iopub.execute_input": "2026-08-06T17:18:55.385779Z", + "iopub.status.busy": "2026-08-06T17:18:55.385670Z", + "iopub.status.idle": "2026-08-06T17:18:55.389771Z", + "shell.execute_reply": "2026-08-06T17:18:55.389315Z" }, "papermill": { - "duration": 0.008938, - "end_time": "2025-06-27T16:26:47.257655", + "duration": 0.011306, + "end_time": "2026-08-06T17:18:55.390240+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.248717", + "start_time": "2026-08-06T17:18:55.378934+00:00", "status": "completed" }, "tags": [] @@ -3620,74 +3586,123 @@ "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
conditionn_tfstotal_weight
0Leukemic_spontaneous71.0
1Leukemic_SB51.0
\n", + "
" + ], "text/plain": [ - "{'Sp1': np.float64(-1.0),\n", - " 'Gata1': np.float64(-1.0),\n", - " 'Runx1': np.float64(-1.0),\n", - " 'Myc': np.float64(1.0),\n", - " 'Sp3': np.float64(-1.0),\n", - " 'Fli1': np.float64(-1.0)}" + " condition n_tfs total_weight\n", + "0 Leukemic_spontaneous 7 1.0\n", + "1 Leukemic_SB 5 1.0" ] }, - "execution_count": 38, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "d_measurements2" - ] - }, - { - "cell_type": "markdown", - "id": "2e89212e", - "metadata": { - "papermill": { - "duration": 0.005472, - "end_time": "2025-06-27T16:26:47.268665", - "exception": false, - "start_time": "2025-06-27T16:26:47.263193", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Creating a CARNIVAL problem per condition" + "def normalized_signed_measurements(measurements):\n", + " clean = {k: float(v) for k, v in measurements.items() if np.isfinite(v) and v != 0}\n", + " total_weight = sum(abs(v) for v in clean.values())\n", + " if total_weight == 0:\n", + " raise ValueError(\"A condition has no non-zero TF measurements\")\n", + " return {k: v / total_weight for k, v in clean.items()}\n", + "\n", + "\n", + "d_measurements1 = normalized_signed_measurements(measurements1)\n", + "d_measurements2 = normalized_signed_measurements(measurements2)\n", + "\n", + "assert set(d_measurements1) == set(measurements1)\n", + "assert set(d_measurements2) == set(measurements2)\n", + "assert np.isclose(sum(abs(v) for v in d_measurements1.values()), 1)\n", + "assert np.isclose(sum(abs(v) for v in d_measurements2.values()), 1)\n", + "\n", + "measurement_summary = pd.DataFrame(\n", + " {\n", + " \"condition\": [\"Leukemic_spontaneous\", \"Leukemic_SB\"],\n", + " \"n_tfs\": [len(d_measurements1), len(d_measurements2)],\n", + " \"total_weight\": [\n", + " sum(abs(v) for v in d_measurements1.values()),\n", + " sum(abs(v) for v in d_measurements2.values()),\n", + " ],\n", + " }\n", + ")\n", + "measurement_summary\n" ] }, { "cell_type": "markdown", - "id": "7b0f2d23", + "id": "9adb38a4", "metadata": { "papermill": { - "duration": 0.005589, - "end_time": "2025-06-27T16:26:47.279979", + "duration": 0.005953, + "end_time": "2026-08-06T17:18:55.402460+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.274390", + "start_time": "2026-08-06T17:18:55.396507+00:00", "status": "completed" }, "tags": [] }, "source": [ - "### Contrast 1: Leukemic_spontaneous vs Normal" + "## Condition-specific receptor inputs\n", + "\n", + "Receptor expression is only a proxy for receptor activity, so candidates must show positive differential expression, pass the adjusted-$p$ threshold, and occur in the PKN. Input signs remain unknown (`0`), as CORNETO infers their direction.\n" ] }, { "cell_type": "code", - "execution_count": 39, - "id": "8302ae22", + "execution_count": 37, + "id": "41faf212", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.291800Z", - "iopub.status.busy": "2025-06-27T16:26:47.291562Z", - "iopub.status.idle": "2025-06-27T16:26:47.294624Z", - "shell.execute_reply": "2025-06-27T16:26:47.294407Z" + "iopub.execute_input": "2026-08-06T17:18:55.414843Z", + "iopub.status.busy": "2026-08-06T17:18:55.414730Z", + "iopub.status.idle": "2026-08-06T17:18:55.553524Z", + "shell.execute_reply": "2026-08-06T17:18:55.553171Z" }, "papermill": { - "duration": 0.009775, - "end_time": "2025-06-27T16:26:47.295237", + "duration": 0.145837, + "end_time": "2026-08-06T17:18:55.554040+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.285462", + "start_time": "2026-08-06T17:18:55.408203+00:00", "status": "completed" }, "tags": [] @@ -3695,51 +3710,124 @@ "outputs": [ { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
conditionn_receptorsn_reachable_tfsreachable_tf_weightreceptors
0Leukemic_spontaneous1461.0[Acvr2b, Bambi, Cdon, Flt3, Galr3, Ifngr1, Ifn...
1Leukemic_SB1241.0[Acvr2b, Cdon, Fgfr1, Flt3, Galr3, Ifngr1, Ifn...
\n", + "
" + ], "text/plain": [ - "{'Ifngr1': 0,\n", - " 'Lrrc4c': 0,\n", - " 'Tnfrsf11a': 0,\n", - " 'Cdon': 0,\n", - " 'Notch1': 0,\n", - " 'Ptprs': 0,\n", - " 'Nlgn2': 0,\n", - " 'Flt3': 0,\n", - " 'Ephb4': 0,\n", - " 'Il2rg': 0,\n", - " 'Marco': 0,\n", - " 'Axl': 0,\n", - " 'Tlr4': 0,\n", - " 'Ifngr2': 0,\n", - " 'Znrf3': 0}" + " condition n_receptors n_reachable_tfs reachable_tf_weight \\\n", + "0 Leukemic_spontaneous 14 6 1.0 \n", + "1 Leukemic_SB 12 4 1.0 \n", + "\n", + " receptors \n", + "0 [Acvr2b, Bambi, Cdon, Flt3, Galr3, Ifngr1, Ifn... \n", + "1 [Acvr2b, Cdon, Fgfr1, Flt3, Galr3, Ifngr1, Ifn... " ] }, - "execution_count": 39, + "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# We will infer the direction, so for the inputs, we use a value of 0 (=unknown direction)\n", - "inputs1 = {k: 0 for k in df_top_receptors1.index.intersection(G.V).values}\n", - "inputs1" + "df_top_receptors1 = select_receptors(results_df1, unique_receptors, G)\n", + "df_top_receptors2 = select_receptors(results_df2, unique_receptors, G)\n", + "\n", + "inputs1 = {k: 0 for k in df_top_receptors1.index}\n", + "inputs2 = {k: 0 for k in df_top_receptors2.index}\n", + "\n", + "if not inputs1 or not inputs2:\n", + " raise ValueError(\"Receptor filtering left a condition without candidate inputs\")\n", + "\n", + "\n", + "def restrict_to_reachable_evidence(graph, inputs, measurements):\n", + " condition_graph = graph.prune(list(inputs), list(measurements))\n", + " retained_vertices = set(condition_graph.V)\n", + " reachable_inputs = {node: value for node, value in inputs.items() if node in retained_vertices}\n", + " reachable_measurements = {\n", + " node: value for node, value in measurements.items() if node in retained_vertices\n", + " }\n", + " if not reachable_inputs or not reachable_measurements:\n", + " raise ValueError(\"A condition has no receptor-to-TF path in the PKN\")\n", + " return reachable_inputs, normalized_signed_measurements(reachable_measurements)\n", + "\n", + "\n", + "inputs1, d_measurements1 = restrict_to_reachable_evidence(G, inputs1, d_measurements1)\n", + "inputs2, d_measurements2 = restrict_to_reachable_evidence(G, inputs2, d_measurements2)\n", + "\n", + "pd.DataFrame(\n", + " {\n", + " \"condition\": [\"Leukemic_spontaneous\", \"Leukemic_SB\"],\n", + " \"n_receptors\": [len(inputs1), len(inputs2)],\n", + " \"n_reachable_tfs\": [len(d_measurements1), len(d_measurements2)],\n", + " \"reachable_tf_weight\": [\n", + " sum(abs(value) for value in d_measurements1.values()),\n", + " sum(abs(value) for value in d_measurements2.values()),\n", + " ],\n", + " \"receptors\": [sorted(inputs1), sorted(inputs2)],\n", + " }\n", + ")\n" ] }, { "cell_type": "code", - "execution_count": 40, - "id": "300ae94a", + "execution_count": 38, + "id": "d1d78253", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.306756Z", - "iopub.status.busy": "2025-06-27T16:26:47.306657Z", - "iopub.status.idle": "2025-06-27T16:26:47.309038Z", - "shell.execute_reply": "2025-06-27T16:26:47.308826Z" + "iopub.execute_input": "2026-08-06T17:18:55.567323Z", + "iopub.status.busy": "2026-08-06T17:18:55.567214Z", + "iopub.status.idle": "2026-08-06T17:18:55.570077Z", + "shell.execute_reply": "2026-08-06T17:18:55.569734Z" }, "papermill": { - "duration": 0.008826, - "end_time": "2025-06-27T16:26:47.309605", + "duration": 0.010303, + "end_time": "2026-08-06T17:18:55.570703+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.300779", + "start_time": "2026-08-06T17:18:55.560400+00:00", "status": "completed" }, "tags": [] @@ -3748,3488 +3836,3660 @@ { "data": { "text/plain": [ - "Data(n_samples=1, n_feats=[21])" + "Data(n_samples=2, n_feats=[20 16])" ] }, - "execution_count": 40, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Create the dataset in standard format\n", - "carnival_data1 = dict()\n", - "for inp, v in inputs1.items():\n", - " carnival_data1[inp] = dict(value=v, role=\"input\", mapping=\"vertex\")\n", - "for out, v in d_measurements1.items():\n", - " carnival_data1[out] = dict(value=v, role=\"output\", mapping=\"vertex\")\n", - "data1 = cn.Data.from_cdict({\"sample1\": carnival_data1})\n", - "data1" + "def make_carnival_sample(inputs, measurements):\n", + " sample = {\n", + " node: dict(value=value, role=\"input\", mapping=\"vertex\")\n", + " for node, value in inputs.items()\n", + " }\n", + " sample.update(\n", + " {\n", + " node: dict(value=value, role=\"output\", mapping=\"vertex\")\n", + " for node, value in measurements.items()\n", + " }\n", + " )\n", + " return sample\n", + "\n", + "\n", + "carnival_data1 = make_carnival_sample(inputs1, d_measurements1)\n", + "carnival_data2 = make_carnival_sample(inputs2, d_measurements2)\n", + "\n", + "data1 = cn.Data.from_cdict({\"spontaneous\": carnival_data1})\n", + "data2 = cn.Data.from_cdict({\"SB\": carnival_data2})\n", + "data = cn.Data.from_cdict(\n", + " {\"spontaneous\": carnival_data1, \"SB\": carnival_data2}\n", + ")\n", + "data\n" ] }, { "cell_type": "markdown", - "id": "61f9a43f", + "id": "438174df", "metadata": { "papermill": { - "duration": 0.005616, - "end_time": "2025-06-27T16:26:47.320834", + "duration": 0.006353, + "end_time": "2026-08-06T17:18:55.583940+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.315218", + "start_time": "2026-08-06T17:18:55.577587+00:00", "status": "completed" }, "tags": [] }, "source": [ - "### Contrast 2: Leukemic_SB vs Normal" + "## CARNIVAL solution and validation helpers\n", + "\n", + "The same solver settings and diagnostics are used for the direct and multi-condition\n", + "models. Keeping these definitions shared makes their fits and complexities comparable." ] }, { "cell_type": "code", - "execution_count": 41, - "id": "f9f5e971", + "execution_count": 39, + "id": "4c1f873d", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.332306Z", - "iopub.status.busy": "2025-06-27T16:26:47.332211Z", - "iopub.status.idle": "2025-06-27T16:26:47.335040Z", - "shell.execute_reply": "2025-06-27T16:26:47.334820Z" + "iopub.execute_input": "2026-08-06T17:18:55.596774Z", + "iopub.status.busy": "2026-08-06T17:18:55.596664Z", + "iopub.status.idle": "2026-08-06T17:18:55.603591Z", + "shell.execute_reply": "2026-08-06T17:18:55.603191Z" }, "papermill": { - "duration": 0.009323, - "end_time": "2025-06-27T16:26:47.335639", + "duration": 0.01425, + "end_time": "2026-08-06T17:18:55.604063+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.326316", + "start_time": "2026-08-06T17:18:55.589813+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Ptprs': 0,\n", - " 'Nlgn2': 0,\n", - " 'Lrrc4c': 0,\n", - " 'Tnfrsf11a': 0,\n", - " 'Ifngr1': 0,\n", - " 'Marco': 0,\n", - " 'Ifngr2': 0,\n", - " 'Ctla4': 0,\n", - " 'Znrf3': 0,\n", - " 'Flt3': 0,\n", - " 'Ephb4': 0,\n", - " 'Il9r': 0,\n", - " 'Icam1': 0,\n", - " 'Axl': 0}" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# We will infer the direction, so for the inputs, we use a value of 0 (=unknown direction)\n", - "inputs2 = {k: 0 for k in df_top_receptors2.index.intersection(G.V).values}\n", - "inputs2" + "from corneto.methods import CarnivalFlow\n", + "\n", + "\n", + "def as_matrix(values):\n", + " values = np.asarray(values)\n", + " return values[:, None] if values.ndim == 1 else values\n", + "\n", + "\n", + "def solve_carnival(graph, dataset, lambda_reg):\n", + " method = CarnivalFlow(lambda_reg=lambda_reg, indirect_rule_penalty=1)\n", + " problem = method.build_from_data(graph, dataset)\n", + " problem.solve(\n", + " solver=\"GUROBI\",\n", + " verbosity=0,\n", + " max_seconds=max_time,\n", + " mip_gap=0.001,\n", + " seed=seed,\n", + " Threads=1,\n", + " )\n", + " return {\n", + " \"method\": method,\n", + " \"problem\": problem,\n", + " \"vertices\": list(method.processed_graph.V),\n", + " \"vertex_value\": as_matrix(problem.expr.vertex_value.value),\n", + " \"edge_value\": as_matrix(problem.expr.edge_value.value),\n", + " \"objectives\": {\n", + " objective.name: float(np.asarray(objective.value).sum())\n", + " for objective in problem.objectives\n", + " },\n", + " }\n", + "\n", + "\n", + "def tf_fit_metrics(solution, condition_index, measurements):\n", + " positions = {node: i for i, node in enumerate(solution[\"vertices\"])}\n", + " reachable = {node: value for node, value in measurements.items() if node in positions}\n", + " total = sum(abs(value) for value in reachable.values())\n", + " if total == 0:\n", + " return dict(reachable_tfs=0, reachable_weight=0, tf_match=0, tf_inactive=1, tf_opposite=0)\n", + "\n", + " matched = inactive = opposite = 0.0\n", + " for node, expected in reachable.items():\n", + " weight = abs(expected)\n", + " observed = np.sign(solution[\"vertex_value\"][positions[node], condition_index])\n", + " if observed == np.sign(expected):\n", + " matched += weight\n", + " elif observed == 0:\n", + " inactive += weight\n", + " else:\n", + " opposite += weight\n", + "\n", + " return dict(\n", + " reachable_tfs=len(reachable),\n", + " reachable_weight=total,\n", + " tf_match=matched / total,\n", + " tf_inactive=inactive / total,\n", + " tf_opposite=opposite / total,\n", + " )\n", + "\n", + "\n", + "def hypergeometric_z(population, positives, draws, hits):\n", + " if population <= 1 or positives <= 0 or draws <= 0 or positives >= population:\n", + " return 0.0\n", + " rate = positives / population\n", + " variance = draws * rate * (1 - rate) * (population - draws) / (population - 1)\n", + " return (hits - draws * rate) / np.sqrt(variance) if variance > 0 else 0.0\n", + "\n", + "\n", + "def internal_validation_metrics(\n", + " solution,\n", + " condition_index,\n", + " inputs,\n", + " measurements,\n", + " results_df,\n", + " pathway_activity,\n", + " min_abs_log2fc=0.5,\n", + " max_padj=0.1,\n", + "):\n", + " excluded = set(inputs) | set(measurements)\n", + " values = pd.Series(\n", + " solution[\"vertex_value\"][:, condition_index], index=solution[\"vertices\"]\n", + " )\n", + " active = values.loc[values.abs() > 0.5].drop(index=excluded, errors=\"ignore\")\n", + "\n", + " background = results_df.index.intersection(solution[\"vertices\"]).difference(excluded)\n", + " evidence = results_df.loc[background, [\"log2FoldChange\", \"padj\"]].dropna()\n", + " background = evidence.index\n", + " active = active.loc[active.index.intersection(background)]\n", + " deregulated = evidence.index[\n", + " (evidence[\"log2FoldChange\"].abs() >= min_abs_log2fc)\n", + " & (evidence[\"padj\"] <= max_padj)\n", + " ]\n", + " hits = active.index.intersection(deregulated)\n", + "\n", + " population = len(background)\n", + " positives = len(deregulated)\n", + " draws = len(active)\n", + " n_hits = len(hits)\n", + " selected_rate = n_hits / draws if draws else 0.0\n", + " background_rate = positives / population if population else 0.0\n", + " fold_enrichment = selected_rate / background_rate if background_rate else 0.0\n", + "\n", + " network_pathway_profile = {}\n", + " annotated_active = set()\n", + " background_set = set(background)\n", + " active_set = set(active.index)\n", + " for pathway, members in pathway_members.items():\n", + " members = members & background_set\n", + " if len(members) < 5:\n", + " continue\n", + " overlap = active_set & members\n", + " annotated_active.update(overlap)\n", + " network_pathway_profile[pathway] = max(\n", + " 0.0,\n", + " hypergeometric_z(population, len(members), draws, len(overlap)),\n", + " )\n", + "\n", + " network_pathway_profile = pd.Series(network_pathway_profile, dtype=float)\n", + " common_pathways = network_pathway_profile.index.intersection(pathway_activity.index)\n", + " network_scores = network_pathway_profile.loc[common_pathways].to_numpy()\n", + " expression_scores = pathway_activity.loc[common_pathways].to_numpy()\n", + " denominator = np.linalg.norm(network_scores) * np.linalg.norm(expression_scores)\n", + " pathway_concordance = (\n", + " float(network_scores @ expression_scores / denominator) if denominator else 0.0\n", + " )\n", + "\n", + " return dict(\n", + " active_internal_nodes=draws,\n", + " deregulated_internal_nodes=n_hits,\n", + " node_deregulated_fraction=selected_rate,\n", + " background_deregulated_fraction=background_rate,\n", + " node_deregulation_enrichment=fold_enrichment,\n", + " node_deregulation_z=hypergeometric_z(\n", + " population, positives, draws, n_hits\n", + " ),\n", + " annotated_internal_nodes=len(annotated_active),\n", + " pathway_concordance=pathway_concordance,\n", + " )\n", + "\n", + "\n", + "def structural_metrics(solution, condition_index, inputs):\n", + " edge_values = solution[\"edge_value\"][:, condition_index]\n", + " vertex_values = solution[\"vertex_value\"][:, condition_index]\n", + " positions = {node: i for i, node in enumerate(solution[\"vertices\"])}\n", + " active_inputs = sum(\n", + " node in positions and abs(vertex_values[positions[node]]) > 0.5 for node in inputs\n", + " )\n", + " return dict(\n", + " active_edges=int(np.sum(np.abs(edge_values) > 0.5)),\n", + " active_nodes=int(np.sum(np.abs(vertex_values) > 0.5)),\n", + " active_inputs=int(active_inputs),\n", + " )\n" ] }, { - "cell_type": "code", - "execution_count": 42, - "id": "9e0a46c3", + "cell_type": "markdown", + "id": "a6d64c29", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.348022Z", - "iopub.status.busy": "2025-06-27T16:26:47.347844Z", - "iopub.status.idle": "2025-06-27T16:26:47.350597Z", - "shell.execute_reply": "2025-06-27T16:26:47.350352Z" - }, "papermill": { - "duration": 0.009687, - "end_time": "2025-06-27T16:26:47.351192", + "duration": 0.005904, + "end_time": "2026-08-06T17:18:55.616115+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.341505", - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Data(n_samples=1, n_feats=[20])" - ] - }, - "execution_count": 42, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Create the dataset in standard format\n", - "carnival_data2 = dict()\n", - "for inp, v in inputs2.items():\n", - " carnival_data2[inp] = dict(value=v, role=\"input\", mapping=\"vertex\")\n", - "for out, v in d_measurements2.items():\n", - " carnival_data2[out] = dict(value=v, role=\"output\", mapping=\"vertex\")\n", - "data2 = cn.Data.from_cdict({\"sample2\": carnival_data2})\n", - "data2" - ] - }, - { - "cell_type": "markdown", - "id": "4a4ee6c6", - "metadata": { - "papermill": { - "duration": 0.005624, - "end_time": "2025-06-27T16:26:47.362636", - "exception": false, - "start_time": "2025-06-27T16:26:47.357012", + "start_time": "2026-08-06T17:18:55.610211+00:00", "status": "completed" }, "tags": [] }, "source": [ - "## Solving multi-condition CARNIVAL problem with CORNETO" + "## Direct differential network: spontaneous leukemia vs SB leukemia\n", + "\n", + "The two disease-versus-normal contrasts describe large shared leukemia effects. To ask\n", + "what differs between leukemias, we must fit the direct contrast from the counts. We use\n", + "`Leukemic_spontaneous - Leukemic_SB`, so positive values mean relatively higher in\n", + "spontaneous leukemia and negative values mean relatively higher in SB leukemia. They do\n", + "**not** mean absolute activation or inhibition relative to normal.\n", + "\n", + "The training samples define genes, receptor candidates, TF activities, and the CARNIVAL\n", + "network. The held-out leukemia samples are used only to select the differential-network\n", + "lambda. The full data are used once at the end to refit the displayed network." ] }, { "cell_type": "code", - "execution_count": 43, - "id": "d0775abd", + "execution_count": 40, + "id": "2d7bb319", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.375185Z", - "iopub.status.busy": "2025-06-27T16:26:47.374975Z", - "iopub.status.idle": "2025-06-27T16:26:47.377227Z", - "shell.execute_reply": "2025-06-27T16:26:47.377017Z" + "iopub.execute_input": "2026-08-06T17:18:55.629105Z", + "iopub.status.busy": "2026-08-06T17:18:55.628994Z", + "iopub.status.idle": "2026-08-06T17:19:00.105035Z", + "shell.execute_reply": "2026-08-06T17:19:00.104608Z" }, "papermill": { - "duration": 0.009499, - "end_time": "2025-06-27T16:26:47.377820", + "duration": 4.483296, + "end_time": "2026-08-06T17:19:00.105636+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.368321", + "start_time": "2026-08-06T17:18:55.622340+00:00", "status": "completed" }, "tags": [] }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Fitting dispersions...\n", + "... done in 0.05 seconds.\n", + "\n", + "Fitting MAP dispersions...\n", + "... done in 0.05 seconds.\n", + "\n", + "Fitting LFCs...\n", + "... done in 0.04 seconds.\n", + "\n" + ] + }, { "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
baseMeanlog2FoldChangelfcSEstatpvaluepadj
ID
Nov6726.372248-10.1710701.226824-8.2905691.127082e-161.509500e-12
Tuba1c6612.117489-1.1009400.182744-6.0244951.696380e-091.135981e-05
Zfp874a494.5737580.7365570.1334215.5205323.379756e-081.131627e-04
Nlrp1b152.2865062.7144490.4912725.5253433.288427e-081.131627e-04
AI5068161284.533981-1.3039510.244834-5.3258561.004785e-072.691416e-04
\n", + "
" + ], "text/plain": [ - "Data(n_samples=2, n_feats=[21 20])" + " baseMean log2FoldChange lfcSE stat pvalue \\\n", + "ID \n", + "Nov 6726.372248 -10.171070 1.226824 -8.290569 1.127082e-16 \n", + "Tuba1c 6612.117489 -1.100940 0.182744 -6.024495 1.696380e-09 \n", + "Zfp874a 494.573758 0.736557 0.133421 5.520532 3.379756e-08 \n", + "Nlrp1b 152.286506 2.714449 0.491272 5.525343 3.288427e-08 \n", + "AI506816 1284.533981 -1.303951 0.244834 -5.325856 1.004785e-07 \n", + "\n", + " padj \n", + "ID \n", + "Nov 1.509500e-12 \n", + "Tuba1c 1.135981e-05 \n", + "Zfp874a 1.131627e-04 \n", + "Nlrp1b 1.131627e-04 \n", + "AI506816 2.691416e-04 " ] }, - "execution_count": 43, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "data = cn.Data.from_cdict({\"sample1\": carnival_data1, \"sample2\": carnival_data2})\n", - "data" + "def fit_direct_de(adata_subset, min_prop=0.8, refit_cooks=True):\n", + " direct = adata_subset.copy()\n", + " dc.pp.filter_by_expr(\n", + " direct,\n", + " group=\"condition\",\n", + " min_count=10,\n", + " min_total_count=15,\n", + " large_n=10,\n", + " min_prop=min_prop,\n", + " )\n", + " inference = DefaultInference()\n", + " dds = DeseqDataSet(\n", + " adata=direct,\n", + " design=\"~condition\",\n", + " refit_cooks=refit_cooks,\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " dds.deseq2()\n", + " stats = DeseqStats(\n", + " dds,\n", + " contrast=[\"condition\", \"Leukemic_spontaneous\", \"Leukemic_SB\"],\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " stats.summary()\n", + " return stats.results_df\n", + "\n", + "\n", + "direct_train_adata = adata[list(spontaneous_train) + list(sb_train)].copy()\n", + "direct_validation_adata = adata[\n", + " list(spontaneous_validation) + list(sb_validation)\n", + "].copy()\n", + "\n", + "direct_results = fit_direct_de(direct_train_adata)\n", + "direct_validation_results = fit_direct_de(\n", + " direct_validation_adata, min_prop=0.5, refit_cooks=False\n", + ")\n", + "direct_results.sort_values(\"padj\").head()" + ] + }, + { + "cell_type": "markdown", + "id": "1d30a976", + "metadata": { + "papermill": { + "duration": 0.006716, + "end_time": "2026-08-06T17:19:00.118904+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:00.112188+00:00", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Gene-expression specificity\n", + "\n", + "The left panel shows why the direct contrast is needed: most disease-versus-normal fold\n", + "changes lie near the diagonal. Threshold-only categories are useful descriptions, but\n", + "failure to cross a threshold in one contrast is not evidence that two leukemias differ.\n", + "The right panel therefore uses the direct statistical test for specificity." ] }, { "cell_type": "code", - "execution_count": 44, - "id": "d2f0e5f0", + "execution_count": 41, + "id": "48a8e257", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.389675Z", - "iopub.status.busy": "2025-06-27T16:26:47.389575Z", - "iopub.status.idle": "2025-06-27T16:26:47.399564Z", - "shell.execute_reply": "2025-06-27T16:26:47.399358Z" + "iopub.execute_input": "2026-08-06T17:19:00.132202Z", + "iopub.status.busy": "2026-08-06T17:19:00.132080Z", + "iopub.status.idle": "2026-08-06T17:19:00.333687Z", + "shell.execute_reply": "2026-08-06T17:19:00.333347Z" }, "papermill": { - "duration": 0.016607, - "end_time": "2025-06-27T16:26:47.400134", + "duration": 0.209167, + "end_time": "2026-08-06T17:19:00.334316+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.383527", + "start_time": "2026-08-06T17:19:00.125149+00:00", "status": "completed" }, "tags": [] }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gurobipy successfully imported.\n", - "Gurobi environment started successfully.\n", - "Starting optimization of the test model...\n", - "Test optimization was successful.\n", - "Gurobi environment disposed.\n", - "Gurobi is correctly installed and working.\n" - ] + "data": { + "image/png": "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hGgusNIpq72OGTPGhCne36NBkBJCCCGEEM0w0TkTSdeVTDouLs6q1wkhhBAiMqEr6q233sJll11mhSNYCEQIIYQQQjQ/osopFQ4///yzVYDr3bs3zj//fKxbt67W9Rl7S1tZ8EsIIYQQ2y4PH6u9nn766VaEY9asWTjooIN0uYUQQoitgNXOmYuR08YmktoioocmJUrRRfXmm2/ixx9/xMMPP4zJkydj3333rTXp27333mtxjs6rU6dO27XNQgghRHOCrqiNGzfi/ffft3t2y5YtG7tJQgghRFTfV0ePHh0RruNIaouIHpqUKHXSSSdZbor+/fvjiCOOwFdffYX58+fjiy++qHGbG2+80RJvOa8VK1Zsl7ZmZGRs82OwCkNt+bcai+eeew7vvvuuvX/11VfrdLOFW21v/PjxDdA6YNKkSbj66qsD73feeWdT+z///PMq63333XcYOHCg/b3xb4/MmzcPo0aNapB2CCFEU3JHnXPOOZg9e7aF6/3000/mlhJCCCHEP6O4uBjnnXeeTRubSGqLiB6alCgVSrt27dClSxcsWLCg1hxUzAQf/Ip0KisrEc1cdNFFARGnoUSpO++8EyNGjGiA1gH33XcfLr74Ynvfvn17U/tPOeWULR6wKFx98803mDlzJp588klbvsMOO9j5rFy5skHaIoQQ0c7XX39t4v1HH32EJUuW2DImNRdCCCHEP6e8vBwvvfSSTRubSGqLiB6atCjF8AA6nyhObYskreFQUFBgFQEHDBhgL4oYDtddd50tY6UhVhZ0XETDhg2z5WeffTZ8Pp8t33vvvfGf//wHI0eOtHAHVhXcddddMWjQIFxwwQWB9bg9hZH999/fXDt1sXjxYts3HT9HHnkkNm3aFDjelVdeaccYOnSoOc7IWWedZaLSHnvsgR133BG//fabLd+wYYO507gfbrt06VJb/s4776Bv375WNfGoo46q4uD6+OOPMWXKFBstHz58eMCZRHFpyJAhOO644+z6hfLYY4/ZOfJYjnjEdjlOpk8++cRyivFaMaaZ19k5p3//+9/YZZdd7AGJeUxCYU6xhQsX2vakY8eOdo3d7qr/VZig9+STTw78bTGPmQPdegxLEUKI5kx+fj4uvPBCC63nby4FfP4+CiGEEEIIEZWiFAWK6dOn24twxJXvly9fbp9RfKBIQkGECc8pkjBM7phj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JcJtDXNhMck8q/IJIUSkQhGKIdYcqKCwzuqkYvv1F5oazfW8hRAiUuFzKSNnGEHT2O7nSGqLiJ4+g8L3thL9J9t+MOcJnVL//e9/a13v1ltvRU5OznZpE0P6Lr30UglSQoiIxcn/x9Dq++67zwpWSJASQgghmhYUgfjgHwkJxiOpLSJ6kFMqBI0ACiGEiGbKysosJJyFHT799FMNomwjmmt/obmetxBCRCqR9LscSW0RjY+cUkIIIUQzg3kMGaZ3zz33WMEKxy0lhBBCCCFEJKLwPSGEEKIJwIITFKJYoOH333/HbbfdVm21UtF0GTduHI444girHss0A2PGjNki1wcLrPBzJrvfe++9MWvWrEZrrxBCCCGERCkhhBCiCUBX1JVXXompU6di6NChjd0c0QgUFhZaDrGnnnqqxqT3jzzyiH0+efJktG3bFgcccIByfwghRBTDpOIMl+O0sYmktojowdvYDRBCCCHE1olQTz/9tFVyveOOO3DttdfqMjZzDjnkEHtVB11Sjz32GG666SYce+yxtozVGNu0aYO33noLF1544XZurRBCiIbqD6xYsQJ9+vRpdId0JLVFRA9ySm0H7rzzTvTv3x8DBgyw0IolS5bY8q5du2LgwIEYNGiQjWx+//33DXK8jIyMeq0/adIkXH311YFkZIcddpi1iW376quvqpxHz5490a9fP9vG4V//+pct69u3L+69995AdbqaOsZCCCH+GUuXLsX++++PK664wqqOUnAQojbY98jKysKBBx4YWBYXF4e99toLv/76a43bMRyUfYPglxBCiMhyyfJZk9PGJpLaIqIHOaW2Ej4AMF9DXbCj9/PPP2P69Onwer1YuXIlkpKSqnyenJxs4Rbnn3++VUva3rBUOF/kxRdfNDHqiy++wJw5c3D00UebuMTkuV9++SXmzp2LmTNnWltp/We7f/vtN/ucHdcdd9wRZ511Ftq1a4dOnTrZZ7vtttt2PychhGiK8N7z8ssv20BCixYtbDBjv/32a+xmiSiAghShMyoYzi9btqzG7TjYRCeeEEIIIcS2QE6pepJdWoQ3503CfVO/sSnn6+oE8sGBghTp2LGjzddULrE67r///oDT6s0337RlFLqYB4KiUe/evXHNNddssd3pp5+Ob7/9NjA/YsQIE5VCj7tw4ULbB6HQlp+fb+85pbhEPvvsM5xyyil2HnRRseT4mjVrbP2SkhKb5zQ+Pt5ENnLkkUfinXfeqeOKCiGECBf+5v7000848cQTbTBAgpSoL6EDanUNst14442WH8R5MSxDCCGEEKKhkFOqnny5dCYmrV2CVvFJNiWn7TCsxvUpHLECEkPbaJmnULTLLrsEPt99991RUVFho5R0IoUyZcoUvPfeezYtKiqybffZZx/7bNq0aeZmopjF8LmrrroKnTt3DmxLx9Krr75qx120aBHKy8stvjcYOp0odjlccMEFgco9xcXFgZDC1atXW5UeB4prq1atsnBEtofrc/8PPfRQILHdkCFDrMqPEEKIrYeiwdtvv42YmBiccMIJ9rvuDHQIES5Mau4MljkDTmTdunVbuKeCYYgfX0IIISKXSEosHkltEdGBnFL1fDBYnr/JBKk2iak25XxtuTz4n5Li0RNPPGEuIopUwe4lhu/Nnj3bRr6ZZDR0X7/88guOO+4427Zly5Y2Ks6wOcKwuMzMTMTGxpqTKtR+v++++1o4YEFBAV5//XWceeaZW7SPbqfgHFRff/01dt11VxOhfvzxR4waNcoS1lV3jhxZpcuKLwpUPD6T7i5evNg+Z9u4fyGEEFvH+vXrTYg67bTT7DeZSJASW0O3bt1MmPruu+8Cy+hyHjt2rA2QCSGEiE5SU1Mt+oXTxiaS2iKiB4lS9YAiTOeUlthYUoi1RXk25XxduaX4AEEximF4rHrz6aefbrHOsGHDLFktH0BqI9hmHzxyyeoGlZWVVb9ct9sErffff9/cVieffPIW+6PYxVxQDq+88kqgKs/gwYPteKzs1KFDBxOeHJgbiyOtH3/8sXVmExISTDRjiCBdXYT75f6FEELUnzFjxpgLluHa/A1/9tlndRlFrXAQijks+XKSm/P98uXLre9AR/U999xj927mh6SjOjExEaeeeqqurBBCRCmMuvnmm29s2thEUltE9CBRqp4c2rU/hrXphhi316acr4158+ZZ6ByhwDNr1ix06dJli/Xmz59v4W+tWrWqsnzPPffERx99ZAIPK9rRURUc/lcX7HBSCOODDUWjUBjO57SPMDn5Dz/8EOjMUummk+rwww+38BH+wLCDyzAShuxxfT4wURBjTik6v3bYYQfbng4qJj4XQghRP/ib+t///tccsbxv0C0lRF1wUIgDSnwR5pvk+1tvvdXmr7/+ehOmLrnkEgu/52AT3dsKtRBCiOiFKV4OPvhgmzY2kdQWET0oKUU9aRGXaDmkwq2+x1HLyy67LFBCeejQoTbvQJcRHU18AKFLiY6nYNhp5MMIt+PxWAGHDiWKXeHQo0cPczlVF7pHmOuK+SWcJOW33HKLrfvWW2/Z8V544QVrHyvy8QeGghPXe+mll2x7to15p5y8VGeccQZ22mkne8+QAFbuE0IIER4cXWzdurUJCRwgYM7AcO41QhDmfqwtpQD/lpjrUfkehRBCCBEpuPy19V6aIU4VPFaYaQqxsDwPOqs40k53U3Xcd999lmvipJNOatBjM//VBx98UG21QSGE2J6EO5DQWLDa6XXXXWcDAZdeeimeeuqpxm6SaGb9hXBpructhBCRSiT9LkdSW0TjE+7fg8L3mjCs5kcHE8s51yRIkcsvv7zBH9YYasgHKwlSQojGpLCw0MKKv/jiC5tyPtKgq5Ru1DfffBPPPfccnnzyycZukhBCCCGiBEa1MGUKp41NJLVFRA9ySoUgdVcIIZoOFKJYETQ5OdnCqbt37x5RlcaYc4FOVYZGv/rqq9Y+ER001/5Ccz1vIYQQQtQPOaWEEEKguYfsbdq0yQQpPkRzyvlIiFqfNGmSVVtl5bPx48dbwQgJUkIIIYSoL2VlZRg9erRNG5tIaouIHuSrE0II0SRhWDKrjtIhRVcHp5zfnrmlQgUwVlJlRVRW1Xv00UdtWe/evWVzF0IIIcRWwYJV559/vk0bm0hqi4geokqUGjduHI444gi0b9/eHirGjBmzReefFWX4eUJCglWhYYJvIYQQzRNWA6UDyev12tSpDtoYuaz+/PNPDBs2DA8++CDuvPNOewkhhBBCCNGc8SKKYKeeDxRnn302jjvuuC0+f+CBB/DII49YXg6OPN9111044IADMG/ePKSkpDRKm4UQQjQeSUlJlkOqIavvhbMvClBOLitOWfzhhBNOQK9evSx0b9CgQQ3SFiGEEEIIIaKZqBKlDjnkEHvV9JDw2GOPWVjEsccea8tee+01tGnTBm+99RYuvPDC7dxaIYQQkUJDCFKO24l5qRgGyEESil615bLKz8835y6XffLJJxg5ciTi4uL+cVuEEEIIIYjH48GBBx5o08YmktoiooeoCt+rjSVLliArK8v+Eziw47/XXntZ6ERNML8Hs8IHv4QQQoia3E8VFRU25XxNAlh6ejref/99nHfeeSZGUcSic1eClBBCCCEaEg6QffPNN9UOlDXntojoocmIUhSkCJ1RwXDe+aw67r33XqvK5Lw6deq0zdsqhBCi6Vbyo2B1ww034O233zZ37znnnLPdclkJIYQQonlBkwXzKnPa2ERSW0T00GREqZpCNOrK/XHjjTdaVSbntWLFiu3QSiGEEE2xkt+CBQswcOBArF69Gj/99BM+/vhj7LPPPhoxFEIIIcQ2gQLQHXfcERFCUCS1RUQPUZVTqjbatm1rU7qi2rVrF1i+bt26LdxTwTCUQuEUQggh6sJxO9EhFVrJz8kz1bNnT6uud/rpp6vAhhBCCCGEEM3FKdWtWzcTpr777rvAsrKyMowdO9YqLwkhhBANUcnvsMMOsynn6cZlUQ2KVJ999pk5py6++GIJUkIIIYQQQjQ1pxTDJRYuXFglufn06dNtdLpz58646qqrcM8991jJbb74PjExEaeeemqjtlsIIUTTwQnZW7t2rVV2ZSLzM844A3vuuWdjN00IIYQQzYyYmBice+65Nm1sIqktInqIKlFqypQplpvD4ZprrrHpqFGj8Oqrr+L6669HcXExLrnkEmRnZ2P48OH49ttvNWIthBCiQZk2bZpV03O73fjoo49wzDHH6AoLIYQQYruTkJCA0aNHR8SVj6S2iOghqsL39t57bwuVCH1RkHJGr5ntf82aNSgpKbHQvf79+zd2s4UQQjQRKioqbNqnTx9zR82aNUuClBBCCCEaDZoyzjvvPJs2NpHUFhE9RJUoJYQQQjQWn3/+OXr37o05c+bYSOCjjz6KzMxMfSFCCCGEaDTKy8vx0ksv2bSxiaS2iOhBopQQQohmAZ21W0NeXp7lRzjiiCPQt29fpKWlNXjbhBBCCCGEaI5EVU4pIYQQor4UFhbizz//xKZNm6wwxk477WSV88Jh8uTJOP744y1PIXMknHPOOYFE50IIIYQQQoh/hpxSQgghmjQUpBYvXmz5oDjlfLi0bdsWgwcPxowZM8wtJUFKCCGEEJFEXFwcbrvtNps2NpHUFhE9SJQSQgjRpEP26JBKTk62sDtOOV9bKN+ECROw7777IicnB506dcKYMWPQtWvX7dpuIYQQQohwoADEYl+RIARFUltE9CBRSgghRJOFziaG7BUUFCA3N9emnK/O8cSqrddffz1GjBhh75lLqiFzUwkhhBBCbIs0BQcddJBNG5tIaouIHpRTSgghRJOGOaQIHVLdu3cPzAczbdo0nH766Vi4cCHuu+8+XHvttfB4PA2Wm0oIIYQQYltQWVmJb7/91qaNTSS1RUQPEqWEEEI0aSgc7b777uZwqiknVH5+PhISEjB16lT079+/1txUDAHklHC/QgghhBBCiK1D4XtCCCGaBaGC1MyZM3HJJZfA5/Nh5MiRmDRpUo2C1NbkphJCCCGEEELUjkQpIYQQzQpayu+//34MHToUY8eOxdq1a2252+1ukNxUQtQXJtUfPXo0brzxRhM7yR9//IFVq1bpYgohhKiV+Ph4vPjiizZtbCKpLSJ6UPieEEKIZsP8+fNx1lln4ffff8e//vUv3HHHHWF3nMLJTSVEfZkxYwb2339/c+AtXboU559/vgmeH3/8MZYtW4bXX39dF1UIIUSNxMbG4rzzzouIKxRJbRHRg5xSQgghmg0//PAD1q9fj/Hjx5tbqj4jeU5uqsMOO8ymSnIuGoJrrrnGhNIFCxZU+Xs85JBDMG7cOF1kIYQQtUL3dr9+/Wza2ERSW0T0IFFKCCFE1BJOTie6T5555hl7f+GFF1rC8j322GOrj6mQPdGQTJ482f4uQ+nQoQOysrJ0sYUQQtQKc2POnj3bpo1NJLVFRA8K3xNCCBF1FBYWmrjEUDqGOjGULtS5RMHq5ZdfxtVXX23rnH766UhNTUViYmKjtVuIUOiOysvL22L5vHnzkJmZqQsmhBBCiCaNnFJCCCGijunTp2Px4sWoqKiwKQWqYFavXo3DDz/c8hqccMIJ9jkFKSEijaOOOgp33nknysvLA0685cuX44YbbsBxxx3X2M0TQgghhNimSJQSQggRVQ6pCRMmYNKkSeYuSUhIQHJysjmmgkP5HnzwQate9tlnn+Gll17aQpAKJ+xPiO3BQw89ZHnOWrdujeLiYuy1117o2bMnUlJScPfdd+tLEEIIUSt0gH/99dcR4QSPpLaI6MHlV8+8CnzIYQUclvzWqLoQQkQWv/76qzmj+Fu9YcMGZGRk2G81q+H16tXLHFQHHHCAJdgsLS210KjgMD+uw4TStYX9CdEY/YUff/zRhFTm4RgyZIhV5ItE1E8SQgghREP2GZRTSgghRFTAMRSKSXRGObl2KDx169bNwp2OOeYYG5mbP3++rcOXI2LxPaeLFi2y8ChnnrCSnhCNzb777msvIYQQor4P/h07dsTKlSsb3VQRSW0R0YNEKSGEEFEBxSS6mxwxiZ2dVq1a4fnnn8cbb7yBI488Ei+88AJiYmK2ELE4SsN5VuLr2rWrzRMn7E8V9URjwXxStXHrrbdut7YIIYSITvLz8xEpRFJbRBMTpRjuwI4RO/+hqiftWBdffDHuuusuC6EQQgghtgUMt3PEJN5vmDvqp59+wmuvvYYzzjijirgUKmIxHxXD/TjlZwzx4z4kSInG5OOPP64yz4TnS5YsgdfrRY8ePSRKCSGEEKJJE7YoxY5/p06dqrXhccSZn3GdZ599tqHbKIQQQhjM/zRw4ECsWLECffv2xSOPPGIP77wHkVDXU6iIFZxTivPO50I0FtOmTas2/OGss86ykFQhhBBCiKZM2KLUuHHjLDyiJk488USceuqpDdUuIYQQotp7ER/WOUDCh3nmkyJ0PzkJzVu0aIFBgwaZgMUXc0YFi1XMR+XU+JBLSkQi/PtmWN/hhx9uDkAhhBCiJtjXmTlzZkQUbomktojowR3uisuWLbNyxTXBkAiOXAshhBANTXFxMa655hrsvffelkDzww8/rCIoUZBignMmPB8/fjw++ugjE6ocgtfl8t9++w1ffPGFJUIPXk+ISCEnJ8fSIwghhBC14Xa7zTHOaWMTSW0RTdApxRA9Vi3q0qVLtZ8vXLhQGfaFEEJsE4444gj88ssveOihh3DllVfC4/EEPnMSmhcVFdmL4XyrVq3C9OnTsccee2yxLwpYwRX5iCrwicbiiSeeqDLPv+c1a9aYO/3ggw9utHYJIYSIDphYnM/qHMho7Ip3kdQW0QRFqZEjR+LJJ5+ssVwxO1UjRoxoyLYJIYRoxpSVlVnnhhX2brvtNnPkMo+UE3oX7IJiyB7t4hSkCDtC2dnZW+SYCq3IR1SBTzQmjz76aJV5ji4zxHTUqFG48cYbG61dQgghhBARJUqxY7Tbbrvh+OOPx/XXX48ddtjBls+dOxcPPPAAvvnmGwuDEEIIIf4pdDOdeeaZ5s799NNPbdCDYXa8z1BEYlU9Jil3chYwhxRdT3RIUZBKTEy0dUJzRoVW5FMFPtHYsNKeEEIIIURzJWxRavDgwfjggw9wzjnnbFG+mKPY7733HoYMGbIt2iiEEKKZUFFRgfvvvx933HEH+vTpY8mewwm7ozh17LHHWsgeHVKOaFUdoRX5VIFPCCGEEEKICBelCKvAMOH5119/bTmkGAbRu3dvHHjggTYqLYQQQmwtPp/PQsQnTJiAG264Abfeeivi4uLCDrujMMUcUqEhe6FUV5FPiO0JBdRwYdJ+IYQQoiZSUlIshxOnjU0ktUU0UVGKJCQk4Jhjjtk2rRFCCNHsqKystFdsbCzOPvtsPPjggxg+fPhWh92F5pCqSXiSICUaC0dYbSw34u23344333wTWVlZaNeuHc466yzcfPPNqpYkhBBROqi3YsUKc5gHF4Jp7m0RTVCU6ty5M6ZNm2aheuSpp56yfB/Kqi+EEGJrocjEB2LmLGTYHkWpmqhP2B3zTzHcr7r8U0I0Nq+88kqjHZv/z5577jm89tpr6NevH6ZMmWL/7yiUsbKlEEKI6IJ9nv79+0dExbtIaotogqLUypUrbSTb4T//+Q8OPfRQ/bEJIUQjE41haGwzH4z/9a9/WaUxJ3dUbedSn7C72vJPCdGc+e2333DUUUfhsMMOs/muXbvi7bffNnFKCCGEECLiw/ccQktyCyGE2LaEijGR7AYKbmtouzdu3GiDGpMmTbKHY4pTzD1QU2W9UEIFqdD9h5N/SohIgoVkWDBm+fLlKCsrq/LZH3/80aDH2nPPPe3/3Pz58y0vKH9DfvnlFzz22GPVrl9aWmovh7y8vAZtjxBCCCGaN1stSgkhhNg+1CQ+RaIbKLitbBeFIC5juwcOHGjtnjdvnoWC33LLLfZQ7LS9vudS03WpT/4pIRqbJ554AjfddBNGjRqFTz75xELpFi1ahMmTJ+PSSy9t8OP9+9//trAKJ98HXfB33303TjnllGrXv/fee60aphBCiMglkhKLR1JbRBMUpUaPHm0PDE6izFdffRUZGRlV1rniiisatoVCCNHMqU58Yg6mSHQDBbfVcXhQEGJOQlbUY/4oOkH2339/tGjRwqrr0TlF6nsutYlyFMDCzT8lRGPyzDPP4IUXXjBRiHmerr/+evubZfVJ/v02NO+++y7+97//4a233rKcUtOnT8dVV12F9u3bmzAWyo033ohrrrmmilOqU6dODd4uIYQQWwdzN0WKizWS2iKaaKLzF198MTDftm1bvPHGG1XW4cODRCkhhGg4agpFI5HmBnLaSqGJ0+zsbHi9XnN8PPnkk1bZa8OGDbaspKQEa9assYquTqW9+pxLTdeF286YMSPgntp7770DgylCRCIM2XPEVP5/yM/Pt/dnnHEGdt11Vyss05AwjxsF4pNPPtnmBwwYgGXLlpkjqjpRiv+f+RJCCBGZ0Czyww8/YL/99rM+ltoioo2w/2qXLl26bVsihBBiC2oLRatPNbrtAdvE8LmpU6daDpqioiJ8++23mDNnDnbeeWfcdttttl5xcbGdB0WrxMREczU5AlS451LTdaEgFWkhjULUBgf56Bbs0qWLvX7//Xf7+1+yZMk2yd/J/5cUiINhGB/LeAshhIg++Lt+8MEHR0TFu0hqi4gelFNKCCEinJrEp/pUo9tWhB6bYhRFJ+apiYmJMUfUcccdZ6N3TuLynJwcC93jaF6PHj0CTqb6nkvodaG49fPPP0dcSKMQtbHvvvvis88+w5AhQ3Duuefi6quvtsTnrIZ37LHHNvjFO+KIIyyHFB3wDN9jaO0jjzyCc845R1+UEEIIIbY7Ln89h+FWrlyJ9PT0LcIhysvLrczwyJEj0VjcfvvtWyTjbNOmDbKyssLeB2Ng+TAjdVcIEWlEkrhSXZJxup5Ywev111/H0KFDkZmZae6L1q1bm/hEN1PHjh0RGxvboBUDg68LK/g5TinHPSWnlNgWNFR/gf9H+HJCLliFj9XwevbsiYsuusj+vzQkDA9kkYGPP/4Y69ats1xSzGfFHFbhHEv9JCGEiCwi6Xc5ktoiGp9w/x7Cdkox9wdLdzMsg53/0047DU8//XRAnOIDxj777GOj440JR/2+//77KpZ0IYSIdiJJkKopyTgt2//9739t2rdv38BvMJMiO84lCkWHHXaYvW+o8wneT6SFNApRFwylCw6nO/HEE+21LasiUTzmSwghRPTDe8iOO+64RWh2c2+LiB7CFqWYFJMPFxMnTrTQC1ZjYQLZ7777zsIwyLbIfVBfONLI/AxCCNEUqM6R9E+dRf+U0CTjDNe755578MUXX2DQoEEmOnE5xSmG8K1atcqEI4b2betk7JEQ0ihEfejWrRtOP/10G+zr06ePLp4QQoh6wf7YrFmzIuKqRVJbRPQQtoRJ99Hjjz9uyWpZypvWcoZhMBeCUwkqEh4AFixYYFZ0dvJYWcYZwRdCiGjEcSQxRJpTzjc2TpJxDlAwiflff/1lyZkfeughjBs3Doceeqh1SujI6Nq1qwlETOS8LZ1LoYMikXA/EiIcLr/8cnz99dc2ssywVzqY6E4XQgghwqGsrAyjR4+2aWMTSW0RTTCnFB8wmAyzV69eVcpPnnDCCfag9L///c9GyBszfO+rr76ykfnevXtj7dq1uOuuuzB37lxTa1u1alXtNhy55ys47pGhJoqDFUI0Nvx5HjNmjD2gOs6fdu3a4eijj7b39XEDNbRziCITEyMzVxRdUSwZP3z4cAvj5rE+//xzux84ceR02h5++OENLhZFopNMNA8aOm/G/Pnz8eabb+Kdd96xfhX/L9FBdeaZZyKSUL4QIYSILCLpdzmS2iIan3D/HsJ2SjmltkND5d5//337jA8bjc0hhxxiVZ4GDBhgbi6GkpDXXnutxm3uvfdeu1DOi4KUEEJEAhRwmINpw4YNFiLHKecpvjOhN3/jOKUwUxP8LNx1SW3jFEzGzM+ZW5BFLb788kusX7/exCB+xodqR/ziQADbypsQp5zfFu4lx0nGQZJIcZIJsTVwQI3FWubNm4fx48fb/62zzz5bF1MIIYQQTRp3fQSfF154YYvljjBFl1SkwdFyClQM6asJ5sbiQ5PzWrFixXZtoxBC1AQFHv6OZWRkICEhwaacnz59elhCDLcPV7SpTrxyBCo+HL/yyiv2wHzAAQdg2LBhliuKuQaZ0NxZL1jQomOJAxa8R2yrsL3Q3Faccj4S8hsKsTVMmjQJV111FY455hgTp44//nhdSCGEEEI0acJOdH733Xfb6Hy1O/F68dFHH2HlypWIJBiWx3wnI0aMqHEdhpzwJYQQW8O2TKjN/bJwA397KUZRKGrTpg2ys7MDQowjzAS3wwlpY4gdk4zTpeRUvwtd18ERr3gcOp4WLVpkRSw4T2dUVlaWiVNjx461ROIM3aZ7i/tjbqnExEQTn7ZnwnEnt5WTO5COrG2dSF2IhsYJ23vrrbewdOlSC9u77777cOyxx1peNiGEEKI2mCLhwAMPjIiq85HUFtEERSkKT7XFAfIPr0uXLmhMrrvuOhxxxBHo3Lkz1q1bZzmlGMc4atSoRm2XEKLpkV1ahC+XzsTy/E3onNISh3btjxZxiQ1+HMdhRPHHcRxRQOKD7OrVq+03rkOHDgHhKlRg4nKKR3Q21STaUDii6MR9Oa5Rwu1nz56Nn376yZIwUxA777zzTICi2MXk644rKT8/3/IO8hgU0pzcTttaIKru+ggRTbDiHovIXHrppVagRRWEhRBC1Af2t7755puIuGiR1BbRBEUph2uuuaba5XzwiI+PR8+ePXHUUUfZ6PX2hk6tU045xfKuZGZmYtddd7WKUI0tlgkhmh4UpCatXYJW8Uk2JaftMMymDekOqs5xROGFTiaKSBwsYEJxClHOesECE8UobseBg2DRJnh/nNJdxd9Ohglyu9jYWAsTZNgef1vp2GDOPTpLmT+KghSnxO12Wxt4XE55bML2bGu2hyNLiG0JC7Iwn5QQQgixtdFBzJPMtDSNHQEUSW0RTViU4kj4H3/8YQ8eO+ywgz0IMGcTH3g42vfMM8/g2muvxS+//GIj69sTVqwRQohtDX/36JCiINUmcbODlPObSgrx1bJZWJ6/EZ1TWpl7Kj02oVqxpL4iirMut6NTiaF1TggfRaDgsDxHYOJAAUPr+PtMtyvXp3MquFodK6rSdcWKpRSX2Jng7/uECRMs2TK3Oe200+yhmS4opw3BOOIUl/N4FLBqChPcVkiQEtFKsCBFkZlicHAorBBCCFEb7Lsx7yfNI40tBEVSW0QTFqUcFxRHz51wPj4QnXvuudhzzz1x/vnn49RTT8XVV18t654QoklCAYQhe45DamNJIYa16YYPF/2BT5fMgM/nhw8LMH71fHRJyagS3ldb2F9tIo6TJ8oRk+hk4oCAs83gwYNtynkKSUyKToGIApOTd4qDCnQ9cT06jBjiR8cV5yl0cR06oLiMIXt0Ve29997WqeAxmeuGIYMzZ860kEDuN1igco7P3FNDhgyRUCREPVGSfiGEEEI0N+otSj344IP47rvvquSX4vvbb7/dkppdeeWVuPXWW+29EEI0JJEUokUxiVBcoiB1SJd+uGLcu8gvK0FGfBIW5W7A2qJ8tEtMrxLeV13Y39Ed+1URnJx8TME4eaIoOHEanM8pWBzi9WHuJ7qaKBzRJUXBie6lsrIyc0Q5IXqkpKTEXBk8Lt1R7dq1s4p6XIe5bbgt90mnFQceWJmPopUTskd4HEJnFl1T3Ea5nYQQQgghhBANLkrxQYZJxEND8zgy7uQRSU9Pt4cfIYRoCEryyrBg/CrkZhUirW0Seo3ogPjU2Ea9uHQ3UWRyhLKAKMRwNr8fFb5KJMXEWXgfdTSKVxRsqgv7Y7gOhSYKRxR8QvMxOU6n4Ip7rNLVrVs3E4+4LfdB99SgQYMCghBD9eiw4vr83SYUkvjido5DavLkyXjvvffs2AzV69ixI1q3bm3tpRjFl9MOhhpNnDjRRC+2h+tRoGJFQAe6pPiZEKJ+nH766bUWlRFCCCFCYf5QRi1x2thEUltEEw/fO+ecc/Dwww9jl112sYeaSZMmWeW7o48+2tbhvJJ2CiEaCgpSK2duQGJanE3JgMO6RcQFDk4Wvlf73vh0yZ8o81UiOTYe6XGJWFecFwjvo3jTObkFJq1battweb+W7fHpkjnIchUgKXsDOuRUmpg0cODAgLDDfdPJRPGJUGhieB6na9assfxRrVq1wpIlS2zd3XbbzUStAQMGYMqUKVbwgQMFFK1YJY/uKQpTFJuY/49VUriM1Uu5X7qnHPie21EUe+GFF2ybiooKC+lznFj77bcfxo4da+3g9v37b3aRCSHqx7PPPqtLJoQQol5woHH06NERcdUiqS2iCYtSzz//vOWLYtliPpjYTrxejBo1Co8++qjNM+G5/hiFEA0B3Tl0SFGQSm6VYMs4H0mhfA7H9xqCxJhYLMvbiMyEFMDlx4bizYLU3pndLfTNu2EtWnoqgRifLS8qL8MKVzEK8nKxwl+OXHixc5EHM2bMqOKWctxPFIcYbuckKP/tt98CQhHdSswbRaGKzlUKUBS4KB5RWOI6FJH4ouBFIemrr76yQQTmjmJHwoECGp1SFKUoaHHK7bk/jn7RIcX987MVK1bYd9G1a1cTypjrihVQhRDh8cMPP1gfas6cOfZ/if2oq666Cvvvv78uoRBCiFphP+/yyy/Hk08+WaUv19zbIqIHl38rs2oydIOj9ty8R48eTSZUgw9yDI9hmKIs9EJEBn99sSTglCrKLUXH/hkR45SqjmDBzHlPQYoiEkUd/s60b98exx57LJ6c+wsKS4qxcs58bCovQXJCAo5O6mphdYcddpjtIzg80Jl3Ep8zITkTmtO5xIon3I45pSgU0Q1FYcnJ/eQIU9yWv3PsODAMMJxKXxS+eAzuy0mUznNhyCFFLQpdzm8n12XbI000FCIS+wtPPfWUDfYdf/zx5nIkdDd+8MEHeOSRR3DZZZchklA/SQghIotI+l2OpLaIxifcv4d6O6UcKEIxnIQPHU1FkBJCRCbMIeU4pChIOfORSrAY4whKdDhRDKIQRNGGVewoKnXOaIlJRUsQn9kC/pyN6JCQZu4jOpHognJcTxSAKPzQQcHQaeaQYriek/Cc21CA4jG4by53Ku85cD90R1EcO+uss+y3O1SQckL7QuF+KHpRjOK+nfbQNcX3zjlzwIL7lCAlRHjce++95pIKFp+uuOIK7LHHHrj77rsjTpQSQgghhGhI6i1K8aHnrrvuspxSfPggHCm/9tprcdNNN1nIhxBCNCRMak5nVCSG7IUDRRuKUhSLKOLQzcTRAobbHTJ0H1tnUUwWWrvj0WJ1Pgpdm0PgOKrA31mKSRSAWN2O75cvX46NGzea84m/ubwmdEDx95k4yc2DWbZsGb7//nsTr/bdd98tqvs5MOyO7aIAFQz3x3YzpHDhwoUWzseBCQpbFNkoonE7ClKqvCdE+PD/9MEHH7zFclYx/ve//61LKYQQQogmTb1FKQpPL730Eu677z4bxeODCsuI33777faQwlE9IYTYFkSqIBWovFdN+7JLi/Dk2E8wtzILrowYZK7fnDiccfYtWrRAy/ikQBU/OqPmbZxnIhbD6hzBiWKTM6XwwykHAyhMUWRywvRqgo6sn3/+GZ06dcIBBxxg29YE28bcUDw+hS62i6ITBaizzz7bQgOdKoGcUjTr0KGDiVXRKhoK0ZgceeSR+Pjjj/Gvf/2ryvJPPvnEig8IIYQQtcH0CrfddptNG5tIaotowqLUa6+9ZknM2Yly4Kg4H0ouueQSiVJCiEZnW4ojwfum4PTBwqkYu2qBzY9s1wsn9B6KFnGJgfW/XPIX/sxZg9hYL1ZmxGBZYiXabMpD10X55pyiqLPnnnuaC4kiE8P76HTiMRgm57hPnfA5ik98de7c2ZavyVoTSEoe3EbiVNxzwulYja+268I20I3FSn50QK1cudLiwLmMYYMUpKpLus55CVJCbB19+/a1vhOF4+CcUhzwowv9iSeeqBLWJ4QQQgRDAYgGkUggktoimnCicz6csCoUE9sGM2/ePAwaNMgeqKIZJWcTInopySvDgvGrLPdUWtskyz3F0D+HfyKcUID6culMLM/fhM4pLXFo1/42/86CycgpKUJheante492PXHHrkeYMMXj3Tf1GyxbuRzLcjZgnasMlUWlSCqpRNsSN3rmbA6JGzlypN3EWTmPYXbcjoKUA0UnR5zibzCdS8mZLbE8GdjgK0HhynXokFOB2L9TQdHhxMTqDLM77bTTah2togPKqbDHfTO8kEITk7AzbxWdWVyHwlNoyB/bSVcXnVgUqGpaT4imSEP1F7p1C69oA39fWGCmsVE/SQghIgsOZrLf9tFHHzV6HyyS2iKacKJzPnCwUkzwyB3hMuUREUI0JhSknCp9nBLmoqpOUAp2M4UDt5+0dglaxSfZlILMioJN8Pmo6/tRCT/cfmDmxlXmjjqtz3B7iOTxVqRuRFHRRrjKgZRKFxL8HpQkuFGYU4q57nz8Pu07dEltie6+GAvFC040TjHKEYvoeuJ7Vtv7PX8Nsl0xSPABmxIpELnRfZMPWVlZ+Pbbb+0mwJA6blcdFMMyMjIshxS34foMKUxPT7dOBN87Ido1CXlcTkGKD8p0VjkPzDyuECI8WLBACCGE2FrYb2Tfr7pCNc25LSJ6qLco9cADD1ipbybMpc3cKXXO8uNffvnltmmlEELUgmP4pEOKglRyq4TAPD8LFZQI8ziF66Di5xS0uH2bxM0q/4qCbHROZgXSRcgpLQZbEOeNtc+XF2QH9kkBjORVlCK3tAixvgKsr8xBYl4plif5sDHJg/jKcswvzUGZJxEZHo+F4nF7JjeneEShiE4mhu/l5+ejuKQEOcleoLACvjIf4vg21o1p0//A+HHjTGg69dRTzblUE3RD8RirVq0yQYriVZcuXcyhxVEu/p7X5XxyqgpSkOIoCOG8QvmEEEIIIYQQ20SU2muvvayc+NNPP425c+fawwcteswn1b59+/ruTgghGixcLzE9DmsX5thnRbml6Ng/w96HCkqc529XTllxWA4qx/HkCFobSwqxS+uuOLTbABRVluHteZNtX1wnLS7Bpo7Ixf1xv4VlpRi7ej7KM7zo7fciduVqLMj0IM0bjzifD4WlFVjnKUYqw/b+Ftk4ykQhiiIRk4pzylA77jmx1IcNSW74vECJG8gs9iEuMxO77rordt555zorodJGS/HLGcnicTi4wLxRXMYQwLqcTzxHClfOesyP5eSvEkIIIYQQQogGF6UIxSdV2RNCbA9qc92Ehuu16ZluQhRFKk6ZU8oRlCZmLQ4ISsPadLPldTmogo/vOJ7mZ681zWhh7jpLcg6/C3u264mcsiKrpNcrvU1gXWfb9/76DZ/9NRHukjJUxHvRI609UluWY50vF9leVtUD/PFxSMqvgMftrmJ55ns6puhAoujj0DHXB1+lD3N+n4K8hSsw6KijEdehgxWdCAfui8KTU9mPTim2l6JXu3btwnY+VZf0XAghhBBCbB+Y2uHFF1+0aWMTSW0RTUyUYmLzcBk4cOA/aY8QQoSdtDw0XK8opxR7nNPT3jsiCvfTdV4yFq6PQ05SAQb36WyiUXBIXuuEFBOaHAcVt60uDxUFq//N+R2T1y+D2+XCp0tmMJ0UdmnTxbbpmdba1qGj6ZfJv1juJ4bffTZnPLIqS+D3AkUlwKqS+RjRti3aLM5FRXkRiuI9aOeKQ/qGoipV9AjnKfiELi9YvwlT3vwW69atM2eUt9wHeDxh/fU4eaYcEYquKraT8+vXr7fk5azuR/dUXc4nhvbRSaWQPSGEEEKI7Q9zjp533nkRcekjqS2iiYlSrKrHh5K6CvVxHSU1E0Jsy6Tlwb83FKucz5xwvWABhcLSi9/+hAVZ69A+Ng27Le+IPintkL5Tgq2XEZ+MjxZNs/XKfRUWkscwvPTYhC1cVEUVpUjwxOK9hX8gKSYWXVNaobLSB7fbZaKWk2dq5ab1uP/Tt7C8YBMyYhLQNd+FHE8R8pPcKHUBFW4/PH4XJvo2oUMK0D3Lh0pfBVwotX2E/srydzf0d5UDBePGjbOQvhNPPBFt27YN65rynFm5j6NXXbt2NdFp6dKl5piiUMW8Va1atbJ5CmEDBgwI2/mkkD0hhBBCiO0P3e/Dhw/HxIkTLc9nYxJJbRFNTJRSZRghxPakOheUk7Q8WPyge8r5zAnXC4ZV8P7IXYmUuDgsit+IUlRgdtZ6fD51LjqntEJxZamF3RWWl8Dr9mJx3nrc9vtnaJeUilmb1qBzcotAHqqxqxagZVyiCVKL8tZjTWEu8stLEOvxmJuqsKLMwgJf+u07TCtah9xYH2a5SzElEUgrdcNV6UPl30YvP/xY7ytBbipQWQJ0ygVi61GkhNeBglFt1fWCoXjlhAG2bt0aGzZswJw5c6zCHj/jcnYiHLHKWZfFLIQQDY8c6EIIIRoKuulnz569hau+ubdFNDFRihWZhBBiexGOC4ownI/uqWCxynlv4XkF2chMSoZ33eb1p/lWoU1yKnr62liOKeaXotDUPmlz/qRVBbmYuXElWsXvgNyyYvy1sRjx3hhsKN6cyykjIRnd0zKwpjAHG0oKLIl5QXkpfs9aglN22AUHdeyDn6ZNQl4MUAg/fH4fNsUBeYyqcwGuIBtUpWtzW5msnPTYVPPNm+v99ddfViVvzz33DMu9RFGJ0BnFZOTcliF6DLdbu3atdRYYuke3FD9ngvONGzdasvPU1FR07NgRv/32mzmm6qrCJ4SoH8EO9LpchnKgCyGEEKIps1WJzoUQYltTlwsqGD7UVZeDqlNyC6xstQkV8COvsATxiTHo2ikTqbEJmLFhFeZlZ6G80od4rxfJMXEWwtcmsRXaJqVioK8DluVvgtflwfC23a163rQNy/HnhpVYVZhrFfKKPeUmVBVXlGHMwukYs2g6lpesR7abtiffZhHKD5R7Njuh/KAA5bMQPY8fSC31o9QLLG25WUDqlOvbwjGVn5+P77//HsuXL0f//ptzYYUTKkfRibminAp7FKD4ojjFMD1aqtPT0y2HFPfXo0cPm1Kk6tatm63Dqnpcr64qfEKI+hHsQJ82bRquu+46/Otf/wq4EykIP/zww3jggQd0aYUQQgjRpJEoJYRoVGoSWeJSYrZwQYWTgyohNRbzZq3Gx0V/YnbKeqwrKkBmWjL279cP1IRmblxtOabmZa+Fx+UGPC4Lw6v0+9AxuSUSvDFYW5RnDqhDuvTHIZ13xFfLZ2N1UQ6W5m3E4twNKK0sB31N5cX5JjEVlZdiZUGOCVUUwALn9nezvZVASoUbpX6gxAN4KoG4Cj/K3UBBvBseH7C0hQeVbqD3hv93TDHE7ueff7YQvaOOOspC6+p7bemU4vZ0TlFwcpZTdGLIHj+neEXBig4pClIUn7744gsTpMKtwieECJ9gB/oJJ5yAJ554AoceemiVojGdOnXCLbfcgqOPPlqXVgghRI3QCf/111/btLGJpLaI6GFz3IgQQmxnKgs2IefnF7Hhg5tsynlCx9NfXyzBhJdn2bQ0v7zOfVEs2bgsD4UbS7BhcS5+LV+CH3LnI6swDz74UFRRhsTYOBzXYwh2yeyCwvJSJMXGoktqS6TFxSPBG2sV9jhPxxTdUf1btUdReRmuGP8e3po3EYUlJVhTkItSXwW8Ljej8VAJP3JLilBaUWGhesGCVJX2AShz+eD2upFe5Edcud8Eq/x49+YwPoYoxrqwJsVTZQ+rV6+26nenn376VglSfFGM4ovJyxl+l56WZkJTXFycheXtuuuuGDx4sIlTPJYTVsTPKFrl5ubalPMSpIRoeBiaSzE4FC5jXg4RHqx2Wh9nGQV/Vi4lU6ZMwWmnndagl/rVV1/F/Pnzaz0+H9r4+9uvXz97XXPNNcjOzg6ss/feewd+l50XnbPVwfvFsGHDAnlcrrjiCrtv8Hd75syZVdY9++yzTfjk/nbZZRf88MMPgc9uuukmy1noHO/dd98NfHb77bdbXkLns+BrxvV4LnT0cvsnn3wy8Nmff/5ZRXQVQjQs7MMddNBBNm1sIqktInrQX4sQolHIn/IhiuePhzs506Ykfe/z66y6V1v4Xu6aQsQle7E6MReVlX60SUgy8Si/rAyfLp6Or5b+xZXRLjENJZXlWJK30XJHUQlaQZGstBgVfh96pmUgJT/BEqBPWbsMBZVl+HPjqsDxNqeIclnC8s0BeZtf1fK3yuT2+RFXWGauqNIYN7w+P3wu2IvQJVXiBRYsWABfZSX69OmDffbZx1xMWwtFKSYyLy8vR6skLzoXzURSQTYKvOnotP+52H2/Q6rk4nKuJXHyVtEhxYeicKvw1dYWiVpCbEnfvn1x11134aWXXrJiA4SuRi7jZ9GMUz2Uwvi2/v/viFLXX399vbelOPXmm29W+xkF/a15uKIolZGRgd69e9e4zo477miCmBOqzRDO/fbbD5MnTw7kBaSL7vDDD6/zePx7ueyyywL3jOOPP96uBfMQhvLoo49a+DaZPn069t9//0AoN9tw9913B4Qu3osOPPBAtGjRwpadeeaZeOihh7bYJ/MQfvXVV1YNloMZQ4cOxZAhQ7DHHnvY/YPXkEIchTYhRMPC1Az8P7hy5UpzvTcmkdQWET3IKSWEaJQHldJVs1GRsxZlK/60Kec5whtcdY9Tp+pe6PahUyY9T2+fhPjkWHSIS4PH48LG4kJsKClEXnmxJT1fWZiDVQXZ9p6he+U+S/RkIXh5pQzBy0ZuWZElPJ+8bilmbFxtglQomzNG+U3wKvVXYnMw39/Y2/9vL/NKMX9USqkfcRVASQy38iOh3I/YSj/czqr5xch6+XN89eWXlj+K/BNBijBsj6IUR8/7eVahTdlKoLIcnbAOPSsXBx4SCwsLLYcNQ/Z+/fVXm6erimF8hx12mE23Nsk598V9Bu9bCPH/PPfcc+Z+YbgexQG+2KH/7rvv7LNohcIaRQ0+mHDqhA+HA3+b7r//fisrTsfYK6+8EviMIg5zb9Hpw9+2CRMm2PKLLrrIhCk6eBwHVCg333wzevbsib322guff/55ta6ppUuXmph05513YsSIEeb4ycrKwoknnmjH43FvvfXWKmHWdAVwOV/8zkaPHm3tpFuJ7fnyyy/rPGf+VvNYLDjB0Jf6wPBrOpUoRDmMHDnS/o6qwxGkCK9ZsGAY/BmFMn4WThUtik8UpAjduBSzgnOnnXrqqXjxxRfrdV5CiPDh/9dIIZLaIqKDsIZ+ODoS7ggXR9WFEKI2rJNbsBHl6xfCndgSvqJN8Ka1MRGmtqp7TjLzvBWrkV4+Di1b5CKhYw+k7HwcWnVJRVFeKZLS47FbngdpacmYn7I5D1IFxa6yIgvNowZUUlEOl9+F7qkZWFWQg7yyEpT5N2cYL6uosBxTzBNVUFFWffsp+LjcKPOHdNQDglRQXim3pZpCideF9nmVKOPotweIL/cjLsZlolXZnwux6u1veXB7uNlhhx3+3thvzq6tgdeSIXqc8kFp0WQfSvztkdqyA9okeeDOWx1wLzG0oqak5v/U3VDbvoUQMKGDD+//+9//MHfuXPt/edJJJ9lDfLRWvLTKohs2mFhCcZxTzrdv3z7s3xS6xiZOnGiiD6/RGWecYeLIsccea+IGfyt/+eUXE2IWLlxoYhCFJTp/quOzzz7Dp59+ap8nJCTgmGOOqfHYFIYoXjniE4/FsDYKPXRO0bn08ccf44gjjrB8f3QpUbQiPE+KWvw+mcA+HJeTA68VRaxZs2bZgAChsEUxzWHMmDFbhHPTWcX21ieHyw033ID333/fwgU/+uijKt8L3VlPP/20CYovv/wyWrVqFfjs7bffNsGUy5jzjI7eUBh2yoGOF154IbCMv/tXXXVV2O0TQgjRfAhLlHrssce2fUuEEM0GPrC4k1ohJrMn/L4KeJJawpOcYctrq7rnhPa1KvkOxRsnI7tNe6BoNcqLK1Fesh9KcstNuOo+tA0OP2AXS5Zekb8Rr/78Kj7K3oC1Hi/c8SlI8MSjY2IqVhblWuW88r8FKVLu95lIVdvIcJo3HrkVJVUX2urVb8PqewVxFfDEbsRxSzZgSsseKIj1YJcNaxBfWYT3v/oVrdpk4KB99keLhGTE+UrQvWwhUn15yHOnYnFMT5S6N4f11AYFKCeHlJPAnAIXR+C7DtoTxfPGw5Mah8r8dYjp3C9Qkp6DCdsiqfm23LcQTQmKCRdccAGaCgzZY9gwRRYn9I3zXB5uKJyTr4ghjNyGbiUKKLGxsSYSEYamMcfRjBkz0K5du1r399NPP5nYx98jcs4555iYVJMgdsopp9h7ujt//PFHrF27NvA58+xRQGRoHkUqR5AiFKT+CaHO4HDC9ygeOS6lcLnvvvvsRZceQ/boOOO1dYQwvjiowJyGdO9RhKIbjeIcv1euT2GPglhw4n62hUIdRUKKkA5sH6+h83chhBBCOITVMxg1alQ4qwkhmgDbWjCgSFQw9SOUrZqJsvWL4UlsAZc3Ft6MznZchuFVV3WP8xbalxqLhLK1KE/MQHFFOjJS/Fj/5wysxRC06pKCopxSxMR74U1022h3zg8vYce/fsOi1HYYlxqHkopKdM7shpM674SJWYuxrigX5T6fOZ8oSLEKn+WKcrvhrfRXDc372yWVUw9ByqHS48a89Fbw+iuw18r5WLp8PTq4stG5TUvsuVcL5Cd2xNz4zQ9L3csXol3FahS7EmxK5sT133KnQU4qXis+UPA6MYaf7ecDAR0GhG4yUr5+CRJ6jwjMO0nNHRcTH7aYQ6oh/ga25b6FaEq88cYbeP755+3/Ch0mfMhn3h/+f+EDfrRBYdxxSBEKERR6nDxJ4eDk13L2R/GnpvtTOL8poWJPbdCh5uyTAxR8T/ElVEyhoylcHEcXCU4sHgyvE51cFH/qK2oWFxdja6DgxFxUTLjPPFDBMBdUhw4dLLzxuOOOqyJ8MVyPic0ZpuiIUgzT5P7o7GJVyWAc15wEKSEaHv5msaBBJLhrI6ktInr4RwlLeANkMrPglxCiaVXDa+j9Zz1/BnLHvQJfeSn8JfmoLORx/HU+ZHCeoX1FeWUo9rWBr2gDErw5qMxbh6KK1khMj9+chyp9cx4qjqjnr1uJokmfIXHtfKQWZ6NrYRmG5RYizhODeZvWY/jSjthvU3d08Kcizu2F27VZdErwxJjgEypIkeofa+rOt1HucsPj82FJTDJembgAj382DV/OzUeROwneuCSk+fM3i0wUlXx5JkjxM05TK/M2f/Y3dFL1LZ2J4SW/YceyWYj3l9oDHN0EdCRRnKIgRUcAR7o50u9JbmmJ5DOOv9umnA9+8ODDr1OBLzSpeX0e5kKpa99CNHeeffZZq7p2yCGH2O8W3URO6oRodarz95qOIf4uUdThlPP/VJBmniLmpqJziTBP3bp166zaG8X4oqIiE6+qgwnE33vvPfs95DVmIvJwoNOUuaXoKnJwcmXRicrfW4bBOTB8j7A9TPjt8MEHH5jgxFdwOJwDRfvLL7/crpPjBAsX/q7SuRUOvD4sqOEwadIku4b8fSYMl3RYtGgRpk2bZgnZCc/ZgfvgufDakzVr1tg1/ve//13tYDb3y1ByIUTDw4FI5iX8p7lIm1pbRPRQ73IivJnzhsMbO10IoTidKSFEdFbD86S0rlINryH3XzRvnIlQlSWbBRhvqy5wJ6QhrvNOJi7V5dLquefmUIC8FQcgvUUcWrTcnFMqrvXOWD9384h8UU4J2u/Y0kacMe9b+Itz4XaVYIOnCK1KKpCGJBStnoH5xQvQduXO2CmtDWb712NTciGS42JQiAp4/S74w0jsaoS5Gmv1YcEKzH/je5TlFuGEPXrj9B38SCxbikQUYwMyEVdZjFJvIvJcKWjnWwNPZSUyfetQhjj0LZsVCOOjk6qDL8sEq07+tYjxezHXN9AenihGOZWu2CEIJ0eUk9Q89PpTSOT3RndVTGY3c1cFi1nhUNO+hRCbYXJr5kg6+uijqwgfzI/EnETRCnPa8feoIavvUQD68MMPLbSM/VGKXRSE+DvDF0P+KJLwvVPVzoEhcHShOe4fJjsPFllqg5X5KBw6AgwFf4anMZH4J598Yk4jJkbnOV566aW48MILLRzz2muvxYMPPoh77rkHhx56aLW5l5hDivcr/kZSjKKLKthRFppT6sYbb7QwxGCYYyozM9OcW/369bNlbAfbxrBHupfYZjq1+H2cddZZJpjxOLxWFMyc6nrMNcX1nNDLp556KlAFkqF7U6dOteXclnmnnOqCzL/FIh2PP/64vciVV16Js88+294zeTvdVkKIbZNYnIOS/H/d2BXvIqktInpw+es5BM6bHOPyefNlWVjekFatWmW2c3amnBwA0QrdXvqPJJoblpT2g5vgryiDN709KnJWW0gdXTUNkVeIOPuv2LgCpatmwl9WbKFnMa17wpvexkLK0vY6r9rjBYsjntTWJmhV5q+HN6Mr4nrvhbW/fYacGdPhz1mJ2IrliPVWAh36A4ktkLuqCJXZG/FzZgJmJacj3ZuAopYt0WNlFvYo6oC1nQ7Ci64/kOsuQXxajIXmlVRWoMRfEZ7eFEboHvGUlWPtf15EfGoSdjnyAIz0VeCgwq8pkaEUXvjhgc/lRpErCdmedLOxJlYWIAYVWO/JRCzKscbbHnNi+5lDygMfymLTkOgrhCc2AXmDz0ZScjLatGljeTssafzfnQI+QDBpbn2/SzrbHKGSeaj4HTWkUClENNNQ/QUm3abLhSFQFJbpbqRrhU4UOku2NixrW6F+UmTCweKxY8davzzSKCsrwy677GKC2z/NuSWEiOzf5Uhqi2h8wv17qLdTitVLXn/9dey9996WJJKWZlb8YGeKI0nRLkoJ0RyhWEEnjOOQcgSIfyJIhbpsKCaVLvsD7pRMuBNS4U5vD296O7iTWyEmowt8pYUmXHHd5KHHwpvSqloXV97v78DlciOh1+4onv0DNv74Inwl+Ujy++EvXAGXrwJwe4AFP8MXl4b4ygQUladhyDoPEFOK9WkZ6O6NxaAyF5C/AhNLVqIgvgz5MeXILiu1+DxmlQr/zGvW9V0U5JashDctCamJCeh4znFonZSMvTYtxLDCKSZI+eBCIkptL+V+LxL8xYj1l2K9pw38LjeyPO0sjI8CVQsU2mh3YWULdKjMYhwfEtjeDn1x5BlnBL5LhrT80zxOFBNNBExpbUIl4bwcT0I0LN26dbMwqOBk0eSrr74KhE0JURdMts4BCYZLRlrYDKtL3nvvvRKkhBBCNIwoxcpJ7EARql2cdyqgXHzxxfXdnRAiQqgpEXZDhQPGdRli++X+U0ecbfun8MQOdN64l2wdV1wqisa9jPypY5Ay9Ghbx53UwrbhZ+UblqNy0wrAG2dhf2V50+HbsASITQAKNsJVWbrZs1TJDnkJ/BWlrJWHFNcGxJcl4LDVsfCunQBXbBJ8fhcKEnpjkzcX3WLTsDAuB4W+cpSjEh6/C+XhnKSvZlHKX1GJvC9+R/6Xv6PFXgNw7G6tsHfuSsTllFlOqHgUwYXKwI8wJSMPKpliHYn+YpTBi3i4kFSRh1auDUjyFyE3tj369ewEn68D3Bv+QHJ5NgpiWiB10JFVRCcnbxN/n7c2j9O2ECqFEFvCymd0oTMRNEVf5vh5++237SF+9OjRumQibJiTKhJh7i2+hBBCiAYRpfiAs3TpUhvR4wge7cKs7kQHVXp6en13J4SIEJxE2PV1wlS3fnUuG+aMSj34Wqu8x8/yfn0jsLx02XR4M7vDl78evuLNSb2L5/1/XiuG6RWNf8U+4779RbnI/uE5+IuzAb8P4DYIzmdXHnAquV3lphvFIgf+Ui9cnC/OhSutPZJb+NE3bS3+Su+EtNI4bCgqQlm4SaKM6tctX7Ue2S99hfKV65By2K5ofeAgtFg9Bd0rFqMMMYhBOdwmP1XFYwLXZmGqdeU6FMako2XFRsT7SpEf0xIJsV5k+pai4/7nYOX3y1G2Ls9Gnnv371fle2ioPE4NLVQKIbaEOXeYfPr666+3RN2nnnqq5TxiXp6TTz5Zl0wIIUTt/bWUFAuP4rSxiaS2iCacU4olipnckIkXmVuKeUqYNJEdqkceecSSGkYzioMVIjzqSoJdXT4iEnBPLZhg/iALw1vwK/wMmfP7LRQvrkM/eFt1Zi1uxLTvg7JVc1A8+3tzSHlbdkTxwt/gL8zeHKZXWValXbVJSn544fLGAL4KlMe2RV78MBQlx2Py7kfgk+x5WF1WUEswXjVUkwzdV1SCrOufh6dlClqdfTCSO2cgobIcB66dhfOWbhbaapOJKuFCMeLhj01GfmwbJJRnI9ELuFv3Qouu/RCXmBxwMPE6VmxaAdff12Vrk5HXhUL2hNg+/QVWbqN7tHXr1hF7ydVPEkKIyILP4sxNyAqlwYUSmntbRBPOKXX11VcH3u+zzz72R8cKJz169FCpbyGaERaeN2+85YqqrlpfqMuGeaKyv37YhBRPWjtzQ5lMlN4O8V2HoIz5ispL4c9fj7J1i1G+aSViWnVCZeEG28YVn2xyjrdFB/hL8py6s1UNUnXgQgVQsXkDd8kmeN3r4c8dhIErMvFD2hLEujwo91fWyyvlULEuG54WKXAnxqPVZccgrkc7uL1e+Pw+xPmK0b4kN6w8VRWIMQdVUVwreFp0RJInA8mFq+DPW4KyuWvh7jIYvrLigAutdMVfqMxdU+P30BAoZE+Ibce+++6Ljz76yNzmwUmg2ZFjRb4ff/xRl18IIUSNsBpp//79IyK5eCS1RUQP9RalQuncubO9hBDbn8ZysFTkb7S8T76CjYgpLzFBJDQJdnA4YHCOoqJZP5iQUrFpJVwxcShdPQdlq2bDk5gOV1ILuIty4PKwGp3fjhPfZZCJL3FdhqJi/WI7DlxuJm0Cyku2aBsFHV/I/Gb5y4HvXGDWqPjKZSiK74uidTlo3zoZS0ty6y1I+X1+FP48DXkfjEXK4bsj5dDhiN+hPdLKS1FZUYH08iLst3Y2RmyYX+e+7NguNyq8yVif3BvdY4rRsn1PlM1eDF9hjp1LWdY8xFaW2bXjta3MXQ1PGpPGKxm5ENHIzz//bNXJQmGOqfHjNwvNDQ2rJv/73/+2ZOqs7te7d2+89NJLGDp06DY5nhBCCCFEg4pSTMLJTtS6devMZh4MQ/iEEI0bOretYV4oX+EmC7UrXTUL7k0rkTby7C0EstB2JvTZx9xVFFJi2vbevP2iifDHxAMl+Sib/wsQE4e4rjsDpQUoWfEnytbMRWzbXvCmtkHS0KNtX7bd0ilAxZYPcsQdJD9V+YVyeYDEVqgsKQUqK+DzxyGhYBZS/HNx5kw3StK74o/klijdIttT9VRszEXOK1+jdO5yJO0zGEn7DbYcV73z1+OpP9/6W/6qPVzPae/mdrpQFt8Kua13Rqe2ndCyaCGQvcISuXsYopfeznJw8bomDzsBFRuWIq7zYPgrylCRs7pKmKQQIrKZMWNG4P3s2bORlZVVJfzh66+/ttxSDU12djb22GMPc7tTlGKo4KJFi5QXVAghhBDRIUrdc889uPnmm62KRps2bao8hEZKiMczzzyDBx98EGvWrEG/fv3w2GOPYcQIPaiJpkNoZbttEbJVE04SczqXmJi8fOMyczkxPK+mdrrjU5E77hXkT/nInEDxvUciJrM7ytYvRuGMr+EqLUSFJTH3ASUFKFn4K1DOynmAz5+LkvwNiO00ABnH342C6Z/BV1oIVNbtaaqaH8oFxKfC7/bC42PVUB/iylcjzr8S7vJyJBcn4c4Ni5CdlIHreu2HNXCjvBbfVMXGPKy77VW4E+PQ6poTEL9jV1veojgXVyz8PiwxiriDp55YeOMSkVmyDIkrl6Kyy2DEVJbCxYqDblfghFyemMD37SvMDgh/rHDIa7Phg5saRawUQoTPoEGDrN/EF0P4QklISMCTTz7Z4Jf0/vvvR6dOnfDKK68ElnXtuvn3q7kxffp0zJ8/HyeeeCKiERYe2nnnnS0XWU1/Y7/99pv9LdUGv//PP//cQm4amieeeMIS+N9www3W3rPOOgvTpk1Dr169LP1HdX2M/fffH3/++WfgvOgapJDKUFbmJhFCbEkkJRaPpLaIJipKsRrMyy+/bDeVSOTdd9/FVVddZcIUb2DPP/88DjnkEBuFVJihaApUV9kuNHRuW+KE4ZXPGwdvq05ATCwSdxgJb0qrGttZsXE5fMW58Psq7UX3kzclExX56+HyVZqQ4i8rMrGFuaN8RTmAjxX0/v98KnLWoGjOj/CVFqGC7iF/PZJJkYSW8LUbAHfWzEBAn9tf8Hdj2evNgaskDy3KC3FIcTa+b9kd2eXFyKsoRUWQvOUrKIYrKR7eVqlIO3FvJOzcx4Qph5em/w+pFVuGFVZHFT+WywM33WAeP+DxAWVFKM9ZC1dGF3jT2qKyJB/+8mK4E1KROODAasMkc8eObjSxUghRP5Ys2fy7zarGdKBnZmYGPouNjTUH07ZIEvvpp5/ioIMOwgknnICxY8eaG+uSSy7B+edX/1tRWlpqr+BcV+HipyO1OBfuhDQLy45EUYpiTLSKUuGc3/aCBY+83qrfMUNDWSDpr7/+snnml7nrrrss18xtt91W7X6eeuopE8koSjnEx8fjtNNOs33dfvvt2/hMhIg++H+rPr/NzaUtInpw13sDt9vEnkiF4YPnnnsuzjvvPPTt29dcUhwRfPbZZxu7aUI0qCjEUC0nZIvz28upyNAxikicMhdUfNehgaTm1bYzb50lLq8szIafwkppAfylxZtzTZWXwtOyE2IyugBu72bRissrK/7ey9/ZoJh8PG891n14G3J/eg4oK7X1a2OLKnpl+fDmrYHfm/D3h9XV2fPBVbQRB+SsxKEZPbFfq264qNPOeLTX/hiW3A6Vk+Yh68YXUDx5rq2dNHKnKoLUISun1ilIuYNecMcCLu/msEJPHFBeBF9SJpDWzrJeIXc1KnLXImmnQ5G+17lI6LsP0kaeg7Q9zqx238FiJaeOWCmEiDy6dOliD99Mg0C3C+edV7t27bZZ1aLFixdbn4hOlW+++QYXXXSRVVR+/fXXq13/3nvvNXeK82KfKhzKshZg/Tv/wro3Lrcp58OBQsZJJ52EHXfc0QroHHjggbacaSM4f/bZZ1vuK16zYOHigQceMHf8gAEDTMCg8EEoYpx66qk44ogjbJ90pW3atMlSUNx66634/vvvzVHE60BOP/102/fAgQNx+OGH23rO8bkeBTy2g8cKdvrwWu65557WtuHDh2PcuHFhte26666rIsg4g76///677YvHpIOptn4sz4Pr9uzZE19++WWV+3BBwebBF+Yn4/F5Xpdffrn9nc2cyUGazXz44YfYfffd0a1bNxOOHBhWStFu2LBhti2P5cC/37vvvttCQUeNGrVFuz744AO7JsnJLFQCtGzZ0uaTkpKqPY8FCxbgnXfeMVdVKKeccgpGjx5d4zUQojlDUZi/QZw2NpHUFtGERSlW33v66acRiTBR6NSpUwMdGAfO//rrr43WLiEaGopAzB3k8sbatDpRaFvBULHSZX8gloJTUTaK/vrWllGkcuD7nJ9fROmq2ebwKV+3cHOoX24WKnOyzN2TtNNhcCemo2LtfLjiUxHbuofN15QnyhKb569FZfYac1VtdlLVzBYSXWUZfBvmwZW3gjO1bpuauxIHZ/TAqPY74ZDMnsis8KLgxS+Q9dwYHLjnXvjghCvx4Q5H4tPxD2PM36/vxz+Ma5f8XOM+A0KUgzceYFXBdn2Atn3gorCY1AruxDT44lsAMfGb3WMluXyysO8484R7zPlUXUheY4uVQoit47XXXsMXX3wRmL/++ustvxMFgmXLljX4ZaUINmTIEEvHMHjwYFx44YXmkqpJ9LjxxhtNRHFeK1bwN7Ruh1TOD8+YK9YVm2hTznN5XTCXFvNe0eFO0YkiRXAeLoof7OvxOlFsIsyNxXDECRMmmCuHosd//vOfwHYTJ06068x90oFGFz2nd955p4WK0VH03HPP2boczKTYxGNRQOE6DrNmzcI555xj7aKwc9NNNwWEvjvuuMMEIbbtzTffNBGlvLy8zrbVBMXAa6+91tpG8ejkk0+udr2NGzeaIMXjUtQKrpLtQKcb28MoAp4Xhbnly5dXWScnJ8f6ynTtMQUGk+ETXu/LLrvMlv/xxx82/fjjjwPbcT8Mq+M5h0Ihj3/H4f5d8u+QzxgxMTFbfE6hlg5CVv0WQlSFIbIHH3ywTRubSGqLiB7q7aXmiM5hhx2GHj162IhT6I2DZY0bC8aeMzkoc10Fw/ngBKINZUsXorEIDtnaXqKD47ipGpKXxw9QNG/ziHDaXudZe6rkvFo8xRxSVjGPeaNiEky0yvvlVQvrgCcGpStnwJOQCldyhs37WVWvsgZxqh718RwRqL4V9dzrNlfK47kwATA7yuwwMxcLw17+viCIc8UC/rKw2+HggwtuXs7OQ8196k1rg7LsNfB22gmV7li4c1bC1boXXJXlSGzb3UTA/LikOkPxHHGS39H2FiuFEFsHxSFHEGL+HwoLFEYYVkaBoaH7VXy4Z/8tGDrL6ZSpjri4OHvVB/62V+athbdFB3iSWtgyznO5J7lqqHcodCFReKAjaa+99sKhhx4a+IxOoL333tve071zwQUXYPXq1eZ2ogOJYh65+OKLq4g4TONAlw7ZbbfdAuFk1UFx5Y033rC+IV1bbdu2DXzGfKp0UTn7eeihhwJC2sKFCzFy5Mgq+6KAV1fbaoLuIzqWuF+KSBTIqoMi11FHHRVoE+9ZocybN8/ySjn5VY855pgtEtuzjYRhpAwpZXgp16HgtHbt2sB6dF4FC0N0rtXUD1m5cqW5zcKB15LXj84w5p6qDn4X3GefPn3C2qcQQogmKkpxZOinn36ym2WrVq0ichQ+tE21PbhzJIqjW0JEIw35/6+m/yehFfQ8qa1RuvQPlG/cPMoa06oL3PFpKJjy8WZnVP4GlGXNgyexBdxpHeDP2xz6EKC8GD7mFikvtkp1LlbwrChFJQWupJaAr26RJxx8W2MFdfCXoaK8HN7YWMtFRyGeo8UZGRn/v47LhYohp8I79dXw9slQPTs3tsoPeGPMQeD2lyMuNgbubkNRUVGJ2MJ1SOzaH5V0kLk9FopX4XaHlTesMcRKIcQ/g8IFxRYyZswYHH/88Sa2MFWCI8A0JNwvRYpgmOyb4VwNBXNIeVLbmEOKVGSvQmy7Pra8LiiI0NFEMYSCDh1RteVG4m9ddb95wfPMSeTAsMiawkp++eUXEwXpGKI4w/xbwU6pmvbD49MZUF0IZG1tYw4mDqY6MKG3A/OjHnnkkfjhhx/MWcUQPjqdQgltU/D+amtDXfvhuXEwhttNnjy5WvcScULzqiMxMdGEvXBguCNdXLyGPDbdcgwPZFL0Fi1aBK5PXUnbhRBCRB/1fmbjzYKjabQjv/rqq2ZJDn41Jnxg5I001BXFfACh7ql/YksXoilRkb/RQu1YsY3T4DA84rie/BVlgeTZCTuMgDu5lSXddqdkonTZVFQW5ViOqeIF41GxaRWKF09E7vjXQhKS/50jyle5uboeE5yX5JkoZQF35cXwprQGYjgq/89Ela0RpNgKdp9/WeXHUUcfjTlz5thDA0MoqghSf1M5bBT8McnVZqfCFqF6GQCdYMmZcCe2AhJbIiYxFXGxsYht3xcpLVsjPnsh4mM9KF/8G3wFG7c6FE+ClBDRAx/qGYJFvv32Wwsnc0SCcB/o6wPdV8xXRIcWXThvvfUWXnjhBVx66aUNdgwmNU/f7xITohiGzCnnw0l2TicMf8MoyNA9Q0HF6ZuxvU6uJuYrYpJ2Or8OOOAAC/PLz8+3z3g+znWsKyGvk9+JUAjhMrqqmBKCYX7hwDQRdEsF52himBuprW2MOmCoIMUfhroEu9UoHFKgo1OXohS/s62FzqLCwkILISSffPKJheuFU0GL7qr77rsvsIzONH5H4cAcVOGG29EZyFBAuqQoDlKI4ntHkKLYxjDJbVEhUIhoh657OmA5bWwiqS2iCTuleKPmTTQSYaw54+q/++47syY7cN6xNjeELV2IpoDjgKLDiYJSXJfBqAip2FZdpT8mLm9x/N1IHnosCqZ+hNK1i+BOaomYjK4oz5oHfyWr6TGxqgso2gTEJmzOE+ULGpn+2yW1Rc6ovx9mvC27omL1/3fu/x+KMg2fuPuTNv3xZK/94SutRN77P6Nw7J+I3zEG966ZjPaulRiW3gH7pHdBijcucJMt9JXj+5zVmD7kdLgK12PnTUtxwLpZWyY698TCk9kDnvR2KPcmwx+XCiz7DXEZHZHUqr0Jffm/vAZPYjq8md0D15lJ3+M67KhQPCGaOBQtWJyF+Z3oWKIz08lfRKdIQ7PLLrtYTiAOytEFxMTWDBd0wrcaiti2vZB58oP1rr7H0Domuub9h2LNGWecYeKGk2icAs8111xjn1NQc8LzuB3D1yhocf3qXEWh7LfffiZ8MWSQ29Il9b///c9EnI4dO1o+JCbsrQsmjed2/B4pJFLQYt4uhgLW1rbjjjvOxDU+wPG75vk5QuSTTz5pkQns23LA9eGHH8bWwn4urxWTudNpxGgHDtYycX1d8Bx4vZkk3RFRmX+L16cu6PpjDi7HbcaQSD5DcEoxkPvg98uohbqgUMUE8uG0WYjmBv9f8p4RCURSW0T04PLXszQT3VAcDeKUttxI491337UbHG+Y7ABwROrFF1+0/xzhWNOZU4o3PN4sOVomRFOFrijmgipdORuVuVnwJKbB27IT4jr0Q+apDwfcNlzPyQ9Fxw5zFTF3lK8wOxDWV7FpJfzlpagozEbJwgmWP8odl7w5N5SXCbuLgTIKVXX83DCcLTkDvtw1QGXticxDqS5vlDtkOY8e6jVaEZ+Gs3c5D+Ur1mHjM2Pgyy1C6gl7IWnfITU6juLhRqInFpXwwV1ZhsTiHKSWFeLgrJk4NGvG/x+D+aESmMS9OzwDDkeZ3wNX7ipU5qyGFz54K4pQvn4hYjJ7wse8W/AjodcegeusUDwhIpeG6i/QsXLzzTebG4j5hhgGRm677TYTJJxk2pFCY/WTKEoxr2lwxTsRPnRq0flEKHYxJJ1OpG3tZmBOMKbJoBj6T2AeLop+4TjghGhuUAhnNNOZZ55p9w21RURbn6HeTqknnnjCkihyhIWjOqEx5qzM0ZiwjDBt8ByVWbNmjdl8WQ2lIXMlCBHtUIu2/E+561CZs8ZGsn2+CvgrSi3pdrAYw2TZ5phaPdeEp7yJ7yH/93dRyW2KmcAc8BXlwO/2mLjCEXGG+lGM8XvjNiczryjeHMIWGw8UZdfcsIryzWJUGBWagvHV4KFyBKk8bzzGZ/TGmvg0tCvJxYgN85HvjcNz3Ubi95abnZ/u1CTEdMhE2tV7w9u6heWMqokS+FBSWQIvXEhirihvHMrLS/FLRi+siU9Hu9I8jMjPQqonBvDGwhOfhMqKCsQNPhoxqRkoz9uA8plfwjdzjF2zxB1GoCI3C2Xrl1ii9+Ak5QrFE6Jpw2TSdOiEonyXoiFhaOCjjz5q7jM6p95+++3tEl7D54Z/WjGPuaSYX02ClBA1/x9hqC8LQDS2KBVJbRFN2ClVVyeJI3vRjJxSormw5vkzUbxgAiqL8+G3KnixiMnogvgdRqDtqGdMDAlOcl6+cQXK1syDv6wQ5fmbgNI8uGIS4Ge4GsUkEpMAb6tO8BflopLOn7IiE1kozLDyXlihdy5vIJSvLsKtqvdh+6H4ufUOm6vewY+9183D7NR2+D4/CTkf/IKWFx8JT0qI8zOMzjplqwR44HG7kFhZhhYlBehXmofstPbol9ELR835HLE5ixDTogMqvInwdRmO+F3PsCSurJjknflxtS602oQoJTEXomn1F5wcSTURWtGtsVE/SQghIotI+l2OpLaIJuqUcqqMMD68U6dO/7yVQogGoz5iBdf1JGcgpnVP+Fb+Bb/bC3d8EnzlRfCXFAT24yQ5p2hStuJPVBTlwkWRqTgHqCyDv7zsb4uSn8mgLFdUxdqFAHOHuL2b80jxxff83MSmOvJChQhSvlrC8cI6VwBTWnZBoScOaeVFyI1JxIS0zpg4dhk2fT0VMV3awF9SBoSKUmFS6QJi4UabtPbo3r4FWnoS4C8vwrr1C+DaMA/uxBRUFm6CJ9EHT8HmstoUpOiOcP3thqLo57ijavoOQ6sgcl1W2xNCRDfVVdgL/h2orpqaEEIIIURToV6iFKtQMSEk49CFEJHB1ogVfOCJ7dAXlQUbUMkqb3DBFZ9sglN51nzLI5U05JgqSc49ae1QtmH53+F1Tr4n3//rSxST7L17c3U9f1DVqNLNVYcMClS2ad05o0IFqPoKUlueN5C/JhvT3hiLkjXZSDlqD6QcMhwuz9aFMMS43OiblIGM5FQkxcWjsKgIrko/citKMLAkD+6U1nBVFttl8eVlIW3YCUhv3/7/HziTW4adNypYICwOSUgvhIheWPEtmPLyckybNg233HIL7r777kZrlxBCiOiAxRBYBZTTxiaS2iKih3rnlGKlEiabPOuss7ZNi4QQYUMxY2vFCidnUUXBRktMzkTbFTmr4UltbaJU/sT3rIoec0J5UtuisjAbbk8MfJV0R9EJ5fpbfAodxfdvWVkvmFrEqNpEp+qSlCOM9fkaumkpfm7dB6UuL0rLS+BzuZB50+mI7dwGWwP3yVttiicObdJbIM0TB195BfrEt0RWWQH6JWVij8SWQHwa3EhAZe4axHUejNRdjq9WfKpLkKquCiLnFconRPRTXTUxVuRj3p+rr74aU6dObZR2CSGEiA7owA+nUmhza4towqIUS9uyjPDMmTMxdOhQ+8ML5sgjj2zI9gkhanFHla1bjNIVMxCb2a3eYgXdVBSvkocei3VvXoWimd9sTlJeVoSK4nxUxmwwcYlV9OiecsXEIaZ9X5QunwZUlAGVjkUqNBzPHyIwbc7jVBPhup/CFaWcpOZZ8WloW5KLQTnLsG5jCeb/+Cs6nDQS6NEJrW8+A/5ay5NX75zy/N3eWJcbLpcbfjcwP3sdEtxeHJTZEwe06GpJZC15bEpr+ONiEe8q/MfhdvwuuQ9HdHTyTykJuhBNl8zMTMybN6+xmyGEECLCKS0txb333mvP6BzQUFtEk090XlulDkuMHOW5D5ScTUQDdDIF3FELJphck9Br94BYUZ+wror8jch6/gyUrp5juaGYuNzvq4QnqaVV0SM+vx/exHRzRZVzvWCRyXJF+cxt5bimthSa3HDDt1X5oXx/H80NF/zwbyEXBUtj5Iu2A/FXWkeklxdikycRc35dgmnfzkV8iyR0vOIoFLZtAz/bWivuanWpgDsqLhkV8KMcfiS43Ej1xuOGXiMQ73MFfif5e5iQkIBu3bo1SIUj5ZQSomn2F2bMmFFlnt0yVg++7777LJRvwgT+xkcO6icJIURkEUm/y5HUFtFEE50TugCEEI1HaChXXJehqFi/2IQkKjSlq2abaBXqzKnJPVUw9SNU5G+Ar7wE/tICE5i4byZgYs4pq55XWojynDXOnkIaVLlZmHJ7gEpHQqpKuTsOMb7ircwP5YIPXvhQYT9YVT1ZLhQhHl744TWJyI8V8S2RUl4M/9ps/PDFNKxeloN+u3ZF8jH7YWNKer0Fqc0R8S6kemKxY2IG3B43CivLkVVeiIyYJJQynBF+jN+4FLuldkCKN85EKObgS0lJabCS246zTSF7QjQtBg0aZL/NoWOEu+66K15++WU0Rz766CPLp8WBTjoA2rdvj++++85+T5kYfvny5da5ZQGezp0745VXXkGbNluGY3Pd6667DocffvgWn916663o168fTjrppFrbcvvtt6OgoMByqjY0q1evxtFHH43ff/8dZWVlOPnkkzF79mwkJiaibdu2eO6559C1a1dbd/fdd0dRUZG953nPmjULf/75JwYOHIhrr70WO++8M0455ZQGb6MQQgixram3KCWEaFxCQ7n8JXlI3vkYe6ApWfALXG5PldxStTlsuE3ZqjmoLM61ynkUllzeRMR3H4byDUvgLs6Hr6Sg2qp4QS0CEtIsEXpl9nL4SgqrSE585/GVoAyxcKESHlQGXFKOXBP83iGQP92EoUoUIBkJKEIMKm0PlKhWe9pjdUxHdC5fbuut8HSCqzwRa1MSsX7NBuTklmHk+SNR0q8/NsYmotgbflaqFt4EeNxuxHk86B6XjjPbDUBaXALGb1yGleUFaONugayCHPs+OiSlYWbBekvqeNoOw83dQPs0K+w1NArZE6JpsWTJkirzFF4YuhcfH4/mSFZWFi666CJMnjwZXbp0sWV//PFHld++J554IiA0XXLJJSYYPfjgg/U6zp133onthTOgGzpIcdddd+Gyyy4LLL/gggssTQbP9amnnrL5b7/91j779ddfA9t98MEHuOOOO0yQIv/+978xYsQIE9gaaiBECCGEiGhRauzYsdYBmDNnjt04+/bti3/96192QxRCbHsoLHH0ePWcychzpyGmsiO6rP0R3moSYdeUCJ2f+QqzUbTwN1RuXA6fywMfsz/FJSGpZWek9N0HeT88DV9ZoYX1VYfPFYPitO7wJKchJTkFbo8HBZuyEFO0zj4vQ4wF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7RM3WVtuuaWrWbN03BBydZ+k3261ic4TfXd0PdE1trrRb0/l2iTdeyVFSkWgsbbaaitXLHCiSJRS2+ic0fdJ1xpdg/ONYvh9KqUIqXy5TyqG8ybbqE3UJjpP9N3R9UTX2Xz97UnnXql0Xu0JIYQQQgghhBBCiLxBopQQQgghhBBCCCGEqHYkShUpdevWdYMHD/ZDobbROaPvk641ugbnC/p9Ejpv9F3S9UXX3Fyi3yG1ic6V/Pr+yOhcCCGEEEIIIYQQQlQ7ipQSQgghhBBCCCGEENWORCkhhBBCCCGEEEIIUe1IlBJCCCGEEEIIIYQQ1Y5EqSLkb3/7m/vd737n6tev7xo2bJhwmRo1aqz3uffee12pt8vMmTPd4Ycf7jbaaCO3+eabu/POO8+tWrXKlSJt2rRZ7xy57LLLXKkxbNgw17ZtW7fhhhu63Xbbzb377ruu1BkyZMh650azZs1cKfLOO+/4a8aWW27p2+G5554rMz8Wi/n2Yn69evVc9+7d3aeffupKgfLapm/fvuudR127ds1ZfUX+ot/v8vnqq69c7969/b3LJpts4vbaay/31ltvuVJn9OjRrkuXLv76S9scffTRua5S3vDrr7+6zp07+2vvlClTXKny/fffu379+vl7Pc6TbbbZxps4l9r9v+53/48bbrjB7bHHHq5BgwauSZMm7sgjj3RffvllDo9OfrYR144LLrggK+VJlCpCuIged9xx7qyzzkq53MMPP+zmzJkT/5x66qmulNtl7dq1rlevXu6XX35x7733nhsxYoR79tln3cCBA12pcs0115Q5R6644gpXSjz99NP+Ynv55Ze7yZMnu3322ccdcsghXrwsdXbYYYcy58bUqVNdKcL1Yuedd3Z33XVXwvk33XSTu/XWW/38iRMnevHugAMOcMuWLXOl3jZw8MEHlzmPXnrppWqtoygM9PtdPty/rFmzxr355ptu0qRJXmw47LDD3Ny5c12pwj3cySef7P70pz+5jz/+2I0bN8716dMn19XKGy699FL/0qDU+eKLL9y6devcfffd518a3Xbbbf5F/V//+ldXKuh+tyxvv/22O+ecc9wHH3zgXnvtNX9tPfDAA/19jXD+fvb+++93O+20U/aaIyaKlocffji26aabJpzHoR81alSsFEnWLi+99FKsZs2asdmzZ8enPfXUU7G6devGlixZEis1WrduHbvttttipcyee+4Z69+/f5lpHTt2jF122WWxUmbw4MGxnXfeOdfVyDui19V169bFmjVrFvv73/8en7Zy5Up//bn33ntjpUSi35xTTz011rt375zVSRQe+v1OzIIFC/x37J133olPW7p0qZ/2+uuvx0qR1atXx1q0aBF78MEHc12VvIR7Xu5nPv30U3+eTJ48OddVyituuummWNu2bWOlgu53UzN//nz/PXn77bdjpc6yZcti7du3j7322mux/fbbL3b++ednpVxFSpUw5557rg9lJjyRNwK8JShlxo8f7zp16lTmrdFBBx3kw5t561iK3Hjjja5x48b+jSvpE6UUysy+ctx5MxLC+Pvvv+9Kna+//tp/Vwh3P/HEE913332X6yrlHdOnT/dRCuE5VLduXbfffvvpHPofY8eO9aHx2267rTvjjDPc/Pnzc3W4RAFT6r/f/E5vt9127rHHHvNv8nmrT9RH06ZNfdp5KfLRRx+52bNnu5o1a7pddtnFNW/e3Ec6l0r6dCrmzZvnr7ePP/64t7QQ67NkyRK32WablUTT6H43vfMBSuWcSAURZETm7r///i6b1M5qaaJguPbaa13Pnj197vQbb7zhU9R++umnkkvPCuHhkRu4kEaNGrk6deqUZPj7+eef73bddVffBh9++KEbNGiQf8h+8MEHXSnA94GUzug5wXgpng8h+HPw8IOQwM3tdddd5/3auNnn4Uj8hp0nic6hGTNmlHwz8YBISnXr1q39teXKK690v//9772IgHgnRLqU+u83vh6kmOAphQcKQgzt8fLLLyf10Cx27EUJnn6kUOOTecstt/iXAvhvlerDJYGr+Pn179/f7b777t5PSZTl22+/dXfeeac/X0oB3e+W/5256KKL3N577+1ffpQyI0aM8II/6XvZRpFSBWwsHP385z//Sbs8xKdu3br5CBgEKbyDhg4d6kq9XVg+0cUo0fRCJJP2uvDCC/3NG/nCp59+uo+me+ihh9zChQtdKRE99sV0PlRGTDjmmGPcjjvu6N+UYCQLjz76aK6rlpfoHErMCSec4N+2cZOHIfqYMWP8w6KdT6K40e939tqI36Wzzz7bRx3SGQcvkhCo8JTCq62YSLdNLPofT0h+r4gYw0uV+f/6179csZFuuyC2LF261L9oLHYqco358ccfvdchL0y49y0ldK+SPLPok08+cU899ZQrZWbNmuUDFp544gnf+VO2UaRUAX0hSJFJBW+BKgo9HvEjRdRD9G1jqbQLBsQTJkwoM23RokVu9erVBdUmVdVe1ivWN998UxLRMKS21qpVa7237KQXFcv5kC3orRKBipQ+8X9Yj4ScQ6SOGDqHEkMbETWl86g00O939toIc/MXX3zR37PQ8571pEX0FC8Liqnn3HTbxDqT2H777ePTicDceuuti7KzknTbhchmzJuj0ahETZ100klF9XIp02sMglSPHj38S3tMnEsF3e8mZ8CAAe7f//637014q622cqXMpEmT/P1rmBJORgltQ4c2pMvz3FRRJEoV0AWDT1VBz2KonoUW5p3NduFHCN8k3iraA+Srr77qf7iLxZOhMu3FOQLhw3UxQ9oHx52b+qOOOio+3VIkxP/BD9Hnn3/ueycU/wd+WwhTnDN4mph3A7264NcmykIUJm/iSuUaU+ro9zt7bbR8+XI/JG0vhPFi8wtNt034/eb+jW7cSbsBXjKSrob4XWyk2y533HGHF6ZCIQb/NXpfIzW/VK8x+I8hSFlEXfS7VMzofnd9iD5FkBo1apT3vuR+rtTp2bPnej1t07Npx44d3V/+8pdKCVIgUaoI4Q3Qf//7Xz9EwZwyZYqf3q5dO7fxxhu7F154wb+5R4TBU+qtt97y4c1nnnlmUft4lNcumBHzRo3ug0llZNmLL77Ym0Ham8dSMo3lTRo/0JtuuqnPHSad74gjjnCtWrVypQI55JwPvEG0N2ecP3gxlDJ8L0i34lzgrQk3uERannrqqa7U+Pnnn330oIE3EtcW/EponwsuuMBdf/31rn379v7D/xjLlkK35Knahg+pFaTVIELxoEj32zxAhCKwEKDf79Tw+4SHFtfgq666yt/bPfDAA/47R4psKcJ9G7/VgwcPdi1btvRClNlUkJpVqkTv4bj/hW222aZkI0EQ5rp37+7b5uabb3YLFixYL+K52NH97vpm3sOHD3fPP/+89+mzrAmeibi+liINGjRYz1OLTAmyZ7LitZWVPvxEXkE32xza6Oett97y88eMGRPr3LlzbOONN47Vr18/1qlTp9jtt9/uu88t5XaBGTNmxHr16hWrV69ebLPNNoude+65vgv3UmPSpEmxLl26+K7rN9xww1iHDh1igwcPjv3yyy+xUuPuu++OtW7dOlanTp3Yrrvuqu5gY7HYCSecEGvevHlsgw02iG255Zaxo48+2ncrXYpw/Uh0XeF6A+vWrfPfnWbNmsXq1q0b23fffWNTp06NlXrbLF++PHbggQfGtthiC38etWrVyk+fOXNmrqst8hD9fpfPxIkT/XeKe5cGDRrEunbtGnvppZdipcyqVatiAwcOjDVp0sS3yf777x+bNm1arquVV0yfPt1flydPnhwrVR5++OGEv1Wl9pis+93/I9n5wLki/o/99tsvdv7558eyQQ3+VF7aEkIIIYQQQgghhBAifUonYVYIIYQQQgghhBBC5A0SpYQQQgghhBBCCCFEtSNRSgghhBBCCCGEEEJUOxKlhBBCCCGEEEIIIUS1I1FKCCGEEEIIIYQQQlQ7EqWEEEIIIYQQQgghRLUjUUoIIYQQQgghhBBCVDsSpYQQQgghhBBCCCFEtSNRSgghSpDvv//e1ahRw02ZMiXpMm3atHG33357tdZLCCGEEKK6GDt2rL8fWrx4sRpdiBwhUUqIHDJ//nz35z//2bVq1crVrVvXNWvWzB100EFu/Pjx1V4XCRCiOnjggQfcPvvs4xo1auQ/+++/v/vwww/LLNO3b19/gxj9fPPNN/Fl5s6d6wYMGOC23npr/91p2bKlO/zww90bb7yhAymEEMKj+6ziYfLkye6www5zTZo0cRtuuKG/bz3hhBPcTz/9VOZlm33q1Knj2rVr56677joXi8Wqta7//e9//T1Khw4dXP369f19/nnnneeWLFlSZrlE9zp77713mWXeeustd+ihh7rGjRv7srbffns3cOBAN3v27GrdJyGqktpVWroQIiXHHHOMW716tXv00Uf9w/W8efP8QzU/ZkKsWrXK31QV2xvJP/zhD+53v/udv6m86aab3IEHHug+/fRT16JFi/hyBx98sHv44YfLrLvFFlvEbzz32msv17BhQ7/+Tjvt5L9Hr7zyijvnnHPcF198Ue37JYQQIv/QfVbxiIu8xOLlE7/1/P5Pnz7d/fvf/3bLly8vs+zrr7/udthhB/frr7+69957z51++umuefPmrl+/ftVW3x9//NF/br75Zi8izZgxw/Xv399Pe+aZZ8osy70O9zxGeN933333ubPPPtudeuqp7tlnn/VC3MyZM91jjz3mbrnlFnfrrbdW2z4JUaXEhBA5YdGiRby2iY0dOzblciwzbNiw2MEHHxzbcMMNY23atIn985//LLPMJ598EuvRo4efv9lmm8XOOOOM2LJly+LzTz311Fjv3r1jQ4cOjTVr1swvc/bZZ8dWrVrl5++3335+O+EHfvrpp9iJJ54Ya9GiRaxevXqxTp06xYYPH15m26w7YMCA2CWXXBJr1KhRrGnTprHBgweXWWbx4sW+TltssUWsQYMGvq5Tpkwpswz7uPXWW8c22GCD2Lbbbht77LHH4vOmT5/u6zR58uT12u+tt97y4//9739jffr0iW2++ea+Hdq1axf7xz/+kbBN77333tiWW24ZW7t2bZnphx9+eOyUU07x/1O/7t27xzbeeGNf51133TU2ceLElMfpgQceiB155JG+rdj+888/X2YZjvUee+wRq1Onjj8Of/nLX2KrV68u05bnnHNO7MILL4w1btw4tu+++/r9o+yXX3451rlzZ79vtN+8efNiL730Uqxjx46+fhynX375JV7WmDFjYnvttVds00039ce7V69esW+++SZlm0Zp3bp17LbbbouPz5gxI3bEEUfENtpoI7/N4447LjZ37twy61x77bX+ONNu/fr18/u48847J93GmjVrfFmPPvroeudrMg455BB/Tv7888/rzeO8EEIIIXSfVTz3WaNGjYrVrl27zD1TlGT3Nb///e/9PW8y7D4rvH945plnYttvv72/X+Ne6Oabby6zzo8//hg79NBD4/flTz755Hr3TFG4d6e8cB/YLvuWiFmzZvnlL7jggoTzdb8jigml7wmRIzbeeGP/ee655/zbnFRceeWV/m3fxx9/7P74xz/6SJPPP//cz+MNEW9YSIWaOHGi+9e//uXfEp177rnrhf9+++23fkhk1iOPPOI/MHLkSLfVVlu5a665xs2ZM8d/YOXKlW633XZzL774ops2bZo788wz3cknn+wmTJhQpmzK22ijjfx0Ilco57XXXvPz+M3t1auXT7d66aWX3KRJk9yuu+7qevbsGY8IGzVqlDv//PN9ODLbIaXxT3/6k69rutBGn332mRszZoxvm3vuucdtvvnmCZc97rjjfLh3WP6iRYv827eTTjrJjzOkTWhT6nzZZZe5DTbYIGUdrr76anf88ce7Tz75xIdaU4btI2HWTNtjjz38caR+Dz30kA8rj7Zl7dq13bhx4/wbMmPIkCHurrvucu+//76bNWuW3w5+T8OHD3ejR4/27X3nnXfGl//ll1/cRRdd5OtP9F3NmjXdUUcd5datW+cqAsfxyCOP9Pvz9ttv++1xPhE6bzz55JPub3/7m7vxxht9mxGuzn6mgvOXKKfNNtssrXqw/ZdfftlHRHHOReHtqRBCCKH7rOK5z8LeYs2aNX4/MknF+89//uM++ugj16VLl7TXoS7cY5144olu6tSp/v6Lfbd7ZjjllFN81BPR30Qw3X///T6aKxWk7m2yySb+Hi8duJ8nYv7SSy9NOF/3O6KoyLUqJkQpw5sYoot40/K73/0uNmjQoNjHH39cZhm+pv379y8zrUuXLrGzzjrL/3///ff7MsKokdGjR8dq1qwZj2Ih8oQ3OESlGES5nHDCCfHx8t7wGLwZGjhwYJnonr333rvMMkQDESEDb7zxRmyTTTaJrVy5sswy22yzTey+++7z/7PvRFKFUD+2le4bPN6+/elPf4qlCxE/p512WnycuhC9ZG3EW7tHHnkk7fKoyxVXXBEf53jUqFHDRyzBX//611iHDh1i69atiy9z9913+zeE9iaRtiQaKtEbvNdffz0+7YYbbvDTvv322/i0P//5z7GDDjooaf3mz5/v15k6dWqFIqVeffXVWK1atWIzZ86Mz//00099GR9++GH8vCTSK4RorVSRUry95FxYsWJFfBrnK9siIss+xx57rJ83YcIEv82RI0cmLVMIIYQA3WcVz30W91FESxH9TfbATTfdVCZa2/aBaHXuG4gIY/zMM89MWW40UoposAMOOKDMMmQDEDkFn3/+uV8+jOr6+uuv/bRk99FkHrRq1Sp2+eWXl5nOOjwDhPc7FjnFfT73z0KUAoqUEiKHEP3EmxZy4jE4540LUUTh2xjo1q3beuMWKcVw5513LhM1gt8OETFffvllfBr59bVq1YqPk19f3ludtWvX+sgXPHswWOSt46uvvurz2UOYHxKWzRunn3/+Ob6+ffACINLG9oE6hzBu+5gOZ511lhsxYoTr3Lmzf6tERFEqeEPH2y2LUiPKh7di1kZEGeFDgIfB3//+93hdUxG2A8ejQYMG8XZgXzhumFiG+0jb/PDDD/Fpu+++e7llN23a1Jtd4kMWTguPJ/Xt06ePX4Y3c23btvXTo8cuXag/ZuJ8DHwSeFNnx4nzbc899yyzXnQ8hKi6p556ykfq4S8V0qNHD98zoH3uuOMOP93ekIbtKIQQQiRC91nFc5/F/ShR9/fee6+//2DYsWNHH80U8vTTT/v7BqLS+f/555/3UVjpkqytvv76a39fzL0O0U7crxsYqpOxkIilS5f6jAHqPHjw4PXm33bbbWXudw444ID4/Y7udUSpIFFKiBzDwzg/QFdddZX/gafnsUQ/WlHshyrVj1Y4PRoSzbzyUrkwUeTHkpuPN9980/9YIp4RThySqmyGiFThDy4fftQvueSShHWN7hepZzbNIOUr5JBDDvFGkhdccIEX+kgPvPjii5PuG2aZ1I3UN9Lh3n33XZ8aaRCujfk2NxLsOzcThI2nIlU7JDpOiQSWRClp0bJZvrzjyf4tXLjQ93ZHWqWlXEaPXbokO8+i05PtYxTMP6+//novckZFTWsHbvLswzkE7du399vI5EZaCCFE6aL7rOK5z+IFJ6mB3J9yH7Dlllv6+4kQXp5x37Dddtv5NDzqy/JYUqRDqvu16P/JljGWLVvmLTZ4Gcu+JUpPJDUxvN+x+8Btt93Wp/yZpYYQxYxEKSHyDH6U8QMK+eCDD9Yb5+2QLY/IE66DHxE3GPygpQu9ffAGKIQbiN69e/ubCKKxiLrhTVEm8CaJN1u8VQp/dPmYFwE3DvSQEoJAx/Sw17Xwh5l9jsJyiHpPPPGE91sixz8Z9erVc0cffbR/c0e0Dm2Ff1YI0y688EIvnLBstDe4TOA4sU/hTQvjRFOFvc5lA8QobtauuOIKf9NIO+LlUBmoP1FW3FgaeEtww2THia6PP/zww/X8HKIMHTrUXXvttd4bKllkWDLwnkIYvfvuu9f7nsDixYszKk8IIURpofus4rjP4r51m222SXgvEEJkFn5U6b6U4/xIdE9KXSmL+2/Kmzx5cnz+N998s979BxFS9C5MPcmIiEaEl8exxx7r1yWqPBG63xHFRHpOa0KIrINwwNue0047zUeKIE7wAM+PD0JQ1OyQh/e9997b/7jz4I9JtoVHE1lFd7G8dVqwYIEbMGCANyQnpStd6Gb2nXfe8aHVdevW9YIRwhGh1/wYE5ZM17MITHYTkw6EZZO2hkk2BtgIF7xhw/ScaewXEVO8zTID9BdeeMGndGHYbjc2Xbt29eHd1BPzTASXECLNuNmxboAxZy+vnrQdb/J4Uxe+vVuxYoWvEzcEpL2RXocRJ2kAFYUufbmB49hgQk+kGMeN8HV7Q5ktOFa8TeRmkQgjxKRMQteTHUfOU9qM/eCGjH3ab7/94sIS+3bGGWf48d/97nc+bB7T9zDNkPMbw1AM2jmWnE9gaZ3pMGzYMF8+qYGY6lMv6oP5OsariqISQgih+6ziuc9iW6QOco+KOMQLPvaBe8mokMVx596C+wJS+/7f//t/3hIAK4N0wAyeTml4eUZnLuPHj/cdzXDvAYhS3BPR+Q/3HEQ/sQ5taBFWREghSNGZCwIeAhUfE/ZCO41kEPFFtgL3jKyLuTrHhrZ67LHH/D0TEWBCFAW5NrUSolTB+Puyyy7zXeBuuummsfr163sjbMyyly9fHl+OrymG2Jgu1q1b15tPP/XUU2XK+uSTT2I9evTwZokYQGJmuWzZsjLG0b179y6zzvnnn++NtY3x48fHdtppJ78NuzQsXLjQr4cZd5MmTXzd6Mo3LIsyKCuE+WzTWLp0aWzAgAG+e2CMJ1u2bBk76aSTyphmp+qqGD777LNY165dvYElZuAYb4cGnNdee21su+228/NpA+rw3XffpTwGmG02b958PdPwX3/9NXbiiSf6etIdL/U+99xzy5hxR0nUrS/H9eGHH46Pjx071pvAUyZmn5jBh10DJ2rLRF0VUyZlhwwePLiMofhrr73m24PjyXFl22EdMzU6hxkzZnjjUow4MSjFJDU0GYVrrrnGdxfNOYPB6XnnneePW1gm241+qH+q8zUK3TFjqk55tGeLFi183ex8EEIIUdroPqt47rNYl3tb6s32GzZs6O+nwnssu6+xDx2mbLXVVn49OntJRqL7LAzyMTanrTAoHzp06Hr3IIccckj8vnz48OH+Pvnee+8tU2aiD/VMde8Yhfs5OrKxjpE6duwYu/jii30dhCgWavAn18KYECI5vHUhD523XUIUGvil4Zfw+OOP57oqQgghxHroPktUFqKXiGwi8oxINCFEZih9TwghRFYgTJ3ecPB8IjQdDwlu0EirE0IIIYQoBjBmp/fkHXfc0ftw0SEQqXX77rtvrqsmREEiUUoIIUTW3jbj73Ddddd5vwn8w/Akw3tBCCGEEKIYoGfCv/71r+67777znrD4XOL5mqh3PSFE+Sh9TwghhBBCCCGEEEJUO9nt8kkIIYQQQgghhBBCiDSQKCWEEEIIIYQQQgghqh2JUkIIIYQQQgghhBCi2pEoJYQQQgghhBBCCCGqHYlSQgghhBBCCCGEEKLakSglhBBCCCGEEEIIIaodiVJCCCGEEEIIIYQQotqRKCWEEEIIIYQQQgghqh2JUkIIIYQQQgghhBDCVTf/H4z283QYoV5kAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { "data": { "text/plain": [ - "True" + "control-relative log2FC Pearson r 0.905318\n", + "spontaneous vs normal DE genes 5830.000000\n", + "SB vs normal DE genes 5229.000000\n", + "shared DE genes 4421.000000\n", + "shared DE genes with same sign (%) 99.638091\n", + "direct DE: spontaneous higher 14.000000\n", + "direct DE: SB higher 27.000000\n", + "Name: training_split, dtype: float64" ] }, - "execution_count": 44, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "from corneto.utils import check_gurobi\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "gene_threshold = 0.5\n", + "gene_fdr = 0.05\n", + "common_genes = results_df1.index.intersection(results_df2.index)\n", + "control_comparison = pd.DataFrame(\n", + " {\n", + " \"spontaneous_log2fc\": results_df1.loc[common_genes, \"log2FoldChange\"],\n", + " \"spontaneous_padj\": results_df1.loc[common_genes, \"padj\"],\n", + " \"SB_log2fc\": results_df2.loc[common_genes, \"log2FoldChange\"],\n", + " \"SB_padj\": results_df2.loc[common_genes, \"padj\"],\n", + " }\n", + ").dropna()\n", + "\n", + "spontaneous_sig = (\n", + " (control_comparison[\"spontaneous_padj\"] <= gene_fdr)\n", + " & (control_comparison[\"spontaneous_log2fc\"].abs() >= gene_threshold)\n", + ")\n", + "sb_sig = (\n", + " (control_comparison[\"SB_padj\"] <= gene_fdr)\n", + " & (control_comparison[\"SB_log2fc\"].abs() >= gene_threshold)\n", + ")\n", + "same_sign = np.sign(control_comparison[\"spontaneous_log2fc\"]) == np.sign(\n", + " control_comparison[\"SB_log2fc\"]\n", + ")\n", + "control_comparison[\"category\"] = \"below threshold\"\n", + "control_comparison.loc[spontaneous_sig & ~sb_sig, \"category\"] = \"spontaneous only\"\n", + "control_comparison.loc[~spontaneous_sig & sb_sig, \"category\"] = \"SB only\"\n", + "control_comparison.loc[spontaneous_sig & sb_sig & same_sign, \"category\"] = \"shared, same sign\"\n", + "control_comparison.loc[spontaneous_sig & sb_sig & ~same_sign, \"category\"] = \"shared, opposite sign\"\n", + "\n", + "direct_gene_table = direct_results[[\"log2FoldChange\", \"padj\"]].dropna().copy()\n", + "direct_gene_table[\"specificity\"] = \"not direct-DE\"\n", + "direct_gene_sig = (\n", + " (direct_gene_table[\"padj\"] <= gene_fdr)\n", + " & (direct_gene_table[\"log2FoldChange\"].abs() >= gene_threshold)\n", + ")\n", + "direct_gene_table.loc[\n", + " direct_gene_sig & (direct_gene_table[\"log2FoldChange\"] > 0), \"specificity\"\n", + "] = \"spontaneous higher\"\n", + "direct_gene_table.loc[\n", + " direct_gene_sig & (direct_gene_table[\"log2FoldChange\"] < 0), \"specificity\"\n", + "] = \"SB higher\"\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(12, 4.5))\n", + "category_colors = {\n", + " \"below threshold\": \"#d0d0d0\",\n", + " \"shared, same sign\": \"#6f6f6f\",\n", + " \"shared, opposite sign\": \"#8e44ad\",\n", + " \"spontaneous only\": \"#d95f02\",\n", + " \"SB only\": \"#1b9e77\",\n", + "}\n", + "for category in category_colors:\n", + " frame = control_comparison.loc[control_comparison[\"category\"] == category]\n", + " axes[0].scatter(\n", + " frame[\"spontaneous_log2fc\"],\n", + " frame[\"SB_log2fc\"],\n", + " s=7,\n", + " alpha=0.45,\n", + " color=category_colors[category],\n", + " label=f\"{category} ({len(frame)})\",\n", + " )\n", + "limits = np.nanmax(\n", + " np.abs(control_comparison[[\"spontaneous_log2fc\", \"SB_log2fc\"]].to_numpy())\n", + ")\n", + "axes[0].plot([-limits, limits], [-limits, limits], \"k--\", linewidth=1)\n", + "axes[0].set(\n", + " xlabel=\"Spontaneous vs normal log2FC\",\n", + " ylabel=\"SB vs normal log2FC\",\n", + " title=\"Control-relative effects\",\n", + ")\n", + "axes[0].legend(fontsize=7, frameon=False)\n", + "\n", + "volcano_colors = {\n", + " \"not direct-DE\": \"#d0d0d0\",\n", + " \"spontaneous higher\": \"#d95f02\",\n", + " \"SB higher\": \"#1b9e77\",\n", + "}\n", + "volcano_y = -np.log10(direct_gene_table[\"padj\"].clip(lower=1e-300))\n", + "for category in volcano_colors:\n", + " mask = direct_gene_table[\"specificity\"] == category\n", + " axes[1].scatter(\n", + " direct_gene_table.loc[mask, \"log2FoldChange\"],\n", + " volcano_y.loc[mask],\n", + " s=8,\n", + " alpha=0.55,\n", + " color=volcano_colors[category],\n", + " label=f\"{category} ({mask.sum()})\",\n", + " )\n", + "axes[1].axvline(-gene_threshold, color=\"black\", linestyle=\"--\", linewidth=0.8)\n", + "axes[1].axvline(gene_threshold, color=\"black\", linestyle=\"--\", linewidth=0.8)\n", + "axes[1].axhline(-np.log10(gene_fdr), color=\"black\", linestyle=\"--\", linewidth=0.8)\n", + "axes[1].set(\n", + " xlabel=\"Spontaneous vs SB log2FC\",\n", + " ylabel=\"-log10 adjusted p-value\",\n", + " title=\"Direct leukemia contrast\",\n", + ")\n", + "axes[1].legend(fontsize=8, frameon=False)\n", + "plt.tight_layout()\n", + "plt.show()\n", "\n", - "check_gurobi()" + "shared_de = spontaneous_sig & sb_sig\n", + "gene_specificity_metrics = pd.Series(\n", + " {\n", + " \"control-relative log2FC Pearson r\": control_comparison[\n", + " [\"spontaneous_log2fc\", \"SB_log2fc\"]\n", + " ].corr().iloc[0, 1],\n", + " \"spontaneous vs normal DE genes\": int(spontaneous_sig.sum()),\n", + " \"SB vs normal DE genes\": int(sb_sig.sum()),\n", + " \"shared DE genes\": int(shared_de.sum()),\n", + " \"shared DE genes with same sign (%)\": 100\n", + " * float(same_sign.loc[shared_de].mean()),\n", + " \"direct DE: spontaneous higher\": int(\n", + " (direct_gene_table[\"specificity\"] == \"spontaneous higher\").sum()\n", + " ),\n", + " \"direct DE: SB higher\": int(\n", + " (direct_gene_table[\"specificity\"] == \"SB higher\").sum()\n", + " ),\n", + " },\n", + " name=\"training_split\",\n", + ")\n", + "gene_specificity_metrics" ] }, { - "cell_type": "code", - "execution_count": 45, - "id": "661e0d70-b917-4d9a-aa97-75482fe34c8d", + "cell_type": "markdown", + "id": "bfd42d61", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.412352Z", - "iopub.status.busy": "2025-06-27T16:26:47.412244Z", - "iopub.status.idle": "2025-06-27T16:26:47.664552Z", - "shell.execute_reply": "2025-06-27T16:26:47.664284Z" - }, "papermill": { - "duration": 0.25918, - "end_time": "2025-06-27T16:26:47.665249", + "duration": 0.006641, + "end_time": "2026-08-06T17:19:00.347856+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.406069", + "start_time": "2026-08-06T17:19:00.341215+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inputs: (7/30), Outputs: (5/6)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inputs: (4/30), Outputs: (6/6)\n" - ] - } - ], "source": [ - "def subgraph(G, inp, out):\n", - " inp_s = set(G.V).intersection(inp)\n", - " out_s = set(G.V).intersection(out)\n", - " Gs = G.prune(inp_s, out_s)\n", - " tot_inp = set(Gs.V).intersection(inp)\n", - " tot_out = set(Gs.V).intersection(out)\n", - " print(f\"Inputs: ({len(tot_inp)}/{len(inp)}), Outputs: ({len(tot_out)}/{len(out)})\")\n", - " return Gs\n", - "\n", - "\n", - "Gs1 = subgraph(G, df_top_receptors1.index.tolist(), list(d_measurements1.keys()))\n", - "Gs2 = subgraph(G, df_top_receptors2.index.tolist(), list(d_measurements2.keys()))" + "### Receptor-expression and TF-activity specificity\n", + "\n", + "Receptor expression is used only to nominate possible differential inputs; CARNIVAL is\n", + "left to infer their signs. TF activities are inferred directly from the spontaneous-vs-SB\n", + "gene-level statistic. The bars below retain direction: orange is relatively higher in\n", + "spontaneous leukemia and green is relatively higher in SB leukemia." ] }, { "cell_type": "code", - "execution_count": 46, - "id": "2d12fdab-2924-4a42-b4b0-70a15081f026", + "execution_count": 42, + "id": "5971453e", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:47.677853Z", - "iopub.status.busy": "2025-06-27T16:26:47.677739Z", - "iopub.status.idle": "2025-06-27T16:26:48.189740Z", - "shell.execute_reply": "2025-06-27T16:26:48.189437Z" + "iopub.execute_input": "2026-08-06T17:19:00.362159Z", + "iopub.status.busy": "2026-08-06T17:19:00.362055Z", + "iopub.status.idle": "2026-08-06T17:19:00.477923Z", + "shell.execute_reply": "2026-08-06T17:19:00.477630Z" }, "papermill": { - "duration": 0.519222, - "end_time": "2025-06-27T16:26:48.190570", + "duration": 0.124336, + "end_time": "2026-08-06T17:19:00.478631+00:00", "exception": false, - "start_time": "2025-06-27T16:26:47.671348", + "start_time": "2026-08-06T17:19:00.354295+00:00", "status": "completed" }, "tags": [] }, "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYktJREFUeJzt3QeYVNXZOPCDNJVqDSLN3mIvCPop2LCXWGIvqNGgsRvBGLtijSZG0SQGjTG22I1REyN2xd5iiDWCYAMFJYog83/e8/9mvt1lF3ZhucDu7/c8F3Zm7tx759w7M++895z3tiiVSqUEAAAAAAVaqMiVAQAAAECQlAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFA4SSkAAAAACicpBQAAAEDhJKUAAAAAKJykFAAAAACFk5Si4rrrrkstWrSoTAsvvHDq0qVL6t+/fxo6dGj65JNPZmitM888M89b1bfffpuOPPLItMwyy6SWLVumddZZJ98/YcKEtPfee6ell146P2fXXXedb1v//vvvz6+tNr169UoHH3zwbC235nPff//93BbR9sxf74PYN03VVVdd1ayPudred7V9ltVldj8D/vvf/+b1jBgxosHPBWjKGisGLcr555+f7rrrrkK+i8TVs/99XG7PWU39+vXL88ey6prnvvvuSwvy75CIPeJ1VI1B5tbvHWioVg1+Bk3e8OHD06qrrpqmTp2ag4AnnngiXXjhhemSSy5Jt9xyS9pqq60q8x522GFp2223rfb8YcOGpWuuuSZdccUVaf3110/t27fP959zzjnpzjvvTL///e/TCiuskBZffPE0v4oP6SuvvLLWD+p4DR07dpwn2wWNlZRacsklBRtV1PZZ1tgiKXXWWWflv8sBMACNF4MWmZTaY489Gv0Eq7g6zdX2HDduXPrBD36QfvKTn6R99923cn/VuH6RRRZJ//jHP2ZYVhyXC/LvkPXWWy89/fTTafXVV5+r64HZISnFDL7//e+nDTbYoHJ79913T8cff3zadNNN8wf5W2+9lb73ve/lx7p165anql5//fX8gX700UfPcH8ko/bbb79Ga/Wvv/46r6tI6667bqHrW5DNi/0zL0XSYdFFF03N0XfffZemTZuW2rZtmxZEtX2WAbBgxaALeiwirp677VnuBd+jR4+08cYb1/qchRZaqM7H5gez+zskEkwNeV1+71Akw/eol/jwvvTSS9OXX36Ze0HV1c04/v7d736XA4Byd9dyl+y///3v6c0336zcX+4+Gt2Szz333HwGIn7QLrXUUumQQw5Jn3766QzdSHfcccd0xx135A/K6Npd7nXw0UcfpSOOOCJ/8bRp0yYtt9xy+bH4kVyzm3ScbfvFL36R54leXH369EnPPPNMZb7oqhpnDcqvpzyVv8hqdmf95ptv0oknnpiHKXbq1Cn3AItl3n333Q0+uh5//PG8rptuummGx/7whz/kx5577rmZLmNWbVEqldL222+fllhiifTBBx9US6isscYaabXVVkuTJ0+utn9feumlHAzGF1q8xv3337/R90+5l93aa6+d90uHDh3yMXHqqadW28aTTjopPz+WH20dwWvN9nr++efTzjvvnB+P+WJ7br311hnaKvb7Jptskufp2rVrGjJkSD47Wx9xDMR2vvbaa2mbbbbJ27vllls26JgOf/rTn/LxEsuKKY6ja6+9tto88d6JZUf7R9Irtvnhhx+uNk9991XspzfeeCM9+uijlWM77iuLYyKeE8NsY9vjeIj3/vTp02d4L1100UX5dcb+iHkfeeSROtsrnh+9J+P1xY+Dzp075+DonnvuqcwTZ8GjLWPob8wT6x48eHDleKzZ9m+//XY+luPv7t275/fhlClTqs07duzYtNdee+X9E+3xwx/+MB+PNdU2ZCKOhZ/+9Kd5CEm0e/woGjly5AzPjfYdNGhQPvsY2xJtt8UWW+T3c9U2i+MgxLFfbvuqnyXxYyvO3FZt+/JnUdV2jDZfZZVVKu241lprpV/+8pd1tj1Ac4hBGysWie+Rs88+O38Gx/MjXophhE899VR+PNYZ30vXX3/9DMO/6jK730Xi6jmLq4sU39ebbbZZ/g5v165dWnPNNXOcVFtc+cADD+S4Lo6FiC/iWIthqg39HRLxRxzLP//5z2dYx7/+9a/8vF/96le1Dt9r6O+dMGnSpEocHutddtll03HHHTdDnHbbbbel3r17V17f8ssvnwYOHNgIrUxTpacU9RY//qJG1GOPPVbnPNEtNIbpxY/TctfX+OCK++NH28SJE9ONN96Y748fcPEDa5dddsk/3uLHX9++fdN//vOfdMYZZ+Qv+EguVD279eKLL+bE1mmnnZaXGx/68aW+0UYb5TMbp59+eu6NFeuLH27xwRpdwauKD+BIFlx++eX5dnyQx2t777338odn3I4P1z//+c95OWXxQ7k2EbxEvaz4kI4P50hIRBIhEgOx7gMPPLDebfw///M/OYiKbdxnn32qPfbrX/86bbjhhnmqS33aIr5wbrjhhpwciAAp2r5169Z5/0QbPPvss7ldq9ptt93yvFErLBIa0Ub//Oc/87zx3MbYPzfffHPehuhSHYnDmD+SDrGeshNOOCFvezw32in2U/TAGz9+fGWeOPaiq3Z8GV599dV5n8ayIwCMpFb5CzaWGwFBfOlG4jS+NGNYWySJ6iv2dSS/IsiN5EkEtg05pqM94v0Sx0okVGJb4/XE/GV//OMf8zEUy4wAONo7gvIBAwakBx98sJIIq+++iu7YMeQg1hWvN5R7N0VwE9sbryu2K9omaijEsf3OO+9U5i+LQGfllVfO+yuSYCuttFKdbRXtHq/l0EMPzcF+BDNxvFSt3RVJmXgvRoATx04EVDFsIxJBNbvSR5AXbR/Li7aLz6XY5nhd0a4hkuMx1CN+DESwF9v6l7/8JR8L9XH44YfnZHC8/q233jrvm9hX8cOoqnj/h9jHkcD66quvcjvH/o7kYfwfnx8RhMaxGdscQwpCOVEV+yjavvzjK5YT+/eYY45Jn332WV52iAA3frTEeyyC32iHaKcvvviiXq8JoKnGoI0Ri8T3+HbbbZe/w+O7KE4wxH1xEitO2sTndDwv7o9EVTkZMLNhTnPyXSSunrO4enbVTFRG7BzH38xEnBQnlsoJm1deeSWdd955+Ts6SpeUxYnHiC8233zzHKdGEuvf//53jjFCQ36HRAwRSdiIDyPBGsd3WbRVbEddI1Qa+nsnYujY5jFjxuQTxnFCLOLMeD/FCdrYR9FOsaw4tmOKeCUSuxHX1jYkEipK8L+GDx9eikPiueeeq7NNvve975VWW221yu0zzjgjP6eqgw46qNSuXbsZnrv55puX1lhjjWr33XTTTfn5t99+e7X7Yxvi/quuuqpyX8+ePUstW7YsjRo1qtq8RxxxRKl9+/al//znP9Xuv+SSS/Iy3njjjXz7vffey7fXXHPN0rRp0yrzjRw5Mt8f21J21FFHzfC6qm5HvMa6xLKnTp1aOvTQQ0vrrrvuTJ9b3qZo+5r74aWXXpphG6+//vo619uQtghPPPFEqVWrVqXjjjuu9Pvf/z4//rvf/a7a88r79/jjj692/4033pjv/+Mf/9ho++foo48ude7ceaav7/vf/35p1113nek8q666am732AdV7bjjjqVlllmm9N133+XbP/zhD0uLLLJI6aOPPqq27+L5sV2xb2Ym9mPMF203O8f0u+++m9trv/32q3MdkydPLi2++OKlnXbaqdr98RrWXnvt0kYbbTRb+yreh/F+rGnw4MF53meffbba/T/+8Y9LLVq0qOzb8nG7wgorlL799tvSrDz22GN5/p/97Gel+po+fXreh48++mh+7iuvvDJD2996663VnrP99tuXVllllcrtYcOG5fnuvvvuavMdfvjhM7zvan6WvfnmmzNtz/p8Bmy55Zal3XbbrXL/p59+mp8b66ppwIABpW7dupUmTpxY7f54Xyy88MKlCRMmVI7jddZZp851AzTnGHROY5E//OEP+fZvf/vbmW5vxLkz+x6oak6+i4K4uv5x9ayU45eLL7641sfL8UXNaZNNNik1RMRpsc1xPMXxWP4O//LLL0sdO3YsbbrppjnOqUtDfofcc889ed6HHnqoWhzStWvX0u67716575FHHsnzxf+zs56hQ4eWFlpooRneo3/+85/zMu6///5q76kvvvhipm0EVRm+R4PE0K/GFL0wYvjJTjvtlM9KlKfoxRM9BWpepSqy8nGGqeYy4mxVDL+quow40xVimFJVO+ywQ7WzHbHMULV3SkNFN9UYUhVDd1q1apV7pMSZkDhT11DRQyrOmlQdthPDnuJsyKzOqjWkLWJ74wxO9Bj78Y9/nIdsRQ+O2tQ8yxI9ceJ11hyuNSf7J85gRm+PeP3RRTt6h9QU8/z1r3/NvZLi2Iizj1VFz6o4I1Xe3qrri7OsUeBy1KhR+bHY9uhlVK5NEeK4qG8vmqr1LmbnmP7b3/6W6zAdddRRdS47hgpEL5yDDjqo2rKiN1b0uImhnDW7TNd3X9UmzmJFD8Zo55q9nOK9X/MsV/RUqtpTri6xz8LMXmt4991381nGaKfYF7HsOCsXar6X4mxctHHN46/q+zhecwyViO2sqmpx07qU26uu9qwpznZGEdE4I1j+DIheUvX5DIghwDFv9HKLHns1j9t4vDzEOPZNnH2NXoXRkyq60gM0B/WNQeckFonvq/gcb8yhRnPyXdRQ4uo5F73ZI76qOtUsq1CbKJ8Q+ziGe5ZjmOjVFbFe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V99r6HrifXLaaafl2LAcy8VVzSMWL1/N+r777ittt912uQ3K7+O4OvLjjz8+W+1K89Ai/pkxVQXMazH8J3q4RO+dcpHuop155pm5x070yKlZT4j5i30FAAAsaAzfg/nMO++8k4fkxNCu6BIeQ9AAAACgqWm8650CjSJq08TY9K+++irXP3I1LQAAAJoiw/cAAAAAKJyeUgAAAAAUTlIKAAAAgMJJSgEAAABQOFffq2H69Olp7NixqUOHDqlFixbF7xEAoF5KpVL68ssvU9euXdNCCznP1tSIyQCg6cdlklI1REKqe/fujb1/AIC5ZPTo0albt27at4kRkwFA04/LJKVqiB5S5Ybs2LFj4+4dAKDRfPjhh2n11VevfHfTtIjJAKDpx2WSUjWUh+xFQkpSCgDmX5MmTcr/G27fNInJAKDpx2UKMAAAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIWTlAIAAACgcJJSAAAAABROUgoAAACAwrUqfpUAzVe34YPn9SZAkzFtwqR5vQkACwTxBzC/xmV6SgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIWTlAIAAACgcJJSAADzsdGjR6dDDz00de3aNbVp0yb17NkzHXvssWn8+PGVeb766qt09NFHp27duqVFFlkkrbbaamnYsGHVltOrV6/UokWLPLVs2TIvL5b7+eefV+YZMWJEZZ6YllhiibTFFlukJ598stqyzjzzzGrzlae///3v+fE33ngj7b777pV1Xn755XO9nQCABY+kFADAfOrdd99NG2ywQfr3v/+dbrrppvT222+nq6++Oj388MOpT58+acKECXm+448/Pj3wwAPpj3/8Y3rzzTfz7Z/85Cfp7rvvrra8s88+O40bNy598MEH6cYbb0yPPfZYOuaYY2ZY76hRo/J8kaRaaqml0g477JA++eSTavOsscYaeZ6q02abbZYf++9//5uWX375dMEFF6QuXbrM1TYCABZcklIAAPOpo446KveOeuihh9Lmm2+eevTokbbbbrvcI+nDDz9MP/vZz/J8Tz/9dDrooINSv379cu+kH/3oR2nttddOzz//fLXldejQISeJll122dS/f/904IEHphdffHGG9S699NJ5vjXXXDOddtppaeLEienZZ5+tNk+rVq3yPFWn2Naw4YYbposvvjjtvffeqW3btnO1jQCABZekFADAfCh6QT344INp0KBBeUheVZEA2m+//dItt9ySSqVS2nTTTdM999yTE1Vx+5FHHsm9qwYMGFDn8mPe++67L/Xu3bvOeaLH0/Dhw/PfrVu3TnPTlClT0qRJk6pNAEDTJikFADAfeuutt3KCKepD1Sbuj3pQn376afrVr36VVl999VxTKnorbbvttumqq67KyaqqTjnllNS+ffuc5Ip5o97TL37xixmWHY/FfDFddtllaf31109bbrlltXlee+21yjwxbbTRRnP0eocOHZo6depUmbp37z5HywMA5n+SUgAAC6BIWIVIQkVS6plnnsm9pV544YV06aWX5h5W5cLjZSeffHJ6+eWX06uvvprrUoWoF/Xdd99Vm+/xxx/Pw/qijlUUVr/uuutm6Cm1yiqr5GWVp9tvv32OXs+QIUPyMMHyFAXeAYCmrdW83gAAAGa04oor5p5M//znP9Ouu+46w+P/+te/chHyqNl06qmnpjvvvDMnmMJaa62VE0WXXHJJ2mqrrSrPWXLJJfNyw0orrZSvihcF02O4X9X5lltuudS5c+e08sorp2+++Sbttttu6fXXX69WHyqSYeVlNYZYtvpTANC86CkFADAfWmKJJdLWW2+dh+F9/fXX1R776KOP8tXzDj744DR16tQ8LbRQ9bCuZcuWafr06TNdR8wTai6/qgMOOCAvJ7YDAKAxSUoBAMynfv3rX+cC4FGw/LHHHstD2h544IGcrIpeTKeffnrq2LFjvjJfDM0bMWJEeu+99/Jwuz/84Q+5h1NVX375ZU5ojRs3Lo0cOTI/J3pP9e3bt85tiGTXcccdly644IJc+Lw+vv3228qwvvg7iqrH32+//fYctwkA0HRISgEAzKdiiN1zzz2Xll9++bTXXnvl+k7bbbddTkg9+eSTucB4uPnmm9OGG26Yr8gXBc8jgXTeeeelI488stryIom1zDLLpK5du6Ydd9wxtWvXLv3tb3/LvbJmZuDAgbk3ViTJ6mPs2LFp3XXXzVMkwGIYYfx92GGHzUFrAABNTYtSuUomWVx+OK74EgU248wjQGPqNnywBoVGMm3CpPTxScOa3Xf2GWecka+Y99BDD+V6UE2VmAwaj/gDmF/jMoXOAQAWIGeddVbq1atXevbZZ1Pv3r1nqCUFALCgkJQCAFjAHHLIIfN6EwAA5phTawAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCtSp+lQAAABRlzCEXaGxgrhozZkzqftKwBj9PTykAAAAACicpBQAAAEDhJKUAAAAAKJykFAAAAACFk5QCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQuFZpPjRixIjUv3//9Pnnn6fOnTvXOs91112XjjvuuPTFF18Uvn0AAADzo27DB8/rTQCaoWkTJi1YPaUOPvjg1KJFizy1bt06Lb/88umkk05KkydPnq3l3XHHHWnrrbdOSy21VOrYsWPq06dPevDBBxt9uwEAAABYwIfvbbvttmncuHHp3XffTeeee2666qqrcmJqdjz22GM5KXX//fenF154Ife02mmnndJLL73U6NsNAAAAwAKclGrbtm3q0qVL6t69e9p3333Tfvvtl+666646h+v16NEjLbroomm33XZL48ePr/b45Zdfnn7605+mDTfcMK200krp/PPPz//fe++9Bb0aAAAAABbIQueLLLJImjp16gz3P/vss2ngwIFp0KBB6eWXX869oKJn1cxMnz49ffnll2nxxRefi1sMAAAAwAJd6HzkyJHpT3/6U9pyyy1neOyXv/xlGjBgQBo8+P8X7Vt55ZXTU089lR544IE6l3fppZfm+lR77bXXTNc7ZcqUPJVNmjR7xbkAAAAAWEB6St13332pffv2aeGFF86FyTfbbLN0xRVXzDDfm2++mR+vqubtqm666aZ05plnpltuuSUtvfTSM92GoUOHpk6dOlWmGEoIAAAAQBNOSsUwvBiON2rUqPTNN9/kK+jVlkQqlUr1XmYkog499NB06623pq222mqW8w8ZMiRNnDixMo0ePbrBrwMAAACABWj4Xrt27dKKK644y/lWX3319Mwzz1S7r+btcg+pqD0V/++www71LrYeEwAAAADNsKbUzBxzzDGpb9++6aKLLkq77rpreuihh2aoJxWJqAMPPDDXn9p4443TRx99VCmeHsPyAAAAAJh/zFdX36tLJJl+97vf5XpT66yzTk5KnXbaadXmueaaa9K0adPSUUcdlZZZZpnKdOyxx86z7QYAAACgdi1KDSnY1AzE1feiZ1XUl+rYseO83hygiek2/P9fRRSYc9MmTEofnzTMd3YTJSaD2SPWABakuGyB6CkFAAAAQNMiKQUAAABA4SSlAACYbf369UvHHXfcLOe766678lWXW7ZsWa/5AYCmT1IKAIBqDj744NSiRYt05JFHztAygwYNyo/FPOGOO+5I55xzTuXxXr16pcsvv3yG5x1xxBFpjz32SKNHj642PwDQfElKAQAwg+7du6ebb745ff3115X7vvnmm3TTTTelHj16VO5bfPHFU4cOHWbagl999VX65JNP0oABA1LXrl1nOT8A0DxISgEAMIP11lsvJ5+iJ1RZ/B3JqnXXXbfW4Xvx93/+8590/PHH595UMY0YMaKShNpiiy0q9wEASEoBAFCrQw45JA0fPrxy+/e//30aOHBgna0VSatu3bqls88+O40bNy5Pffv2TaNGjcqP33777ZX7apoyZUqaNGlStQkAaNokpQAAqNUBBxyQnnjiifT+++/nHlBPPvlk2n///etsrRjKF4XMo2dUly5d8tSmTZu09NJLVx4v31fT0KFDU6dOnSpT9MgCAJq2VvN6AwAAmD8tueSSaYcddkjXX399KpVK+e+4b24YMmRIOuGEEyq3o6eUxBQANG2SUgAA1CmG6x199NH57yuvvHKutVTbtm3zBAA0H5JSAADUadttt03ffvtt/juunjcrMTTvu+++06IAwCypKQUAQJ2iRtSbb76Zp/h7Vnr16pUee+yx9OGHH6bPPvtMywIAdZKUAgBgpjp27Jin+ogr70Vh9BVWWCEttdRSWhYAqJPhewAAVHPdddfNtEXuuuuuyt8jRoyo9tjGG2+cXnnllWr3de7cORdKBwCoSk8pAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIVrVfwqAQAAmBvGHHKBhgUKN2bMmNT9pGENfp6eUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFK5V8asEAACgsXUbPlijAvPEtAmTZut5ekoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIWTlAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFC4VsWvEqD5GnPIBfN6E6DJGDNmTOp+0rB5vRkAAMwmPaUAAAAAKJykFAAAAACFk5QCAKBOLVq0SHfddddMW+hf//pX2njjjdPCCy+c1llnHa0JANSLpBQAQBPwySefpCOOOCL16NEjtW3bNnXp0iUNGDAgPf3003N93WeccUZq165dGjVqVHr44Yfzfeedd17q27dvWnTRRVPnzp3n+jYAAAsehc4BAJqA3XffPU2dOjVdf/31afnll08ff/xxThBNmDCh1vlj3tatWzfKut955520ww47pJ49e1bu+/bbb9Oee+6Z+vTpk6699tpGWQ8A0LToKQUAsID74osv0hNPPJEuvPDC1L9//5wc2mijjdKQIUNysqg8DO/qq69Ou+yyS+7VdO655+b777333rT++uvnoXeRzDrrrLPStGnTqi1/3LhxabvttkuLLLJIWm655dJtt91WeSyW+8ILL6Szzz47/33mmWfm+2M5xx9/fFpzzTULbQsAYMEhKQUAsIBr3759nqL205QpU2Y6zC6SUq+99loaOHBgevDBB9P++++fjjnmmPTPf/4zXXPNNem6667LQ++q+vnPf557Yr3yyit5/n322Se9+eablYTVGmuskU488cT890knnTRbryG2e9KkSdUmAKBpk5QCAFjAtWrVKieTYuhe1G/aZJNN0qmnnppeffXVavPtu+++ORkVPaKiN1UknwYPHpwOOuigfN/WW2+dzjnnnJycqiqG4R122GFp5ZVXzo9vsMEG6YorrsiPRe2qWH8kxeLv+H92DB06NHXq1Kkyde/efQ5aBABYEEhKAQA0AdGTaezYsemee+7JBc5HjBiR1ltvvZysKotkUlXlYXflnlYxHX744bnH03//+9/KfFEXqqq4Xe4p1VhiqOHEiRMr0+jRoxt1+QDA/EehcwCAJiLqQkVvp5hOP/303LsphuwdfPDB+fGoJVXV9OnTc+2nH/zgB7Uua2aiflRjiisGxgQANB96SgEANFGrr756mjx5cp2PR0+qUaNGpRVXXHGGaaGF/i9MfOaZZ6o9L26vuuqqc3XbAYCmT08pAIAF3Pjx43Pdp6gXtdZaa6UOHTqk559/Pl100UW5sHldojfVjjvumOs3xfMjERV1qKIQevnqfCGuthdD/zbddNN04403ppEjR6Zrr712ptv0wQcfpAkTJuT/v/vuu/Tyyy/n+yPhNbt1pwCApkVSCgBgARdJnt69e6fLLrssvfPOO2nq1Kk50RT1oaLgeV2i9tR9992X60pFAqt169a5B1QM+6sqhvjdfPPNadCgQbmYeSSmohfWzETCKwqvl6277rr5/0ceeST169dvjl8zALDga1EqlUrzeiPmJ3H54bjiSxTY7Nix47zeHACgDmPGjMmJF9/ZTZOYDBqu2/DBmg2YJ6ZNmJQ+PmlYg+MyNaUAAAAAKJykFAAAAACFk5QCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFK5V8asEmHPdhg/WjNDMTZswaV5vAsB8ZcwhF8zrTQCaqTFjxqTuJw1r8PP0lAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFA4SSkAAAAACicpBQAAAEDhJKUAAAAAKJykFAAAAACFk5QCAAAAoHCtil8lAAAAodvwwRoCWOBNmzBptp6npxQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIWTlAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFA4SSkAAGbq4IMPTrvuuqtWAgAalaQUAAAAAIWTlAIAoN569eqVLr/88mr3rbPOOunMM8+s3G7RokX63e9+l3bbbbe06KKLppVWWindc889WhkAqEZSCgCARnfWWWelvfbaK7366qtp++23T/vtt1+aMGGClgYAKiSlAACYK3Wo9tlnn7Tiiium888/P02ePDmNHDmyzvmnTJmSJk2aVG0CAJo2SSkAABrdWmutVfm7Xbt2qUOHDumTTz6pc/6hQ4emTp06Vabu3bvbKwDQxElKAQBQ/+BxoYVSqVSqdt/UqVNnmK9169bVbkedqenTp9e53CFDhqSJEydWptGjR9srANDEtZrXGwAAwIJjqaWWSuPGjavcjmF277333hwvt23btnkCAJoPPaUAAKi3LbbYIt1www3p8ccfT6+//no66KCDUsuWLbUgANBgekoBADBTMeyuVatWlWF27777btpxxx1z7adzzjmnUXpKAQDNj6QUAAAzFQXK4yp6oWPHjumWW26p9nj0lqqqZs2p8MUXX2hlAKAaw/cAAKjV559/nv7yl7+kESNGpK222korAQCNSk8pAABqNXDgwPTcc8+lE088Me2yyy5aCQBoVJJSAADU6s4779QyAMBcY/geAAAAAIWTlAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFA4SSkAAAAACicpBQAAAEDhJKUAAAAAKJykFAAAAACFk5QCAAAAoHCtZudJH330UTrvvPPSX/7yl/Thhx+mpZdeOq2zzjrpuOOOS1tuueUsnz9s2LA8vf/++/n2GmuskU4//fS03XbbpTkxbty4dOKJJ6YXXnghvfXWW+mYY45Jl19++RwtEwAAYG4Zc8gFGhdY4I0ZMyZ1P2nY3O8pFYmk9ddfP/3jH/9IF110UXrttdfSAw88kPr375+OOuqoei2jW7du6YILLkjPP/98nrbYYou0yy67pDfeeCPNjlKplKZNm5amTJmSllpqqfSzn/0srb322rO1LAAAAADmvgYnpQYNGpRatGiRRo4cmfbYY4+08sor555OJ5xwQnrmmWfSiBEjUps2bdLjjz9eec6ll16allxyydyTKey0005p++23z8+NKXpdtW/fPj+/LBJMP/3pT1P37t1T27Zt00orrZSuvfba/FisI7bhwQcfTBtssEF+PNbXq1ev9Mtf/jIdeOCBqVOnTo3TQgAAAADM2+F7EyZMyL2iIonUrl27GR7v3Llz6tevXx7Gd8ABB6RXXnkl96yKnks33XRTWmaZZWZ4znfffZduu+22NHny5NSnT5/K/ZFYevrpp9OvfvWr3OvpvffeS5999lm150bS6pJLLknLL798XjcAAAAATTAp9fbbb+ehcquuuupM5zv33HPT3//+9/SjH/0oD8mLBNVuu+1WbZ4Y9hdJqG+++Sb3krrzzjvT6quvnh/797//nW699db0t7/9LW211Vb5vkg81XT22WenrbfeOs2J6JEVU9mkSZPmaHkAAAAANPLwvUhIhRg6NzMxfO+Pf/xjuv3229PXX39da7HxVVZZJb388st5yN6Pf/zjdNBBB6V//vOf+bG4v2XLlmnzzTef6Xpi6N6cGjp0aB7qV55iuCAAAAAA81FSKuo6RULqzTffnOW8Tz31VGXIX0y1Ja5WXHHFnFiKxFAM0Yt6UGGRRRap1/bUNoSwoYYMGZImTpxYmUaPHj3HywQAAACgEZNSiy++eBowYEC68sorcw2omr744ov8/zvvvJOOP/749Nvf/jZtvPHGuT7U9OnTZ9kLqzyMbs0118zzP/roo2luiyLpHTt2rDYBAAAAMJ9dfe+qq67Kxck32mijPDzvrbfeyj2noiB51IiKx6KG1DbbbJMOOeSQNHz48PT666/nK/CVnXrqqflqeVEEPWpLRSH0uKLefvvtlx+Pq+jFcL6BAwemu+66Kxc5j8ejztSsxNC/mL766qv06aef5r/LwwIBAAAAWAALnYflllsuvfjii/kKfCeeeGIaN25cWmqppdL666+fhg0blu+PZNO9996b5+/SpUv63e9+l/baa69clHydddZJH3/8cU5cxXOjjtNaa62Vr+pXtWh5LCuSV4MGDUrjx49PPXr0yLdnZd111638/cILL6Q//elPqWfPnnmbAAAA5hfdhg+e15sA0CimTZi9i8a1KJWrl1O5+l4kyqK+lKF8MP8SxAER/Hx80jDf2U2UmIzmQDwDNPe4rMHD9wAAAABgTklKAQAAAFA4SSkAAAAACicpBQAAAEDhJKUAAAAAKJykFAAAAACFk5QCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAACYI++//35q0aJFevnll7UkAFBvklIAAM3cJ598ko444ojUo0eP1LZt29SlS5c0YMCA9PTTT9fr+d27d0/jxo1L3//+9yv3HXvssWn99dfPy1tnnXXm4tYDAAuqVvN6AwAAmLd23333NHXq1HT99den5ZdfPn388cfp4YcfThMmTKjX81u2bJkTWVWVSqU0cODA9Oyzz6ZXX311Lm05ALAgk5QCAGjGvvjii/TEE0+kESNGpM033zzf17Nnz7TRRhtV5omheVdddVW655578nyRgLrooovSnnvuWRm+t9xyy6WXXnqp0ivqV7/6Vf7/008/lZQCAGpl+B4AQDPWvn37PN11111pypQpdc7385//PPeoeuWVV9L++++f9tlnn/Tmm2822nbE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zvn5Cy+8cFpmmWXSAQcckMaOHaulAYAKSSkAAKrZfffd0yuvvJKuv/769O9//zvdc889qV+/fmnChAn1bqn+/funW2+9NY0aNSrdfvvt6Z133kl77LGHlgYAKlr9358AADR3X3zxRXriiSfSiBEj0uabb57v69mzZ9poo40q87Ro0SJdddVVOVkV80VPqosuuijtueeelXmOP/74yt/x/MGDB6ddd901TZ06NbVu3brgVwUAzI/0lAIAoKJ9+/Z5uuuuu9KUKVPqbJmf//znlR5V+++/f9pnn33Sm2++Weu80cPqxhtvTH379pWQAgAqJKUAAKho1apVuu666/LQvc6dO6dNNtkknXrqqenVV1+t1krRK+qwww5LK6+8cjrnnHPSBhtskK644opq85xyyimpXbt2aYkllkgffPBBuvvuu+ts6UiATZo0qdoEADRtklIAAFQTPaCiKHkMz4sC5zFEb7311svJqrI+ffpUe07crtlT6uSTT04vvfRSeuihh1LLli3TgQcemEqlUq2tPXTo0NSpU6fK1L17d3sFAJo4SSkAAGYQV83beuut0+mnn56eeuqpdPDBB6czzjhjpi0VtaaqWnLJJXNPqljOzTffnO6///70zDPP1PrcIUOGpIkTJ1am0aNH2ysA0MRJSgEAMEurr756mjx5cuV2zeRS3F511VXrfH65h1Rddaratm2bOnbsWG0CAJo2V98DAKBi/PjxuV7UwIED01prrZU6dOiQnn/++Xx1vV122aUy32233ZbrSG266aa5iPnIkSPTtddemx+Lv2OKxxZbbLH07rvv5h5XK6ywwgzD/gCA5ktSCgCAirjyXu/evdNll12W3nnnnTR16tRc3+nwww/PBc/LzjrrrDwkb9CgQalLly45MRW9qcIiiyyS7rjjjjzcL3pXLbPMMmnbbbfN80ePKAAASSkAAKqJpFEUHY9pZrp27ZoLmNdmzTXXTP/4xz+0LAAwU2pKAQAAAFA4SSkAAAAACqemFAAADVK+kh4AwALZU+qTTz5JRxxxROrRo0euXRAFMgcMGJCefvrpebVJAAAAADT1nlK77757vprL9ddfn5Zffvn08ccfp4cffjhNmDBhXm0SAAAAAE25p9QXX3yRnnjiiXThhRem/v37p549e6aNNtooDRkyJO2www55nhYtWqRrrrkm7bjjjmnRRRdNq622Wu5F9fbbb6d+/fqldu3apT59+uRLFVc1bNiwtMIKK6Q2bdqkVVZZJd1www3z4iUCAAAAML8lpdq3b5+nu+66K02ZMqXO+c4555x04IEHppdffjmtuuqqad99981D/iJ59fzzz+d5jj766Mr8d955Zzr22GPTiSeemF5//fU87yGHHJIeeeSROtcR6580aVK1CQAAAIAmmJRq1apVuu666/LQvc6dO6dNNtkknXrqqenVV1+tNl8klPbaa6+08sorp1NOOSW9//77ab/99su1p6LnVCSgRowYUZn/kksuSQcffHAaNGhQfs4JJ5yQfvCDH+T76zJ06NDUqVOnytS9e/e5+toBAAAAmIeFzqOm1NixY9M999yTk0yRXFpvvfVysqpsrbXWqvz9ve99L/+/5pprVrvvm2++qfRuevPNN3OCq6q4HffXJXpdTZw4sTKNHj26UV8nAAAAAPNRUiosvPDCaeutt06nn356euqpp3IvpzPOOKPyeOvWrSt/R42puu6bPn36DPdVvWRxzfuqiiv/dezYsdoEAAAAQBNOStW0+uqrp8mTJ8/282NIXxRQryqSXXE/AAAAAPOPVvNipePHj0977rlnGjhwYB6i16FDh1y4/KKLLkq77LLLbC/35JNPzjWoYhjglltume699950xx13pL///e+Nuv0AAAAALIBJqbjyXu/evdNll12W3nnnnTR16tRcYPzwww/PBc9n16677pp++ctfposvvjgdc8wxabnllkvDhw9P/fr1a9TtBwAAAGDOtChF0SUqomh6XIUvip7PjfpS3YYP1toA0AimTZiUPj5p2Fz7zqZpx2QAQOMZM2ZM7mzU0O/t+aqmFAAAAADNg6QUAAAAAIWTlAIAAACgcJJSAAAAABROUgoAAACAwklKAQAAAFA4SSkAAAAACicpBQAAAEDhWhW/SgAAmPe6DR88rzcBAJqEaRMmzdbz9JQCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAavHUU0+lli1bpm233XaGxz744IO00047pXbt2qUll1wyHXPMMenbb7+ttR1XWWWV1KZNm/Thhx/O8NjHH3+cDj744NS1a9e06KKL5nW99dZblcfff//91KJFi1qn2267rTLfiy++mLbeeuvUuXPntMQSS6Qf/ehH6auvvpphOS+//PIM29CvX7903HHH1Xm7pqrb0L59+7T22mun6667bob5br311rTOOuvk19WzZ8908cUX17lMAKB5kpQCAKjF73//+/STn/wkPfHEEzkJVfbdd9+lHXbYIU2ePDk/dvPNN6fbb789nXjiiTMsIx7/5ptv0p577jlD4qZUKqVdd901vfvuu+nuu+9OL730Uk7ebLXVVnnZoXv37mncuHHVprPOOisnw7bbbrs8z9ixY/NzVlxxxfTss8+mBx54IL3xxhs52TW3DB8+PG/LK6+8kn74wx+mQw45JD344IOVx//617+m/fbbLx155JHp9ddfT1dddVX6xS9+kX7961/PtW0CABY8klIAADVEUih6+vz4xz9OO+64Y7WE0kMPPZT++c9/pj/+8Y9p3XXXzQmhSy+9NP32t79NkyZNqraca6+9Nu27777pgAMOyEmuSESVRY+oZ555Jg0bNixtuOGGuUdVJG+ih9NNN92U54meWl26dKk23XnnnTkRFL2Uwn333Zdat26drrzyyryMWFb8HYmyt99+e67s2+iRFduywgorpFNPPTUtvvjiuV3Kbrjhhpxwi6TU8ssvn5N4p5xySrrwwgurtQEA0LxJSgEA1HDLLbfkBE9M+++/f+4ZVE6mPP300+n73/9+HnJXNmDAgDRlypT0wgsvVO778ssv8xC7eH4MrYtE14gRIyqPx/xh4YUXrtwXSagY6hc9rGoTy48heIceemi15cRzFlro/8K6RRZZJP9f13IaS/Qai+TdhAkTcmKs6jZVfV3lbRozZkz6z3/+U+uy4jmR1Ks6AQBNm6QUAEAN0cMpkkkh6jxF76WHH3443/7oo4/S9773vWrzL7bYYjkxFI+VxbC+lVZaKa2xxho52bT33nvn5ZatuuqqebjekCFD0ueff55rUl1wwQV5GTE0rjbx/NVWWy317du3ct8WW2yRnxM1m2IZsazovRRqLieeFz2sqk6PP/54g/f/Pvvsk5/btm3b3Gsrekoddthh1ZJ0d9xxR26z6dOnp3//+9/p8ssvr3WbyoYOHZo6depUmWLoIgDQtElKAQBUMWrUqDRy5MicRAqtWrXKiZcYflcWRb5rip5UVe+vmtgK8Xckar744ot8O3oWxRC7SNhEUicKgkdPqqgVFUmsmr7++uv0pz/9qVovqRBJr+uvvz4PIYxlxLC6GDIXibOay4keYNHTquq0wQYbNHj/X3bZZfm5f/vb33Ix87gdNa3KDj/88HT00UfnoY+RrNt4440r7VnbawuRnJs4cWJlGj16dIO3CwBYsLSa1xsAADA/iWTStGnT0rLLLlst4RRJpOiFFEmfKCheVdw/derUSg+qqDkV8zz33HO5llLV4W5RLypqVYX1118/J3ciCRO9nJZaaqnUu3fvWhNFf/7zn9N///vfdOCBB87wWNStiimu5hdF0CM5FoXFl1tuuWrzRe+jqsmjqkP9GiLaIJYTUwxRjNpasc2rr756fjzWH/Wjzj///NyLK15XuadZr169al1m9LqKCQBoPvSUAgD4X5GM+sMf/pB7HVXtTRRXmYuhdjfeeGPq06dPvqJc1WFoUeQ7EiqRZContjbbbLP8vKrL+elPf1ptCF9ZDFeLxE0UP3/++efTLrvsMsM88bydd945z1eXSIrFsLroERU1naKW1dwWiandd98993SqKXpFRXIvektFMi7abumll57r2wQALBj0lAIA+F9xJbvo9RRD5CJRVNUee+yRE0ORNIoeQXFFvajjFEW+TzrppDxkrWPHjrnHVFx97uyzz84F0auKuksXXXRRTlatvfbauZdRJJl69OiRXnvttXTsscfmq9Zts8021Z4XV9F77LHH0v3331/rvvr1r39dqRcVQ+pOPvnkXJ8qrpI3Oz799NOcRKuqfPW/2px44on59UTbRI+pzz77LPfs6tevX/rmm29yofh4rY8++uhsbQ8A0DTpKQUA8L8i6bTVVlvNkJAK0Ruo3GvqL3/5S+6JtMkmm6S99torJ5IuueSSPN8999yTxo8fn3bbbbcZlhGFz9dcc81Kb6nobRXJrSh6fswxx+S/o0dRTVHPKnoc1UxWlUUNrOgVFcv+zW9+k6655pq8vNkVtatiSF7V6eqrr65z/lhvtNvpp59euS/qXEWCKtrojTfeyPWyNtpoo9neJgCg6WlRKl/fmCwuPxyBaNR2iLOdja3b8MFaGgAawbQJk9LHJw2ba9/ZNO2YLIjLAGDexmV6SgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAoXItSqVQqfrXzr0mTJqVOnTqliRMnpo4dO87rzQEA6jBmzJjUvXt339lNlJgMAJp+XKanFAAAAACFk5QCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUAgAAAKBwklIAAAAAFE5SCgAAAIDCSUoBAAAAUDhJKQAAAAAKJykFAAAAQOEkpQAAAAAonKQUAAAAAIVrVfwq52+lUin/P2nSpHm9KQDATHz55ZfVvrtpWsRkAND04zJJqToasnv37o21bwCAuWj8+PGpU6dO2riJEZMBQNOPy1qUnF6sZvr06Wns2LGpQ4cOqUWLFjM0WPSgioTV6NGjU8eOHRtjny3wtIl2cax4//hM8Vk7L0ycODH16NEjff7556lz587zZBuYdzFZcyHO0jaOG+8rnznzB5/Hcycu01OqhoUWWih169Ztlg0XCSlJKW1SH44VbeI4mT3eO9qlId/dNN+YrLnwmahtHDfeVz5z5g8+jxs3LhPFAQAAAFA4SSkAAAAACicp1UBt27ZNZ5xxRv4fbeJY8f6ZUz5TtIljxfsHfE/4Dm1s4gvt49hpfN5Xc6d9FDoHAAAAoHB6SgEAAABQOEkpAAAAAAonKQUAAABA4SSlZtOIESNSixYtap2ee+651Nz95S9/Sb17906LLLJIWnLJJdMPfvCD1Jz16tVrhuNk8ODB83qz5gtTpkxJ66yzTm6Tl19+OTVnO++8c+rRo0daeOGF0zLLLJMOOOCANHbs2NScvf/+++nQQw9Nyy23XP48WWGFFXIBxW+//TY1Z+edd17q27dvWnTRRVPnzp1Tc3TVVVfl4yLeL+uvv356/PHH5/UmQSHEWLUTa9WPuGtG4q/aicFmTTzWOHGZpNRsih8D48aNqzYddthh+Qtxgw02SM3Z7bffnn9MH3LIIemVV15JTz75ZNp3331Tc3f22WdXO15OO+20eb1J84Wf/vSnqWvXrvN6M+YL/fv3T7feemsaNWpUfh+98847aY899kjN2b/+9a80ffr0dM0116Q33ngjXXbZZenqq69Op556amrOIim35557ph//+MepObrlllvScccdl372s5+ll156Kf3P//xP2m677dIHH3wwrzcN5iox1syJtWZN3DUj8VftxGCz1tzjsUaLy0o0im+//ba09NJLl84+++xm3aJTp04tLbvssqXf/e5383pT5is9e/YsXXbZZfN6M+Y7999/f2nVVVctvfHGG6X4OHrppZfm9SbNV+6+++5SixYt8ucL/+eiiy4qLbfccpqkVCoNHz681KlTp2bXFhtttFHpyCOPrHZffJYMHjx4nm0TzG1irJkTa82auKt+xF91E4PVrrnGY40Vl+kp1Ujuueee9Nlnn6WDDz44NWcvvvhi+vDDD9NCCy2U1l133TwEKbKk0cOhubvwwgvTEksskYeqRVfP5j786OOPP06HH354uuGGG/IQJKqbMGFCuvHGG3OvzNatW2ueKiZOnJgWX3xxbdJMxWfnCy+8kLbZZptq98ftp556ap5tF8xtYqxZE2vVTdxVP+KvmRODMTfiMkmpRnLttdemAQMGpO7du6fm7N13383/n3nmmXl42n333ZcWW2yxtPnmm+cP+ebq2GOPTTfffHN65JFH0tFHH50uv/zyNGjQoNRclUqlnMA98sgjm/1w15pOOeWU1K5du5zAjC6vd9999zzZR/OrGNJ4xRVX5GOH5ilOAH333Xfpe9/7XrX74/ZHH300z7YL5jYx1syJteom7po18desicGYW3GZpFQNkUypq4B5eXr++eerPWfMmDHpwQcfzMV4m3u7RO2XEONJd99991zkbPjw4fnx2267LTXXY+X444/Pibm11lor1x6LmjiRyBw/fnxqjm0SSYVJkyalIUOGpKauoZ8pJ598ch6L/dBDD6WWLVumAw88MAeTTc3sfNZG0fdtt902j92P91FTMztt0pxFe1QV75Oa98GCQIw1523TnGKtqsRdc942zS3+CmKwxm8f0hzFZS1iDJ9GrJ7pi2lmoph5VJUvO+ecc/KP7Bi21lSH2dS3XZ5++um0xRZb5Gr7m266aeWxuBLfVlttlYetNedjpSyOlW7duqVnnnkmt01za5O999473XvvvdU+qCLDHkHAfvvtl66//vrUVMzJcRIJ7+h9GV1f+/Tpk5qShrZLJKSiEGm8X6677ro8RLipmZ1jJdoiCkt+8cUXqTl1E48hv3GiY7fddqvWSyKu4Pnoo4/O0+2DhhJjzXnbNKdYqypx15y3TXOLv4IYrHHbp7nGY40Zl7Wa5RzNzJJLLpmn+oqcXvQEimx6U01INaRdomdU27Zt89XDykmpqVOn5kuK9uzZMzXnY6WqOBMTouZWc2yTX/3qV+ncc8+t3I6EQwx/jSs3NLXAcU6Ok/I5g7h8c1PTkHaJHxaRkCr3vGyKCak5PVaakzZt2uRj4W9/+1u14Cdu77LLLvN022B2iLHmvG2aU6xVlbhrztumucVfQQzWeO1DapS4TFJqDv3jH/9I7733XpMeutcQHTt2zLVezjjjjHyGIRJRF198cX4shtw0R9F7LM7SxY/qTp06peeeey53Md95551Tjx49UnNU83W3b98+/7/CCivks5rN0ciRI/MUydyowxa1Q04//fTcJk3xLF19RcKyX79++Zi55JJL0qefflp5rEuXLqm5inpjUacv/o9ehnEmKqy44oqV91NTdsIJJ6QDDjgg16SL98dvfvOb3BZqjdGUibHqJtaaOXFX3cRfdRODzVpzj8caLS6r1zX6qNM+++xT6tu3rxaqIi5ff+KJJ5aWXnrpUocOHUpbbbVV6fXXX2+2bfTCCy+UevfunS8TuvDCC5dWWWWV0hlnnFGaPHnyvN60+cZ7770Xp6RKL730Uqm5evXVV0v9+/cvLb744qW2bduWevXqlS+tOmbMmFJzv8RuHBu1Tc3ZQQcdVGubPPLII6Xm4sorr8yXgG/Tpk1pvfXWKz366KPzepNgrhNj1U6s1TDirv8j/qqbGGzWxGONE5epKQUAAABA4ZpmYQ4AAAAA5muSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAhZOUgmagRYsW6a677prXm9Gs9erVK11++eXzejMAAApx8MEHp1133bXe85955plpnXXWmavbBMx/JKVgAf6ij2RTTK1bt07f+9730tZbb51+//vfp+nTp1ebd9y4cWm77babq9szPwUS/fr1S8cdd1yTW1dNv/3tb9P//M//pMUWWyxPW221VRo5cmSdx0nV6e23367M89FHH6Wf/OQnafnll09t27ZN3bt3TzvttFN6+OGH58GrAoDmoa4YIk4kxnd12XXXXZc6d+5c53LK3/VHHnnkDI8NGjQoPxbzzC3vv/9+XsfLL79c7f5f/vKXedvr66STTqoWezQ0qQUsmCSlYAG27bbb5oRTBAN//etfU//+/dOxxx6bdtxxxzRt2rTKfF26dMnJhrpMnTo1NTelUqlaGy2IRowYkfbZZ5/0yCOPpKeffjr16NEjbbPNNunDDz+s9TipOi233HL5sTh21l9//fSPf/wjXXTRRem1115LDzzwQD6WjjrqqHn0ygCAhogTSjfffHP6+uuvK/d988036aabbsrxwbzQqVOnmSbTamrfvn1aYokl0oKsKcSXUDRJKViARaIpEk7LLrtsWm+99dKpp56a7r777pygqnpmqurwvfLZrFtvvTWfoVt44YXTH//4x/zY8OHD02qrrZbvW3XVVdNVV11VbX1jxoxJe++9d1p88cVTu3bt0gYbbJCeffbZvK6zzjorvfLKK5WeODM7Mxa9udZYY428/csss0w6+uijK4998MEHaZdddsmBSceOHdNee+2VPv744xl6ZN1www15SFwEPLFNX375ZeWs2qOPPprPzpW3JV5zJHDi7wcffDBvd6z78ccfT++8805eX/Q0i3VuuOGG6e9//3u17Y12WGmllXK7xHx77LHHTNdVH7N6neHcc89NSy+9dOrQoUM67LDD0uDBg6v1RrvxxhvzGdC4L/ZX9JyKXnI1eziVj5OqU8uWLaudQY0eVvG6Vl555bxvTjjhhPTMM8/U67UAAPNWxIGRfLrjjjsq98Xfkaxad911Z/rc8ePH55Nc3bp1S4suumhac801czKrqogvLrzwwrTiiivmuCLWdd555+XHyie6Yj0RU0R8WbOn0zXXXJPj1Zq9+Xfeeed00EEHzdDrPv6+/vrrc1xbjrEilttiiy2qxY3l7Y9tihNstYn4NE62RTwVMVecjHv++ecrjz/55JNp8803z689ep4PGDAgff755/mxKVOmpGOOOSbHYxEHbrrppum5556rPLeu+DKSU3GyL3qhL7LIImnttddOf/7zn2e6H6C5kpSCJia+rOOLr2pQUptTTjklf8m++eab+cs3Eho/+9nPcoAR951//vnp5z//eQ4IwldffZW/sMeOHZvuueee/AX/05/+NAcXP/zhD9OJJ56YkxnlnjhxX22GDRuWe+D86Ec/yr1yYlkR4IT4Ao/gZcKECTnZ87e//S0njWouK+6LJNt9992Xp5j3ggsuyI9FgqhPnz7p8MMPr2xLBGRlsc1Dhw7Nr3GttdbKr2v77bfPiaiXXnopt0UMXYukUYigJdrp7LPPTqNGjcq9iDbbbLN6rasu9XmdkXCKfREB4AsvvJCDv2i7mfnvf/+be71F0rA+Yv3xemJ/RJKxpoac3QQA5q1DDjkkn2CsehJw4MCBs3xe9KiKRE3EVK+//nqO0Q444IB84rFsyJAhOSaJ2PCf//xn+tOf/pRP1IVy6YCIpSIWqi0G3XPPPdNnn32We3eXReInkjn77bdfrUP54oRd1d7effv2zSfpYt2RLKoaM3Xt2jUnnmoTy4+EWySTIqaKk3xR+iLEkMMtt9wyx7DR6/yJJ57IceB3331XiRtvv/32HA+/+OKLOWaNWDFiqKpqxpennXZa3hcRu73xxhvp+OOPT/vvv3+O+4AaSsAC6aCDDirtsssutT72wx/+sLTaaqtVbsdb/c4778x/v/fee/n25ZdfXu053bt3L/3pT3+qdt8555xT6tOnT/77mmuuKXXo0KE0fvz4Wtd5xhlnlNZee+1ZbnfXrl1LP/vZz2p97KGHHiq1bNmy9MEHH1Tue+ONN/L2jhw5srKeRRddtDRp0qTKPCeffHKpd+/eldubb7556dhjj6227EceeSQv56677prlNq6++uqlK664Iv99++23lzp27FhtfVXVtq7a9OzZs3TZZZfV+3XG6znqqKOqLWOTTTaZaRsPGjSotMIKK5S+/vrrasdJrKtdu3aVaY899siPPfvss3mdd9xxxyy3HwBoXHXFEBGzVf2ZNnz48FKnTp1mGRN++umnpbZt2+ZY7/333y8tvPDC+b54LOZpiO2337504okn5r8jBorl/va3v6113nJs+dJLL9W6XWU777xzaeDAgZXbEVt26dKlNG3atFpjydpi3W+++aa0+OKLl2655ZbKfeuss07pzDPPrPO1RPx63XXX1frYPvvsk+Or2nz11Vel1q1bl2688cbKfd9++22OZS+66KI648t4XrT9U089VW15hx56aF4fUJ2eUtAERR6qaoHM2kQX47JPP/00jR49Oh166KF5OFl5iuFj0YOnfCYpumXXtxdObT755JPc0yrOSNUmzi5FT6OqvY1WX3313GMnHiuLYXvRBbsshgDGsuuj6usOkydPzme3yuuJ1/2vf/2r0lMqisf37Nkzd7+Os4ZxNi56JM2J+rzO6JW10UYbVXtezdtVRRfx6GofZyeje3lVceYw9l95+tWvfpXv///5yv8/vBMAWLAtueSSaYcddsi9eqKXTvwd981K9AqK3tnRwydqOkUs9NBDD1VioYhNomdSXfFbfUWPpeh1VO7lFDFVlGAolxSojxgeFz2OohdYiLgmeu/PrJB7lCSIHlZxQZjoWV+ObcvPr+t1xXzRA32TTTap3Bc9rCIeqxqX1owvoydZ9D6LGLJqXP2HP/yh2rqB/6/V//4PNCHxRVke31+XqsO1yuP7Ywhf7969q81XDhRiPPycmtUy6kqm1by/3OW6LB6rWaOgLjWHqZ188sm56/gll1ySu2THNkZtpW+//TY/Hsmv6K4dNQMiQDv99NNznYPoAj67w9vq+zprzlNOItUU2x7DLaPbfASUtb3m8hDJqqJOVqwjjhdXtwGAYkV9o4kTJ85w/xdffJEfmx0xXK9cc+nKK6+s13MuvfTSdNlll6XLL78815OKuCGuCliOhRojBgwxLC7itb/85S+5hmfUXvrFL37R4OVEgilqT0Wt00hORVIpTiDWJeK2fffdN6836q6eccYZuSj8brvtNtPXVtfJu9riuNri6lhf1NGqamYXHoLmSk8paGKiyGPUatp9993r/ZyoCRBfmu+++25OXlSdysmtSHbE2aSaY+jL2rRpUxl/X5dI8EQvp5qFuKv2FoqzctFrq+rZpgjYogB7fdVnW8oiIIqzaxGYRCAWRcBrFitv1apVPrsWvZFeffXV/Hi5mGZD1tWQ17nKKqtUajSUVS3KWXbxxRenc845J9eGqtkLbFai11vURYigNXqM1RYUAwBzR1ykpLbv9jjxFXHA7IgaTJFMiim+4+sbC8XFV6IHUtQljd7hb731VrWTWJG8qSt+i1gozCoeimX84Ac/yD2kond3XFwlalnVpa4YK+K1iHniZGrUl6pP3axYV9R1ihOMsQ3l2lsR39b1uiIOjm2IOlNl0XMq9tnM4tKI8yL5FLFezbi6PrVHobnRUwoWYNH9+aOPPspf2HHltkhMRJHFHXfcMR144IENWlacRYqC3nFmbrvttsvLji/dKEIZ3Z7jqizRGyd61MQ6YshcFAaPwpJR7DuSTe+9915OXEUxyUhA1XY2KNZz5JFH5quYxHriqnlx1ZOf/OQnOfETwUF0746zdXFJ3bg6XBRYb0jCJbYlinNG8ii6S89syGEECDHkLc7exVmvKOBZtddVFP2MZF0UN48rstx///358XKwWNu6Flpo5vn++rzOaI8ooB63o7DnLbfckhNiESiWRZIstjcCstiOOBZCuZt4fcSVBWP50RU9irnHdsX2RPH1KM5Zs3s6ANA44rv/17/+deUCMJG0ie/fa6+9Nl9luKqI9SLGqioSJpEAqdnDvfzdXd9hcRELxbC6p556Ksc60XspYopy4iXKAsQFcqLcQawzhrNF6Yco4B2lHyKmi22PODRiwJg/ro5cm4h9IuaK50YSbGYitone7FHSIIYVxjLLveWjt1T0CIsr5sWJxbp8/fXXuVd89IKPE63RuyqSfuWTt1HAPZJcsS8iPo3XF8XYozB7DH388Y9/nJ8f8V1cdCZiryjjEK+7LhEDR6H2SIJFzBhX7Js0aVJu34jPylcbBP5XjRpTwAIiij/GWzimVq1alZZaaqnSVlttVfr9739f+u6776rNW1uh85rFKEMUcoxikW3atCkttthipc0226xaEewomrn77rvnwt9RbHyDDTbIxbLLhSfjsc6dO+flR1HOulx99dWlVVZZJRePXGaZZUo/+clPKo/95z//yYUwoyB3FKbcc889Sx999NFMC6pHAfEoJF42atSo0sYbb1xaZJFF8rbEay4Xovz888+rPTce69+/f543ir3/+te/rlZ49PHHH8+3oz1inrXWWqtacc3a1jWrQuf1eZ3h7LPPLi255JKl9u3b58KgxxxzTF5X1WWWj4GqU7RRfQril40dOzYXVY/lxb5fdtll87ZFmwEAc8/zzz9fGjBgQGnppZfO8VXEVjfddFO1eSKmqu37vhz7zOq7flaFzuMiNjFPxBuxHaeddlrpwAMPrLbMiC3PPffcvM6I33r06FE6//zzK49HEfSIoxZaaKEcN9W1XVHUPGK/2P533nmn2mM1Y7xPPvmktPXWW+ftivmrxiVffvlljkXjIi8zM2XKlNLee++dty1inChSfvTRR1e7KMyIESNKffv2zcXcI46N/VGOF2O+iFMjHovHoyh6+aI0oa74cvr06aVf/vKXlXg34vRY7qOPPjrT7YXmqEX8U05QATD/ioKZMbyw5tlTAIDmJEogRE+q6PW03nrrzevNAeaA4XsA86HoGn711VfnehDR/T5qL0Qh8+jWDwDQHEVNp3HjxqXBgwenjTfeWEIKmgBJKYD5UNS3ivpV5557bq7vFTWsot5D1KMCAGiOog5p//79c+HyP//5z/N6c4BGYPgeAAAAAIWb+SWiAAAAAGAukJQCAAAAoHCSUgAAAAAUTlIKAAAAgMJJSgEAAABQOEkpAAAAAAonKQUAAABA4SSlAAAAACicpBQAAAAAqWj/DwVERJ9zifESAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
spontaneous vs normalSB vs normalsharedcontrol-relative Jaccarddirect: spontaneous higherdirect: SB higher
feature
receptor candidates3030200.50000003
significant TF activities10760.54545508
\n", + "
" + ], + "text/plain": [ + " spontaneous vs normal SB vs normal shared \\\n", + "feature \n", + "receptor candidates 30 30 20 \n", + "significant TF activities 10 7 6 \n", + "\n", + " control-relative Jaccard \\\n", + "feature \n", + "receptor candidates 0.500000 \n", + "significant TF activities 0.545455 \n", + "\n", + " direct: spontaneous higher direct: SB higher \n", + "feature \n", + "receptor candidates 0 3 \n", + "significant TF activities 0 8 " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "name": "stdout", "output_type": "stream", "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" + "Control-relative TF activity Pearson r: 0.854\n" ] } ], "source": [ - "c = CarnivalFlow(lambda_reg=0, indirect_rule_penalty=1)\n", - "P = c.build(G, data)" + "def select_direct_receptors(\n", + " results_df, receptor_universe, graph, n=30, padj=0.05, min_abs_log2fc=0.5\n", + "):\n", + " candidates = results_df.loc[results_df.index.intersection(receptor_universe)].copy()\n", + " candidates = candidates.loc[\n", + " (candidates[\"padj\"] <= padj)\n", + " & (candidates[\"log2FoldChange\"].abs() >= min_abs_log2fc)\n", + " ]\n", + " candidates = candidates.loc[candidates.index.intersection(graph.V)]\n", + " return candidates.assign(abs_stat=candidates[\"stat\"].abs()).sort_values(\n", + " [\"abs_stat\", \"padj\"], ascending=[False, True]\n", + " ).head(n)\n", + "\n", + "\n", + "direct_receptors = select_direct_receptors(direct_results, unique_receptors, G)\n", + "direct_mat = direct_results[[\"stat\"]].T.rename(\n", + " index={\"stat\": \"Leukemic_spontaneous.vs.Leukemic_SB\"}\n", + ")\n", + "direct_tf_acts, direct_tf_pvals = dc.mt.ulm(\n", + " data=direct_mat, net=collectri, verbose=False\n", + ")\n", + "direct_significant_tfs = (\n", + " direct_tf_acts[direct_tf_pvals <= max_pval]\n", + " .T.dropna()\n", + " .sort_values(\"Leukemic_spontaneous.vs.Leukemic_SB\")\n", + ")\n", + "\n", + "fig, axes = plt.subplots(1, 2, figsize=(12, 5))\n", + "receptor_plot = direct_receptors.sort_values(\"log2FoldChange\")\n", + "axes[0].barh(\n", + " receptor_plot.index,\n", + " receptor_plot[\"log2FoldChange\"],\n", + " color=np.where(receptor_plot[\"log2FoldChange\"] > 0, \"#d95f02\", \"#1b9e77\"),\n", + ")\n", + "axes[0].axvline(0, color=\"black\", linewidth=0.8)\n", + "axes[0].set(\n", + " xlabel=\"Direct contrast log2FC\",\n", + " title=\"Differentially expressed receptor candidates\",\n", + ")\n", + "\n", + "tf_plot = direct_significant_tfs.iloc[\n", + " np.argsort(\n", + " direct_significant_tfs[\n", + " \"Leukemic_spontaneous.vs.Leukemic_SB\"\n", + " ].abs().to_numpy()\n", + " )[-20:]\n", + "].sort_values(\"Leukemic_spontaneous.vs.Leukemic_SB\")\n", + "tf_values = tf_plot[\"Leukemic_spontaneous.vs.Leukemic_SB\"]\n", + "axes[1].barh(\n", + " tf_plot.index,\n", + " tf_values,\n", + " color=np.where(tf_values > 0, \"#d95f02\", \"#1b9e77\"),\n", + ")\n", + "axes[1].axvline(0, color=\"black\", linewidth=0.8)\n", + "axes[1].set(xlabel=\"ULM activity score\", title=\"Direct differential TF activities\")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "control_tf_common = tf_acts1.columns.intersection(tf_acts2.columns)\n", + "tf_profile_correlation = tf_acts1.loc[\n", + " \"Leukemic_spontaneous.vs.Normal\", control_tf_common\n", + "].corr(tf_acts2.loc[\"Leukemic_SB.vs.Normal\", control_tf_common])\n", + "control_tf_set1 = set(significant_tfs1.index)\n", + "control_tf_set2 = set(significant_tfs2.index)\n", + "control_receptor_set1 = set(df_top_receptors1.index)\n", + "control_receptor_set2 = set(df_top_receptors2.index)\n", + "\n", + "receptor_tf_metrics = pd.DataFrame(\n", + " {\n", + " \"feature\": [\"receptor candidates\", \"significant TF activities\"],\n", + " \"spontaneous vs normal\": [len(control_receptor_set1), len(control_tf_set1)],\n", + " \"SB vs normal\": [len(control_receptor_set2), len(control_tf_set2)],\n", + " \"shared\": [\n", + " len(control_receptor_set1 & control_receptor_set2),\n", + " len(control_tf_set1 & control_tf_set2),\n", + " ],\n", + " \"control-relative Jaccard\": [\n", + " len(control_receptor_set1 & control_receptor_set2)\n", + " / len(control_receptor_set1 | control_receptor_set2),\n", + " len(control_tf_set1 & control_tf_set2)\n", + " / len(control_tf_set1 | control_tf_set2),\n", + " ],\n", + " \"direct: spontaneous higher\": [\n", + " int((direct_receptors[\"log2FoldChange\"] > 0).sum()),\n", + " int(\n", + " (\n", + " direct_significant_tfs[\n", + " \"Leukemic_spontaneous.vs.Leukemic_SB\"\n", + " ]\n", + " > 0\n", + " ).sum()\n", + " ),\n", + " ],\n", + " \"direct: SB higher\": [\n", + " int((direct_receptors[\"log2FoldChange\"] < 0).sum()),\n", + " int(\n", + " (\n", + " direct_significant_tfs[\n", + " \"Leukemic_spontaneous.vs.Leukemic_SB\"\n", + " ]\n", + " < 0\n", + " ).sum()\n", + " ),\n", + " ],\n", + " }\n", + ").set_index(\"feature\")\n", + "\n", + "display(receptor_tf_metrics)\n", + "print(f\"Control-relative TF activity Pearson r: {tf_profile_correlation:.3f}\")" ] }, { - "cell_type": "code", - "execution_count": 47, - "id": "8113725f-9fc7-4e6f-aca3-75add7943db6", + "cell_type": "markdown", + "id": "cc156123", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:48.203343Z", - "iopub.status.busy": "2025-06-27T16:26:48.203215Z", - "iopub.status.idle": "2025-06-27T16:26:48.205530Z", - "shell.execute_reply": "2025-06-27T16:26:48.205283Z" - }, "papermill": { - "duration": 0.009226, - "end_time": "2025-06-27T16:26:48.206124", + "duration": 0.007134, + "end_time": "2026-08-06T17:19:00.492750+00:00", "exception": false, - "start_time": "2025-06-27T16:26:48.196898", + "start_time": "2026-08-06T17:19:00.485616+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 47, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "len(set(c.processed_graph.V).intersection(d_measurements1.keys()))" + "### Select lambda for the differential network\n", + "\n", + "The direct network uses the same five-percentage-point TF-fit tolerance as the joint\n", + "analysis. Among eligible lambdas, held-out deregulation of internal-node genes and\n", + "held-out pathway concordance are weighted equally. We then choose the sparsest network\n", + "within 0.05 of the best validation score. This selects complexity without using the\n", + "samples that will be used for the final refit." ] }, { "cell_type": "code", - "execution_count": 48, - "id": "c5396ee0-71b4-43ed-ba48-380edcbd0b49", + "execution_count": 43, + "id": "dd4009bc", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:26:48.218731Z", - "iopub.status.busy": "2025-06-27T16:26:48.218536Z", - "iopub.status.idle": "2025-06-27T16:26:48.220736Z", - "shell.execute_reply": "2025-06-27T16:26:48.220515Z" + "iopub.execute_input": "2026-08-06T17:19:00.506964Z", + "iopub.status.busy": "2026-08-06T17:19:00.506860Z", + "iopub.status.idle": "2026-08-06T17:19:07.268001Z", + "shell.execute_reply": "2026-08-06T17:19:07.267622Z" }, "papermill": { - "duration": 0.009153, - "end_time": "2025-06-27T16:26:48.221333", + "duration": 6.769033, + "end_time": "2026-08-06T17:19:07.268555+00:00", "exception": false, - "start_time": "2025-06-27T16:26:48.212180", + "start_time": "2026-08-06T17:19:00.499522+00:00", "status": "completed" }, "tags": [] }, "outputs": [ - { - "data": { - "text/plain": [ - "6" - ] - }, - "execution_count": 48, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(set(c.processed_graph.V).intersection(d_measurements2.keys()))" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "f1c27628-84a2-47d3-9025-f9ac0f6dab62", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:48.233675Z", - "iopub.status.busy": "2025-06-27T16:26:48.233581Z", - "iopub.status.idle": "2025-06-27T16:26:48.235555Z", - "shell.execute_reply": "2025-06-27T16:26:48.235345Z" - }, - "papermill": { - "duration": 0.008893, - "end_time": "2025-06-27T16:26:48.236119", - "exception": false, - "start_time": "2025-06-27T16:26:48.227226", - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Fli1 -1.0 -1.0\n", - "Runx1 -1.0 -1.0\n", - "Gata1 -1.0 -1.0\n", - "Myc 1.0 1.0\n" - ] - } - ], - "source": [ - "# How many TFs are in common between conditions?\n", - "s1 = set(c.processed_graph.V).intersection(d_measurements1.keys())\n", - "s2 = set(c.processed_graph.V).intersection(d_measurements2.keys())\n", - "for g in s1.intersection(s2):\n", - " print(g, d_measurements1[g], d_measurements2[g])" - ] - }, - { - "cell_type": "markdown", - "id": "446add0f", - "metadata": { - "papermill": { - "duration": 0.005884, - "end_time": "2025-06-27T16:26:48.247901", - "exception": false, - "start_time": "2025-06-27T16:26:48.242017", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "## Which is the best lambda to choose?" - ] - }, - { - "cell_type": "markdown", - "id": "3f60c6ff", - "metadata": { - "papermill": { - "duration": 0.005862, - "end_time": "2025-06-27T16:26:48.259563", - "exception": false, - "start_time": "2025-06-27T16:26:48.253701", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "To choose a robust value of $\\lambda$ we sample multiple solutions, as in the tutorial https://saezlab.github.io/corneto/dev/tutorials/network-sampler.html#vertex-based-perturbation. \\\n", - "We define 3 metrics to choose $\\lambda$: \\\n", - "\\\n", - "$sign\\_agreement\\_ratio = \\frac{n.\\:of\\:nodes\\:matching\\:sign\\:with\\:stat\\:value}{total\\:n.\\:of\\:nodes}$ \\\n", - "\\\n", - "$de\\_overlap\\_ratio = \\frac{n.\\:of\\:nodes\\:also\\:differentially\\:expressed}{total\\:n.\\:of\\:nodes}$ \\\n", - "\\\n", - "$overall\\_agreement = \\frac{sign\\_agreement\\_ratio\\:+\\:de\\_overlap\\_ratio}{2}$ \n" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "id": "7f4e1ef5", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:26:48.271683Z", - "iopub.status.busy": "2025-06-27T16:26:48.271571Z" - }, - "papermill": { - "duration": 76.785688, - "end_time": "2025-06-27T16:28:05.051045", - "exception": false, - "start_time": "2025-06-27T16:26:48.265357", - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" + "Solving direct contrast, lambda=0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ + "Unreachable vertices for sample: 0\n", "Set parameter Username\n" ] }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter LicenseID to value 2775543\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Academic license - for non-commercial use only - expires 2027-02-05\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=1) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=99, rel.err=3.9500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=92, rel.err=3.6000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=1) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=69, rel.err=2.4500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=3) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=93, rel.err=3.6500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=4) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=91, rel.err=3.5500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=5) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=111, rel.err=4.5500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=6) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=100, rel.err=4.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=7) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=90, rel.err=3.5000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=8) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=80, rel.err=3.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=9) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=90, rel.err=3.5000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=67, rel.err=2.3500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=10) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=96, rel.err=3.8000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=11) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=96, rel.err=3.8000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=3) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=100, rel.err=4.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=12) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=107, rel.err=4.3500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=13) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=93, rel.err=3.6500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=14) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=102, rel.err=4.1000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=15) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=110, rel.err=4.5000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=16) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=81, rel.err=3.0500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=17) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=95, rel.err=3.7500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=18) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=85, rel.err=3.2500 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=19) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=82, rel.err=3.1000 (excluded from tol. check)\n" - ] - }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[23/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=20) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=116, rel.err=4.8000 (excluded from tol. check)\n" + "2026-08-06 19:19:00 | [INFO] Set parameter Username\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[24/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.6667) (total rejected=21) -> error_sample1_0: val=1, rel.err=0.6667, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=2, rel.err=2000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=96, rel.err=3.8000 (excluded from tol. check)\n" + "Set parameter LicenseID to value 2775543\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[25/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=22) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=99, rel.err=3.9500 (excluded from tol. check)\n" + "2026-08-06 19:19:00 | [INFO] Set parameter LicenseID to value 2775543\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[26/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=23) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=94, rel.err=3.7000 (excluded from tol. check)\n" + "Academic license - for non-commercial use only - expires 2027-02-05\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[27/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=24) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=104, rel.err=4.2000 (excluded from tol. check)\n" + "2026-08-06 19:19:00 | [INFO] Academic license - for non-commercial use only - expires 2027-02-05\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[28/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=25) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=103, rel.err=4.1500 (excluded from tol. check)\n" + "Solving direct contrast, lambda=0.001\n", + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[29/30] rejected (tol=0.05 violated by 'error_sample2_1' with rel.err=0.5000) (total rejected=26) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=104, rel.err=4.2000 (excluded from tol. check)\n" + "Solving direct contrast, lambda=0.003\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[30/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=27) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=1, rel.err=0.5000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=1, rel.err=1000000000.0000, regularization_edge_has_signal_OR: val=85, rel.err=3.2500 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:Done. accepted=3, rejected=27, solutions returned=4\n" + "Solving direct contrast, lambda=0.01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "lambda: 0.01\n" + "Unreachable vertices for sample: 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" + "Solving direct contrast, lambda=0.03\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[1/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=1) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=51, rel.err=1.8333 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=1) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=38, rel.err=1.1111 (excluded from tol. check)\n" + "Solving direct contrast, lambda=0.1\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=29, rel.err=0.6111 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=3) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=19, rel.err=0.0556 (excluded from tol. check)\n" + "Solving direct contrast, lambda=0.3\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=4) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=40, rel.err=1.2222 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=5) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=34, rel.err=0.8889 (excluded from tol. check)\n" - ] + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAGGCAYAAABsTdmlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAartJREFUeJzt3QV4FFcXBuAvHqJAICFACO7uUtyhFJdCkZYKpZQCNShtKVSoUqBoS4GixSl/cXeXFncnEIIkhACx+Z9zl91ulE1Isva9zzNkdnbk7uySnD1z5l4HTdM0EBERERFZEUdzN4CIiIiIKK0YxBIRERGR1WEQS0RERERWh0EsEREREVkdBrFEREREZHUYxBIRERGR1WEQS0RERERWh0EsEREREVkdBrFEREREZHUYxBKlYObMmXBwcDBM7u7uyJMnDxo2bIjRo0cjNDQ0yTZffPGFWtdYdHQ0+vXrh8DAQDg5OaFixYpq+d27d9GtWzf4+/urbdq1a2ex78WqVavUa0tOwYIF0adPn3Tt93m2fV4nTpxQr+nSpUuwFNIW+Sz8+OOPsEYNGjRQk7V8FjL7mJMmTVK/R1J6n5N7johM55yGdYns0owZM1CyZEnExMSowHXHjh347rvvVKCxYMECNGnSxLDu66+/jhYtWiTYfvLkyZg6dSp++eUXVKlSBV5eXmr5l19+iWXLlmH69OkoUqQIcubMCUsOYidOnJhsICuvwcfHB9ZGgtiRI0eqoEuCGaLMCGJz5cqVJFCWL7S7d+9W/++JKP0YxBI9Q9myZVG1alXD444dO2Lw4MF44YUX0KFDB5w9exYBAQHqufz586vJ2LFjx5AtWzYMGDAgyXL5I9ajR48Mew8ePXqkjpWVKlWqlKXHs0WapuHx48fmbgZlETc3N9SsWZPnm+g5sZyAKB0KFCiAn376CQ8ePFBZ1pTKCWR+2rRpKrjUlyXoyxQ2bNiAkydPGpZv2bLFUH7w1Vdfqeyv/LHLnTs3Xn31Vdy+fTtBGyR7+OKLL2Lp0qUqkJRyB8ksips3b+Ktt95SAbWrqysKFSqknouNjU320vWYMWPUOpIlrlWrFvbs2WNYT7JIkoXVvx79pL8Mn/iSrARj77//viqb8PX1VRlm2edff/2V7s+aqW3VO3DgAF566SV1bDkvcn4WLlxoeF7eg86dO6t5KQ8xfm/ktTo6OiYoF5H3Wp5/5513DMvi4+ORI0cO9Vr1pESkf//+yJcvnzrvhQsXxvDhw/HkyZME7ZN9yZeaKVOmoFSpUup9/uOPP5J97XIFoHfv3ur1/v333888Rz/88IO6UiDvi3yhkUzzmTNn1H6GDh2KvHnzqvelffv2SUpi5DV9//33hs+elLr06tUL165dSxJ0y3rBwcHq/FauXBmrV69Otl0RERH44IMP1Hsm50TOzaBBg/Dw4UOkx6JFi1CjRg31Gjw8PNQ5fu211zLsmKZuK+dKrq7I51zOc/bs2VVgumLFCvW8nP/jx49j69aths+XPuOfUjmBXOVp3LgxvL291WurXbs2Vq5cmWAd/e+PzZs34+2331aZXj8/P/WF+saNG+k6p0RWSyOiZM2YMUOT/yL79+9P9vnIyEjNyclJa9y4sWHZiBEj1DZ6u3fv1lq1aqVly5ZNzct08+ZN9bNSpUpa4cKFDcvDw8O1uLg4rUWLFpqnp6c2cuRIbf369dq0adO0fPnyaaVLl9aioqIM+w4ODtYCAwPVPqZPn65t3rxZ27dvnxYSEqIFBQWp56dOnapt2LBB+/LLLzU3NzetT58+hu0vXryo2lqwYEF1zOXLl6upXLlyWo4cObT79++r9c6dO6d16tRJratvq0yPHz82tKN3796G/cp2cpzZs2drmzZt0tasWaN98MEHmqOjo/bHH38kOIeJt02JqW0VckxXV1etbt262oIFC9TxpT2yvbynIjQ0VPvmm2/UsokTJxpekyw/deqUWj5v3jzDPuWY8h4WK1bMsGzv3r1qvVWrVqnHjx490sqXL6/eux9//FFbt26d9tlnn2nOzs7qM2BMtpP3VNaX40ibjx07ZnidP/zwg1rv3r17WsOGDbU8efJoBw4cMOkcyTlt06aN9vfff2tz5szRAgICtOLFi2s9e/bUXnvtNW316tXalClTNC8vL7WesTfffFPtY8CAAeq8yXq5c+dWn6fbt28n+Zz37dtX7e/XX39Vr0faWb9+fcN6Dx8+1CpWrKjlypVLGzNmjPosjhs3TvP19dUaNWqkxcfHp+mzsGvXLs3BwUHr1q2bOu9y3uQ9ldeWEcdMy7ZyTGnL66+/rv3111/qPHz99ddqfXHo0CH1f1P+n+s/X7LM+L3Sfx7Fli1bNBcXF61KlSrqcyuf72bNmqlj/Pnnn0l+L8m+3333XW3t2rXqd4T8P5DPCpE9YRBLlM4gVkiAUKpUqRSDWCF/JCWwSUz+2JcpUybBsvnz56vtlyxZkmC5tEGWT5o0KcEfYAmiT58+nWDdt956SwUoly9fTrBcAivZx/HjxxP8IZVAMDY21rCeBMKyXNqi98477yR5XaYGH7LvmJgYFfDIH/S0bKuXlraWLFlSHUeOaezFF19UQb98URCLFi1S20rwn1j+/PlVwCeePHmi3r+PP/5Yra8/rxKwSNAhX2aEBHzy/MKFCxPs67vvvlPLJajVk8cSGN29ezfZ1ylBrMzLFxeZLl26ZPI5qlChguE1irFjx6rlL730UoL1Bw0apJbLlydx8uRJ9bh///4J1tMH65988okhsHZ3d9fat2+fYL2dO3eq9YyD2NGjR6svL4n/Dy1evDjBFwBTPwv6z7Dxl5bEnueYpm67bds29Xj48OGptlf+fxufD73kgtiaNWtq/v7+2oMHDwzL5LNetmxZ9XnUB9D630uJ36fvv/9eLZcvsUT2guUERM93JSNDz59cLpbLkm3atFGX/vWTXLKUnhH0JQd65cuXR/HixZPsQy6Ry2Vj4320bNlSPS+XN421bt1a9ZpgvE9x+fLldL8OueRbp04ddQnc2dkZLi4u+P3331X5RGri4uIStFku2aalrefOncOpU6cMdcbG+2rVqhVCQkJw+vTpZ7ZfLulKuYfYtWsXoqKiMGTIEHXpdv369Wq5PC/lDJ6enurxpk2b1HynTp0S7EtfarFx48YEyxs1aqTKEZJz6NAhdWlaaq137typLtubSl6nlEPoSbmC/twZ0y+/cuWK+imXp43bq1e9enW1rr79ckOSlIwkruWWS9+J2ymfRakpl8+v8XvRvHnzBCU0pqpWrZr62aVLF1Uecv369STrPM8xTd1WXzphXF7yPKRUYe/eveqzo7/xU8hnvWfPnqqcI/HnVspljGXE/1sia8Mglug5/vDcuXNHBYsZ5datW7h//76qxZPAz3iSOtewsLAkdzknt4///e9/SbYvU6aMej7xPqSezpjUQgqp400PqdGVIENqCefMmaOCnv3796u6xWfdvCQ3uhm3edSoUWlqq7x2ITWNiV+/1Kom9/qTIz1OSHAnN+1JsCo1tVIfKoGnPJbjSXBr3DOFfBbki0biLtZkOwnk5flnvXd6EijLa5HeLuRLTVok7uVCPkupLde/J/r2Jdcu+Yzrn9f/lNeaWOJl8hr+/fffJO+F1HzKF0BT3gtj9erVw/Lly1VgKbW6UvMtQef8+fMz5Jimbiv16RJgJncO0uPevXtq/ymde5H485PR/2+JrBF7JyBKJ7nhQjKH6e0XMzn6mzTWrFmT7PPyx9RY4oBJvw/Jynz99dfJ7iMjg+7kSOAqN8VI92PG7Ut8c1NyJPg2Xi+tbZXXLoYNG6ZudElOiRIlTMrECglYJaBs2rSpYfmnn36Kbdu2qXYaB7Hyvkk2TYIR49ctN09J0KVvW2rvnd6HH36I8+fPq0BNH7BlNn1QJNnqxD1syA1D+vbr15MvVYnJMuPuymQbuelJupFLTuJzYoq2bduqSc6/3NQnfTZ3795dHVcy489zTFO3lZst5f++vN7UvoyYSjLykj2Xc5+Y/mat9JwrIlvHIJYoHSRLJ9k+uUNaegHIKNLbwJ9//qn+QMod2Ondh/TrKlnNlC5Xp5VxludZXXhJcCZZPuMgTf7Ym9I7Qbly5Z6rnRKgFitWDP/88w+++eabVNdNLXMlgUnp0qWxZMkSHDx40LAvCWbl/ZYeEqRvXP3lbX2AK5e4JVMod/7rzZo1y/C8qSSgkV4v5NKyXN6XrL/ciZ6ZJMus/xJi/Lokiy5lINLLgpAyB+mRYO7cuaq7OT3JTMulbOMgVj6Lcu4k8JUvNhlJ3r/69eurTPXatWtx+PBhFcQ+zzFN3VZKcyR4lj6gE18tSNxGUzKjUoYi/9/lKob0wKH/PyblNPJ+yJeKxGVDRMQgluiZpD9XfW2cZNW2b9+uBkCQy4nS0b9kZTKKjOAlwYHUNb733nuqHlEuZ0pNnNQsSgbKOEBKjvxRleyh1CgOHDhQBXZyyVi69ZHgVrp1SpxpMzW4lK6b5A+4vHbJ9uovSRvTd/sll++lxu/q1atqYAcJDOXyfGaT4E/aKHWMEgBKWYN0fSWBmNSaSr2ukMvQ4tdff1UZbgnMJHDRZxol6JQulCSgkPpeIc/LtG7dOlWTKGUCepItle65pDssOddyzqTLJAmK5P00ztqaSrr2krbJuYyMjFQZ2swin5M333xTvWYJouUcyuv47LPPEBQUpPpGFvLFSL7ASTdwUu4gXZXJeyzdyyW+vC5dU8kXASkDkO3lMyOBmXwJlHMo3ZOl5cva559/rv4vyHsjn2EpvRk3bpz6PyIB7fMe09Rt69atq2pV5RxICYJ85iVglUBausZ699131f7kMyBfSuWqhHQFJp+xlL6oSVAsX5Kknl3Or/zfksES5PePlEuklrknslfMxBI9g/TRKuSPimR95CaXjz/+WP0Bz8gAVkhwKP1Myh/m2bNnqz9sEijJH2z5I21KplKCReknVQJH6TNU/uhLICTBl4wmlp7srFyulRuM5I+qBMlyyfzixYvJjnQl50uCfQmW5bKs/PGW/kmlHfp+bDOTBAH79u1T5RQSlEi9oQSmklmVWl09OR9jx45V51pKQiT7LV9O9Dc2SdApAZ0MaiHBh54s/+2335IEpbKOfNGQjKWcd6mblABaApIRI0ak+/VIcCgZWQlgJZDNzHMomUXJ4MtNeBKQy5UG+czI59C4BlM+A5I9lM+DfE6lX1l5vxMPlyvryJe+b7/9Vn1ZkM+MfCmQfpbl/KV1pDQJIOWzLf//5PzK/0cZiERuqtPXfD/PMdOyrfTXKv3jyrmSeVlPPmOffPKJYR15r6RE4I033lB9SsuNbykNcyz/v+V1yGdFPoMSPFeoUEH9PpAgmYiScpAuCpJZTkRERERksdg7ARERERFZHQaxRERERGR1GMQSERERkdVhEEtEREREVodBLBERERFZHQaxRERERGR17K6fWOl7T4bxk34z2Xk0ERER2RNN01S/xTKstwxsYs3sLoiVAFZGnyEiIiKyV1evXk3z6I2Wxu6CWMnA6t88GfucTCNjt8u3Nv0XARnZhoiIiKxLRESESubp4yFrZndBrL6EQAJYBrFpGw5VT84bg1giIiLr5fA0HrJmdhfEUvo/7DLut36eiIiIyJzMWtG7bds2tGnTRl2mlsBo+fLlz9xm69atqFKlCtzd3VG4cGFMmTIlS9pq7zw8PHDp0iU1yTwRERGR3QaxUmdZoUIFTJgwwaT1L168iFatWqFu3bo4fPgwPvnkEwwcOBBLlizJ9LYSERERkeUwazlBy5Yt1WQqyboWKFAAY8eOVY9LlSqFAwcO4Mcff0THjh0zsaVEREREZEmsqoOw3bt3o1mzZgmWNW/eXAWyMTExZmuXPXj06BGqVaumJpknIiLKSl988QUqVqyY4fvdsmWLKmm8f/8+soKU5cnxjhw5YvI2M2fORPbs2TO1XdbIqoLYmzdvIiAgIMEyeRwbG4uwsLBkt3ny5InqTsJ4ovQNEiFfFmSSeSIiyjhx8Rp2n7+Dv45cVz/lcVpIUJTa1KdPnxTXe+GFF7L8rZT2tGvXDvZIurcKCQlB2bJlM3S/fezwnFpd7wSJ74yXkSeSW643evRojBw5MkvaRkRElFZrjoVg5P9OICT8sWFZoK87RrQpjRZlA03ahwRFegsWLMDnn3+O06dPG5Zly5bNMD9jxgy0aNHC8NjV1ZVvWhZ3WZknTx6ec3vLxMqbLtlYY6GhoXB2doafn1+y2wwbNgzh4eGGSQY5ICIispQA9u05hxIEsOJm+GO1XJ439e+jfvL19VWJncTL9OSytPFzOXPmTHG/DRo0wLvvvotBgwYhR44c6urnr7/+qm7MfvXVV1WH+UWKFMHq1asN28TFxaFv374oVKiQCp5LlCiBcePGJSgL+OOPP/DXX38ZssFySV9cu3YN3bp1U22S/sirVq2KvXv3JmjT7NmzUbBgQfWaZF0ZQtU4sfX999+r3ovk2HLz+OLFixNsv2rVKhQvXlw937BhQ3V5PzXvv/++6klJT+7LkTavXLnSsExe49SpUxN8UZD7dqQnpZIlS2LSpEmplhOsWLECxYoVM7RJzk9yJQ5r165V+/Xy8lJfRPRfXlI7p7bMqoLYWrVqYf369QmWrVu3Tn3IXVxckt3Gzc3NMLABBzggIiJzkQArKjrWMD14HIMRK44jucIB/bIvVpxQ6+m30V99zEoSHOXKlQv79u1TAe3bb7+Nzp07o3bt2jh06JC6N6Vnz56IiopS60vJmQxnunDhQpw4cUJlhaU3IXksPvjgA3Tp0sUQhMkk+4qMjET9+vXVqJAS1P3zzz/46KOPEpSwnT9/XnXH+ffff6tJut389ttvDc9/+umnKoCcPHkyjh8/jsGDB+OVV15R6wlJZHXo0EH1dCRB5Ouvv46hQ4em+volkN++fbuhHbIvOR/6fUpy7cyZM6rt4rfffsPw4cPx9ddf4+TJk/jmm2/w2WefqfOYHAlqO3XqpEoBpE1vvfWW2j4xOb9yI7sE8dJF6ZUrV9S5TO2c2jzNjB48eKAdPnxYTdKUMWPGqPnLly+r54cOHar17NnTsP6FCxc0Dw8PbfDgwdqJEye033//XXNxcdEWL15s8jHDw8PVseQnmS4yMlKdN5lknoiI0ubhkxgt+OO/n2uSfTzLjBkzNF9f32Sfk9/h7u7umqenp2FatmxZivuqX7++9sILLxgex8bGqm2M/zaHhISo/e7evTvF/fTv31/r2LGj4XHv3r21tm3bJlhn6tSpmre3t3bnzp1k9zFixAgVA0RERBiWffjhh1qNGjXUvPxtkte2a9euBNv17dtXe/nll9X8sGHDtFKlSmnx8fGG5z/++GPV/nv37iV73Pv372uOjo7agQMH1HZ+fn7a6NGjtWrVqqnn582bpwUEBBjWDwoKUsuMffnll1qtWrXU/MWLF9XxJN7RH79s2bIJ1h8+fHiCNsl7Ko/PnTtnWGfixIkJjpvcObX1OMisNbFyk5CkzfWGDBmifvbu3VvdiSffJOSbhp5cmpDLAPLNauLEiWqQhPHjx7N7LSIiIhP9/PPPaNKkieFxYGDqdbfly5dPUM8p5XvlypUzLNPfcC3lfcZdYk6bNg2XL19WPdpER0c/s2cByUJWqlQp1fIGKSOQEgbjtuuPK1nfx48fo2nTpgm2kWPLfoVkRmvWrJngPhq5ypsaKVuQtsvlebnq6+joqLKlI0aMUKUMslyfhb19+7bK9ko5xRtvvGHYh9yAblzSYUxql6XnH2PVq1dPsp4MNCSlG8m9dntl1iBWUvSpXRqRQDYx+aDI5QvKenL5hIiI0iebixNOjGpueLzv4l30mbH/mdvNfLUaqhfKadjH85I62KJFi5q8fuJyPQkAjZfpA0L95XYpG5Bk008//aQCRAk6f/jhhyS1rYkZ33yWlrboj6v/KbWq+fLlS1JaKNJbjiHxigSrchOcxCFSH1ymTBns3LlTLZeaYeM2SElBjRo1EuxDvgAkR9qU0k3rz3rtmhnKSyyJ1fVOQOYhBfbyDZOIiNJHgg4P1//+7NYtllv1QiA3cSUXikhYk8fXXa3n5Jh8DzyWSOpHpR6zf//+CWpZjUkwKDeAJc74Svb27t27qWZjU1K6dGkVrMoVXH1mNLl1Eg9xv2fPHpOC2N9//13dSK7PYssx/vzzzwT1sJKVlgD6woUL6NGjh0ntlhu/5Cpz4ivVaeWazDm1dVZ1YxcREZGtkMBUutESiUNU/WN53poCWCFZXgnC5E56CfDkpqb9+/cnKQv4999/1aV06eddBix6+eWXVZZYbnCSDKcEgjKsvAx0ZArJ+MoNTpIFlpuoJHCWIeql/FB/U1W/fv3UcilflGPPmzcv2au+idWrV0+VDvzvf/9TAa2Qn3PmzEHu3LlVcKwnPQVI957SI4O8/qNHj6qbzcaMGZPsvqU04dSpU/j444/V+pLJ1rcppe5Dk1MwmXNq6xjEEhERmYn0Azv5lcoq42pMHstyU/uJtSQSKEoPAF27dlWX1O/cuZMgKyukXlS6pZLehSQIlKBVMonS45C/v7/qPUDqbqXngZQuwyfnyy+/VL0hSBApXVFJzwkSeMo9NUKGrpfAWJZJ91tSuyu9BzyL1LPq63X1AWvdunVV+UDirK/0eCAZZQlE5TXI8zKvb0Nisly6AVu6dKnKRkvPCvreCfRlEKZ4I5lzausc5O4u2BEZsUs+jNJnrHS5RaaRwvyWLVuqeekP0JTaJSIiMo2M0CU1sqEPHsPf213VwFpbBpYyjnTPJQF2ZvRtH2FDcRBrYskk8m1T3yceh50lIspYErDWKpL8oD1k+2QwBOmhQHp+kAyq3Ag3YMAAczfL4jGIJSIiIjKjs2fP4quvvlI3tUnJg4wSJiOOUupYTkAmkSEGZZg7IaOqSG8FREREZF0ibKicgDd2EREREZHVYRBLRERERFaHQSwRERERWR3e2EUmk3GbiYiIiCwBg1gyidzIJTd3EREREVkClhMQERERkdVhEEtERGQDGjRogEGDBj3XPr744gtUrFgx1XX69OmDdu3awZYkfk2mnMuCBQti7Nixz33sjNqPPWIQSyZ5/PgxWrdurSaZJyKiDBQfB1zcDhxdrPspj+3czJkzkT17drMce+nSpfjyyy+z5PXs378fb775ZoYey16wJpZMEhcXh1WrVhnmiYgog5xYAaz5GIi48d8yn7xAi++A0i/xNJtBzpw5s+xYuXPnzrJj2RpmYomIiMwZwC7slTCAFREhuuXyfBrEx8fjo48+UkFYnjx5VHmAMRmlSbJ+/v7+arSmRo0a4Z9//klxf5K0GDJkiMog+vn5qX1rmmZSO0aNGoX8+fPDzc1NlSisWbPG8PyWLVvg4OCA+/fvG5YdOXJELbt06ZJ6/tVXX1XtlWUyJX4t4vTp0+q5U6dOJVg+ZswYdZle2iqvoW/fvihUqBCyZcuGEiVKYNy4cam2P3E5QWhoKNq0aaO2l/3MnTs3yTZyzHLlyqkboYOCgtC/f381wqX+9ab0ehKXE1y5cgVt27ZVo2TKe9SlSxfcunUrScnH7Nmz1bYy+la3bt3w4MED2BsGsURERFlBgr/oh/9NjyOA1R/JE8mtrPshGVpZT7/NMwLIP/74QwVRe/fuxffff68CyfXr1z89vKZKwm7evKmurB08eBCVK1dG48aNcffu3WT399NPP2H69On4/fffsWPHDrXesmXLnvlSJUiUbX/88Uf8+++/aN68OV566SWcPXvWlDOF2rVrq8BOgriQkBA1ffDBB0nWk4C0SpUqSYLKefPmoXv37ipYlIBagumFCxfixIkT+Pzzz/HJJ5+ox2mpmZXgetOmTVi8eDEmTZqkAltjjo6OGD9+PI4dO6beB1lXgv60vB55j6Q2V87z1q1b1Xt3/vx5dO3aNcF6smz58uX4+++/1STrfvvtt7A3LCcgIiLKCjFRwDd507CBpsvQfhv036JPbgCuniluUb58eYwYMULNFytWDBMmTMDGjRvRtGlTbN68GUePHlXBl2RHhQSZEgxJYJZcXaYEXsOGDUPHjh3V4ylTpmDt2rXPbLns9+OPP1YZQvHdd9+p48v+Jk6c+MztXV1dVYZRglDJKKemR48e6nXqa1jPnDmjAvRZs2apxy4uLhg5cqRhfcmk7tq1SwWxkuV8Ftnf6tWrsWfPHtSoUUMtk6C+VKlSCdYzztzKMaQ9b7/9tgp4TX09GzZsUEH/xYsXVTZXSMa1TJkyqna2WrVqapkE5jNnzoS3t7d63LNnT/U+f/3117AnzMQSERHZCAlijQUGBhoyhhLYyeVtKQuQS9X6SQImyewlJpe+JWNYq1YtwzJnZ2dUrVrV8FgyoMb72r59OyIiInDjxg3UqVMnwf7k8cmTJzP8NUugfPnyZRVk6tskl9tLly5tWEeCb2m31J9KO3/77Td12d4U0ubEr7tkyZJJbtKSIF2+LOTLl08Fl7169cKdO3fS1Me6HEuCV30AK+R1yLGMz52UEXg/DWATv8/2hJlYIiKirODiocuk6l3eBczt9OzteiwGgmv/t4/UDuHikuCx/nK6kJ8S7Eh9ZmLp7QVASgT02UkhAVxMTIzh2IkvleuXyaV3/TI9/XZpJa+pYcOGqoSgZs2amD9/Pt566y3D85JxHTx4sCpvkIBcgr8ffvhBlVyYQt/GxK/HmATRrVq1Qr9+/VQGVmqSpfxCanHT8rqMz1Fqy1N7n+0Jg1giIqKsIEGIcSlAkUa6XgjkJq5k62IddM/Leo5Oz314qX+VeljJKkom71nk8rcEiJLhrFevnloWGxtrqKUVEhAaZwSF3PyUN29eFcTptxNyCb969eoJ7siXTG+OHDkMN3YZk0vwpvaGIyUFUr7w8ssvq6yyvoxBSHZYalLlRiu95DLPKZGyAXndBw4cMLRfbigzvilNnpN1JFDWB+iJa25NeT2SdZUM8dWrVw3ZWKnjlax44vIFYjkBmUhuFJBvgjLJPBERPScJTKUbLSVx9u3p4xbfZkgAK5o0aaIykXLjkNS1yo1KElh++umnKghLznvvvaduGJKbuaQHAAkEjYO3lHz44YeqDnbBggUq4Bs6dKgKUmV/omjRoipIkzvtpeZ05cqVKgA0JoG2lD9IrWdYWBiioqJSPF6HDh1UGYPUoEpWVjLCenIseX3ymuVYn332maovNZXcPNaiRQu88cYbKnsrQfzrr7+ugnW9IkWKqCD2l19+wYULF1Qdq5QwpPX1yHskJSESlB86dAj79u1TZQn169dPUM5AOqyJJSIiMhfpB7bLLMAnMOFyycDK8gzsJ1YuOUuvBJIdfe2111C8eHGVsZRgNiAgINlt3n//fRVEyd35+kvx7du3f+axBg4cqLaVSbqdku61VqxYoW42018Ol8v+EhhXqFBBBbxfffVVgn1I9lQuz8ud+ZK5ld4WUiJ3/UsXWNJdmASAxmQfEuTKfqT0QepUjbOyppgxY4YKuiWYlH3puynTkxpc6WJLXkfZsmVVXe7o0aPT/HrkPZIb7SQ7Le+TBLWFCxdWXwYoKQfNlA7fbIh8U5NLJJKalw89ERGR2ckIXVIjG3kL8ArQ1cBmUAaWyFbjINbEkklkqFnpwkPIZRJ3d3eeOSKijCIBa6G6PJ9EacBMLJlEugiRbkmE1PSwLpaIiMj6RNhQJpY1sURERERkdRjEEhEREZHVYRBLRERERFaHQSwRERERWR0GsURERERkddjFViaJi9ew5/wd7L4QpkZeqVXED9UK5sTBy/cQ+uAx/L3dUb1QTjg5OqS6j30X75q8fmaStujtvXAH9ct4mK0tREREROxiKxOsORaCoUuP4n5UTJJhs42Hlgj0dceINqXRomxgsvsY+b8TCAl/bNL6mUna8sWK47gRFq4eO7i4IW/2bGZpCxEREaUfu9iiVAO+fnMOJQlgReKx0W6GP8bbcw6pbRLvQ5YbB7CprZ+Z9G25GfEEjq7uapJh8czRFiIiyhwy9Kz8bj9y5IhVtq1gwYIYO3ZsprclvcfRDydLGYs1sRl8yV0ylqbSx7SScdVfrpef8lgzcf3MZEltISIi62HJQTHZDtbEZiCpX5WMZVpI+CcZ19bjtsMnmwsiHsUkycCmtn5mMm6LFhuDO2snqHm/5gPg4OxiaIu8bqn5JSIiIsoqzMRmILkBK71O3XqAfZfuqp9pWT8zJ+O2aPFxeHhso5pkPqNeNxERZYzFixejXLlyyJYtG/z8/NCkSRM1ZLjejBkzUKpUKbi7u6NkyZKYNGlSqvs7ceIEWrVqpYYcDwgIQM+ePREWJjcr68THx+O7775D0aJF4ebmhgIFCuDrr79WzxUqVEj9rFSpksrINmjQwOR27Nu3T20nz1etWhWHDx9O87kYM2aMOhcyRHpQUBD69++vhkzXmzlzJrJnz46///4bJUqUgIeHBzp16qTO1x9//KHKBnLkyIF3330XcXEJ/+Y9ePAA3bt3V+clb968+OWXXxI8f/bsWdSrV0+1v3Tp0li/fn2S9n388ccoXry4Om7hwoXx2WefISYmaRkipY6Z2AwkPQik1+AmxVA8wBtnbj3AzxvOmrx+ZjK1Lc/zuomI7I1xYJmYk5OTCn6SW1cCspSEhITg5Zdfxvfff4/27durQGv79u3Qnt6M8dtvv2HEiBGYMGGCChAlMHzjjTfUPnv37p3s/urXr6/WkYDw0aNHKvDq0qULNm3apNYZNmyY2u/PP/+MF154QW1z6tQpQyBavXp1bNiwAWXKlIGrq6tJ7ZDX++KLL6JRo0aYM2cOLl68iPfeey/N59jR0RHjx49XwajsQ4LYjz76KEHAHBUVpdb5888/1fnq0KGDmiS4XbVqFS5cuICOHTuq19a1a1fDdj/88AM++eQTfPHFF1i7di0GDx6sgvGmTZuqwF72kStXLuzZs0fdRDVo0KAk7fP29laBtATBR48eVedAlkkbyXQMYjOQdIGVx8ctTSUF0klVHl93DGhUTHVZ1axMHvy5/6q6cUozYf3MZNyW1Nour5uIiEwjGbyUSOZz5cqVhsf+/v4q2BL6gDQ5EkDGxsaqACo4OFgtk0yk3pdffomffvpJPa/PlEqmderUqckGsZMnT0blypXxzTffGJZNnz5dZTXPnDmDwMBAjBs3TgWj+u2LFCmiAj6RO3du9VMywnny5DG5HXPnzlWZTzmWZCklAL527RrefvttpIVx4CjHkOPKPoyDWMl8yuuUdgvJxM6ePRu3bt1S75FkURs2bIjNmzcnCGLr1KmDoUOHqnnJpu7cuVMF8hLEStB+8uRJVROcP39+tY6cw5YtWyZo36effmqYl0D7/fffx4IFCxjEphHLCTKQBJVfvFTG5PX1Iah0VaUPSOWnPDZ+PrX1M1NqbUEWt4WIiFJWoUIFNG7cWAWunTt3VhnPe/fuqedu376Nq1evom/fvio4009fffUVzp8/n+z+Dh48qII34/Ul2yhkGwnUnjx5oo5pKlPaIfuV1yIBrF6tWrXS/NZL2yWozJcvn8pw9urVC3fu3EmQ2ZZj6ANYISUTElAaf8mQZaGhoQn2nbg98ljarW+/lFXoA9iU2i+lHxLwS4Avx5NygitXrqT5ddo7ZmIzmPSbOuWVyib1EytZzOT6WpXHk1+pnKSf2JTWz0z6tny+5CAS//dqWjqA/cQSEaWRcW1mcuUExhIHUKltJ7WXu3btwrp161Sd5vDhw7F3715DQCiBbY0aNVI9np5cFm/Tpo2qeU1MsrByqT2tZJ/Pakdq2WZTXb58WWW0+/XrpzKwOXPmxI4dO1TwbFx36uKS8OZoqd1Nbpm+3amR9VJqv/45PSkz6NatG0aOHInmzZvD19dXlTRIhprShkFsJgV+TUvnea4Ru/T7sIQRu6QttYMbwPcL3eNBTYpi/LZr2H42DGGRT5DLyy3L20REZK1Sq219nnUlWJJL3TJ9/vnnqqxg2bJlGDJkiMpISuDZo0cPk/YlpQRLlixRmUln56ShQrFixdQNZBs3bsTrr7+e5Hl9DazxTVGS1XxWO+QSvlzSlxpc2b8+6EuLAwcOqNIKCQqlNlYsXLgQGSVxe+SxPkst7ZeM6o0bN1S9q9i9e3eC9aX8QN4b+ZJhHHhT2jGIzSQSbNYplktNxtLSFZXsw1K6rjIOnt+sVwRbLzzAP9fCMXXreQxvrSs5ICIi85CMqwSUzZo1U3W08lgu30svAEJuQho4cCB8fHxUfaaUAkiwJyUHEuQm9s4776iMqdws9uGHH6oblc6dO6cyhrJcbj6TG73kRiQJWCVwluMdP35cZTylDRKErlmzRl1al/Ul4/isdshd/xLcyT6kblRqS3/88cc0nQspEZAgVrLRkk2WoHHKlCkZdq5lf3IDXbt27VT2e9GiRYY6ZukRQno7kPIFCaLlxi7jYFVIbw4S6Mq5rFatmtpWvmxQOmh2Jjw8XHL96ieZLj4+XgsNDVWTzG8+dUsL/vhvrfjwVdqt8Ec8lUREZnTixAmtefPmWu7cuTU3NzetePHi2i+//JJgnblz52oVK1bUXF1dtRw5cmj16tXTli5dqp67ePGi+tt4+PBhw/pnzpzR2rdvr2XPnl3Lli2bVrJkSW3QoEHqb4CIi4vTvvrqKy04OFhzcXHRChQooH3zzTeG7X/77TctKChIc3R01OrXr29SO8Tu3bu1ChUqqOdlvSVLliRpW2LShp9//tnweMyYMVpgYKBqt5yXWbNmqX3cu3dPPT9jxgzN19c3wT5GjBihjmusd+/eWtu2bRMcZ+TIkVqXLl00Dw8PLSAgQBs7dmyCbU6fPq298MILqv3yPqxZs0Yde9myZYZ1PvzwQ83Pz0/z8vLSunbtqtqeuD2ZJdyG4iAH+Qd2xJbGDDYn+dh0nLwLh67cR5/aBdN0QxsRERGZR4QNxUFm751AuruQ7i/kUkOVKlVUv3apke439HcuSnH5q6++qu44pKwltVdDmpZQ8/P2XUFI+CO+BURERGQfQaz0iSZ9uUm9iHR4XLduXVUjk1I3E3J3odSZSK2M1N1IHcr+/fuTLSqnjCV1S1IjJZPMizpF/VC9YE5Ex8Zj0ubku2khIiIiygxmLSeQLjbkDkjpbFhPitClWHr06NFJ1pfiblnXuF87KdyWAmvpe87e0uhZSfrW0/edJ93D6O+Y3X3+Dl7+bQ9cnByw5cOGyJdddzcpERERWZ4IG4qDzJaJjY6OVp0py52UxuSx9HOXnNq1a6uRO2Q4OIm9ZVQN6TC4devWWdRqSkx6T6hV2A8xcRombDrHE0RERERZwmxBbFhYmOo/TvqNMyaPb968mWIQKzWxMvybdOkhI13IGMeSjU2JXPqWbx3GE2WswU2Lq5+LDlzF1bu64RGJiIiIbPrGrsQjWUiGNfEyPRlfWfqXk06cJYsr/c9dvHhRjcqREilLkLS5fpJxnyljySAMdYvlQmy8hl82neXpJSIiItsNYqXjZBlmLnHWVYbYS5ydNQ5IpUNl6Xi5fPnyarg26d1g+vTpCAkJSXabYcOGqboP/WRq7SylLxu75NB1XAr7b2xqIiIiIpsKYqUcQLrUktEujMljKRtITlRUlGEIOVPHW3Zzc1OFy8YTZbzKBXKgYYnciIvXMJ7ZWCIiIrLlcgIZYm7atGkqk3ry5EkMHjxYda+lLw+QLKp0qaUnw8ctXbpU9VAgYy/L0G9SXlC9enXDGMVk/mzs8sPXcf52JN8KIiIiyjTOMCO5QUsGKhg1apQqByhbtqzqeSA4OFg9L8uM+4zt06cPHjx4gAkTJuD9999XN3U1atQI3333nRlfhX2QMbCl/lg/n5zy+bOjSakAbDh5C+M3nsW4bpWyuJVERERkLzjsLGWoY9fD8eIvOyD35q0dVA/FA7x5homIiCxEBPuJJUpe2Xy+aFEmD6REedwG9lRARERENtrFFlkHGZxCeoWQSeZTM6hpMfVz5dEQnAxhv7xERESU8RjEkkliYmLUsL8yyXxqSubxQevygWp+7IYzPMNERESU4RjEUqYY1LiYri72+C1VJ0tERESUkRjEUqYoFuCNlyrouj1jNpaIiIgyGoNYyjQDGxeDowOw4WQo/rl6n2eaiIiIMgyDWMo0RXJ7oV2lfGr+Z9bGEhERUQZiEEuZamCjYnBydMCW07dx8PI9nm0iIiLKEAxiKVMVzOWJjpV12VjWxhIREVFGYRBLJpGhZo8dO6amlIadTcm7jYrB2dEB28+GYd/FuzzjRERE9NwYxJJpHxRHR5QpU0ZNMp8WQTk90KVakJr/eT37jSUiIqLnxyCWssQ7DYvC1ckRuy/cwa7zYTzrRERE9FwYxJJJZKjZL774Qk3PGnY2OfmyZ0O36v9lYzVN45knIiKidHPQ7CyaiIiIgK+vL8LDw+Hj42Pu5liNhw8fwsvLS81HRkbC09Mzzfu4Gf4Y9X7YjOjYeMzuWx11i+XOhJYSERGRPcRBzMRSlsnj644eNQqo+THMxhIREdFzYBBLWertBkXg7uKIw1fuY8uZ2zz7RERElC4MYilL+Xu7o2fNYDXP2lgiIiJKLwaxlOXeql8E2Vyc8O+1cGw8Gcp3gIiIiNKMQSxluVxebuhdu6CaZ20sERERpQeDWDKLN+sVhqerE06ERGDt8Vt8F4iIiChNGMSSSdzd3bFv3z41yfzzyunpilfrFFLzYzecQXy8XfX0RkRERM+JQSyZxMnJCdWqVVOTzGeE1+sWgrebM07dfIDVx27ynSAiIiKTMYgls8nu4Yq+df/LxsYxG0tEREQmYhBLJpGhZn/44Qc1pWfY2ZS89kIh+Lg742xoJP7+9wbfDSIiIjIJg1gySUxMDD766CM1yXxG8XF3UTd5iXEbziI2Lp7vCBERET0Tg1gyuz51CiG7hwsuhD3EX0eYjSUiIqJnYxBLZufl5oy36hVR8+M3nUUMs7FERET0DAxiySL0qhUMP09XXL4ThWWHrpu7OURERGThGMSSRfB0c0a/+v9lY6NjWRtLREREKWMQSxbjlZrBakjaa/ceYfHBa+ZuDhEREVkwBrFkMbK5OqF/A102dsKms3gSG2fuJhEREZGFYhBLJpGhZjdv3qymjBh2NiXdaxRAgI8bboQ/xsL9V/nuEBERUbIYxJJJZKjZBg0aqCmjhp1NjruLE95pWFTNT9h8Do9jmI0lIiKipBjEksXpWi0IeX3dcSviCebvu2Lu5hAREZEFYhBLJpFRuiZOnKimjByxKzluzk4Y0KiYmp+05TweRTMbS0RERAkxiCWTREdHY8CAAWqS+czWqUp+5M+RDbcfPMHcvZcz/XhERERkXRjEkkVydXbEwKfZ2MlbzuPhk1hzN4mIiIgsCINYsljtK+dDsJ8H7jyMxqzdzMYSERHRfxjEksVycfovGzt123k8eJy5tbhERERkPRjEkkVrWzEvCufyxP2oGPyx65K5m0NEREQWgkEsWTRnJ0e810SXjf112wVEMBtLREREDGLJGrxYPi+K+nsh4nEspu+4aO7mEBERkQVgJpZM4ubmhr///ltNMp+VnBwdMOhpNvb37RcRHsXaWCIiInvHIJZM4uzsjNatW6tJ5rNaq7KBKBHgjQdPYjFtx4UsPz4RERFZFgaxZBUcHR0wuKkuGyslBfceZv6AC0RERGS5GMSSSWSo2ZkzZ6ops4edTUmz0nlQOtAHD6Pj8Ot2ZmOJiIjsmdmD2EmTJqFQoUJwd3dHlSpVsH379lTXf/LkCYYPH47g4GBVm1mkSBFMnz49y9prr2So2VdffVVNWTHsbMrZ2OJqXrrbCot8YpZ2EBERkZ0HsQsWLMCgQYNUUHr48GHUrVsXLVu2xJUrV1LcpkuXLti4cSN+//13nD59GvPnz0fJkiWztN1kPk1K+aN8fl9ESTZ2G7OxRERE9spB0zTNXAevUaMGKleujMmTJxuWlSpVCu3atcPo0aOTrL9mzRp069YNFy5cQM6cOdN1zIiICPj6+iI8PBw+Pj7P1X578vDhQ3h5ean5yMhIeHp6mq0tm0+H4tUZ++Hu4ohtHzWEv7e72dpCRERkTSJsKA4yWyZWLkkfPHgQzZo1S7BcHu/atSvZbVasWIGqVavi+++/R758+VC8eHF88MEHePToURa1mixBg+K5UalAdjyOicfkLefN3RwiIiKypyA2LCwMcXFxCAgISLBcHt+8eTPZbSQDu2PHDhw7dgzLli3D2LFjsXjxYrzzzjup1tDKtw7jiaybg4MDhjytjZ279wpuhj82d5OIiIjI3m7skoDEmFQ3JF6mFx8fr56bO3cuqlevjlatWmHMmDHqjvmUsrFSliBpc/0UFBSUKa+DstYLRXOhWsEciI6Nx6Qt53j6iYiI7IzZgthcuXLByckpSdY1NDQ0SXZWLzAwUJURSDBqXEMrge+1a9eS3WbYsGGq7kM/Xb16NYNfCZmDfJnR91Tw576ruH6fJSVERET2xGxBrKurq+pSa/369QmWy+PatWsnu02dOnVw48YNdWOR3pkzZ+Do6Ij8+fMnu410wyWFy8YTpZ2cx4ULF6opq4edTUntIrlQs3BORMfFY+JmZmOJiIjsiVnLCYYMGYJp06apfl5PnjyJwYMHq+61+vXrZ8ii9urVy7B+9+7d4efnp/oqPXHiBLZt24YPP/wQr732GrJly2bGV2L7ZKjZzp07q8kcw86mZHATXTZ24f6ruHo3ytzNISIiInsIYrt27apuzho1ahQqVqyogtJVq1apgQxESEhIgj5jpYsnydTev39f9VLQo0cPtGnTBuPHjzfjqyBzqlHYT9XHxsZrmLCJ2VgiIiJ7YdZ+Ys3BlvpHy0qxsbGqRwjRvn17i8rGHrx8Fx0n74aTowM2vV8fwX7m68OWiIjIkkXYUBxk9t4JyDpIV2UyWppMMm9JqgTnRP3iuREXr2H8RmZjiYiI7AGDWLIJ+p4Klh2+hgu3/7vxj4iIiGwTg1iyCRWDsqNxSX/Ea8D4jWfN3RwiIiLKZAxiyeaysX/9cwPnQh+YuzlERESUiRjEks0om88XzcsEQG5V/HkDs7FERES2jEEs2ZRBT/uNXflvCE7djDB3c4iIiMjSgljpq1UGKpABCe7evauWHTp0CNevX8/I9hGlSalAH7QuF6jmx65nNpaIiMhWpauzz3///RdNmjRR/YxdunQJb7zxBnLmzKn6Eb18+TJmzZqV8S0ls5JhgmfMmGGYt2TvNSmGVcdCsOb4TRy7Hq7KDIiIiMi2OKZ3uNg+ffrg7NmzcHd3Nyxv2bKlGnWLbI+Li4t6z2WSeUtWPMAbbcrnVfNjWRtLRERkk9IVxO7fvx9vvfVWkuX58uXDzZs3M6JdRM9lYONicHQANpy8hX+v3efZJCIisjHpCmIl+yrDliV2+vRp5M6dOyPaRRY47OzKlSvVJPOWrqi/F9pVzKfmf15/xtzNISIiIksIYtu2bYtRo0YhJiZGPXZwcMCVK1cwdOhQdOzYMaPbSBZAhpp98cUX1WRpw86m5N3GxeDk6IDNp2/j0JV75m4OERERmTuI/fHHH3H79m34+/vj0aNHqF+/PooWLQpvb298/fXXGdk+onQrlMsTHSoxG0tERGSL0tU7gY+PD3bs2IFNmzapbrXi4+NRuXJl1WMBkSV5t1ExLDt8HdvPhmH/pbuoVjCnuZtERERE5ghipR5SamKPHDmCRo0aqYnIUhXw80Dnqvkxf99VVRs7742a5m4SERERmaOcwNnZGcHBwYiLi8uI4xNlugGNisHFyQG7zt/B7vN3eMaJiIjstSb2008/TTBSF5Ely5c9G7pVK6DmJRuraZq5m0RERETmqIkdP348zp07h7x586qsrKenZ4LnpU7W7sXHAZd3AZG3AK8AILg24Ohk96fFXPo3LIIFB65i36W72HnuDl4olovvBRERkb0Fse3atcv4ltiSEyuANR8DETf+W+aTF2jxHVD6JVgjGWp2woQJhnlrE+ibDd2rF8DMXZcwZv1p1Cnqp7qGIyIiIuvkoNnZtVUZpMHX1xfh4eGql4VMCWAX9gKQ+LQ+DZi6zLLaQNbahUY8Rt3vN+NJbDxmvloNDUr4m7tJREREthUHWXpNrN7BgwcxZ84czJ07F4cPH864VllzCYFkYJMEsPhv2ZqhuvUoy/n7uKNnzWA1z9pYIiIi2F8QGxoaqrrWqlatGgYOHIgBAwagSpUqaNy4sRoEwW5JDaxxCUESGhBxXbeelZHeKLZs2aIma+6Z4q36RZDNxQn/XAvHplOh5m4OERERZWUQ++6776p09PHjx1UPBffu3cOxY8fUMglq7ZbcxJWR61mQx48fo2HDhmqSeWuV29sNvWrrsrFj2FMBERGRfQWxa9asweTJk1GqVCnDstKlS2PixIlYvXo17Jb0QpCR61GmeKteEXi6OuH4jQisO2F9XyiIiIgonUGsDDPr4uKSZLksk+fslnSjJb0Q6G/iSsIB8MmnW8/aGNfxXtpp1XW9OT1d0adOQUNtbHy8Xd3bSEREZL9BrNTDvvfee7hx47/6z+vXr2Pw4MGqLtZuST+w0o2WkjiQffq4xbfW11+s9Lgwodp/j+d2AsaW1S23Um/ULQwvN2ecuvkAa47fNHdziIiIKCuCWOkv9MGDByhYsCCKFCmCokWLolChQmrZL7/8Arsm3WdJN1regQmXS4bWGrvX0ncZ9iAk4fKIEN1yKw1ks3u44rUXChmysXHMxhIREdn+YAdBQUFqVK7169fj1KlTahhPqYlt0qRJxrfQGkmgWrI1MDoIiHkItJsMlO9qfRnYZ3YZ5qDrMkxeq7W9NgB9XyiEmTsv4mxoJFYeDcFLFaQUhIiIiGw2iNVr2rSpmigZEtT5BAJ3zgHZC1hlkJemLsMK1YW18c3mosoKflp/BmM3nEHrcoFwcuQoXkRERDZbTiDdaI0fPz7ZMoNBgwZlRLtsg0cu3c+HYbBKRl2BuTgB3zdxU5PMp7SetZEbvLJ7uODC7Yf468h1czeHiIiIMjOIXbJkCerUqZNkee3atbF48eL07NI2eT4NYqOsNIg1ujnN1ckBH9ZxU5PM20qXYd7uLnizXmE1P27jWcTG2XHvGkRERLYexN65c0eNu5uYjMEbFmatAVsmBrHWlomNeQRs+RZY/vaz17XWLsOM9K5VUHW7dflOFJYeZjaWiIjIZoNY6Y1ABjxITAY6KFxYl9UiKywn0LSn3WlVB7aMBuKeALlLqqckQbn/epyaEtzJX6CWddb7GvF0c0a/+rrP7fiNZxHDbCwREZFt3tg1ZMgQDBgwALdv31Z9xoqNGzfixx9/xLhx4zK6jTaQib0Nixd6Clj9EXBx638Z1mZfAWXaAyf/h8d/fYjq086opyKHecPTxxd4HA4cWwwUqgdU6Q1r1rNmQfy67SKu3XuExQev4eXqBczdJCIiIsroIPa1117DkydP8PXXX+PLL79Uy6Sf2ClTpqBXr17p2aVt8syt+xl1BxZLAlEpHdg7FdDiACc3oM5A4IXBgKvnf12GBTUAPnlaQtJjMVCqMbDpK2DHGODvQbqAXbraslLZXJ3wdoMi+PLvE5iw6Rw6VM4HN2frzjATERHZsnSVEzx69Ai9e/fGtWvXcOvWLfz7778qMxsQYL03+GQKDz/LLSeQ4YEPzQZ+qQLsmaQLYEu0Bt7ZCzT69L8AVs+4ZKBgHd3jxp8DlV4BtHhg8Wu6rrasWI8aBeDv7Ybr9x9h4YFr5m4OERERZXQQ27ZtW8yaNUvNu7i4qEEOxowZg3bt2mHy5Mnp2aVtZ2ItrZzg2gFgWmNgxQBd2/yKAa8sAV6eB+TUjWJlEgcH4MVxQPGWQOxjYH434NZxWCt3Fye807Comp+46Rwex8SZu0lERESUkUGsjNZVt66uc3vpUksysJcvX1aBbXL9x8Lea2If3dVlPs3twS1geX9dAHvjEODqrat7fXsXUDSdo605OQOdpgNBNXWlCXM6AvevwFp1rRaEQF933Ix4jD/3We/rICIisnXpCmKjoqLg7e2t5tetW4cOHTrA0dERNWvWVMEsPeWeXfdTLrefXg3ERgMXtwNHF+t+yrCuWUGOu+sXXenAkbm6ZRV7AO8eBGq/Czi7Pt/+XT2Al+cDuUsBD0KA2R2AhxZcB2xqNnbLeWZjiYiIbK2LreXLl+Pq1atYu3YtmjVrppaHhoaqvmIJuq6qfqn036lY0B34OgD440VgSV/dz7FldetlpnMbgSl1gHWfAtEPgLyVgL4bgHaTAO8MrGH2yKkrSfDJD9w5C8zrDDyJhDXqUjUI+bJnw+0HTzBnD7+UERER2UwQ+/nnn+ODDz5AwYIFUaNGDdSqVcuQla1UyShws1cSmC7sBUTcSLhcMrLGIkJ062VGIHv3IjC/OzCnAxB2Rtdn7UsTgNc3AUHV0rw7qX0eMWKEmmQ+Wb75gJ5LgWw5gOsHda8tLgbWxtXZEQMb67KxU7aeR1R0rLmbRERERIk4aJr0cJ92N2/eREhICCpUqKBKCcS+fftUJrZkSV0H+ZYoIiJCjTYWHh6eOVljKRGQDGviADZFDoBPXmDQ0YwZNCA6CtjxM7BznG6wAgcnoMZbQP2PgWxPyxsy29X9wB9tgNhHQPmuQLspwNPPiLWQAQ8a/7QVV+5GYWjLkuhXv4i5m0RERGT5cVAWSndkkSdPHpV11Qewonr16hYdwGYJ6WbK5ABWaEDE9efvnkq+ixxbCkyoBmz7XhfAyiAEb+8EWozOugBWSKa3yyxdAP3vAmD9Z7A2Lk6SjS2m5qduPY/IJ8zGEhERWRLrSo9Zg8hbWbudkG6tJPO5+FUg4hrgWwDoMhvotQLwL4WMEB8fj+PHj6tJ5p+peDOg7UTd/O4JwE7r67WiXcW8KJTLE/eiYvDHrkvmbg4REREZYRCb0bzSebNUejKlUXeBVR8CU14ALm0HnN2BBsN0AxbIKFvSj2sGkQEuypYtqyaZN0nFl4Gmo3Tzko09Mh/WxNnJEe89zcb+uu0CIh5bX30vERGRrWIQm9GCa+tqXKXWNS3+ehc4Mi9ht1syn1yXXPLzwAxdl1n7ftXdMFbqJWDAfqDBUF2XV5aizntArQG6+b/eAc6sgzVpUyEviuT2RPijGMzYwWwsERGRpTB7EDtp0iQUKlQI7u7uqFKlCrZv327Sdjt37oSzszMqVqwIiyI3Z7X47umDZwWyT5/P5gc8uAEsfxuYWg84t0HXY4HcIJa4S65tPwK/NgD+HqQbRCF3SaDXX0DX2UD2ArBITb/U3eAlQ9su6q278ctKODk6YFCT4mp+2o4LCI9iNpaIiAj2HsQuWLAAgwYNwvDhw3H48GE1CljLli1x5UrqIyXJHXW9evVC48aNYZHkUr7c2OQTmHC5Q6LTLRlbqV0dckJ32d3NF7h1TDfq1cKeSW8Qk8ebvgRu/qtbt8W3QL8dQOEGsGhy85/Ux8qoYDFRuj5kb5+GtWhdLhDFA7zw4HEsft9xwdzNISIioufpYisjSB+zlStXxuTJkw3LSpUqhXbt2mH06NEpbtetWzcUK1YMTk5OatCFI0eOWGbXEnLZX3odkJu2pFY2qAZwde9/j6X0wLhbLalx3fYDsGdS6vt18QDePQz45EFWefjwIby8vNR8ZGQkPD09074TGfxg1ku6PmRlUIS+63R9y1qB1UdD8PbcQ/Byc8b2jxoih+dzjnJGRERkBhHsYuv5RUdH4+DBg4bRvvTk8a5dKXc3NWPGDJw/f151um/xJEAtVBco10n3U4Z3NX6cuF9YGfWqRKtn71eymTIqlrVx8wK6LwL8iul6UZCBGCRwtwLNy+RBqUAf1dXWb9uZjSUiIrLbcoKwsDDExcUhICDh3fzyWAZSSM7Zs2cxdOhQzJ07V9XDmuLJkyfqW4fxZNFM7WrrebrkMidPP92oXt6BwO1TwPyXdQM0WDhHRwcMbqLrqWDmrku4E/nE3E0iIiKya2a/scshUTdQUt2QeJmQgLd79+4YOXIkihfX3WhjCilLkPIB/RQUFASb6KIrvV15pZMMNStDDcuU4rCzppIb0F5ZoqvrvboHWPwaEGf5gwk0LR2Asvl8EBUdp7rcIiIiIjusiZVyAg8PDyxatAjt27c3LH/vvfdUjevWrVsTrH///n3kyJFD1cHqSaf70nxZtm7dOjRq1CjZTKxMepKJlUDWYodbMwxbG6IbzSuzh6k1J6kXntVON7pYpVeAlyZkaN+2mWHTqVt4beYBuLs4YvtHjZDb283cTSIiIjIZa2IzgKurq+pSa/369QmWy+PatWsnWV8CzqNHj6oAVz/169cPJUqUUPNyk1hy3Nzc1LbGk0VLtYuup4+lVwJrD2CF3NjWeYau14bDc3Q9L1i4hiX8UTEoOx7HxGPylvPmbg4REZHdMms5wZAhQzBt2jRMnz4dJ0+exODBg1X3WhKcimHDhqmutFRDHR0NI0bpJ39/f9W/rMyn6255S5VSF12qS65ZuuezmGS9L126pCaThp01VcnWwItjdfPbfwL2TIElk1KXIU115Sxz9l7GrYjH5m4SERGRXTLt7qhM0rVrV9y5cwejRo1CSEiICkZXrVqF4OBg9bwse1afsTZLAlUJ8Iy76ErcJVcWkqFmZVCK5+piKyVVegMPQ4FNXwFrhgKeuXQ9OFiousVyoWpwDhy4fA+TNp/DyLZlzd0kIiIiu2PWfmLNwZZqQbJShvQTmxr5GK7+SDeMrqML0GMRUKQhLNWuc2HoPm0vXJ0cseXDBsibPZu5m0RERGRXcZDZeycgUuSGLqn1LdMeiI8BFrwCXD9ksSenVhE/1CiUE9Fx8Zi4+Zy5m0NERGR3GMSS5ZBSifZTgUL1gOhIYG5n4M55i62NHfy0Nnbhgau4etfy+7olIiKyJQxiybI4uwFd5wJ5ygNRYcDs9sCD5Ae/MLeahf1Qp6gfYuI0ZmOJiIiyGINYsjzuPrrBEHIUAu5fBuZ0Ah6HwxINbqLLxi46eA2X7zw0d3OIiIjsBoNYskxe/rrhaT1zA7eOAn/2AGIsrzurqgVzol7x3IiL1/DLJtbGEhERZRUGsWQSZ2dn9O/fX00ynyVyFtZlZF29gUvbgaVv6EY0szCDmxRTP5ceuoaLYczGEhERZQUGsWQSGfls4sSJapL5LBNYAeg2F3ByBU6uAFZ9oOuOy4JUKpADjUr6I14Dxm88a+7mEBER2QUGsWT5CtcHOvyqG3b3wHRg6/ew1NrYv45cx7nQB+ZuDhERkc1jEEsmkTExbt++rSazjI8h/ce2+kE3v+UbXTBrQcrl90XT0gEqGzt2A7OxREREmY1BLJkkKioK/v7+apJ5s6j+BlDvI938yveBEytgidnYlUdDcOpmhLmbQ0REZNMYxJJ1afgJULk3oMUDS/oCF7fDUpTO64NW5fKokt1xzMYSERFlKgaxZH3D07YeA5R8EYiLBv7sDtw8CkvxXuPiqomrj93E8RuW2bctERGRLWAQS9bHyRnoOA0oUBt4EgHM6QjcuwRLUCKPN14sn1fNszaWiIgo8zCIJevkkg14eT7gXwaIvKUbnjbyNizBe42LwdEBWH/iFo5eYzaWiIgoMzCIJeuVLbtuMATfAsDdC8C8zsAT83dvVdTfC20r5lPzP284Y+7mEBER2SQGsWTdfAKBnssADz/gxmFgQU8gNtrcrcLAxsXg5OiATadCcfjKPXM3h4iIyOYwiCWTyFCzvXv3VlOWDTtrqlxFge6LABdP4MJmYPnbQHy8WZtUKJcn2lfSZ2PZbywREVFGYxBLJpGhZmfOnKmmLB121lT5qwBdZwGOzsCxxcDaT8w+PO3ARrps7LYzt3Hg0l2ztoWIiMjWMIgl21G0CdBusm5+72Rgx89mbU4BPw90rpJfzbM2loiIKGMxiCWTyFCzDx8+VJNZhp01VfkuQPNvdPMbRwKH55i1Oe80LAoXJwfsPHcHey7cMWtbiIiIbAmDWDKJDDXr5eWlJrMNO2uqWu8Add7Tza8YCJxebbamBOX0QJeqQWp+zPozlv0FgIiIyIowiCXb1GQkUKE7oMUBi/oAV/aarSkDGhWFq5Mj9l28i13nmY0lIiLKCAxiyTbJ2K8vjQeKNQdiHwPzugChJ83SlEDfbOheo4CaZzaWiIgoYzCIJdvl5AJ0ngnkrwY8vq8bnjb8mlma8naDInBzdsTBy/ew7WyYWdpARERkSxjEkm1z9QC6LwRylQAirgOzOwBRWd/dVYCPO16pGazmmY0lIiJ6fgxiyfZ55AR6LgV88gFhp3WlBdEPs7wZ/eoXgbuLI/65eh+bT4dm+fGJiIhsCYNYsg+++YFXlgDu2YFr+4FFrwJxMVnahNzebuhdq6CaZzaWiIjo+TCIJZM4OTmhU6dOapJ5q+RfSlda4JwNOLtW1/1WFnd59Wa9wvBwdcKx6xFYf+JWlh6biIjIljCIJZO4u7tj0aJFapJ5q1WgBtB5BuDgBPwzD9gwIksP7+flhj61ddnYnzecRXw8+40lIiJKDwaxZH9KtNR1vyV2jgN2TcjSw79RtzC83JxxMiQCa4/fzNJjExER2QoGsWSfKr0CNH6ahV03HPh3YZYdOoenK16ro8/GnmE2loiIKB0YxJJJHj58CAcHBzXJvE14YTBQ423d/PK3gXMbsuzQfV8oDG93Z5y5FYmVR0Oy7LhERES2gkEs2feoXs2/Acp2AuJjgQW9gGsHs+TQvh4ueP2Fwmp+7IYziGNtLBERUZowiCX75ugItJsMFG4IxDwE5nUGws5myaFffaEgfLO54Pzth1jxz/UsOSYREZGtYBBL5OwKdJ0N5K0ERN3RjeoVkfmX+H3cXVSXW2LchrOIjYvne0FERGQiBrFEws0b6L4IyFkECL8CzOkIPLqf6eemd+2CyOnpikt3orDsMLOxREREpmIQS6TnlVs3PK1XABB6HJj/MhDzKFPPj3S19dbTbOz4TWcRw2wsERGRSRjEEhnLUVA3PK2bD3BlF7DkdSAuNlPPUc9awcjl5Yqrdx9hycFrfD+IiIhMwCCWTCJDzbZq1UpNVjvsrKnylANeng84uQGn/gZWDsnU4Wk9XJ3Rr34RNf/LpnOIjmVtLBER0bMwiCWTyFCzK1euVJNVDztrqoIvAB2nST9cwKE/gM3fZOrhXqkZjNzebrh+/xEWHriaqcciIiKyBQxiiVJS+iXgxTG6+W3fA/t+y7Rz5e7ihHca6LKxEzefw+OYOL4vREREqWAQS5Saqq8BDT7Rza/6EDi+LNPOV7fqBZDHxx0h4Y+xYD+zsURERKlhEEsmkaFmPT091WQzw86aqv5HQNW+ADRg6ZvAha2Zl41tVFTNMxtLRESUOgaxZLKoqCg12eXwtK1+AEq9BMRFA3/2AEL+yZRDdamaH/myZ0PogyeYu/dKphyDiIjIFjCIJTLpf4oT0OE3oGBdIPoBMKcTcPdChp87N2cnDHiajZ285RyiojO3ey8iIiJrxSCWyFQu7kC3uUBAOeBhKDC7PRAZmuHnr1OV/AjKmQ1hkdGYvfsy3x8iIiJLDGInTZqEQoUKqW6bqlSpgu3bt6e47tKlS9G0aVPkzp0bPj4+qFWrFtauXZul7SU75+4LvLIYyB4M3LukG572cUSGHsLFyRHvNiqm5qdsPY/IJ8zGEhERWVQQu2DBAgwaNAjDhw/H4cOHUbduXbRs2RJXriRfC7ht2zYVxK5atQoHDx5Ew4YN0aZNG7UtUZbxzgP0XAZ45AJu/gss6AHEPsnQQ3SolA8F/TxwLyoGf+y6lKH7JiIisgUOmpaJQxE9Q40aNVC5cmVMnjzZsKxUqVJo164dRo8ebdI+ypQpg65du+Lzzz83af2IiAj4+voiPDxcZXPJNNIjgZeXl5qPjIxUvRTYvRuHgZkvAtGRQOl2QKfputrZDLLs8DUMXvAPfLO5YMfHDeHt7mL3p5yIiJ5PhA3FQWbLxEZHR6tsarNmzRIsl8e7du0yaR/x8fF48OABcubMmUmtJD1HR0fUr19fTTJPAPJWArrOARxdgBPLgdUfZ+jwtC9VyIfCuT0R/igGM3YyG0tERGTMbNFIWFgY4uLiEBAQkGC5PL5586ZJ+/jpp59UhrBLly4prvPkyRP1rcN4orTLli0btmzZoiaZp6eKNAQ6TNUNT7v/N2D7jxl2apwcHTCoSXE1/9v2CyqYJSIiIh2zp9QcpA9OI1LdkHhZcubPn48vvvhC1dX6+/unuJ6UJUjaXD8FBQVlSLuJDMp2BFp+p5vf9BVw8I8MOzmtywWieIAXHjyOxe87LvKkExERmTuIzZUrF5ycnJJkXUNDQ5NkZxOTwLVv375YuHAhmjRpkuq6w4YNU3Uf+unqVQ7nSZmgxltA3fd1838PAk6tzPBs7PQdF3E/KjpD9ktERGTtzBbEurq6qi611q9fn2C5PK5du3aqGdg+ffpg3rx5aN269TOP4+bmpgqXjSdKOynbkK7NZLK7YWdN1egzoNIrgBYPLH4NuGxabfeztCiTByXzeKuutqSsgIiIiMxcTjBkyBBMmzYN06dPx8mTJzF48GDVvVa/fv0MWdRevXolCGDlsdTC1qxZU2VxZZIMK2VNHbNMlAIpg3lxHFC8JRD7GJjXDbh1/LlPl6OjAwY31WVj5Qavuw+ZjSUiIjJrECtdY40dOxajRo1CxYoVVT+w0gdscHCwej4kJCRBn7FTp05FbGws3nnnHQQGBhqm9957z4yvgsiIk7Ouq62gmsCTcGB2B+De84+61ax0AMrk9UFUdBymbjvPU05ERHbPrP3EmoMt9Y+WldhPbBpF3QVmtAJunwT8igKvrQM8/Z7rPdh48hb6/nEA2VycsO2jhsjt7fZc+yMiIvsTYUNxkNl7JyCySR45gVeWAD75gTvngHmdgSeRz7XLRiX9USG/Lx7FxGHqVmZjiYjIvjGIJcosvvl0w9NmywFcPwgs7AXEpb+vV+l6Tl8bO3vPZdyKeJyBjSUiIrIuDGKJMlPu4kCPxYCLB3B+I/DXOzLUXLp3V794blQJzoEnsfGYvIXZWCIisl8MYsm0D4qjI6pWraomDjubRvmrAl1mAQ5OwL8LgPWfPVc2dsjTbOy8vVcQEv4o3fsiIiKyZgxiySQy1Oz+/fvVxGFn06FYU6DtRN387gnAzvHp/uTVLuKH6oVyIjouHhM3n0v3foiIiKwZg1iirFLxZaDpl7p5ycYemf/c2dgF+6/i2r2ojGwlERGRVWAQS5SV6gwEag3QzUt97Jm16dpNzcJ+KiMbE6cxG0tERHaJQSyZJCoqCgULFlSTzNNzkGxs+a6AFgcs7A1c3Z+u3eh7Klh04Bqu3OF7QkRE9oVBLJlExsS4fPmymuxsfIyM5+ioq48t2gSIfaTrQ/b26TTvplrBnKhbLBdi4zX8sulspjSViIjIUjGIJTIHJxeg8x9AvirAo3u64WnDr6c7G7v08HVcDHuYCQ0lIiKyTAxiiczFzQvovgjwKwZEXAPmdNANV5sGlQvkQMMSuREn2diNzMYSEZH9YBBLZE6efkDPpYB3IHD7FDD/ZSA6Kl3Z2OVHruNc6PMNbUtERGQtGMQSmVv2AsArSwF3X+DqHmDxa0BcrMmbl8+fHU1KBSBeA8YzG0tERHaCQSyRJQgoDbz8J+DsDpxZDfz9ntxNZ/Lmg5oUUz//9+8NnL75IBMbSkREZBkYxJLJHeyXLl1aTTJPmSC4NtBpOuDgCByeA2wcZfKmZfP5okWZPCruHbfxDN8eIiKyeQxiySQeHh44fvy4mmSeMknJ1sCLY3XzO8YAeyanqTZWvl+sOnoTJ25E8C0iIiKbxiCWyNJU6Q00+lQ3v2YocHSxSZuVyOON1uUC1fzYDczGEhGRbWMQS2SJ6n4AVH9TN7+sH3B+k8m1sZKNXXfiFo5eC8/cNhIREZkRg1gyiQw1W6ZMGTVx2NksIJFoi2+BMu2B+BhgQU/g+qFnblbU3xttK+RV88zGEhGRLWMQSyaRoWZPnDihJg47m0UcnYD2U4FC9YHoSGBuZ+DO+WduNrBxMTg6ABtPheLI1ftZ0lQiIqKsxiCWyJI5uwFd5wCBFYCoMGB2e+DBzVQ3KZzbC+0r5VfzP69nbSwREdkmBrFEls7dB+ixGMhRCLh/GZjTCXicer3rwMZF4eTogK1nbuPg5bQNZUtERGQNGMQSWQMvf93wtJ7+wK2jwJ89gJjHKa4e7OeJTpX12dizWdhQIiKirMEglsha5CwMvLIYcPUGLm0Hlr4OxMeluPqARkXh7OiAHefCsPfCnSxtKhERUWZjEEtkTaQ2tttcwMkVOPk/YOX7KQ5PG5TTA12qBan5n9lvLBER2RgGsWQSGWo2ODhYTRx21swK1wc6/CrvCnBwBrD1uxRXfadhUbg6OWLPhbvYdS4sS5tJRESUmRjEkklkqNlLly6picPOWgDpP7bVD7r5LaOB/b8nu1q+7NnQrbouGztm/Rl2j0ZERDaDQSyRtar+BlDvI928lBWc+CvZ1fo3KApXZ0ccuHwP288yG0tERLaBQSyRNWv4CVCljwxHASx5Hbi4PckqeXzd8UqNYDXPbCwREdkKBrFkkkePHqFatWpqknmyoOFpW48BSr4IxEUDf3YHbh5Nslq/BoXh7uKoRvDacvq2WZpKRESUkRjEkkni4+Nx4MABNck8WdjwtB1/B4LrAE8igDkdgXuXEqzi7+2OXrUKqnlmY4mIyBYwiCWyBS7uQLd5gH8ZIPKWbnjayIQZ17fqFYaHqxOOXg/HhpOhZmsqERFRRmAQS2QrsmUHXlkC+BYA7l4A5nYCnjwwPO3n5Ybetf/LxsbHJ9+/LBERkTVgEEtkS3wCgZ7LAA8/IOQIsOAVIDba8PSbdQvD09UJJ0MisO7ETbM2lYiI6HkwiCWyNbmKAt0XAS6ewIUtwPJ+UtSsnsrh6YrXXiik5n9ef5bZWCIisloMYolsUf4qQNfZgKMzcGwJsHaYYXja118oDG83Z5y+9QCrjoWYu6VERETpwiCWTJYrVy41kZUo2hhoN0U3v3cKsONnNevr4YK+dXXZ2LEbziKOtbFERGSFGMSSSTw9PXH79m01yTxZifKdgeajdfMbRwKH56hZKSnwcXfGudBI/P3vDfO2kYiIKB0YxBLZulr9gTqDdPMrBgKnV8PH3QVv1itsyMbGxrHvXyIisi4MYonsQZMvgArdAS0OWNQHuLIXfeoUQg4PF1wMe4jlR5iNJSIi68IglkwiQ802aNBATRx21kqHp31pPFCsORD7GJjXBV7hZ/FW/SLq6fEbzyKG2VgiIrIiDGLJJDLU7NatW9XEYWetlJML0HkmkL8a8Pg+MLsDepd2gp+nK67cjcLSQ9fM3UIiIiKTMYglsieuHkD3hUCuEsCDG8i2oDMG1fFTT43feA7RsayNJSIi68AglsjeeOQEei4FfPIBYWfQ49wHCPLScP3+Iyw6eNXcrSMiIjIJg1gie+SbH3hlKeCeHY43DmJe9slwRiwmbDqHJ7Fx5m4dERHRMzGIJbJX/iWBHosA52wICtuBcR7TERL+CAv2MxtLRESWz+xB7KRJk1CoUCG4u7ujSpUq2L59e6rry41Fsp6sX7hwYUyZ8nREIiJKu6Dqupu9HJzQOn4Lhjr/iUkbT+HI9v/hwN+/4vjOlYiLjeWZJSLKRPJ7Vn7f8vdu2jho2tMB1c1gwYIF6Nmzpwpk69Spg6lTp2LatGk4ceIEChQokGT9ixcvomzZsnjjjTfw1ltvYefOnejfvz/mz5+Pjh07mnTMiIgI+Pr6Ijw8HD4+PpnwqmzTw4cP4e/vr+ZDQ0M5apetOTwX+Ku/mg3XPODrEGV46hb8cKPWCFRq3tuMDSQisk2H1/6BvLtHIgB3suT3boQNxUFmDWJr1KiBypUrY/LkyYZlpUqVQrt27TB69NOhMo18/PHHWLFiBU6ePGlY1q9fP/zzzz/YvXu33b15RBnp+u89ke/qiiTL45/+hvin9ngGskREGRzAVtg1UM07OmTN790IG4qDnM114OjoaBw8eBBDhw5NsLxZs2bYtWtXsttIoCrPG2vevDl+//13xMTEwMXFJVPbTGTLl7Kcr+6EfKWVcRGMyS9WWV5k91DsunkGjg5mr0IiIrJ68Vo8yl2cDvmVm9zvXQlkA3ePRFzjHnByNlu4ZtHMdlbCwsIQFxeHgICABMvl8c2bN5PdRpYnt35sbKzaX2BgYJJtnjx5oibjbyBElNCpvWtRRi5lJfpFqie/YH0QhdoXJ/DUERFlpBR+70ogmwd3cFx+P9dpzXOeDLOH9g6Jvn5IdUPiZc9aP7nlelKWMHLkyAxpqz17/Pixoe54yZIl6sY6sh2P7l03ab3jLmUR5RmU6e0hIrJ1Hg+vokzMsQz7/WyPzBbE5sqVC05OTkmyrnLTUOJsq16ePHmSXd/Z2Rl+frpRhxIbNmwYhgwZkiATGxTEP8JpJVnzVatWGebJtmTLkc+0FRt8gmrMCBARPTfpjQDru2fc72c7ZLbiNldXV9VV1vr16xMsl8e1a9dOdptatWolWX/dunWoWrVqivWwbm5uqnDZeCKihErWaK7uhtXfTJCYLL8JP7UeERE9P/7efX5mvUNDMqTSpdb06dNVjwODBw/GlStXVI8D+ixqr169DOvL8suXL6vtZH3ZTm7q+uCDD8z4Koisn9w0IN25iMSBrP5xSK0RvLmAiIi/dy2GWWtiu3btijt37mDUqFEICQlRfcDKJevg4GD1vCyToFZPBkWQ5yXYnThxIvLmzYvx48eb3EcsEaVMunE5DCTprzDUwU8FsOwnlogoY/H3rhX3E2sOttQ/WlYPduDl5aXmIyMjOdiBjXe3Jb0VyM0EUosll7zYvQsRkW383o2woTjI7L0TEJFlkV+c7M6FiIi/dy2d3QWx+sQz+4tNeyZWT84deyggIiKyPhFP+8u3hQvxdhfESg2uYDdb6Se1yERERGTd8ZCvry+smd0FsTlz5lQ/5YaxzH7z9H3SXr161errToiIiMj6hYeHo0CBAoZ4yJrZXRDr6KjrVUwC2KwKLNk/LREREVliPGTNrP8VEBEREZHdYRBLRERERFbH7oJYGYZ2xIgR6qctHYuIiIjInmITuxvsgIiIiIisn91lYomIiIjI+jGIJSIiIiKrwyCWiIiIiKwOg1giIiIisjoMYjPJpEmTUKhQIbi7u6NKlSrYvn17suvJaF4NGjRA6dKlUb58eSxatCizmkRERERkUdq3b48cOXKgU6dOad6WQWwmWLBgAQYNGoThw4fj8OHDqFu3Llq2bKmGuk3M2dkZY8eOxYkTJ7BhwwYMHjwYDx8+zIxmEREREVmUgQMHYtasWenalkFsJhgzZgz69u2L119/HaVKlVJBalBQECZPnpxk3cDAQFSsWFHN+/v7q7GM7969mxnNIiIiIrIoDRs2hLe3t3UGsdu2bUObNm2QN29eODg4YPny5c/c5osvvlDrGk958uQxW9uMSwcqVaqEgwcPolmzZgnWkce7du1K9XgHDhxAfHy8CniJiIjIuknySkoFfXx81FSrVi2sXr36uWOPrIiDtqUjBkqtfDIzmD2IlUvnFSpUwIQJE9K0XZkyZRASEmKYjh49mur6O3fuRExMTJLlp06dws2bN9PdtsSlA/IGxsXFwXgMCVn2559/Ys+ePShbtqxhunHjhmGdO3fuoFevXvj1119NPANERERkyfLnz49vv/1WJalkatSoEdq2bYvjx48/d1xUJg1xUFbFQMmVT0oMZBz7JBcDpZtmQaQ5y5Yte+Z6I0aM0CpUqGDyfuPi4tT6nTp10mJjYw3LT58+reXJk0f77rvv0t226tWra/369TM8vn79ulq3Z8+eCdb76quvtBIlSiS778ePH2t169bVZs2aZfJrIiIiIuuTI0cObdq0aSatm1LskZY4KC4LYyBRsmRJbejQoVpabN68WevYsaOWVmbPxKbX2bNnVYpbUtjdunXDhQsXUlzX0dERq1atUt8SJNspl+zPnz+vvhG99NJL+Oijj9LVhujo6CSlA7ly5VJpd1luLDQ0FAEBAUn2IZ+NPn36qLb07NkzXe0gIiIiyyZXaeWqrGQ4pawgq+IgxyyMgUwtn8woVhnE1qhRQ93JtnbtWvz2228qFV67dm11ST4l8kZv2rRJpdS7d++u3rzGjRtjypQp6W5HWFiY+lAaB6eurq7Ily8frl+/nmDd9evXqzYmJu2RdLzUmsgNXjI9qzSCiIiIrIP8Tffy8oKbmxv69euHZcuWqW41szIOyptFMZCQxymVKCSnefPm6Ny5swq0pfxi//79pjdCywSS5pZdpzbt378/3eUEiUVGRmoBAQHaTz/99Mx1t27dqo5TuHBhLSYmxuRjJNc2fenArl27Eizv2rWrWv77779rJ06c0AYNGqR5enpqly5dSsOrIiIiImv35MkT7ezZsyrukcvsuXLl0o4fP27StqbGRZEmxkFZEQOlVj6Z0ZyRCQYMGKBS26kpWLBghh3P09MT5cqVU6n11Ny6dQtvvvmmuttOIn3pk/WXX35J93GldMDJySnJNw75FlK0aFGMGjVKFVtLAbN8wwgODk73sYiIiMj6yBVaiQlE1apVVfwxbtw4TJ06NUvjoFtZFAOlVD6ZGTIliJUXJlNWefLkCU6ePKnuikst7S2pc+m3VUbFkjdaRsqS9P6PP/6Y7g+m3HUnpQIy4oSePJaRJ0aPHp2u/RIREZFtksSmxC1ZGQeFZXEMJD0wWG0QmxaRkZE4d+6c4fHFixdx5MgR1el/gQIF1DLp3kFqSDZu3Kgef/DBB+qbhDwvEf9XX32FiIgI9O7dO9ljSBFzixYtVCZU6k9llCx5I2WELOlkV2pY5RtJeto2ZMgQdUOWfLuSQm3pIku6lpC6FyIiIrJfn3zyiepySvp/f/Dggbqxa8uWLVizZk2y8Y2psUda4qB4W46BNDOTbhWSq5nt3bt3ghrb4ODgBDWngYGBmouLi5Y3b16tQ4cOz6wvWbdunfbo0aMkyw8fPqxduXIl3W0TEydOVO1zdXXVKleurGpOiIiIyL699tprhvggd+7cWuPGjVU8klJ8Y2rskdY4aJ2NxkAO8k/WhMtERERERHbcxRYRERER2TcGsURERERkdRjEEhEREZHVYRBLRERERFaHQSwRERERWR0GsURERERkdRjEEhEREZHVYRBLRERERFaHQSwRERERWR0GsURERho0aIBBgwZZ5DEKFiyIsWPHZkqbiIisDYNYIiIiIrI6DGKJiIiIyOowiCUiSsGcOXNQtWpVeHt7I0+ePOjevTtCQ0MNz2/ZsgUODg5Yu3YtKlWqhGzZsqFRo0ZqndWrV6NUqVLw8fHByy+/jKioqAT7jo2NxYABA5A9e3b4+fnh008/haZphudlH23atFH7LFSoEObOnZukfWPGjEG5cuXg6emJoKAg9O/fH5GRkXw/icguMIglIkpBdHQ0vvzyS/zzzz9Yvnw5Ll68iD59+iRZ74svvsCECROwa9cuXL16FV26dFG1q/PmzcPKlSuxfv16/PLLLwm2+eOPP+Ds7Iy9e/di/Pjx+PnnnzFt2jTD83KcS5cuYdOmTVi8eDEmTZqUIIBWv8AdHdW2x44dU/uTdT/66CO+n0RkFxw046/+RER2Tm66qlixYrI3UO3fvx/Vq1fHgwcP4OXlpTKxDRs2xIYNG9C4cWO1zrfffothw4bh/PnzKFy4sFrWr18/FZCuWbPGcAwJSI8fP64yuWLo0KFYsWIFTpw4gTNnzqBEiRLYs2cPatSooZ4/deqUyuxKsJvSTWGLFi3C22+/jbCwsEw7P0REloKZWCKiFBw+fBht27ZFcHCwKimQ4FNcuXIlwXrly5c3zAcEBMDDw8MQwOqXJc6i1qxZ0xDAilq1auHs2bOIi4vDyZMnVZZWShn0SpYsqUoPjG3evBlNmzZFvnz5VPt69eqFO3fu4OHDh3xPicjmMYglIkqGBILNmjVTGVepjZUs7LJlywxlBsZcXFwM8xKYGj/WL4uPjzf5POsvkBkHuYldvnwZrVq1QtmyZbFkyRIcPHgQEydOVM/FxMTwPSUim+ds7gYQEVkiuXwvl+WlPEBumhIHDhzIsP1LqUDix8WKFYOTk5MqG5Abv+R4Ur4gTp8+jfv37xvWl+dknZ9++knVxoqFCxdmWPuIiCwdM7FERMkoUKAAXF1d1Q1ZFy5cUPWqcpNXRpEbwIYMGaKC0/nz56vjvPfee+o5qYdt0aIF3njjDXXjl2RZX3/9ddVTgV6RIkVUEKtv3+zZszFlyhS+l0RkNxjEEhElI3fu3Jg5c6a6Wap06dIqI/vjjz9m2LmS+tVHjx6pTOs777yDd999F2+++abh+RkzZqgMcP369dGhQwf1nL+/v+F5uflMutj67rvvVEmBdME1evRovpdEZDfYOwERERERWR1mYomIiIjI6jCIJSIiIiKrwyCWiIiIiKwOg1giIiIisjoMYomIiIjI6jCIJSIiIiKrwyCWiIiIiKwOg1giIiIisjoMYomIiIjI6jCIJSIiIiKrwyCWiIiIiKwOg1giIiIigrX5P5mN7coO8ezlAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=6) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=35, rel.err=0.9444 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=7) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=39, rel.err=1.1667 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=8) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=38, rel.err=1.1111 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=9) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=30, rel.err=0.6667 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=10) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=43, rel.err=1.3889 (excluded from tol. check)\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reachable_tfsreachable_weighttf_matchtf_inactivetf_oppositeactive_internal_nodesderegulated_internal_nodesnode_deregulated_fractionbackground_deregulated_fractionnode_deregulation_enrichmentnode_deregulation_zannotated_internal_nodespathway_concordanceactive_edgesactive_nodesactive_inputseligiblerelative_node_validationrelative_pathway_validationvalidation_score
lambda
0.00061.00.847530.152470.01300.00.0067910.0-0.301232100.74459019191True0.01.0000000.500000
0.00161.00.847530.152470.01100.00.0067910.0-0.276613100.63477917171True0.00.8525220.426261
0.00361.00.847530.152470.01100.00.0067910.0-0.276613100.63477917171True0.00.8525220.426261
0.01061.00.847530.152470.01100.00.0067910.0-0.27661390.59967417171True0.00.8053750.402688
0.03061.00.847530.152470.01100.00.0067910.0-0.27661390.70731117171True0.00.9499330.474966
0.10061.00.000001.000000.0000.00.0067910.00.00000000.000000000False0.00.0000000.000000
0.30061.00.000001.000000.0000.00.0067910.00.00000000.000000000False0.00.0000000.000000
\n", + "
" + ], + "text/plain": [ + " reachable_tfs reachable_weight tf_match tf_inactive tf_opposite \\\n", + "lambda \n", + "0.000 6 1.0 0.84753 0.15247 0.0 \n", + "0.001 6 1.0 0.84753 0.15247 0.0 \n", + "0.003 6 1.0 0.84753 0.15247 0.0 \n", + "0.010 6 1.0 0.84753 0.15247 0.0 \n", + "0.030 6 1.0 0.84753 0.15247 0.0 \n", + "0.100 6 1.0 0.00000 1.00000 0.0 \n", + "0.300 6 1.0 0.00000 1.00000 0.0 \n", + "\n", + " active_internal_nodes deregulated_internal_nodes \\\n", + "lambda \n", + "0.000 13 0 \n", + "0.001 11 0 \n", + "0.003 11 0 \n", + "0.010 11 0 \n", + "0.030 11 0 \n", + "0.100 0 0 \n", + "0.300 0 0 \n", + "\n", + " node_deregulated_fraction background_deregulated_fraction \\\n", + "lambda \n", + "0.000 0.0 0.006791 \n", + "0.001 0.0 0.006791 \n", + "0.003 0.0 0.006791 \n", + "0.010 0.0 0.006791 \n", + "0.030 0.0 0.006791 \n", + "0.100 0.0 0.006791 \n", + "0.300 0.0 0.006791 \n", + "\n", + " node_deregulation_enrichment node_deregulation_z \\\n", + "lambda \n", + "0.000 0.0 -0.301232 \n", + "0.001 0.0 -0.276613 \n", + "0.003 0.0 -0.276613 \n", + "0.010 0.0 -0.276613 \n", + "0.030 0.0 -0.276613 \n", + "0.100 0.0 0.000000 \n", + "0.300 0.0 0.000000 \n", + "\n", + " annotated_internal_nodes pathway_concordance active_edges \\\n", + "lambda \n", + "0.000 10 0.744590 19 \n", + "0.001 10 0.634779 17 \n", + "0.003 10 0.634779 17 \n", + "0.010 9 0.599674 17 \n", + "0.030 9 0.707311 17 \n", + "0.100 0 0.000000 0 \n", + "0.300 0 0.000000 0 \n", + "\n", + " active_nodes active_inputs eligible relative_node_validation \\\n", + "lambda \n", + "0.000 19 1 True 0.0 \n", + "0.001 17 1 True 0.0 \n", + "0.003 17 1 True 0.0 \n", + "0.010 17 1 True 0.0 \n", + "0.030 17 1 True 0.0 \n", + "0.100 0 0 False 0.0 \n", + "0.300 0 0 False 0.0 \n", + "\n", + " relative_pathway_validation validation_score \n", + "lambda \n", + "0.000 1.000000 0.500000 \n", + "0.001 0.852522 0.426261 \n", + "0.003 0.852522 0.426261 \n", + "0.010 0.805375 0.402688 \n", + "0.030 0.949933 0.474966 \n", + "0.100 0.000000 0.000000 \n", + "0.300 0.000000 0.000000 " + ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=11) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=55, rel.err=2.0556 (excluded from tol. check)\n" + "Selected differential-network lambda: 0.03\n" ] + } + ], + "source": [ + "direct_measurements_raw = direct_significant_tfs.loc[\n", + " direct_significant_tfs.index.intersection(G.V)\n", + "].to_dict()[\"Leukemic_spontaneous.vs.Leukemic_SB\"]\n", + "direct_measurements = normalized_signed_measurements(direct_measurements_raw)\n", + "direct_inputs = {node: 0 for node in direct_receptors.index}\n", + "direct_inputs, direct_measurements = restrict_to_reachable_evidence(\n", + " G, direct_inputs, direct_measurements\n", + ")\n", + "direct_sample = make_carnival_sample(direct_inputs, direct_measurements)\n", + "direct_data = cn.Data.from_cdict({\"spontaneous_vs_SB\": direct_sample})\n", + "direct_validation_pathways = heldout_pathway_activity(\n", + " direct_validation_results, \"Leukemic_spontaneous.vs.Leukemic_SB\"\n", + ")\n", + "\n", + "lambda_values = [0.0, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3]\n", + "direct_solutions = {}\n", + "direct_rows = []\n", + "for lambda_reg in lambda_values:\n", + " print(f\"Solving direct contrast, lambda={lambda_reg:g}\")\n", + " solution = solve_carnival(G, direct_data, lambda_reg)\n", + " direct_solutions[lambda_reg] = solution\n", + " direct_rows.append(\n", + " {\n", + " \"lambda\": lambda_reg,\n", + " **tf_fit_metrics(solution, 0, direct_measurements),\n", + " **internal_validation_metrics(\n", + " solution,\n", + " 0,\n", + " direct_inputs,\n", + " direct_measurements,\n", + " direct_validation_results,\n", + " direct_validation_pathways,\n", + " ),\n", + " **structural_metrics(solution, 0, direct_inputs),\n", + " }\n", + " )\n", + "\n", + "direct_diagnostics = pd.DataFrame(direct_rows).set_index(\"lambda\")\n", + "direct_baseline_match = direct_diagnostics.loc[0.0, \"tf_match\"]\n", + "direct_diagnostics[\"eligible\"] = (\n", + " (direct_diagnostics[\"tf_match\"] >= direct_baseline_match - 0.05)\n", + " & (direct_diagnostics[\"active_edges\"] > 0)\n", + " & (direct_diagnostics[\"active_inputs\"] > 0)\n", + ")\n", + "positive_direct_node_z = direct_diagnostics[\"node_deregulation_z\"].clip(lower=0)\n", + "best_direct_node_z = positive_direct_node_z.max()\n", + "best_direct_pathway = direct_diagnostics[\"pathway_concordance\"].max()\n", + "direct_diagnostics[\"relative_node_validation\"] = (\n", + " positive_direct_node_z / best_direct_node_z if best_direct_node_z > 0 else 0.0\n", + ")\n", + "direct_diagnostics[\"relative_pathway_validation\"] = (\n", + " direct_diagnostics[\"pathway_concordance\"] / best_direct_pathway\n", + " if best_direct_pathway > 0\n", + " else 0.0\n", + ")\n", + "direct_diagnostics[\"validation_score\"] = direct_diagnostics[\n", + " [\"relative_node_validation\", \"relative_pathway_validation\"]\n", + "].mean(axis=1)\n", + "\n", + "eligible_direct = direct_diagnostics.loc[direct_diagnostics[\"eligible\"]]\n", + "if eligible_direct.empty:\n", + " raise RuntimeError(\"No lambda preserves a fitted, non-empty differential network\")\n", + "best_direct_validation = eligible_direct[\"validation_score\"].max()\n", + "near_best_direct = eligible_direct.loc[\n", + " eligible_direct[\"validation_score\"] >= best_direct_validation - 0.05\n", + "]\n", + "selected_direct_lambda = (\n", + " near_best_direct.reset_index()\n", + " .sort_values(\n", + " [\"active_edges\", \"validation_score\", \"lambda\"],\n", + " ascending=[True, False, False],\n", + " )\n", + " .iloc[0][\"lambda\"]\n", + ")\n", + "\n", + "fig, axis = plt.subplots(figsize=(7, 4))\n", + "axis.plot(\n", + " direct_diagnostics.index,\n", + " direct_diagnostics[\"tf_match\"],\n", + " marker=\"o\",\n", + " label=\"TF matched weight\",\n", + ")\n", + "axis.plot(\n", + " direct_diagnostics.index,\n", + " direct_diagnostics[\"validation_score\"],\n", + " marker=\"o\",\n", + " label=\"held-out validation\",\n", + ")\n", + "axis.axvline(selected_direct_lambda, color=\"black\", linestyle=\"--\", label=\"selected lambda\")\n", + "axis.set(xscale=\"symlog\", xlabel=\"lambda\", ylabel=\"score\", ylim=(-0.03, 1.03))\n", + "axis.legend(frameon=False)\n", + "axis.set_title(\"Differential-network model selection\")\n", + "plt.tight_layout()\n", + "plt.show()\n", + "\n", + "display(direct_diagnostics)\n", + "print(f\"Selected differential-network lambda: {selected_direct_lambda:g}\")" + ] + }, + { + "cell_type": "markdown", + "id": "872dc98d", + "metadata": { + "papermill": { + "duration": 0.008242, + "end_time": "2026-08-06T17:19:07.284996+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:07.276754+00:00", + "status": "completed" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=12) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=33, rel.err=0.8333 (excluded from tol. check)\n" - ] + "tags": [] + }, + "source": [ + "### Selected differential network and full-data corroboration\n", + "\n", + "The selected training network remains the inferential result: it was frozen before the\n", + "held-out samples were used for validation. Rebuilding the topology after adding those\n", + "samples would consume the holdout and, because CARNIVAL's edge penalty is absolute, the\n", + "same lambda is not automatically comparable when many more significant TF outputs enter\n", + "the full-data contrast.\n", + "\n", + "We therefore use all leukemia samples only for a sensitivity summary of gene, receptor,\n", + "and TF evidence. The network shown below is the held-out-tested model. Its node signs are\n", + "relative: `+1` means higher inferred activity in spontaneous leukemia and `-1` means\n", + "higher inferred activity in SB leukemia." + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "id": "bb845857", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:19:07.301031Z", + "iopub.status.busy": "2026-08-06T17:19:07.300892Z", + "iopub.status.idle": "2026-08-06T17:19:09.822002Z", + "shell.execute_reply": "2026-08-06T17:19:09.821613Z" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=13) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=26, rel.err=0.4444 (excluded from tol. check)\n" - ] + "papermill": { + "duration": 2.529911, + "end_time": "2026-08-06T17:19:09.822491+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:07.292580+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[15/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=2) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=41, rel.err=1.2778 (excluded from tol. check)\n" + "Fitting dispersions...\n", + "... done in 0.03 seconds.\n", + "\n", + "Fitting MAP dispersions...\n", + "... done in 0.03 seconds.\n", + "\n", + "Fitting LFCs...\n", + "... done in 0.04 seconds.\n", + "\n" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=14) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=46, rel.err=1.5556 (excluded from tol. check)\n" - ] + "data": { + "text/plain": [ + "reachable_tfs 6.000000\n", + "reachable_weight 1.000000\n", + "tf_match 0.847530\n", + "tf_inactive 0.152470\n", + "tf_opposite 0.000000\n", + "active_edges 17.000000\n", + "active_nodes 17.000000\n", + "active_inputs 1.000000\n", + "heldout_validation_score 0.474966\n", + "heldout_pathway_concordance 0.707311\n", + "Name: held-out-tested differential network, dtype: float64" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=15) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=29, rel.err=0.6111 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=16) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=34, rel.err=0.8889 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=17) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=18, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=18) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=26, rel.err=0.4444 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=19) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=39, rel.err=1.1667 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=20) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=39, rel.err=1.1667 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=21) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=58, rel.err=2.2222 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=22) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=37, rel.err=1.0556 (excluded from tol. check)\n" - ] + "data": { + "text/plain": [ + "direct_DE_genes 537.0\n", + "spontaneous_higher_genes 58.0\n", + "SB_higher_genes 479.0\n", + "differential_receptor_candidates 30.0\n", + "significant_differential_TFs 35.0\n", + "training_DE_genes_replicated 39.0\n", + "replicated_gene_direction_agreement 1.0\n", + "Name: all-sample evidence sensitivity, dtype: float64" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "full_direct_adata = adata[\n", + " adata.obs[\"condition\"].isin([\"Leukemic_spontaneous\", \"Leukemic_SB\"])\n", + "].copy()\n", + "full_direct_results = fit_direct_de(full_direct_adata)\n", + "full_direct_mat = full_direct_results[[\"stat\"]].T.rename(\n", + " index={\"stat\": \"Leukemic_spontaneous.vs.Leukemic_SB\"}\n", + ")\n", + "full_direct_tf_acts, full_direct_tf_pvals = dc.mt.ulm(\n", + " data=full_direct_mat, net=collectri, verbose=False\n", + ")\n", + "full_direct_significant_tfs = (\n", + " full_direct_tf_acts[full_direct_tf_pvals <= max_pval].T.dropna()\n", + ")\n", + "full_direct_receptors = select_direct_receptors(\n", + " full_direct_results, unique_receptors, G\n", + ")\n", + "\n", + "full_direct_gene_mask = (\n", + " (full_direct_results[\"padj\"] <= gene_fdr)\n", + " & (full_direct_results[\"log2FoldChange\"].abs() >= gene_threshold)\n", + ")\n", + "full_direct_gene_sign = np.sign(\n", + " full_direct_results.loc[full_direct_gene_mask, \"log2FoldChange\"]\n", + ")\n", + "training_specific_genes = direct_gene_table.index[direct_gene_sig]\n", + "replicated_genes = training_specific_genes.intersection(full_direct_gene_sign.index)\n", + "training_full_sign_agreement = (\n", + " np.sign(direct_results.loc[replicated_genes, \"log2FoldChange\"])\n", + " == full_direct_gene_sign.loc[replicated_genes]\n", + ").mean()\n", + "\n", + "final_direct_solution = direct_solutions[selected_direct_lambda]\n", + "selected_direct_metrics = pd.Series(\n", + " {\n", + " **tf_fit_metrics(final_direct_solution, 0, direct_measurements),\n", + " **structural_metrics(final_direct_solution, 0, direct_inputs),\n", + " \"heldout_validation_score\": direct_diagnostics.loc[\n", + " selected_direct_lambda, \"validation_score\"\n", + " ],\n", + " \"heldout_pathway_concordance\": direct_diagnostics.loc[\n", + " selected_direct_lambda, \"pathway_concordance\"\n", + " ],\n", + " },\n", + " name=\"held-out-tested differential network\",\n", + ")\n", + "full_evidence_metrics = pd.Series(\n", + " {\n", + " \"direct_DE_genes\": int(full_direct_gene_mask.sum()),\n", + " \"spontaneous_higher_genes\": int((full_direct_gene_sign > 0).sum()),\n", + " \"SB_higher_genes\": int((full_direct_gene_sign < 0).sum()),\n", + " \"differential_receptor_candidates\": len(full_direct_receptors),\n", + " \"significant_differential_TFs\": len(full_direct_significant_tfs),\n", + " \"training_DE_genes_replicated\": len(replicated_genes),\n", + " \"replicated_gene_direction_agreement\": training_full_sign_agreement,\n", + " },\n", + " name=\"all-sample evidence sensitivity\",\n", + ")\n", + "\n", + "display(selected_direct_metrics)\n", + "full_evidence_metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "886fbd8e", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:19:09.839091Z", + "iopub.status.busy": "2026-08-06T17:19:09.838981Z", + "iopub.status.idle": "2026-08-06T17:19:09.875654Z", + "shell.execute_reply": "2026-08-06T17:19:09.875241Z" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=23) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=39, rel.err=1.1667 (excluded from tol. check)\n" - ] + "papermill": { + "duration": 0.044804, + "end_time": "2026-08-06T17:19:09.876101+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:09.831297+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=24) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=36, rel.err=1.0000 (excluded from tol. check)\n" - ] + "data": { + "text/html": [], + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] rejected (tol=0.05 violated by 'error_sample1_0' with rel.err=0.3333) (total rejected=3) -> error_sample1_0: val=2, rel.err=0.3333, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=1, rel.err=1000000000.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=43, rel.err=1.3889 (excluded from tol. check)\n" - ] + "data": { + "text/html": [], + "text/plain": [] + }, + "metadata": {}, + "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=25) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=36, rel.err=1.0000 (excluded from tol. check)\n" - ] + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "digraph {\n", + "\tnode [fixedsize=true]\n", + "\tMapk1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tEp300 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tMapk1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tCsnk2a1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tRaf1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tMap2k1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tCsnk2a1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tJun [color=dodgerblue4 fillcolor=\"#ffe8d6\" penwidth=2 shape=diamond style=filled]\n", + "\tSmo [color=firebrick4 fillcolor=\"#dff3ff\" penwidth=2 shape=triangle style=filled]\n", + "\tSrc [color=firebrick4 penwidth=2 shape=circle]\n", + "\te_5_source [shape=point]\n", + "\tSmo [color=firebrick4 fillcolor=\"#dff3ff\" penwidth=2 shape=triangle style=filled]\n", + "\tMap2k1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tGsk3b [color=firebrick4 penwidth=2 shape=circle]\n", + "\tMap2k1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tMapk1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tEp300 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tSmad7 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tEp300 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tFli1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tPpp1ca [color=firebrick4 penwidth=2 shape=circle]\n", + "\tSp3 [color=dodgerblue4 fillcolor=\"#ffe8d6\" penwidth=2 shape=diamond style=filled]\n", + "\tFli1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tGata1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tGata1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tSpi1 [color=dodgerblue4 fillcolor=\"#ffe8d6\" penwidth=2 shape=diamond style=filled]\n", + "\tCsnk2a1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tEsr1 [color=dodgerblue4 fillcolor=\"#ffe8d6\" penwidth=2 shape=diamond style=filled]\n", + "\tSrc [color=firebrick4 penwidth=2 shape=circle]\n", + "\tRaf1 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tGsk3b [color=firebrick4 penwidth=2 shape=circle]\n", + "\tSrebf1 [color=dodgerblue4 fillcolor=\"#ffe8d6\" penwidth=2 shape=diamond style=filled]\n", + "\tSmad7 [color=firebrick4 penwidth=2 shape=circle]\n", + "\tPpp1ca [color=firebrick4 penwidth=2 shape=circle]\n", + "\tMapk1 -> Ep300 [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tMapk1 -> Csnk2a1 [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tRaf1 -> Map2k1 [arrowhead=normal color=dodgerblue4 penwidth=5.0]\n", + "\tCsnk2a1 -> Jun [arrowhead=tee color=firebrick4 penwidth=5.0]\n", + "\tSmo -> Src [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\te_5_source -> Smo [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tMap2k1 -> Gsk3b [arrowhead=normal color=dodgerblue4 penwidth=5.0]\n", + "\tMap2k1 -> Mapk1 [arrowhead=normal color=dodgerblue4 penwidth=5.0]\n", + "\tEp300 -> Smad7 [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tEp300 -> Fli1 [arrowhead=normal color=dodgerblue4 penwidth=5.0]\n", + "\tPpp1ca -> Sp3 [arrowhead=tee color=dodgerblue4 penwidth=5.0]\n", + "\tFli1 -> Gata1 [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tGata1 -> Spi1 [arrowhead=tee color=firebrick4 penwidth=5.0]\n", + "\tCsnk2a1 -> Esr1 [arrowhead=tee color=firebrick4 penwidth=5.0]\n", + "\tSrc -> Raf1 [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "\tGsk3b -> Srebf1 [arrowhead=tee color=firebrick4 penwidth=5.0]\n", + "\tSmad7 -> Ppp1ca [arrowhead=normal color=firebrick4 penwidth=5.0]\n", + "}" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "direct_edge_values = final_direct_solution[\"edge_value\"][:, 0]\n", + "direct_active_edges = np.flatnonzero(np.abs(direct_edge_values) > 0.5)\n", + "final_direct_graph = final_direct_solution[\"method\"].processed_graph.edge_subgraph(\n", + " direct_active_edges\n", + ")\n", + "full_vertex_positions = {\n", + " node: i for i, node in enumerate(final_direct_solution[\"vertices\"])\n", + "}\n", + "plot_vertex_values = np.array(\n", + " [\n", + " final_direct_solution[\"vertex_value\"][full_vertex_positions[node], 0]\n", + " for node in final_direct_graph.V\n", + " ]\n", + ")\n", + "plot_edge_values = direct_edge_values[direct_active_edges]\n", + "direct_node_roles = {\n", + " **{node: \"input\" for node in direct_inputs},\n", + " **{node: \"output\" for node in direct_measurements},\n", + "}\n", + "\n", + "final_direct_graph.plot(\n", + " preset=\"signaling\",\n", + " data={\n", + " \"vertex_values\": plot_vertex_values,\n", + " \"edge_values\": plot_edge_values,\n", + " },\n", + " node_roles=direct_node_roles,\n", + " layout=\"dot\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "89ff629a", + "metadata": { + "papermill": { + "duration": 0.007379, + "end_time": "2026-08-06T17:19:09.891400+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:09.884021+00:00", + "status": "completed" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=26) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=36, rel.err=1.0000 (excluded from tol. check)\n" - ] + "tags": [] + }, + "source": [ + "The direct network captures relative leukemia differences that the shared-control models\n", + "are not forced to fit. It should therefore be interpreted alongside—not instead of—the\n", + "multi-condition analysis below: the former emphasizes differences, while the latter\n", + "retains mechanisms shared by both leukemias relative to normal." + ] + }, + { + "cell_type": "markdown", + "id": "560db3a1", + "metadata": { + "papermill": { + "duration": 0.007733, + "end_time": "2026-08-06T17:19:09.906384+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:09.898651+00:00", + "status": "completed" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=27) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=40, rel.err=1.2222 (excluded from tol. check)\n" - ] + "tags": [] + }, + "source": [ + "## Multi-condition network inference and deterministic $\\lambda$ analysis\n", + "\n", + "We now return to the two disease-versus-normal conditions. These models retain shared\n", + "leukemia biology and estimate absolute control-relative signs; their union regularizer is\n", + "not intended to replace the direct differential network above." + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "id": "de6c8d47", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:19:09.922457Z", + "iopub.status.busy": "2026-08-06T17:19:09.922336Z", + "iopub.status.idle": "2026-08-06T17:19:50.211055Z", + "shell.execute_reply": "2026-08-06T17:19:50.210685Z" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=27, rejected=3, solutions returned=28\n" - ] + "papermill": { + "duration": 40.297779, + "end_time": "2026-08-06T17:19:50.211625+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:09.913846+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "lambda: 0.1\n" + "Solving lambda=0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.001\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.003\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.01\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.03\n", + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.1\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Solving lambda=0.3\n", + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 0\n" ] }, { - "name": "stderr", + "name": "stdout", "output_type": "stream", "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" + "Unreachable vertices for sample: 2\n", + "Unreachable vertices for sample: 10\n" ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.2\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/docs/tutorials/contrib/multi_condition_tutorial/.pixi/envs/default/lib/python3.11/site-packages/numpy/_core/fromnumeric.py:83: RuntimeWarning: invalid value encountered in reduce\n", - " return ufunc.reduce(obj, axis, dtype, out, **passkwargs)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.3\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=3, rel.err=0.0000, error_sample2_1: val=2, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.5\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=4, rel.err=0.0000, error_sample2_1: val=5, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=3, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.7\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.9\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "lambda: 0.95\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[1/30] accepted (total accepted=1) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[2/30] accepted (total accepted=2) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[3/30] accepted (total accepted=3) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[4/30] accepted (total accepted=4) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[5/30] accepted (total accepted=5) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[6/30] accepted (total accepted=6) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[7/30] accepted (total accepted=7) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[8/30] accepted (total accepted=8) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[9/30] accepted (total accepted=9) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[10/30] accepted (total accepted=10) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[11/30] accepted (total accepted=11) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[12/30] accepted (total accepted=12) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[13/30] accepted (total accepted=13) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[14/30] accepted (total accepted=14) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[15/30] accepted (total accepted=15) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[16/30] accepted (total accepted=16) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[17/30] accepted (total accepted=17) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[18/30] accepted (total accepted=18) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[19/30] accepted (total accepted=19) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[20/30] accepted (total accepted=20) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[21/30] accepted (total accepted=21) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[22/30] accepted (total accepted=22) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[23/30] accepted (total accepted=23) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[24/30] accepted (total accepted=24) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[25/30] accepted (total accepted=25) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[26/30] accepted (total accepted=26) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[27/30] accepted (total accepted=27) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[28/30] accepted (total accepted=28) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[29/30] accepted (total accepted=29) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:[30/30] accepted (total accepted=30) -> error_sample1_0: val=5, rel.err=0.0000, error_sample2_1: val=6, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=0, rel.err=0.0000 (excluded from tol. check)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:corneto.methods.sampler:Done. accepted=30, rejected=0, solutions returned=31\n" - ] - } - ], - "source": [ - "# retrieving alternative network solutions. This snippet will take a while to run\n", - "from corneto.methods.sampler import sample_alternative_solutions\n", - "\n", - "lambda_val = [0, 0.01, 0.1, 0.2, 0.3, 0.5, 0.7, 0.9, 0.95]\n", - "other_optimal_v = dict() # collecting the vertex sampled solutions for each lambda\n", - "index = dict()\n", - "for i in lambda_val:\n", - " print(\"lambda: \", i)\n", - " c = CarnivalFlow(lambda_reg=i, indirect_rule_penalty=1)\n", - " P = c.build(G, data)\n", - " vertex_results = sample_alternative_solutions(\n", - " P,\n", - " \"vertex_value\",\n", - " percentage=0.03,\n", - " scale=0.03,\n", - " rel_opt_tol=0.05,\n", - " max_samples=30, # number of alternative solutions to sample\n", - " solver_kwargs=dict(solver=\"gurobi\", max_seconds=max_time, mip_gap=0.01, seed=seed),\n", - " )\n", - " other_optimal_v[\"lambda\" + str(i)] = vertex_results[\"vertex_value\"]\n", - " index[\"lambda\" + str(i)] = c.processed_graph.V" - ] - }, - { - "cell_type": "code", - "execution_count": 51, - "id": "433c2052", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:46.333452Z", - "iopub.status.busy": "2025-06-27T16:24:46.333299Z", - "iopub.status.idle": "2025-06-27T16:24:46.336876Z", - "shell.execute_reply": "2025-06-27T16:24:46.336578Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "def compute_nodes_metrics(nodes, inputs, measurements, results_df, column):\n", - " \"\"\"Computes the metrics for the nodes in the network based on the provided inputs, measurements, and results dataframe.\n", - "\n", - " Args:\n", - " nodes (pd.DataFrame): data frame containing the node scores per condition.\n", - " inputs (dict): Dictionary of input nodes with their values.\n", - " measurements (dict): Dictionary of output nodes with their values.\n", - " results_df (pd.DataFrame): DataFrame containing the results of differential expression analysis.\n", - " column (str): Column name to be used for filtering conditions.\n", - "\n", - " Returns:\n", - " sign_agreement_ratio (float): Ratio of nodes with the same sign as the DE analysis.\n", - " de_overlap_ratio (float): Ratio of DE genes that overlap with the nodes.\n", - " overall_agreement (float): Overall agreement between DE genes and nodes.\n", - " \"\"\"\n", - " nodes = nodes.loc[(nodes[column] != 0.0)][column] # nodes with a score different from 0\n", - " de = results_df.loc[results_df[\"padj\"] < 0.05].index.tolist() # de genes\n", - " in_out_nodes = set(measurements.keys()).union(\n", - " set(nodes.index[nodes.index.isin(inputs.keys())])\n", - " ) # collecting input and output nodes which we don´t want to evaluate\n", - " middle_nodes = set(nodes.index).difference(in_out_nodes)\n", - " commmon_genes = list(\n", - " set(results_df.index).intersection(middle_nodes)\n", - " ) # common genes between network and DE analysis genes\n", - " stat = results_df.loc[commmon_genes, \"stat\"]\n", - " stat_sign = np.sign(stat)\n", - " middle_nodes_sign = np.sign(nodes.loc[commmon_genes])\n", - " sign_agreement_ratio = 0\n", - " if len(middle_nodes_sign) > 0:\n", - " sign_agreement_ratio = (middle_nodes_sign == stat_sign).sum() / len(middle_nodes_sign)\n", - " de_overlap_ratio = 0\n", - " if len(middle_nodes) > 0:\n", - " de_overlap_ratio = len(set(de).intersection(middle_nodes)) / len(middle_nodes)\n", - " overall_agreement = (np.array(de_overlap_ratio) + np.array(sign_agreement_ratio)) / 2\n", - "\n", - " return sign_agreement_ratio, de_overlap_ratio, overall_agreement" - ] - }, - { - "cell_type": "code", - "execution_count": 52, - "id": "5cbd529a", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:46.359822Z", - "iopub.status.busy": "2025-06-27T16:24:46.359691Z", - "iopub.status.idle": "2025-06-27T16:24:47.176230Z", - "shell.execute_reply": "2025-06-27T16:24:47.175953Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialize metric containers\n", - "metrics_avg_1_per_lambda = []\n", - "metrics_avg_2_per_lambda = []\n", - "metrics_sd_1_per_lambda = []\n", - "metrics_sd_2_per_lambda = []\n", - "\n", - "for k in other_optimal_v.keys():\n", - " metrics1_per_sample = []\n", - " metrics2_per_sample = []\n", - "\n", - " for i in range(len(other_optimal_v[k])):\n", - " n = pd.DataFrame(\n", - " other_optimal_v[k][i],\n", - " index=index[k],\n", - " columns=[\"vertex_activity1\", \"vertex_activity2\"],\n", - " ) # retrieving node scores\n", - "\n", - " sign_agreement1, de_overlap1, overall_agreement1 = compute_nodes_metrics(\n", - " n, inputs1, d_measurements1, results_df1, \"vertex_activity1\"\n", - " )\n", - " sign_agreement2, de_overlap2, overall_agreement2 = compute_nodes_metrics(\n", - " n, inputs2, d_measurements2, results_df2, \"vertex_activity2\"\n", - " )\n", - "\n", - " metrics1_per_sample.append(\n", - " {\n", - " \"sign_agreement\": sign_agreement1,\n", - " \"de_overlap\": de_overlap1,\n", - " \"overall\": overall_agreement1,\n", - " }\n", - " )\n", - " metrics2_per_sample.append(\n", - " {\n", - " \"sign_agreement\": sign_agreement2,\n", - " \"de_overlap\": de_overlap2,\n", - " \"overall\": overall_agreement2,\n", - " }\n", - " )\n", - "\n", - " metrics1_per_sample_df = pd.DataFrame(metrics1_per_sample)\n", - " metrics2_per_sample_df = pd.DataFrame(metrics2_per_sample)\n", - " metrics_avg_1_per_lambda.append(metrics1_per_sample_df.mean().to_dict())\n", - " metrics_avg_2_per_lambda.append(metrics2_per_sample_df.mean().to_dict())\n", - " metrics_sd_1_per_lambda.append(metrics1_per_sample_df.std().to_dict())\n", - " metrics_sd_2_per_lambda.append(metrics2_per_sample_df.std().to_dict())\n", - "\n", - "# Convert lists of dictionaries to DataFrames\n", - "m_avg_df1 = pd.DataFrame(metrics_avg_1_per_lambda)\n", - "m_avg_df2 = pd.DataFrame(metrics_avg_2_per_lambda)\n", - "m_sd_df1 = pd.DataFrame(metrics_sd_1_per_lambda)\n", - "m_sd_df2 = pd.DataFrame(metrics_sd_2_per_lambda)\n", - "\n", - "##plotting metrics\n", - "import matplotlib.pyplot as plt\n", - "\n", - "metric_name = [\"sign_agreement\", \"de_overlap\", \"overall\"]\n", - "metric_label = [\"Sign agreement ratio\", \"DE overlap ratio\", \"Overall agreement\"]\n", - "\n", - "fig, axes = plt.subplots(1, 3, figsize=(25, 5), sharex=True)\n", - "for i in range(len(metric_name)):\n", - " axes[i].errorbar(\n", - " lambda_val,\n", - " m_avg_df1[metric_name[i]],\n", - " yerr=m_sd_df1[metric_name[i]],\n", - " label=\"Leukemic_spontaneous\",\n", - " marker=\"o\",\n", - " )\n", - " axes[i].errorbar(\n", - " lambda_val,\n", - " m_avg_df2[metric_name[i]],\n", - " yerr=m_sd_df2[metric_name[i]],\n", - " label=\"Leukemic_SB\",\n", - " marker=\"o\",\n", - " )\n", - " axes[i].grid()\n", - " axes[i].set_xscale(\"linear\") # adjust scale according to your results\n", - " axes[i].set_xlabel(\"Lambda\")\n", - " axes[i].set_ylabel(metric_label[i])\n", - " axes[i].set_title(metric_label[i] + \" vs Lambda\")\n", - " if i == 0:\n", - " axes[i].legend(loc=\"upper left\")" - ] - }, - { - "cell_type": "markdown", - "id": "8c64a16f", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "We choose the lambda value basing on the Overall agreement metric. In this case a reasonable value of $\\lambda$ is 2" - ] - }, - { - "cell_type": "code", - "execution_count": 53, - "id": "6be6c716", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:47.222512Z", - "iopub.status.busy": "2025-06-27T16:24:47.222360Z", - "iopub.status.idle": "2025-06-27T16:24:48.755251Z", - "shell.execute_reply": "2025-06-27T16:24:48.755020Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Your problem has 15944 variables, 45059 constraints, and 1 parameters.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: It is compliant with the following grammars: DCP, DQCP\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: DCP verification time: 0.0006 seconds.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Expression tree has 11 nodes.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Your problem is compiled with the CPP canonicalization backend.\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Compiling problem (target solver=GUROBI).\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Reduction chain: Dcp2Cone -> CvxAttr2Constr -> EliminateZeroSized -> ConeMatrixStuffing -> GUROBI\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Applying reduction Dcp2Cone\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Applying reduction CvxAttr2Constr\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Applying reduction EliminateZeroSized\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Applying reduction ConeMatrixStuffing\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Applying reduction GUROBI\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Finished problem compilation (took 8.338e-02 seconds).\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: (Subsequent compilations of this problem, using the same arguments, should take less time.)\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "(CVXPY) Jul 22 04:23:17 PM: Invoking solver GUROBI to obtain a solution.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Unreachable vertices for sample: 12\n", - "Unreachable vertices for sample: 7\n", - "===============================================================================\n", - " CVXPY \n", - " v1.9.2 \n", - "===============================================================================\n", - "-------------------------------------------------------------------------------\n", - " Compilation \n", - "-------------------------------------------------------------------------------\n", - "-------------------------------------------------------------------------------\n", - " Numerical solver \n", - "-------------------------------------------------------------------------------\n", - "Set parameter OutputFlag to value 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Set parameter QCPDual to value 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Gurobi Optimizer version 12.0.2 build v12.0.2rc0 (mac64[arm] - Darwin 25.5.0 25F84)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "CPU model: Apple M4 Pro\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Thread count: 12 physical cores, 12 logical processors, using up to 12 threads\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Non-default parameters:\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "QCPDual 1\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Optimize a model with 45059 rows, 15944 columns and 159976 nonzeros\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Model fingerprint: 0xad65e9b6\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Variable types: 3844 continuous, 12100 integer (12100 binary)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Coefficient statistics:\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
lambdaconditionreachable_tfsreachable_weighttf_matchtf_inactivetf_oppositeactive_internal_nodesderegulated_internal_nodesnode_deregulated_fraction...node_deregulation_zannotated_internal_nodespathway_concordanceactive_edgesactive_nodesactive_inputssingle_tf_matchjoint_fit_regretunion_edgesshared_edges
00.000spontaneous61.00.7044990.2955010.02170.333333...-0.760992160.657710303030.7044990.0356
10.000SB41.00.7291940.2708060.0410.250000...-0.07657130.552921111120.7291940.0356
20.001spontaneous61.00.7044990.2955010.0930.333333...-0.49307790.788685141410.7044990.01410
30.001SB41.00.7291940.2708060.0510.200000...-0.33929850.727538101010.7291940.01410
40.003spontaneous61.00.7044990.2955010.0820.250000...-0.94589980.802111141410.7044990.01412
50.003SB41.00.7291940.2708060.0710.142857...-0.74568770.772395121210.7291940.01412
60.010spontaneous61.00.7044990.2955010.0930.333333...-0.49307790.788685141410.7044990.01410
70.010SB41.00.7291940.2708060.0510.200000...-0.33929850.727538101010.7291940.01410
80.030spontaneous61.00.7044990.2955010.0930.333333...-0.49307790.818096141410.7044990.01410
90.030SB41.00.7291940.2708060.0510.200000...-0.33929850.730120101010.7291940.01410
100.100spontaneous61.00.5375940.4624060.0630.500000...0.43085460.850635101010.0000000.01010
110.100SB41.00.7291940.2708060.0510.200000...-0.33929850.748767101010.0000000.01010
120.300spontaneous61.00.0000001.0000000.0000.000000...0.00000000.0000000000.0000000.000
130.300SB41.00.0000001.0000000.0000.000000...0.00000000.0000000000.0000000.000
\n", + "

14 rows × 22 columns

\n", + "
" + ], + "text/plain": [ + " lambda condition reachable_tfs reachable_weight tf_match \\\n", + "0 0.000 spontaneous 6 1.0 0.704499 \n", + "1 0.000 SB 4 1.0 0.729194 \n", + "2 0.001 spontaneous 6 1.0 0.704499 \n", + "3 0.001 SB 4 1.0 0.729194 \n", + "4 0.003 spontaneous 6 1.0 0.704499 \n", + "5 0.003 SB 4 1.0 0.729194 \n", + "6 0.010 spontaneous 6 1.0 0.704499 \n", + "7 0.010 SB 4 1.0 0.729194 \n", + "8 0.030 spontaneous 6 1.0 0.704499 \n", + "9 0.030 SB 4 1.0 0.729194 \n", + "10 0.100 spontaneous 6 1.0 0.537594 \n", + "11 0.100 SB 4 1.0 0.729194 \n", + "12 0.300 spontaneous 6 1.0 0.000000 \n", + "13 0.300 SB 4 1.0 0.000000 \n", + "\n", + " tf_inactive tf_opposite active_internal_nodes \\\n", + "0 0.295501 0.0 21 \n", + "1 0.270806 0.0 4 \n", + "2 0.295501 0.0 9 \n", + "3 0.270806 0.0 5 \n", + "4 0.295501 0.0 8 \n", + "5 0.270806 0.0 7 \n", + "6 0.295501 0.0 9 \n", + "7 0.270806 0.0 5 \n", + "8 0.295501 0.0 9 \n", + "9 0.270806 0.0 5 \n", + "10 0.462406 0.0 6 \n", + "11 0.270806 0.0 5 \n", + "12 1.000000 0.0 0 \n", + "13 1.000000 0.0 0 \n", + "\n", + " deregulated_internal_nodes node_deregulated_fraction ... \\\n", + "0 7 0.333333 ... \n", + "1 1 0.250000 ... \n", + "2 3 0.333333 ... \n", + "3 1 0.200000 ... \n", + "4 2 0.250000 ... \n", + "5 1 0.142857 ... \n", + "6 3 0.333333 ... \n", + "7 1 0.200000 ... \n", + "8 3 0.333333 ... \n", + "9 1 0.200000 ... \n", + "10 3 0.500000 ... \n", + "11 1 0.200000 ... \n", + "12 0 0.000000 ... \n", + "13 0 0.000000 ... \n", + "\n", + " node_deregulation_z annotated_internal_nodes pathway_concordance \\\n", + "0 -0.760992 16 0.657710 \n", + "1 -0.076571 3 0.552921 \n", + "2 -0.493077 9 0.788685 \n", + "3 -0.339298 5 0.727538 \n", + "4 -0.945899 8 0.802111 \n", + "5 -0.745687 7 0.772395 \n", + "6 -0.493077 9 0.788685 \n", + "7 -0.339298 5 0.727538 \n", + "8 -0.493077 9 0.818096 \n", + "9 -0.339298 5 0.730120 \n", + "10 0.430854 6 0.850635 \n", + "11 -0.339298 5 0.748767 \n", + "12 0.000000 0 0.000000 \n", + "13 0.000000 0 0.000000 \n", + "\n", + " active_edges active_nodes active_inputs single_tf_match \\\n", + "0 30 30 3 0.704499 \n", + "1 11 11 2 0.729194 \n", + "2 14 14 1 0.704499 \n", + "3 10 10 1 0.729194 \n", + "4 14 14 1 0.704499 \n", + "5 12 12 1 0.729194 \n", + "6 14 14 1 0.704499 \n", + "7 10 10 1 0.729194 \n", + "8 14 14 1 0.704499 \n", + "9 10 10 1 0.729194 \n", + "10 10 10 1 0.000000 \n", + "11 10 10 1 0.000000 \n", + "12 0 0 0 0.000000 \n", + "13 0 0 0 0.000000 \n", + "\n", + " joint_fit_regret union_edges shared_edges \n", + "0 0.0 35 6 \n", + "1 0.0 35 6 \n", + "2 0.0 14 10 \n", + "3 0.0 14 10 \n", + "4 0.0 14 12 \n", + "5 0.0 14 12 \n", + "6 0.0 14 10 \n", + "7 0.0 14 10 \n", + "8 0.0 14 10 \n", + "9 0.0 14 10 \n", + "10 0.0 10 10 \n", + "11 0.0 10 10 \n", + "12 0.0 0 0 \n", + "13 0.0 0 0 \n", + "\n", + "[14 rows x 22 columns]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lambda_values = [0.0, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3]\n", + "condition_specs = {\n", + " \"spontaneous\": dict(\n", + " data=data1,\n", + " inputs=inputs1,\n", + " measurements=d_measurements1,\n", + " results=validation_results_df1,\n", + " pathway_activity=validation_pathways1,\n", + " ),\n", + " \"SB\": dict(\n", + " data=data2,\n", + " inputs=inputs2,\n", + " measurements=d_measurements2,\n", + " results=validation_results_df2,\n", + " pathway_activity=validation_pathways2,\n", + " ),\n", + "}\n", + "\n", + "single_solutions = {}\n", + "joint_solutions = {}\n", + "diagnostic_rows = []\n", + "\n", + "for lambda_reg in lambda_values:\n", + " print(f\"Solving lambda={lambda_reg:g}\")\n", + " single_solutions[lambda_reg] = {\n", + " name: solve_carnival(G, spec[\"data\"], lambda_reg)\n", + " for name, spec in condition_specs.items()\n", + " }\n", + " joint_solutions[lambda_reg] = solve_carnival(G, data, lambda_reg)\n", + " joint_edge_activity = np.abs(joint_solutions[lambda_reg][\"edge_value\"]) > 0.5\n", + " union_edges = int(np.any(joint_edge_activity, axis=1).sum())\n", + " shared_edges = int(np.all(joint_edge_activity, axis=1).sum())\n", + "\n", + " for condition_index, (name, spec) in enumerate(condition_specs.items()):\n", + " single = single_solutions[lambda_reg][name]\n", + " joint = joint_solutions[lambda_reg]\n", + " single_fit = tf_fit_metrics(single, 0, spec[\"measurements\"])\n", + " joint_fit = tf_fit_metrics(joint, condition_index, spec[\"measurements\"])\n", + " row = {\n", + " \"lambda\": lambda_reg,\n", + " \"condition\": name,\n", + " **joint_fit,\n", + " **internal_validation_metrics(\n", + " joint,\n", + " condition_index,\n", + " spec[\"inputs\"],\n", + " spec[\"measurements\"],\n", + " spec[\"results\"],\n", + " spec[\"pathway_activity\"],\n", + " ),\n", + " **structural_metrics(joint, condition_index, spec[\"inputs\"]),\n", + " \"single_tf_match\": single_fit[\"tf_match\"],\n", + " \"joint_fit_regret\": max(0.0, single_fit[\"tf_match\"] - joint_fit[\"tf_match\"]),\n", + " \"union_edges\": union_edges,\n", + " \"shared_edges\": shared_edges,\n", + " }\n", + " diagnostic_rows.append(row)\n", + "\n", + "diagnostics = pd.DataFrame(diagnostic_rows)\n", + "diagnostics\n" + ] + }, + { + "cell_type": "markdown", + "id": "587afafa", + "metadata": { + "papermill": { + "duration": 0.008361, + "end_time": "2026-08-06T17:19:50.228040+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:50.219679+00:00", + "status": "completed" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Matrix range [5e-01, 7e+02]\n" - ] + "tags": [] + }, + "source": [ + "### Eligibility and fair scoring\n", + "\n", + "Because TF evidence is normalized to total weight one per condition, a five-percentage-point loss in matched TF weight is used as the admissibility tolerance. A candidate is rejected if either condition has no active input, edge, or matched TF, or if joint fitting loses more TF support than allowed relative to the joint $\\lambda=0$ and single-condition references. This keeps internal-network validation from rewarding sparsity obtained by discarding important outputs.\n", + "\n", + "Eligible networks are scored using only held-out expression. The node score asks whether selected internal-node genes are more often deregulated than the reachable PKN background, without requiring expression and inferred protein activity to have the same sign. The pathway score compares SignaLink enrichment among selected internal nodes with absolute pathway-level deregulation in held-out expression. Both components are normalized within condition and weighted equally; the worst-condition score prevents the larger SB group from masking failure in the spontaneous condition.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "id": "a14bea8b", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:19:50.244800Z", + "iopub.status.busy": "2026-08-06T17:19:50.244685Z", + "iopub.status.idle": "2026-08-06T17:19:50.258706Z", + "shell.execute_reply": "2026-08-06T17:19:50.258206Z" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Objective range [5e-01, 2e+00]\n" - ] + "papermill": { + "duration": 0.023198, + "end_time": "2026-08-06T17:19:50.259222+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:50.236024+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " Bounds range [1e+00, 1e+00]\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
eligiblefair_scoremean_scoreunion_edges
lambda
0.000True0.3579260.37226335
0.001True0.4635860.46727414
0.003True0.4714780.48573914
0.010True0.4635860.46727414
0.030True0.4726340.47675414
0.100False0.4847050.74235210
0.300False0.0000000.0000000
\n", + "
" + ], + "text/plain": [ + " eligible fair_score mean_score union_edges\n", + "lambda \n", + "0.000 True 0.357926 0.372263 35\n", + "0.001 True 0.463586 0.467274 14\n", + "0.003 True 0.471478 0.485739 14\n", + "0.010 True 0.463586 0.467274 14\n", + "0.030 True 0.472634 0.476754 14\n", + "0.100 False 0.484705 0.742352 10\n", + "0.300 False 0.000000 0.000000 0" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ - " RHS range [1e+00, 1e+03]\n" + "Selected lambda: 0.03\n" ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Found heuristic solution: objective 0.0000000\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
lambdaconditionreachable_tfsreachable_weighttf_matchtf_inactivetf_oppositeactive_internal_nodesderegulated_internal_nodesnode_deregulated_fraction...joint_fit_regretunion_edgesshared_edgesfit_gatesingle_fit_gatenonempty_gatecondition_eligiblerelative_node_validationrelative_pathway_validationvalidation_score
80.03spontaneous61.00.7044990.2955010.0930.333333...0.01410TrueTrueTrueTrue0.00.9617470.480874
90.03SB41.00.7291940.2708060.0510.200000...0.01410TrueTrueTrueTrue0.00.9452670.472634
\n", + "

2 rows × 29 columns

\n", + "
" + ], + "text/plain": [ + " lambda condition reachable_tfs reachable_weight tf_match \\\n", + "8 0.03 spontaneous 6 1.0 0.704499 \n", + "9 0.03 SB 4 1.0 0.729194 \n", + "\n", + " tf_inactive tf_opposite active_internal_nodes \\\n", + "8 0.295501 0.0 9 \n", + "9 0.270806 0.0 5 \n", + "\n", + " deregulated_internal_nodes node_deregulated_fraction ... \\\n", + "8 3 0.333333 ... \n", + "9 1 0.200000 ... \n", + "\n", + " joint_fit_regret union_edges shared_edges fit_gate single_fit_gate \\\n", + "8 0.0 14 10 True True \n", + "9 0.0 14 10 True True \n", + "\n", + " nonempty_gate condition_eligible relative_node_validation \\\n", + "8 True True 0.0 \n", + "9 True True 0.0 \n", + "\n", + " relative_pathway_validation validation_score \n", + "8 0.961747 0.480874 \n", + "9 0.945267 0.472634 \n", + "\n", + "[2 rows x 29 columns]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "baseline_match = (\n", + " diagnostics.loc[diagnostics[\"lambda\"] == 0]\n", + " .set_index(\"condition\")[\"tf_match\"]\n", + " .to_dict()\n", + ")\n", + "tf_tolerance = {\"spontaneous\": 0.05, \"SB\": 0.05}\n", + "\n", + "diagnostics[\"fit_gate\"] = diagnostics.apply(\n", + " lambda row: row.tf_match >= baseline_match[row.condition] - tf_tolerance[row.condition],\n", + " axis=1,\n", + ")\n", + "diagnostics[\"single_fit_gate\"] = diagnostics.apply(\n", + " lambda row: row.joint_fit_regret <= tf_tolerance[row.condition], axis=1\n", + ")\n", + "diagnostics[\"nonempty_gate\"] = (\n", + " (diagnostics[\"active_edges\"] > 0)\n", + " & (diagnostics[\"active_inputs\"] > 0)\n", + " & (diagnostics[\"tf_match\"] > 0)\n", + ")\n", + "diagnostics[\"condition_eligible\"] = (\n", + " diagnostics[\"fit_gate\"]\n", + " & diagnostics[\"single_fit_gate\"]\n", + " & diagnostics[\"nonempty_gate\"]\n", + ")\n", + "\n", + "positive_node_z = diagnostics[\"node_deregulation_z\"].clip(lower=0)\n", + "best_node_z = positive_node_z.groupby(diagnostics[\"condition\"]).transform(\"max\")\n", + "best_pathway = diagnostics.groupby(\"condition\")[\"pathway_concordance\"].transform(\"max\")\n", + "diagnostics[\"relative_node_validation\"] = np.divide(\n", + " positive_node_z,\n", + " best_node_z,\n", + " out=np.zeros(len(diagnostics), dtype=float),\n", + " where=best_node_z > 0,\n", + ")\n", + "diagnostics[\"relative_pathway_validation\"] = np.divide(\n", + " diagnostics[\"pathway_concordance\"],\n", + " best_pathway,\n", + " out=np.zeros(len(diagnostics), dtype=float),\n", + " where=best_pathway > 0,\n", + ")\n", + "diagnostics[\"validation_score\"] = diagnostics[\n", + " [\"relative_node_validation\", \"relative_pathway_validation\"]\n", + "].mean(axis=1)\n", + "\n", + "selection = diagnostics.groupby(\"lambda\").agg(\n", + " eligible=(\"condition_eligible\", \"all\"),\n", + " fair_score=(\"validation_score\", \"min\"),\n", + " mean_score=(\"validation_score\", \"mean\"),\n", + " union_edges=(\"union_edges\", \"first\"),\n", + ")\n", + "\n", + "eligible = selection.loc[selection[\"eligible\"]].copy()\n", + "if eligible.empty:\n", + " raise RuntimeError(\"No lambda preserves a non-empty, adequately fitted network for both conditions\")\n", + "\n", + "best_fair = eligible[\"fair_score\"].max()\n", + "near_best = eligible.loc[eligible[\"fair_score\"] >= best_fair - 0.05]\n", + "selected_lambda = (\n", + " near_best.reset_index()\n", + " .sort_values(\n", + " [\"union_edges\", \"fair_score\", \"lambda\"],\n", + " ascending=[True, False, False],\n", + " )\n", + " .iloc[0][\"lambda\"]\n", + ")\n", + "\n", + "display(selection)\n", + "print(f\"Selected lambda: {selected_lambda:g}\")\n", + "diagnostics.loc[diagnostics[\"lambda\"] == selected_lambda]\n" + ] + }, + { + "cell_type": "markdown", + "id": "85cbf8d6", + "metadata": { + "papermill": { + "duration": 0.008374, + "end_time": "2026-08-06T17:19:50.275962+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:50.267588+00:00", + "status": "completed" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Presolve removed 21164 rows and 1239 columns\n" - ] + "tags": [] + }, + "source": [ + "## Held-out validation interpretation\n", + "\n", + "Lambda selection above uses a fixed stratified biological holdout. TFs, receptor inputs, and networks are inferred only from training samples. Held-out expression is used only to test whether selected internal-node genes are disproportionately deregulated and whether their pathway composition agrees with held-out pathway-level deregulation. Neither criterion assumes that a protein's activity sign must equal the expression sign of its gene.\n", + "\n", + "These criteria support transcriptional responsiveness of network regions, not direct validation of receptor, kinase, or protein activity. Because the spontaneous holdout is necessarily small, the scores are tutorial-scale model-selection evidence rather than precise generalization estimates. A production analysis should repeat the stratified split, use sample-level pathway activities, and aggregate paired condition scores and label-permutation controls.\n", + "\n", + "This data-level holdout is distinct from alternative-network sampling: it informs model selection, whereas the solution sampler below is run only after lambda has been fixed.\n" + ] + }, + { + "cell_type": "markdown", + "id": "202f7e40", + "metadata": { + "papermill": { + "duration": 0.008177, + "end_time": "2026-08-06T17:19:50.291933+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:50.283756+00:00", + "status": "completed" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Presolve time: 0.36s\n" - ] + "tags": [] + }, + "source": [ + "## Final model at the selected $\\lambda$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "id": "full-data-refit", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:19:50.308915Z", + "iopub.status.busy": "2026-08-06T17:19:50.308803Z", + "iopub.status.idle": "2026-08-06T17:20:02.511734Z", + "shell.execute_reply": "2026-08-06T17:20:02.511191Z" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Presolved: 23895 rows, 14705 columns, 137721 nonzeros\n" - ] + "papermill": { + "duration": 12.212701, + "end_time": "2026-08-06T17:20:02.512545+00:00", + "exception": false, + "start_time": "2026-08-06T17:19:50.299844+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Variable types: 3431 continuous, 11274 integer (11261 binary)\n" + "Fitting dispersions...\n", + "... done in 0.01 seconds.\n", + "\n", + "Fitting MAP dispersions...\n", + "... done in 0.01 seconds.\n", + "\n", + "Fitting LFCs...\n", + "... done in 0.01 seconds.\n", + "\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Deterministic concurrent LP optimizer: primal and dual simplex\n" + "Fitting dispersions...\n", + "... done in 0.04 seconds.\n", + "\n", + "Fitting MAP dispersions...\n", + "... done in 0.04 seconds.\n", + "\n", + "Fitting LFCs...\n", + "... done in 0.03 seconds.\n", + "\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Showing primal log only...\n" + "Unreachable vertices for sample: 3\n", + "Unreachable vertices for sample: 11\n" ] + } + ], + "source": [ + "def fit_full_de(adata_subset, disease_condition):\n", + " full = adata_subset.copy()\n", + " dc.pp.filter_by_expr(\n", + " full,\n", + " group=\"condition\",\n", + " min_count=10,\n", + " min_total_count=15,\n", + " large_n=10,\n", + " min_prop=0.8,\n", + " )\n", + " inference = DefaultInference()\n", + " dds = DeseqDataSet(\n", + " adata=full,\n", + " design=\"~condition\",\n", + " refit_cooks=True,\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " dds.deseq2()\n", + " stats = DeseqStats(\n", + " dds,\n", + " contrast=[\"condition\", disease_condition, \"Normal\"],\n", + " inference=inference,\n", + " quiet=True,\n", + " )\n", + " stats.summary()\n", + " return stats.results_df\n", + "\n", + "\n", + "def infer_measurements(results_df, contrast_name):\n", + " matrix = results_df[[\"stat\"]].T.rename(index={\"stat\": contrast_name})\n", + " activities, pvalues = dc.mt.ulm(data=matrix, net=collectri, verbose=False)\n", + " selected = activities[pvalues <= max_pval].T.dropna()\n", + " raw = selected.loc[selected.index.intersection(G.V)].to_dict()[contrast_name]\n", + " return normalized_signed_measurements(raw)\n", + "\n", + "\n", + "full_adata1 = adata[adata.obs[\"condition\"].isin([\"Normal\", \"Leukemic_spontaneous\"])].copy()\n", + "full_adata2 = adata[adata.obs[\"condition\"].isin([\"Normal\", \"Leukemic_SB\"])].copy()\n", + "full_results_df1 = fit_full_de(full_adata1, \"Leukemic_spontaneous\")\n", + "full_results_df2 = fit_full_de(full_adata2, \"Leukemic_SB\")\n", + "\n", + "final_measurements1 = infer_measurements(\n", + " full_results_df1, \"Leukemic_spontaneous.vs.Normal\"\n", + ")\n", + "final_measurements2 = infer_measurements(full_results_df2, \"Leukemic_SB.vs.Normal\")\n", + "final_receptors1 = select_receptors(full_results_df1, unique_receptors, G)\n", + "final_receptors2 = select_receptors(full_results_df2, unique_receptors, G)\n", + "final_inputs1 = {node: 0 for node in final_receptors1.index}\n", + "final_inputs2 = {node: 0 for node in final_receptors2.index}\n", + "final_inputs1, final_measurements1 = restrict_to_reachable_evidence(\n", + " G, final_inputs1, final_measurements1\n", + ")\n", + "final_inputs2, final_measurements2 = restrict_to_reachable_evidence(\n", + " G, final_inputs2, final_measurements2\n", + ")\n", + "\n", + "final_data = cn.Data.from_cdict(\n", + " {\n", + " \"spontaneous\": make_carnival_sample(final_inputs1, final_measurements1),\n", + " \"SB\": make_carnival_sample(final_inputs2, final_measurements2),\n", + " }\n", + ")\n", + "final_solution = solve_carnival(G, final_data, selected_lambda)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "ed968900", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:20:02.530651Z", + "iopub.status.busy": "2026-08-06T17:20:02.530538Z", + "iopub.status.idle": "2026-08-06T17:20:02.533628Z", + "shell.execute_reply": "2026-08-06T17:20:02.533093Z" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] + "papermill": { + "duration": 0.012748, + "end_time": "2026-08-06T17:20:02.534292+00:00", + "exception": false, + "start_time": "2026-08-06T17:20:02.521544+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Concurrent spin time: 0.01s\n" - ] + "data": { + "text/plain": [ + "error_spontaneous_0 0.204626\n", + "penalty_indirect_rules_0 0.000000\n", + "error_SB_1 0.343275\n", + "penalty_indirect_rules_1 0.000000\n", + "regularization_edge_has_signal_OR 14.000000\n", + "Name: value, dtype: float64" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_method = final_solution[\"method\"]\n", + "final_problem = final_solution[\"problem\"]\n", + "\n", + "final_objectives = pd.Series(final_solution[\"objectives\"], name=\"value\")\n", + "final_objectives\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "id": "final-diagnostics", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:20:02.552038Z", + "iopub.status.busy": "2026-08-06T17:20:02.551931Z", + "iopub.status.idle": "2026-08-06T17:20:02.556360Z", + "shell.execute_reply": "2026-08-06T17:20:02.555982Z" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] + "papermill": { + "duration": 0.014482, + "end_time": "2026-08-06T17:20:02.556982+00:00", + "exception": false, + "start_time": "2026-08-06T17:20:02.542500+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Solved with dual simplex\n" - ] + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reachable_tfsreachable_weighttf_matchtf_inactivetf_oppositeactive_edgesactive_nodesactive_inputs
condition
spontaneous51.00.7953740.2046260.014141
SB31.00.6567250.3432750.0991
\n", + "
" + ], + "text/plain": [ + " reachable_tfs reachable_weight tf_match tf_inactive \\\n", + "condition \n", + "spontaneous 5 1.0 0.795374 0.204626 \n", + "SB 3 1.0 0.656725 0.343275 \n", + "\n", + " tf_opposite active_edges active_nodes active_inputs \n", + "condition \n", + "spontaneous 0.0 14 14 1 \n", + "SB 0.0 9 9 1 " + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_rows = []\n", + "for condition_index, (name, inputs, measurements) in enumerate(\n", + " [\n", + " (\"spontaneous\", final_inputs1, final_measurements1),\n", + " (\"SB\", final_inputs2, final_measurements2),\n", + " ]\n", + "):\n", + " final_rows.append(\n", + " {\n", + " \"condition\": name,\n", + " **tf_fit_metrics(final_solution, condition_index, measurements),\n", + " **structural_metrics(final_solution, condition_index, inputs),\n", + " }\n", + " )\n", + "\n", + "final_diagnostics = pd.DataFrame(final_rows).set_index(\"condition\")\n", + "final_diagnostics\n" + ] + }, + { + "cell_type": "markdown", + "id": "2049db1e", + "metadata": { + "papermill": { + "duration": 0.008143, + "end_time": "2026-08-06T17:20:02.573551+00:00", + "exception": false, + "start_time": "2026-08-06T17:20:02.565408+00:00", + "status": "completed" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n" - ] + "tags": [] + }, + "source": [ + "## Alternative-solution sampling for the selected $\\lambda$\n", + "\n", + "Sampling is now a final robustness analysis and cannot influence $\\lambda$. Regularization is included in the near-optimality checks, the random generator is seeded, and acceptance counts are reported because `max_samples` is the number of attempts rather than a guaranteed number of returned networks.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "id": "d86688d8", + "metadata": { + "execution": { + "iopub.execute_input": "2026-08-06T17:20:02.591257Z", + "iopub.status.busy": "2026-08-06T17:20:02.591150Z", + "iopub.status.idle": "2026-08-06T17:22:02.129970Z", + "shell.execute_reply": "2026-08-06T17:22:02.129581Z" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Root relaxation: objective -1.434375e+00, 2089 iterations, 0.14 seconds (0.31 work units)\n" - ] + "papermill": { + "duration": 119.548228, + "end_time": "2026-08-06T17:22:02.130519+00:00", + "exception": false, + "start_time": "2026-08-06T17:20:02.582291+00:00", + "status": "completed" }, + "tags": [] + }, + "outputs": [ { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:20:12 | [INFO] [1/30] accepted (total accepted=1) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " Nodes | Current Node | Objective Bounds | Work\n" + "2026-08-06 19:20:15 | [INFO] [2/30] accepted (total accepted=2) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " Expl Unexpl | Obj Depth IntInf | Incumbent BestBd Gap | It/Node Time\n" + "2026-08-06 19:20:18 | [INFO] [3/30] accepted (total accepted=3) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:20:23 | [INFO] [4/30] accepted (total accepted=4) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -1.43438 0 93 0.00000 -1.43438 - - 0s\n" + "2026-08-06 19:20:27 | [INFO] [5/30] accepted (total accepted=5) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -0.93977 0 113 0.00000 -0.93977 - - 0s\n" + "2026-08-06 19:20:30 | [INFO] [6/30] accepted (total accepted=6) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -0.93977 0 78 0.00000 -0.93977 - - 0s\n" + "2026-08-06 19:20:34 | [INFO] [7/30] accepted (total accepted=7) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -0.92708 0 82 0.00000 -0.92708 - - 0s\n" + "2026-08-06 19:20:37 | [INFO] [8/30] accepted (total accepted=8) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -0.92045 0 76 0.00000 -0.92045 - - 0s\n" + "2026-08-06 19:20:40 | [INFO] [9/30] accepted (total accepted=9) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "H 0 0 -0.5000000 -0.89063 78.1% - 0s\n" + "2026-08-06 19:20:44 | [INFO] [10/30] accepted (total accepted=10) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " 0 0 -0.89063 0 76 -0.50000 -0.89063 78.1% - 0s\n" + "2026-08-06 19:20:48 | [INFO] [11/30] accepted (total accepted=11) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:20:53 | [INFO] [12/30] accepted (total accepted=12) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Cutting planes:\n" + "2026-08-06 19:20:56 | [INFO] [13/30] accepted (total accepted=13) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " Gomory: 3\n" + "2026-08-06 19:21:01 | [INFO] [14/30] accepted (total accepted=14) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " Implied bound: 16\n" + "2026-08-06 19:21:05 | [INFO] [15/30] accepted (total accepted=15) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " Zero half: 2\n" + "2026-08-06 19:21:10 | [INFO] [16/30] accepted (total accepted=16) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " RLT: 2\n" + "2026-08-06 19:21:14 | [INFO] [17/30] accepted (total accepted=17) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - " BQP: 1\n" + "2026-08-06 19:21:18 | [INFO] [18/30] accepted (total accepted=18) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:21:22 | [INFO] [19/30] accepted (total accepted=19) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Explored 1 nodes (5098 simplex iterations) in 0.88 seconds (1.64 work units)\n" + "2026-08-06 19:21:25 | [INFO] [20/30] accepted (total accepted=20) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Thread count was 12 (of 12 available processors)\n" + "2026-08-06 19:21:29 | [INFO] [21/30] accepted (total accepted=21) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:21:33 | [INFO] [22/30] accepted (total accepted=22) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Solution count 2: -0.5 0 \n" + "2026-08-06 19:21:36 | [INFO] [23/30] accepted (total accepted=23) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "\n" + "2026-08-06 19:21:40 | [INFO] [24/30] accepted (total accepted=24) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Optimal solution found (tolerance 1.00e-04)\n" + "2026-08-06 19:21:43 | [INFO] [25/30] accepted (total accepted=25) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "Best objective -5.000000000000e-01, best bound -5.000000000000e-01, gap 0.0000%\n" + "2026-08-06 19:21:46 | [INFO] [26/30] accepted (total accepted=26) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "(CVXPY) Jul 22 04:23:18 PM: Problem status: optimal\n" + "2026-08-06 19:21:50 | [INFO] [27/30] accepted (total accepted=27) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "(CVXPY) Jul 22 04:23:18 PM: Optimal value: 1.050e+01\n" + "2026-08-06 19:21:54 | [INFO] [28/30] accepted (total accepted=28) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "(CVXPY) Jul 22 04:23:18 PM: Compilation took 8.338e-02 seconds\n" + "2026-08-06 19:21:58 | [INFO] [29/30] accepted (total accepted=29) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "(CVXPY) Jul 22 04:23:18 PM: Solver (including time spent in interface) took 1.425e+00 seconds\n" + "2026-08-06 19:22:02 | [INFO] [30/30] accepted (total accepted=30) -> error_SB_1: val=0.343275, rel.err=0.0000, error_spontaneous_0: val=0.204626, rel.err=0.0000, penalty_indirect_rules_0: val=0, rel.err=0.0000, penalty_indirect_rules_1: val=0, rel.err=0.0000, regularization_edge_has_signal_OR: val=14, rel.err=0.0000\n" ] }, { - "name": "stdout", + "name": "stderr", "output_type": "stream", "text": [ - "-------------------------------------------------------------------------------\n", - " Summary \n", - "-------------------------------------------------------------------------------\n" + "2026-08-06 19:22:02 | [INFO] Done. accepted=30, rejected=0, solutions returned=31\n" ] }, - { - "data": { - "text/plain": [ - "Problem(Minimize(Expression(AFFINE, UNKNOWN, (1,))), [Inequality(Constant(CONSTANT, ZERO, (2420,))), Inequality(Variable((2420,), _flow)), Inequality(Constant(CONSTANT, ZERO, (712, 2))), Inequality(Variable((712, 2), _dag_layer)), Equality(Expression(AFFINE, UNKNOWN, (712,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, NONNEGATIVE, (2420, 2))), Equality(Expression(AFFINE, UNKNOWN, (12,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, NONNEGATIVE, (12,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, NONNEGATIVE, (12,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, UNKNOWN, (7,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, NONNEGATIVE, (7,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, NONNEGATIVE, (7,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, NONNEGATIVE, (712, 2))), Inequality(Expression(AFFINE, UNKNOWN, (2406,))), Inequality(Expression(AFFINE, UNKNOWN, (2406,))), Inequality(Constant(CONSTANT, NONNEGATIVE, (688,))), Inequality(Expression(AFFINE, UNKNOWN, (2406,))), Inequality(Expression(AFFINE, UNKNOWN, (2406,))), Inequality(Constant(CONSTANT, NONNEGATIVE, (688,))), Inequality(Expression(AFFINE, NONNEGATIVE, (2420, 2))), Inequality(Expression(AFFINE, NONNEGATIVE, (2413, 2))), Inequality(Expression(AFFINE, NONNEGATIVE, (2413, 2))), Equality(Expression(AFFINE, NONNEGATIVE, (3,)), Constant(CONSTANT, ZERO, ())), Equality(Expression(AFFINE, NONNEGATIVE, (3,)), Constant(CONSTANT, ZERO, ())), Inequality(Expression(AFFINE, NONNEGATIVE, (2420,))), Inequality(Variable((2420,), edge_has_signal_OR, boolean=True))])" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "c = CarnivalFlow(lambda_reg=0.5, indirect_rule_penalty=1)\n", - "P = c.build(G, data)\n", - "\n", - "# Optimal solutions are found when Gap is close to 0\n", - "P.solve(solver=\"GUROBI\", verbosity=1)" - ] - }, - { - "cell_type": "code", - "execution_count": 54, - "id": "2e53f8f2", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:48.781780Z", - "iopub.status.busy": "2025-06-27T16:24:48.781673Z", - "iopub.status.idle": "2025-06-27T16:24:48.784104Z", - "shell.execute_reply": "2025-06-27T16:24:48.783838Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "error_sample1_0 4.0\n", - "penalty_indirect_rules_0 [0.]\n", - "error_sample2_1 5.0\n", - "penalty_indirect_rules_1 [0.]\n", - "regularization_edge_has_signal_OR 3.0\n" + "Returned 31 solutions: one incumbent plus 30 accepted perturbations\n" ] } ], "source": [ - "# optimization metrics\n", - "for o in P.objectives:\n", - " print(o.name, o.value)" + "from corneto.methods.sampler import sample_alternative_solutions\n", + "\n", + "\n", + "sampled = sample_alternative_solutions(\n", + " final_problem,\n", + " \"edge_value\",\n", + " percentage=0.03,\n", + " scale=max(float(selected_lambda) / 10, 1e-6),\n", + " rel_opt_tol=0.05,\n", + " max_samples=30,\n", + " solver_kwargs=dict(\n", + " solver=\"GUROBI\", max_seconds=max_time, mip_gap=0.01, seed=seed, Threads=1\n", + " ),\n", + " rng=seed,\n", + " collect_vars=[\"vertex_value\", \"edge_value\"],\n", + " exclude_objectives_pattern=None,\n", + ")\n", + "\n", + "n_returned = len(sampled[\"vertex_value\"])\n", + "print(f\"Returned {n_returned} solutions: one incumbent plus {n_returned - 1} accepted perturbations\")\n" ] }, { "cell_type": "code", - "execution_count": 55, - "id": "5e2e6dba", + "execution_count": 52, + "id": "75b918bf", "metadata": { "execution": { - "iopub.execute_input": "2025-06-27T16:24:48.811523Z", - "iopub.status.busy": "2025-06-27T16:24:48.811386Z", - "iopub.status.idle": "2025-06-27T16:24:48.817855Z", - "shell.execute_reply": "2025-06-27T16:24:48.817610Z" + "iopub.execute_input": "2026-08-06T17:22:02.149078Z", + "iopub.status.busy": "2026-08-06T17:22:02.148966Z", + "iopub.status.idle": "2026-08-06T17:22:02.154924Z", + "shell.execute_reply": "2026-08-06T17:22:02.154531Z" }, "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, + "duration": 0.016095, + "end_time": "2026-08-06T17:22:02.155364+00:00", + "exception": false, + "start_time": "2026-08-06T17:22:02.139269+00:00", "status": "completed" }, "tags": [] @@ -7256,410 +7516,92 @@ " \n", " \n", " \n", - " \n", - " edge_activity1\n", - " edge_activity2\n", + " condition\n", + " nodes_selected_at_least_50pct\n", + " nodes_selected_at_least_80pct\n", + " edges_selected_at_least_50pct\n", + " edges_selected_at_least_80pct\n", " \n", " \n", " \n", " \n", - " (Mapk14)\n", - " (Mapkapk2)\n", - " 0.0\n", - " 0.0\n", - " \n", - " \n", - " (Map2k3)\n", - " (Dyrk1b)\n", - " 0.0\n", - " 0.0\n", - " \n", - " \n", - " (Akt1)\n", - " (Chuk)\n", - " 0.0\n", - " 0.0\n", - " \n", - " \n", - " (Cdkn1a)\n", - " (Cdk1)\n", - " 0.0\n", - " 0.0\n", + " 0\n", + " spontaneous\n", + " 14\n", + " 12\n", + " 14\n", + " 9\n", " \n", " \n", - " (Mdc1)\n", - " (Rnf8)\n", - " 0.0\n", - " 0.0\n", + " 1\n", + " SB\n", + " 9\n", + " 7\n", + " 9\n", + " 4\n", " \n", " \n", "\n", "" ], "text/plain": [ - " edge_activity1 edge_activity2\n", - "(Mapk14) (Mapkapk2) 0.0 0.0\n", - "(Map2k3) (Dyrk1b) 0.0 0.0\n", - "(Akt1) (Chuk) 0.0 0.0\n", - "(Cdkn1a) (Cdk1) 0.0 0.0\n", - "(Mdc1) (Rnf8) 0.0 0.0" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# having a look to edge values per condition\n", - "pd.DataFrame(\n", - " P.expr.edge_value.value,\n", - " index=c.processed_graph.E,\n", - " columns=[\"edge_activity1\", \"edge_activity2\"],\n", - ").head(5)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "id": "15d239a6", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:48.845257Z", - "iopub.status.busy": "2025-06-27T16:24:48.845135Z", - "iopub.status.idle": "2025-06-27T16:24:48.848716Z", - "shell.execute_reply": "2025-06-27T16:24:48.848474Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
vertex_activity1vertex_activity2
Fus0.00.0
Pstpip10.00.0
Ppp1r1b0.00.0
Arhgap330.00.0
Lrrk20.00.0
\n", - "
" - ], - "text/plain": [ - " vertex_activity1 vertex_activity2\n", - "Fus 0.0 0.0\n", - "Pstpip1 0.0 0.0\n", - "Ppp1r1b 0.0 0.0\n", - "Arhgap33 0.0 0.0\n", - "Lrrk2 0.0 0.0" - ] - }, - "execution_count": 56, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# having a look to node values per condition\n", - "pd.DataFrame(\n", - " P.expr.vertex_value.value,\n", - " index=c.processed_graph.V,\n", - " columns=[\"vertex_activity1\", \"vertex_activity2\"],\n", - ").head(5)" - ] - }, - { - "cell_type": "markdown", - "id": "1341b7e7", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "### Inferred network for contrast 1: Leukemic_spontaneous vs Normal" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "id": "6843e1d2", - "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:48.902335Z", - "iopub.status.busy": "2025-06-27T16:24:48.902182Z", - "iopub.status.idle": "2025-06-27T16:24:49.348978Z", - "shell.execute_reply": "2025-06-27T16:24:49.348555Z" - }, - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ifngr1\n", - "\n", - "Ifngr1\n", - "\n", - "\n", - "\n", - "Jak2\n", - "\n", - "Jak2\n", - "\n", - "\n", - "\n", - "Ifngr1->Jak2\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Myc\n", - "\n", - "Myc\n", - "\n", - "\n", - "\n", - "Jak2->Myc\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2416_source\n", - "\n", - "\n", - "\n", - "\n", - "e_2416_source->Ifngr1\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" + " edges_selected_at_least_50pct edges_selected_at_least_80pct \n", + "0 14 9 \n", + "1 9 4 " ] }, - "execution_count": 57, + "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "sol_edges1 = np.flatnonzero(np.abs(P.expr.edge_value.value[:, 0]) > 0.5)\n", - "c.processed_graph.plot_values(\n", - " vertex_values=P.expr.vertex_value.value[:, 0],\n", - " edge_values=P.expr.edge_value.value[:, 0],\n", - " edge_indexes=sol_edges1,\n", - ")" + "vertex_frequency = np.mean(np.abs(sampled[\"vertex_value\"]) > 0.5, axis=0)\n", + "edge_frequency = np.mean(np.abs(sampled[\"edge_value\"]) > 0.5, axis=0)\n", + "\n", + "vertex_frequency_df = pd.DataFrame(\n", + " vertex_frequency,\n", + " index=final_solution[\"vertices\"],\n", + " columns=[\"spontaneous\", \"SB\"],\n", + ")\n", + "edge_frequency_df = pd.DataFrame(\n", + " edge_frequency,\n", + " index=final_method.processed_graph.E,\n", + " columns=[\"spontaneous\", \"SB\"],\n", + ")\n", + "\n", + "sampling_summary = pd.DataFrame(\n", + " {\n", + " \"condition\": [\"spontaneous\", \"SB\"],\n", + " \"nodes_selected_at_least_50pct\": (vertex_frequency_df >= 0.5).sum().to_numpy(),\n", + " \"nodes_selected_at_least_80pct\": (vertex_frequency_df >= 0.8).sum().to_numpy(),\n", + " \"edges_selected_at_least_50pct\": (edge_frequency_df >= 0.5).sum().to_numpy(),\n", + " \"edges_selected_at_least_80pct\": (edge_frequency_df >= 0.8).sum().to_numpy(),\n", + " }\n", + ")\n", + "sampling_summary\n" ] }, { "cell_type": "markdown", - "id": "44d37e6e", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "source": [ - "### Inferred network for contrast 2: Leukemic_SB vs Normal" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "id": "f913c744", + "id": "5c07afab", "metadata": { - "execution": { - "iopub.execute_input": "2025-06-27T16:24:49.404554Z", - "iopub.status.busy": "2025-06-27T16:24:49.404391Z", - "iopub.status.idle": "2025-06-27T16:24:49.500869Z", - "shell.execute_reply": "2025-06-27T16:24:49.500548Z" - }, "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, + "duration": 0.008756, + "end_time": "2026-08-06T17:22:02.172938+00:00", + "exception": false, + "start_time": "2026-08-06T17:22:02.164182+00:00", "status": "completed" }, "tags": [] }, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Ifngr1\n", - "\n", - "Ifngr1\n", - "\n", - "\n", - "\n", - "Jak2\n", - "\n", - "Jak2\n", - "\n", - "\n", - "\n", - "Ifngr1->Jak2\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "Myc\n", - "\n", - "Myc\n", - "\n", - "\n", - "\n", - "Jak2->Myc\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "e_2416_source\n", - "\n", - "\n", - "\n", - "\n", - "e_2416_source->Ifngr1\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 58, - "metadata": {}, - "output_type": "execute_result" - } - ], "source": [ - "sol_edges2 = np.flatnonzero(np.abs(P.expr.edge_value.value[:, 1]) > 0.5)\n", - "c.processed_graph.plot_values(\n", - " vertex_values=P.expr.vertex_value.value[:, 1],\n", - " edge_values=P.expr.edge_value.value[:, 1],\n", - " edge_indexes=sol_edges2,\n", - ")" + "The frequency tables distinguish stable conclusions from topology chosen arbitrarily among near-optimal solutions. If few edges recur, the result should be reported as structurally uncertain rather than using the samples to revisit $\\lambda$.\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aafa14e6-6c2a-4f6a-8850-968fc4b362a7", - "metadata": { - "papermill": { - "duration": null, - "end_time": null, - "exception": null, - "start_time": null, - "status": "completed" - }, - "tags": [] - }, - "outputs": [], - "source": [] } ], "metadata": { @@ -7678,18 +7620,18 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.18" + "version": "3.11.15" }, "papermill": { "default_parameters": {}, - "duration": 94.139096, - "end_time": "2025-06-27T16:28:05.209251", + "duration": 211.814088, + "end_time": "2026-08-06T17:22:04.905354+00:00", "environment_variables": {}, "exception": null, "input_path": "multi_condition_carnival.ipynb", "output_path": "multi_condition_carnival.ipynb", "parameters": {}, - "start_time": "2025-06-27T16:26:31.070155", + "start_time": "2026-08-06T17:18:33.091266+00:00", "version": "2.6.0" } }, diff --git a/docs/tutorials/contrib/multi_condition_tutorial/pixi.lock b/docs/tutorials/contrib/multi_condition_tutorial/pixi.lock index 16815d1cc..81bfe6ef2 100644 --- a/docs/tutorials/contrib/multi_condition_tutorial/pixi.lock +++ b/docs/tutorials/contrib/multi_condition_tutorial/pixi.lock @@ -30,70 +30,75 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py311h55b9665_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-core-2.40.3-h0630a04_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.4-hb7a77c6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.14-h2aa3ae6_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h720e601_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-h38ae05a_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.27.3-h6f4d18d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.8-h46fcd08_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.7-h720e601_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h720e601_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.4-h4610da3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.15-h6bbde05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h01ee8f8_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-hbe094ff_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.27.5-h4f381ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.13.1-h7508075_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.7-h01ee8f8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h01ee8f8_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py311h6b1f9c4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py311h66f275b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.8-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py311h724c32c_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hac629b4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py311hc665b79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-h166bdaf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.2-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py311h3778330_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py311h52bc045_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.7-h2b0a6b4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.2-h8094192_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h95f0039_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-13.0.1-hcae58fd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.52-ha5ea40c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.16.0-nompi_py311hfef529e_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_h654f344_110.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.3.0-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hc529623_111.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.5.0-py311h724c32c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.22.2-hbde042b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.19.1-h0c24ade_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h6c227bf_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h9692865_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h08c5240_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h114c9b5_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hae6b9f4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-heca4667_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda @@ -101,15 +106,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.2-h0d30a3d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-h0d30a3d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.2.1-h17a8019_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.2.1-h17a8019_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.0-h17a8019_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.3.0-h17a8019_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm22-22.1.8-hf7376ad_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda @@ -118,47 +123,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.4-hd5a49e9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.22.0-h49b2146_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.0-hf670292_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.2-h9d88235_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.2-hca5e8e5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.3-hca6bf5a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.3-h49c6c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.48.0-py311h9d99eea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.3-py311h38be061_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.3-py311h2b939e6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py311h3778330_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.66.0-py311hcdb8226_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.66.0-py311hc665b79_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py311h2e04523_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.13-hbde042b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py311hed34c8f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.0-hda50119_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.3.0-py311hf88fc01_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py311h3778330_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py311haee01d2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.11.1-py311hf27b23e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.15-h7508c33_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py311h3778330_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py311hca8cfc1_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.11.1-pl5321h16c4a6b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.5-h7e3ee7f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py311h1baac5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.6-h7e3ee7f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py311hbe70eeb_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py311h0372a8f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda @@ -189,50 +201,96 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py311h3778330_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anndata-0.11.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio2-1.7.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/papermill-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - pypi: https://files.pythonhosted.org/packages/02/3f/a6ec28c88e2d8e54d32598a1e0b5208a4baa72a8e7f6e241beab5731eb9d/interface_meta-1.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/11/3a/d8e7b83678e8ca959b8409db265deaccb0f28dfc2f32a30e3d4037cba111/cvxpy-1.9.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/b9/c950f938b8cfb957161c2a53578e29619de1516d3f8dcd7fa9f168ef97af/omnipath-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/29/28/83df019db913031ce826e3ed3fa655df9663d58cc1f083d1adc78a1bb528/decoupler-2.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/34/9a/17d45ac78ac8abe79f03b5e44053a4ea1cbf4663cc70cee2c2a507f7e3b2/cvxpy_base-1.9.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3a/3b/a3332b0f79375bff9a14863f9b32d98428f9300fc171e29b6e4df4850986/osqp-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/40/7b/639411281256c84e8111bf6cb9676c44dbf5d8ad4cb042f4359b7e7b9e74/formulaic_contrasts-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/8e/250fab1cafeea43f4eb11f1d64cd6313f639965ff62cb0d9da3883655781/docrep-0.3.2.tar.gz @@ -241,160 +299,210 @@ environments: - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/80/da1508e745faf701e1c0d96cedd292037e6b17748c770ff32dacf77190b8/marsilea-0.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6b/a9/c76edf781ca3283186ff4b54a9a4fb51367fd04313a68e2b09f062407439/clarabel-0.11.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/92/bd62fb14acf1f74ed021b3e2f105466a6b47b0ebedc5daddada4b88b47b4/legendkit-0.3.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c7/4102536de33c19d090ed2b04e90e7452e2e3dc653cf3323208034eaaca27/stdlib_list-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/99/67/d45bd634b1755d50f3a333baa7e016227c2ac9a516da1fef4d08ae9417f5/cvxpy-1.6.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/9b/36/9c969e55589c022de50c8b76ffa1df4526faa5458d485be3efce25c2a85b/sparsediffpy-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b9/08/6862cad708effcf16baabbb9e6dae1d469858764dd38ec09677f9f2b0755/decoupler-2.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/c4/f6b7c0ec5241a2bde90c7ba1eca6ba44f8488bcedafe9072c79593015ec0/session_info-1.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c6/38/48b75c3d8d268a3f19837cb8a89155ead6e97c6892bb64837183ea41db2b/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/ce/15/b100495df43fc9cf71bb322da4e196772ceb3c0408b16ac82d6cc2584a1b/corneto-1.0.0rc1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/67/eac43fc67942e3f795c4d9938488eebcd825783ff49b35151422ee09df5f/pydeseq2-0.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d2/c2/a34097e53efe70a538ae97574ff9e9866e60fc1c792c19da5fd6b56ce7b5/formulaic-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/ba/704f9e56ae80ef66cf0534e23dac22ada34845f86b5e5b8b3294649d96b6/omnipath-1.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/98/9578ce1d8ae951cf44e6b7434854824f0eae12d54b270e80014f8ab1971c/session_info2-0.1.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/34/bf8e999e13e00946660a1e9009e67d5718356c06b9a2b2905f10829a7c45/scs-3.2.7.post2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e8/1e/02a4d96e20320fdd91d77c30040fc00db89d08d95549f96f6f8afecd0948/corneto-1.0.0rc5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ea/e1/33203651c73e126bba82788e3d7813330e987df1e3c31ab36f47dd5878d6/qdldl-0.1.9.post1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ed/bb/0588b8137df2a0ae55a9a8ad40eff40561b60d6f76dbffd5ab4f4f6095f0/highspy-1.15.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ef/a1/c8d4bbdd53c61de59ab5ded2b4457a972a5b53bf049eb918ea0c8a045e5f/cvxpy_base-1.9.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anndata-0.11.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyh01cf8df_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio2-1.7.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/papermill-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.14.3-py311ha95a472_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.4-h74cc20c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.14-h1727fe8_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.14.2-ha1e9b39_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-h83f6fd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.11.0-h6a26125_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.27.3-h1fab602_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.12.8-h4da758a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.7-h83f6fd2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-h83f6fd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h6e16a3a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h6e16a3a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.4-h5ab99e9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.15-h7d2f8e2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.14.3-ha1e9b39_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-hdead95b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.11.0-hb6f97e7_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.27.5-h82e2481_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.13.1-h9d6a30e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.7-hdead95b_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-hdead95b_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.6.0-py311h1fd9c89_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py311h7e844b6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.8-ha1e9b39_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py311h9d13916_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.21-py311hc3ea09e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.18.1-h7a4440b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.63.0-py311ha8ae342_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.7-hae309b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.88.2-h04fd18e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.15-hcc62823_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.8.0-py311ha09d3ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.88.3-h943dd1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-13.0.1-hf067352_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.52-hf2d442a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.16.0-nompi_py311ha7e68cf_102.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-14.2.1-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_hd281e0f_110.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h6160fcd_111.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.5.0-py311h2886188_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h3ddfcb2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.19.1-h5ea7634_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-32_h7f60823_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h6e16a3a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h6e16a3a_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h6e16a3a_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.21.0-h06afde3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.21.0-h8f0b9e4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.2-hf28f236_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libharfbuzz-14.2.1-h97ceea7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libharfbuzz-devel-14.2.1-h97ceea7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-16.1.0-h13771c8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-16.1.0-h7e5c614_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-16.1.0-h70d9f54_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.3-hf28f236_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.2.0-ha1e9b39_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.58-he930e7c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpsl-0.22.0-ha9fe4b0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.62.3-h7321050_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.3-h8f8c405_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.22-ha3d0635_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.4-h77d7759_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.2-h95d6d7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.48.0-py311hbe43510_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.3-py311h6eed73b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.3-py311h19a4563_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.1-py311h42ed68f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.66.0-py311h7dd8c3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.66.0-py311h52678b9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.6-py311h2c4eb96_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h52bb76a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py311hca9a5ca_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-hf280016_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.3.0-py311h27c473c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h2fb4741_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py311h25da234_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.5.2-py311ha8ae342_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py311ha332486_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.11.15-ha9537fe_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py311h53ebfaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py311h83aef28_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/s2n-1.7.5-he8c8f02_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-2026.6.3-py311hcd3406c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/s2n-1.7.6-he8c8f02_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.1-py311h556693a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py311ha837bc1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda @@ -402,18 +510,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.1-py311hc71d4c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.24.5-py311ha8ae342_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h84953be_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/02/3f/a6ec28c88e2d8e54d32598a1e0b5208a4baa72a8e7f6e241beab5731eb9d/interface_meta-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/06/12/b825caff9d65b101e79efe10aef2ea2724077bf70b75475e03ca9028250c/cvxpy-1.6.6-cp311-cp311-macosx_10_9_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/09/68/e4c9090172596b6325fad8be5a3742f4a86dc258f2019bd1889a932c592a/cvxpy_base-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/12/9c/2bb1f981aa42dd983eb26276d45a4e835a3a319bad24080e8f7748ce814b/gurobipy-12.0.2-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/14/b3/ecaa1638cf8c177f1fe8b79d7c715a2693c61158b47bf3a5269453d0eefe/osqp-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/b9/c950f938b8cfb957161c2a53578e29619de1516d3f8dcd7fa9f168ef97af/omnipath-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/29/28/83df019db913031ce826e3ed3fa655df9663d58cc1f083d1adc78a1bb528/decoupler-2.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/23/a9/98359fc64042152c1692929b32e17461667e69075316bc1a7aef8bf0d6ab/cvxpy-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2b/a8/75e215fb61f65c7dee0a5d2c8e2b9043967fd332b70a4d47478bca45ec10/scs-3.2.7.post2-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl @@ -424,153 +530,211 @@ environments: - pypi: https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/53/1c/8feedd607cc14c5df9aef74fe3af9a99bf660743b842a9b5b1865326b4aa/adjustText-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5a/42/c6b41711c2bee01c4800ad8da2862c0b6d2956a399d23ce4d77f2ca7f0c7/scikit_learn-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/69/74e9614a6e49f5e07fbb91a5cebad79bd31903888ca6b4f1c75dcf01df3b/highspy-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/80/da1508e745faf701e1c0d96cedd292037e6b17748c770ff32dacf77190b8/marsilea-0.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/6b/f4/927e3a8899e52a27fa57a48607ff7dc91a9ebe97399b357b85a0c7892e00/cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/92/bd62fb14acf1f74ed021b3e2f105466a6b47b0ebedc5daddada4b88b47b4/legendkit-0.3.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c7/4102536de33c19d090ed2b04e90e7452e2e3dc653cf3323208034eaaca27/stdlib_list-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/a1/83ea22ad16d6f016025f0eebd9c5daa9dda73629cab59d960dc3ea3f4bef/cvxpy_base-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl - pypi: https://files.pythonhosted.org/packages/9c/73/f7548cd9decfca281820fe3a99465afaebbc1140533e3d8ec796ae49c598/sparsediffpy-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b9/08/6862cad708effcf16baabbb9e6dae1d469858764dd38ec09677f9f2b0755/decoupler-2.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/c4/f6b7c0ec5241a2bde90c7ba1eca6ba44f8488bcedafe9072c79593015ec0/session_info-1.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/15/b100495df43fc9cf71bb322da4e196772ceb3c0408b16ac82d6cc2584a1b/corneto-1.0.0rc1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/67/eac43fc67942e3f795c4d9938488eebcd825783ff49b35151422ee09df5f/pydeseq2-0.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d2/c2/a34097e53efe70a538ae97574ff9e9866e60fc1c792c19da5fd6b56ce7b5/formulaic-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/ba/704f9e56ae80ef66cf0534e23dac22ada34845f86b5e5b8b3294649d96b6/omnipath-1.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/98/9578ce1d8ae951cf44e6b7434854824f0eae12d54b270e80014f8ab1971c/session_info2-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/1e/02a4d96e20320fdd91d77c30040fc00db89d08d95549f96f6f8afecd0948/corneto-1.0.0rc5-py3-none-any.whl osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-48.1-unix_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anndata-0.11.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyh01cf8df_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio2-1.7.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/papermill-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2026.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.14.3-py311h6771f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.4-h0f08c97_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.14-hb9ed60c_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.14.2-h84a0fba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-hf0b4b85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.11.0-h27f0cb5_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.27.3-ha24efe8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.8-hdc61527_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.7-hf0b4b85_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-hf0b4b85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h5505292_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h5505292_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.4-h436dbe7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.15-hdbc54b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.14.3-h84a0fba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-he8604bc_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.11.0-hc1b69ad_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.27.5-h8fb7669_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.13.1-h1fbe2f8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.7-he8604bc_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-he8604bc_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.6.0-py311h36d4fbb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py311hdc60ec4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.8-h84a0fba_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py311h7d85929_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.21-py311h8948835_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.18.2-h2b252f5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.63.0-py311hc290fe0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.2-h246a70f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-h84a0fba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.8.0-py311hf75086c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.7-h4e57454_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.3-h5f197ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.15-hf6b4638_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-13.0.1-haeab78c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.16.0-nompi_py311hf10ccac_102.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hebe1841_110.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.3.0-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_h7eff4e6_111.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hc7cc350_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py311h7d85929_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-hfd3d5f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.2.0-h1eee2c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h5505292_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h5505292_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h5505292_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.21.0-hd5a2499_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.21.0-hf618e03_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-he7e0567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.2-ha08bb59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-16.1.0-h3cf6597_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-16.1.0-h07b0088_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-16.1.0-h32cdfcc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.3-ha08bb59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libharfbuzz-14.3.0-h5a65909_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libharfbuzz-devel-14.3.0-h5a65909_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.2.0-h84a0fba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.3-h1b79a29_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpsl-0.23.0-h7a62e17_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.3-he8aa2a2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.22-h1a92334_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.4-h1ae2325_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.2-h282da08_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h202fb40_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.48.0-py311h68bb4d2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.3-py311ha1ab1f8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.3-py311h031da69_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py311ha275503_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.66.0-py311h9d9bb2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.66.0-py311h6ad6fc7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.6-py311hbd1492f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py311hdb8e4fa_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.58.0-hf80efc4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py311h3f9ac88_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.3.0-py311hd37aea2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h784d473_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.5.2-py311hc290fe0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py311he363849_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.15-h0c9c016_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py311hc290fe0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py311h8463d66_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/s2n-1.7.5-h1b28cb6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-2026.6.3-py311haff49d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/s2n-1.7.6-h1b28cb6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py311h9a58382_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py311h09efe57_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda @@ -578,16 +742,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py311hc949640_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.24.5-py311hc290fe0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h10816f8_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/02/3f/a6ec28c88e2d8e54d32598a1e0b5208a4baa72a8e7f6e241beab5731eb9d/interface_meta-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/12/24/8fc849d3dc3eb136d1395bdcaccdfae752466262cd8165c73e38f2facad7/cvxpy_base-1.9.2-cp311-cp311-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/0e/25/7384a92ca7079a902717b53bb6da674953e744cdaf46114727d73b2cc896/cvxpy-1.9.1-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/12/9c/2bb1f981aa42dd983eb26276d45a4e835a3a319bad24080e8f7748ce814b/gurobipy-12.0.2-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/b9/c950f938b8cfb957161c2a53578e29619de1516d3f8dcd7fa9f168ef97af/omnipath-1.0.9-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1f/e4/b757b7926cc3355ba41ba747afb5e4d6c553d05be840ea25dc47b47b47b1/scs-3.2.7.post2-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/29/28/83df019db913031ce826e3ed3fa655df9663d58cc1f083d1adc78a1bb528/decoupler-2.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/30/29/dc00c99535bd5d96638f17e3cf99bda16ca2d99f5a3bed225dac3ca9640b/sparsediffpy-0.3.0-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl @@ -599,95 +764,141 @@ environments: - pypi: https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/6c/f5/6c3a8efe5f503175aaddcbea6ad0d2c96dad6f5abb205750d1b3df44ef29/cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/92/bd62fb14acf1f74ed021b3e2f105466a6b47b0ebedc5daddada4b88b47b4/legendkit-0.3.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c7/4102536de33c19d090ed2b04e90e7452e2e3dc653cf3323208034eaaca27/stdlib_list-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/5d/815b8f0488fda02e765b85e7a1ed2bf26b7d705fb1240ca842c4493d9414/highspy-1.15.1-cp311-cp311-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/a3/24/44acca76449e391b6b2522e67a63c0454b7c1f060531bdc6d0118fb40851/scikit_learn-1.7.0-cp311-cp311-macosx_12_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b0/8f/13650cfe25762b51175c677330e6471d5d2c5851a6fbd6df77f0681bb34e/clarabel-0.11.1-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b2/37/6e52dbbfedaad4534148853496741739a3430d52231638c84d65dc1a58e7/osqp-1.0.4-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b9/08/6862cad708effcf16baabbb9e6dae1d469858764dd38ec09677f9f2b0755/decoupler-2.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c5/c4/f6b7c0ec5241a2bde90c7ba1eca6ba44f8488bcedafe9072c79593015ec0/session_info-1.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/15/b100495df43fc9cf71bb322da4e196772ceb3c0408b16ac82d6cc2584a1b/corneto-1.0.0rc1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/67/eac43fc67942e3f795c4d9938488eebcd825783ff49b35151422ee09df5f/pydeseq2-0.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d2/c2/a34097e53efe70a538ae97574ff9e9866e60fc1c792c19da5fd6b56ce7b5/formulaic-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/ba/704f9e56ae80ef66cf0534e23dac22ada34845f86b5e5b8b3294649d96b6/omnipath-1.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/db/98/9578ce1d8ae951cf44e6b7434854824f0eae12d54b270e80014f8ab1971c/session_info2-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/2f/b189126765129032b8ce5b17f3a38bf55bcd5a4ceaf30a17d1eff2422d21/cvxpy_base-1.9.1-cp311-cp311-macosx_10_9_universal2.whl - pypi: https://files.pythonhosted.org/packages/e6/c5/7d7c8f2f5aa581408c8bae8d3615fdf1e9adf6258c27c30c8b14385d2d50/qdldl-0.1.9.post1-cp311-cp311-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/e9/62/59d0634be0ef33b46108d83e62847c5cb2dfa117915495d2b8271b999547/cvxpy-1.6.6-cp311-cp311-macosx_10_9_universal2.whl - - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/1e/02a4d96e20320fdd91d77c30040fc00db89d08d95549f96f6f8afecd0948/corneto-1.0.0rc5-py3-none-any.whl win-64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anndata-0.11.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyh6dadd2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyh6dadd2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyha7b4d00_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.9.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyh6dadd2b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio2-1.7.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/papermill-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.11-8_cp311.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyha7b4d00_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.10.4-hc6e9107_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.14-h032d170_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.14.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-h1da161f_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.11.0-h667fc28_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.27.3-hbdc738f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.12.8-hd7ee1a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.7-h1da161f_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-h1da161f_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.14.3-py311ha56572f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.10.4-h98da7c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.15-hf2e3468_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.14.3-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-h0d56620_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.11.0-he024045_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.27.5-hef21f9d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.13.1-h0deae5e_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.7-h0d56620_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-h0d56620_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.6.0-py311h71c1bcc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.2.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py311hc5da9e4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py311h275cad7_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.21-py311h5dfdfe8_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.18.1-hd47e2ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.18.2-hd47e2ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.63.0-py311h3f79411_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.3-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.8.0-py311hdf60d3a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.88.2-h395db07_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.88.2-h74ecf4c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.88.3-h3750008_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.88.3-h81395b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.15-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-13.0.1-ha5e8f4b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/h5py-3.16.0-nompi_py311ha643933_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-14.2.1-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-2.1.0-nompi_h0d3e4b2_110.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.3-h637d24d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-14.3.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-2.1.0-nompi_hf525611_111.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.3-h5112557_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.5.0-py311h275cad7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.22.2-h719d79b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.19.1-hf2c6c5f_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.1.0-hd936e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.2.0-hd936e49_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-32_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda @@ -695,56 +906,64 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-32_h5e41251_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-22.1.8-default_hf735972_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.21.0-h51a1c48_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.21.0-hdb0ef4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h1a1d4e4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.1-hac47afa_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.3-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.3-hdbac1cb_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.1.0-h1383e82_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h4974f7c_12.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.88.2-h7ce1215_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.88.3-h7ce1215_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-14.2.1-h03b5201_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-devel-14.2.1-h03b5201_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-14.3.0-h03b5201_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-devel-14.3.0-h03b5201_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.13.0-default_h049141e_1000.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-devel-0.22.5-h5728263_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.2.0-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.3-hfd05255_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.58-h7351971_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpsl-0.22.0-h25e0afd_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.3-hf5d6505_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpsl-0.23.0-h9b16d47_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.22-h6a83c73_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.4-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.2-h8f73337_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.357.0-h477610d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.3-h3cfd58e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.3-h8ef44ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h0fbe4c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.48.0-py311h6456a58_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.3-py311h1ea47a8_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.3-py311h8f1b1e4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.66.0-py311h5e69a0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.1-py311h3f79411_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.66.0-py311h5dfdfe8_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.6-py311h65cb7f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h0e57b4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py311h11fd7f3_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h13911b6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.58.0-h13911b6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.3.0-py311h17b8079_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.5.2-py311h3f79411_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py311hf893f09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.11.1-py311he824864_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.11.15-h0159041_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-312-py311hefeebc8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py311h3f79411_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py311h7a22eb7_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.11.1-pl5321hfcac499_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-2026.6.3-py311h7337c20_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.1-py311h9c22a71_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.6-py311h17033d2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h3155e25_6.conda @@ -762,51 +981,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.2-hfd05255_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.24.5-py311h3f79411_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-h3a581c9_11.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.2-hfd05255_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/02/3f/a6ec28c88e2d8e54d32598a1e0b5208a4baa72a8e7f6e241beab5731eb9d/interface_meta-1.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0e/eb/86a5e22c20447e7621d74b3b1e7c96885c5278805ea1b64b30a5b904cad6/gurobipy-12.0.2-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/1e/b9/c950f938b8cfb957161c2a53578e29619de1516d3f8dcd7fa9f168ef97af/omnipath-1.0.9-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/29/28/83df019db913031ce826e3ed3fa655df9663d58cc1f083d1adc78a1bb528/decoupler-2.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/21/6f/22038a39b64554ce2a3ef2f6030338fccfb2934ecb03fa19338be2077007/cvxpy_base-1.9.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/40/7b/639411281256c84e8111bf6cb9676c44dbf5d8ad4cb042f4359b7e7b9e74/formulaic_contrasts-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/41/e6/4eee3062088c221e5a18b054e51c69f616e0bb0dc1b0a1a5e0fe90dfa18e/clarabel-0.11.1-cp39-abi3-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/42/84/ec070a699d38e648fcef8599da7c031cd2fafc889bbe8a31500336805161/cvxpy-1.6.6-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/44/8e/250fab1cafeea43f4eb11f1d64cd6313f639965ff62cb0d9da3883655781/docrep-0.3.2.tar.gz - pypi: https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/48/45/6714276be39f1f0f7c2795fb466c39640bbcc541e151342f05f61d2f24a5/highspy-1.15.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/53/1c/8feedd607cc14c5df9aef74fe3af9a99bf660743b842a9b5b1865326b4aa/adjustText-1.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/53/7b/3de5ee5408f5d86f763f007c55618a1bb9f0ab1444c00fa82105d2a6a378/cvxpy_base-1.9.2-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/80/da1508e745faf701e1c0d96cedd292037e6b17748c770ff32dacf77190b8/marsilea-0.5.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/86/92/bd62fb14acf1f74ed021b3e2f105466a6b47b0ebedc5daddada4b88b47b4/legendkit-0.3.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/88/c7/4102536de33c19d090ed2b04e90e7452e2e3dc653cf3323208034eaaca27/stdlib_list-0.11.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8a/eb/427ed2b20a38a4ee29f24dbe4ae2dafab198674fe9a85e3d6adf9e5f5f41/inflect-7.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/95/da/0d1df507cf574b3f224ccc3d45244c9a1d732c81dcb26b1e8a766ae271a8/scipy-1.17.1-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/90/5f/90666e73bc409693a0edf4f10c1eb47d6d134754bc44ca6770bdde89c347/cvxpy-1.9.1-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a1/85/19e2b49117f7ea20d94129d67c9b982e788ded90c561e0029c42fc7eb0ea/osqp-1.0.4-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/a3/fb/9574b71c156ca8d49fe22f5f0951a46dd57460339a5f8e463fbf35e6a1b8/sparsediffpy-0.3.0-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b9/08/6862cad708effcf16baabbb9e6dae1d469858764dd38ec09677f9f2b0755/decoupler-2.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bf/34/a42b90bff9330ac57e1dcc8c35b978cee47d6e9eee14cb71981b801fc7cf/scs-3.2.7.post2-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/c5/c4/f6b7c0ec5241a2bde90c7ba1eca6ba44f8488bcedafe9072c79593015ec0/session_info-1.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/ce/15/b100495df43fc9cf71bb322da4e196772ceb3c0408b16ac82d6cc2584a1b/corneto-1.0.0rc1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d1/67/eac43fc67942e3f795c4d9938488eebcd825783ff49b35151422ee09df5f/pydeseq2-0.5.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d2/c2/a34097e53efe70a538ae97574ff9e9866e60fc1c792c19da5fd6b56ce7b5/formulaic-1.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/ba/704f9e56ae80ef66cf0534e23dac22ada34845f86b5e5b8b3294649d96b6/omnipath-1.0.12-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/db/98/9578ce1d8ae951cf44e6b7434854824f0eae12d54b270e80014f8ab1971c/session_info2-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/1e/02a4d96e20320fdd91d77c30040fc00db89d08d95549f96f6f8afecd0948/corneto-1.0.0rc5-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/5a/ba91b8c57aa37dbd80d5ff958576a9a8c14317b04b671ae7f0d09b00993a/scikit_learn-1.7.0-cp311-cp311-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/f9/c9/a3ac897afef956b0606e17baa680f9bd957304c7d85fc5dc46a6dcef55e5/qdldl-0.1.9.post1-cp311-cp311-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -829,6 +1042,29 @@ packages: purls: [] size: 23621 timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.14.3-py311h55b9665_0.conda + sha256: 3a9ea12b3eb9be840a8260046c00f6dea6e7e0439eba47e92027eec55ec171c1 + md5: 4cd9ca8498df95c75519a46c4bd0d13b + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.5.0 + - aiosignal >=1.4.0 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=14 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.4 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + run_exports: {} + size: 1088390 + timestamp: 1784900487524 - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.16.1-hb03c661_0.conda sha256: cf93ca0f1f107e95a35969a4622684e08fcb8cf37f8cf4a1e9e424828386c921 md5: 8904e09bda369377b3dd07e2ac828c5d @@ -886,31 +1122,31 @@ packages: purls: [] size: 355900 timestamp: 1713896169874 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.4-hb7a77c6_1.conda - sha256: 845fe32ee750d4a4d3efdb1d95a8c29c3388e3ea9787b77341ec4abe4e198b11 - md5: 4347d5ffdf34adf9c5edd10837727d96 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.10.4-h4610da3_2.conda + sha256: 0c92dc5ddf4edd4038a63adb79f9f0b03f61e9455ce3253b7d2cf708e06ff99e + md5: cefa84dbf94066e7a6902af288a2fedd depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-auth >=0.10.4,<0.10.5.0a0 - size: 135073 - timestamp: 1784086842394 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.14-h2aa3ae6_4.conda - sha256: a67c944be1728f576c02fe8f28b0cbb78b5353415075db3da4ef71bc9dd8c00c - md5: 9c6072e7b882d35ac956c07e493d6a9e + size: 135127 + timestamp: 1785199053057 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.15-h6bbde05_1.conda + sha256: 6eb21a0129e0aa7c6be733c7f2d1de6bc97a60c8382c1016f19dced722600d73 + md5: 8f2b374c79908f271be3d0e9f1c462a8 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - libgcc >=14 - openssl >=3.5.7,<4.0a0 license: Apache-2.0 @@ -918,12 +1154,12 @@ packages: purls: [] run_exports: weak: - - aws-c-cal >=0.9.14,<0.9.15.0a0 - size: 56752 - timestamp: 1784043396713 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.2-hb03c661_0.conda - sha256: 701398f1c9978c41e93cb0947869a66b7f8004e9d6e548d63d11aedae83cfb02 - md5: f3e0b2e044485ae90d4a59c77e7a0182 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + size: 56630 + timestamp: 1785157790550 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.14.3-hb03c661_0.conda + sha256: 8ea79f36d50ba90d7147fe1a047f9a7f2d33b114a3d4bacf1360cd8df43986e4 + md5: ce8664d7c01d4a598ad38107b289b5ec depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -932,110 +1168,125 @@ packages: purls: [] run_exports: weak: - - aws-c-common >=0.14.2,<0.14.3.0a0 - size: 246263 - timestamp: 1783637234072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h720e601_4.conda - sha256: 8e0a5513cfc42df8bd16adbd8e83a37d3ca89b8e04cb20eb04eb177bbbfea365 - md5: c9be3f5854f349ae77a1a174b59e11a8 + - aws-c-common >=0.14.3,<0.14.4.0a0 + size: 245819 + timestamp: 1784596136918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.2-h01ee8f8_5.conda + sha256: 27f8581573c533a92a1a9619516ebb66d390b9923d296331985cfd342dc32d29 + md5: ae862abdbb3160f97478d3d4749164c0 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-compression >=0.3.2,<0.3.3.0a0 - size: 22301 - timestamp: 1784042853709 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-h38ae05a_4.conda - sha256: 4b939b4a76a11c9ec50c891ae9bf232da8dcaf8797701df1e79ae51c988be2d4 - md5: 97f2799ae6ff7b6f52dfa321fef9676b + size: 22282 + timestamp: 1785157574179 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.11.0-hbe094ff_5.conda + sha256: a4a5e24b398e7c0ef64de5a341ecb3f0fa87c2879177695c5d0bcbde0c4f8b5e + md5: c09f7ec7327b8bd52fc2d6eacaa18d3b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-compression >=0.3.2,<0.3.3.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-http >=0.11.0,<0.11.1.0a0 - size: 231294 - timestamp: 1784075685646 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.27.3-h6f4d18d_1.conda - sha256: 94c32ca672ce290e250aea1cfb92582cca4658bdc3ec7cb1ceef254f34451595 - md5: bd19b685b88557830f1a617a6d404eb2 + size: 231270 + timestamp: 1785186134512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.27.5-h4f381ba_1.conda + sha256: 76ab4eb6cae12e14244cb1fe11ecccc2f103f8ffa7e80e222099c6b16c19ae20 + md5: 948f5a4fddac779b7942626e5807caba depends: - - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - s2n >=1.7.5,<1.7.6.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - libgcc >=14 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + - s2n >=1.7.6,<1.7.7.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-io >=0.27.3,<0.27.4.0a0 - size: 183100 - timestamp: 1784054829913 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.12.8-h46fcd08_1.conda - sha256: a423bffbb0e6cacb5e2a0861b918ba3180e5132509afb1faf225ee9f0ec8f981 - md5: 706aa99414d18db5b23475b45cc93a0b + - aws-c-io >=0.27.5,<0.27.6.0a0 + size: 183633 + timestamp: 1785170070776 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.13.1-h7508075_1.conda + sha256: d24f7f34b3b564535b533b17176e71f71b6944aa2cb71813283bece139908d9f + md5: 2daf54d3eef87b757f68d7597534dd2f depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - openssl >=3.5.7,<4.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - aws-c-auth >=0.10.4,<0.10.5.0a0 + - openssl >=3.5.7,<4.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-checksums >=0.2.10,<0.2.11.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-s3 >=0.12.8,<0.12.9.0a0 - size: 156174 - timestamp: 1784100985258 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.7-h720e601_2.conda - sha256: e419e179e04021fc680d98af23fac4b4c2369cea61171087e57a734e968dd9bd - md5: 816f62fa82532118ebb2398382090945 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 + size: 157667 + timestamp: 1785351292770 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.7-h01ee8f8_3.conda + sha256: b308c393a3db78cef29942c6b83ca7321f86d357fbb47504d59f55254601c87a + md5: 412f0cf18cc4c4945655dba954ca2d76 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - size: 68515 - timestamp: 1784044260935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h720e601_4.conda - sha256: 6cc8617854a43040291dea791fe111ba408e7a5bbd9ee9e5a99375da7a16846b - md5: 24ee781effc5779206a80139323c9caf + size: 68574 + timestamp: 1785159234141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.10-h01ee8f8_5.conda + sha256: f8d2cd9faccb273df739fc28431b484a90aca10027ef44f7fec1d4f0bd229a76 + md5: 4d70caf5260e0787675c3bf61ae5b64c depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-checksums >=0.2.10,<0.2.11.0a0 - size: 101904 - timestamp: 1784044248506 + size: 101887 + timestamp: 1785159213897 +- conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.6.0-py311h6b1f9c4_0.conda + sha256: bb42ea7eee74a6ade6be8ad94239f2dcc54d5939577a3488ee25a5f534bf0d4c + md5: 434f289a3aea1a1f5ace0f2226a53fe6 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - zstd >=1.5.7,<1.6.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + run_exports: {} + size: 246945 + timestamp: 1781450816739 - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda sha256: e511644d691f05eb12ebe1e971fd6dc3ae55a4df5c253b4e1788b789bdf2dfa6 md5: 8ccf913aaba749a5496c17629d859ed1 @@ -1069,6 +1320,24 @@ packages: run_exports: {} size: 21021 timestamp: 1764017221344 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py311h66f275b_1.conda + sha256: c36eb061d9ead85f97644cfb740d485dba9b8823357f35c17851078e95e975c1 + md5: 86daecb8e4ed1042d5dc6efbe0152590 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.2.0 hb03c661_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 367573 + timestamp: 1764017405384 - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 @@ -1176,6 +1445,22 @@ packages: purls: [] size: 437860 timestamp: 1747855126005 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.21-py311hc665b79_0.conda + sha256: 600beac442edeb098cd93c8d9459904c341dc4c258cee726191a3ead1e877672 + md5: f3d3ec5fc6db099c5b24e95a4c55817f + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + run_exports: {} + size: 2730876 + timestamp: 1780390154098 - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda sha256: 40cdd1b048444d3235069d75f9c8e1f286db567f6278a93b4f024e5642cfaecc md5: dbe3ec0f120af456b3477743ffd99b74 @@ -1201,26 +1486,26 @@ packages: purls: [] size: 1440699 timestamp: 1648505042260 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.1-h27c8c51_0.conda - sha256: 2e50bdcebdf70a865b81f2456bbc586386451ec601c60f2b6cd22b8c40a2d384 - md5: e0e050cfa9fa85fe39632ab11cb7f3e0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.18.2-h27c8c51_0.conda + sha256: d77a47bc2b340b997c680241751e581672d1d0377a680eaf0b19026f013f56b7 + md5: 3c702747058a5d0af93fe71e559327f3 depends: - __glibc >=2.17,<3.0.a0 - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libuuid >=2.42.1,<3.0a0 + - libuuid >=2.42.2,<3.0a0 - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - fontconfig >=2.18.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - size: 281880 - timestamp: 1780450077431 + size: 292684 + timestamp: 1784754430789 - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.63.0-py311h3778330_0.conda sha256: ce5004df66a6bf4e3d634850ab43471b98700291065281eb1982eb54b7bf7d85 md5: 498ede447c05b203be980ae1dceb06f3 @@ -1239,23 +1524,23 @@ packages: run_exports: {} size: 3045399 timestamp: 1778770357867 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_0.conda - sha256: c934c385889c7836f034039b43b05ccfa98f53c900db03d8411189892ced090b - md5: 8462b5322567212beeb025f3519fb3e2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.3-ha770c72_1.conda + sha256: d109354d4584aa1ef6e915a8f02cbe13a9708f384aa167c075953b6f8196111c + md5: 8dd74ae1edf2b6490af0e960be773431 depends: - - libfreetype 2.14.3 ha770c72_0 - - libfreetype6 2.14.3 h73754d4_0 + - libfreetype 2.14.3 ha770c72_1 + - libfreetype6 2.14.3 h73754d4_1 license: GPL-2.0-only OR FTL purls: [] run_exports: weak: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - size: 173839 - timestamp: 1774298173462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d - md5: f9f81ea472684d75b9dd8d0b328cf655 + size: 174748 + timestamp: 1785641176027 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_1.conda + sha256: 4846a3ca0402f3fe33ad84ed50ab213c6aafde4a0faef3c5002f6bf753e21671 + md5: 1cd10eda5692519d01bb20e086e214c9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -1264,8 +1549,24 @@ packages: run_exports: weak: - fribidi >=1.0.16,<2.0a0 - size: 61244 - timestamp: 1757438574066 + size: 61782 + timestamp: 1785912528684 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.8.0-py311h52bc045_0.conda + sha256: 9537f677fb492bf2bc4290e7fc2eafab6675c5ab0a6fb628d74b6a496d4a93e5 + md5: 6f0bb7a70fe713df47cabcc72bfbcd8e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + run_exports: {} + size: 54087 + timestamp: 1779999786304 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.7-h2b0a6b4_0.conda sha256: 1c22e37f9d7e06e9e0582ee5a55c2ddd19ea75f71f44eb13b56f504ef5c37aa5 md5: 5d355db3e937086e22cf4cb5fe19787c @@ -1285,19 +1586,19 @@ packages: - gdk-pixbuf >=2.44.7,<3.0a0 size: 581631 timestamp: 1782591374199 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.2-h8094192_0.conda - sha256: 079757e4e0497d67505b52062668e4cc0d2a86ec065ae2c0c57487a178206061 - md5: cfe66c21ae651b84a3d25a1dbb641a54 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.88.3-h95f0039_0.conda + sha256: ccdad3d9149ca12353583818bdfde9f66753da7e8ea6dd35a6312062e2fe60d2 + md5: 841fd9387fd3f24ea69a4f679242e32c depends: - - libglib ==2.88.2 h0d30a3d_0 + - libglib ==2.88.3 h0d30a3d_0 - libffi - libgcc >=14 - __glibc >=2.17,<3.0.a0 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 238517 - timestamp: 1782463895250 + size: 238245 + timestamp: 1785442107463 - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.15-hecca717_0.conda sha256: 885fa7d1d7e2ad9ed0a700ee0d81ceb49de278253082d517959b22d6336eecce md5: cf09e9fc938518e91d0706572cadf17a @@ -1415,35 +1716,35 @@ packages: run_exports: {} size: 1359434 timestamp: 1775581283533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.2.1-ha770c72_1.conda - sha256: 853beec89ff91cbbf630f1d305b69153eb28a3cb78af95ddc1fb4d30e524c6f4 - md5: 72e956a71241633d8c80aa198fd08784 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-14.3.0-ha770c72_0.conda + sha256: 511813aaad42ed2494efc77452738fed7734985e069efc08c279a701b1708ba0 + md5: 7f42f814e1306f83e4cac267baa9acab depends: - - libharfbuzz-devel 14.2.1 h17a8019_1 + - libharfbuzz-devel 14.3.0 h17a8019_0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 11039 - timestamp: 1782800611635 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_h654f344_110.conda - sha256: 548411cb10baf1122c46cfef555936c385137d3637b75bd322e7574eda933842 - md5: 58484580a0f626dbe7d5145f014dbfd4 + - libharfbuzz >=14.3.0 + size: 11045 + timestamp: 1785770087614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-2.1.0-nompi_hc529623_111.conda + sha256: 57566a25d231272d348a4eeb82b76f2ad6b2f1c8a4db0913b295eddc6aed8fe1 + md5: 6d2270ffd7b41e05311045531067deb5 depends: - __glibc >=2.17,<3.0.a0 - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-s3 >=0.12.8,<0.12.9.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - libaec >=1.1.5,<2.0a0 - libcurl >=8.21.0,<9.0a0 - libgcc >=14 - libgfortran - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.4.0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -1453,8 +1754,8 @@ packages: run_exports: weak: - hdf5 >=2.1.0,<3.0a0 - size: 4128283 - timestamp: 1784118352322 + size: 4271186 + timestamp: 1785701032488 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 md5: bbf6f174dcd3254e19a2f5d2295ce808 @@ -1463,20 +1764,21 @@ packages: purls: [] size: 13841 timestamp: 1605162808667 -- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h33c6efd_1.conda - sha256: c054e32ac4c14426006edf9d01981dc564559b4065af7c13c26be904e1babf04 - md5: 3c7763347873f07adfd87e8001b5b1d1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.3-h54a6638_2.conda + sha256: d7c260b7e1cf22ce04d6ba8a86eabf4e6c50bc96a5c27fe2ecb32298af3e88eb + md5: 4ef4b977bb216a3001a3334696a80850 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 license: MIT + license_family: MIT purls: [] run_exports: weak: - icu >=78.3,<79.0a0 - size: 12709032 - timestamp: 1784588496729 + size: 14455340 + timestamp: 1784916378180 - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 md5: b38117a3c920364aff79f870c984b4a3 @@ -1553,9 +1855,9 @@ packages: purls: [] size: 670635 timestamp: 1749858327854 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.1.0-hdb68285_0.conda - sha256: f84cb54782f7e9cea95e810ea8fef186e0652d0fa73d3009914fa2c1262594e1 - md5: a752488c68f2e7c456bcbd8f16eec275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.2.0-hdb68285_0.conda + sha256: bf9fdebf55d8bc99d83531cdffda00703f4dc5f93a1a956768c147362c72feda + md5: fb9d356b1a57d6d54768be7ebd5fce09 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -1565,9 +1867,9 @@ packages: purls: [] run_exports: weak: - - lerc >=4.1.0,<5.0a0 - size: 261513 - timestamp: 1773113328888 + - lerc >=4.2.0,<5.0a0 + size: 271158 + timestamp: 1785036167977 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688 md5: 86f7414544ae606282352fa1e116b41f @@ -1660,39 +1962,45 @@ packages: purls: [] size: 17308 timestamp: 1750388809353 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h6c227bf_3.conda - sha256: ccb8bd0a8f2d57675b6a60dabb0cc8becb35c2748ac4ec920d7f7625b93c16d8 - md5: 864e6d29ec7378b89ff5b5c9c629099e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp22.1-22.1.8-default_h08c5240_4.conda + sha256: dbe4fa7be5920e7f085a2a8194224938d98febc7548fda75cbff7caa142800c6 + md5: 68888dda6d70517b336257256f81c09f depends: - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.2,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang-cpp22.1 >=22.1.8,<22.2.0a0 - size: 24175081 - timestamp: 1782358841320 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h9692865_3.conda - sha256: b90ed8467a692788477c06bc0359fac52ed5651d801ddef189ba4b7ecf3ce38c - md5: 2a913525f4201f1adab2711fcf6f89b3 + size: 24170464 + timestamp: 1785981551598 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-22.1.8-default_h114c9b5_4.conda + sha256: b6a66e40b23d5fe889d95ede00d5f52d7efcbb8a202db25c646406e2ee13a48b + md5: f652bddaccf6b2967402ccc5d2d0d346 depends: - - libclang-cpp22.1 ==22.1.8 default_h6c227bf_3 + - libclang-cpp22.1 ==22.1.8 default_h08c5240_4 - libstdcxx >=14 - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libzlib >=1.3.2,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libllvm22 >=22.1.8,<22.2.0a0 license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] run_exports: weak: - libclang13 >=22.1.8 - size: 14283567 - timestamp: 1782358841320 + size: 14274632 + timestamp: 1785981551598 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h7a8fb5f_6.conda sha256: 205c4f19550f3647832ec44e35e6d93c8c206782bdd620c1d7cf66237580ff9c md5: 49c553b47ff679a6a1e9fc80b9c5a2d4 @@ -1710,15 +2018,15 @@ packages: - libcups >=2.3.3,<2.4.0a0 size: 4518030 timestamp: 1770902209173 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-hae6b9f4_2.conda - sha256: ba8354084b34fce56d5697982fce4a384c148e972e15c0ab891187617fe7ec29 - md5: f9c59d277a16ec8f272b2d5dd2ec3335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.21.0-heca4667_4.conda + sha256: aff8ef75636d0825ce34911e0bef2f26816e7afd090a9dcb4b9bacab75cbf584 + md5: 3f2fd5617cfacac49c85f6dc63842ea1 depends: - __glibc >=2.17,<3.0.a0 - krb5 >=1.22.2,<1.23.0a0 - libgcc >=14 - libnghttp2 >=1.68.1,<2.0a0 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -1729,25 +2037,24 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 480327 - timestamp: 1782911787190 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda - sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 - md5: 6c77a605a7a689d17d4819c0f8ac9a00 + size: 480565 + timestamp: 1785500108494 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-hd45a770_1.conda + sha256: 82e134c8a08b1eed9a2ed8ab578b89aa1730dcde3dea8dd87645ed0637878e54 + md5: 40f9b31aa9cf007789867df0decd0492 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: MIT - license_family: MIT purls: [] run_exports: weak: - libdeflate >=1.25,<1.26.0a0 - size: 73490 - timestamp: 1761979956660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_0.conda - sha256: 7d3187c11b7ae66c5595a8afd5a7ce352a490527fdf6614cab129bc7f2c16ba3 - md5: d8d16b9b32a3c5df7e5b3350e2cbe058 + size: 73710 + timestamp: 1785908694612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.127-hb03c661_1.conda + sha256: b4e74db8ed1d5f8b6c9edf9582953c063650d677b299e90585d00f127644eb87 + md5: 65514a7ba857e9dbffbffd641f293e33 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -1758,8 +2065,8 @@ packages: run_exports: weak: - libdrm >=2.4.127,<2.5.0a0 - size: 311505 - timestamp: 1778975798004 + size: 311002 + timestamp: 1785984394604 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -1836,31 +2143,31 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 58592 timestamp: 1769456073053 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_0.conda - sha256: 38f014a7129e644636e46064ecd6b1945e729c2140e21d75bb476af39e692db2 - md5: e289f3d17880e44b633ba911d57a321b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.3-ha770c72_1.conda + sha256: 9f09d889d1021fa0d99968e5f209a7a7b316dee48c97ed0d79e996e1272a6280 + md5: 12a05d10f2e4eadfd7b8f754a17f5e1a depends: - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL purls: [] run_exports: {} - size: 8049 - timestamp: 1774298163029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_0.conda - sha256: 16f020f96da79db1863fcdd8f2b8f4f7d52f177dd4c58601e38e9182e91adf1d - md5: fb16b4b69e3f1dcfe79d80db8fd0c55d + size: 8419 + timestamp: 1785641173212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.3-h73754d4_1.conda + sha256: 162f1736f9ec7b19915658cbb25a685748932f697418ab85657332de5da5f496 + md5: e63acf9b3849fd9fc2dba64b69849716 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libpng >=1.6.55,<1.7.0a0 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 constrains: - freetype >=2.14.3 license: GPL-2.0-only OR FTL purls: [] run_exports: {} - size: 384575 - timestamp: 1774298162622 + size: 386042 + timestamp: 1785641172605 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 md5: 9e60c55e725c20d23125a5f0dd69af5d @@ -1956,25 +2263,25 @@ packages: - libgl >=1.7.0,<2.0a0 size: 113911 timestamp: 1731331012126 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.2-h0d30a3d_0.conda - sha256: 4bee10e62796f01e4fa2b5849135b1cc061337fe9cf5eb9bd79e9664922ae0e4 - md5: 889febc66cd9e4190f80ef9718fa239b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.88.3-h0d30a3d_0.conda + sha256: 69ea4df61403531e5b3e5f3d52ba2837423df361b4eb8727f5b63aaf6de6768a + md5: 17c3b7b6bcbd35b688c933eb4834c0bc depends: - libgcc >=14 - __glibc >=2.17,<3.0.a0 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - libffi >=3.5.2,<3.6.0a0 - pcre2 >=10.47,<10.48.0a0 + - libffi >=3.5.2,<3.6.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4754220 - timestamp: 1782463895250 + - libglib >=2.88.3,<3.0a0 + size: 4755324 + timestamp: 1785442107463 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 md5: 434ca7e50e40f4918ab701e3facd59a0 @@ -2019,9 +2326,9 @@ packages: purls: [] size: 447068 timestamp: 1750808138400 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.2.1-h17a8019_1.conda - sha256: 821c315f6b5171aa89e735be2ad84e74eb3f898fc7610ee36cfecd95dfa789e8 - md5: fb4669c3990b94ea32fbb81f433e9aa6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-14.3.0-h17a8019_0.conda + sha256: fb72d6f7e90d4927cb53a4e13592559ce74b65052323d5d6dd12499b026c680e + md5: f33637ebded146eafa6b2197c8f597a6 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -2030,7 +2337,7 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 + - libglib >=2.88.3,<3.0a0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -2038,11 +2345,11 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1297668 - timestamp: 1782800580119 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.2.1-h17a8019_1.conda - sha256: 6d8e793042affd18ca1784b7794fab14d16f54f984777ce6ab86bacaa465ab0d - md5: 99cf21100441e51272f1cd6fe0632a20 + size: 1333436 + timestamp: 1785770053613 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libharfbuzz-devel-14.3.0-h17a8019_0.conda + sha256: 7ce9326c2520ae758f523ae2d72a0762f7494d77fe8cc9a96065df541e1db8e2 + md5: 15634b3c7e5a68ca7c6e0bbf84cb2383 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 @@ -2052,8 +2359,8 @@ packages: - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.88.2,<3.0a0 - - libharfbuzz 14.2.1 h17a8019_1 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz 14.3.0 h17a8019_0 - libpng >=1.6.58,<1.7.0a0 - libstdcxx >=14 - libzlib >=1.3.2,<2.0a0 @@ -2062,9 +2369,9 @@ packages: purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 1970690 - timestamp: 1782800603897 + - libharfbuzz >=14.3.0 + size: 2081226 + timestamp: 1785770079548 - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 md5: e796ff8ddc598affdf7c173d6145f087 @@ -2075,9 +2382,9 @@ packages: purls: [] size: 713084 timestamp: 1740128065462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_0.conda - sha256: 716332fd31b3808da7a4235a05212a9e9da05e854864c3def2dea0b5d2bf7610 - md5: 466badda5536d85ddc63ee9404f29735 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.2.0-hb03c661_1.conda + sha256: bba8538e6538ed58a8479b332337b96986561f975d06cfa2039a016c2d246ee4 + md5: 898d1c9793eaa52efc4727bd84d2e39a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -2088,8 +2395,8 @@ packages: run_exports: weak: - libjpeg-turbo >=3.2.0,<4.0a0 - size: 652868 - timestamp: 1783731886811 + size: 650434 + timestamp: 1785896381946 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda build_number: 32 sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 @@ -2205,9 +2512,9 @@ packages: purls: [] size: 50757 timestamp: 1731330993524 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_0.conda - sha256: f41721636a7c2e51bc2c642e1127955ab9c81145470714fdaac44d4d09e4af41 - md5: 33082e13b4769b48cfeb648e15bfe3fc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.19-hb03c661_1.conda + sha256: addc80c69d362a9e6c40305c493139a8e9ee504b2f45a6687dbdaa9da3c6183c + md5: 35fa2b34bbced424e6976d30f5fde576 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -2217,8 +2524,8 @@ packages: run_exports: weak: - libpciaccess >=0.19,<0.20.0a0 - size: 29147 - timestamp: 1773533027610 + size: 30070 + timestamp: 1785971678815 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.58-h421ea60_0.conda sha256: 377cfe037f3eeb3b1bf3ad333f724a64d32f315ee1958581fc671891d63d3f89 md5: eba48a68a1a2b9d3c0d9511548db85db @@ -2250,22 +2557,22 @@ packages: - libpq >=18.4,<19.0a0 size: 2709008 timestamp: 1782580447454 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.22.0-h49b2146_1.conda - sha256: 71118885feab91c61bea4e9532ec46e0653b24f02e563681f822915aee8435bb - md5: af5ddfb52ad25d833c70c7511478d4eb +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpsl-0.23.0-hf670292_0.conda + sha256: bbb184b81f28a868528b05a81db2448a232a762e47c983330d57b98e1211ae32 + md5: 075e9aafb806c06f190e4757506d2631 depends: - - __glibc >=2.17,<3.0.a0 - - icu >=78.3,<79.0a0 - libgcc >=14 - libstdcxx >=14 + - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libpsl >=0.22.0,<0.23.0a0 - size: 70092 - timestamp: 1783936855082 + - libpsl >=0.23.0,<0.24.0a0 + size: 72585 + timestamp: 1785426713969 - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.62.3-h4c96295_0.conda sha256: 5571bd8239d71961d4e3ce972f865b3ea95a91ce0b53d5749fe2dd24254ddbda md5: 492c8d9b1c564c2e948b6cb4ba0f8261 @@ -2289,20 +2596,34 @@ packages: - librsvg >=2.62.3,<3.0a0 size: 3476570 timestamp: 1780450632624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.3-h0c1763c_0.conda - sha256: 365376f4815e5e80def2b3462a2419708b7c292da0da85278386c2618621fff4 - md5: 4aed8e657e9ff156bdbe849b4df44389 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.22-h280c20c_1.conda + sha256: b677bbf1c339d894757c3dcfbb2f88649e499e4991d70ae09a1466da9a6c92d6 + md5: 965e4d531b588b2e42f66fd8e48b056c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: ISC + purls: [] + run_exports: + weak: + - libsodium >=1.0.22,<1.0.23.0a0 + size: 269272 + timestamp: 1779163468406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.53.4-hf4e2dac_0.conda + sha256: 72023efc207fe681e26b65fc9d668062cf0b4f0eacf3431e6eb099b95c1f2efd + md5: df088a279cd5e6fd2790b4c196434da1 depends: - __glibc >=2.17,<3.0.a0 + - icu >=78.3,<79.0a0 - libgcc >=14 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 962119 - timestamp: 1782519076616 + - libsqlite >=3.53.4,<4.0a0 + size: 964200 + timestamp: 1785016112246 - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661 md5: eecce068c7e4eddeb169591baac20ac4 @@ -2370,41 +2691,40 @@ packages: - libuuid >=2.42.2,<3.0a0 size: 40017 timestamp: 1781625522462 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - sha256: a68280d57dfd29e3d53400409a39d67c4b9515097eba733aa6fe00c880620e2b - md5: 31ad065eda3c2d88f8215b1289df9c89 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.357.0-h5279c79_0.conda + sha256: 1e30138cff1e6ba5739ce3ec787b24ef22ac6e2008d8a2073df334e9e5f8690b + md5: 9d8c72f797f6f2d1c32897603d70824c depends: - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libx11 >=1.8.13,<2.0a0 - xorg-libxrandr >=1.5.5,<2.0a0 constrains: - - libvulkan-headers 1.4.341.0.* + - libvulkan-headers 1.4.357.0.* license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 - size: 199795 - timestamp: 1770077125520 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b - md5: aea31d2e5b1091feca96fcfe945c3cf9 + - libvulkan-loader >=1.4.357.0,<2.0a0 + size: 203456 + timestamp: 1785311377294 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_1.conda + sha256: 8415001414f488c85b72b9d8cc2071dfb3981a47bc3c8eb56ef91a57d12eae7f + md5: 9332b53d0ea93c5d39e33be03a0c611a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] run_exports: weak: - libwebp-base >=1.6.0,<2.0a0 - size: 429011 - timestamp: 1752159441324 + size: 428430 + timestamp: 1785954557217 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa md5: 92ed62436b625154323d40d5f2f11dd7 @@ -2502,21 +2822,21 @@ packages: - libxslt >=1.1.43,<2.0a0 size: 245434 timestamp: 1757963724977 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_2.conda - sha256: 55044c403570f0dc26e6364de4dc5368e5f3fc7ff103e867c487e2b5ab2bcda9 - md5: d87ff7921124eccd67248aa483c23fec +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.2-h25fd6f3_3.conda + sha256: eb8a0db0aa570124f7d2a93d7c7f596e3390df5e047818d873baad32985fc736 + md5: 0de0122d9570a8ab637c6b73db268389 depends: - __glibc >=2.17,<3.0.a0 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 63629 - timestamp: 1774072609062 + size: 63713 + timestamp: 1785362952714 - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.48.0-py311h9d99eea_1.conda sha256: 69cd77c57e7131e656c572bce64d56dc8e0d3985f186b79b271d7b69b1e2b035 md5: 8feb02378d03e9d47d4eeffef04d0d73 @@ -2531,7 +2851,7 @@ packages: license: BSD-2-Clause license_family: BSD purls: - - pkg:pypi/llvmlite?source=compressed-mapping + - pkg:pypi/llvmlite?source=hash-mapping run_exports: {} size: 40445444 timestamp: 1784232131907 @@ -2581,6 +2901,21 @@ packages: run_exports: {} size: 8302117 timestamp: 1746820694094 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.7.1-py311h3778330_0.conda + sha256: 9f3d7b8d3543f667a2a918e4ac401d98fde65c874e08eb201a41ac735f8d9797 + md5: 657ac3fca589a3da15a287868a146524 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + run_exports: {} + size: 100649 + timestamp: 1771610839808 - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 md5: fc21868a1a5aacc937e7a18747acb8a5 @@ -2594,33 +2929,32 @@ packages: - ncurses >=6.6,<7.0a0 size: 918956 timestamp: 1777422145199 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.66.0-py311hcdb8226_0.conda - sha256: 868ca603a05078e171b182039bd5b63bbc3c6a18a8344576203ecab2022a93e8 - md5: 4f04cb6bc8e59950929aa80f313720dc +- conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.66.0-py311hc665b79_1.conda + sha256: aef498af1a2f68bd5fe12e853f1f6d266af75839ec2145ba0140655624147f56 + md5: c20960467168a2f18064ee69309cdd19 depends: + - python + - llvmlite >=0.48.0,<0.49.0a0 + - numpy >=1.22.3,<2.5 - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - libgcc >=14 + - _openmp_mutex >=4.5 - libstdcxx >=14 - - llvmlite >=0.48.0,<0.49.0a0 - - numpy >=1.22.3,<2.5 - numpy >=1.23,<3 - - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 constrains: - - cuda-python >=11.6 - - scipy >=1.0 - - cudatoolkit >=11.2 - - cuda-version >=11.2 - tbb >=2021.6.0 - libopenblas !=0.3.6 + - cuda-version >=11.2 + - cudatoolkit >=11.2 + - scipy >=1.0 + - cuda-python >=11.6 license: BSD-2-Clause - license_family: BSD purls: - - pkg:pypi/numba?source=compressed-mapping + - pkg:pypi/numba?source=hash-mapping run_exports: {} - size: 5915681 - timestamp: 1784209149661 + size: 6250499 + timestamp: 1785940725183 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.6-py311h2e04523_0.conda sha256: 8e8fb64c1a51282e8940d57d116aec54a4d66da59594973ae9c0b35d419b9a81 md5: 5d4e35d7097b88c8b1455ef9f6ddf511 @@ -2680,9 +3014,9 @@ packages: - openldap >=2.6.13,<2.7.0a0 size: 786149 timestamp: 1775741359582 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda - sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b - md5: 79dd2074b5cd5c5c6b2930514a11e22d +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_1.conda + sha256: 012096056b97abf1f68c46b7146bd2cbd68c1be762340b4f5dad4fbbe99177bc + md5: c5955c27917ff2234def47f075e71e02 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -2693,8 +3027,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 3159683 - timestamp: 1781069855778 + size: 3182423 + timestamp: 1785913583650 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py311hed34c8f_2.conda sha256: a2af9dbc4827db418a73127d4001bb3c2ee19adcd2d4387d6bc049c3780d2a62 md5: 2366b5470cf61614c131e356efe9f74c @@ -2748,30 +3082,30 @@ packages: run_exports: {} size: 15180047 timestamp: 1764615050121 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hda50119_1.conda - sha256: 315b52bfa6d1a820f4806f6490d472581438a28e21df175290477caec18972b0 - md5: d53ffc0edc8eabf4253508008493c5bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.58.0-hda50119_0.conda + sha256: ec020fd570ba116c06592af8d8ce05f41c20b6d673d1a8a7a5a98fecad0f4b14 + md5: ef685e254006246695cbc36cf3fda159 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.1 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 - libgcc >=14 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 + - libglib >=2.88.2,<3.0a0 + - libharfbuzz >=14.2.1 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - pango >=1.56.4,<2.0a0 - size: 458036 - timestamp: 1774281947855 + - pango >=1.58.0,<2.0a0 + size: 468909 + timestamp: 1785174647353 - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda sha256: 5e6f7d161356fefd981948bea5139c5aa0436767751a6930cb1ca801ebb113ff md5: 7a3bff861a6583f1889021facefc08b1 @@ -2808,7 +3142,7 @@ packages: - zlib-ng >=2.3.3,<2.4.0a0 license: HPND purls: - - pkg:pypi/pillow?source=compressed-mapping + - pkg:pypi/pillow?source=hash-mapping run_exports: {} size: 1081155 timestamp: 1782912080163 @@ -2827,6 +3161,36 @@ packages: - pixman >=0.46.4,<1.0a0 size: 376220 timestamp: 1784286827180 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.5.2-py311h3778330_0.conda + sha256: 4141ca7e55b09c4c24677112eef554a2ae220b26a3a25e30eb50e0984905b87c + md5: a7465a61562f01c2efd02d6af7b21ee7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + run_exports: {} + size: 51401 + timestamp: 1780037772959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py311haee01d2_0.conda + sha256: 8d9325af538a8f56013e42bbb91a4dc6935aece34476e20bafacf6007b571e86 + md5: 2ed8f6fe8b51d8e19f7621941f7bb95f + depends: + - python + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + run_exports: {} + size: 231786 + timestamp: 1769678156460 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -2898,6 +3262,39 @@ packages: - python size: 30907259 timestamp: 1781149782225 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py311h3778330_1.conda + sha256: c9a6cd2c290d7c3d2b30ea34a0ccda30f770e8ddb2937871f2c404faf60d0050 + md5: a24add9a3bababee946f3bc1c829acfe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + run_exports: {} + size: 206190 + timestamp: 1770223702917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py311hca8cfc1_3.conda + sha256: 2c15f4c797f3f0c2ee8f4446294b9cea60a20ca724e0ab3212d2930926f08757 + md5: efdc6d747c064d0c4cd6fcbbc9c57c58 + depends: + - python + - libstdcxx >=14 + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - zeromq >=4.3.5,<4.4.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + run_exports: {} + size: 383048 + timestamp: 1779483879092 - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc md5: 353823361b1d27eb3960efb076dfcaf6 @@ -3000,9 +3397,26 @@ packages: - readline >=8.3,<9.0a0 size: 345073 timestamp: 1765813471974 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.5-h7e3ee7f_1.conda - sha256: 7369ac21f3561e2203f5b1600ef0671270057380783ca4b9e15f679ba25db575 - md5: fa1c00d999e83ec20173c9775f71a1f1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-2026.6.3-py311h1baac5b_0.conda + sha256: ec844a6df82774ff6790e60ddf6137cac54ee5d41fe2226f0da2bad0ab84e1ae + md5: 0311b3d56cad517ab1a80fd4f9332e3f + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - python_abi 3.11.* *_cp311 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + run_exports: {} + size: 299898 + timestamp: 1782831307838 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.7.6-h7e3ee7f_0.conda + sha256: 1e1ccc56fdf3fe82150b4eac1d626c806e612af208fbf40ce3abfe9a2eb2a626 + md5: e112cadcd79412d81496e784884bddf0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -3012,9 +3426,9 @@ packages: purls: [] run_exports: weak: - - s2n >=1.7.5,<1.7.6.0a0 - size: 392607 - timestamp: 1783164766248 + - s2n >=1.7.6,<1.7.7.0a0 + size: 393680 + timestamp: 1784674401024 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.1-py311hbe70eeb_1.conda sha256: 3ae2ff1d1cc5930de2ca6ac03216118bdf13b2af6098e28e827f1ba25bfcbc4e md5: 089de2ee37e4e19885c985a4fe4aaf14 @@ -3443,6 +3857,55 @@ packages: run_exports: {} size: 570010 timestamp: 1766154256151 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda + sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad + md5: a77f85f77be52ff59391544bfe73390a + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - yaml >=0.2.5,<0.3.0a0 + size: 85189 + timestamp: 1753484064210 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.24.5-py311h3778330_0.conda + sha256: 46826f747feab7499ad15fa395c3ee99c51756ea77ffd859b69ac9aec16d4e93 + md5: 63c08dc16a8ef875ba32bbc2494f1108 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=14 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + run_exports: {} + size: 173395 + timestamp: 1784526608705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h09e67af_11.conda + sha256: dc9f28dedcb5f35a127fad2d847674d2833369dd616d294e423b8997df31d8a8 + md5: 96b08867e21d4694fa5c2c226e6581b0 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - krb5 >=1.22.2,<1.23.0a0 + - libsodium >=1.0.22,<1.0.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + run_exports: + weak: + - zeromq >=4.3.5,<4.4.0a0 + size: 311184 + timestamp: 1779123989774 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f md5: 2aadb0d17215603a82a2a6b0afd9a4cb @@ -3483,6 +3946,32 @@ packages: purls: [] size: 619606 timestamp: 1750236493212 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.7.1-pyhd8ed1ab_0.conda + sha256: 5ef589e5fd3736439781a9d48e68ce1e723b7081a471c02169908198eba4f448 + md5: e51e09bf3b91c62b7461a9f94e92c2c9 + depends: + - python >=3.10 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=hash-mapping + run_exports: {} + size: 24690 + timestamp: 1782986823268 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda + sha256: 8dc149a6828d19bf104ea96382a9d04dae185d4a03cc6beb1bc7b84c428e3ca2 + md5: 421a865222cd0c9d83ff08bc78bf3a61 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + - typing_extensions >=4.2 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + run_exports: {} + size: 13688 + timestamp: 1751626573984 - conda: https://conda.anaconda.org/conda-forge/noarch/anndata-0.11.4-pyhd8ed1ab_0.conda sha256: 39381c11f74969e2aae57bec7e1e36cb95b095f4c7b6de76e35954534b8f5090 md5: b31068156f8d8055f2f2f245f3e9f3d8 @@ -3504,6 +3993,18 @@ packages: - pkg:pypi/anndata?source=hash-mapping size: 114660 timestamp: 1742996811227 +- conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda + sha256: 8f032b140ea4159806e4969a68b4a3c0a7cab1ad936eb958a2b5ffe5335e19bf + md5: 54898d0f524c9dee622d44bbb081a8ab + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/appnope?source=hash-mapping + run_exports: {} + size: 10076 + timestamp: 1733332433806 - conda: https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.12.0-pyhe01879c_0.conda sha256: 259b8e21ee0ce8f2cdcee9df7ba9b7e53d1b4aa2d252946acf5108e03d5d7b5e md5: b656a1f58a53e7b6f5d4588d9b19e7b0 @@ -3516,6 +4017,33 @@ packages: - pkg:pypi/array-api-compat?source=hash-mapping size: 45821 timestamp: 1747403732947 +- conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.2-pyhd8ed1ab_0.conda + sha256: fbbd8ce60cbd5c16f3fe559eb644551f94285caff30985ea961ff851c1cf25ac + md5: 89d495168582cb00428dad699d149624 + depends: + - python >=3.10 + constrains: + - astroid >=2,<5 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/asttokens?source=hash-mapping + run_exports: {} + size: 34639 + timestamp: 1783975742052 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-26.1.0-pyhcf101f3_0.conda + sha256: 1b6124230bb4e571b1b9401537ecff575b7b109cc3a21ee019f65e083b8399ab + md5: c6b0543676ecb1fb2d7643941fe375f2 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=hash-mapping + run_exports: {} + size: 64927 + timestamp: 1773935801332 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-h4c7d964_0.conda sha256: 065241ba03ef3ee8200084c075cbff50955a7e711765395ff34876dbc51a6bb9 md5: b01649832f7bc7ff94f8df8bd2ee6457 @@ -3556,23 +4084,100 @@ packages: - pkg:pypi/cached-property?source=hash-mapping size: 11065 timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - sha256: 9827efa891e507a91a8a2acf64e210d2aff394e1cde432ad08e1f8c66b12293c - md5: 44600c4667a319d67dbe0681fc0bc833 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.7.22-pyhd8ed1ab_0.conda + sha256: fb167de4388e64e52aa3907ed099afab944c1fa6e5f74b281a312dae1bcf7f3b + md5: 37e13edbe3b48f1095a9d085ef9cd83b depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD + - python >=3.10 + license: ISC purls: - - pkg:pypi/cycler?source=hash-mapping - size: 13399 - timestamp: 1733332563512 -- conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda - sha256: ab76be54fabafac4ad1818e2b7870c13baeead9002b0f68f3287abbcf4980d44 - md5: c3bb1ab43684400b05d1f044f7408d07 + - pkg:pypi/certifi?source=hash-mapping + run_exports: {} + size: 137015 + timestamp: 1784717699092 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.9-pyhd8ed1ab_0.conda + sha256: 8d8813ef655b4e75e4fb897abd83ad548882efad7b4e836b021b797f42780799 + md5: d154b40b109e503430979e8a8d099eaf depends: - - joblib - - numba >=0.51 + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + run_exports: {} + size: 61418 + timestamp: 1783505332569 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyh6dadd2b_0.conda + sha256: 5b5c96afdd801dd9c3b78ebc2cd9a9f3ce34186257415d394dde1aa8468aa3c0 + md5: 8a0d65027e25e367f9f1754f0604e8de + depends: + - __win + - colorama + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + run_exports: {} + size: 106227 + timestamp: 1783085395110 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.4.2-pyhc90fa1f_0.conda + sha256: ccc4787f511964f9a1f2d2d2859c91c5d571fb60f7f09d4c4e092c9b7a94e671 + md5: 2c4bd6aeb90bb157456841c3270a0d92 + depends: + - __unix + - python + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + run_exports: {} + size: 107155 + timestamp: 1783085363526 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + run_exports: {} + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda + sha256: 576a44729314ad9e4e5ebe055fbf48beb8116b60e58f9070278985b2b634f212 + md5: 2da13f2b299d8e1995bafbbe9689a2f7 + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/comm?source=hash-mapping + run_exports: {} + size: 14690 + timestamp: 1753453984907 +- conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda + sha256: 9827efa891e507a91a8a2acf64e210d2aff394e1cde432ad08e1f8c66b12293c + md5: 44600c4667a319d67dbe0681fc0bc833 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/cycler?source=hash-mapping + size: 13399 + timestamp: 1733332563512 +- conda: https://conda.anaconda.org/conda-forge/noarch/dcor-0.6-pyhd8ed1ab_1.conda + sha256: ab76be54fabafac4ad1818e2b7870c13baeead9002b0f68f3287abbcf4980d44 + md5: c3bb1ab43684400b05d1f044f7408d07 + depends: + - joblib + - numba >=0.51 - numpy - python >=3.9,<4.0 - scipy @@ -3583,6 +4188,30 @@ packages: - pkg:pypi/dcor?source=hash-mapping size: 45052 timestamp: 1735053931420 +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.3.1-pyhd8ed1ab_0.conda + sha256: 430bd9d731b265f0bedb3183ac3ecfaa1656390c092b6e864ff8cc1229843c8c + md5: 61dcf784d59ef0bd62c57d982b154ace + depends: + - python >=3.10 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/decorator?source=hash-mapping + run_exports: {} + size: 16102 + timestamp: 1779115228886 +- conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/entrypoints?source=hash-mapping + run_exports: {} + size: 11259 + timestamp: 1733327239578 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca md5: 72e42d28960d875c7654614f8b50939a @@ -3594,6 +4223,18 @@ packages: - pkg:pypi/exceptiongroup?source=hash-mapping size: 21284 timestamp: 1746947398083 +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda + sha256: 210c8165a58fdbf16e626aac93cc4c14dbd551a01d1516be5ecad795d2422cad + md5: ff9efb7f7469aed3c4a8106ffa29593c + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/executing?source=hash-mapping + run_exports: {} + size: 30753 + timestamp: 1756729456476 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 @@ -3649,6 +4290,206 @@ packages: purls: [] size: 4102 timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.4.1-pyhcf101f3_0.conda + sha256: 307dd6ec90140c3cf4171071b0e5e870abec314f4565c1edd5bc433e942cdcc0 + md5: e652ac7756069c456d0da2a922cd7df5 + depends: + - python >=3.10 + - hyperframe >=6.1,<7 + - hpack >=4.2,<5 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + run_exports: {} + size: 100789 + timestamp: 1785796355216 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.2.0-pyhd8ed1ab_0.conda + sha256: fdcea5d7cb314485d3907192ef024c704311548c5b0cbeb390cd1951051e29d2 + md5: b395909221b9bd1df066e5930e18855b + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + run_exports: {} + size: 32884 + timestamp: 1782283986153 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + run_exports: {} + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.18-pyhcf101f3_0.conda + sha256: c75632ea624aa450a394f570749420c5a2e0997d0216bc29d5d45b0f39df0426 + md5: 577b04680ae422adb86fc60d7b940659 + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + run_exports: {} + size: 163869 + timestamp: 1781620148226 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyh01cf8df_0.conda + sha256: 994d3cb6b9b88a6533f567c50d20f2f6edc40ae3540ce2ee9629492182ab3403 + md5: a1ddab91145f7f06eee769d2f3ac69cd + depends: + - appnope + - __osx + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=8.9.0 + - jupyter_core >=5.1,!=6.0.* + - matplotlib-inline >=0.1 + - nest-asyncio2 >=1.7.0 + - packaging >=22 + - psutil >=5.7 + - python >=3.10 + - pyzmq >=25 + - tornado >=6.4.1 + - traitlets >=5.4.0 + - python + constrains: + - appnope >=0.1.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + run_exports: {} + size: 137725 + timestamp: 1781101860049 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyh6dadd2b_0.conda + sha256: e3ff0b3d5db5c31830030406f50ac2c9a5c31b86f1c2cef87a6042f0a4c77eb7 + md5: dd5c51d5c42381ba4a2e0ce32e02ba17 + depends: + - __win + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=8.9.0 + - jupyter_core >=5.1,!=6.0.* + - matplotlib-inline >=0.1 + - nest-asyncio2 >=1.7.0 + - packaging >=22 + - psutil >=5.7 + - python >=3.10 + - pyzmq >=25 + - tornado >=6.4.1 + - traitlets >=5.4.0 + - python + constrains: + - appnope >=0.1.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + run_exports: {} + size: 138046 + timestamp: 1781101760172 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.3.0-pyha191276_0.conda + sha256: 305ad9226363ff5f259c404dd9a7508183a2e150739b2adc43db7d817234da66 + md5: 2b47a10e4d98334f8171ff60aea05ff3 + depends: + - __linux + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=8.9.0 + - jupyter_core >=5.1,!=6.0.* + - matplotlib-inline >=0.1 + - nest-asyncio2 >=1.7.0 + - packaging >=22 + - psutil >=5.7 + - python >=3.10 + - pyzmq >=25 + - tornado >=6.4.1 + - traitlets >=5.4.0 + - python + constrains: + - appnope >=0.1.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipykernel?source=hash-mapping + run_exports: {} + size: 138635 + timestamp: 1781101665847 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyh8f84b5b_0.conda + sha256: e43fa762183b49c3c3b811d41259e94bb14b7bff4a239b747ef4e1c6bbe2702d + md5: 177cfa19fe3d74c87a8889286dc64090 + depends: + - __unix + - pexpect >4.3 + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + run_exports: {} + size: 639160 + timestamp: 1748711175284 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.37.0-pyha7b4d00_0.conda + sha256: 4812e69a1c9d6d43746fa7e8efaf9127d257508249e7192e68cd163511a751ee + md5: 2ffea44095ca39b38b67599e8091bca3 + depends: + - __win + - colorama + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/ipython?source=hash-mapping + run_exports: {} + size: 638940 + timestamp: 1748711254071 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.20.0-pyhcf101f3_0.conda + sha256: 744143551c1c7b528b82533fb641b9d7db20b2203abc4c2635c387fa6c089fc3 + md5: c2b3d37aa1411031126036ee76a8a861 + depends: + - python >=3.10 + - parso >=0.8.6,<0.9.0 + - python + license: Apache-2.0 AND MIT + purls: + - pkg:pypi/jedi?source=hash-mapping + run_exports: {} + size: 2715215 + timestamp: 1782251948616 - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.1-pyhd8ed1ab_0.conda sha256: e5a4eca9a5d8adfaa3d51e24eefd1a6d560cb3b33a7e1eee13e410bec457b7ed md5: fb1c14694de51a476ce8636d92b6f42c @@ -3661,6 +4502,107 @@ packages: - pkg:pypi/joblib?source=hash-mapping size: 224437 timestamp: 1748019237972 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda + sha256: db973a37d75db8e19b5f44bbbdaead0c68dde745407f281e2a7fe4db74ec51d7 + md5: ada41c863af263cc4c5fcbaff7c3e4dc + depends: + - attrs >=22.2.0 + - jsonschema-specifications >=2023.3.6 + - python >=3.10 + - referencing >=0.28.4 + - rpds-py >=0.25.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema?source=hash-mapping + run_exports: {} + size: 82356 + timestamp: 1767839954256 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda + sha256: 0a4f3b132f0faca10c89fdf3b60e15abb62ded6fa80aebfc007d05965192aa04 + md5: 439cd0f567d697b20a8f45cb70a1005a + depends: + - python >=3.10 + - referencing >=0.31.0 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/jsonschema-specifications?source=hash-mapping + run_exports: {} + size: 19236 + timestamp: 1757335715225 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.9.1-pyhcf101f3_0.conda + sha256: 48b18974cc93b2c0d2681563237034e521f51d1878f0bbc6a5a67ca31b1608a6 + md5: 49440e66df843bee2273937e8032ec43 + depends: + - jupyter_core >=5.1 + - python >=3.10 + - python-dateutil >=2.8.2 + - pyzmq >=25.0 + - tornado >=6.4.1 + - traitlets >=5.3 + - typing_extensions >=4.13.0 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + run_exports: {} + size: 117954 + timestamp: 1781019994076 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyh6dadd2b_0.conda + sha256: ed709a6c25b731e01563521ef338b93986cd14b5bc17f35e9382000864872ccc + md5: a8db462b01221e9f5135be466faeb3e0 + depends: + - __win + - pywin32 + - platformdirs >=2.5 + - python >=3.10 + - traitlets >=5.3 + - python + constrains: + - pywin32 >=300 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + run_exports: {} + size: 64679 + timestamp: 1760643889625 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + sha256: 1d34b80e5bfcd5323f104dbf99a2aafc0e5d823019d626d0dce5d3d356a2a52a + md5: b38fe4e78ee75def7e599843ef4c1ab0 + depends: + - __unix + - python + - platformdirs >=2.5 + - python >=3.10 + - traitlets >=5.3 + - python + constrains: + - pywin32 >=300 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + run_exports: {} + size: 65503 + timestamp: 1760643864586 +- conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.2-pyhd8ed1ab_0.conda + sha256: 35b43d7343f74452307fd018a1cca92b8f68961ff8e2ab6a81ce0a703c9a3764 + md5: 9acc1c385be401d533ff70ef5b50dae6 + depends: + - python >=3.10 + - traitlets + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/matplotlib-inline?source=hash-mapping + run_exports: {} + size: 15725 + timestamp: 1778264403247 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda sha256: d09c47c2cf456de5c09fa66d2c3c5035aa1fa228a1983a433c47b876aa16ce90 md5: 37293a85a0f4f77bbd9cf7aaefc62609 @@ -3684,6 +4626,51 @@ packages: - pkg:pypi/natsort?source=hash-mapping size: 39002 timestamp: 1733880463101 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.11.0-pyhd8ed1ab_0.conda + sha256: eceb424236fbbb9b337a857fe5448307b57a2a3fb2db389ae37e7a8b8cdca2ab + md5: cf01a81d7960ad9c829bf2e794fcee9a + depends: + - jupyter_client >=7.0.0 + - jupyter_core >=5.4 + - nbformat >=5.2.0 + - python >=3.10 + - traitlets >=5.13 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbclient?source=hash-mapping + run_exports: {} + size: 29138 + timestamp: 1780661039538 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea + depends: + - jsonschema >=2.6 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-fastjsonschema >=2.15 + - traitlets >=5.1 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/nbformat?source=hash-mapping + run_exports: {} + size: 100945 + timestamp: 1733402844974 +- conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio2-1.7.2-pyhcf101f3_0.conda + sha256: e6768ceef038f4d7e083de7e393f5dd7d672b937e2bda570b740f6399b686689 + md5: fcd832bfd4749e9b246112b6894f97fc + depends: + - python >=3.10 + - python + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/nest-asyncio2?source=hash-mapping + run_exports: {} + size: 15903 + timestamp: 1770973502283 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 md5: 58335b26c38bf4a20f399384c33cbcf9 @@ -3696,6 +4683,40 @@ packages: - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 +- conda: https://conda.anaconda.org/conda-forge/noarch/papermill-2.7.0-pyhd8ed1ab_0.conda + sha256: 1dee69f82a292bd6f621671fa810a71f5fc095d91462b07dbf81e58fa28060f1 + md5: ca833247b8b88d1d15eb57d031467795 + depends: + - aiohttp >=3.9 + - click + - entrypoints + - nbclient >=0.2.0 + - nbformat >=5.2.0 + - python >=3.10 + - pyyaml + - requests + - tenacity >=5.0.2 + - tqdm >=4.32.2 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/papermill?source=hash-mapping + run_exports: {} + size: 70899 + timestamp: 1772338022272 +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.7-pyhcf101f3_0.conda + sha256: 611882f7944b467281c46644ffde6c5145d1a7730388bcde26e7e86819b0998e + md5: 39894c952938276405a1bd30e4ce2caf + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/parso?source=hash-mapping + run_exports: {} + size: 82472 + timestamp: 1777722955579 - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda sha256: ab52916f056b435757d46d4ce0a93fd73af47df9c11fd72b74cc4b7e1caca563 md5: ee23fabfd0a8c6b8d6f3729b47b2859d @@ -3708,6 +4729,30 @@ packages: - pkg:pypi/patsy?source=hash-mapping size: 186594 timestamp: 1733792482894 +- conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea + depends: + - ptyprocess >=0.5 + - python >=3.9 + license: ISC + purls: + - pkg:pypi/pexpect?source=hash-mapping + run_exports: {} + size: 53561 + timestamp: 1733302019362 +- conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pickleshare?source=hash-mapping + run_exports: {} + size: 11748 + timestamp: 1733327448200 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.1.1-pyh8b19718_0.conda sha256: ebfa591d39092b111b9ebb3210eb42251be6da89e26c823ee03e5e838655a43e md5: 32d0781ace05105cc99af55d36cbec7c @@ -3721,6 +4766,69 @@ packages: - pkg:pypi/pip?source=hash-mapping size: 1242995 timestamp: 1746249983238 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.11.0-pyhcf101f3_0.conda + sha256: a4b8c7d3b3703d10f93187986d59aec09b22033978945845899beb7f849a7be6 + md5: 1fadaa6dd1d03d062075f84157ac2cc7 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + run_exports: {} + size: 26632 + timestamp: 1784661349391 +- conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.53-pyha770c72_0.conda + sha256: efe8def2c93aa34cd8d3c9af1dc4c7d312791cf769d8b2b615e32733e6df6051 + md5: 39c92a39517316e5001d645ae63d9ab9 + depends: + - python >=3.10 + - wcwidth + constrains: + - prompt_toolkit 3.0.53 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/prompt-toolkit?source=hash-mapping + run_exports: {} + size: 276081 + timestamp: 1785160613307 +- conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/ptyprocess?source=hash-mapping + run_exports: {} + size: 19457 + timestamp: 1733302371990 +- conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pure-eval?source=hash-mapping + run_exports: {} + size: 16668 + timestamp: 1733569518868 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.20.0-pyhd8ed1ab_0.conda + sha256: cf70b2f5ad9ae472b71235e5c8a736c9316df3705746de419b59d442e8348e86 + md5: 16c18772b340887160c79a6acc022db0 + depends: + - python >=3.10 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/pygments?source=hash-mapping + run_exports: {} + size: 893031 + timestamp: 1774796815820 - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda sha256: b92afb79b52fcf395fd220b29e0dd3297610f2059afac45298d44e00fcbf23b6 md5: 513d3c262ee49b54a8fec85c5bc99764 @@ -3732,6 +4840,33 @@ packages: - pkg:pypi/pyparsing?source=hash-mapping size: 95988 timestamp: 1743089832359 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda + sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca + md5: e2fd202833c4a981ce8a65974fe4abd1 + depends: + - __win + - python >=3.9 + - win_inet_pton + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + run_exports: {} + size: 21784 + timestamp: 1733217448189 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + run_exports: {} + size: 21085 + timestamp: 1733217331982 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -3744,6 +4879,19 @@ packages: - pkg:pypi/python-dateutil?source=hash-mapping size: 222505 timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.22.1-pyhcf101f3_0.conda + sha256: 2243b305387413fa716827dce44011ea121be002e7ec24404ba00651db0279cd + md5: d066c36f0c7658ef422c60d598ea8495 + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fastjsonschema?source=hash-mapping + run_exports: {} + size: 252180 + timestamp: 1785242896823 - conda: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.21-pyhbacfb6d_0.conda sha256: b0139f80dea17136451975e4c0fefb5c86893d8b7bc6360626e8b025b8d8003a md5: 606d94da4566aa177df7615d68b29176 @@ -3775,7 +4923,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=compressed-mapping + - pkg:pypi/tzdata?source=hash-mapping run_exports: {} size: 146862 timestamp: 1783704822814 @@ -3791,19 +4939,54 @@ packages: run_exports: {} size: 7003 timestamp: 1752805919375 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.2-pyhcf101f3_0.conda - sha256: 5020863d629f584b5c057333a67a7aed43e3ed013ba15dd70f353501ccb5aff6 - md5: 03cb60f505ad3ada0a95277af5faeb1a +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2026.3.post1-pyhcf101f3_0.conda + sha256: ad774abda71c759baef515983bfedbba34d56d6227974c23715c04612f812a90 + md5: eb2fb9070c0232e96ae5515d8b28e4f9 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + run_exports: {} + size: 201126 + timestamp: 1785077087428 +- conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda + sha256: 0577eedfb347ff94d0f2fa6c052c502989b028216996b45c7f21236f25864414 + md5: 870293df500ca7e18bedefa5838a22ab depends: + - attrs >=22.2.0 - python >=3.10 + - rpds-py >=0.7.0 + - typing_extensions >=4.4.0 - python license: MIT license_family: MIT purls: - - pkg:pypi/pytz?source=hash-mapping + - pkg:pypi/referencing?source=hash-mapping + run_exports: {} + size: 51788 + timestamp: 1760379115194 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.34.2-pyhcf101f3_0.conda + sha256: 1715246b19c9f85ee022933b4845f2fc14ac9184981b7b7d9b728bec8e9588da + md5: 4a85203c1d80c1059086ae860836ffb9 + depends: + - python >=3.10 + - certifi >=2023.5.7 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - urllib3 >=1.26,<3 + - python + constrains: + - chardet >=3.0.2,<8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping run_exports: {} - size: 201747 - timestamp: 1777892201250 + size: 68709 + timestamp: 1778851103479 - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda noarch: python sha256: ea29a69b14dd6be5cdeeaa551bf50d78cafeaf0351e271e358f9b820fcab4cb0 @@ -3855,6 +5038,80 @@ packages: - pkg:pypi/six?source=hash-mapping size: 16385 timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc + depends: + - asttokens + - executing + - pure_eval + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/stack-data?source=hash-mapping + run_exports: {} + size: 26988 + timestamp: 1733569565672 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + sha256: 32e75900d6a094ffe4290a8c9f1fa15744d9da8ff617aba4acaa0f057a065c34 + md5: 043f0599dc8aa023369deacdb5ac24eb + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tenacity?source=hash-mapping + run_exports: {} + size: 31404 + timestamp: 1770510172846 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyh8f84b5b_0.conda + sha256: a4d9e9da15b13f1ab047e7db412e2ed564bc615832e80213cf129b973c3abf4a + md5: 00953c3b729e03b0ae21f49fdf3441bb + depends: + - python >=3.10 + - __unix + - python + constrains: + - envwrap >=0.2 + - ipywidgets >=6.0 + license: MPL-2.0 and MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + run_exports: {} + size: 98184 + timestamp: 1785172528905 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.70.0-pyha7b4d00_0.conda + sha256: 669cd06a4c7c1139f9c6b9850d16d71c1b4ce42375806976a03dba824283fef0 + md5: 7eac270516c8221cedc7f40a96d7fb8f + depends: + - python >=3.10 + - colorama + - __win + - python + constrains: + - envwrap >=0.2 + - ipywidgets >=6.0 + license: MPL-2.0 and MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + run_exports: {} + size: 97602 + timestamp: 1785172567718 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.16.1-pyhcf101f3_0.conda + sha256: 03dba5917f944c6684ab44c81daacac1624cd148e4b2cae215dcec594a210c48 + md5: a79bf97561232a31447b6246c2153ab5 + depends: + - python >=3.10 + - python + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + run_exports: {} + size: 116935 + timestamp: 1785761789772 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda sha256: 8561db52f278c5716b436da6d4ee5521712a49e8f3c70fcae5350f5ebb4be41c md5: 2adcd9bb86f656d3d43bf84af59a1faf @@ -3874,6 +5131,34 @@ packages: purls: [] size: 122968 timestamp: 1742727099393 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.7.0-pyhd8ed1ab_0.conda + sha256: feff959a816f7988a0893201aa9727bbb7ee1e9cec2c4f0428269b489eb93fb4 + md5: cbb88288f74dbe6ada1c6c7d0a97223e + depends: + - backports.zstd >=1.0.0 + - brotli-python >=1.2.0 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + run_exports: {} + size: 103560 + timestamp: 1778188657149 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.8.2-pyhd8ed1ab_0.conda + sha256: 4acf845da404e84cef1acccc66cc0156af1b83a5b5d7077b2ca19b705c561e57 + md5: 99f7755ec8648a042b0dbe906234f888 + depends: + - python >=3.10 + license: MIT + license_family: MIT + purls: + - pkg:pypi/wcwidth?source=hash-mapping + run_exports: {} + size: 132415 + timestamp: 1782771807703 - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce md5: 75cb7132eb58d97896e173ef12ac9986 @@ -3885,6 +5170,18 @@ packages: - pkg:pypi/wheel?source=hash-mapping size: 62931 timestamp: 1733130309598 +- conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f + md5: 46e441ba871f524e2b067929da3051c2 + depends: + - __win + - python >=3.9 + license: LicenseRef-Public-Domain + purls: + - pkg:pypi/win-inet-pton?source=hash-mapping + run_exports: {} + size: 9555 + timestamp: 1733130678956 - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda build_number: 7 sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 @@ -3899,6 +5196,28 @@ packages: - _openmp_mutex >=4.5 size: 8328 timestamp: 1764092562779 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.14.3-py311ha95a472_0.conda + sha256: 27142959297fa753cf1573fcd413fc67ee5b59fb144e20e26806c065ea177dd1 + md5: 7dc24cf4cda7bf58d7c860264db23cd3 + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.5.0 + - aiosignal >=1.4.0 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.4 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + run_exports: {} + size: 1059746 + timestamp: 1784900889461 - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda sha256: a5972a943764e46478c966b26be61de70dcd7d0cfda4bd0b0c46916ae32e0492 md5: d9684247c943d492d9aac8687bc5db77 @@ -3914,41 +5233,41 @@ packages: purls: [] size: 349989 timestamp: 1713896423623 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.4-h74cc20c_1.conda - sha256: 56846d6b434760638a29c85820168d6610d25c99c4ea108137159f03190450b6 - md5: 18131f87315828ee7c59c122928c8171 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.10.4-h5ab99e9_2.conda + sha256: 07a731e4519a8c320a60bf812b466df0ae9c1a97a149a1e9b1d5ea997b57303e + md5: 853dda50f68289e81bfb135b194f1447 depends: - __osx >=11.0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-auth >=0.10.4,<0.10.5.0a0 - size: 121221 - timestamp: 1784086913393 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.14-h1727fe8_4.conda - sha256: 36e4f9145f765bfa61f4386a4d427dadd45e22d286e35ed37f5fde2eea0e4b43 - md5: 106be1237886fd588822c23606cbd887 + size: 121275 + timestamp: 1785199116623 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.15-h7d2f8e2_1.conda + sha256: d0a8a515639ce6e3bfa7b29d2921de0f362b0fa3c4305a23b6a196247b5908c4 + md5: 1e013933179bcede7440a83a916b37eb depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: Apache purls: [] run_exports: weak: - - aws-c-cal >=0.9.14,<0.9.15.0a0 - size: 45858 - timestamp: 1784043675469 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.14.2-ha1e9b39_0.conda - sha256: 37bef4a6aed4eb93cf6aeaa09cbc68d47114bd66b486c3c56dae50a69ed19ab9 - md5: 9f812d600ba91086ba2353eae34d799b + - aws-c-cal >=0.9.15,<0.9.16.0a0 + size: 45803 + timestamp: 1785158034396 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.14.3-ha1e9b39_0.conda + sha256: 113ebe68d22295ac1523a5158561e967bb2e60035361b1931e58c4467cd9c558 + md5: 160570ea10f0fcad555f5822bc66069d depends: - __osx >=11.0 license: Apache-2.0 @@ -3956,128 +5275,165 @@ packages: purls: [] run_exports: weak: - - aws-c-common >=0.14.2,<0.14.3.0a0 - size: 234833 - timestamp: 1783637794124 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-h83f6fd2_4.conda - sha256: d5760e38458ceafaf72bfe8f7aca23a0ecad51e309801baea7ce45f5aff80368 - md5: bfcfa7d203467598ce19634bff4981a5 + - aws-c-common >=0.14.3,<0.14.4.0a0 + size: 234973 + timestamp: 1784596579282 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.2-hdead95b_5.conda + sha256: 2a6448b7cb745faba0c51406add9be4ac18f57e3442c1ca2d3e23f6374ae983b + md5: e7a158a00b324b5575e34f75000e716d depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-compression >=0.3.2,<0.3.3.0a0 - size: 21769 - timestamp: 1784042984182 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.11.0-h6a26125_4.conda - sha256: abcbb9d830ce3d0b4480ef1ae936979122ab709f6be97f893c8e3cb422b3647d - md5: a679cea821a19e753b0c79c6bfa45523 + size: 21780 + timestamp: 1785157651633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.11.0-hb6f97e7_5.conda + sha256: a803a1bacf5cf6fb094a78038cc21952e0b304225f4d1b161463230a69253e17 + md5: e495116bd47ca402293c3a92ddae6b1f depends: - __osx >=11.0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 - aws-c-compression >=0.3.2,<0.3.3.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-http >=0.11.0,<0.11.1.0a0 - size: 197433 - timestamp: 1784075811483 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.27.3-h1fab602_1.conda - sha256: 72260e69429e88b342dcf30a2380d8a6dc3a1e0191c2a7090df67f0c7696ae49 - md5: eb10212c8be3f27dcfe099a698e27072 + size: 197466 + timestamp: 1785186203340 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.27.5-h82e2481_1.conda + sha256: 7c685183232e5aae0e93b0e6b441c40580d17f145b464ad233e2da5745c337b6 + md5: e7e5d84de1897187c723c0ee40c61095 depends: - __osx >=11.0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - s2n >=1.7.5,<1.7.6.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - s2n >=1.7.6,<1.7.7.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-io >=0.27.3,<0.27.4.0a0 - size: 196501 - timestamp: 1784054877712 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.12.8-h4da758a_1.conda - sha256: 49aa34dd1b880402ef7d11664b353e9267a3031c79096051625c289a9916fb52 - md5: 86dc3e1445c8f4c8417fde3ece6a8a7a + - aws-c-io >=0.27.5,<0.27.6.0a0 + size: 197228 + timestamp: 1785170130359 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.13.1-h9d6a30e_1.conda + sha256: 37cf190043e079e9877709b15bba287e73927a58523d57d5c64356d48530df32 + md5: a3246d8a75d8ac2c0a4a762e965df760 depends: - __osx >=11.0 - - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 - aws-c-auth >=0.10.4,<0.10.5.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 - aws-checksums >=0.2.10,<0.2.11.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-s3 >=0.12.8,<0.12.9.0a0 - size: 137996 - timestamp: 1784101035733 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.7-h83f6fd2_2.conda - sha256: ce54f799f74f797b4d79b73c0447308d0d2778a86a7809de55acb782f7bf6809 - md5: 4dea846b1c0bfedf4839d28fd1b98cbf + - aws-c-s3 >=0.13.1,<0.13.2.0a0 + size: 139152 + timestamp: 1785351367020 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.7-hdead95b_3.conda + sha256: 8beae1960d90ac191c9f2ade7ec6e23bc659455554a0c54788fba5b57bf9d451 + md5: c6a1a589ad9c492f7ada48a8e112bbad depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - size: 63521 - timestamp: 1784044388701 -- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-h83f6fd2_4.conda - sha256: e687c81b134e3727aa6bd9239dbd50e5aa3dd630ebb37e00b88f030817508e82 - md5: 7d45f5ee8fe94dea250c288233428f05 + size: 63507 + timestamp: 1785159291713 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.10-hdead95b_5.conda + sha256: 347c57d0551ecd7af9f86e3a43fbca24e8928107c54a5672144a8fafbabd810f + md5: a1badd0a78f70728116e882f39b3bb03 depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-checksums >=0.2.10,<0.2.11.0a0 - size: 95908 - timestamp: 1784044333396 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h6e16a3a_3.conda - sha256: cd44fe22eeb1dec1ec52402f149faebb5f304f39bf59d97eb56f4c0f41e051d8 - md5: 44903b29bc866576c42d5c0a25e76569 + size: 95899 + timestamp: 1785159322487 +- conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.6.0-py311h1fd9c89_0.conda + sha256: f047f1a3923671c1b8259212f4b4e9b8f1a8b073a42e190ff6c3147734555ca2 + md5: cde959614b759c2e293bd5c9eea4b3d3 + depends: + - python + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + run_exports: {} + size: 246956 + timestamp: 1781450872547 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda + sha256: c838c71ded28ada251589f6462fc0f7c09132396799eea2701277566a1a863bf + md5: 149d8ee7d6541a02a6117d8814fd9413 depends: - __osx >=10.13 - - brotli-bin 1.1.0 h6e16a3a_3 - - libbrotlidec 1.1.0 h6e16a3a_3 - - libbrotlienc 1.1.0 h6e16a3a_3 + - brotli-bin 1.2.0 h8616949_1 + - libbrotlidec 1.2.0 h8616949_1 + - libbrotlienc 1.2.0 h8616949_1 license: MIT license_family: MIT purls: [] - size: 19997 - timestamp: 1749230354697 -- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h6e16a3a_3.conda - sha256: 52c29e70723387e9b4265b45ee1ae5ecb2db7bcffa58cdaa22fe24b56b0505bf - md5: a240d09be7c84cb1d33535ebd36fe422 + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 20194 + timestamp: 1764017661405 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda + sha256: dcb5a2b29244b82af2545efad13dfdf8dddb86f88ce64ff415be9e7a10cc0383 + md5: 34803b20dfec7af32ba675c5ccdbedbf depends: - __osx >=10.13 - - libbrotlidec 1.1.0 h6e16a3a_3 - - libbrotlienc 1.1.0 h6e16a3a_3 + - libbrotlidec 1.2.0 h8616949_1 + - libbrotlienc 1.2.0 h8616949_1 license: MIT license_family: MIT purls: [] - size: 17239 - timestamp: 1749230337410 + run_exports: {} + size: 18589 + timestamp: 1764017635544 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py311h7e844b6_1.conda + sha256: 292026d98fd60bb25852792e2fd6ee97be35515057cfe258416ea6e1998e3564 + md5: ae49e04114f7f1673920fdbf326a047f + depends: + - __osx >=10.13 + - libcxx >=19 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.2.0 h8616949_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 389997 + timestamp: 1764017848151 - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 md5: 7ed4301d437b59045be7e051a0308211 @@ -4101,29 +5457,25 @@ packages: - c-ares >=1.34.8,<2.0a0 size: 188777 timestamp: 1784091418806 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda - sha256: 88e7e1efb6a0f6b1477e617338e0ed3d27d4572a3283f8341ce6143b7118e31a - md5: 9917add2ab43df894b9bb6f5bf485975 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda + sha256: d4297c3a9bcff9add3c5a46c6e793b88567354828bcfdb6fc9f6b1ab34aa4913 + md5: 32403b4ef529a2018e4d8c4f2a719f16 depends: - __osx >=10.13 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - icu >=78.1,<79.0a0 - - libcxx >=19 - - libexpat >=2.7.3,<3.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - libglib >=2.86.3,<3.0a0 - - libpng >=1.6.53,<1.7.0a0 + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.46.4,<1.0a0 + - pixman >=0.44.2,<1.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - run_exports: - weak: - - cairo >=1.18.4,<2.0a0 - size: 896676 - timestamp: 1766416262450 + size: 893252 + timestamp: 1741554808521 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py311h9d13916_4.conda sha256: 4990e8c2418f07b787d764aee3171df4a1c7681050d00e10b4433eed3b997e9d md5: 12f0c1059f868ede7bd3394a1959ae0f @@ -4140,6 +5492,21 @@ packages: run_exports: {} size: 296923 timestamp: 1769156062903 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.21-py311hc3ea09e_0.conda + sha256: e64eee6cdfcd3c6ce2fc2f04244ea70a144b9cbdde8ff40c05eefff61e6686a9 + md5: 08e0b0baab92a971f491965dbc6ea4d3 + depends: + - python + - libcxx >=19 + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + run_exports: {} + size: 2678681 + timestamp: 1780390210234 - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h5eb16cf_1.tar.bz2 sha256: 0e344e8490237565a5685736421e06b47a1b46dee7151c0973dd48130f8e583a md5: 721a46794b9ad1301115068189acb750 @@ -4148,25 +5515,19 @@ packages: purls: [] size: 342235 timestamp: 1648505306288 -- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.18.1-h7a4440b_0.conda - sha256: 134aed823beae85798607e32b78aa1368afbfbea145a43c974d88269f1013287 - md5: 17925ae2a399d859c0b978934df591e3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + sha256: 61a9aa1d2dd115ffc1ab372966dc8b1ac7b69870e6b1744641da276b31ea5c0b + md5: 84ccec5ee37eb03dd352db0a3f89ada3 depends: - - __osx >=11.0 - - libexpat >=2.8.1,<3.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libintl >=0.25.1,<1.0a0 - - libzlib >=1.3.2,<2.0a0 + - __osx >=10.13 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - fontconfig >=2.18.1,<3.0a0 - - fonts-conda-ecosystem - size: 247884 - timestamp: 1780450811484 + size: 232313 + timestamp: 1730283983397 - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.63.0-py311ha8ae342_0.conda sha256: c2639b42d3053ebb001a55711896e5abafa5d007d7443d3cfed48f685d2b2ab1 md5: 4112a45453836123e6448c77adcb3ce4 @@ -4184,78 +5545,77 @@ packages: run_exports: {} size: 2989716 timestamp: 1778770848075 -- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.3-h694c41f_1.conda - sha256: c67130a919d3c7733fce056cc2ce8cec2935e295547d5d70bcbf35e4351d543b - md5: 48fc845b770770e9c7db8743f6d53d44 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda + sha256: e2870e983889eec73fdc0d4ab27d3f6501de4750ffe32d7d0a3a287f00bc2f15 + md5: 126dba1baf5030cb6f34533718924577 depends: - - libfreetype 2.14.3 h694c41f_1 - - libfreetype6 2.14.3 h58fbd8d_1 + - libfreetype 2.13.3 h694c41f_1 + - libfreetype6 2.13.3 h40dfd5c_1 license: GPL-2.0-only OR FTL purls: [] - run_exports: - weak: - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - size: 174300 - timestamp: 1780934162319 -- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda - sha256: 53dd0a6c561cf31038633aaa0d52be05da1f24e86947f06c4e324606c72c7413 - md5: 4422491d30462506b9f2d554ab55e33d - depends: - - __osx >=10.13 - license: LGPL-2.1-or-later + size: 172649 + timestamp: 1745370231293 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 + md5: f1c6b41e0f56998ecd9a3e210faa1dc0 + license: LGPL-2.1 purls: [] - run_exports: - weak: - - fribidi >=1.0.16,<2.0a0 - size: 60923 - timestamp: 1757438791418 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.7-hae309b2_0.conda - sha256: b936e714e8b449ea1fe3f9773392794795b3c3142666d56806ee3c4c9e8f70e4 - md5: 4b55a5953b14e83c7a52d864ddfac733 + size: 65388 + timestamp: 1604417213000 +- conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.8.0-py311ha09d3ca_0.conda + sha256: e944858b369b90d4f262471ed9bd9e4a23f5f62fe59d2dab89152d1def6d0f54 + md5: eb2165c2c36bb77df65cc77ff2f98cf8 depends: - __osx >=11.0 - - libglib >=2.88.2,<3.0a0 - - libintl >=0.25.1,<1.0a0 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - liblzma >=5.8.3,<6.0a0 - - libpng >=1.6.58,<1.7.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - libcxx >=19 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + run_exports: {} + size: 50913 + timestamp: 1780000106588 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 + md5: ee186d2e8db4605030753dc05025d4a0 + depends: + - __osx >=10.13 + - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gdk-pixbuf >=2.44.7,<3.0a0 - size: 556945 - timestamp: 1782591683373 -- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.88.2-h04fd18e_0.conda - sha256: c4597ef24234e00fc9459f5b3a6ae3fc0ae0087a7d4801ad7c1f1bb27265bb5b - md5: 49adcd2aa24e9af0cdf38e9f180f7a35 + size: 516815 + timestamp: 1715783154558 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.88.3-h943dd1b_0.conda + sha256: 51fc4460ab029f5181b5d9649419701f5697f4a3e603ebb401ec188b0f72289a + md5: 09c33ab3cbb697171101a5523e77fa5a depends: - - libglib ==2.88.2 hf28f236_0 + - libglib ==2.88.3 hf28f236_0 - libffi - __osx >=11.0 - libintl >=0.25.1,<1.0a0 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 216041 - timestamp: 1782464244345 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.15-hcc62823_0.conda - sha256: aaebae3c0e713579e52de6fd4eec54a172e28c7f90d90da4583e91b1634a7fee - md5: 6a0525cf3166f16b9e156fb6b2cac5c0 + size: 216295 + timestamp: 1785442281968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h240833e_0.conda + sha256: 13d802efe1fcadc171a1e0f87b99accef290cd0190af5d25cb46acd5f111104a + md5: 4b0af0e3ba3b3bb8e28d009a8ed1ab35 depends: - - __osx >=11.0 - - libcxx >=19 + - __osx >=10.13 + - libcxx >=18 license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - graphite2 >=1.3.15,<2.0a0 - size: 85964 - timestamp: 1780454502704 + size: 85046 + timestamp: 1750080155200 - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-13.0.1-hf067352_0.conda sha256: dedead96a7ebb3737fdf97783eb1d2fd37b9642ba64d8187141a9ecef39dc6c0 md5: 0a91d29394bcf10dbbbee52369a589a8 @@ -4280,36 +5640,30 @@ packages: purls: [] size: 2285459 timestamp: 1750087377642 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.52-hf2d442a_0.conda - sha256: c69a03b1eec71c0a764658d67f81eaf9a316276ae900b107cd8d77766bc13cf8 - md5: 76be17e448c23c6d1c99a56c15b15925 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h70b172e_5.conda + sha256: 4f1be786342408492578dc696165ed3515bb1c4887c30e0909e50d0f8245fb38 + md5: 38eeb48f9466e5763567d1be1b7ff444 depends: - - __osx >=11.0 + - __osx >=10.13 - atk-1.0 >=2.38.0 - cairo >=1.18.4,<2.0a0 - epoxy >=1.5.10,<1.6.0a0 - - fribidi >=1.0.16,<2.0a0 - - gdk-pixbuf >=2.44.5,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 - glib-tools - - harfbuzz >=13.2.1 + - harfbuzz >=11.0.0,<12.0a0 - hicolor-icon-theme - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libglib >=2.86.4,<3.0a0 - - libintl >=0.25.1,<1.0a0 - - liblzma >=5.8.2,<6.0a0 - - libzlib >=1.3.2,<2.0a0 - - pango >=1.56.4,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libintl >=0.23.1,<1.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + - pango >=1.56.3,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL purls: [] - run_exports: - weak: - - gtk3 >=3.24.52,<4.0a0 - - adwaita-icon-theme - size: 5269457 - timestamp: 1774289309822 + size: 4916900 + timestamp: 1743405835449 - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 md5: 848cc963fcfbd063c7a023024aa3bec0 @@ -4338,35 +5692,42 @@ packages: run_exports: {} size: 1196742 timestamp: 1775581895921 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-14.2.1-h694c41f_1.conda - sha256: 41949302a347146509cf3734123753b508abc5518b4e4285b2977039ede6db43 - md5: f1d02a13025478e3eb3863d6c2c74f46 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + sha256: ed21d2e7ebe6f77154b7b851dfd0c9e5d4b8c590badb54ca4094cee1cf9ad470 + md5: ecd1e793e20518bf438a0d5070465ecb depends: - - libharfbuzz-devel 14.2.1 h97ceea7_1 + - __osx >=10.13 + - cairo >=1.18.4,<2.0a0 + - freetype + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libharfbuzz >=14.2.1 - size: 11032 - timestamp: 1782801135854 -- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_hd281e0f_110.conda - sha256: dcf557b47361bfabdf5eb7acb46b1f471dd25014e471de00e94335307411de06 - md5: 82f948b13427715de916f66cd61cfec7 + size: 1470019 + timestamp: 1747091292339 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-2.1.0-nompi_h6160fcd_111.conda + sha256: 8fb90f00978a97f3f765f4e98db3ef6146cb934188e8b3d97b7faff7d79267a3 + md5: 0b7c708e98a8f8cdcf53746342bbc214 depends: - __osx >=11.0 - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-s3 >=0.12.8,<0.12.9.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - libaec >=1.1.5,<2.0a0 - libcurl >=8.21.0,<9.0a0 - libcxx >=19 - libgfortran - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.4.0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 license: BSD-3-Clause @@ -4375,8 +5736,8 @@ packages: run_exports: weak: - hdf5 >=2.1.0,<3.0a0 - size: 4041107 - timestamp: 1784119675776 + size: 3669206 + timestamp: 1785701987026 - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 sha256: a5cb0c03d731bfb09b4262a3afdeae33bef98bc73972f1bd6b7e3fcd240bea41 md5: f64218f19d9a441e80343cea13be1afb @@ -4385,18 +5746,16 @@ packages: purls: [] size: 13821 timestamp: 1605162984889 -- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.3-h25d91c4_1.conda - sha256: 4f86ab2f24714449b334c216f0fce0178c4b3e5638f945485222f06fc001eb1e - md5: 65ebd0c04d798106af28231ce67525ec +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 depends: - - __osx >=11.0 + - __osx >=10.13 license: MIT + license_family: MIT purls: [] - run_exports: - weak: - - icu >=78.3,<79.0a0 - size: 12285884 - timestamp: 1784589053278 + size: 11761697 + timestamp: 1720853679409 - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.5.0-py311h2886188_0.conda sha256: a1ede405c8ad3ec2bb52e226507653329c52245fd61584dda28df52b3204b876 md5: 3a855eedf75caa9ac24240b1304fa058 @@ -4429,35 +5788,29 @@ packages: - krb5 >=1.22.2,<1.23.0a0 size: 1195956 timestamp: 1781860554632 -- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.19.1-h5ea7634_1.conda - sha256: 8bae1207dc7cf0e670ae920a549b1d55486514213ca808b8119067cbad0db43a - md5: f8c168eefc1f75ada2e2cd8f2e6212f5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda + sha256: bcb81543e49ff23e18dea79ef322ab44b8189fb11141b1af99d058503233a5fc + md5: bf210d0c63f2afb9e414a858b79f0eaa depends: - - __osx >=11.0 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - __osx >=10.13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - lcms2 >=2.19.1,<3.0a0 - size: 229477 - timestamp: 1780211969520 -- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.1.0-h35c7297_0.conda - sha256: f918716c71c8bebbc0c40e1050878aa512fea92c1d17c363ca35650bc60f6c35 - md5: d2fe7e177d1c97c985140bd54e2a5e33 + size: 226001 + timestamp: 1739161050843 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda + sha256: cc1f1d7c30aa29da4474ec84026ec1032a8df1d7ec93f4af3b98bb793d01184e + md5: 21f765ced1a0ef4070df53cb425e1967 depends: - - __osx >=11.0 - - libcxx >=19 + - __osx >=10.13 + - libcxx >=18 license: Apache-2.0 license_family: Apache purls: [] - run_exports: - weak: - - lerc >=4.1.0,<5.0a0 - size: 215089 - timestamp: 1773114468701 + size: 248882 + timestamp: 1745264331196 - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda sha256: b42ac9c684c730cb97cb3931a0a97aaf791da38bace4f6944eca10de609e5946 md5: 975f98248cde8d54884c6d1eb5184e13 @@ -4490,38 +5843,47 @@ packages: purls: [] size: 17571 timestamp: 1750389030403 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h6e16a3a_3.conda - sha256: 23952b1dc3cd8be168995da2d7cc719dac4f2ec5d478ba4c65801681da6f9f52 - md5: ec21ca03bcc08f89b7e88627ae787eaf +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda + sha256: 4c19b211b3095f541426d5a9abac63e96a5045e509b3d11d4f9482de53efe43b + md5: f157c098841474579569c85a60ece586 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 67817 - timestamp: 1749230267706 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h6e16a3a_3.conda - sha256: 499374a97637e4c6da0403ced7c9860d25305c6cb92c70dded738134c4973c67 - md5: 71d03e5e44801782faff90c455b3e69a + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + size: 78854 + timestamp: 1764017554982 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda + sha256: 729158be90ae655a4e0427fe4079767734af1f9b69ff58cf94ca6e8d4b3eb4b7 + md5: 63186ac7a8a24b3528b4b14f21c03f54 depends: - __osx >=10.13 - - libbrotlicommon 1.1.0 h6e16a3a_3 + - libbrotlicommon 1.2.0 h8616949_1 license: MIT license_family: MIT purls: [] - size: 30627 - timestamp: 1749230291245 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h6e16a3a_3.conda - sha256: e6d7a42fe87a23df03c482c885e428cc965d1628f18e5cee47575f6216c7fbc5 - md5: 94c0090989db51216f40558958a3dd40 + run_exports: + weak: + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 30835 + timestamp: 1764017584474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda + sha256: 8ece7b41b6548d6601ac2c2cd605cf2261268fc4443227cc284477ed23fbd401 + md5: 12a58fd3fc285ce20cf20edf21a0ff8f depends: - __osx >=10.13 - - libbrotlicommon 1.1.0 h6e16a3a_3 + - libbrotlicommon 1.2.0 h8616949_1 license: MIT license_family: MIT purls: [] - size: 295250 - timestamp: 1749230310752 + run_exports: + weak: + - libbrotlienc >=1.2.0,<1.3.0a0 + size: 310355 + timestamp: 1764017609985 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-32_hff6cab4_openblas.conda build_number: 32 sha256: 745f6dd420389809c333734df6edc99d75caa3633e4778158c7549c6844af440 @@ -4537,14 +5899,13 @@ packages: purls: [] size: 17574 timestamp: 1750389040732 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.21.0-h06afde3_2.conda - sha256: 1bebccfae840b14022b7f65e6fbc467bf7ab0ef82bbd34f52b19eb0996c1dde4 - md5: 38c8e5eae6090e0be9e2ed40e3fc4553 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.21.0-h8f0b9e4_1.conda + sha256: 33ba88482d9607db195d2b5920e29f4d2744a4780fbbfc47f2e58e4b59a5530c + md5: 83fdd27f6406225d15e4f44b5b45aa96 depends: - __osx >=11.0 - krb5 >=1.22.2,<1.23.0a0 - libnghttp2 >=1.68.1,<2.0a0 - - libpsl >=0.22.0,<0.23.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -4555,8 +5916,8 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 430795 - timestamp: 1782912686349 + size: 430084 + timestamp: 1782803235400 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.7-hf95d169_0.conda sha256: f6e088a2e0e702a4908d1fc9f1a17b080bdcf63e1f8a9cb35dd158fc1d1eb2f5 md5: 8b47ade37d4e75417b4e993179c09f5d @@ -4567,19 +5928,16 @@ packages: purls: [] size: 562573 timestamp: 1749846921724 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda - sha256: 025f8b1e85dd8254e0ca65f011919fb1753070eb507f03bca317871a884d24de - md5: 31aa65919a729dc48180893f62c25221 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda + sha256: 2733a4adf53daca1aa4f41fe901f0f8ee9e4c509abd23ffcd7660013772d6f45 + md5: f0a46c359722a3e84deb05cd4072d153 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - libdeflate >=1.25,<1.26.0a0 - size: 70840 - timestamp: 1761980008502 + size: 69751 + timestamp: 1747040526774 - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 md5: 1f4ed31220402fcddc083b4bff406868 @@ -4626,158 +5984,108 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 53583 timestamp: 1769456300951 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.3-h694c41f_1.conda - sha256: 9029ed0c940be8161c86f5338eacfad1f61af216cdc508e386a648f6ef893a28 - md5: 7cec36e11e7c5a674a1d8c1d5082479e +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda + sha256: afe0e2396844c8cfdd6256ac84cabc9af823b1727f704c137b030b85839537a6 + md5: 07c8d3fbbe907f32014b121834b36dd5 depends: - - libfreetype6 >=2.14.3 + - libfreetype6 >=2.13.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} - size: 8394 - timestamp: 1780934152050 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.3-h58fbd8d_1.conda - sha256: cc94862c51e68626fadddf68b523e5f752149186ccc498fa37976504e2e7ff55 - md5: 112cb22521fa3abf19bc0c93938576f5 + size: 7805 + timestamp: 1745370212559 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda + sha256: 058165962aa64fc5a6955593212c0e1ea42ca6d6dba60ee61dff612d4c3818d7 + md5: c76e6f421a0e95c282142f820835e186 depends: - - __osx >=11.0 - - libpng >=1.6.58,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 + - __osx >=10.13 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 constrains: - - freetype >=2.14.3 + - freetype >=2.13.3 license: GPL-2.0-only OR FTL purls: [] - run_exports: {} - size: 365107 - timestamp: 1780934149073 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_19.conda - sha256: 17a5dcd818f89173db51d7d1acd77615cb77db7b4c2b5f571d4dafe559430ab5 - md5: 4bf33d5ca73f4b89d3495285a42414a4 + size: 357654 + timestamp: 1745370210187 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-16.1.0-h13771c8_1.conda + sha256: 9d36dbe759160f7f0e50753d63f956e9c8bce8d19c667285afda32f49e7eb256 + md5: 8740e0ab12141e4b6d69877c552b06d2 depends: - _openmp_mutex constrains: - - libgomp 15.2.0 19 - - libgcc-ng ==15.2.0=*_19 + - libgcc-ng ==16.1.0=*_1 + - libgomp 16.1.0 1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 424164 - timestamp: 1778271183296 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda - sha256: bf7b0c25b6cca5808f4da46c5c363fa1192088b0b46efb730af43f28d52b8f04 - md5: e12673b408d1eb708adb3ecc2f621d78 + size: 389139 + timestamp: 1785378471977 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda + sha256: af8ca696b229236e4a692220a26421a4f3d28a6ceff16723cd1fe12bc7e6517c + md5: 0eea404372aa41cf95e71c604534b2a2 depends: - __osx >=10.13 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - icu >=78.1,<79.0a0 - - libexpat >=2.7.3,<3.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 - - libiconv >=1.18,<2.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - libpng >=1.6.53,<1.7.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - libwebp-base >=1.6.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libiconv >=1.17,<2.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: GD license_family: BSD purls: [] - run_exports: - weak: - - libgd >=2.3.3,<2.4.0a0 - size: 163145 - timestamp: 1766332198196 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_19.conda - sha256: 519045363b87b870be779d38f0bfd325d4b787acdaa0a2136a92c1081eff5112 - md5: d362f41203d0a1d2d4940446f95374c9 + size: 162601 + timestamp: 1737548422107 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-16.1.0-h7e5c614_1.conda + sha256: a34b6224081d6a34cb06cae813f6fe06ce5d1d5b9049e4f172b5f684a81c1978 + md5: 0fcefb3d06bd72bd61435fd2fae351b6 depends: - - libgfortran5 15.2.0 hd16e46c_19 + - libgfortran5 16.1.0 h70d9f54_1 constrains: - - libgfortran-ng ==15.2.0=*_19 + - libgfortran-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 139925 - timestamp: 1778271458366 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_19.conda - sha256: c7f5f6e80357d6d5bc69588c16144205b0c79cf32cd090ccb5afef9d557632af - md5: 1cddb3f7e54f5871297afc0fafa61c2c + size: 98568 + timestamp: 1785378652809 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-16.1.0-h70d9f54_1.conda + sha256: 66404e44a45fdc6eb56116b82bda2b44a812fbea30a55be8991dfdef6046c59d + md5: dcd171b89443b4302929ea8081a32fc9 depends: - - libgcc >=15.2.0 + - libgcc >=16.1.0 constrains: - - libgfortran 15.2.0 + - libgfortran 16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 1063687 - timestamp: 1778271196574 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.2-hf28f236_0.conda - sha256: 445e6806480103c6411993e7c2fd5ad1c6cb14ef1fee9386b44adeb536834d07 - md5: 6ed62b59574adb4c9629ed6932a51de7 + size: 1032731 + timestamp: 1785378481811 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.88.3-hf28f236_0.conda + sha256: d96a09c72560c891aa1d7b35b3831a6373be6bcdbbb6617e49e9fac3dc9c4167 + md5: fd719d253c06af47156dc04d985d788b depends: - __osx >=11.0 - - libiconv >=1.18,<2.0a0 - libzlib >=1.3.2,<2.0a0 - - libintl >=0.25.1,<1.0a0 - - pcre2 >=10.47,<10.48.0a0 - libffi >=3.5.2,<3.6.0a0 + - pcre2 >=10.47,<10.48.0a0 + - libiconv >=1.18,<2.0a0 + - libintl >=0.25.1,<1.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4510929 - timestamp: 1782464244345 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libharfbuzz-14.2.1-h97ceea7_1.conda - sha256: 33ec741f9f4bfe132c03e18c2a5822a9ad850c8813fa1a40b94f1f4df8fcde58 - md5: eeb8ef2f2d2ba6d3ff5ba4e7fdf4b73c - depends: - - __osx >=11.0 - - cairo >=1.18.4,<2.0a0 - - graphite2 >=1.3.15,<2.0a0 - - icu >=78.3,<79.0a0 - - libcxx >=19 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libglib >=2.88.2,<3.0a0 - - libpng >=1.6.58,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 - license: MIT - license_family: MIT - purls: [] - run_exports: {} - size: 1013958 - timestamp: 1782801064703 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libharfbuzz-devel-14.2.1-h97ceea7_1.conda - sha256: 728387566192c8c57904256888edc71a95db68e3b07678046b39802d32a9ee3f - md5: 5c93ec50698ae52cb8701653b25cfcc4 - depends: - - __osx >=11.0 - - cairo >=1.18.4,<2.0a0 - - freetype - - graphite2 >=1.3.15,<2.0a0 - - icu >=78.3,<79.0a0 - - libcxx >=19 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 - - libglib >=2.88.2,<3.0a0 - - libharfbuzz 14.2.1 h97ceea7_1 - - libpng >=1.6.58,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - libharfbuzz >=14.2.1 - size: 1503179 - timestamp: 1782801123566 + - libglib >=2.88.3,<3.0a0 + size: 4521554 + timestamp: 1785442281968 - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda sha256: c2a9c65a245c7bcb8c17c94dd716dad2d42b7c98e0c17cc5553a5c60242c4dda md5: 6283140d7b2b55b6b095af939b71b13f @@ -4800,20 +6108,17 @@ packages: - libintl >=0.25.1,<1.0a0 size: 96909 timestamp: 1753343977382 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.2.0-ha1e9b39_0.conda - sha256: 5c48ea89073ba28eb93df264587973d3905827e5b536a5320604ae3baaa73e13 - md5: d86c1b9259377fb4dcd76fe7472bd2d2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.conda + sha256: 9c0009389c1439ec96a08e3bf7731ac6f0eab794e0a133096556a9ae10be9c27 + md5: 87537967e6de2f885a9fcebd42b7cb10 depends: - - __osx >=11.0 + - __osx >=10.13 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - run_exports: - weak: - - libjpeg-turbo >=3.2.0,<4.0a0 - size: 613600 - timestamp: 1783732260943 + size: 586456 + timestamp: 1745268522731 - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-32_h236ab99_openblas.conda build_number: 32 sha256: 1e26450b80525b3f656e9c75fd26a10ebaa1d339fe4ca9c7affbebd9acbeac03 @@ -4880,70 +6185,57 @@ packages: - libopenblas >=0.3.30,<1.0a0 size: 6268795 timestamp: 1763117623665 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.58-he930e7c_0.conda - sha256: a669b22978e546484d18d99a210801b1823360a266d7035c713d8d1facd035f7 - md5: 9744d43d5200f284260637304a069ddd +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.49-h3c4a55f_0.conda + sha256: 37be190992433d20336187b6fee4986cbdb11e9f901bc888aca5b2d7e5a2acc6 + md5: b9eabfc716af02b8d3ec5a51cb89b4a9 depends: - - __osx >=11.0 - - libzlib >=1.3.2,<2.0a0 + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement purls: [] - run_exports: - weak: - - libpng >=1.6.58,<1.7.0a0 - size: 299206 - timestamp: 1776315286816 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpsl-0.22.0-ha9fe4b0_1.conda - sha256: fe9e283a3b404b5c11429b15a9628003033f015a275985956528b74aae5e3e85 - md5: 372870287bccae5d1696e6f5533f4937 - depends: - - __osx >=11.0 - - icu >=78.3,<79.0a0 - - libcxx >=19 - license: MIT - license_family: MIT - purls: [] - run_exports: - weak: - - libpsl >=0.22.0,<0.23.0a0 - size: 68134 - timestamp: 1783937592205 -- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.62.3-h7321050_0.conda - sha256: 4e6ceb25dcc7b67d550e2b6ce98da585b49dd4590f21a709dd6ec626df3b8c19 - md5: 2d5f6b880486d5058c7eab0db04b1bc9 + size: 267502 + timestamp: 1750095826947 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda + sha256: 87432fca28ddfaaf82b3cd12ce4e31fcd963428d1f2c5e2a3aef35dd30e56b71 + md5: 213dcdb373bf108d1beb18d33075f51d depends: - - __osx >=11.0 + - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.18.0,<3.0a0 - - fonts-conda-ecosystem - - gdk-pixbuf >=2.44.6,<3.0a0 - - harfbuzz >=14.2.0 - - libglib >=2.88.1,<3.0a0 - - libxml2-16 >=2.14.6 - - pango >=1.56.4,<2.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 + - pango >=1.56.3,<2.0a0 constrains: - __osx >=10.13 license: LGPL-2.1-or-later purls: [] + size: 4946543 + timestamp: 1743368938616 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.22-ha3d0635_1.conda + sha256: 07f0f37463564d93530fc23e2a77cc1aad58ba8724b1842f8713dbf6cde17cb0 + md5: bf0ce6af8f7628e34cdb399f6aa82e53 + depends: + - __osx >=11.0 + license: ISC + purls: [] run_exports: weak: - - librsvg >=2.62.3,<3.0a0 - size: 2511802 - timestamp: 1780451204499 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.3-h8f8c405_0.conda - sha256: 84d4af77021ca28e02ff60f396575b921ed1747e459838daa0e73b4724b47953 - md5: 72d9eaef59342a3614c83d57a32f578b + - libsodium >=1.0.22,<1.0.23.0a0 + size: 281370 + timestamp: 1779164249823 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.53.4-h77d7759_0.conda + sha256: 5725d44a17d196adba9798a5fd9f692b7039a827cd6145556a072a80e1931c49 + md5: 993009426e1d3aa90eed155171bd59d8 depends: - __osx >=11.0 - - icu >=78.3,<79.0a0 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 1012648 - timestamp: 1782519619230 + - libsqlite >=3.53.4,<4.0a0 + size: 1008531 + timestamp: 1785016345740 - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 @@ -4956,41 +6248,35 @@ packages: purls: [] size: 284216 timestamp: 1745608575796 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.2-h95d6d7f_0.conda - sha256: 8e43d2a3538f45848c61cdda4baa6728ce0a48bc665b306de5a31dd3464a30c1 - md5: c92fd887c114aac4612bfc14b1516776 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + sha256: 517a34be9fc697aaf930218f6727a2eff7c38ee57b3b41fd7d1cc0d72aaac562 + md5: fc84af14a09e779f1d37ab1d16d5c4e2 depends: - - __osx >=11.0 - - lerc >=4.1.0,<5.0a0 - - libcxx >=19 - - libdeflate >=1.25,<1.26.0a0 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - liblzma >=5.8.3,<6.0a0 - - libwebp-base >=1.6.0,<2.0a0 - - libzlib >=1.3.2,<2.0a0 + - __osx >=10.13 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.24,<1.25.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - liblzma >=5.8.1,<6.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - run_exports: - weak: - - libtiff >=4.7.2,<4.8.0a0 - size: 418681 - timestamp: 1783085828393 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda - sha256: 00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391 - md5: 7bb6608cf1f83578587297a158a6630b + size: 400062 + timestamp: 1747067122967 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 + md5: 5e0cefc99a231ac46ba21e27ae44689f depends: - __osx >=10.13 constrains: - - libwebp 1.6.0 + - libwebp 1.5.0 license: BSD-3-Clause license_family: BSD purls: [] - run_exports: - weak: - - libwebp-base >=1.6.0,<2.0a0 - size: 365086 - timestamp: 1752159528504 + size: 357662 + timestamp: 1734777539822 - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 md5: bbeca862892e2898bdb45792a61c4afc @@ -5004,38 +6290,35 @@ packages: purls: [] size: 323770 timestamp: 1727278927545 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.3-h7a90416_0.conda - sha256: 437f003e299d77403db42d17e532d686236f357ac5c3d6bf466558c697902597 - md5: c74ae93cd7876e3a9c4b5569d5e29e34 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda + sha256: 4b29663164d7beb9a9066ddcb8578fc67fe0e9b40f7553ea6255cd6619d24205 + md5: e42a93a31cbc6826620144343d42f472 depends: - - __osx >=11.0 - - icu >=78.3,<79.0a0 + - __osx >=10.13 + - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.3,<6.0a0 - - libzlib >=1.3.2,<2.0a0 - constrains: - - libxml2 2.15.3 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - run_exports: {} - size: 496338 - timestamp: 1776377250079 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda - sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 - md5: 30439ff30578e504ee5e0b390afc8c65 + size: 609197 + timestamp: 1746634704204 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_3.conda + sha256: b2dba286dd6632292b12296e761193b5ef9fb0eaeecaa481f5ba9af72c0c18e1 + md5: 7d3fa28263bb7f8ea32db11f570a5bb6 depends: - __osx >=11.0 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 59000 - timestamp: 1774073052242 + size: 58993 + timestamp: 1785276808631 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.7-ha54dae1_0.conda sha256: 18d3b64965c1f5f7cd24a140b3e4f49191dd579cc8ca6d3db220830caf8aae3d md5: e240159643214102dc88395c4ecee9cf @@ -5109,6 +6392,20 @@ packages: run_exports: {} size: 8274783 timestamp: 1746820771309 +- conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.1-py311h42ed68f_0.conda + sha256: 1a8fe170142be8d18c14f0893822079867e1507d64df2e472e71a7401ae34d07 + md5: 93619b2d972199a3320c1101eedaea89 + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + run_exports: {} + size: 89614 + timestamp: 1771611130785 - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda sha256: f5f7e006ff4271305ab4cc08eedd855c67a571793c3d18aff73f645f088a8cae md5: 31b8740cf1b2588d4e61c81191004061 @@ -5121,33 +6418,31 @@ packages: - ncurses >=6.6,<7.0a0 size: 831711 timestamp: 1777423052277 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.66.0-py311h7dd8c3b_0.conda - sha256: 94d9e377fc48237968fc552ef44342880fd63fe9b6a8b99d36f4c0b176774027 - md5: ec4b7a617d754e6a5a797e3d61560c88 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.66.0-py311h52678b9_1.conda + sha256: 7f53a3d177a0d890efa085970a5c59c34079a66465133bd2a9919b3534681b3c + md5: 6bbde41f26ab2b2b970af3b213a8f7c9 depends: - - __osx >=11.0 - - libcxx >=19 - - llvm-openmp >=19.1.7 + - python - llvmlite >=0.48.0,<0.49.0a0 - numpy >=1.22.3,<2.5 + - libcxx >=19 + - __osx >=11.0 + - llvm-openmp >=19.1.7 - numpy >=1.23,<3 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython - python_abi 3.11.* *_cp311 constrains: - tbb >=2021.6.0 - - cuda-python >=11.6 + - libopenblas !=0.3.6 - cuda-version >=11.2 - - scipy >=1.0 - cudatoolkit >=11.2 - - libopenblas !=0.3.6 + - scipy >=1.0 + - cuda-python >=11.6 license: BSD-2-Clause - license_family: BSD purls: - pkg:pypi/numba?source=hash-mapping run_exports: {} - size: 5911119 - timestamp: 1784209416913 + size: 6239342 + timestamp: 1785940920269 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.6-py311h2c4eb96_0.conda sha256: 47fa3ad9a49348efb5662d7850a433607ee4fabf259709731437a969c3006fa9 md5: 0cb49ff5e81a76c101f1a561cf1f2a76 @@ -5170,26 +6465,23 @@ packages: - numpy >=1.23,<3 size: 8593034 timestamp: 1779169256521 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h52bb76a_0.conda - sha256: 9a37ecf9c086f3a50d0132e6087dcbe7ea978d80e2da267fa3199c486529b311 - md5: 46e628da6e796c948fa8ec9d6d10bda3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b + md5: 025c711177fc3309228ca1a32374458d depends: - - __osx >=11.0 - - libcxx >=19 - - libpng >=1.6.55,<1.7.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - __osx >=10.13 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause license_family: BSD purls: [] - run_exports: - weak: - - openjpeg >=2.5.4,<3.0a0 - size: 335227 - timestamp: 1772625294157 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda - sha256: 819d4368d6b5b298fa40d4bc836c1250842489002cacf3fb918a13ee2033b7c6 - md5: 46be42ab403712fd349d007d763bf767 + size: 332320 + timestamp: 1733816828284 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_1.conda + sha256: d43abd09a455847108fc821e81cf4e36dba31755263a1313b6f1b538ac218998 + md5: da403ed66c373b5fb25266b4be662327 depends: - __osx >=11.0 - ca-certificates @@ -5199,8 +6491,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 2775300 - timestamp: 1781071391999 + size: 2773506 + timestamp: 1785915436200 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py311hca9a5ca_2.conda sha256: f0dd9bca13b82972ce260941437a1e2efc1b71766b44cc73ac8b878f7d352e9c md5: bd00254b6a77b575177c78f64c5fb366 @@ -5253,29 +6545,25 @@ packages: run_exports: {} size: 14375008 timestamp: 1764615325020 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-hf280016_1.conda - sha256: c1150e6a405985b25830c18f896d5e89b9777ef7e420bc0b1d88634f9a614769 - md5: 591f9fcbb36fbd50caef590d9b1de614 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + sha256: ff2cc0b201ce1b68a9f38c1dc71dbd26f70eef103089ae4ee26b7e80d336f0ab + md5: 17bcc6d5206e8a1a13cc478a777d79e5 depends: - - __osx >=11.0 + - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.1 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 - - libzlib >=1.3.2,<2.0a0 + - freetype >=2.13.3,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=11.0.0,<12.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.84.0,<3.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - run_exports: - weak: - - pango >=1.56.4,<2.0a0 - size: 431801 - timestamp: 1774282435173 + size: 432439 + timestamp: 1743352942656 - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda sha256: 8d64a9d36073346542e5ea042ef8207a45a0069a2e65ce3323ee3146db78134c md5: 08f970fb2b75f5be27678e077ebedd46 @@ -5291,43 +6579,68 @@ packages: - pcre2 >=10.47,<10.48.0a0 size: 1106584 timestamp: 1763655837207 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.3.0-py311h27c473c_0.conda - sha256: 74ac35763cd00d639165292aa006fe714543a3397a8fec194d936044b2bacbaa - md5: 44294caed916d768bd588f94f1676501 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py311h25da234_0.conda + sha256: 407b51154fac30242ff797b58aa841dd71233e0fcdf3a9c704cf706fea15af00 + md5: 16c2e3310d762b1ce0fea2b0c2fd381f depends: - - python - - __osx >=11.0 - - libwebp-base >=1.6.0,<2.0a0 - - tk >=8.6.13,<8.7.0a0 - - python_abi 3.11.* *_cp311 - - openjpeg >=2.5.4,<3.0a0 - - libfreetype >=2.14.3 - - libfreetype6 >=2.14.3 + - __osx >=10.13 + - lcms2 >=2.17,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - - lcms2 >=2.19.1,<3.0a0 - - libjpeg-turbo >=3.1.4.1,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - zlib-ng >=2.3.3,<2.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - tk >=8.6.13,<8.7.0a0 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping run_exports: {} - size: 1002007 - timestamp: 1782912253167 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-h2fb4741_2.conda - sha256: 24fd53956b359b0cb79152522aadc2c216531880736e146cac3acaf137c48867 - md5: f8e55c2953f01b116eb61d764ed79095 + size: 42386550 + timestamp: 1751482240771 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.2-h1fd1274_0.conda + sha256: 6214d8e9f8d4fbe15e7af59e931ce2a5ac77a8946728c4ef287bec90e5b060c4 + md5: e1e0595633f79ce40f3fba9a337a155b depends: - - __osx >=11.0 - - libcxx >=19 + - __osx >=10.13 + - libcxx >=18 license: MIT license_family: MIT purls: [] - run_exports: - weak: - - pixman >=0.46.4,<1.0a0 - size: 320575 - timestamp: 1784286990554 + size: 345091 + timestamp: 1749552991974 +- conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.5.2-py311ha8ae342_0.conda + sha256: 11a77bd99d4d83a07929cd70cfe4af13e0fb3d520d38d1805d6a3e1e28d16075 + md5: bd7265ff62381b2c9b0bb0b3f56cc723 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + run_exports: {} + size: 48898 + timestamp: 1780038168797 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py311ha332486_0.conda + sha256: 374933b76115cd0946f3c47f20a7934ee0ce7bd4b667d14f7a704db1e85ee459 + md5: 29d06d0775445ec3f42f3a1be72b3f02 + depends: + - python + - __osx >=10.13 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + run_exports: {} + size: 242642 + timestamp: 1769678292465 - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 md5: 8bcf980d2c6b17094961198284b8e862 @@ -5366,6 +6679,37 @@ packages: - python size: 15650410 timestamp: 1781150619639 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py311h53ebfaf_1.conda + sha256: db6ce0be1a9e0e57d829e6522ba932643fadd9e5238875ff299925246a01b6b2 + md5: 398a9df67c68780701415da829315730 + depends: + - __osx >=10.13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + run_exports: {} + size: 194735 + timestamp: 1770223769285 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py311h83aef28_3.conda + sha256: 4420e88e2b1246c25b09a2e8643254a246cff8d1613f396291bc988d7fea0730 + md5: 19e8a922a273fd04d3aeb1289761642c + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + run_exports: {} + size: 362537 + timestamp: 1779484074493 - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda sha256: 79d804fa6af9c750e8b09482559814ae18cd8df549ecb80a4873537a5a31e06e md5: dd1ea9ff27c93db7c01a7b7656bd4ad4 @@ -5390,9 +6734,25 @@ packages: - readline >=8.3,<9.0a0 size: 317819 timestamp: 1765813692798 -- conda: https://conda.anaconda.org/conda-forge/osx-64/s2n-1.7.5-he8c8f02_1.conda - sha256: 895b1e88bd65b9cb77b94f315e5e561b9e9180c2f8cb44b85db3d4ce7de8869d - md5: a0195ede49ea2061dc7180be71817c8e +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-2026.6.3-py311hcd3406c_0.conda + sha256: 049014c730fec9ed917f4e9ec460289db88daa184f1b60ab335c710e11af8b13 + md5: dcd3a3e2bff50b5154088ffcd0d137a8 + depends: + - python + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + run_exports: {} + size: 297054 + timestamp: 1782831470109 +- conda: https://conda.anaconda.org/conda-forge/osx-64/s2n-1.7.6-he8c8f02_0.conda + sha256: d66411d9407e4477642033c3a00313e204ac97fd213161203cbf119f703ee0c8 + md5: 0e0188705c77a642bf7c8ce9928ea75d depends: - __osx >=11.0 - openssl >=3.5.7,<4.0a0 @@ -5401,9 +6761,9 @@ packages: purls: [] run_exports: weak: - - s2n >=1.7.5,<1.7.6.0a0 - size: 296184 - timestamp: 1783165225767 + - s2n >=1.7.6,<1.7.7.0a0 + size: 296520 + timestamp: 1784674897444 - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.1-py311h556693a_1.conda sha256: 4e68affca9e1d14cdb1fe6910c459ec4bd01b1217a867f7cfbf40830951f80aa md5: 972007d34efaf5755603391a91e7d50f @@ -5506,20 +6866,52 @@ packages: purls: [] size: 18465 timestamp: 1727794980957 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda - sha256: 4a1beb656761c7d8c9a53474bfd3932c30d82af5d93a32b8ef626c01c059d981 - md5: b3ecb6480fd46194e3f7dd0ff4445dff +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda + sha256: a335161bfa57b64e6794c3c354e7d49449b28b8d8a7c4ed02bf04c3f009953f9 + md5: a645bb90997d3fc2aea0adf6517059bd depends: - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - yaml >=0.2.5,<0.3.0a0 + size: 79419 + timestamp: 1753484072608 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.24.5-py311ha8ae342_0.conda + sha256: fd36d5e440a691c16043068b41259fa4954e242f31313d5868fc094ea56ad11c + md5: e8b8d5a9898aaff5cacf2d2f9c5dfe5a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + run_exports: {} + size: 165615 + timestamp: 1784526690425 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h84953be_11.conda + sha256: 2ba9b6a3131b5a97641068559d38c044f37fd29b54c10dd6d073f1cf81fc4e4c + md5: 8a622d1db89d80a94477b1c03824d611 + depends: - libcxx >=19 - license: Zlib - license_family: Other + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libsodium >=1.0.22,<1.0.23.0a0 + license: MPL-2.0 + license_family: MOZILLA purls: [] run_exports: weak: - - zlib-ng >=2.3.3,<2.4.0a0 - size: 120464 - timestamp: 1770168263684 + - zeromq >=4.3.5,<4.4.0a0 + size: 260817 + timestamp: 1779124180318 - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca md5: cd60a4a5a8d6a476b30d8aa4bb49251a @@ -5545,6 +6937,29 @@ packages: - _openmp_mutex >=4.5 size: 8325 timestamp: 1764092507920 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.14.3-py311h6771f6e_0.conda + sha256: cfe7181773c57eaf368e26ff00164c82c6ef6c502d1db7cf5431a33d94f6085d + md5: 6a09baddefb8ab5e512c44377333ecfd + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.5.0 + - aiosignal >=1.4.0 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.4 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + run_exports: {} + size: 1061258 + timestamp: 1784900905971 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1 md5: 57301986d02d30d6805fdce6c99074ee @@ -5560,41 +6975,41 @@ packages: purls: [] size: 347530 timestamp: 1713896411580 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.4-h0f08c97_1.conda - sha256: 8e503ab875683720c4ddcce216ad2aa96c32b90bc59e9a692c694e07ba4e5d8d - md5: c5d9f5796fb392f0984def10b26f1175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.10.4-h436dbe7_2.conda + sha256: bea3d014ebc03803cd18b1df1c7cbeb2fb7cf260126030fe7dc18a6bf674d131 + md5: b9494d6793762d9f9838420c8e73c8d9 depends: - __osx >=11.0 - - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-auth >=0.10.4,<0.10.5.0a0 - size: 117350 - timestamp: 1784086893887 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.14-hb9ed60c_4.conda - sha256: 9760cd6c5cc16ecd989866e86fea1fbe23bff3279831ce6f13b83afb6f6f2075 - md5: 5f5ba0cd72e15095ede1ad38e8907f5f + size: 117346 + timestamp: 1785199104682 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.15-hdbc54b2_1.conda + sha256: f60b9b4b9693ce86e335c268638c299804ca9cfd7ffb3b96415dcac52c1bd13b + md5: 70d1d0405910b78d06d74a8bba0013d2 depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: Apache purls: [] run_exports: weak: - - aws-c-cal >=0.9.14,<0.9.15.0a0 - size: 45835 - timestamp: 1784043800544 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.14.2-h84a0fba_0.conda - sha256: 0cc9a2a36387975a643cc33d7b60db894650efa707ff73a85e93f80f03904c97 - md5: 35d52f06a5eaaa66c62dd37a4d82d780 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + size: 46154 + timestamp: 1785158287452 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.14.3-h84a0fba_0.conda + sha256: e46cbb8c24626da9792f7eebae86b3e8fa611e039945be15a78a70015eeae17e + md5: 0097da38976713a53acb6332cc9de888 depends: - __osx >=11.0 license: Apache-2.0 @@ -5602,128 +7017,166 @@ packages: purls: [] run_exports: weak: - - aws-c-common >=0.14.2,<0.14.3.0a0 - size: 228084 - timestamp: 1783637822478 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-hf0b4b85_4.conda - sha256: 8363308db46a84c5d7e9a309aaca8a18541f46f3b6e7b7027479a95ab910e19a - md5: 6e0883cca4143f456e019f751d0b9f3b + - aws-c-common >=0.14.3,<0.14.4.0a0 + size: 228913 + timestamp: 1784596525019 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.2-he8604bc_5.conda + sha256: 857df6c5048c206e4c424100f1a649b7ef5ee3b01cf6207ff3ae35fe61642478 + md5: 139a1ac73d9e111cb3f73d07958a1130 depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-compression >=0.3.2,<0.3.3.0a0 - size: 21774 - timestamp: 1784042939907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.11.0-h27f0cb5_4.conda - sha256: 851a01b9e6f0078107549ec1d1545cd27a50a073e4e9599d6f8f4ba69a8cba30 - md5: 9e435c44eafb6aba85f0133f4c579d1c + size: 21777 + timestamp: 1785157595687 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.11.0-hc1b69ad_5.conda + sha256: 1d8dbd1cea250a1d2d932294bf7e9d5c9e5efc9e09993dc883885e0ff2447fd3 + md5: d7d04ddaf9dae601a9a77c547e7d09ab depends: - __osx >=11.0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 - aws-c-compression >=0.3.2,<0.3.3.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-http >=0.11.0,<0.11.1.0a0 - size: 177761 - timestamp: 1784075780838 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.27.3-ha24efe8_1.conda - sha256: 2b127f1ccd9f022c945363e1e8eb6fd4a5fbc89677ac678abde6dc022ba26765 - md5: c4d73dc09e972a895d5a3dc7ce158be9 + size: 177804 + timestamp: 1785186207384 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.27.5-h8fb7669_1.conda + sha256: 7b346b8bd32c1f013d231922a9413d45c152d5c533c994bb4fb76c5f4e1ad20b + md5: 4fa643897c9481edc41aca4a7597a653 depends: - __osx >=11.0 - - s2n >=1.7.5,<1.7.6.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - s2n >=1.7.6,<1.7.7.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-io >=0.27.3,<0.27.4.0a0 - size: 189938 - timestamp: 1784054954272 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.12.8-hdc61527_1.conda - sha256: f56014c02923a32cb3387eab782420ff40c9aae68c95cf08bfd2143a5c3c2cdd - md5: ea0e1e78de6375004530dd9f49d7ae46 + - aws-c-io >=0.27.5,<0.27.6.0a0 + size: 190778 + timestamp: 1785170135436 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.13.1-h1fbe2f8_1.conda + sha256: fe906dcd9cfac79c61bf60927f9e9dad328c9fbb9a2204ffb0b3c955c33817f0 + md5: bbdbec4b0952af625b066672514c0eb7 depends: - __osx >=11.0 + - aws-checksums >=0.2.10,<0.2.11.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-checksums >=0.2.10,<0.2.11.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-s3 >=0.12.8,<0.12.9.0a0 - size: 133754 - timestamp: 1784101134287 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.7-hf0b4b85_2.conda - sha256: 3ee2dcefcd45283508a3049bd4f5b508a46c16af906a0c3d351d0f9d81738464 - md5: de81e53b45b103470d3be61984dcc292 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 + size: 134318 + timestamp: 1785351362781 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.7-he8604bc_3.conda + sha256: 16b3cd17f3806866c74fe7fe7badaf511293766f1356b4f491f88eb98ff4da16 + md5: b87573f533751acc5de162eced05e3b1 depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - size: 60771 - timestamp: 1784044312402 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-hf0b4b85_4.conda - sha256: 13313afb01bf4f1c328695724d5b16263810f84d7572f6cb0b4d12f877d7f1d6 - md5: 99cd08b2a8261083e4ad9414cbe737df + size: 60776 + timestamp: 1785159351292 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.10-he8604bc_5.conda + sha256: 1f301d04c67c63b5e31b3ac5deaa20749cb86b6eadff04fdf9c79599ce9dd3d0 + md5: 3864eab4cfa7f8d524d558c52db32708 depends: - __osx >=11.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-checksums >=0.2.10,<0.2.11.0a0 - size: 92225 - timestamp: 1784044297006 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h5505292_3.conda - sha256: 97e2a90342869cc122921fdff0e6be2f5c38268555c08ba5d14e1615e4637e35 - md5: 03c7865dd4dbf87b7b7d363e24c632f1 + size: 92236 + timestamp: 1785159288972 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.6.0-py311h36d4fbb_0.conda + sha256: 51b1b6c4c7c0b77bc8f145f4dd6d9fcb97ee5bd999cc125a0650ebc632107fbe + md5: ab2cfcf1499efba573df019a9aa1f3dc + depends: + - python + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + run_exports: {} + size: 246885 + timestamp: 1781450824672 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda + sha256: 422ac5c91f8ef07017c594d9135b7ae068157393d2a119b1908c7e350938579d + md5: 48ece20aa479be6ac9a284772827d00c depends: - __osx >=11.0 - - brotli-bin 1.1.0 h5505292_3 - - libbrotlidec 1.1.0 h5505292_3 - - libbrotlienc 1.1.0 h5505292_3 + - brotli-bin 1.2.0 hc919400_1 + - libbrotlidec 1.2.0 hc919400_1 + - libbrotlienc 1.2.0 hc919400_1 license: MIT license_family: MIT purls: [] - size: 20094 - timestamp: 1749230390021 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h5505292_3.conda - sha256: 5c6a808326c3bbb6f015a57c9eb463d65f259f67154f4f06783d8829ce9239b4 - md5: cc435eb5160035fd8503e9a58036c5b5 + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 20237 + timestamp: 1764018058424 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda + sha256: e2d142052a83ff2e8eab3fe68b9079cad80d109696dc063a3f92275802341640 + md5: 377d015c103ad7f3371be1777f8b584c depends: - __osx >=11.0 - - libbrotlidec 1.1.0 h5505292_3 - - libbrotlienc 1.1.0 h5505292_3 + - libbrotlidec 1.2.0 hc919400_1 + - libbrotlienc 1.2.0 hc919400_1 license: MIT license_family: MIT purls: [] - size: 17185 - timestamp: 1749230373519 + run_exports: {} + size: 18628 + timestamp: 1764018033635 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py311hdc60ec4_1.conda + sha256: 617545ec0e97d35ed2ff7852f2581a20c0dda80b366d0c42a43706687f971ba8 + md5: 150cbf381febcf0a5e470a8d066e1bc0 + depends: + - __osx >=11.0 + - libcxx >=19 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - libbrotlicommon 1.2.0 hc919400_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 359588 + timestamp: 1764018467340 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab @@ -5747,25 +7200,29 @@ packages: - c-ares >=1.34.8,<2.0a0 size: 183515 timestamp: 1784091337771 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda - sha256: 00439d69bdd94eaf51656fdf479e0c853278439d22ae151cabf40eb17399d95f - md5: 38f6df8bc8c668417b904369a01ba2e2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda + sha256: cde9b79ee206fe3ba6ca2dc5906593fb7a1350515f85b2a1135a4ce8ec1539e3 + md5: 36200ecfbbfbcb82063c87725434161f depends: - __osx >=11.0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 + - icu >=78.1,<79.0a0 + - libcxx >=19 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libglib >=2.86.3,<3.0a0 + - libpng >=1.6.53,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.44.2,<1.0a0 + - pixman >=0.46.4,<1.0a0 license: LGPL-2.1-only or MPL-1.1 purls: [] - size: 896173 - timestamp: 1741554795915 + run_exports: + weak: + - cairo >=1.18.4,<2.0a0 + size: 900035 + timestamp: 1766416416791 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py311h7d85929_4.conda sha256: 57b2c28cbb45e7dacb565541483d802a15c6beff5ccdabba19784a526191f4d3 md5: bd91dd35d73638e5c0f520a18850f6ba @@ -5783,6 +7240,22 @@ packages: run_exports: {} size: 286095 timestamp: 1769156091585 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.21-py311h8948835_0.conda + sha256: 2345e7ba2c9deeed28e83a3cf273c45bef23e5d7bfd9de557749dd1d3b85ded0 + md5: 336c8a771fad6546f51b5fe92bd68c96 + depends: + - python + - __osx >=11.0 + - libcxx >=19 + - python 3.11.* *_cpython + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + run_exports: {} + size: 2675614 + timestamp: 1780390235468 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-h1c322ee_1.tar.bz2 sha256: 8b93dbebab0fe12ece4767e6a2dc53a6600319ece0b8ba5121715f28c7b0f8d1 md5: 20dd7359a6052120d52e1e13b4c818b9 @@ -5791,19 +7264,25 @@ packages: purls: [] size: 355201 timestamp: 1648505273975 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc - md5: 7b29f48742cea5d1ccb5edd839cb5621 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.18.2-h2b252f5_0.conda + sha256: 9977c3f83d7f383de9bbd8a1ac6fd6eb4485cd9fda1679a9a63b697f4cb45a89 + md5: 992ac5eb08a3a29b5f465cf90f326471 depends: - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libzlib >=1.3.1,<2.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libintl >=0.25.1,<1.0a0 + - libzlib >=1.3.2,<2.0a0 license: MIT license_family: MIT purls: [] - size: 234227 - timestamp: 1730284037572 + run_exports: + weak: + - fontconfig >=2.18.2,<3.0a0 + - fonts-conda-ecosystem + size: 262776 + timestamp: 1784754851028 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.63.0-py311hc290fe0_0.conda sha256: e339446253b5aec4342526334cb2575a20beaf15478469d9baa3c5a11c7aa498 md5: 23ee082b5c5dc73c19dc0b6451d35079 @@ -5822,62 +7301,94 @@ packages: run_exports: {} size: 2948507 timestamp: 1778771011007 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - sha256: 6b63c72ea51a41d41964841404564c0729fdddd3e952e2715839fd759b7cfdfc - md5: e684de4644067f1956a580097502bf03 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.3-hce30654_1.conda + sha256: 96b33f1e2a32c602b167f43719e3acf89ec742b4a1e25e99ffd0e6f99b38d277 + md5: 7bd06ab4ed807154c2d9031eb5ebf025 depends: - - libfreetype 2.13.3 hce30654_1 - - libfreetype6 2.13.3 h1d14073_1 + - libfreetype 2.14.3 hce30654_1 + - libfreetype6 2.14.3 hdfa99f5_1 license: GPL-2.0-only OR FTL purls: [] - size: 172220 - timestamp: 1745370149658 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 - md5: c64443234ff91d70cb9c7dc926c58834 - license: LGPL-2.1 + run_exports: + weak: + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + size: 173518 + timestamp: 1780933616544 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-h84a0fba_1.conda + sha256: 6dd18694340b84290bb1906cc1359502b974aada6a8476cfe6dec3ce0e860af8 + md5: 2bb7d7dd91116b8c85e805b0e08cc67b + depends: + - __osx >=11.0 + license: LGPL-2.1-or-later purls: [] - size: 60255 - timestamp: 1604417405528 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 - md5: 151309a7e1eb57a3c2ab8088a1d74f3e + run_exports: + weak: + - fribidi >=1.0.16,<2.0a0 + size: 60230 + timestamp: 1785912572097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.8.0-py311hf75086c_0.conda + sha256: 32ab4112a1d2e119d8c5109f345a4f32b396db4597889958b62680a5bc1c73e9 + md5: abb28a2132a7c4587f406fab77b777ce depends: - __osx >=11.0 - - libglib >=2.80.2,<3.0a0 - - libintl >=0.22.5,<1.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 + - libcxx >=19 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + run_exports: {} + size: 51197 + timestamp: 1780000393807 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.7-h4e57454_0.conda + sha256: 69bb2e62a93f6407c9e9ccd4d21fe4d4e5373d64eecd6c5df318144ca4c80953 + md5: f717a22e13a1499c9552ffff02d22d64 + depends: + - __osx >=11.0 + - libglib >=2.88.2,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - liblzma >=5.8.3,<6.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 509570 - timestamp: 1715783199780 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.2-h246a70f_0.conda - sha256: 6a98eabd4d5bb902c391e9f7c9e655ce61292ff6f1bb0c592da42fd66e6c89f9 - md5: 973a5ef252899cd0916418c75a864169 + run_exports: + weak: + - gdk-pixbuf >=2.44.7,<3.0a0 + size: 553902 + timestamp: 1782591436963 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.88.3-h5f197ff_0.conda + sha256: 672b06a290ae9bd4443f9315334f2dbb6d0ba239b3a1f2ea40fd66321e7a3ac6 + md5: 607824e2f42f49049c999432385832e3 depends: - - libglib ==2.88.2 ha08bb59_0 + - libglib ==2.88.3 ha08bb59_0 - libffi - __osx >=11.0 - libintl >=0.25.1,<1.0a0 license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 205101 - timestamp: 1782463971075 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-h286801f_0.conda - sha256: e1c431b66b0a632e8fcc2b886cccde4eb5ec5eb8a3d84e89b7639d603c174646 - md5: 64d15e1dfe86fa13cf0d519d1074dcd9 + size: 205078 + timestamp: 1785442168180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.15-hf6b4638_0.conda + sha256: c0a060d7b7a05669043ef3f68c7a1025c8594e1ab73735afb64c35e8baa41da5 + md5: 0d576cff278a2e60456d5b2c0a1ffda3 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 81566 - timestamp: 1750080158744 + run_exports: + weak: + - graphite2 >=1.3.15,<2.0a0 + size: 82245 + timestamp: 1780454628763 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-13.0.1-haeab78c_0.conda sha256: 72cd5abe3497d65cda6266bfbbefc2dec43c81de5d32b6dc07cb1d6131d1352c md5: 12a3326af4a7be9c0dee5e4c0d0fe86d @@ -5902,30 +7413,36 @@ packages: purls: [] size: 2204446 timestamp: 1750087392298 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h07173f4_5.conda - sha256: 9650ac1a02975ae0a3917443dc3c35ddc4d8e87a1cb04fda115af5f98e5d457c - md5: 8353369d4c2ecc5afd888405d3226fd9 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.52-hc0f3e19_0.conda + sha256: 26862a9898054b8552e55e609e5ce73c7ef1eb28bbe6fb87f0b9109d73cd09df + md5: 5557a2433b1339b8e536c264afea41ef depends: - __osx >=11.0 - atk-1.0 >=2.38.0 - cairo >=1.18.4,<2.0a0 - epoxy >=1.5.10,<1.6.0a0 - - fribidi >=1.0.10,<2.0a0 - - gdk-pixbuf >=2.42.12,<3.0a0 + - fribidi >=1.0.16,<2.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 - glib-tools - - harfbuzz >=11.0.0,<12.0a0 + - harfbuzz >=13.2.1 - hicolor-icon-theme - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libintl >=0.23.1,<1.0a0 - - liblzma >=5.6.4,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - - pango >=1.56.3,<2.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.2 + - libfreetype6 >=2.14.2 + - libglib >=2.86.4,<3.0a0 + - libintl >=0.25.1,<1.0a0 + - liblzma >=5.8.2,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + - pango >=1.56.4,<2.0a0 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 4792338 - timestamp: 1743406461562 + run_exports: + weak: + - gtk3 >=3.24.52,<4.0a0 + - adwaita-icon-theme + size: 9385734 + timestamp: 1774288504338 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba md5: 21b4dd3098f63a74cf2aa9159cbef57d @@ -5955,42 +7472,35 @@ packages: run_exports: {} size: 1193405 timestamp: 1775582985212 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - sha256: 244e4071229aa3b824dd2a9814c0e8b4c2b40dfb28914ec2247bf27c5c681584 - md5: 12f4520f618ff6e398a2c8e0bed1e580 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-14.3.0-hce30654_0.conda + sha256: 67042b0e8896f707c60981947ae22fe0c13942283c8d7ac9b8286cc01cc1c2d2 + md5: aab13bb027c8295f5b09ccb8cd084698 depends: - - __osx >=11.0 - - cairo >=1.18.4,<2.0a0 - - freetype - - graphite2 - - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.7.0,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 - - libzlib >=1.3.1,<2.0a0 + - libharfbuzz-devel 14.3.0 h5a65909_0 license: MIT license_family: MIT purls: [] - size: 1395282 - timestamp: 1747091793921 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_hebe1841_110.conda - sha256: 7e66a888a88a92e3da6c5f3dd9a2ff658c1f2fb16f476b2200eb446f092bd5b1 - md5: 0d84c4ec4af6aa69b8f40ab62b72e3bc + run_exports: + weak: + - libharfbuzz >=14.3.0 + size: 11005 + timestamp: 1785770060418 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-2.1.0-nompi_h7eff4e6_111.conda + sha256: 781a1b78ffb24b44d6e1b3d240070e424239283c31f22ce936582f1fa372cf63 + md5: ab8f4eed6d64d0f23773eb2eb727a52e depends: - __osx >=11.0 - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-s3 >=0.12.8,<0.12.9.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - libaec >=1.1.5,<2.0a0 - libcurl >=8.21.0,<9.0a0 - libcxx >=19 - libgfortran - - libgfortran5 >=14.3.0 + - libgfortran5 >=14.4.0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 license: BSD-3-Clause @@ -5999,8 +7509,8 @@ packages: run_exports: weak: - hdf5 >=2.1.0,<3.0a0 - size: 3969996 - timestamp: 1784118396974 + size: 3382993 + timestamp: 1785701154474 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 sha256: 286e33fb452f61133a3a61d002890235d1d1378554218ab063d6870416440281 md5: 237b05b7eb284d7eebc3c5d93f5e4bca @@ -6009,16 +7519,19 @@ packages: purls: [] size: 13800 timestamp: 1611053664863 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hc7cc350_2.conda + sha256: f0b22bc30e4cc29e29ba3234cb38497fe8def2c2aae4b775d42fe5b378a018c9 + md5: 6133ddbb17ba2b50700dd88e9303ce27 depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 11857802 - timestamp: 1720853997952 + run_exports: + weak: + - icu >=78.3,<79.0a0 + size: 14070698 + timestamp: 1784916459058 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.5.0-py311h7d85929_0.conda sha256: bad01811dae8d727a7ff5a271c8304be495e7e594dfddb9f1d576e41ba7c1a76 md5: 9b4b32f37ebf95463c38636ae2f2ec56 @@ -6052,29 +7565,35 @@ packages: - krb5 >=1.22.2,<1.23.0a0 size: 1159780 timestamp: 1781859501654 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f - md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.19.1-hdfa7624_1.conda + sha256: ccb5598fad3694e79bf54f0eb812e3b3c3dd63d1497e631f5978800eadb9bcc4 + md5: d2f2c7c10e2957647d45589b7701a453 depends: - __osx >=11.0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 license: MIT license_family: MIT purls: [] - size: 212125 - timestamp: 1739161108467 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - sha256: 12361697f8ffc9968907d1a7b5830e34c670e4a59b638117a2cdfed8f63a38f8 - md5: a74332d9b60b62905e3d30709df08bf1 + run_exports: + weak: + - lcms2 >=2.19.1,<3.0a0 + size: 213747 + timestamp: 1780212240694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.2.0-h1eee2c3_0.conda + sha256: c97aa17d16d2ac332ba9f184e82ce8f72dcb10e9a10c5f299030be2d44e191b9 + md5: e429aec4037d5cb8fd34ded9f5dadd39 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 license: Apache-2.0 license_family: Apache purls: [] - size: 188306 - timestamp: 1745264362794 + run_exports: + weak: + - lerc >=4.2.0,<5.0a0 + size: 166477 + timestamp: 1785036480092 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda sha256: af9cd8db11eb719e38a3340c88bb4882cf19b5b4237d93845224489fc2a13b46 md5: 13e6d9ae0efbc9d2e9a01a91f4372b41 @@ -6107,38 +7626,47 @@ packages: purls: [] size: 17520 timestamp: 1750388963178 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h5505292_3.conda - sha256: 0e9c196ad8569ca199ea05103707cde0ae3c7e97d0cdf0417d873148ea9ad640 - md5: fbc4d83775515e433ef22c058768b84d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda + sha256: a7cb9e660531cf6fbd4148cff608c85738d0b76f0975c5fc3e7d5e92840b7229 + md5: 006e7ddd8a110771134fcc4e1e3a6ffa depends: - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 68972 - timestamp: 1749230317752 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h5505292_3.conda - sha256: d888c228e7d4f0f2303538f6a9705498c81d56fedaab7811e1186cb6e24d689b - md5: 01c4b35a1c4b94b60801f189f1ac6ee3 + run_exports: + weak: + - libbrotlicommon >=1.2.0,<1.3.0a0 + size: 79443 + timestamp: 1764017945924 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda + sha256: 2eae444039826db0454b19b52a3390f63bfe24f6b3e63089778dd5a5bf48b6bf + md5: 079e88933963f3f149054eec2c487bc2 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 h5505292_3 + - libbrotlicommon 1.2.0 hc919400_1 license: MIT license_family: MIT purls: [] - size: 29249 - timestamp: 1749230338861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h5505292_3.conda - sha256: 0734a54db818ddfdfbf388fa53c5036a06bbe17de14005f33215d865d51d8a5e - md5: 1ce5e315293309b5bf6778037375fb08 + run_exports: + weak: + - libbrotlidec >=1.2.0,<1.3.0a0 + size: 29452 + timestamp: 1764017979099 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda + sha256: 01436c32bb41f9cb4bcf07dda647ce4e5deb8307abfc3abdc8da5317db8189d1 + md5: b2b7c8288ca1a2d71ff97a8e6a1e8883 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 h5505292_3 + - libbrotlicommon 1.2.0 hc919400_1 license: MIT license_family: MIT purls: [] - size: 274404 - timestamp: 1749230355483 + run_exports: + weak: + - libbrotlienc >=1.2.0,<1.3.0a0 + size: 290754 + timestamp: 1764018009077 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda build_number: 32 sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c @@ -6154,13 +7682,14 @@ packages: purls: [] size: 17485 timestamp: 1750388970626 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.21.0-hd5a2499_1.conda - sha256: ba74311dc4805af2ba1365d85814199a563cb09950f68b97fcd4e939dc090855 - md5: 27c5b464c5fbee7411aab3bc0195f9c2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.21.0-hf618e03_4.conda + sha256: d25be36712d7f854a5f93513b9fbf1b0ee3219975b7fef4a3ee071b021b10167 + md5: 66cf9c5003ee81ecdb0dc9f9df17bbe5 depends: - __osx >=11.0 - krb5 >=1.22.2,<1.23.0a0 - libnghttp2 >=1.68.1,<2.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - openssl >=3.5.7,<4.0a0 @@ -6171,8 +7700,8 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 410285 - timestamp: 1782802574409 + size: 411491 + timestamp: 1785500129743 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 md5: 881de227abdddbe596239fa9e82eb3ab @@ -6183,16 +7712,18 @@ packages: purls: [] size: 567189 timestamp: 1749847129529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - sha256: 417d52b19c679e1881cce3f01cad3a2d542098fa2d6df5485aac40f01aede4d1 - md5: 3baf58a5a87e7c2f4d243ce2f8f2fe5c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-he7e0567_1.conda + sha256: d896f4aa4ce4c590c2838678cb1917356fdb461d2a189991c0280c818c362172 + md5: 78650d671cb56909bb3e5c13bce310f9 depends: - __osx >=11.0 license: MIT - license_family: MIT purls: [] - size: 54790 - timestamp: 1747040549847 + run_exports: + weak: + - libdeflate >=1.25,<1.26.0a0 + size: 55727 + timestamp: 1785909153744 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 md5: 44083d2d2c2025afca315c7a172eab2b @@ -6239,108 +7770,158 @@ packages: - libffi >=3.5.2,<3.6.0a0 size: 40979 timestamp: 1769456747661 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - sha256: 1f8c16703fe333cdc2639f7cdaf677ac2120843453222944a7c6c85ec342903c - md5: d06282e08e55b752627a707d58779b8f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.3-hce30654_1.conda + sha256: d5637b01941c0fc8f5cbb1f170c238f4ee153b3c1708b9d50f4f1305438ff051 + md5: 0582e67cd14cfed773be2f3b1aba08e0 depends: - - libfreetype6 >=2.13.3 + - libfreetype6 >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - size: 7813 - timestamp: 1745370144506 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - sha256: c278df049b1a071841aa0aca140a338d087ea594e07dcf8a871d2cfe0e330e75 - md5: b163d446c55872ef60530231879908b9 + run_exports: {} + size: 8365 + timestamp: 1780933612390 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.3-hdfa99f5_1.conda + sha256: abbfffd8a8c776bb8b59a10c8247fc3aa6b17ba0051e9f6d199dca38479f214f + md5: a0bb0678f67c464938d3693fa96f6884 depends: - __osx >=11.0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - - freetype >=2.13.3 + - freetype >=2.14.3 license: GPL-2.0-only OR FTL purls: [] - size: 333529 - timestamp: 1745370142848 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_19.conda - sha256: 06644fa4d34d57c9e48f4d84b1256f9e5f654fdb37f43acc8a58a396952d42b7 - md5: 644058123986582db33aebd4ae2ca184 + run_exports: {} + size: 338442 + timestamp: 1780933611662 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-16.1.0-h3cf6597_1.conda + sha256: fdd1502babb50b802d090496586231f56236d7a6fc042a4e1ac2dee48da8366b + md5: 0124dc2e6f70f3e8ebea643b42b18abb depends: - _openmp_mutex constrains: - - libgcc-ng ==15.2.0=*_19 - - libgomp 15.2.0 19 + - libgomp 16.1.0 1 + - libgcc-ng ==16.1.0=*_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 404080 - timestamp: 1778273064154 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - sha256: be038eb8dfe296509aee2df21184c72cb76285b0340448525664bc396aa6146d - md5: 4581aa3cfcd1a90967ed02d4a9f3db4b + size: 364162 + timestamp: 1785374452947 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda + sha256: 269edce527e204a80d3d05673301e0207efcd0dbeebc036a118ceb52690d6341 + md5: fa4a92cfaae9570d89700a292a9ca714 depends: - __osx >=11.0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - icu >=75.1,<76.0a0 - - libexpat >=2.6.4,<3.0a0 - - libiconv >=1.17,<2.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.45,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 + - icu >=78.1,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libiconv >=1.18,<2.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 license: GD license_family: BSD purls: [] - size: 156868 - timestamp: 1737548290283 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_19.conda - sha256: d4837b3b9b30af3132d260225e91ab9dde83be04c59513f500cc81050fb37486 - md5: 1ea03f87cdb1078fbc0e2b2deb63752c + run_exports: + weak: + - libgd >=2.3.3,<2.4.0a0 + size: 159247 + timestamp: 1766331953491 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-16.1.0-h07b0088_1.conda + sha256: d7c6dd601dbbde495ab213a76d690b2fec19455d26c595ec0257cfde3e80166b + md5: d6f10dbb9c5830f540904c91ea5b252a + depends: + - libgfortran5 16.1.0 h32cdfcc_1 + constrains: + - libgfortran-ng ==16.1.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 98528 + timestamp: 1785374566402 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-16.1.0-h32cdfcc_1.conda + sha256: 3e8cb79a421e0c350566717febdba9079574cbbe204591b4fd4b4081ea89cb92 + md5: c1c10ea48f95054aa9b93c2315a0a74a depends: - - libgfortran5 15.2.0 hdae7583_19 + - libgcc >=16.1.0 constrains: - - libgfortran-ng ==15.2.0=*_19 + - libgfortran 16.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] run_exports: {} - size: 139675 - timestamp: 1778273280875 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_19.conda - sha256: d0a68b7a121d115b80c169e24d1265dcc25a3fe58d107df1bbc430797e226d88 - md5: ba36d8c606a6a53fe0b8c12d47267b3d + size: 556657 + timestamp: 1785374459225 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.3-ha08bb59_0.conda + sha256: a14417ae1f3f4a92c5766354eb280342fa6aae72a09af86bf7fcfc12a8c9225c + md5: 4a9309d9502a08a2d29b1743dcfb0e7f + depends: + - __osx >=11.0 + - pcre2 >=10.47,<10.48.0a0 + - libzlib >=1.3.2,<2.0a0 + - libffi >=3.5.2,<3.6.0a0 + - libintl >=0.25.1,<1.0a0 + - libiconv >=1.18,<2.0a0 + constrains: + - glib >2.66 + license: LGPL-2.1-or-later + purls: [] + run_exports: + weak: + - libglib >=2.88.3,<3.0a0 + size: 4448109 + timestamp: 1785442168180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libharfbuzz-14.3.0-h5a65909_0.conda + sha256: 5803da482e914fc5d7ea82b31789471973b03ca58e9caffedd86e175c3aee447 + md5: 19248fa96b4c573e46bfec7fa3c875fa depends: - - libgcc >=15.2.0 - constrains: - - libgfortran 15.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL + - __osx >=11.0 + - cairo >=1.18.4,<2.0a0 + - graphite2 >=1.3.15,<2.0a0 + - icu >=78.3,<79.0a0 + - libcxx >=19 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libglib >=2.88.3,<3.0a0 + - libpng >=1.6.58,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT purls: [] run_exports: {} - size: 599691 - timestamp: 1778273075448 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.88.2-ha08bb59_0.conda - sha256: 68ac66904a284a7dfbb3bdf9225380eaf20750b2d414215e6d7af5caa3ed1a63 - md5: 03123cafdc96cef79fc8a615f9119b79 + size: 942277 + timestamp: 1785770026085 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libharfbuzz-devel-14.3.0-h5a65909_0.conda + sha256: ec6822ad0101e1d627aebb04792a0a642a706ba3c12e2691a90c7c3995b09fc1 + md5: 9b9a765bb25ac591d79ced348d4dc340 depends: - __osx >=11.0 - - pcre2 >=10.47,<10.48.0a0 - - libiconv >=1.18,<2.0a0 - - libintl >=0.25.1,<1.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype + - graphite2 >=1.3.15,<2.0a0 + - icu >=78.3,<79.0a0 + - libcxx >=19 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz 14.3.0 h5a65909_0 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 - - libffi >=3.5.2,<3.6.0a0 - constrains: - - glib >2.66 - license: LGPL-2.1-or-later + license: MIT + license_family: MIT purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4437447 - timestamp: 1782463971075 + - libharfbuzz >=14.3.0 + size: 1470616 + timestamp: 1785770054858 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 md5: 450e6bdc0c7d986acf7b8443dce87111 @@ -6363,17 +7944,20 @@ packages: - libintl >=0.25.1,<1.0a0 size: 90957 timestamp: 1751558394144 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda - sha256: 78df2574fa6aa5b6f5fc367c03192f8ddf8e27dc23641468d54e031ff560b9d4 - md5: 01caa4fbcaf0e6b08b3aef1151e91745 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.2.0-h84a0fba_1.conda + sha256: 05006418f9392c9b723e8428808db106de0350a497832f95f921b85ff1072310 + md5: b2f8c8e5a7651a1d7c05404c3a159517 depends: - __osx >=11.0 constrains: - jpeg <0.0.0a license: IJG AND BSD-3-Clause AND Zlib purls: [] - size: 553624 - timestamp: 1745268405713 + run_exports: + weak: + - libjpeg-turbo >=3.2.0,<4.0a0 + size: 558459 + timestamp: 1785896382474 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda build_number: 32 sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 @@ -6440,45 +8024,82 @@ packages: - libopenblas >=0.3.30,<1.0a0 size: 4284132 timestamp: 1768547079205 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.49-h3783ad8_0.conda - sha256: b1050f6da51de507eec6902367cc2a3f381dd548eaaccb85673784543dcdee1a - md5: 90be56ffd1a6b1950268f88c12e17c69 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.58-h132b30e_0.conda + sha256: 66eae34546df1f098a67064970c92aa14ae7a7505091889e00468294d2882c36 + md5: 2259ae0949dbe20c0665850365109b27 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 license: zlib-acknowledgement purls: [] - size: 259291 - timestamp: 1750095759683 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda - sha256: 0ec066d7f22bcd9acb6ca48b2e6a15e9be4f94e67cb55b0a2c05a37ac13f9315 - md5: 95d6ad8fb7a2542679c08ce52fafbb6c + run_exports: + weak: + - libpng >=1.6.58,<1.7.0a0 + size: 289546 + timestamp: 1776315246750 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpsl-0.23.0-h7a62e17_0.conda + sha256: f71026a40df9ef28ada6d97c0f441e7ca9bafa03d0ae0c3f5f03d1971acb656b + md5: 1aecee022672c6c97c827ceb6b0e2ead + depends: + - libcxx >=19 + - __osx >=11.0 + - icu >=78.3,<79.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libpsl >=0.23.0,<0.24.0a0 + size: 72956 + timestamp: 1785426941596 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.62.3-he8aa2a2_0.conda + sha256: f5b4fb7b6f13bbfca59613bff2e70b5a398e80727b9d0f814837ffcbc34185e1 + md5: 6973724fadafe66ac6e4f1c55c191407 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libxml2 >=2.13.7,<2.14.0a0 - - pango >=1.56.3,<2.0a0 + - fontconfig >=2.18.0,<3.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.44.6,<3.0a0 + - harfbuzz >=14.2.0 + - libglib >=2.88.1,<3.0a0 + - libxml2-16 >=2.14.6 + - pango >=1.56.4,<2.0a0 constrains: - __osx >=11.0 license: LGPL-2.1-or-later purls: [] - size: 4607782 - timestamp: 1743369546790 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.3-h1b79a29_0.conda - sha256: a73a8acd97a6599fd6e561514db9f101ca7fd984cdc0cfd91ba74c8aa9dbe067 - md5: 7184d95871a58b8258a8ea124ed5aabc + run_exports: + weak: + - librsvg >=2.62.3,<3.0a0 + size: 2397567 + timestamp: 1780452232118 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.22-h1a92334_1.conda + sha256: 202be45db5726757a8ea1f374f85aacc18c504f5ff15b2558496dff4c8779c48 + md5: 9ed5ab909c449bdcae72322e44875a18 + depends: + - __osx >=11.0 + license: ISC + purls: [] + run_exports: + weak: + - libsodium >=1.0.22,<1.0.23.0a0 + size: 247352 + timestamp: 1779164136206 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.4-h1ae2325_0.conda + sha256: 745662565e103f290e9dc4263bbd88285082f8cf699854fe2d5f1e35a4a0d326 + md5: 0e3477c0c3e718dcf2eb74ccc8f68570 depends: - __osx >=11.0 + - icu >=78.3,<79.0a0 - libzlib >=1.3.2,<2.0a0 license: blessing purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 924912 - timestamp: 1782519136322 + - libsqlite >=3.53.4,<4.0a0 + size: 929203 + timestamp: 1785016131414 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a md5: b68e8f66b94b44aaa8de4583d3d4cc40 @@ -6490,38 +8111,40 @@ packages: purls: [] size: 279193 timestamp: 1745608793272 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - sha256: cc5ee1cffb8a8afb25a4bfd08fce97c5447f97aa7064a055cb4a617df45bc848 - md5: 4eb183bbf7f734f69875702fdbe17ea0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.2-h282da08_0.conda + sha256: 253153cabf9469170e02b21a6bc9aa598048e7c34966b1103af52d27d2a708a4 + md5: 6fa87106b3c041ad6d965a9411e79b94 depends: - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.24,<1.25.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 + - lerc >=4.1.0,<5.0a0 + - libcxx >=19 + - libdeflate >=1.25,<1.26.0a0 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - liblzma >=5.8.3,<6.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.2,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: HPND purls: [] - size: 370943 - timestamp: 1747067160710 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda - sha256: a4de3f371bb7ada325e1f27a4ef7bcc81b2b6a330e46fac9c2f78ac0755ea3dd - md5: e5e7d467f80da752be17796b87fe6385 + run_exports: + weak: + - libtiff >=4.7.2,<4.8.0a0 + size: 387825 + timestamp: 1783085754081 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h202fb40_1.conda + sha256: 0ff54650d470c7e54cbeffdd53a8c063e055a7bcf784388c0385ce5c4741b0f4 + md5: 168a13e329259710b28277abc1395b8e depends: - __osx >=11.0 constrains: - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] run_exports: weak: - libwebp-base >=1.6.0,<2.0a0 - size: 294974 - timestamp: 1752159906788 + size: 294522 + timestamp: 1785955350410 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 @@ -6535,35 +8158,38 @@ packages: purls: [] size: 323658 timestamp: 1727278733917 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - sha256: 13eb825eddce93761d965da3edaf3a42d868c61ece7d9cf21f7e2a13087c2abe - md5: d7884c7af8af5a729353374c189aede8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + sha256: ff75b84cdb9e8d123db2fa694a8ac2c2059516b6cbc98ac21fb68e235d0fd354 + md5: 19edaa53885fc8205614b03da2482282 depends: - __osx >=11.0 - - icu >=75.1,<76.0a0 + - icu >=78.3,<79.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.8.1,<6.0a0 - - libzlib >=1.3.1,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 license: MIT license_family: MIT purls: [] - size: 583068 - timestamp: 1746634531197 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda - sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 - md5: bc5a5721b6439f2f62a84f2548136082 + run_exports: {} + size: 466360 + timestamp: 1776377102261 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_3.conda + sha256: a18fa5d5bac452401459f966cf0d872224e8080c4ff93c77e168d43ab42ef9d7 + md5: f39288f0ea63ae962e1a2e4f355a0d75 depends: - __osx >=11.0 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 47759 - timestamp: 1774072956767 + size: 47822 + timestamp: 1785277049190 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 md5: 741e1da0a0798d32e13e3724f2ca2dcf @@ -6637,6 +8263,21 @@ packages: run_exports: {} size: 8048426 timestamp: 1746820924090 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.1-py311ha275503_0.conda + sha256: 01aae5d525f7eec07bfe9d9cd82cae84d5889babdfe4bd3b674b734005289cfe + md5: a57b7e57a380097482d5a89a44f0a5c4 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + run_exports: {} + size: 89354 + timestamp: 1771611632254 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda sha256: 4ea6c620b87bd1d42bb2ccc2c87cd2483fa2d7f9e905b14c223f11ff3f4c455d md5: 343d10ed5b44030a2f67193905aea159 @@ -6649,32 +8290,31 @@ packages: - ncurses >=6.6,<7.0a0 size: 805509 timestamp: 1777423252320 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.66.0-py311h9d9bb2a_0.conda - sha256: 02325fdc119376b8d305f4b970677240992d12dddc2be5713219e9c95b3c7fa9 - md5: d49f7bfa026aa01b2f976c6c8919acd8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.66.0-py311h6ad6fc7_1.conda + sha256: d3d0338999da68d41983f49aef3a1140eab6b227198072e9d738c5d1d6439bed + md5: b70ac9664a46bd9fead69b317f15ff0d depends: - - __osx >=11.0 - - libcxx >=19 - - llvm-openmp >=19.1.7 + - python - llvmlite >=0.48.0,<0.49.0a0 - numpy >=1.22.3,<2.5 - - numpy >=1.23,<3 - - python >=3.11,<3.12.0a0 + - llvm-openmp >=19.1.7 + - __osx >=11.0 + - libcxx >=19 - python_abi 3.11.* *_cp311 + - numpy >=1.23,<3 constrains: - - scipy >=1.0 - - cuda-version >=11.2 - - cudatoolkit >=11.2 - tbb >=2021.6.0 - libopenblas >=0.3.18,!=0.3.20 + - cuda-version >=11.2 + - cudatoolkit >=11.2 + - scipy >=1.0 - cuda-python >=11.6 license: BSD-2-Clause - license_family: BSD purls: - pkg:pypi/numba?source=hash-mapping run_exports: {} - size: 5883488 - timestamp: 1784229592693 + size: 6240076 + timestamp: 1785940746882 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.6-py311hbd1492f_0.conda sha256: 08e5062ab9bce23adef1c62282a99d035780e43eb8a843b0f11d8a1e967fe123 md5: 7738446d4be7ac8b56e6d6e3bdb7e52b @@ -6697,23 +8337,26 @@ packages: - numpy >=1.23,<3 size: 7456206 timestamp: 1779169211856 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hd9e9057_0.conda + sha256: 60aca8b9f94d06b852b296c276b3cf0efba5a6eb9f25feb8708570d3a74f00e4 + md5: 4b5d3a91320976eec71678fad1e3569b depends: - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libcxx >=19 + - libpng >=1.6.55,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 - libzlib >=1.3.1,<2.0a0 license: BSD-2-Clause license_family: BSD purls: [] - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda - sha256: b3e3ca895c336d4eb91c5d2f244a312bdb59a0de8cfa0cc4c179225ab2f6bbfb - md5: 8187a86242741725bfa74785fe812979 + run_exports: + weak: + - openjpeg >=2.5.4,<3.0a0 + size: 319697 + timestamp: 1772625397692 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_1.conda + sha256: 66be2283b5b37dcda1332b5e74c1782a8cb14fd2e62e0d38017c2d35bf73c119 + md5: 65d1906712b85d1679263c518d011b5b depends: - __osx >=11.0 - ca-certificates @@ -6723,8 +8366,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 3102584 - timestamp: 1781069820667 + size: 3109132 + timestamp: 1785913735357 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py311hdb8e4fa_2.conda sha256: dd0c4ade846921acbf6ded79b7589e72f58689129dabc8290deec455539e9235 md5: da2e5c7c0a3061398c8a1e225f2e339e @@ -6778,25 +8421,29 @@ packages: run_exports: {} size: 14124254 timestamp: 1764615503256 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - sha256: 76e3843f37878629e744ec75d5f3acfc54a7bb23f9970139f4040f93209ef574 - md5: 2e5cef90f7d355790fa96f2459ee648f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.58.0-hf80efc4_0.conda + sha256: dbe0796fba7ccdc4a6934010e92a78c6c06a35fe3975e08c617e99a2151b926a + md5: 81bffd56a1dee786e084ca8d7bafb86d depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.15.0,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 + - fribidi >=1.0.16,<2.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libglib >=2.88.2,<3.0a0 + - libharfbuzz >=14.2.1 + - libpng >=1.6.58,<1.7.0a0 + - libzlib >=1.3.2,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 426212 - timestamp: 1743352728692 + run_exports: + weak: + - pango >=1.58.0,<2.0a0 + size: 443229 + timestamp: 1785175346487 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda sha256: 5e2e443f796f2fd92adf7978286a525fb768c34e12b1ee9ded4000a41b2894ba md5: 9b4190c4055435ca3502070186eba53a @@ -6812,41 +8459,74 @@ packages: - pcre2 >=10.47,<10.48.0a0 size: 850231 timestamp: 1763655726735 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py311h3f9ac88_1.conda - sha256: 2b64066ad9b9660db1c5bc5347a01cce41384d6a4e7f698c6d1dcde067137db4 - md5: 5022d1df0b5861946b76dc55a6c48b4a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.3.0-py311hd37aea2_0.conda + sha256: 3c680e002d0aadf9e21b6ee50929d8fec6ced9234b1340a027255b4518e6e49f + md5: 26ba3b773222fada6f89baf4846190e3 depends: + - python + - python 3.11.* *_cpython - __osx >=11.0 - - lcms2 >=2.17,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - libjpeg-turbo >=3.1.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.6.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.11,<3.12.0a0 - - python >=3.11,<3.12.0a0 *_cpython + - openjpeg >=2.5.4,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libjpeg-turbo >=3.1.4.1,<4.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 - python_abi 3.11.* *_cp311 + - libtiff >=4.7.1,<4.8.0a0 + - libxcb >=1.17.0,<2.0a0 - tk >=8.6.13,<8.7.0a0 + - lcms2 >=2.19.1,<3.0a0 + - libwebp-base >=1.6.0,<2.0a0 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping run_exports: {} - size: 41980810 - timestamp: 1756853923647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.2-h2f9eb0b_0.conda - sha256: 68d1eef12946d779ce4b4b9de88bc295d07adce5dd825a0baf0e1d7cf69bc5a6 - md5: 0587a57e200568a71982173c07684423 + size: 993213 + timestamp: 1782912213683 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h784d473_2.conda + sha256: b7d0a814a3f8f30bba28c83ccfd896e89f90ffd8a763c4cb5fa55abe7ba3cf0c + md5: 63b5e8afb859517d0073b295f1aa9589 depends: + - libcxx >=19 - __osx >=11.0 - - libcxx >=18 license: MIT license_family: MIT purls: [] - size: 214660 - timestamp: 1749553221709 + run_exports: + weak: + - pixman >=0.46.4,<1.0a0 + size: 198437 + timestamp: 1784287312271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.5.2-py311hc290fe0_0.conda + sha256: c3e726226ac17207dbca1d61415261dc30133b79fbc6dc1773a327b5c55a617b + md5: 757ef7785e30f794a6b52957af5d81fa + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + run_exports: {} + size: 49554 + timestamp: 1780038276062 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py311he363849_0.conda + sha256: 2b774e8f4ccaac8783d1908f281e4bb20b7036d6708dc913ee7811b070f5b4b5 + md5: 7cff50265141513c960f00ba586780ea + depends: + - python + - python 3.11.* *_cpython + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + run_exports: {} + size: 245203 + timestamp: 1769678306347 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 @@ -6885,6 +8565,39 @@ packages: - python size: 15389700 timestamp: 1781148926804 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py311hc290fe0_1.conda + sha256: 984e73d7957460689e10533059de8adb38a308853d298900a37acc58edd84cec + md5: e4b908da7cd496b3fa6798c0f60a2a19 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + run_exports: {} + size: 192948 + timestamp: 1770223655988 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py311h8463d66_3.conda + sha256: e461e38dc527e2c24929b19debd9ebf006d36bca7fb222bb9465fd19dc41af40 + md5: dc07ae3c579fe19354d3e10a90992415 + depends: + - python + - libcxx >=19 + - python 3.11.* *_cpython + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + run_exports: {} + size: 359949 + timestamp: 1779484138996 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda sha256: 873ac689484262a51fd79bc6103c1a1bedbf524924d7f0088fb80703042805e4 md5: 6483b1f59526e05d7d894e466b5b6924 @@ -6909,9 +8622,25 @@ packages: - readline >=8.3,<9.0a0 size: 313930 timestamp: 1765813902568 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/s2n-1.7.5-h1b28cb6_1.conda - sha256: 47ec36bdd05117c974853a8dbaa9d89605a5f70b592d47c7d198b20252ddf1f4 - md5: 94b3b302cd6c07c5ec68648b25c8c525 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-2026.6.3-py311haff49d3_0.conda + sha256: 466a9df1864e3104ca95bb7292fb045fd320c0b40e71647162341329437eb23e + md5: f55ea3840a1a4c76fdb03dc8d95e7a76 + depends: + - python + - __osx >=11.0 + - python_abi 3.11.* *_cp311 + constrains: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + run_exports: {} + size: 286691 + timestamp: 1782831311985 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/s2n-1.7.6-h1b28cb6_0.conda + sha256: d2133326625aabcd20a7908bd2783cd207adf1a042c0512b493e49599fd5315a + md5: aa98fac113d87d7501704ad35ed071f2 depends: - __osx >=11.0 - openssl >=3.5.7,<4.0a0 @@ -6920,9 +8649,9 @@ packages: purls: [] run_exports: weak: - - s2n >=1.7.5,<1.7.6.0a0 - size: 276705 - timestamp: 1783165153651 + - s2n >=1.7.6,<1.7.7.0a0 + size: 277238 + timestamp: 1784674786218 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.1-py311h9a58382_1.conda sha256: b45f87414da242a9e40eb934e89513a856e6236d681611c2c9a21d074b03ef5a md5: 15f96f91b13cbefddbf998368d06adef @@ -7016,18 +8745,79 @@ packages: license: MIT license_family: MIT purls: [] - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda + sha256: b03433b13d89f5567e828ea9f1a7d5c5d697bf374c28a4168d71e9464f5dafac + md5: 78a0fe9e9c50d2c381e8ee47e3ea437d + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - yaml >=0.2.5,<0.3.0a0 + size: 83386 + timestamp: 1753484079473 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.24.5-py311hc290fe0_0.conda + sha256: a383ca97e08312dbb7ca917fff7c6aa054f383aa0fdb1aafc87a35303243ae7e + md5: 9241589df3b7c8fc43d6d329b39c790e + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + run_exports: {} + size: 165495 + timestamp: 1784526908831 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h10816f8_11.conda + sha256: 01fd50d2801b23b59fafea6bf704a6c5faf0f5969104400eae0e6572cb2e5304 + md5: d31c0e54c4f9c51100ec8c812ee925d1 + depends: + - libcxx >=19 + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libsodium >=1.0.22,<1.0.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + run_exports: + weak: + - zeromq >=4.3.5,<4.4.0a0 + size: 245404 + timestamp: 1779124076307 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda + sha256: a339606a6b224bb230ff3d711e801934f3b3844271df9720165e0353716580d4 + md5: d99c2a23a31b0172e90f456f580b695e depends: - __osx >=11.0 - license: MIT - license_family: MIT + - libcxx >=19 + license: Zlib + license_family: Other purls: [] - size: 18487 - timestamp: 1727795205022 + run_exports: + weak: + - zlib-ng >=2.3.3,<2.4.0a0 + size: 94375 + timestamp: 1770168363685 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda sha256: 0d02046f57f7a1a3feae3e9d1aa2113788311f3cf37a3244c71e61a93177ba67 md5: e6f69c7bcccdefa417f056fa593b40f0 @@ -7054,31 +8844,55 @@ packages: purls: [] size: 49468 timestamp: 1718213032772 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.10.4-hc6e9107_1.conda - sha256: cf7ab8abaac6b462463310412cc37d087a767a95920809cbe6dc0a08fe4bcfbd - md5: f7069cdc81f7a5e781f1faf6aab6c171 +- conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.14.3-py311ha56572f_0.conda + sha256: dbe6c22a6fa3ac4290810bc5985c159b7b9d1e90c66f94b2b9d2cf704bab7187 + md5: 93ff263c79fa9ab7a78e2c668051d81c + depends: + - aiohappyeyeballs >=2.5.0 + - aiosignal >=1.4.0 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - typing_extensions >=4.4 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - yarl >=1.17.0,<2.0 + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + run_exports: {} + size: 1037996 + timestamp: 1784900622320 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.10.4-h98da7c9_2.conda + sha256: ba0b53ad46a7ba157888454c9bf76e1f0e5de368fb0bfbc0bd710156ac741dff + md5: 48df5a892ef44189ff64744c944884f9 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-auth >=0.10.4,<0.10.5.0a0 - size: 127842 - timestamp: 1784086873207 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.14-h032d170_4.conda - sha256: cda33360c71ab9a4b4e269004a5672d712fa1ae581ecca0404181805ce6762ce - md5: fda8fa85ef5d8570d5a0aadea688bb82 + size: 127878 + timestamp: 1785199082208 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.15-hf2e3468_1.conda + sha256: 2ffb1a78a9deddf937ea70096ef5b6672918a9153a21b0a9d069533850b0a49f + md5: 2c70e5e0b0a87a674b2a1a20fd80c04c depends: - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 @@ -7087,12 +8901,12 @@ packages: purls: [] run_exports: weak: - - aws-c-cal >=0.9.14,<0.9.15.0a0 - size: 54285 - timestamp: 1784043506729 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.14.2-hfd05255_0.conda - sha256: 63fc3f34a3b3d21d5f6527ba5136e132f3ad50541d4d16e385d03f4e47e1db2b - md5: 75b4445fec6477b271920f87830d22a3 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + size: 53928 + timestamp: 1785157894077 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.14.3-hfd05255_0.conda + sha256: 5c55090f9c2b28eeac0e9f40a2b1a7aeaae10ba96fa6c7c0e4caef69a6a9cfa2 + md5: eda5facd8e8545b7dacc1dc740ac0e54 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -7102,114 +8916,130 @@ packages: purls: [] run_exports: weak: - - aws-c-common >=0.14.2,<0.14.3.0a0 - size: 241190 - timestamp: 1783637351552 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-h1da161f_4.conda - sha256: 97eaf03572b61d118616e8ee8459823c7b0f5dc26295bbab3ac3f6d671f1547a - md5: 996e5c7da8f9e255eac094d2413b40c3 + - aws-c-common >=0.14.3,<0.14.4.0a0 + size: 241857 + timestamp: 1784596238577 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.2-h0d56620_5.conda + sha256: 43a538303486de0621c543c38a28c60ac3a65bbba35793321e0a825a65d460fc + md5: 3a93885c9f57e04ff78d29f7dc830fb2 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-compression >=0.3.2,<0.3.3.0a0 - size: 23355 - timestamp: 1784042894276 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.11.0-h667fc28_4.conda - sha256: 304587d77daccde630fbdbb8ae2f3994cf583427f710c60d62e88bc97c4ff013 - md5: c17a284b159959a8639298ed7da8ad0b + size: 23353 + timestamp: 1785157589233 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.11.0-he024045_5.conda + sha256: d1d6b9213980eab8403354cab5d515fddb8c0cbdf88226c8c353499c699692b0 + md5: ad215edbb53ea01805b103d66aee21ec depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - aws-c-compression >=0.3.2,<0.3.3.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-http >=0.11.0,<0.11.1.0a0 - size: 213342 - timestamp: 1784075730337 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.27.3-hbdc738f_1.conda - sha256: 36816ff394ee736fcf705db5b1c1491c98f6f77ef84791d73b71e78154df402d - md5: 579600368b15fb523d69e2a3f8a9bc55 + size: 213282 + timestamp: 1785186154806 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.27.5-hef21f9d_1.conda + sha256: e689379cc92a4b7dbe01f8c8fbbe12142f6a0cdeee1080d099c4fb80e8e3b090 + md5: e51b38fd757d34b61daf4e848ee0d8f1 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-io >=0.27.3,<0.27.4.0a0 - size: 183828 - timestamp: 1784054860660 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.12.8-hd7ee1a1_1.conda - sha256: c79e62931e163b65a01786d5ed7156ecca2ab748b7c7835756d34e438035706a - md5: 4ac02fa15bf3809101e2eeb340b6078c + - aws-c-io >=0.27.5,<0.27.6.0a0 + size: 184524 + timestamp: 1785170101109 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.13.1-h0deae5e_1.conda + sha256: 90da84f84953d53ed58f41381dd05ba36724db69c9885f1265d3b9d4651a398e + md5: e2adedc506b0298afbbe75e5a7bb32c4 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - aws-c-http >=0.11.0,<0.11.1.0a0 - aws-checksums >=0.2.10,<0.2.11.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 - - aws-c-cal >=0.9.14,<0.9.15.0a0 + - aws-c-cal >=0.9.15,<0.9.16.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-http >=0.11.0,<0.11.1.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - aws-c-s3 >=0.12.8,<0.12.9.0a0 - size: 146292 - timestamp: 1784101024241 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.7-h1da161f_2.conda - sha256: d5da00123d9ceb082e61fd5bf82fff9cd5bec0b8e1ae91454f29155a59499bf5 - md5: 882d834f12e0abf4c7a0e9bb0c72e281 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 + size: 147096 + timestamp: 1785351338275 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.7-h0d56620_3.conda + sha256: 3d87a3474f08da5613eabccd0d2604fdb127a232498e76e33a74bc417f0b049a + md5: e66b4cbfcc747b9ba8ecefb9bed862af depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - size: 64723 - timestamp: 1784044301184 -- conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-h1da161f_4.conda - sha256: 2227fa77f395f1b4699533709e7ef140a8292fccb31376ec5498565c7ad33225 - md5: a3c81085892f2983979836f2937291ce + size: 64712 + timestamp: 1785159284172 +- conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.10-h0d56620_5.conda + sha256: 06e96edd75595eb2898d2399ec73cf255aab4d27b1f08e806d480efe01d64a71 + md5: 9d82651327244c59ab89c0ec1aa327a2 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - aws-checksums >=0.2.10,<0.2.11.0a0 - size: 117110 - timestamp: 1784044282001 + size: 117118 + timestamp: 1785159246313 +- conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.6.0-py311h71c1bcc_0.conda + sha256: 42c0ea81c8fd7fb514d8e94e5f0c99541cfed0df4b7aa960af9b39f10bf13e21 + md5: 572691e3dbd869573222e9a91c07d5de + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause AND MIT AND EPL-2.0 + purls: + - pkg:pypi/backports-zstd?source=hash-mapping + run_exports: {} + size: 245115 + timestamp: 1781450835602 - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda sha256: a4fffdf1c9b9d3d0d787e20c724cff3a284dfa3773f9ce609c93b1cfd0ce8933 md5: bc58fdbced45bb096364de0fba1637af @@ -7245,6 +9075,24 @@ packages: run_exports: {} size: 22714 timestamp: 1764017952449 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py311hc5da9e4_1.conda + sha256: 1803c838946d79ef6485ae8c7dafc93e28722c5999b059a34118ef758387a4c9 + md5: b0c459f98ac5ea504a9d9df6242f7ee1 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libbrotlicommon 1.2.0 hfd05255_1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + run_exports: {} + size: 335333 + timestamp: 1764018370925 - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b md5: 276e7ffe9ffe39688abc665ef0f45596 @@ -7298,6 +9146,22 @@ packages: run_exports: {} size: 244457 timestamp: 1769155974843 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.21-py311h5dfdfe8_0.conda + sha256: 7066ce37b217cc706823de4a36f23bedf809a772ef70e879885d8d5ba4fbadf4 + md5: 87de2c9605b6801b790459bfef5372b3 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/debugpy?source=hash-mapping + run_exports: {} + size: 3952445 + timestamp: 1780390182092 - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda sha256: 09e30a170e0da3e9847d449b594b5e55e6ae2852edd3a3680e05753a5e015605 md5: 3d3caf4ccc6415023640af4b1b33060a @@ -7313,9 +9177,9 @@ packages: - double-conversion >=3.4.0,<3.5.0a0 size: 70943 timestamp: 1765193243911 -- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.18.1-hd47e2ca_0.conda - sha256: 9217184c4a8e82101b0e512b059ae3ff67e3913133b9031edad89ab5341284e4 - md5: abd79bad98c99c1a116154d6de74ea89 +- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.18.2-hd47e2ca_0.conda + sha256: 3263ba9ad9e78a927964c76e0b2b4c745d279394928f4d381272b771ec816235 + md5: 8a2cb80ec7f2a366dd53b48403844154 depends: - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 @@ -7331,10 +9195,10 @@ packages: purls: [] run_exports: weak: - - fontconfig >=2.18.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - size: 202630 - timestamp: 1780450217840 + size: 216273 + timestamp: 1784754573317 - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.63.0-py311h3f79411_0.conda sha256: 4559273191ea80025088947489536a61523c22b33fe1babefa582f4bf3aebf15 md5: 34ad635a09253ec93707415d5a65e27c @@ -7369,9 +9233,9 @@ packages: - libfreetype6 >=2.14.3 size: 185584 timestamp: 1780934817461 -- conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda - sha256: 15011071ee56c216ffe276c8d734427f1f893f275ef733f728d13f610ed89e6e - md5: c27bd87e70f970010c1c6db104b88b18 +- conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_1.conda + sha256: 274b3e4ae5dff527062039d1dcb5cfdd9f91fa7d8eaf61358c09450b361385de + md5: 66f5ce9d0d618332023619a899ceb26f depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -7381,8 +9245,24 @@ packages: run_exports: weak: - fribidi >=1.0.16,<2.0a0 - size: 64394 - timestamp: 1757438741305 + size: 65318 + timestamp: 1785912637725 +- conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.8.0-py311hdf60d3a_0.conda + sha256: 16db4b5c343de93761b2547e8d2e293b47a0e6db4935ac00987ff2c03213df39 + md5: 3483aab7716ce942bb99efffdb5a99b5 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + run_exports: {} + size: 50366 + timestamp: 1779999906989 - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda sha256: d04c4a6c11daa72c4a0242602e1d00c03291ef66ca2d7cd0e171088411d57710 md5: 49c36fcad2e9af6b91e91f2ce5be8ebd @@ -7398,14 +9278,14 @@ packages: purls: [] size: 26238 timestamp: 1750744808182 -- conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.88.2-h395db07_0.conda - sha256: b67107959a71dbf9f5c2e95511f18095d9ac6f0001f0de4a1b6e14282162989e - md5: 7d203837b88a2255b32dca555d37ca50 +- conda: https://conda.anaconda.org/conda-forge/win-64/glib-2.88.3-h3750008_0.conda + sha256: 83422a7831b2fd2c85cf98ad3e74e6a93dac008ac14dd73f9846ddcc8c3714db + md5: 9ffa1092d169f71c63d67391e6f25348 depends: - python * - packaging - - libglib ==2.88.2 h7ce1215_0 - - glib-tools ==2.88.2 h74ecf4c_0 + - libglib ==2.88.3 h7ce1215_0 + - glib-tools ==2.88.3 h81395b3_0 - libintl-devel - vc >=14.3,<15 - vc14_runtime >=14.44.35208 @@ -7415,14 +9295,14 @@ packages: purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 75973 - timestamp: 1782463965040 -- conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.88.2-h74ecf4c_0.conda - sha256: c604b6ca42c6271f281b1c0616e0d50bd800f8fc913a91a2753c2551b3b6b16c - md5: 63c615f0c525ee64f72e557e583b6257 + - libglib >=2.88.3,<3.0a0 + size: 76034 + timestamp: 1785442151056 +- conda: https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.88.3-h81395b3_0.conda + sha256: cb4c3fb7a4dac04def4d78a6f01f031900e18b7b90e6b0b9e72accd500942654 + md5: e247bb0f21e2e49097a663facd4fa554 depends: - - libglib ==2.88.2 h7ce1215_0 + - libglib ==2.88.3 h7ce1215_0 - libffi - vc >=14.3,<15 - vc14_runtime >=14.44.35208 @@ -7431,8 +9311,8 @@ packages: license: LGPL-2.1-or-later purls: [] run_exports: {} - size: 251644 - timestamp: 1782463965040 + size: 251688 + timestamp: 1785442151056 - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.15-hac47afa_0.conda sha256: 88b6601f8edae59834b59b521e293ff3b58361dc1603240f5a8328c24e6936ad md5: ff9a9bfe791f56b0227597a7651a6af0 @@ -7501,28 +9381,28 @@ packages: run_exports: {} size: 1118145 timestamp: 1775581977376 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-14.2.1-h57928b3_1.conda - sha256: c8bf564f2c415b82f056eff98b8967fb75c86821398998f20289397b5acf1ef7 - md5: e706de885f817f9832c56f1c9ad7ce71 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-14.3.0-h57928b3_0.conda + sha256: bcefb437e994108aaf768e52e5ee63b6eddc6dc4b91a83b2ad59363e49486709 + md5: a2696e807c11de8867ecfacc6fe467aa depends: - - libharfbuzz-devel 14.2.1 h03b5201_1 + - libharfbuzz-devel 14.3.0 h03b5201_0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 11542 - timestamp: 1782801047786 -- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-2.1.0-nompi_h0d3e4b2_110.conda - sha256: f6c79581d03d2e2e0cbbb0391d21a149a1f9c311159a9f74c6be8a79e2f696d9 - md5: 146134e4db96613ecdc63cf44bec847d + - libharfbuzz >=14.3.0 + size: 11509 + timestamp: 1785770514661 +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-2.1.0-nompi_hf525611_111.conda + sha256: ee205ee06c067bf611bd11f61ee4ffc06a6d5dd83e9e93c4f1e6a93c4a3ef3a5 + md5: e02622873af619a074210eb4e3c7f116 depends: - aws-c-auth >=0.10.4,<0.10.5.0a0 - - aws-c-common >=0.14.2,<0.14.3.0a0 + - aws-c-common >=0.14.3,<0.14.4.0a0 - aws-c-http >=0.11.0,<0.11.1.0a0 - - aws-c-io >=0.27.3,<0.27.4.0a0 - - aws-c-s3 >=0.12.8,<0.12.9.0a0 + - aws-c-io >=0.27.5,<0.27.6.0a0 + - aws-c-s3 >=0.13.1,<0.13.2.0a0 - aws-c-sdkutils >=0.2.7,<0.2.8.0a0 - libaec >=1.1.5,<2.0a0 - libcurl >=8.21.0,<9.0a0 @@ -7537,22 +9417,23 @@ packages: run_exports: weak: - hdf5 >=2.1.0,<3.0a0 - size: 2609470 - timestamp: 1784118471522 -- conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.3-h637d24d_1.conda - sha256: 61f16ae57ee8956d5c1f69e703f7abaebb972d0def1edc5704d7198430398295 - md5: e3232ea6dafd9f12663f860a3194d6dc + size: 2592012 + timestamp: 1785701085941 +- conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.3-h5112557_2.conda + sha256: 75c549b55b673e15de8785a8e5dd85bca7eb612eee0ff4dc8d7bdaa15eacbdbb + md5: e596942e8ee6ee17fdcf1e6a77757a66 depends: - - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 license: MIT + license_family: MIT purls: [] run_exports: weak: - icu >=78.3,<79.0a0 - size: 14346784 - timestamp: 1784588850918 + size: 16835644 + timestamp: 1784916416303 - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 md5: 2d89243bfb53652c182a7c73182cce4f @@ -7610,9 +9491,9 @@ packages: - lcms2 >=2.19.1,<3.0a0 size: 523194 timestamp: 1780211799997 -- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.1.0-hd936e49_0.conda - sha256: 45df58fca800b552b17c3914cc9ab0d55a82c5172d72b5c44a59c710c06c5473 - md5: 54b231d595bc1ff9bff668dd443ee012 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.2.0-hd936e49_0.conda + sha256: 93d666f63f284ef77b87b0b1f77b70f7d36d315a132f9afa64bc0012d937ba39 + md5: add59e2b60ac9d4299d17c938185c75a depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -7622,9 +9503,9 @@ packages: purls: [] run_exports: weak: - - lerc >=4.1.0,<5.0a0 - size: 172395 - timestamp: 1773113455582 + - lerc >=4.2.0,<5.0a0 + size: 175297 + timestamp: 1785036247761 - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda sha256: e54c08964262c73671d9e80e400333e59c617e0b454476ad68933c0c458156c8 md5: 43b6385cfad52a7083f2c41984eb4e91 @@ -7737,12 +9618,12 @@ packages: - libclang13 >=22.1.8 size: 34917944 timestamp: 1782358781159 -- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.21.0-h51a1c48_2.conda - sha256: e9a9231e6c04b82979a6a1a4f90b8a697dc3a42884e709dee8ba5d0355b45296 - md5: 88c875a8f34785d6f6185ceb646154fa +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.21.0-hdb0ef4a_4.conda + sha256: af17c990ec52b6aba29e052c438d7ac61bfd541d6d183a8f09aa4f2c532c9bab + md5: 5e9c5b83929cf7ab2c04121af771e7b5 depends: - krb5 >=1.22.2,<1.23.0a0 - - libpsl >=0.22.0,<0.23.0a0 + - libpsl >=0.23.0,<0.24.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.2,<2.0a0 - ucrt >=10.0.20348.0 @@ -7754,23 +9635,22 @@ packages: run_exports: weak: - libcurl >=8.21.0,<9.0a0 - size: 404786 - timestamp: 1782911887650 -- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda - sha256: 834e4881a18b690d5ec36f44852facd38e13afe599e369be62d29bd675f107ee - md5: e77030e67343e28b084fabd7db0ce43e + size: 404586 + timestamp: 1785500241182 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h1a1d4e4_1.conda + sha256: af1cda21d4653f594fbef20aa4e1ff158a546902b3307ef8af9a9b44b43862d2 + md5: e4e122e124676a49eebf241399ad8393 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT - license_family: MIT purls: [] run_exports: weak: - libdeflate >=1.25,<1.26.0a0 - size: 156818 - timestamp: 1761979842440 + size: 157828 + timestamp: 1785908793271 - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.8.1-hac47afa_1.conda sha256: 1a54d874addda73b6f7164d5f3905821277a1831bcc05edd74b3085391688571 md5: ccc490c81ffe14181861beac0e8f3169 @@ -7868,27 +9748,27 @@ packages: - libgd >=2.3.3,<2.4.0a0 size: 166711 timestamp: 1766331770351 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.88.2-h7ce1215_0.conda - sha256: 20d4a182b8aa1d71b331579fae281bb3ccb1a199257ce15fadc53786031a7408 - md5: 5be116480ef34a5646894d7f7cd7ae41 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.88.3-h7ce1215_0.conda + sha256: 016bebb5832f5ca5f9cb29a19e1a8fabe66e5a5b5bbbbdf738142e7fb36e3117 + md5: 2f43ad5d918b2e6968bd61cc8daff62c depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.2,<2.0a0 + - libffi >=3.5.2,<3.6.0a0 - libiconv >=1.18,<2.0a0 - pcre2 >=10.47,<10.48.0a0 - - libffi >=3.5.2,<3.6.0a0 + - libzlib >=1.3.2,<2.0a0 constrains: - glib >2.66 license: LGPL-2.1-or-later purls: [] run_exports: weak: - - libglib >=2.88.2,<3.0a0 - size: 4518265 - timestamp: 1782463965040 + - libglib >=2.88.3,<3.0a0 + size: 4518994 + timestamp: 1785442151056 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.1.0-h1383e82_3.conda sha256: 2e6e286c817d2274b109c448f63d804dcc85610c5abf97e183440aa2d84b8c72 md5: 94545e52b3d21a7ab89961f7bda3da0d @@ -7900,9 +9780,9 @@ packages: purls: [] size: 535456 timestamp: 1750808243424 -- conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-14.2.1-h03b5201_1.conda - sha256: 634a64cf43f1ce5a4139334bcdbde54d6854ae33d881ae1774377965e21051a5 - md5: 005469a341088900ca235892d3154c24 +- conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-14.3.0-h03b5201_0.conda + sha256: 43e09008ce97186b41cf8b8a5ac455005b6c5e7586b36368cfe98e1f4353f6af + md5: 3d81338de690051645d0aabeb2631441 depends: - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.15,<2.0a0 @@ -7910,7 +9790,7 @@ packages: - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libglib >=2.88.2,<3.0a0 + - libglib >=2.88.3,<3.0a0 - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 - ucrt >=10.0.20348.0 @@ -7920,11 +9800,11 @@ packages: license_family: MIT purls: [] run_exports: {} - size: 1008194 - timestamp: 1782801000396 -- conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-devel-14.2.1-h03b5201_1.conda - sha256: d04bac65245bf76ae23a18148b941d8215085d38a6d391971966ccda8a996b99 - md5: de077ebf9cbc0c1da6510fdf1bbc6baa + size: 1041066 + timestamp: 1785770469568 +- conda: https://conda.anaconda.org/conda-forge/win-64/libharfbuzz-devel-14.3.0-h03b5201_0.conda + sha256: 54fea2e201eeb6940ff050ff4847c1021b69ad984881369470f1b2f0446c6340 + md5: caa9cfa4e495ec225e5ccde3cab32a88 depends: - cairo >=1.18.4,<2.0a0 - freetype @@ -7934,8 +9814,8 @@ packages: - libexpat >=2.8.1,<3.0a0 - libfreetype >=2.14.3 - libfreetype6 >=2.14.3 - - libglib >=2.88.2,<3.0a0 - - libharfbuzz 14.2.1 h03b5201_1 + - libglib >=2.88.3,<3.0a0 + - libharfbuzz 14.3.0 h03b5201_0 - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 - ucrt >=10.0.20348.0 @@ -7946,9 +9826,9 @@ packages: purls: [] run_exports: weak: - - libharfbuzz >=14.2.1 - size: 321750 - timestamp: 1782801035822 + - libharfbuzz >=14.3.0 + size: 324303 + timestamp: 1785770503649 - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.13.0-default_h049141e_1000.conda sha256: 2ee12e37223dfcd0acd050c80a91150c482b6e2899198521e1800dce66662467 md5: 6a01c986e30292c715038d2788aa1385 @@ -8000,9 +9880,9 @@ packages: - libintl >=0.22.5,<1.0a0 size: 40746 timestamp: 1723629745649 -- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.2.0-hfd05255_0.conda - sha256: 3d6635efa9497b9c5ba7957df8067c0a980d5cb10a6ea136931809eb410f8a99 - md5: cf219146d5bf2fee5907409ff9f5ac89 +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.2.0-hfd05255_1.conda + sha256: df78ab4c0eecb3dd9331898f96baeed8e5ca1c363346332517abeb0b614b9a53 + md5: fc2c23bacefd1e733f1e1d6cd3b2aaeb depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -8014,8 +9894,8 @@ packages: run_exports: weak: - libjpeg-turbo >=3.2.0,<4.0a0 - size: 991057 - timestamp: 1783731990693 + size: 990125 + timestamp: 1785896494014 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-32_h1aa476e_mkl.conda build_number: 32 sha256: 5629e592137114b24bfdea71e1c4b6bee11379631409ed91dfe2f83b32a8b298 @@ -8062,25 +9942,39 @@ packages: - libpng >=1.6.58,<1.7.0a0 size: 385227 timestamp: 1776315248638 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpsl-0.22.0-h25e0afd_1.conda - sha256: 040d4adabae2634b13183203e383c21f74ed98028b5d50bf9bae4968dd05aaa5 - md5: ba200e33e10ccf0d730c4ce87badbdf1 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpsl-0.23.0-h9b16d47_0.conda + sha256: f3e3f69cefe8a999fc5dd20f774273dc60b55516d25bdc7d09e128e6b2b47089 + md5: 826ae14cd895bd1bf9d98a16ecba030e depends: - - icu >=78.3,<79.0a0 - - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - icu >=78.3,<79.0a0 license: MIT license_family: MIT purls: [] run_exports: weak: - - libpsl >=0.22.0,<0.23.0a0 - size: 72405 - timestamp: 1783937048984 -- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.3-hf5d6505_0.conda - sha256: 692dfb73a22c873656d5e393b8f1e2b019a3c8a6486c97cb6900552e64e38c25 - md5: 051f1b2228e7517a2ef8cca5146c8967 + - libpsl >=0.23.0,<0.24.0a0 + size: 73466 + timestamp: 1785426757468 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.22-h6a83c73_1.conda + sha256: de45b71224da77a1c3a7dd48d8885eb957c9f05455d4f0828463293e7144330f + md5: 7d5abf7ca1bd00b43d273f44d93d05dc + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: ISC + purls: [] + run_exports: + weak: + - libsodium >=1.0.22,<1.0.23.0a0 + size: 280234 + timestamp: 1779164124739 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.53.4-hf5d6505_0.conda + sha256: 62e1c45ec71ab2e5deeeb0e47e7df6a609991e91d46348f16df50c68fee145c8 + md5: ca0d59f40a02a15e9b5d0ff8db0f85e3 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -8089,9 +9983,9 @@ packages: purls: [] run_exports: weak: - - libsqlite >=3.53.3,<4.0a0 - size: 1315909 - timestamp: 1782519131898 + - libsqlite >=3.53.4,<4.0a0 + size: 1313790 + timestamp: 1785016158097 - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda sha256: cbdf93898f2e27cefca5f3fe46519335d1fab25c4ea2a11b11502ff63e602c09 md5: 9dce2f112bfd3400f4f432b3d0ac07b2 @@ -8126,26 +10020,26 @@ packages: - libtiff >=4.7.2,<4.8.0a0 size: 1014598 timestamp: 1783085017197 -- conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda - sha256: 0f0965edca8b255187604fc7712c53fe9064b31a1845a7dfb2b63bf660de84a7 - md5: 804880b2674119b84277d6c16b01677d +- conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.357.0-h477610d_0.conda + sha256: 432d4796261bc4a4525e8ecf262361c3f69d815af823ebf60242093e47333674 + md5: 63d913ed8ee946e25b1ebf7d9f477b67 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 constrains: - - libvulkan-headers 1.4.341.0.* + - libvulkan-headers 1.4.357.0.* license: Apache-2.0 license_family: APACHE purls: [] run_exports: weak: - - libvulkan-loader >=1.4.341.0,<2.0a0 - size: 282251 - timestamp: 1770077165680 -- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - sha256: 7b6316abfea1007e100922760e9b8c820d6fc19df3f42fb5aca684cfacb31843 - md5: f9bbae5e2537e3b06e0f7310ba76c893 + - libvulkan-loader >=1.4.357.0,<2.0a0 + size: 286754 + timestamp: 1785311500125 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_1.conda + sha256: 4470d98d3178b0d45492eed4808afe421d2e7808352b8d06c2dc29166b75d94d + md5: 35a9475e4cc999d52921f57c181979fc depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -8153,13 +10047,12 @@ packages: constrains: - libwebp 1.6.0 license: BSD-3-Clause - license_family: BSD purls: [] run_exports: weak: - libwebp-base >=1.6.0,<2.0a0 - size: 279176 - timestamp: 1752159543911 + size: 278886 + timestamp: 1785954716703 - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda sha256: 373f2973b8a358528b22be5e8d84322c165b4c5577d24d94fd67ad1bb0a0f261 md5: 08bfa5da6e242025304b206d152479ef @@ -8244,23 +10137,23 @@ packages: - libxslt >=1.1.43,<2.0a0 size: 420223 timestamp: 1757963935611 -- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_2.conda - sha256: 88609816e0cc7452bac637aaf65783e5edf4fee8a9f8e22bdc3a75882c536061 - md5: dbabbd6234dea34040e631f87676292f +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.2-hfd05255_3.conda + sha256: 0629c2cc0404d3bb29d6baa7b4ba62da80797015e86de050db81ea5a07050527 + md5: 5d2ff29d465097458cc3ff6569151991 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - zlib 1.3.2 *_2 + - zlib 1.3.2 *_3 license: Zlib license_family: Other purls: [] run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 58347 - timestamp: 1774072851498 + size: 58529 + timestamp: 1785276664143 - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.48.0-py311h6456a58_1.conda sha256: 3a7a595dbce0a991b3890ecbefda9fdc2aeb90d18983fde87330149b01ce0e9c md5: f09f9fbe12d2917a17fb6f6b81ddee1a @@ -8335,32 +10228,47 @@ packages: purls: [] size: 103106385 timestamp: 1730232843711 -- conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.66.0-py311h5e69a0e_0.conda - sha256: 79838da6f0127a25849d0109ebc33af618bbdb0cb928ded5319d081c44ced382 - md5: aae1651564f1259a41b9b7e3a08632f7 +- conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.1-py311h3f79411_0.conda + sha256: b161957677bc3f7e98615d1a4d9e95e8bdf42763e7934365f9e61bb93301163b + md5: a9a3bce78a5f5b7f2be14c11984a3cf2 depends: - - llvmlite >=0.48.0,<0.49.0a0 - - numpy >=1.22.3,<2.5 - - numpy >=1.23,<3 - python >=3.11,<3.12.0a0 - python_abi 3.11.* *_cp311 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + run_exports: {} + size: 92622 + timestamp: 1771610838436 +- conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.66.0-py311h5dfdfe8_1.conda + sha256: f16ba6e93665ce1d199741177441a425cf9f6462eb3dcaf9bb40baf50ccb22c5 + md5: 2942d81be18cc1664234f141142199b5 + depends: + - python + - llvmlite >=0.48.0,<0.49.0a0 + - numpy >=1.22.3,<2.5 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - numpy >=1.23,<3 + - python_abi 3.11.* *_cp311 constrains: + - tbb >=2021.6.0 + - libopenblas !=0.3.6 - cuda-version >=11.2 - - scipy >=1.0 - cudatoolkit >=11.2 + - scipy >=1.0 - cuda-python >=11.6 - - libopenblas !=0.3.6 - - tbb >=2021.6.0 license: BSD-2-Clause - license_family: BSD purls: - - pkg:pypi/numba?source=compressed-mapping + - pkg:pypi/numba?source=hash-mapping run_exports: {} - size: 5918428 - timestamp: 1784209301785 + size: 6245187 + timestamp: 1785940758687 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.6-py311h65cb7f3_0.conda sha256: cd26f615140d0ed557f8927947ca62c181d55ddbe418eebd24bd06cd32fb3938 md5: ef5c1dedd943abfb0b80112ba46d4ab8 @@ -8402,9 +10310,9 @@ packages: - openjpeg >=2.5.4,<3.0a0 size: 245594 timestamp: 1772624841727 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_0.conda - sha256: cb6e7ba0d010ee0d3249ce9886de3d7613d26d9965d4c95666fa66b9c4c31001 - md5: e99f95734a326c0fd4d02bbd995150d4 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.3-hf411b9b_1.conda + sha256: 2ebff5a1b5793e82495bf33c91fba040e11ff23333c2385ac66d0c3aee2cc14c + md5: a978392692a910ba1c8920ccb1e784b3 depends: - ca-certificates - ucrt >=10.0.20348.0 @@ -8416,8 +10324,8 @@ packages: run_exports: weak: - openssl >=3.6.3,<4.0a0 - size: 9414790 - timestamp: 1781071745579 + size: 9427535 + timestamp: 1785915614585 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py311h11fd7f3_2.conda sha256: 7a4695b360b6a38f477c4e6deaa02e244ef77465e0c2a3b727d12c26bc0e9676 md5: 6d7622c147fa008da95fe7dd7431a868 @@ -8471,20 +10379,20 @@ packages: run_exports: {} size: 14211779 timestamp: 1764615555643 -- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h13911b6_1.conda - sha256: 3d4e6e541e633f6fd22fc2c1d79ad5ec39503dea3ba04fc3e01d5be904ec7cea - md5: 1f1cf3772ba7d4eef989e4679ddf97f7 +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.58.0-h13911b6_0.conda + sha256: c3124d2129e4df6b1fb170078f7400d94d844a4ffe951485dff36276ab60c616 + md5: d706348be7393bbd156fc15ce1345587 depends: - cairo >=1.18.4,<2.0a0 - - fontconfig >=2.17.1,<3.0a0 + - fontconfig >=2.18.2,<3.0a0 - fonts-conda-ecosystem - fribidi >=1.0.16,<2.0a0 - - harfbuzz >=13.2.1 - - libexpat >=2.7.4,<3.0a0 - - libfreetype >=2.14.2 - - libfreetype6 >=2.14.2 - - libglib >=2.86.4,<3.0a0 - - libpng >=1.6.55,<1.7.0a0 + - libexpat >=2.8.1,<3.0a0 + - libfreetype >=2.14.3 + - libfreetype6 >=2.14.3 + - libglib >=2.88.2,<3.0a0 + - libharfbuzz >=14.2.1 + - libpng >=1.6.58,<1.7.0a0 - libzlib >=1.3.2,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -8493,9 +10401,9 @@ packages: purls: [] run_exports: weak: - - pango >=1.56.4,<2.0a0 - size: 454919 - timestamp: 1774282149607 + - pango >=1.58.0,<2.0a0 + size: 466428 + timestamp: 1785174811849 - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda sha256: 3e9e02174edf02cb4bcdd75668ad7b74b8061791a3bc8bdb8a52ae336761ba3e md5: 77eaf2336f3ae749e712f63e36b0f0a1 @@ -8534,7 +10442,7 @@ packages: - libxcb >=1.17.0,<2.0a0 license: HPND purls: - - pkg:pypi/pillow?source=compressed-mapping + - pkg:pypi/pillow?source=hash-mapping run_exports: {} size: 965494 timestamp: 1782912129930 @@ -8553,6 +10461,38 @@ packages: - pixman >=0.46.4,<1.0a0 size: 257105 timestamp: 1784286884376 +- conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.5.2-py311h3f79411_0.conda + sha256: f9ea426edb6372afd7cb626adea0f214512181aa6707eb65a4d9153566b13e72 + md5: 2d4a3e8b0a30b7b1e96a3a576ade3497 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + run_exports: {} + size: 49165 + timestamp: 1780037808046 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py311hf893f09_0.conda + sha256: 32da17824abadd1f5b46faedfa4964c7b1817b11887c2e8bb4e48628da51b93a + md5: fd968cdacc7967efd0ff5ef1805b812c + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/psutil?source=hash-mapping + run_exports: {} + size: 249478 + timestamp: 1769678166841 - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda sha256: 7e446bafb4d692792310ed022fe284e848c6a868c861655a92435af7368bae7b md5: 3c8f2573569bb816483e5cf57efbbe29 @@ -8617,6 +10557,56 @@ packages: - python size: 18439395 timestamp: 1781148714198 +- conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-312-py311hefeebc8_0.conda + sha256: f77bdcffb3def47a4747829939fd3c9f7a5b4ce1a1a7019039371b665e98416f + md5: 233e99d07b434a27c39b43b559252ef6 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/pywin32?source=hash-mapping + run_exports: {} + size: 4482214 + timestamp: 1781362876562 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py311h3f79411_1.conda + sha256: 301c3ba100d25cd5ae37895988ee3ab986210d4d972aa58efed948fbe857773d + md5: a0153c033dc55203e11d1cac8f6a9cf2 + depends: + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + run_exports: {} + size: 187108 + timestamp: 1770223467913 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py311h7a22eb7_3.conda + sha256: 5c6e92b109add92e28ddd0b0e352a279f8d3d4bea2dfb69c252bc5ed69c6ca30 + md5: 4b98b0c67d4f4d4e1181b07706a7bf0c + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - zeromq >=4.3.5,<4.3.6.0a0 + - python_abi 3.11.* *_cp311 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + run_exports: {} + size: 362998 + timestamp: 1779483941678 - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda sha256: 887d53486a37bd870da62b8fa2ebe3993f912ad04bd755e7ed7c47ced97cbaa8 md5: 854fbdff64b572b5c0b470f334d34c11 @@ -8665,6 +10655,22 @@ packages: - qt6-main >=6.11.1,<7.0a0 size: 89576886 timestamp: 1780400596481 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-2026.6.3-py311h7337c20_0.conda + sha256: 3d3642bd56d248c6cdcd31831fc0cafaa5a9a3376e2d760d781f930ab0caa81e + md5: 1ae11d687fc860a2cd3b68e9c50c8dcc + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.11.* *_cp311 + license: MIT + license_family: MIT + purls: + - pkg:pypi/rpds-py?source=hash-mapping + run_exports: {} + size: 222540 + timestamp: 1782831456252 - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.1-py311h9c22a71_1.conda sha256: 668cfbfb7960df5fff0e2db2677eb00d9e02ee1ce63cc9b1c985d782dacab2fe md5: 0635502eadb751abecd2c68af249f50f @@ -8682,7 +10688,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - purls: [] + purls: + - pkg:pypi/scipy?source=hash-mapping run_exports: {} size: 15241561 timestamp: 1779876161272 @@ -8746,7 +10753,7 @@ packages: license: Apache-2.0 license_family: Apache purls: - - pkg:pypi/tornado?source=compressed-mapping + - pkg:pypi/tornado?source=hash-mapping run_exports: {} size: 885527 timestamp: 1781006887264 @@ -8905,11 +10912,65 @@ packages: purls: [] size: 918674 timestamp: 1731861024233 -- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.2-hfd05255_2.conda - sha256: ef408f85f664a4b9c9dac3cb2e36154d9baa15a88984ea800e11060e0f2394a1 - md5: 5187ecf958be3c39110fe691cbd6873e +- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda + sha256: 80ee68c1e7683a35295232ea79bcc87279d31ffeda04a1665efdb43cbd50a309 + md5: 433699cba6602098ae8957a323da2664 depends: - - libzlib 1.3.2 hfd05255_2 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - yaml >=0.2.5,<0.3.0a0 + size: 63944 + timestamp: 1753484092156 +- conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.24.5-py311h3f79411_0.conda + sha256: ee8c3fdbf5953b05207d0afa1d167da38952fe7ffb5acecc011fceae5f211a92 + md5: e5518a77be7ce826014ecbe729a941e3 + depends: + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + run_exports: {} + size: 168557 + timestamp: 1784526543484 +- conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-h3a581c9_11.conda + sha256: c3e279cb309b153152fcdd6ee6d039ad996d563c849f06be39d85b8e3351df25 + md5: f016c0c5f9c01549b259146614786192 + depends: + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libsodium >=1.0.22,<1.0.23.0a0 + - krb5 >=1.22.2,<1.23.0a0 + license: MPL-2.0 + license_family: MOZILLA + purls: [] + run_exports: + weak: + - zeromq >=4.3.5,<4.3.6.0a0 + size: 265717 + timestamp: 1779124031378 +- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.2-hfd05255_3.conda + sha256: 5a0b55df66ff07b4342e04967cef69f8bf348f6a0fb1cc1eca741c7b015dfe77 + md5: 945092a9bc1d0f250f7d5ecf51ecd471 + depends: + - libzlib 1.3.2 hfd05255_3 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 @@ -8919,8 +10980,8 @@ packages: run_exports: weak: - libzlib >=1.3.2,<2.0a0 - size: 850351 - timestamp: 1774072891049 + size: 851288 + timestamp: 1785276674755 - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda sha256: 71332532332d13b5dbe57074ddcf82ae711bdc132affa5a2982a29ffa06dc234 md5: 46a21c0a4e65f1a135251fc7c8663f83 @@ -8951,58 +11012,20 @@ packages: timestamp: 1742433568506 - pypi: https://files.pythonhosted.org/packages/02/3f/a6ec28c88e2d8e54d32598a1e0b5208a4baa72a8e7f6e241beab5731eb9d/interface_meta-1.3.0-py3-none-any.whl name: interface-meta - version: 1.3.0 - sha256: de35dc5241431886e709e20a14d6597ed07c9f1e8b4bfcffde2190ca5b700ee8 - requires_python: '>=3.7,<4.0' -- pypi: https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl - name: charset-normalizer - version: 3.4.2 - sha256: be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2 - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/06/12/b825caff9d65b101e79efe10aef2ea2724077bf70b75475e03ca9028250c/cvxpy-1.6.6-cp311-cp311-macosx_10_9_x86_64.whl - name: cvxpy - version: 1.6.6 - sha256: 0ad3abd3dabe5ae5d4d88b53d62d13d53c3515dbbd4ffb3348df91eef6b23171 - requires_dist: - - osqp>=0.6.2 - - clarabel>=0.5.0 - - scs>=3.2.4.post1 - - numpy>=1.21.6 - - scipy>=1.11.0 - - cylp>=0.91.5 ; extra == 'cbc' - - cvxopt ; extra == 'cvxopt' - - diffcp ; extra == 'diffcp' - - ecos ; extra == 'ecos' - - ecos ; extra == 'ecos-bb' - - ortools>=9.7,<9.12 ; extra == 'glop' - - cvxopt ; extra == 'glpk' - - cvxopt ; extra == 'glpk-mi' - - gurobipy ; extra == 'gurobi' - - highspy ; extra == 'highs' - - mosek ; extra == 'mosek' - - ortools>=9.7,<9.12 ; extra == 'pdlp' - - piqp ; extra == 'piqp' - - proxsuite ; extra == 'proxqp' - - qoco ; extra == 'qoco' - - pyscipopt ; extra == 'scip' - - scipy ; extra == 'scipy' - - xpress ; extra == 'xpress' - - daqp ; extra == 'daqp' - - pytest ; extra == 'testing' - - hypothesis ; extra == 'testing' - - sphinx ; extra == 'doc' - - sphinxcontrib-jquery ; extra == 'doc' - - sphinx-inline-tabs ; extra == 'doc' - - sphinx-design ; extra == 'doc' - - sphinx-immaterial>=0.11.7 ; extra == 'doc' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/09/68/e4c9090172596b6325fad8be5a3742f4a86dc258f2019bd1889a932c592a/cvxpy_base-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl - name: cvxpy-base - version: 1.9.2 - sha256: a32bdec8d161a7ea003c0dce63fd8affdc21aeada08ccf07faaed2d40708a2f1 + version: 1.3.0 + sha256: de35dc5241431886e709e20a14d6597ed07c9f1e8b4bfcffde2190ca5b700ee8 + requires_python: '>=3.7,<4.0' +- pypi: https://files.pythonhosted.org/packages/0e/25/7384a92ca7079a902717b53bb6da674953e744cdaf46114727d73b2cc896/cvxpy-1.9.1-cp311-cp311-macosx_10_9_universal2.whl + name: cvxpy + version: 1.9.1 + sha256: 0ed5e3af294f4cc060dbcdf9ecf21a36247bc4ff89b4b390f5def989e42a23db requires_dist: + - osqp>=1.0.0 + - clarabel>=0.5.0 + - scs>=3.2.4.post1 - numpy>=2.0.0 - scipy>=1.13.0 + - highspy>=1.11.0 - qdldl>=0.1.7.post0 - sparsediffpy>=0.3.0,<0.4.0 - cylp>=0.91.5 ; extra == 'cbc' @@ -9044,13 +11067,17 @@ packages: - numpy ; extra == 'matrixapi' - scipy ; extra == 'matrixapi' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/12/24/8fc849d3dc3eb136d1395bdcaccdfae752466262cd8165c73e38f2facad7/cvxpy_base-1.9.2-cp311-cp311-macosx_10_9_universal2.whl - name: cvxpy-base - version: 1.9.2 - sha256: 8434e15d1a78986237669557e8b3080c9ef5d3bba30c2d5a6ee6986dd07f84a4 +- pypi: https://files.pythonhosted.org/packages/11/3a/d8e7b83678e8ca959b8409db265deaccb0f28dfc2f32a30e3d4037cba111/cvxpy-1.9.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: cvxpy + version: 1.9.1 + sha256: 41bba9aea431568fe863bd1f461659b66efc3154f8d9699a2fef329c5d96bc01 requires_dist: + - osqp>=1.0.0 + - clarabel>=0.5.0 + - scs>=3.2.4.post1 - numpy>=2.0.0 - scipy>=1.13.0 + - highspy>=1.11.0 - qdldl>=0.1.7.post0 - sparsediffpy>=0.3.0,<0.4.0 - cylp>=0.91.5 ; extra == 'cbc' @@ -9122,42 +11149,6 @@ packages: - importlib-metadata>=3.6 ; python_full_version < '3.10' - typing-extensions>=4.14.0 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/1e/b9/c950f938b8cfb957161c2a53578e29619de1516d3f8dcd7fa9f168ef97af/omnipath-1.0.9-py3-none-any.whl - name: omnipath - version: 1.0.9 - sha256: 4f492e88ece3ee117fa242ad49a040010f9f8562749d314373d0b944e855bd31 - requires_dist: - - attrs>=20.2.0 - - docrep>=0.3.1 - - inflect>=4.1.0 - - packaging>=24.2 - - pandas>=1.2.0 - - requests>=2.24.0 - - tqdm>=4.51.0 - - typing-extensions>=3.7.4.3 - - urllib3>=1.26.0 - - wrapt>=1.12.0 - - attrs>=20.2.0 ; extra == 'docs' - - docrep>=0.3.1 ; extra == 'docs' - - inflect>=4.1.0 ; extra == 'docs' - - packaging>=24.2 ; extra == 'docs' - - pandas>=1.2.0 ; extra == 'docs' - - requests>=2.24.0 ; extra == 'docs' - - sphinx-autodoc-annotation>=1.0.post1 ; extra == 'docs' - - sphinx-autodoc-typehints>=1.10.3 ; extra == 'docs' - - sphinx-copybutton>=0.5.2 ; extra == 'docs' - - sphinx-last-updated-by-git>=0.3.8 ; extra == 'docs' - - sphinx-paramlinks>=0.6.0 ; extra == 'docs' - - sphinx-rtd-theme>=3.0.2 ; extra == 'docs' - - sphinx-toolbox>=3.9.0 ; extra == 'docs' - - sphinx>=4 ; extra == 'docs' - - tqdm>=4.51.0 ; extra == 'docs' - - typing-extensions>=3.7.4.3 ; extra == 'docs' - - urllib3>=1.26.0 ; extra == 'docs' - - wrapt>=1.12.0 ; extra == 'docs' - - networkx>=2.3.0 ; extra == 'graph' - - tox>=3.20.1 ; extra == 'tests' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/1f/e4/b757b7926cc3355ba41ba747afb5e4d6c553d05be840ea25dc47b47b47b1/scs-3.2.7.post2-cp311-cp311-macosx_11_0_arm64.whl name: scs version: 3.2.7.post2 @@ -9166,53 +11157,57 @@ packages: - numpy - scipy requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/29/28/83df019db913031ce826e3ed3fa655df9663d58cc1f083d1adc78a1bb528/decoupler-2.2.0-py3-none-any.whl - name: decoupler - version: 2.2.0 - sha256: b44557e15438ef7af08011bd37101330cf0123c67e53d18ed738c53a832df137 - requires_dist: - - adjusttext - - anndata - - docrep - - marsilea - - numba - - requests - - scipy - - session-info2 - - tqdm - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl - name: more-itertools - version: 10.7.0 - sha256: d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/2b/a8/75e215fb61f65c7dee0a5d2c8e2b9043967fd332b70a4d47478bca45ec10/scs-3.2.7.post2-cp311-cp311-macosx_10_9_x86_64.whl - name: scs - version: 3.2.7.post2 - sha256: 6d551b90d9e2c0497ee17d8c3db325d6fcefa4419057954e68709da8b9184d4f - requires_dist: - - numpy - - scipy - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/30/29/dc00c99535bd5d96638f17e3cf99bda16ca2d99f5a3bed225dac3ca9640b/sparsediffpy-0.3.0-cp311-cp311-macosx_10_9_universal2.whl - name: sparsediffpy - version: 0.3.0 - sha256: 90be888d51592aabbb366534fa1778d8e25d5ec4cfe735b5e922227903520a1b +- pypi: https://files.pythonhosted.org/packages/21/6f/22038a39b64554ce2a3ef2f6030338fccfb2934ecb03fa19338be2077007/cvxpy_base-1.9.1-cp311-cp311-win_amd64.whl + name: cvxpy-base + version: 1.9.1 + sha256: 885216cf82a9c11df226f09210f991823ea1d4f43f09ce3029b09fa68f2b08d8 requires_dist: - numpy>=2.0.0 + - scipy>=1.13.0 + - qdldl>=0.1.7.post0 + - sparsediffpy>=0.3.0,<0.4.0 + - cylp>=0.91.5 ; extra == 'cbc' + - coptpy>=8.0.3 ; extra == 'copt' + - cvxopt ; extra == 'cvxopt' + - diffcp ; extra == 'diffcp' + - ecos ; extra == 'ecos' + - ecos ; extra == 'ecos-bb' + - ortools>=9.7,<9.15 ; extra == 'glop' + - cvxopt ; extra == 'glpk' + - cvxopt ; extra == 'glpk-mi' + - gurobipy ; extra == 'gurobi' + - highspy ; extra == 'highs' + - mosek ; extra == 'mosek' + - ortools>=9.7,<9.15 ; extra == 'pdlp' + - piqp ; extra == 'piqp' + - proxsuite ; extra == 'proxqp' + - qoco ; extra == 'qoco' + - qpalm~=1.2.5 ; extra == 'qpalm' + - pyscipopt ; extra == 'scip' + - scipy ; extra == 'scipy' + - xpress>=9.5 ; extra == 'xpress' + - daqp ; extra == 'daqp' + - knitro ; extra == 'knitro' + - unopy ; extra == 'uno' + - pytest ; extra == 'testing' + - hypothesis ; extra == 'testing' + - sphinx ; extra == 'doc' + - sphinxcontrib-jquery ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-immaterial>=0.11.7 ; extra == 'doc' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - name: threadpoolctl - version: 3.6.0 - sha256: 43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/34/9a/17d45ac78ac8abe79f03b5e44053a4ea1cbf4663cc70cee2c2a507f7e3b2/cvxpy_base-1.9.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - name: cvxpy-base - version: 1.9.2 - sha256: 517af221d0fbaf6adc60c8abd5e630fa990bb9ac4f30394c8249542e596e3963 +- pypi: https://files.pythonhosted.org/packages/23/a9/98359fc64042152c1692929b32e17461667e69075316bc1a7aef8bf0d6ab/cvxpy-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl + name: cvxpy + version: 1.9.1 + sha256: e78eda914db92954ac63c58cd3176349f344bf120f3733fab1dbb5ce7dc88ce9 requires_dist: + - osqp>=1.0.0 + - clarabel>=0.5.0 + - scs>=3.2.4.post1 - numpy>=2.0.0 - scipy>=1.13.0 + - highspy>=1.11.0 - qdldl>=0.1.7.post0 - sparsediffpy>=0.3.0,<0.4.0 - cylp>=0.91.5 ; extra == 'cbc' @@ -9246,6 +11241,31 @@ packages: - sphinx-design ; extra == 'doc' - sphinx-immaterial>=0.11.7 ; extra == 'doc' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl + name: more-itertools + version: 10.7.0 + sha256: d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/2b/a8/75e215fb61f65c7dee0a5d2c8e2b9043967fd332b70a4d47478bca45ec10/scs-3.2.7.post2-cp311-cp311-macosx_10_9_x86_64.whl + name: scs + version: 3.2.7.post2 + sha256: 6d551b90d9e2c0497ee17d8c3db325d6fcefa4419057954e68709da8b9184d4f + requires_dist: + - numpy + - scipy + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/30/29/dc00c99535bd5d96638f17e3cf99bda16ca2d99f5a3bed225dac3ca9640b/sparsediffpy-0.3.0-cp311-cp311-macosx_10_9_universal2.whl + name: sparsediffpy + version: 0.3.0 + sha256: 90be888d51592aabbb366534fa1778d8e25d5ec4cfe735b5e922227903520a1b + requires_dist: + - numpy>=2.0.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl + name: threadpoolctl + version: 3.6.0 + sha256: 43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/34/f7/f82698b6d00a40a80c67e9a32b2628886aadfaf7f7b32daa12a463e44571/clarabel-0.11.1-cp39-abi3-macosx_10_12_x86_64.whl name: clarabel version: 0.11.1 @@ -9323,43 +11343,6 @@ packages: - scipy - cffi requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/42/84/ec070a699d38e648fcef8599da7c031cd2fafc889bbe8a31500336805161/cvxpy-1.6.6-cp311-cp311-win_amd64.whl - name: cvxpy - version: 1.6.6 - sha256: 200f969a171e7b7f6d682e51c9c595e7fec7014de551355a915aad16e9a824b2 - requires_dist: - - osqp>=0.6.2 - - clarabel>=0.5.0 - - scs>=3.2.4.post1 - - numpy>=1.21.6 - - scipy>=1.11.0 - - cylp>=0.91.5 ; extra == 'cbc' - - cvxopt ; extra == 'cvxopt' - - diffcp ; extra == 'diffcp' - - ecos ; extra == 'ecos' - - ecos ; extra == 'ecos-bb' - - ortools>=9.7,<9.12 ; extra == 'glop' - - cvxopt ; extra == 'glpk' - - cvxopt ; extra == 'glpk-mi' - - gurobipy ; extra == 'gurobi' - - highspy ; extra == 'highs' - - mosek ; extra == 'mosek' - - ortools>=9.7,<9.12 ; extra == 'pdlp' - - piqp ; extra == 'piqp' - - proxsuite ; extra == 'proxqp' - - qoco ; extra == 'qoco' - - pyscipopt ; extra == 'scip' - - scipy ; extra == 'scipy' - - xpress ; extra == 'xpress' - - daqp ; extra == 'daqp' - - pytest ; extra == 'testing' - - hypothesis ; extra == 'testing' - - sphinx ; extra == 'doc' - - sphinxcontrib-jquery ; extra == 'doc' - - sphinx-inline-tabs ; extra == 'doc' - - sphinx-design ; extra == 'doc' - - sphinx-immaterial>=0.11.7 ; extra == 'doc' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/44/8e/250fab1cafeea43f4eb11f1d64cd6313f639965ff62cb0d9da3883655781/docrep-0.3.2.tar.gz name: docrep version: 0.3.2 @@ -9379,6 +11362,17 @@ packages: version: 1.17.2 sha256: acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/48/45/6714276be39f1f0f7c2795fb466c39640bbcc541e151342f05f61d2f24a5/highspy-1.15.1-cp311-cp311-win_amd64.whl + name: highspy + version: 1.15.1 + sha256: 4715fcfbcff50fdbcc288499116f7e5722a9f9d2647087d54317febb94ec2b32 + requires_dist: + - numpy + - typing-extensions ; python_full_version < '3.10' + - pytest ; extra == 'test' + - numpy ; extra == 'test' + - highspy-extras==1.15.1 ; extra == 'extras' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl name: wrapt version: 1.17.2 @@ -9392,46 +11386,6 @@ packages: - numpy - matplotlib - scipy -- pypi: https://files.pythonhosted.org/packages/53/7b/3de5ee5408f5d86f763f007c55618a1bb9f0ab1444c00fa82105d2a6a378/cvxpy_base-1.9.2-cp311-cp311-win_amd64.whl - name: cvxpy-base - version: 1.9.2 - sha256: 9d40459ebb92c29c97db5e0820d2aa3e9b57adef45f501e48049f0890c701513 - requires_dist: - - numpy>=2.0.0 - - scipy>=1.13.0 - - qdldl>=0.1.7.post0 - - sparsediffpy>=0.3.0,<0.4.0 - - cylp>=0.91.5 ; extra == 'cbc' - - coptpy>=8.0.3 ; extra == 'copt' - - cvxopt ; extra == 'cvxopt' - - diffcp ; extra == 'diffcp' - - ecos ; extra == 'ecos' - - ecos ; extra == 'ecos-bb' - - ortools>=9.7,<9.15 ; extra == 'glop' - - cvxopt ; extra == 'glpk' - - cvxopt ; extra == 'glpk-mi' - - gurobipy ; extra == 'gurobi' - - highspy ; extra == 'highs' - - mosek ; extra == 'mosek' - - ortools>=9.7,<9.15 ; extra == 'pdlp' - - piqp ; extra == 'piqp' - - proxsuite ; extra == 'proxqp' - - qoco ; extra == 'qoco' - - qpalm~=1.2.5 ; extra == 'qpalm' - - pyscipopt ; extra == 'scip' - - scipy ; extra == 'scipy' - - xpress>=9.5 ; extra == 'xpress' - - daqp ; extra == 'daqp' - - knitro ; extra == 'knitro' - - unopy ; extra == 'uno' - - pytest ; extra == 'testing' - - hypothesis ; extra == 'testing' - - sphinx ; extra == 'doc' - - sphinxcontrib-jquery ; extra == 'doc' - - sphinx-inline-tabs ; extra == 'doc' - - sphinx-design ; extra == 'doc' - - sphinx-immaterial>=0.11.7 ; extra == 'doc' - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/5a/42/c6b41711c2bee01c4800ad8da2862c0b6d2956a399d23ce4d77f2ca7f0c7/scikit_learn-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl name: scikit-learn version: 1.7.0 @@ -9493,6 +11447,17 @@ packages: - pooch>=1.6.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5d/69/74e9614a6e49f5e07fbb91a5cebad79bd31903888ca6b4f1c75dcf01df3b/highspy-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl + name: highspy + version: 1.15.1 + sha256: 45eb9f022f9083ef2e56d66f972d5fd40e6634f4497194b1f3f215ca0e8ea958 + requires_dist: + - numpy + - typing-extensions ; python_full_version < '3.10' + - pytest ; extra == 'test' + - numpy ; extra == 'test' + - highspy-extras==1.15.1 ; extra == 'extras' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl name: jinja2 version: 3.1.6 @@ -9552,79 +11517,6 @@ packages: requires_dist: - pycparser requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl - name: idna - version: '3.10' - sha256: 946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 - requires_dist: - - ruff>=0.6.2 ; extra == 'all' - - mypy>=1.11.2 ; extra == 'all' - - pytest>=8.3.2 ; extra == 'all' - - flake8>=7.1.1 ; extra == 'all' - requires_python: '>=3.6' -- pypi: https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl - name: attrs - version: 25.3.0 - sha256: 427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3 - requires_dist: - - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'benchmark' - - hypothesis ; extra == 'benchmark' - - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'benchmark' - - pympler ; extra == 'benchmark' - - pytest-codspeed ; extra == 'benchmark' - - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'benchmark' - - pytest-xdist[psutil] ; extra == 'benchmark' - - pytest>=4.3.0 ; extra == 'benchmark' - - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'cov' - - coverage[toml]>=5.3 ; extra == 'cov' - - hypothesis ; extra == 'cov' - - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'cov' - - pympler ; extra == 'cov' - - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'cov' - - pytest-xdist[psutil] ; extra == 'cov' - - pytest>=4.3.0 ; extra == 'cov' - - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'dev' - - hypothesis ; extra == 'dev' - - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'dev' - - pre-commit-uv ; extra == 'dev' - - pympler ; extra == 'dev' - - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'dev' - - pytest-xdist[psutil] ; extra == 'dev' - - pytest>=4.3.0 ; extra == 'dev' - - cogapp ; extra == 'docs' - - furo ; extra == 'docs' - - myst-parser ; extra == 'docs' - - sphinx ; extra == 'docs' - - sphinx-notfound-page ; extra == 'docs' - - sphinxcontrib-towncrier ; extra == 'docs' - - towncrier ; extra == 'docs' - - cloudpickle ; platform_python_implementation == 'CPython' and extra == 'tests' - - hypothesis ; extra == 'tests' - - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests' - - pympler ; extra == 'tests' - - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests' - - pytest-xdist[psutil] ; extra == 'tests' - - pytest>=4.3.0 ; extra == 'tests' - - mypy>=1.11.1 ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests-mypy' - - pytest-mypy-plugins ; python_full_version >= '3.10' and platform_python_implementation == 'CPython' and extra == 'tests-mypy' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl - name: requests - version: 2.32.4 - sha256: 27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c - requires_dist: - - charset-normalizer>=2,<4 - - idna>=2.5,<4 - - urllib3>=1.21.1,<3 - - certifi>=2017.4.17 - - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' - - chardet>=3.0.2,<6 ; extra == 'use-chardet-on-py3' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/84/ae/320161bd181fc06471eed047ecce67b693fd7515b16d495d8932db763426/certifi-2025.6.15-py3-none-any.whl - name: certifi - version: 2025.6.15 - sha256: 2e0c7ce7cb5d8f8634ca55d2ba7e6ec2689a2fd6537d8dec1296a477a4910057 - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/86/92/bd62fb14acf1f74ed021b3e2f105466a6b47b0ebedc5daddada4b88b47b4/legendkit-0.3.6-py3-none-any.whl name: legendkit version: 0.3.6 @@ -9670,84 +11562,93 @@ packages: - pytest-enabler>=2.2 ; extra == 'enabler' - pytest-mypy ; extra == 'type' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: charset-normalizer - version: 3.4.2 - sha256: fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f - requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/95/da/0d1df507cf574b3f224ccc3d45244c9a1d732c81dcb26b1e8a766ae271a8/scipy-1.17.1-cp311-cp311-win_amd64.whl - name: scipy - version: 1.17.1 - sha256: d30e57c72013c2a4fe441c2fcb8e77b14e152ad48b5464858e07e2ad9fbfceff +- pypi: https://files.pythonhosted.org/packages/8b/5d/815b8f0488fda02e765b85e7a1ed2bf26b7d705fb1240ca842c4493d9414/highspy-1.15.1-cp311-cp311-macosx_11_0_arm64.whl + name: highspy + version: 1.15.1 + sha256: 4b4c7e7af8d7927ed77836e9b869cbae55d6a74b85bb90d04776440b5e14c32b requires_dist: - - numpy>=1.26.4,<2.7 - - pytest>=8.0.0 ; extra == 'test' - - pytest-cov ; extra == 'test' - - pytest-timeout ; extra == 'test' - - pytest-xdist ; extra == 'test' - - asv ; extra == 'test' - - mpmath ; extra == 'test' - - gmpy2 ; extra == 'test' - - threadpoolctl ; extra == 'test' - - scikit-umfpack ; extra == 'test' - - pooch ; extra == 'test' - - hypothesis>=6.30 ; extra == 'test' - - array-api-strict>=2.3.1 ; extra == 'test' - - cython ; extra == 'test' - - meson ; extra == 'test' - - ninja ; sys_platform != 'emscripten' and extra == 'test' - - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' - - intersphinx-registry ; extra == 'doc' - - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' - - sphinx-copybutton ; extra == 'doc' - - sphinx-design>=0.4.0 ; extra == 'doc' - - matplotlib>=3.5 ; extra == 'doc' - - numpydoc ; extra == 'doc' - - jupytext ; extra == 'doc' - - myst-nb>=1.2.0 ; extra == 'doc' - - pooch ; extra == 'doc' - - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' - - jupyterlite-pyodide-kernel ; extra == 'doc' - - linkify-it-py ; extra == 'doc' - - tabulate ; extra == 'doc' - - click<8.3.0 ; extra == 'dev' - - spin ; extra == 'dev' - - mypy==1.10.0 ; extra == 'dev' - - typing-extensions ; extra == 'dev' - - types-psutil ; extra == 'dev' - - pycodestyle ; extra == 'dev' - - ruff>=0.12.0 ; extra == 'dev' - - cython-lint>=0.12.2 ; extra == 'dev' + - numpy + - typing-extensions ; python_full_version < '3.10' + - pytest ; extra == 'test' + - numpy ; extra == 'test' + - highspy-extras==1.15.1 ; extra == 'extras' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/8f/a1/83ea22ad16d6f016025f0eebd9c5daa9dda73629cab59d960dc3ea3f4bef/cvxpy_base-1.9.1-cp311-cp311-macosx_10_9_x86_64.whl + name: cvxpy-base + version: 1.9.1 + sha256: 7091739eb9c9ecae9326b5f43d70499fe488f7e2f26d00710a9ad8c9974d9ec1 + requires_dist: + - numpy>=2.0.0 + - scipy>=1.13.0 + - qdldl>=0.1.7.post0 + - sparsediffpy>=0.3.0,<0.4.0 + - cylp>=0.91.5 ; extra == 'cbc' + - coptpy>=8.0.3 ; extra == 'copt' + - cvxopt ; extra == 'cvxopt' + - diffcp ; extra == 'diffcp' + - ecos ; extra == 'ecos' + - ecos ; extra == 'ecos-bb' + - ortools>=9.7,<9.15 ; extra == 'glop' + - cvxopt ; extra == 'glpk' + - cvxopt ; extra == 'glpk-mi' + - gurobipy ; extra == 'gurobi' + - highspy ; extra == 'highs' + - mosek ; extra == 'mosek' + - ortools>=9.7,<9.15 ; extra == 'pdlp' + - piqp ; extra == 'piqp' + - proxsuite ; extra == 'proxqp' + - qoco ; extra == 'qoco' + - qpalm~=1.2.5 ; extra == 'qpalm' + - pyscipopt ; extra == 'scip' + - scipy ; extra == 'scipy' + - xpress>=9.5 ; extra == 'xpress' + - daqp ; extra == 'daqp' + - knitro ; extra == 'knitro' + - unopy ; extra == 'uno' + - pytest ; extra == 'testing' + - hypothesis ; extra == 'testing' + - sphinx ; extra == 'doc' + - sphinxcontrib-jquery ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-immaterial>=0.11.7 ; extra == 'doc' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/99/67/d45bd634b1755d50f3a333baa7e016227c2ac9a516da1fef4d08ae9417f5/cvxpy-1.6.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/90/5f/90666e73bc409693a0edf4f10c1eb47d6d134754bc44ca6770bdde89c347/cvxpy-1.9.1-cp311-cp311-win_amd64.whl name: cvxpy - version: 1.6.6 - sha256: eb67053bb3ffb886af17f198fe73f9f0c963865de47ed716af8728a1a2763507 + version: 1.9.1 + sha256: a0d8589b159deba642cd339c4bc0903ebf9ef8c6d3c318ea7ed6b81269828a5e requires_dist: - - osqp>=0.6.2 + - osqp>=1.0.0 - clarabel>=0.5.0 - scs>=3.2.4.post1 - - numpy>=1.21.6 - - scipy>=1.11.0 + - numpy>=2.0.0 + - scipy>=1.13.0 + - highspy>=1.11.0 + - qdldl>=0.1.7.post0 + - sparsediffpy>=0.3.0,<0.4.0 - cylp>=0.91.5 ; extra == 'cbc' + - coptpy>=8.0.3 ; extra == 'copt' - cvxopt ; extra == 'cvxopt' - diffcp ; extra == 'diffcp' - ecos ; extra == 'ecos' - ecos ; extra == 'ecos-bb' - - ortools>=9.7,<9.12 ; extra == 'glop' + - ortools>=9.7,<9.15 ; extra == 'glop' - cvxopt ; extra == 'glpk' - cvxopt ; extra == 'glpk-mi' - gurobipy ; extra == 'gurobi' - highspy ; extra == 'highs' - mosek ; extra == 'mosek' - - ortools>=9.7,<9.12 ; extra == 'pdlp' + - ortools>=9.7,<9.15 ; extra == 'pdlp' - piqp ; extra == 'piqp' - proxsuite ; extra == 'proxqp' - qoco ; extra == 'qoco' + - qpalm~=1.2.5 ; extra == 'qpalm' - pyscipopt ; extra == 'scip' - scipy ; extra == 'scipy' - - xpress ; extra == 'xpress' + - xpress>=9.5 ; extra == 'xpress' - daqp ; extra == 'daqp' + - knitro ; extra == 'knitro' + - unopy ; extra == 'uno' - pytest ; extra == 'testing' - hypothesis ; extra == 'testing' - sphinx ; extra == 'doc' @@ -9755,7 +11656,7 @@ packages: - sphinx-inline-tabs ; extra == 'doc' - sphinx-design ; extra == 'doc' - sphinx-immaterial>=0.11.7 ; extra == 'doc' - requires_python: '>=3.9' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/9b/36/9c969e55589c022de50c8b76ffa1df4526faa5458d485be3efce25c2a85b/sparsediffpy-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: sparsediffpy version: 0.3.0 @@ -9855,22 +11756,6 @@ packages: requires_dist: - numpy>=2.0.0 requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl - name: urllib3 - version: 2.5.0 - sha256: e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc - requires_dist: - - brotli>=1.0.9 ; platform_python_implementation == 'CPython' and extra == 'brotli' - - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' - - h2>=4,<5 ; extra == 'h2' - - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' - - zstandard>=0.18.0 ; extra == 'zstd' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl - name: charset-normalizer - version: 3.4.2 - sha256: e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28 - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/b0/8f/13650cfe25762b51175c677330e6471d5d2c5851a6fbd6df77f0681bb34e/clarabel-0.11.1-cp39-abi3-macosx_11_0_arm64.whl name: clarabel version: 0.11.1 @@ -9902,6 +11787,54 @@ packages: version: 1.17.2 sha256: 1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/b9/08/6862cad708effcf16baabbb9e6dae1d469858764dd38ec09677f9f2b0755/decoupler-2.1.4-py3-none-any.whl + name: decoupler + version: 2.1.4 + sha256: 69da76f0c44f29124407f4edecf74dc542adcea5c49bd72a5e1ef82638b41397 + requires_dist: + - adjusttext + - anndata + - docrep + - marsilea + - numba + - requests + - scipy + - session-info2 + - tqdm + - pre-commit ; extra == 'dev' + - twine>=4.0.2 ; extra == 'dev' + - docutils>=0.8,!=0.18.*,!=0.19.* ; extra == 'doc' + - ipykernel ; extra == 'doc' + - ipython ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - pandas ; extra == 'doc' + - setuptools ; extra == 'doc' + - sphinx-autodoc-typehints ; extra == 'doc' + - sphinx-book-theme>=1 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-tabs ; extra == 'doc' + - sphinx>=8.1 ; extra == 'doc' + - sphinxcontrib-bibtex>=1 ; extra == 'doc' + - sphinxext-opengraph ; extra == 'doc' + - dcor ; extra == 'full' + - igraph ; extra == 'full' + - ipywidgets ; extra == 'full' + - pydeseq2 ; extra == 'full' + - scanpy ; extra == 'full' + - xgboost ; extra == 'full' + - coverage>=7.10 ; extra == 'test' + - dcor ; extra == 'test' + - gseapy ; extra == 'test' + - igraph ; extra == 'test' + - ipywidgets ; extra == 'test' + - memory-profiler ; extra == 'test' + - pydeseq2 ; extra == 'test' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - scanpy ; extra == 'test' + - statsmodels ; extra == 'test' + - xgboost ; extra == 'test' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bf/34/a42b90bff9330ac57e1dcc8c35b978cee47d6e9eee14cb71981b801fc7cf/scs-3.2.7.post2-cp311-cp311-win_amd64.whl name: scs version: 3.2.7.post2 @@ -9978,68 +11911,6 @@ packages: - pooch>=1.6.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/ce/15/b100495df43fc9cf71bb322da4e196772ceb3c0408b16ac82d6cc2584a1b/corneto-1.0.0rc1-py3-none-any.whl - name: corneto - version: 1.0.0rc1 - sha256: 1d1203a430617690f6d1a0200d5b5fac5cd42bace112d9d4b0f93edc69306561 - requires_dist: - - picos>=2.6.0 ; extra == 'research' - - annnet[polars]>=0.2.0,<0.3 ; extra == 'annnet' - - cobra>=0.29.0 ; extra == 'research' - - cvxpy>=1.5.1 ; extra == 'ml' - - cvxpy>=1.5.1 ; extra == 'os' - - cvxpy>=1.5.1 ; extra == 'research' - - cvxpy-base>=1.5.1 - - graphviz>=0.20.1 ; extra == 'os' - - graphviz>=0.20.1 ; extra == 'research' - - gurobipy ; extra == 'research' - - highspy>=1.9.0 ; extra == 'os' - - highspy>=1.9.0 ; extra == 'research' - - jax>=0.6.1 ; extra == 'ml' - - keras>=3.8.0 ; extra == 'ml' - - matplotlib>=3.5.2 ; extra == 'os' - - matplotlib>=3.5.2 ; extra == 'research' - - myst-nb>=0.17.2 ; extra == 'docs' - - myst-parser>=0.18.1 ; extra == 'docs' - - networkx>=3.2.1 ; extra == 'os' - - networkx>=3.2.1 ; extra == 'research' - - numpy>=1.25 - - pandas>=2.2.3 ; extra == 'ml' - - pandas>=2.2.3 ; extra == 'research' - - pcst-fast>=1.0.10 ; extra == 'research' - - pydata-sphinx-theme>=0.16.1 ; extra == 'docs' - - pydot>=3.0.4 ; extra == 'docs' - - pyscipopt>=5.4.1 ; extra == 'os' - - pyscipopt>=5.4.1 ; extra == 'research' - - scikit-learn>=1.6.0 ; extra == 'ml' - - scipy>=1.14.1 - - scipy>=1.14.1 ; extra == 'ml' - - scipy>=1.14.1 ; extra == 'os' - - scipy>=1.14.1 ; extra == 'research' - - sphinx>=5.0 ; extra == 'docs' - - sphinx-autodoc-typehints>=1.21.8 ; extra == 'docs' - - sphinx-design>=0.4.1 ; extra == 'docs' - - sphinx-favicon>=1.0.1 ; extra == 'docs' - - sphinx-hoverxref>=1.3.0 ; extra == 'docs' - - sphinxcontrib-bibtex>=2.5.0 ; extra == 'docs' - - sphinxcontrib-napoleon>=0.7 ; extra == 'docs' - requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl - name: tqdm - version: 4.67.1 - sha256: 26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2 - requires_dist: - - colorama ; sys_platform == 'win32' - - pytest>=6 ; extra == 'dev' - - pytest-cov ; extra == 'dev' - - pytest-timeout ; extra == 'dev' - - pytest-asyncio>=0.24 ; extra == 'dev' - - nbval ; extra == 'dev' - - requests ; extra == 'discord' - - slack-sdk ; extra == 'slack' - - requests ; extra == 'telegram' - - ipywidgets>=6 ; extra == 'notebook' - requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/d1/67/eac43fc67942e3f795c4d9938488eebcd825783ff49b35151422ee09df5f/pydeseq2-0.5.1-py3-none-any.whl name: pydeseq2 version: 0.5.1 @@ -10060,11 +11931,6 @@ packages: - mypy ; extra == 'dev' - pandas-stubs ; extra == 'dev' requires_python: '>=3.10.0' -- pypi: https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl - name: colorama - version: 0.4.6 - sha256: 4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 - requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*' - pypi: https://files.pythonhosted.org/packages/d2/c2/a34097e53efe70a538ae97574ff9e9866e60fc1c792c19da5fd6b56ce7b5/formulaic-1.1.1-py3-none-any.whl name: formulaic version: 1.1.1 @@ -10083,6 +11949,42 @@ packages: - pyarrow>=1 ; extra == 'arrow' - sympy>=1.3,!=1.10 ; extra == 'calculus' requires_python: '>=3.7.2' +- pypi: https://files.pythonhosted.org/packages/d7/ba/704f9e56ae80ef66cf0534e23dac22ada34845f86b5e5b8b3294649d96b6/omnipath-1.0.12-py3-none-any.whl + name: omnipath + version: 1.0.12 + sha256: 28b85360f2f566e3c1e146560f8d3a5c133e221ce93c63ef62b3c71be9a6b003 + requires_dist: + - attrs>=20.2.0 + - docrep>=0.3.1 + - inflect>=4.1.0 + - packaging>=24.2 + - pandas>=1.2.0 + - requests>=2.24.0 + - tqdm>=4.51.0 + - typing-extensions>=3.7.4.3 + - urllib3>=1.26.0 + - wrapt>=1.12.0 + - attrs>=20.2.0 ; extra == 'docs' + - docrep>=0.3.1 ; extra == 'docs' + - inflect>=4.1.0 ; extra == 'docs' + - packaging>=24.2 ; extra == 'docs' + - pandas>=1.2.0 ; extra == 'docs' + - requests>=2.24.0 ; extra == 'docs' + - sphinx-autodoc-annotation>=1.0.post1 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.10.3 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-last-updated-by-git>=0.3.8 ; extra == 'docs' + - sphinx-paramlinks>=0.6.0 ; extra == 'docs' + - sphinx-rtd-theme>=3.0.2 ; extra == 'docs' + - sphinx-toolbox>=3.9.0 ; extra == 'docs' + - sphinx>=4 ; extra == 'docs' + - tqdm>=4.51.0 ; extra == 'docs' + - typing-extensions>=3.7.4.3 ; extra == 'docs' + - urllib3>=1.26.0 ; extra == 'docs' + - wrapt>=1.12.0 ; extra == 'docs' + - networkx>=2.3.0 ; extra == 'graph' + - tox>=3.20.1 ; extra == 'tests' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl name: markupsafe version: 3.0.2 @@ -10115,6 +12017,46 @@ packages: - pytest-subprocess ; extra == 'test' - testing-common-database ; extra == 'test' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/dc/2f/b189126765129032b8ce5b17f3a38bf55bcd5a4ceaf30a17d1eff2422d21/cvxpy_base-1.9.1-cp311-cp311-macosx_10_9_universal2.whl + name: cvxpy-base + version: 1.9.1 + sha256: 7a2e9bf4b45752d5f3ed9f1f756e0fff78f3eb353655ee3847ea46c03fd6ac15 + requires_dist: + - numpy>=2.0.0 + - scipy>=1.13.0 + - qdldl>=0.1.7.post0 + - sparsediffpy>=0.3.0,<0.4.0 + - cylp>=0.91.5 ; extra == 'cbc' + - coptpy>=8.0.3 ; extra == 'copt' + - cvxopt ; extra == 'cvxopt' + - diffcp ; extra == 'diffcp' + - ecos ; extra == 'ecos' + - ecos ; extra == 'ecos-bb' + - ortools>=9.7,<9.15 ; extra == 'glop' + - cvxopt ; extra == 'glpk' + - cvxopt ; extra == 'glpk-mi' + - gurobipy ; extra == 'gurobi' + - highspy ; extra == 'highs' + - mosek ; extra == 'mosek' + - ortools>=9.7,<9.15 ; extra == 'pdlp' + - piqp ; extra == 'piqp' + - proxsuite ; extra == 'proxqp' + - qoco ; extra == 'qoco' + - qpalm~=1.2.5 ; extra == 'qpalm' + - pyscipopt ; extra == 'scip' + - scipy ; extra == 'scipy' + - xpress>=9.5 ; extra == 'xpress' + - daqp ; extra == 'daqp' + - knitro ; extra == 'knitro' + - unopy ; extra == 'uno' + - pytest ; extra == 'testing' + - hypothesis ; extra == 'testing' + - sphinx ; extra == 'doc' + - sphinxcontrib-jquery ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-design ; extra == 'doc' + - sphinx-immaterial>=0.11.7 ; extra == 'doc' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/e6/c5/7d7c8f2f5aa581408c8bae8d3615fdf1e9adf6258c27c30c8b14385d2d50/qdldl-0.1.9.post1-cp311-cp311-macosx_11_0_arm64.whl name: qdldl version: 0.1.9.post1 @@ -10130,35 +12072,105 @@ packages: - numpy - scipy requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/e9/62/59d0634be0ef33b46108d83e62847c5cb2dfa117915495d2b8271b999547/cvxpy-1.6.6-cp311-cp311-macosx_10_9_universal2.whl - name: cvxpy - version: 1.6.6 - sha256: d9046f1481d0b518efe82c4c8fd29ad1e7878bd1c426a29a1d4b770e620dd12c +- pypi: https://files.pythonhosted.org/packages/e8/1e/02a4d96e20320fdd91d77c30040fc00db89d08d95549f96f6f8afecd0948/corneto-1.0.0rc5-py3-none-any.whl + name: corneto + version: 1.0.0rc5 + sha256: f12c43fe6f7532232b863560fd325718fdde7b64c9ca784430c6955ff2f60cfd requires_dist: - - osqp>=0.6.2 - - clarabel>=0.5.0 - - scs>=3.2.4.post1 - - numpy>=1.21.6 - - scipy>=1.11.0 + - picos>=2.6.0 ; extra == 'research' + - annnet[polars]>=0.2.0,<0.3 ; extra == 'annnet' + - cobra>=0.29.0 ; extra == 'research' + - cvxpy>=1.5.1 ; extra == 'ml' + - cvxpy>=1.5.1 ; extra == 'os' + - cvxpy>=1.5.1 ; extra == 'research' + - cvxpy-base>=1.5.1 + - graphviz>=0.20.1 ; extra == 'os' + - graphviz>=0.20.1 ; extra == 'plot' + - graphviz>=0.20.1 ; extra == 'research' + - gurobipy ; extra == 'research' + - highspy>=1.9.0 ; extra == 'os' + - highspy>=1.9.0 ; extra == 'research' + - jax>=0.6.1 ; extra == 'ml' + - keras>=3.8.0 ; extra == 'ml' + - matplotlib>=3.5.2 ; extra == 'os' + - matplotlib>=3.5.2 ; extra == 'plot' + - matplotlib>=3.5.2 ; extra == 'research' + - myst-nb>=0.17.2 ; extra == 'docs' + - myst-parser>=0.18.1 ; extra == 'docs' + - networkx>=3.2.1 ; extra == 'os' + - networkx>=3.2.1 ; extra == 'plot' + - networkx>=3.2.1 ; extra == 'research' + - numpy>=1.25 + - pandas>=2.2.3 ; extra == 'ml' + - pandas>=2.2.3 ; extra == 'research' + - pcst-fast>=1.0.10 ; extra == 'research' + - pydata-sphinx-theme>=0.16.1 ; extra == 'docs' + - pydot>=3.0.4 ; extra == 'docs' + - pyscipopt>=5.4.1 ; extra == 'os' + - pyscipopt>=5.4.1 ; extra == 'research' + - scikit-learn>=1.6.0 ; extra == 'ml' + - scipy>=1.14.1 + - scipy>=1.14.1 ; extra == 'ml' + - scipy>=1.14.1 ; extra == 'os' + - scipy>=1.14.1 ; extra == 'research' + - sphinx>=5.0 ; extra == 'docs' + - sphinx-autodoc-typehints>=1.21.8 ; extra == 'docs' + - sphinx-design>=0.4.1 ; extra == 'docs' + - sphinx-favicon>=1.0.1 ; extra == 'docs' + - sphinx-hoverxref>=1.3.0 ; extra == 'docs' + - sphinxcontrib-bibtex>=2.5.0 ; extra == 'docs' + - sphinxcontrib-napoleon>=0.7 ; extra == 'docs' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/ea/e1/33203651c73e126bba82788e3d7813330e987df1e3c31ab36f47dd5878d6/qdldl-0.1.9.post1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: qdldl + version: 0.1.9.post1 + sha256: e6d333d1de8f39ca3c34d0d88ee00a3d1b0d90f54dafad8d554b646c6110c7dd + requires_dist: + - numpy>=1.7 + - scipy>=0.13.2 +- pypi: https://files.pythonhosted.org/packages/ed/bb/0588b8137df2a0ae55a9a8ad40eff40561b60d6f76dbffd5ab4f4f6095f0/highspy-1.15.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: highspy + version: 1.15.1 + sha256: a24329c328942b37a6a318ecf163d07dd387974f071b98b4498725eaea80f06f + requires_dist: + - numpy + - typing-extensions ; python_full_version < '3.10' + - pytest ; extra == 'test' + - numpy ; extra == 'test' + - highspy-extras==1.15.1 ; extra == 'extras' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ef/a1/c8d4bbdd53c61de59ab5ded2b4457a972a5b53bf049eb918ea0c8a045e5f/cvxpy_base-1.9.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: cvxpy-base + version: 1.9.1 + sha256: 7072e3da2fee45c628daee608d19ba8093bec3d48b93d746c3cba8b48f6810ad + requires_dist: + - numpy>=2.0.0 + - scipy>=1.13.0 + - qdldl>=0.1.7.post0 + - sparsediffpy>=0.3.0,<0.4.0 - cylp>=0.91.5 ; extra == 'cbc' + - coptpy>=8.0.3 ; extra == 'copt' - cvxopt ; extra == 'cvxopt' - diffcp ; extra == 'diffcp' - ecos ; extra == 'ecos' - ecos ; extra == 'ecos-bb' - - ortools>=9.7,<9.12 ; extra == 'glop' + - ortools>=9.7,<9.15 ; extra == 'glop' - cvxopt ; extra == 'glpk' - cvxopt ; extra == 'glpk-mi' - gurobipy ; extra == 'gurobi' - highspy ; extra == 'highs' - mosek ; extra == 'mosek' - - ortools>=9.7,<9.12 ; extra == 'pdlp' + - ortools>=9.7,<9.15 ; extra == 'pdlp' - piqp ; extra == 'piqp' - proxsuite ; extra == 'proxqp' - qoco ; extra == 'qoco' + - qpalm~=1.2.5 ; extra == 'qpalm' - pyscipopt ; extra == 'scip' - scipy ; extra == 'scipy' - - xpress ; extra == 'xpress' + - xpress>=9.5 ; extra == 'xpress' - daqp ; extra == 'daqp' + - knitro ; extra == 'knitro' + - unopy ; extra == 'uno' - pytest ; extra == 'testing' - hypothesis ; extra == 'testing' - sphinx ; extra == 'doc' @@ -10166,14 +12178,7 @@ packages: - sphinx-inline-tabs ; extra == 'doc' - sphinx-design ; extra == 'doc' - sphinx-immaterial>=0.11.7 ; extra == 'doc' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/ea/e1/33203651c73e126bba82788e3d7813330e987df1e3c31ab36f47dd5878d6/qdldl-0.1.9.post1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl - name: qdldl - version: 0.1.9.post1 - sha256: e6d333d1de8f39ca3c34d0d88ee00a3d1b0d90f54dafad8d554b646c6110c7dd - requires_dist: - - numpy>=1.7 - - scipy>=0.13.2 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: markupsafe version: 3.0.2 @@ -10247,22 +12252,6 @@ packages: requires_dist: - numpy>=1.7 - scipy>=0.13.2 -- pypi: https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl - name: platformdirs - version: 4.3.8 - sha256: ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4 - requires_dist: - - furo>=2024.8.6 ; extra == 'docs' - - proselint>=0.14 ; extra == 'docs' - - sphinx-autodoc-typehints>=3 ; extra == 'docs' - - sphinx>=8.1.3 ; extra == 'docs' - - appdirs==1.4.4 ; extra == 'test' - - covdefaults>=2.3 ; extra == 'test' - - pytest-cov>=6 ; extra == 'test' - - pytest-mock>=3.14 ; extra == 'test' - - pytest>=8.3.4 ; extra == 'test' - - mypy>=1.14.1 ; extra == 'type' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/ff/6b/d45873c5e0242196f042d555526f92aa9e0c32355a1be1ff8c27f077fd37/cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: cffi version: 1.17.1 diff --git a/docs/tutorials/contrib/multi_condition_tutorial/pixi.toml b/docs/tutorials/contrib/multi_condition_tutorial/pixi.toml index a9260b60c..14bacfb32 100644 --- a/docs/tutorials/contrib/multi_condition_tutorial/pixi.toml +++ b/docs/tutorials/contrib/multi_condition_tutorial/pixi.toml @@ -10,13 +10,23 @@ matplotlib = "==3.10.3" seaborn = "==0.13.2" dcor = "==0.6" python-graphviz = "*" -pandas = ">=2.2,<3" +graphviz = "*" +numpy = "*" +pandas = "==2.3.3" +ipykernel = "*" +papermill = "*" +nbclient = "*" +charset-normalizer = "*" pip = "*" [pypi-dependencies] gurobipy = ">=12.0.0" -decoupler = "==2.2.0" -omnipath = "==1.0.9" +decoupler = "==2.1.4" +omnipath = "==1.0.12" pydeseq2 = "==0.5.1" -cvxpy = "==1.6.6" -corneto = "==1.0.0rc1" +cvxpy = "==1.9.1" +cvxpy-base = "==1.9.1" +corneto = "==1.0.0rc5" + +[tasks] +run-notebook = "python -m papermill multi_condition_carnival.ipynb multi_condition_carnival.ipynb --cwd ." diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index e6083add0..83f359db2 100755 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -10,11 +10,13 @@ :maxdepth: 1 fba/context-specific-metabolic-omics.ipynb +annnet-signaling/annnet-cellnopt-dag.ipynb carnival/single-sample-carnival-transcriptomics.ipynb carnival/multi-receptor-integration.ipynb carnival/network-sampler.ipynb carnival/network-sampler-example.ipynb ml/kpnn-with-sc.ipynb +causal/linear-dag-discovery-sachs.ipynb ``` ## Additional Tutorials diff --git a/pyproject.toml b/pyproject.toml index 8202eb7de..441233dec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,11 @@ repository = "https://github.com/saezlab/corneto/" release = "corneto.release:main" [project.optional-dependencies] +plot = [ + "networkx>=3.2.1", + "matplotlib>=3.5.2", + "graphviz>=0.20.1", +] annnet = [ "annnet[polars]>=0.2.0,<0.3" ] diff --git a/scripts/build_all_docs_local.sh b/scripts/build_all_docs_local.sh index 39c246270..d8a2899a0 100755 --- a/scripts/build_all_docs_local.sh +++ b/scripts/build_all_docs_local.sh @@ -133,7 +133,9 @@ for tag in $(git tag -l "v*" --sort=v:refname); do done echo "==> Updating root index and switcher" -cp "${repo_root}/docs/custom-index.html" "${pages_wt}/index.html" +cp "${repo_root}/docs/landing/index.html" "${pages_wt}/index.html" +mkdir -p "${pages_wt}/assets" +rsync -a --delete "${repo_root}/docs/landing/assets/" "${pages_wt}/assets/" touch "${pages_wt}/.nojekyll" "${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ --output "${pages_wt}/switcher.json" \ diff --git a/scripts/generate_switcher.py b/scripts/generate_switcher.py index 38efa5ad8..468a7edd6 100644 --- a/scripts/generate_switcher.py +++ b/scripts/generate_switcher.py @@ -37,12 +37,7 @@ def build_entries(base_url: str) -> list[dict[str, object]]: "version": "stable", "url": f"{base_url}/stable/", "preferred": True, - }, - { - "name": "latest", - "version": "latest", - "url": f"{base_url}/latest/", - }, + } ] for tag in _get_tags(): entries.append( diff --git a/scripts/prepare_docs_pages.py b/scripts/prepare_docs_pages.py new file mode 100644 index 000000000..5fac3e389 --- /dev/null +++ b/scripts/prepare_docs_pages.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python3 +"""Prepare a checked-out gh-pages tree for one documentation deployment.""" + +from __future__ import annotations + +import argparse +import json +import re +import shutil +from html.parser import HTMLParser +from pathlib import Path +from urllib.parse import unquote, urlparse + +try: + from .generate_switcher import build_entries +except ImportError: # pragma: no cover - direct script execution + from generate_switcher import build_entries + + +VERSION_FOLDER_RE = re.compile(r"^(?:stable|v[0-9A-Za-z][0-9A-Za-z._-]*)$") +CSS_URL_RE = re.compile(r"url\(\s*(['\"]?)(.*?)\1\s*\)", re.IGNORECASE) +SWITCHER_URL_RE = re.compile(r"DOCUMENTATION_OPTIONS\.theme_switcher_json_url\s*=\s*(['\"])(?P.*?)\1") +SWITCHER_VERSION_RE = re.compile(r"DOCUMENTATION_OPTIONS\.theme_switcher_version_match\s*=\s*(['\"])(?P.*?)\1") +ASSET_ATTRIBUTES = {"src", "poster"} +LANDING_HOST = "corneto.org" + + +class _LandingReferenceParser(HTMLParser): + def __init__(self) -> None: + super().__init__() + self.asset_references: list[str] = [] + + def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None: + attributes = dict(attrs) + if tag == "meta" and attributes.get("property") == "og:image" and attributes.get("content"): + self.asset_references.append(attributes["content"]) + if tag == "meta" and attributes.get("name") == "twitter:image" and attributes.get("content"): + self.asset_references.append(attributes["content"]) + for name, value in attrs: + if not value: + continue + if name in ASSET_ATTRIBUTES: + self.asset_references.append(value) + elif name == "srcset": + self.asset_references.extend(item.strip().split()[0] for item in value.split(",") if item.strip()) + elif name == "href" and _is_landing_asset_reference(value): + self.asset_references.append(value) + + +def _asset_relative_path(reference: str) -> Path | None: + parsed = urlparse(reference) + if parsed.scheme in {"data", "mailto", "javascript"}: + return None + if parsed.scheme or parsed.netloc: + if parsed.scheme not in {"http", "https"} or parsed.netloc != LANDING_HOST: + return None + path = unquote(parsed.path).lstrip("/") + else: + path = unquote(parsed.path).lstrip("/") + if not path.startswith("assets/"): + return None + return Path(path) + + +def _is_landing_asset_reference(reference: str) -> bool: + return _asset_relative_path(reference) is not None + + +def validate_landing_bundle(landing_dir: Path) -> list[Path]: + """Validate local asset references and return their bundle-relative paths.""" + landing_dir = landing_dir.resolve() + index_path = landing_dir / "index.html" + assets_dir = landing_dir / "assets" + if not index_path.is_file(): + raise ValueError(f"Landing page is missing: {index_path}") + if not assets_dir.is_dir(): + raise ValueError(f"Landing assets directory is missing: {assets_dir}") + + html = index_path.read_text(encoding="utf-8") + parser = _LandingReferenceParser() + parser.feed(html) + parser.asset_references.extend(match.group(2) for match in CSS_URL_RE.finditer(html)) + + resolved_references: list[Path] = [] + missing: list[str] = [] + invalid: list[str] = [] + for reference in parser.asset_references: + relative_path = _asset_relative_path(reference) + if relative_path is None: + parsed = urlparse(reference) + if not (parsed.scheme or parsed.netloc) and reference not in {"", "/"}: + invalid.append(reference) + continue + candidate = (landing_dir / relative_path).resolve() + try: + candidate.relative_to(assets_dir.resolve()) + except ValueError: + invalid.append(reference) + continue + if not candidate.is_file(): + missing.append(reference) + continue + resolved_references.append(relative_path) + + if invalid: + raise ValueError(f"Landing asset references must use assets/: {sorted(set(invalid))}") + if missing: + raise ValueError(f"Landing assets are missing: {sorted(set(missing))}") + if not resolved_references: + raise ValueError("Landing page does not reference any local assets") + return sorted(set(resolved_references)) + + +def _validate_version_folder(version_folder: str) -> None: + if not VERSION_FOLDER_RE.fullmatch(version_folder): + raise ValueError(f"Unsafe documentation destination: {version_folder!r}") + + +def _validate_nonempty_directory(path: Path, label: str) -> None: + if not path.is_dir() or not any(item.is_file() for item in path.rglob("*")): + raise ValueError(f"{label} is missing or empty: {path}") + + +def validate_built_switcher(build_dir: Path, version_folder: str, base_url: str) -> None: + """Require the generated docs to target the global switcher correctly.""" + index_path = build_dir / "index.html" + if not index_path.is_file(): + raise ValueError(f"Generated documentation index is missing: {index_path}") + html = index_path.read_text(encoding="utf-8") + url_match = SWITCHER_URL_RE.search(html) + version_match = SWITCHER_VERSION_RE.search(html) + if not url_match or not version_match: + raise ValueError("Generated documentation is missing the theme switcher configuration") + + expected_url = f"{base_url.rstrip('/')}/switcher.json" + actual_url = url_match.group("value") + if actual_url != expected_url and not actual_url.startswith(f"{expected_url}?"): + raise ValueError(f"Unexpected switcher URL: expected {expected_url!r}, found {actual_url!r}") + actual_version = version_match.group("value") + if actual_version != version_folder: + raise ValueError(f"Unexpected switcher version match: expected {version_folder!r}, found {actual_version!r}") + + +def _replace_tree(source: Path, destination: Path) -> None: + if destination.is_symlink(): + raise ValueError(f"Refusing to replace symlinked destination: {destination}") + if destination.exists(): + shutil.rmtree(destination) + shutil.copytree(source, destination) + + +def prepare_pages_tree( + *, + pages_dir: Path, + build_dir: Path, + landing_dir: Path, + version_folder: str, + base_url: str, + update_root: bool, +) -> None: + """Update one version and the global Pages files in an existing checkout.""" + _validate_version_folder(version_folder) + if update_root and version_folder != "stable": + raise ValueError("Only the stable deployment may update the root landing page") + pages_dir = pages_dir.resolve() + build_dir = build_dir.resolve() + landing_dir = landing_dir.resolve() + if not pages_dir.is_dir(): + raise ValueError(f"Pages checkout is missing: {pages_dir}") + _validate_nonempty_directory(build_dir, "Sphinx build") + validate_built_switcher(build_dir, version_folder, base_url) + if update_root: + validate_landing_bundle(landing_dir) + + _replace_tree(build_dir, pages_dir / version_folder) + + if update_root: + shutil.copy2(landing_dir / "index.html", pages_dir / "index.html") + _replace_tree(landing_dir / "assets", pages_dir / "assets") + (pages_dir / ".nojekyll").touch() + + switcher_path = pages_dir / "switcher.json" + entries = build_entries(base_url.rstrip("/")) + switcher_path.write_text(json.dumps(entries, indent=2) + "\n", encoding="utf-8") + + +def main() -> int: + """Run the deployment preparation command.""" + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--pages-dir", required=True, type=Path) + parser.add_argument("--build-dir", required=True, type=Path) + parser.add_argument("--landing-dir", required=True, type=Path) + parser.add_argument("--version-folder", required=True) + parser.add_argument("--base-url", required=True) + parser.add_argument("--update-root", action="store_true") + args = parser.parse_args() + prepare_pages_tree( + pages_dir=args.pages_dir, + build_dir=args.build_dir, + landing_dir=args.landing_dir, + version_folder=args.version_folder, + base_url=args.base_url, + update_root=args.update_root, + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/publish_docs_tag.sh b/scripts/publish_docs_tag.sh index ed199e60d..39f418a6e 100755 --- a/scripts/publish_docs_tag.sh +++ b/scripts/publish_docs_tag.sh @@ -4,14 +4,13 @@ set -euo pipefail usage() { cat <<'EOF' Usage: - scripts/publish_docs_tag.sh --tag vX.Y.Z[-suffix] [--base-url URL] [--remote origin] [--python /path/to/python] [--poetry /path/to/poetry] [--update-root] [--keep-temp] [--dry-run] + scripts/publish_docs_tag.sh --tag vX.Y.Z[-suffix] [--base-url URL] [--remote origin] [--python /path/to/python] [--poetry /path/to/poetry] [--keep-temp] [--dry-run] Examples: scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --base-url https://corneto.org scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --python /opt/homebrew/bin/python3.11 scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --poetry /opt/homebrew/bin/poetry - scripts/publish_docs_tag.sh --tag v1.0.0-beta.3 --update-root EOF } @@ -20,7 +19,6 @@ base_url="https://corneto.org" remote="origin" python_bin="" poetry_bin="" -update_root=0 keep_temp=0 dry_run=0 @@ -46,10 +44,6 @@ while [[ $# -gt 0 ]]; do poetry_bin="${2:-}" shift 2 ;; - --update-root) - update_root=1 - shift - ;; --keep-temp) keep_temp=1 shift @@ -153,20 +147,13 @@ fi mkdir -p "${pages_wt}/${tag}" rsync -a --delete "${tag_wt}/docs/_build/html/" "${pages_wt}/${tag}/" -if [[ "${update_root}" -eq 1 ]]; then - echo "==> Updating root index and switcher" - mkdir -p "${pages_wt}" - cp "${tag_wt}/docs/custom-index.html" "${pages_wt}/index.html" - touch "${pages_wt}/.nojekyll" - "${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ - --output "${pages_wt}/switcher.json" \ - --base-url "${base_url}" - "${poetry_bin}" run python "${repo_root}/scripts/patch_switcher_urls.py" \ - --root "${pages_wt}" \ - --new-url "${base_url}/switcher.json" -else - echo "==> Skipping root index/switcher update (use --update-root to enable)" -fi +echo "==> Updating switcher" +"${poetry_bin}" run python "${repo_root}/scripts/generate_switcher.py" \ + --output "${pages_wt}/switcher.json" \ + --base-url "${base_url}" +"${poetry_bin}" run python "${repo_root}/scripts/patch_switcher_urls.py" \ + --root "${pages_wt}" \ + --new-url "${base_url}/switcher.json" echo "==> Committing and pushing gh-pages changes" cd "${pages_wt}" @@ -179,7 +166,7 @@ if [[ -n "$(git status --porcelain)" ]]; then fi git fetch "${remote}" gh-pages >/dev/null 2>&1 || true if ! git merge --ff-only "${remote}/gh-pages" >/dev/null 2>&1; then - echo "Remote gh-pages moved. Refusing to overwrite. Re-run after updating, or use --update-root with a manual merge." >&2 + echo "Remote gh-pages moved. Refusing to overwrite; re-run after updating." >&2 exit 1 fi git push "${remote}" gh-pages diff --git a/tests/graph/test_plotting.py b/tests/graph/test_plotting.py index 764d66ece..a663b91f9 100644 --- a/tests/graph/test_plotting.py +++ b/tests/graph/test_plotting.py @@ -1,9 +1,10 @@ import sys from types import ModuleType +import numpy as np import pytest -from corneto._plotting import to_dot_source +from corneto._plotting import _scaled_magnitudes, _select_solution_sample, to_dot_source from corneto._util import supports_html from corneto.contrib._util import ( DEFAULT_WASM_GRAPHVIZ_JS_URL, @@ -55,6 +56,64 @@ def test_to_dot_source_honors_global_biological_node_shape(): assert '"e_0_source" [shape="point"]' in src +def test_to_dot_source_includes_isolated_vertices(): + g = Graph() + g.add_vertex("isolated") + + src = to_dot_source( + g, + custom_vertex_attr={"isolated": {"shape": "box", "label": "Cue"}}, + ) + + assert '"isolated" [shape="box", label="Cue"]' in src + + +def test_scaled_magnitudes_preserve_zero_and_handle_constant_values(): + assert np.allclose(_scaled_magnitudes(np.zeros(3)), np.zeros(3)) + assert np.allclose( + _scaled_magnitudes(np.array([2.0, 2.0, 0.0]), scale="log", clip_quantile=0.05), + [1.0, 1.0, 0.0], + ) + scaled = _scaled_magnitudes( + np.array([0.0, 1.0, 10.0, 1e6]), + scale="log", + clip_quantile=0.25, + ) + assert np.all(np.isfinite(scaled)) + assert scaled[0] == 0 + assert np.all(np.diff(scaled) >= 0) + assert scaled[-1] == 1 + + +def test_solution_sample_selection_supports_named_samples(): + data = Data.from_cdict( + { + "first": {}, + "second": {}, + } + ) + selected = _select_solution_sample( + { + "vertex_values": np.array([[1.0, -1.0], [0.0, 2.0]]), + "edge_values": np.array([[3.0, 4.0]]), + }, + sample="second", + feature_data=data, + ) + + assert np.allclose(selected["vertex_values"], [-1.0, 2.0]) + assert np.allclose(selected["edge_values"], [4.0]) + + +def test_solution_sample_selection_requires_sample_for_matrix(): + with pytest.raises(ValueError, match="select one with sample"): + _select_solution_sample( + {"vertex_values": np.ones((2, 2))}, + sample=None, + feature_data=None, + ) + + def test_dot_wasm_html_accepts_raw_dot_source(): html = dot_wasm_html('digraph {"A" -> "B";}') assert DEFAULT_WASM_GRAPHVIZ_JS_URL in html @@ -178,6 +237,31 @@ def _fake_plot_with_networkx(graph, **kwargs): assert obj is sentinel_fig +def test_networkx_renderer_uses_filtered_shared_plot_model(): + pytest.importorskip("matplotlib") + pytest.importorskip("networkx") + g = Graph() + g.add_edge("A", "B") + g.add_edge("B", "C") + + figure = g.plot( + renderer="networkx", + edge_indexes=[1], + custom_vertex_attr={ + "B": {"shape": "box", "fillcolor": "#9ACD32", "style": "filled"}, + "C": {"shape": "diamond", "label": "Output"}, + }, + custom_edge_attr={1: {"color": "#C43C39", "penwidth": "3", "arrowhead": "tee"}}, + ) + + axis = figure.axes[0] + labels = {text.get_text() for text in axis.texts} + assert "A" not in labels + assert "B" in labels + assert "Output" in labels + assert len(axis.patches) == 1 + + def test_plot_values_uses_plot_renderer_path(monkeypatch): g = Graph() g.add_edge("A", "B") diff --git a/tests/methods/causal/test_linear_dag.py b/tests/methods/causal/test_linear_dag.py new file mode 100644 index 000000000..03d53ea50 --- /dev/null +++ b/tests/methods/causal/test_linear_dag.py @@ -0,0 +1,757 @@ +"""Tests for flow-supported linear DAG discovery.""" + +from pathlib import Path + +import nbformat +import numpy as np +import pytest +from nbclient import NotebookClient + +from corneto.backend import CvxpyBackend +from corneto.data import Data +from corneto.graph import Graph +from corneto.methods.causal import LinearDAGDiscovery + + +def _single_edge_data(effect: float) -> Data: + return Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "do_A": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0 * effect}, + }, + } + ) + + +def _four_node_interventional_data() -> Data: + """Identifiable noiseless SEM data with interventions on every parent.""" + samples = {} + + def add_sample(name, a, b=None, c=None, *, intervened=()): + if b is None: + b = 1.2 * a + if c is None: + c = -0.8 * a + d = b + 0.7 * c + values = {"A": a, "B": b, "C": c, "D": d} + samples[name] = { + vertex: { + "mapping": "vertex", + "value": value, + **({"intervened": True} if vertex in intervened else {}), + } + for vertex, value in values.items() + } + + for index, a in enumerate((-1.5, -0.4, 0.8, 1.7)): + add_sample(f"obs_{index}", a) + add_sample("do_A_low", -2.0, intervened={"A"}) + add_sample("do_A_high", 2.2, intervened={"A"}) + add_sample("do_B_high", -0.7, b=2.1, intervened={"B"}) + add_sample("do_B_low", 1.1, b=-1.4, intervened={"B"}) + add_sample("do_C_high", -1.0, c=1.8, intervened={"C"}) + add_sample("do_C_low", 0.6, c=-1.7, intervened={"C"}) + return Data.from_cdict(samples) + + +def test_recovers_supported_linear_edge(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + method = LinearDAGDiscovery( + lambda_edges=0.01, + fit_intercept=False, + enforce_signs=True, + backend=backend, + ) + problem = method.build(graph, _single_edge_data(effect=1.5)) + problem.solve() + + assert np.array_equal(method.get_selected_edge_indices(), np.array([0])) + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + assert np.isclose(coefficient[0], 1.5, atol=1e-7) + assert np.array_equal(method.get_edge_usage(), np.array([[True]])) + assert np.isclose(problem.expr.flow.value[0, 0], 1.0, atol=1e-7) + + +def test_known_shift_keeps_soft_target_equation_and_flow_source(backend): + """Known additive shifts retain the target mechanism and its flow source.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = Data.from_cdict( + { + "obs_0": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 0.0}, + }, + "obs_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": {"mapping": "vertex", "value": 2.0}, + "C": {"mapping": "vertex", "value": 2.0}, + }, + "do_A": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 4.0}, + "C": {"mapping": "vertex", "value": 4.0}, + }, + "shift_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": { + "mapping": "vertex", + "value": 5.0, + "intervention": "shift", + "shift": 3.0, + }, + "C": {"mapping": "vertex", "value": 5.0}, + }, + "shift_2": { + "A": {"mapping": "vertex", "value": 2.0}, + "B": { + "mapping": "vertex", + "value": 7.0, + "intervention": "shift", + "shift": 3.0, + }, + "C": {"mapping": "vertex", "value": 7.0}, + }, + } + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ) + problem = method.build(graph, data) + problem.solve() + + assert np.array_equal(method.get_selected_edge_indices(), np.array([0, 1])) + assert method._soft_intervened[1].tolist() == [False, False, False, True, True] + assert method._valid_residual[1].tolist() == [True, True, True, True, True] + assert method._commodity_sources == ["A", "B"] + assert np.all(method._flow_ub[0, 1:] > 0) + commodity_info = method.get_commodity_info() + assert commodity_info[1]["group_count"] == 1 + assert commodity_info[1]["evidence_units"][0]["sample_names"] == ("shift_1", "shift_2") + assert np.allclose(problem.expr.prediction.value[1, :], [0.0, 2.0, 4.0, 5.0, 7.0], atol=1e-7) + + coefficients = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + assert np.allclose(coefficients, [2.0, 1.0], atol=1e-7) + + +def test_estimated_shift_is_shared_by_target_and_intervention_group(backend): + """Replicates in one group use one bounded continuous shift parameter.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "obs_0": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "obs_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "do_A": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "replicate_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": { + "mapping": "vertex", + "value": 5.0, + "intervention": "shift", + "intervention_group": "drug", + }, + }, + "replicate_2": { + "A": {"mapping": "vertex", "value": 2.0}, + "B": { + "mapping": "vertex", + "value": 7.0, + "intervention": "shift", + "intervention_group": "drug", + }, + }, + } + ) + method = LinearDAGDiscovery( + fit_intercept=False, + intervention_shift_bound=4.0, + lambda_intervention_shifts=0.01, + backend=backend, + ) + problem = method.build(graph, data) + + assert method._intervention_design is not None + assert method._intervention_design.effect_keys == (("B", "drug"),) + assert method._intervention_design.mapping.shape == (10, 1) + assert problem.expr.intervention_shift_parameters.shape == (1, 1) + + problem.solve() + + assert np.isclose(np.asarray(problem.expr.intervention_shift_parameters.value).reshape(-1)[0], 3.0, atol=1e-7) + assert np.isclose(np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0], 2.0, atol=1e-7) + + +def test_explicit_intervention_groups_share_one_structural_flow(backend): + """Replicate cells count once per group while equal signatures share a flow.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "drug_1_cell_1": { + "A": { + "mapping": "vertex", + "value": 1.0, + "intervened": True, + "intervention_group": "drug_1", + }, + "B": {"mapping": "vertex", "value": 1.0}, + }, + "drug_1_cell_2": { + "A": { + "mapping": "vertex", + "value": 2.0, + "intervened": True, + "intervention_group": "drug_1", + }, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "drug_2_cell_1": { + "A": { + "mapping": "vertex", + "value": 3.0, + "intervened": True, + "intervention_group": "drug_2", + }, + "B": {"mapping": "vertex", "value": 3.0}, + }, + } + ) + + method = LinearDAGDiscovery(backend=backend) + method.build(graph, data) + + assert method._values.shape[1] == 4 + info = method.get_commodity_info() + assert len(info) == 1 + assert info[0]["source"] == "A" + assert info[0]["group_count"] == 2 + assert tuple(unit["intervention_group"] for unit in info[0]["evidence_units"]) == ("drug_1", "drug_2") + assert info[0]["evidence_units"][0]["sample_names"] == ("drug_1_cell_1", "drug_1_cell_2") + + +def test_ungrouped_replicates_share_one_implicit_flow(backend): + """Absent group metadata creates one implicit unit per signature, not per cell.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "do_A_1": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 1.0}, + }, + "do_A_2": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + } + ) + + method = LinearDAGDiscovery(backend=backend) + method.build(graph, data) + + info = method.get_commodity_info() + assert len(info) == 1 + assert info[0]["group_count"] == 1 + assert info[0]["evidence_units"][0]["explicit_group"] is False + assert info[0]["evidence_units"][0]["sample_names"] == ("do_A_1", "do_A_2") + + +def test_explicit_intervention_group_requires_one_structural_signature(backend): + """Explicit replicate groups cannot hide different measurement masks.""" + graph = Graph.from_tuples([("A", 1, "B"), ("A", 1, "C")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 0.0}, + }, + "do_A_complete": { + "A": { + "mapping": "vertex", + "value": 1.0, + "intervened": True, + "intervention_group": "drug", + }, + "B": {"mapping": "vertex", "value": 1.0}, + "C": {"mapping": "vertex", "value": 1.0}, + }, + "do_A_missing_C": { + "A": { + "mapping": "vertex", + "value": 2.0, + "intervened": True, + "intervention_group": "drug", + }, + "B": {"mapping": "vertex", "value": 2.0}, + "C": {"mapping": "vertex", "value": None}, + }, + } + ) + + with pytest.raises(ValueError, match="inconsistent structural signatures"): + LinearDAGDiscovery(backend=backend).build(graph, data) + + +def test_different_implicit_signatures_remain_separate(backend): + """Ungrouped cells with different eligible sinks require distinct flows.""" + graph = Graph.from_tuples([("A", 1, "B"), ("A", 1, "C")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 0.0}, + }, + "do_A_complete": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 1.0}, + "C": {"mapping": "vertex", "value": 1.0}, + }, + "do_A_missing_C": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + "C": {"mapping": "vertex", "value": None}, + }, + } + ) + + method = LinearDAGDiscovery(backend=backend) + method.build(graph, data) + + info = method.get_commodity_info() + assert len(info) == 2 + assert {record["sink_vertices"] for record in info} == {("B", "C"), ("B",)} + + +def test_coverage_counts_intervention_groups_instead_of_cells(backend): + """Two explicit groups sharing a reachable flow satisfy two coverage units.""" + graph = Graph.from_tuples([("A", 1, "C"), ("D", 1, "B")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 0.0}, + "D": {"mapping": "vertex", "value": 0.0}, + }, + "do_A_1": { + "A": { + "mapping": "vertex", + "value": 1.0, + "intervened": True, + "intervention_group": "drug_1", + }, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 1.0}, + "D": {"mapping": "vertex", "value": 0.0}, + }, + "do_A_2": { + "A": { + "mapping": "vertex", + "value": 2.0, + "intervened": True, + "intervention_group": "drug_2", + }, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 2.0}, + "D": {"mapping": "vertex", "value": 0.0}, + }, + "do_B": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": { + "mapping": "vertex", + "value": 1.0, + "intervened": True, + "intervention_group": "drug_B", + }, + "C": {"mapping": "vertex", "value": 0.0}, + "D": {"mapping": "vertex", "value": 0.0}, + }, + } + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=2 / 3, + backend=backend, + ) + problem = method.build(graph, data) + problem.solve() + + assert np.array_equal( + np.asarray(problem.expr.commodity_group_count.value).reshape(-1), + np.array([2.0, 1.0]), + ) + active = np.asarray(problem.expr.commodity_active.value).reshape(-1) > 0.5 + assert active.tolist() == [True, False] + + strict_problem = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ).build(graph, data) + solve_options = {"primals": None} if str(backend) == "PICOS" else {} + result = strict_problem.solve(**solve_options) + assert str(result.status).lower() in {"infeasible", "infeasible_or_unbounded"} + + +def test_estimated_shift_requires_a_group(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "shift": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": {"mapping": "vertex", "value": 3.0, "intervention": "shift"}, + }, + } + ) + + with pytest.raises(ValueError, match="intervention group"): + LinearDAGDiscovery(backend=backend).build(graph, data) + + +def test_existing_positional_flow_arguments_remain_compatible(): + """New shift options must not change legacy positional argument bindings.""" + method = LinearDAGDiscovery( + 0.01, + 5.0, + True, + 10.0, + None, + "absolute", + True, + None, + None, + False, + "interaction", + "intervened", + 7.0, + ) + + assert method.flow_capacity == 7.0 + assert method.intervention_type_key == "intervention" + + +def test_nan_shift_groups_are_rejected(backend): + """Missing numeric group labels cannot silently create separate effects.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "shift_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": { + "mapping": "vertex", + "value": 3.0, + "intervention": "shift", + "intervention_group": float("nan"), + }, + }, + "shift_2": { + "A": {"mapping": "vertex", "value": 2.0}, + "B": { + "mapping": "vertex", + "value": 5.0, + "intervention": "shift", + "intervention_group": float("nan"), + }, + }, + } + ) + + with pytest.raises(ValueError, match="finite"): + LinearDAGDiscovery(backend=backend).build(graph, data) + + +def test_recovers_identifiable_dag_from_cyclic_prior(backend): + """Recover a multi-level SEM despite reverse and cross-edge distractors.""" + edges = [ + ("A", 1, "B"), + ("A", -1, "C"), + ("B", 1, "D"), + ("C", 1, "D"), + ("B", 1, "A"), + ("C", 1, "A"), + ("D", 1, "B"), + ("D", 1, "C"), + ("B", 1, "C"), + ("C", 1, "B"), + ] + graph = Graph.from_tuples(edges) + method = LinearDAGDiscovery( + lambda_edges=0.01, + coefficient_bound=3, + fit_intercept=False, + max_parents=2, + enforce_signs=True, + backend=backend, + ) + problem = method.build(graph, _four_node_interventional_data()) + problem.solve() + + selected = set(method.get_selected_edge_indices()) + assert selected == {0, 1, 2, 3} + method.get_solution_graph().toposort() + + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + assert np.allclose(coefficient[:4], [1.2, -0.8, 1.0, 0.7], atol=1e-7) + assert np.allclose(coefficient[4:], 0, atol=1e-8) + + usage = method.get_edge_usage() + selected_values = np.asarray(problem.expr.edge_selected.value).reshape(-1) > 0.5 + assert np.array_equal(usage.any(axis=1), selected_values) + assert np.all(usage[selected_values].sum(axis=1) >= 1) + + +def test_optional_coverage_does_not_force_no_effect_edge(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + method = LinearDAGDiscovery( + lambda_edges=0.1, + fit_intercept=False, + backend=backend, + ) + problem = method.build(graph, _single_edge_data(effect=0.0)) + problem.solve() + + assert method.get_selected_edge_indices().size == 0 + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + assert np.isclose(coefficient[0], 0.0, atol=1e-8) + assert np.allclose(problem.expr.flow.value, 0.0, atol=1e-8) + assert "commodity_active" not in problem.expr + + +def test_one_commodity_per_intervened_vertex(backend): + graph = Graph.from_tuples([("A", 1, "C"), ("B", 1, "C")]) + data = Data.from_cdict( + { + "condition": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "C": {"mapping": "vertex", "value": 3.0}, + } + } + ) + method = LinearDAGDiscovery( + lambda_edges=0.01, + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ) + problem = method.build(graph, data) + problem.solve() + + assert method._commodity_sources == ["A", "B"] + assert method.get_edge_usage().shape == (2, 2) + assert np.all(np.asarray(problem.expr.commodity_active.value) > 0.5) + + +def test_coverage_distinguishes_unreachable_intervention(backend): + """Partial coverage drops an isolated commodity; strict coverage is infeasible.""" + graph = Graph.from_tuples([("A", 1, "C"), ("D", 1, "B")]) + data = Data.from_cdict( + { + "condition": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": -1.0, "intervened": True}, + "C": {"mapping": "vertex", "value": 4.0}, + "D": {"mapping": "vertex", "value": 0.0}, + } + } + ) + method = LinearDAGDiscovery( + lambda_edges=0.01, + fit_intercept=False, + min_commodity_coverage=0.5, + backend=backend, + ) + problem = method.build(graph, data) + problem.solve() + + active = np.asarray(problem.expr.commodity_active.value).reshape(-1) > 0.5 + active_by_source = dict(zip(method._commodity_sources, active, strict=True)) + assert active_by_source == {"A": True, "B": False} + assert np.array_equal(method.get_selected_edge_indices(), np.array([0])) + + strict_problem = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1, + backend=backend, + ).build(graph, data) + solve_options = {"primals": None} if str(backend) == "PICOS" else {} + result = strict_problem.solve(**solve_options) + assert str(result.status).lower() in {"infeasible", "infeasible_or_unbounded"} + + +def test_recovers_chain_with_missing_response(backend): + """A missing sink response is omitted without losing other equations.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + "C": {"mapping": "vertex", "value": 0.0}, + }, + "do_A_1": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + "C": {"mapping": "vertex", "value": 6.0}, + }, + "do_A_missing_C": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 4.0}, + "C": {"mapping": "vertex", "value": None}, + }, + "do_A_missing_B": { + "A": {"mapping": "vertex", "value": 2.5, "intervened": True}, + "B": {"mapping": "vertex", "value": None}, + "C": {"mapping": "vertex", "value": 999.0}, + }, + "do_A_3": { + "A": {"mapping": "vertex", "value": 3.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 6.0}, + "C": {"mapping": "vertex", "value": 18.0}, + }, + } + ) + method = LinearDAGDiscovery( + fit_intercept=False, + coefficient_bound=4, + backend=backend, + ) + problem = method.build(graph, data) + problem.solve() + + assert np.array_equal(method.get_selected_edge_indices(), np.array([0, 1])) + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + assert np.allclose(coefficient, [2, 3], atol=1e-7) + c_index = method._vertex_index["C"] + missing_sample = method._sample_names.index("do_A_missing_C") + assert not method._valid_residual[c_index, missing_sample] + missing_parent_sample = method._sample_names.index("do_A_missing_B") + b_index = method._vertex_index["B"] + assert not method._valid_residual[b_index, missing_parent_sample] + assert not method._valid_residual[c_index, missing_parent_sample] + + +def test_standardized_weighted_loss_is_unit_invariant(backend): + """Response units must not change discovery under standardized loss.""" + + def scaled_data(scale): + data = _single_edge_data(effect=1.5) + for sample in data.samples.values(): + for feature in sample.features: + if feature.id == "B": + feature.data["value"] *= scale + return data + + selected = [] + scales = [] + for unit_scale in (1.0, 1000.0): + method = LinearDAGDiscovery( + lambda_edges=0.5, + coefficient_bound=2000, + fit_intercept=False, + standardize_loss=True, + sample_weights={"do_A": 2.0}, + backend=backend, + ) + problem = method.build( + Graph.from_tuples([("A", 1, "B")]), + scaled_data(unit_scale), + ) + problem.solve() + selected.append(method.get_selected_edge_indices()) + scales.append(np.asarray(problem.expr.loss_scale.value).reshape(-1)[1]) + + assert np.array_equal(selected[0], np.array([0])) + assert np.array_equal(selected[0], selected[1]) + assert np.isclose(scales[1] / scales[0], 1000) + + +def test_rejects_fully_latent_vertex(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + data = Data.from_cdict( + { + "condition": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + } + } + ) + with pytest.raises(ValueError, match="latent vertices"): + LinearDAGDiscovery(backend=backend).build(graph, data) + + +def test_cvxpy_formulation_uses_only_required_integer_variables(): + """Boundary edges and commodity unions must not introduce extra binaries.""" + graph = Graph.from_tuples([("A", 1, "C"), ("B", 1, "C")]) + data = Data.from_cdict( + { + "condition": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "C": {"mapping": "vertex", "value": 3.0}, + } + } + ) + problem = LinearDAGDiscovery( + fit_intercept=False, + backend=CvxpyBackend(), + ).build(graph, data) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + integer_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["integer"]) + continuous_count = cvxpy_problem.size_metrics.num_scalar_variables - boolean_count - integer_count + + # E shared selectors + E*K edge/commodity selectors + two coefficient-sign + # binaries per edge from the default exact coefficient support. Optional + # commodity activity binaries are omitted when no coverage term is requested. + assert boolean_count == 2 + 2 * 2 + 2 * 2 + assert integer_count == 0 + # (E + 3 boundary edges)*K flows + V DAG layers + E coefficients + # + one L1 residual for the sole non-intervened equation. + assert continuous_count == 5 * 2 + 3 + 2 + 1 + assert cvxpy_problem.size_metrics.num_scalar_variables == 26 + + +def test_linear_dag_guide_notebook_executes_every_cell(): + notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/linear-dag-discovery.ipynb" + notebook = nbformat.read(notebook_path, as_version=4) + + executed = NotebookClient( + notebook, + timeout=300, + kernel_name="python3", + resources={"metadata": {"path": str(notebook_path.parent)}}, + ).execute() + + errors = [ + output for cell in executed.cells for output in cell.get("outputs", []) if output.get("output_type") == "error" + ] + assert errors == [] diff --git a/tests/methods/causal/test_linear_dag_audit.py b/tests/methods/causal/test_linear_dag_audit.py new file mode 100644 index 000000000..3f8634764 --- /dev/null +++ b/tests/methods/causal/test_linear_dag_audit.py @@ -0,0 +1,560 @@ +"""Regression tests for findings from the linear DAG discovery audit.""" + +import numpy as np +import pytest + +from corneto.backend import PicosBackend +from corneto.data import Data +from corneto.graph import Graph +from corneto.methods.causal import LinearDAGDiscovery + + +def _data(rows): + return Data.from_cdict( + { + sample_name: { + vertex: { + "mapping": "vertex", + "value": value, + **({"intervened": True} if vertex in intervened else {}), + } + for vertex, value in values.items() + } + for sample_name, values, intervened in rows + } + ) + + +def _solve(problem, backend): + if isinstance(backend, PicosBackend): + return problem.solve(solver="glpk", primals=None) + return problem.solve() + + +def _zero_connector_data(scale_b=1.0, scale_c=1.0): + data = _data( + [ + ("obs", {"A": 0.0, "B": 1.0, "C": 2.0}, ()), + ("do_A", {"A": 1.0, "B": 0.0, "C": 0.0}, ("A",)), + ] + ) + for sample in data.samples.values(): + for feature in sample.features: + if feature.id == "B": + feature.data["value"] *= scale_b + elif feature.id == "C": + feature.data["value"] *= scale_c + return data + + +def test_cointervention_blocks_flow_through_intervened_target(backend): + """A commodity cannot use an incoming mechanism removed by intervention.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0, "C": 0.0}, ()), + ("do_AB", {"A": 1.0, "B": 2.0, "C": 4.0}, ("A", "B")), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ) + + problem = method.build(graph, data) + result = _solve(problem, backend) + + assert str(result.status).lower() in {"infeasible", "infeasible_or_unbounded"} + + +def test_partial_coverage_keeps_nonblocked_cointervention_commodity(backend): + """A co-intervened source remains usable when its route avoids the other target.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0, "C": 0.0}, ()), + ("do_AB", {"A": 1.0, "B": 2.0, "C": 4.0}, ("A", "B")), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=0.5, + backend=backend, + ) + + problem = method.build(graph, data) + _solve(problem, backend) + + active = np.asarray(problem.expr.commodity_active.value).reshape(-1) > 0.5 + active_by_source = dict(zip(method._commodity_sources, active, strict=True)) + usage = method.get_edge_usage() + usage_by_source = {source: usage[:, index] for index, source in enumerate(method._commodity_sources)} + + assert active_by_source == {"A": False, "B": True} + assert not usage_by_source["A"].any() + assert np.array_equal(np.flatnonzero(usage_by_source["B"]), np.array([1])) + + +def test_squared_loss_builds_with_multiple_residuals_and_weights(backend): + """Squared loss uses a backend-portable vector operation.""" + graph = Graph.from_tuples([("A", 1, "B"), ("A", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0, "C": 0.0}, ()), + ("do_A", {"A": 2.0, "B": 3.0, "C": 4.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + loss="squared", + vertex_weights={"B": 2.0, "C": 3.0}, + sample_weights={"do_A": 4.0}, + backend=backend, + ) + + problem = method.build(graph, data) + + assert "squared_fit" in {objective.name for objective in problem.objectives} + + +def test_default_flow_capacity_does_not_change_recovery_with_epsilon(backend): + """Increasing flow epsilon must not impose an artificial branch limit.""" + graph = Graph.from_tuples([("A", 1, "B"), ("A", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0, "C": 0.0}, ()), + ("do_A", {"A": 1.0, "B": 1.0, "C": 1.0}, ("A",)), + ] + ) + + selected = [] + for epsilon in (1.0, 2.0): + method = LinearDAGDiscovery( + fit_intercept=False, + flow_epsilon=epsilon, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + selected.append(method.get_selected_edge_indices()) + + assert np.array_equal(selected[0], np.array([0, 1])) + assert np.array_equal(selected[1], np.array([0, 1])) + + +def test_explicit_flow_capacity_is_not_scaled_with_epsilon(backend): + """An explicit capacity remains a genuine user-specified constraint.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 1.0, "B": 1.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + flow_capacity=3.0, + flow_epsilon=2.0, + backend=backend, + ) + + method.build(graph, data) + + assert method._resolved_flow_capacity == 3.0 + + +def test_optional_coverage_allows_intervention_sample_without_sinks(backend): + """A sample with only intervened measurements need not abort inference.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_AB", {"A": 1.0, "B": 2.0}, ("A", "B")), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=0.0, + lambda_unexplained=0.0, + backend=backend, + ) + + problem = method.build(graph, data) + result = _solve(problem, backend) + + assert str(result.status).lower() == "optimal" + assert method._commodity_sink_edges == [[], []] + + +def test_full_coverage_is_infeasible_with_intervention_without_sinks(backend): + """A sinkless intervention remains represented but cannot satisfy full coverage.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_AB", {"A": 1.0, "B": 2.0}, ("A", "B")), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ) + + problem = method.build(graph, data) + result = _solve(problem, backend) + + assert str(result.status).lower() in {"infeasible", "infeasible_or_unbounded"} + + +def test_exact_coefficient_support_has_nonzero_fitted_coefficients(backend): + """Exact support keeps selected edges in the fitted coefficient support.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = _zero_connector_data() + method = LinearDAGDiscovery( + fit_intercept=False, + min_abs_coefficient=0.25, + backend=backend, + ) + assert method.coefficient_support == "exact" + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1) + + assert np.array_equal(selected, np.array([0, 1])) + assert np.all(np.abs(normalized[selected]) >= 0.25 - 1e-8) + + +def test_default_exact_support_enforces_its_threshold(backend): + """The default exact-support threshold must survive solver tolerances.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = _zero_connector_data() + method = LinearDAGDiscovery(fit_intercept=False, backend=backend) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1) + + assert np.array_equal(selected, np.array([0, 1])) + assert np.all(np.abs(normalized[selected]) >= method.min_abs_coefficient) + + +@pytest.mark.parametrize( + ("interaction", "effect"), + [(1, 1.5), (-1, -1.5), (None, -1.5)], +) +def test_exact_support_handles_positive_negative_and_unknown_signs(backend, interaction, effect): + """Exact support preserves fitted sign information for every prior sign case.""" + graph = Graph.from_tuples([("A", interaction, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 2.0, "B": 2.0 * effect}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + enforce_signs=True, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0] + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)[0] + + assert np.array_equal(selected, np.array([0])) + assert np.sign(coefficient) == np.sign(effect) + assert abs(normalized) >= method.min_abs_coefficient + + +@pytest.mark.parametrize("coefficient_support", ["exact", "structural"]) +def test_forced_coverage_distinguishes_zero_response_support(backend, coefficient_support): + """Exact support rejects zero effects while structural support permits connectors.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 1.0, "B": 0.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + coefficient_support=coefficient_support, + min_commodity_coverage=1.0, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + assert np.array_equal(method.get_selected_edge_indices(), np.array([0])) + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)[0] + if coefficient_support == "exact": + assert abs(normalized) >= method.min_abs_coefficient + else: + assert np.isclose(normalized, 0.0, atol=1e-8) + + +@pytest.mark.parametrize("coefficient_support", ["exact", "structural"]) +def test_unselected_edges_have_zero_fitted_coefficients(backend, coefficient_support): + """Both support modes keep coefficients zero on unselected prior edges.""" + graph = Graph.from_tuples([("A", 1, "B"), ("A", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0, "C": 0.0}, ()), + ("do_A", {"A": 1.0, "B": 2.0, "C": 0.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + coefficient_support=coefficient_support, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1) + + assert np.array_equal(selected, np.array([0])) + assert np.isclose(normalized[1], 0.0, atol=1e-8) + + +def test_exact_support_accepts_threshold_equal_to_coefficient_bound(backend): + """The exact-support threshold may equal the configured coefficient bound.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 2.0, "B": 2.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + coefficient_bound=0.25, + min_abs_coefficient=0.25, + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0] + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)[0] + + assert np.array_equal(selected, np.array([0])) + assert np.isclose(abs(coefficient), 0.25, atol=1e-8) + assert np.isclose(abs(normalized), 0.25, atol=1e-8) + + +def test_default_exact_support_is_invariant_to_measurement_rescaling(backend): + """Normalized coefficient support is unchanged when one variable is rescaled.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + selected = [] + normalized = [] + for scale_b in (1.0, 100.0): + method = LinearDAGDiscovery( + fit_intercept=True, + coefficient_bound=100.0, + intercept_bound=200.0, + backend=backend, + ) + problem = method.build(graph, _zero_connector_data(scale_b=scale_b)) + _solve(problem, backend) + selected.append(method.get_selected_edge_indices()) + normalized.append(np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)) + + assert np.array_equal(selected[0], np.array([0, 1])) + assert np.array_equal(selected[0], selected[1]) + assert np.all(np.abs(normalized[0][selected[0]]) >= 0.25) + assert np.all(np.abs(normalized[1][selected[1]]) >= 0.25) + + +def test_exact_support_is_invariant_to_intervention_source_rescaling(backend): + """A source's intervention measurements determine its predictor scale.""" + graph = Graph.from_tuples([("A", 1, "B")]) + selected = [] + normalized = [] + coefficients = [] + for source_scale in (1.0, 100.0): + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": source_scale, "B": 1.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + standardize_loss=False, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + selected.append(method.get_selected_edge_indices()) + normalized.append(np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)) + coefficients.append(np.asarray(problem.expr.edge_coefficient.value).reshape(-1)) + + assert np.array_equal(selected[0], np.array([0])) + assert np.array_equal(selected[0], selected[1]) + assert np.allclose(normalized[0], normalized[1], atol=1e-8) + assert np.isclose(coefficients[0][0], 1.0, atol=1e-8) + assert np.isclose(coefficients[1][0], 0.01, atol=1e-8) + + +def test_exact_support_is_invariant_to_leaf_response_rescaling(backend): + """A terminal response's units must not change normalized support.""" + graph = Graph.from_tuples([("A", 1, "B")]) + selected = [] + coefficients = [] + for response_scale in (1.0, 0.01): + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 2.0, "B": 3.0 * response_scale}, ("A",)), + ] + ) + method = LinearDAGDiscovery(fit_intercept=False, backend=backend) + problem = method.build(graph, data) + _solve(problem, backend) + selected.append(method.get_selected_edge_indices()) + coefficients.append(np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0]) + + assert np.array_equal(selected[0], np.array([0])) + assert np.array_equal(selected[1], selected[0]) + assert np.allclose(coefficients, [1.5, 0.015], atol=1e-8) + + +def test_tiny_exact_support_threshold_cannot_validate_zero(backend): + """Validation must not erase a positive threshold through its tolerance.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + method = LinearDAGDiscovery( + fit_intercept=False, + min_abs_coefficient=1e-12, + backend=backend, + ) + problem = method.build(graph, _zero_connector_data()) + _solve(problem, backend) + + with pytest.raises(ValueError, match="invalid"): + method.get_selected_edge_indices() + with pytest.raises(ValueError, match="invalid"): + method.get_edge_usage() + + +def test_exact_coefficient_support_works_with_different_bounds(backend): + """Exact support remains meaningful across raw coefficient bounds.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + for coefficient_bound in (0.6, 4.0): + method = LinearDAGDiscovery( + fit_intercept=False, + coefficient_bound=coefficient_bound, + min_abs_coefficient=0.25, + backend=backend, + ) + problem = method.build(graph, _zero_connector_data()) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + coefficients = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1) + + assert np.array_equal(selected, np.array([0, 1])) + assert np.all(np.abs(normalized[selected]) >= 0.25 - 1e-8) + assert np.all(np.abs(coefficients) <= coefficient_bound + 1e-8) + + +def test_normalized_threshold_is_not_compared_to_raw_bound(backend): + """A normalized threshold may exceed the raw bound when predictor units differ.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 10.0, "B": 5.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + coefficient_bound=0.5, + min_abs_coefficient=1.0, + fit_intercept=False, + standardize_loss=False, + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0] + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)[0] + + assert np.array_equal(selected, np.array([0])) + assert np.isclose(coefficient, 0.5, atol=1e-8) + assert np.isclose(normalized, 1.0, atol=1e-8) + + +@pytest.mark.parametrize("value", [0.0, -1.0, np.nan, np.inf, True]) +def test_rejects_invalid_min_abs_coefficient(value): + """The exact-support threshold must be finite, positive, and non-boolean.""" + with pytest.raises((TypeError, ValueError)): + LinearDAGDiscovery(coefficient_bound=5.0, min_abs_coefficient=value) + + +def test_structural_coefficient_support_allows_zero_connector(backend): + """Structural support preserves the connector-edge interpretation.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "C")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 1.0, "C": 2.0}, ()), + ("do_A", {"A": 1.0, "B": 0.0, "C": 0.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery( + fit_intercept=False, + coefficient_support="structural", + backend=backend, + ) + problem = method.build(graph, data) + _solve(problem, backend) + + selected = method.get_selected_edge_indices() + coefficients = np.asarray(problem.expr.edge_coefficient.value).reshape(-1) + + assert np.array_equal(selected, np.array([0, 1])) + assert np.isclose(coefficients[0], 0.0, atol=1e-8) + + solution_edges = method.get_solution_graph().get_attr_edges() + assert solution_edges[0]["connector"] is True + assert solution_edges[0]["interaction"] == 0 + assert solution_edges[0]["inferred_interaction"] == 0 + assert solution_edges[0]["prior_interaction"] == 1 + assert solution_edges[1]["connector"] is False + + +def test_solution_graph_does_not_retain_conflicting_prior_sign(backend): + """Solution metadata must expose fitted effects separately from prior signs.""" + graph = Graph.from_tuples([("A", 1, "B")]) + data = _data( + [ + ("obs", {"A": 0.0, "B": 0.0}, ()), + ("do_A", {"A": 2.0, "B": -3.0}, ("A",)), + ] + ) + method = LinearDAGDiscovery(fit_intercept=False, backend=backend) + problem = method.build(graph, data) + _solve(problem, backend) + + coefficient = np.asarray(problem.expr.edge_coefficient.value).reshape(-1)[0] + normalized = np.asarray(problem.expr.edge_coefficient_normalized.value).reshape(-1)[0] + solution_edge = method.get_solution_graph().get_attr_edge(0) + + assert coefficient < 0 + assert solution_edge["interaction"] < 0 + assert solution_edge["inferred_interaction"] == -1 + assert np.isclose(solution_edge["coefficient"], coefficient, atol=1e-8) + assert np.isclose(solution_edge["normalized_coefficient"], normalized, atol=1e-8) + assert solution_edge["prior_interaction"] == 1 diff --git a/tests/methods/causal/test_linear_dag_sparse.py b/tests/methods/causal/test_linear_dag_sparse.py new file mode 100644 index 000000000..3faa3f92d --- /dev/null +++ b/tests/methods/causal/test_linear_dag_sparse.py @@ -0,0 +1,175 @@ +"""Sparse affine-operator checks for linear DAG discovery.""" + +import numpy as np +from scipy.sparse import eye, issparse + +from corneto._constants import VarType +from corneto.backend import PicosBackend +from corneto.backend._base import _sparse_vector_entry_repetition, _sparse_vector_replication +from corneto.data import Data +from corneto.graph import Graph +from corneto.methods.causal import LinearDAGDiscovery + + +def _is_sparse_constant(symbol) -> bool: + """Recognize sparse constants in both backend expression implementations.""" + value = getattr(symbol.e, "value", None) + if issparse(value): + return True + picos_constant = getattr(symbol.e, "_cached__constant_coef", None) + return picos_constant is not None and hasattr(picos_constant, "CCS") + + +def _single_edge_data() -> Data: + return Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "do_A": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 3.0}, + }, + } + ) + + +def test_sparse_vector_maps_preserve_column_major_layout(): + values = np.array([1.0, 2.0, 3.0]) + + repeated_columns = _sparse_vector_replication(3, 2) @ values + repeated_entries = _sparse_vector_entry_repetition(3, 2) @ values + + np.testing.assert_allclose(repeated_columns, [1, 2, 3, 1, 2, 3]) + np.testing.assert_allclose(repeated_entries, [1, 1, 2, 2, 3, 3]) + + +def test_sparse_constants_do_not_allocate_dense_bound_metadata(backend): + constant = backend.Constant(eye(1000, format="csr")) + + assert constant.lb is None + assert constant.ub is None + assert constant._lb is None + assert constant._ub is None + + +def test_selected_flow_matrix_operators_are_sparse(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + problem = backend.SelectedFlow( + graph, + lb=np.zeros((1, 3)), + ub=np.full((1, 3), 5.0), + n_flows=3, + edge_indices=[0], + selector_groups=[0, 0, 1], + ) + + matrix_constants = [ + symbol + for symbol in problem.symbols.values() + if len(getattr(symbol.e, "shape", ())) == 2 and not symbol.is_variable + ] + + assert matrix_constants + assert all(_is_sparse_constant(symbol) for symbol in matrix_constants) + + +def test_linear_dag_prediction_uses_sparse_affine_operators(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + problem = LinearDAGDiscovery(fit_intercept=True, backend=backend).build(graph, _single_edge_data()) + + prediction_constants = [symbol for symbol in problem.expr.prediction._proxy_symbols if not symbol.is_variable] + + assert prediction_constants + assert all(_is_sparse_constant(symbol) for symbol in prediction_constants) + + +def test_linear_dag_coverage_uses_sparse_affine_operators(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + problem = LinearDAGDiscovery( + fit_intercept=False, + min_commodity_coverage=1.0, + backend=backend, + ).build(graph, _single_edge_data()) + + matrix_constants = [ + symbol + for symbol in problem.symbols.values() + if not symbol.is_variable and len(getattr(symbol.e, "shape", ())) == 2 + ] + + assert matrix_constants + assert all(_is_sparse_constant(symbol) for symbol in matrix_constants) + + +def test_picos_flow_conservation_keeps_sparse_incidence(): + graph = Graph.from_tuples([("A", 1, "B")]) + problem = PicosBackend().Flow(graph, n_flows=2) + + matrix_constants = [ + symbol + for symbol in problem.constraints[0]._proxy_symbols + if not symbol.is_variable and len(getattr(symbol.e, "shape", ())) == 2 + ] + + assert matrix_constants + assert all(_is_sparse_constant(symbol) for symbol in matrix_constants) + + +def test_picos_axis_sums_keep_sparse_affine_coefficients(): + backend = PicosBackend() + expression = backend.Variable("sum_value", (1000, 12)) + values = np.arange(12000, dtype=float).reshape((1000, 12), order="F") + expression.e.value = values + expected = { + 0: values.sum(axis=0, keepdims=True), + 1: values.sum(axis=1, keepdims=True), + None: values.sum(), + } + shapes = {0: (1, 12), 1: (1000, 1), None: (1, 1)} + + for axis in (0, 1, None): + reduced = expression.sum(axis=axis) + coefficients = list(reduced.e._coefs.values()) + + assert coefficients + assert all(hasattr(coefficient, "CCS") for coefficient in coefficients) + assert reduced.shape == shapes[axis] + np.testing.assert_allclose(np.asarray(reduced.value), expected[axis]) + + +def test_picos_axis_sums_preserve_explicit_vector_orientation(): + backend = PicosBackend() + expression = backend.Variable("orientation_value", (3,)) + problem = backend.Problem() + problem += expression == np.array([1.0, 2.0, 4.0]) + + row_sum = expression.reshape((1, 3)).sum(axis=0) + column_sum = expression.reshape((3, 1)).sum(axis=1) + transposed_sum = expression.T.sum(axis=0) + problem.solve(solver="glpk") + + assert row_sum.shape == (1, 3) + assert column_sum.shape == (3, 1) + assert transposed_sum.shape == (1, 3) + np.testing.assert_allclose(np.asarray(row_sum.value), [[1.0, 2.0, 4.0]]) + np.testing.assert_allclose(np.asarray(column_sum.value), [[1.0], [2.0], [4.0]]) + np.testing.assert_allclose(np.asarray(transposed_sum.value), [[1.0, 2.0, 4.0]]) + + +def test_acyclic_parent_limits_are_applied_vertexwise(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + problem = backend.Problem() + positive = backend.Variable("positive", (1,), vartype=VarType.BINARY) + problem.register("positive", positive) + problem += positive == np.array([1]) + backend.Acyclic( + graph, + problem, + indicator_positive_var_name="positive", + max_parents={"A": 0, "B": 1}, + ) + + solved = problem.solve() + assert str(solved.status).lower() == "optimal" diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py new file mode 100644 index 000000000..0dd81f0b2 --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -0,0 +1,48 @@ +import pytest + +from corneto.methods.signaling import CellNOptDAG +from corneto.methods.signaling.annnet import ( + add_cellnopt_conditions, + add_cellnopt_results, + build_cellnopt_from_annnet, +) + +annnet = pytest.importorskip("annnet") + + +def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): + graph = annnet.AnnNet(directed=True) + graph.history.enable(True) + graph.slices.add("prior") + graph.add_edges( + [ + {"source": "L", "target": "A", "edge_id": "e0"}, + {"source": "A", "target": "Y", "edge_id": "e1"}, + {"source": "L", "target": "Y", "edge_id": "shortcut"}, + ], + slice="prior", + default_edge_directed=True, + ) + for edge_id in graph.edges(): + graph.attrs.set_edge_attrs(edge_id, interaction=1) + layers = add_cellnopt_conditions( + graph, + inputs={"off": {"L": 0}, "on": {"L": 1}, "blocked": {"L": 1}}, + inhibitors={"off": {}, "on": {}, "blocked": {"A": 1}}, + measurements={"off": {"Y": 0}, "on": {"Y": 1}, "blocked": {"Y": 0}}, + ) + + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = build_cellnopt_from_annnet(method, graph, network_slice="prior") + solution = problem.solve() + summary = add_cellnopt_results(graph, method, problem, solution=solution) + + assert solution.status == "optimal" + assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} + assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 + assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.slices.exists("cellnopt_selected") + assert summary["selected_reactions"] == 2 + assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0} diff --git a/tests/methods/signaling/test_cellnopt_dag.py b/tests/methods/signaling/test_cellnopt_dag.py new file mode 100644 index 000000000..15e2bb6f6 --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_dag.py @@ -0,0 +1,266 @@ +import numpy as np + +from corneto.backend import PicosBackend +from corneto.graph import Graph +from corneto.methods.signaling.cellnopt_dag import CellNOptDAG + + +def _vertex_values(method, problem, vertex): + index = method.processed_graph.V.index(vertex) + values = np.asarray(problem.expr.vertex_value.value, dtype=float) + return values.reshape(problem.expr.vertex_value.shape)[index].reshape(-1) + + +def _flat_values(expression): + return np.asarray(expression.value, dtype=float).reshape(expression.shape).reshape(-1) + + +def _assert_infeasible(problem, backend): + if isinstance(backend, PicosBackend): + result = problem.solve(primals=None) + else: + result = problem.solve() + assert result.status == "infeasible" + + +def _solve(method, graph, *, inputs, measurements, inhibitors=None): + problem = method.build_many( + graph, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + result = problem.solve() + assert result.status == "optimal" + return problem + + +def test_and_gate_is_one_reaction_with_conjunctive_truth(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "AND1"), + ("B", 1, "AND1"), + ("AND1", 1, "Y"), + ] + ) + inputs = { + "neither": {"A": 0, "B": 0}, + "a_only": {"A": 1, "B": 0}, + "b_only": {"A": 0, "B": 1}, + "both": {"A": 1, "B": 1}, + } + measurements = { + "neither": {"Y": 0}, + "a_only": {"Y": 0}, + "b_only": {"Y": 0}, + "both": {"Y": 1}, + } + + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs=inputs, + measurements=measurements, + ) + + assert len(method.reactions) == 1 + assert method.reactions[0].positive_literals == ("A", "B") + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value).reshape(1, -1), + [[0, 0, 0, 1]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [0, 0, 0, 1]) + assert np.all(np.asarray(problem.expr.flow.value)[:2] >= method.epsilon) + + +def test_or_is_induced_by_multiple_active_producing_reactions(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("B", 1, "Y"), + ] + ) + inputs = { + "neither": {"A": 0, "B": 0}, + "a_only": {"A": 1, "B": 0}, + "b_only": {"A": 0, "B": 1}, + "both": {"A": 1, "B": 1}, + } + measurements = { + "neither": {"Y": 0}, + "a_only": {"Y": 1}, + "b_only": {"Y": 1}, + "both": {"Y": 1}, + } + + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs=inputs, + measurements=measurements, + ) + + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value), + [[0, 1, 0, 1], [0, 0, 1, 1]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [0, 1, 1, 1]) + + +def test_positive_and_negative_alternatives_fit_complementary_conditions(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("A", -1, "Y"), + ] + ) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs={"off": {"A": 0}, "on": {"A": 1}}, + measurements={"off": {"Y": 1}, "on": {"Y": 1}}, + ) + + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 1]) + assert np.allclose( + np.asarray(problem.expr.reaction_active.value), + [[0, 1], [1, 0]], + ) + assert np.allclose(_vertex_values(method, problem, "Y"), [1, 1]) + + +def test_same_inputs_with_conflicting_measurements_cannot_both_be_fit(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + method = CellNOptDAG(lambda_reg=0, backend=backend) + problem = _solve( + method, + graph, + inputs={"first": {"A": 1}, "second": {"A": 1}}, + measurements={"first": {"Y": 0}, "second": {"Y": 1}}, + ) + + assert np.isclose(problem.objectives[0].value, 1) + predictions = _vertex_values(method, problem, "Y") + assert np.allclose(predictions, [0, 0]) or np.allclose(predictions, [1, 1]) + + +def test_irrelevant_active_input_does_not_force_a_disconnected_branch(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "B"), + ("C", 1, "D"), + ] + ) + method = CellNOptDAG(lambda_reg=1e-3, backend=backend) + problem = _solve( + method, + graph, + inputs={"condition": {"A": 1, "C": 1}}, + measurements={"condition": {"B": 1}}, + ) + + assert np.allclose(_flat_values(problem.expr.reaction_selected), [1, 0]) + assert np.allclose(_vertex_values(method, problem, "C"), [1]) + assert np.allclose(_vertex_values(method, problem, "D"), [0]) + + +def test_flow_rejects_a_selected_component_without_experimental_boundaries(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "B"), + ("C", 1, "D"), + ] + ) + method = CellNOptDAG(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected[1] == 1 + + _assert_infeasible(problem, backend) + + +def test_flow_rejects_a_selected_dangling_branch(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "B"), + ("A", 1, "C"), + ] + ) + method = CellNOptDAG(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected[1] == 1 + + _assert_infeasible(problem, backend) + + +def test_inhibition_overrides_product_without_disabling_reaction_truth(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + method = CellNOptDAG(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + inhibitors={"B": 1}, + measurements={"B": 0}, + ) + problem += problem.expr.reaction_selected[0] == 1 + + result = problem.solve() + + assert result.status == "optimal" + assert np.allclose(problem.expr.reaction_active.value, [[1]]) + assert np.allclose(_vertex_values(method, problem, "B"), [0]) + + +def test_acyclicity_rejects_a_selected_feedback_cycle(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "B"), + ("B", 1, "A"), + ] + ) + method = CellNOptDAG(lambda_reg=0, backend=backend) + problem = method.build( + graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + problem += problem.expr.reaction_selected == 1 + + _assert_infeasible(problem, backend) + + +def test_constraint_blocks_are_vectorized_over_reactions_and_conditions(backend): + small_graph = Graph.from_tuples([("A", 1, "B")]) + large_graph = Graph.from_tuples([(f"v{i}", 1, f"v{i + 1}") for i in range(30)]) + small = CellNOptDAG(lambda_reg=0, backend=backend).build( + small_graph, + inputs={"A": 1}, + measurements={"B": 1}, + ) + large = CellNOptDAG(lambda_reg=0, backend=backend).build_many( + large_graph, + inputs={ + "one": {"v0": 1}, + "two": {"v0": 1}, + "three": {"v0": 1}, + }, + measurements={ + "one": {"v30": 1}, + "two": {"v30": 1}, + "three": {"v30": 1}, + }, + ) + + assert len(small.constraints) == len(large.constraints) diff --git a/tests/methods/signaling/test_cellnopt_ilp.py b/tests/methods/signaling/test_cellnopt_ilp.py deleted file mode 100644 index 32e11ffaa..000000000 --- a/tests/methods/signaling/test_cellnopt_ilp.py +++ /dev/null @@ -1,116 +0,0 @@ -import numpy as np -import pytest - -import corneto as cn -from corneto.backend import Backend, CvxpyBackend, PicosBackend -from corneto.methods.signaling.cellnopt_ilp import cellnoptILP - - -# PICOS does not work -@pytest.fixture(params=[CvxpyBackend, PicosBackend]) -def backend(request): - opt: Backend = request.param() - if isinstance(opt, CvxpyBackend): - opt._default_solver = "SCIPY" - elif isinstance(opt, PicosBackend): - opt._default_solver = "glpk" - return opt - - -def get_test_graph_1(): - G1 = cn.Graph.from_tuples( - [ - ("EGF", 1, "AND1"), - ("TNFa", 1, "AND1"), - ("AND1", 1, "Ras"), - ("EGF", 1, "Ras"), - ("TNFa", 1, "Ras"), - ] - ) - G1.add_edge((), "EGF") - G1.add_edge((), "TNFa") - G1.add_edge("Ras", ()) - - return G1 - - -@pytest.mark.skip(reason="Error with PICOS solvers") -def test_cellnoptILP_AND(backend): - G1 = get_test_graph_1() - - # RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate - exp_list_G1_and = { - "exp0": {"input": {"EGF": 0, "TNFa": 0}, "output": {"Ras": 0}}, - "exp1": {"input": {"EGF": 1, "TNFa": 0}, "output": {"Ras": 0}}, - "exp2": {"input": {"EGF": 0, "TNFa": 1}, "output": {"Ras": 0}}, - "exp3": {"input": {"EGF": 1, "TNFa": 1}, "output": {"Ras": 1}}, - } - - P = cellnoptILP(G1, exp_list_G1_and, verbose=True, alpha_flow=0.001, backend=backend) - expected_edge_values = np.array( - [ - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [-0.0, -0.0, -0.0, 1.0], - [0.0, -0.0, 0.0, 0.0], - [0.0, 0.0, 0.0, -0.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 0.0, 0.0, 1.0], - ] - ) - - # vertices do not have a specific order (set of vertices is a list, but the order is not fixed) - expected_vertex_values = np.array( - [ - [-0.0, -0.0, -0.0, 1.0], - [-0.0, 1.0, -0.0, 1.0], - [-0.0, -0.0, 1.0, 1.0], - [0.0, -0.0, -0.0, 1.0], - ] - ) - sum([o.value for o in P.objectives]) - assert np.isclose(sum([o.value for o in P.objectives]), 0.006) - assert np.isclose(P.expr.edge_activates.value, expected_edge_values).all() - assert np.isclose(np.sum(P.expr.vertex_value.value, axis=0), expected_vertex_values.sum(axis=0)).all() - - -# @pytest.mark.skip(reason="not compatible with picos") -def test_cellnoptILP_OR(backend): - G1 = get_test_graph_1() - - # RAS is only active iff both EGF and TNFa are active -> we need to identify the AND gate - exp_list_G1_or = { - "exp0": {"input": {"EGF": 0, "TNFa": 0}, "output": {"Ras": 0}}, - "exp1": {"input": {"EGF": 1, "TNFa": 0}, "output": {"Ras": 1}}, - "exp2": {"input": {"EGF": 0, "TNFa": 1}, "output": {"Ras": 1}}, - "exp3": {"input": {"EGF": 1, "TNFa": 1}, "output": {"Ras": 1}}, - } - - P = cellnoptILP(G1, exp_list_G1_or, verbose=True, alpha_flow=0.001, backend=backend) - expected_edge_values = np.array( - [ - [0.0, -0.0, 0.0, -0.0], - [0.0, 0.0, -0.0, -0.0], - [-0.0, -0.0, -0.0, -0.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 1.0, 0.0, 1.0], - [0.0, 0.0, 1.0, 1.0], - [0.0, 1.0, 1.0, 1.0], - ] - ) - - # vertices do not have a specific order (set of vertices is a list, but the order is not fixed) - expected_vertex_values = np.array( - [ - [-0.0, -0.0, -0.0, -0.0], - [-0.0, 1.0, -0.0, 1.0], - [-0.0, -0.0, 1.0, 1.0], - [0.0, 1.0, 1.0, 1.0], - ] - ) - - assert np.isclose(sum([o.value for o in P.objectives]), 0.005) - assert np.isclose(P.expr.edge_activates.value, expected_edge_values).all() - assert np.isclose(np.sum(P.expr.vertex_value.value, axis=0), expected_vertex_values.sum(axis=0)).all() diff --git a/tests/methods/signaling/test_cellnopt_plotting.py b/tests/methods/signaling/test_cellnopt_plotting.py new file mode 100644 index 000000000..ecfe0004a --- /dev/null +++ b/tests/methods/signaling/test_cellnopt_plotting.py @@ -0,0 +1,269 @@ +from pathlib import Path + +import nbformat +import numpy as np +import pytest +from nbclient import NotebookClient + +from corneto._plotting import to_dot_source +from corneto.graph import Graph +from corneto.methods.signaling import ( + CellNOptDAG, + plot_cellnopt_fit, + plot_cellnopt_model, +) +from corneto.methods.signaling.cellnopt_plotting import ( + _build_cellnopt_model_plot, +) + + +def _solve(backend, graph, *, inputs, measurements, inhibitors=None, lambda_reg=1e-3): + method = CellNOptDAG(lambda_reg=lambda_reg, backend=backend) + problem = method.build_many( + graph, + inputs=inputs, + measurements=measurements, + inhibitors=inhibitors, + ) + result = problem.solve() + assert result.status == "optimal" + return method, problem + + +def test_model_plot_expands_and_preserves_or_and_inhibition(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "AND1"), + ("B", -1, "AND1"), + ("AND1", 1, "Y"), + ("C", 1, "Y"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={ + "and_route": {"A": 1, "B": 0, "C": 0}, + "or_route": {"A": 0, "B": 0, "C": 1}, + }, + measurements={ + "and_route": {"Y": 1}, + "or_route": {"Y": 1}, + }, + ) + + spec = _build_cellnopt_model_plot(method, problem, width_by="flow") + and_nodes = [vertex for vertex in spec.graph.V if str(vertex).startswith("__cellnopt_and_")] + assert len(and_nodes) == 1 + and_node = and_nodes[0] + assert any(source == frozenset({"C"}) and target == frozenset({"Y"}) for source, target in spec.graph.E) + assert any(source == frozenset({"A"}) and target == frozenset({and_node}) for source, target in spec.graph.E) + assert any(source == frozenset({and_node}) and target == frozenset({"Y"}) for source, target in spec.graph.E) + + negative_edges = [ + index for index, attrs in enumerate(spec.graph.get_attr_edges()) if attrs.get("interaction") == -1 + ] + assert len(negative_edges) == 1 + assert spec.edge_attributes[negative_edges[0]]["arrowhead"] == "tee" + assert spec.edge_attributes[negative_edges[0]]["color"] == "#C43C39" + aggregate_edges = [ + attrs for attrs in spec.edge_attributes.values() if "aggregate structural flow" in attrs["tooltip"] + ] + assert len(aggregate_edges) == 1 + assert np.isfinite(float(aggregate_edges[0]["penwidth"])) + + dot = to_dot_source( + spec.graph, + graph_attr=spec.graph_attributes, + node_attr=spec.node_attributes, + custom_edge_attr=spec.edge_attributes, + custom_vertex_attr=spec.vertex_attributes, + ) + assert 'label="AND"' in dot + assert 'arrowhead="tee"' in dot + assert dot.count('-> "Y"') == 2 + + +def test_condition_plot_distinguishes_active_and_selected_inactive_reactions(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + method, problem = _solve( + backend, + graph, + inputs={"off": {"A": 0}, "on": {"A": 1}}, + measurements={"off": {"Y": 0}, "on": {"Y": 1}}, + ) + + off = _build_cellnopt_model_plot(method, problem, condition="off") + on = _build_cellnopt_model_plot(method, problem, condition="on") + hidden = _build_cellnopt_model_plot( + method, + problem, + condition="off", + show_inactive=False, + ) + + assert off.edge_attributes[0]["style"] == "dashed" + assert "active=0" in off.edge_attributes[0]["tooltip"] + assert on.edge_attributes[0]["style"] == "solid" + assert "active=1" in on.edge_attributes[0]["tooltip"] + assert hidden.graph.num_edges == 0 + assert set(hidden.graph.V) == {"A", "Y"} + + +def test_model_plot_can_reveal_unselected_reactions(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("C", 1, "D"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={"condition": {"A": 1, "C": 1}}, + measurements={"condition": {"Y": 1}}, + ) + + selected = _build_cellnopt_model_plot(method, problem) + complete = _build_cellnopt_model_plot(method, problem, show_unselected=True) + + assert selected.graph.num_edges == 1 + assert complete.graph.num_edges == 2 + unselected = [attrs for attrs in complete.edge_attributes.values() if "selected=0" in attrs["tooltip"]] + assert len(unselected) == 1 + assert unselected[0]["style"] == "dotted" + + +def test_fit_views_support_uneven_measurements_and_named_subsets(backend): + pytest.importorskip("matplotlib") + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("A", 1, "Z"), + ] + ) + method, problem = _solve( + backend, + graph, + inputs={ + "very_long_enabled_condition": {"A": 1}, + "blocked": {"A": 1}, + }, + inhibitors={ + "very_long_enabled_condition": {}, + "blocked": {"Y": 1}, + }, + measurements={ + "very_long_enabled_condition": {"Y": 0.8}, + "blocked": {"Z": 1}, + }, + ) + + grid_figure, grid_axes = plot_cellnopt_fit(method, problem) + inferred_figure, inferred_axes = plot_cellnopt_fit( + method, + problem, + signals=["A"], + ) + heatmap_figure, heatmap_axes = plot_cellnopt_fit( + method, + problem, + view="heatmap", + conditions=["blocked"], + signals=["Z"], + ) + + assert grid_axes.shape == (2, 3) + assert inferred_axes.shape == (2, 2) + assert heatmap_axes.shape == (4,) + assert grid_figure is grid_axes[0, 0].figure + assert inferred_figure is inferred_axes[0, 0].figure + assert heatmap_figure is heatmap_axes[0].figure + + measured_axis = grid_axes[0, 0] + assert [line.get_label() for line in measured_axis.lines] == [ + "_nolegend_", + "Model", + "Observed", + ] + assert all(np.allclose(line.get_xdata(), 0) for line in measured_axis.lines) + assert np.allclose(measured_axis.lines[-2].get_ydata(), [1]) + assert np.allclose(measured_axis.lines[-1].get_ydata(), [0.8]) + assert [tick.get_text() for tick in grid_axes[-1, 0].get_xticklabels()] == ["Endpoint"] + + prediction_only_axis = grid_axes[0, 1] + assert [line.get_label() for line in prediction_only_axis.lines] == ["Model"] + assert all([line.get_label() for line in inferred_axes[row, 0].lines] == ["Model"] for row in range(2)) + assert grid_axes[1, 0].patch.get_hatch() == "//" + assert prediction_only_axis.patch.get_hatch() == "//" + + +def test_fit_grid_handles_one_condition_and_one_signal(backend): + pytest.importorskip("matplotlib") + method, problem = _solve( + backend, + Graph.from_tuples([("A", 1, "Y")]), + inputs={"single_endpoint": {"A": 1}}, + measurements={"single_endpoint": {"Y": 0.2}}, + ) + + figure, axes = plot_cellnopt_fit(method, problem) + + assert axes.shape == (1, 2) + assert figure is axes[0, 0].figure + assert [tick.get_text() for tick in axes[0, 0].get_xticklabels()] == ["Endpoint"] + assert [line.get_label() for line in axes[0, 0].lines] == [ + "_nolegend_", + "Model", + "Observed", + ] + assert np.allclose(axes[0, 0].lines[-2].get_ydata(), [0]) + assert np.allclose(axes[0, 0].lines[-1].get_ydata(), [0.2]) + + +def test_networkx_model_plot_returns_real_figure(backend): + pytest.importorskip("matplotlib") + pytest.importorskip("networkx") + method, problem = _solve( + backend, + Graph.from_tuples([("A", -1, "Y")]), + inputs={"condition": {"A": 0}}, + measurements={"condition": {"Y": 1}}, + ) + + figure = plot_cellnopt_model(method, problem, renderer="networkx") + + assert len(figure.axes) == 1 + assert {"A", "Y"} <= {text.get_text() for text in figure.axes[0].texts} + assert len(figure.axes[0].patches) == 1 + + +def test_plotting_requires_a_solved_problem(): + method = CellNOptDAG(lambda_reg=0) + method.build( + Graph.from_tuples([("A", 1, "Y")]), + inputs={"A": 1}, + measurements={"Y": 1}, + ) + + with pytest.raises(ValueError, match="Solve a feasible problem"): + plot_cellnopt_model(method, renderer="networkx") + with pytest.raises(ValueError, match="Solve a feasible problem"): + plot_cellnopt_fit(method) + + +def test_cellnopt_worked_notebook_executes_every_cell(): + notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/cellnopt_dag.ipynb" + notebook = nbformat.read(notebook_path, as_version=4) + + executed = NotebookClient( + notebook, + timeout=300, + kernel_name="python3", + resources={"metadata": {"path": str(notebook_path.parent)}}, + ).execute() + + errors = [ + output for cell in executed.cells for output in cell.get("outputs", []) if output.get("output_type") == "error" + ] + assert errors == [] diff --git a/tests/methods/test_bidirectional_phonemes.py b/tests/methods/test_bidirectional_phonemes.py index a4403c682..c1f1ce65c 100644 --- a/tests/methods/test_bidirectional_phonemes.py +++ b/tests/methods/test_bidirectional_phonemes.py @@ -4,6 +4,7 @@ import pytest from corneto import Data, Graph +from corneto.backend import CvxpyBackend from corneto.methods import BidirectionalPHONEMeS, PHONEMeS @@ -332,6 +333,40 @@ def test_exposed_shapes_and_auxiliary_edges(backend): assert method.processed_graph.num_edges == 7 +def test_cvxpy_formulation_selects_only_mapped_biological_blocks(): + """Forward/reverse mapping should avoid indicators on unused flow entries.""" + graph = Graph() + graph.add_edges([("A", "K"), ("K", "B")]) + problem = BidirectionalPHONEMeS( + default_edge_cost=0, + anchor_policy="both", + backend=CvxpyBackend(), + ).build( + graph, + regulated_kinases=["K"], + phosphosite_scores={"A": -2, "B": -2}, + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + # 4 directional biological supports + 2 edge/condition unions + + # 6 anchor selectors + 6 directional vertex selectors + 3 vertex unions + + # 2 auxiliary selectors for the supplied sliced expressions. + assert boolean_count == 23 + assert cvxpy_problem.size_metrics.num_scalar_variables == 40 + assert "_flow_ipos" not in problem.expr + assert "_flow_ineg" not in problem.expr + assert problem.expr.edge_selected_directional.shape == (2, 2) + assert np.allclose( + np.asarray(problem.expr.anchor_flow_downstream.value), + np.asarray(problem.expr.anchor_active_downstream.value)[[1], :], + ) + assert np.allclose( + np.asarray(problem.expr.anchor_flow_upstream.value), + np.asarray(problem.expr.anchor_active_upstream.value)[[1], :], + ) + + def test_constraint_blocks_are_vectorized(backend): def build_problem(length, conditions): graph = Graph() diff --git a/tests/methods/test_pcst_edge_cases.py b/tests/methods/test_pcst_edge_cases.py index f885551c2..f77c6f3e5 100644 --- a/tests/methods/test_pcst_edge_cases.py +++ b/tests/methods/test_pcst_edge_cases.py @@ -1,7 +1,7 @@ import numpy as np import pytest -from corneto.backend import PicosBackend +from corneto.backend import CvxpyBackend, PicosBackend from corneto.data import Data from corneto.graph import EdgeType, Graph from corneto.methods.pcst import PrizeCollectingSteinerTree @@ -84,6 +84,29 @@ def test_steiner_different_fixed_roots_per_sample_is_feasible(backend, request): assert np.isclose(sum(edge_cost_values), 4.0, atol=1e-6) +def test_steiner_per_sample_max_flow_bounds_are_edge_by_sample(backend): + """Distinct sample maxima should bound every biological and boundary flow.""" + graph = _small_undirected_path_graph() + method = SteinerTreeFlow( + root_vertex=["A", "C"], + max_flow=[2, 3], + strict_acyclic=True, + backend=backend, + ) + problem = method.build_many( + graph, + terminals={"s1": ["A", "C"], "s2": ["A", "C"]}, + ) + problem.solve() + + flow = np.asarray(problem.expr.flow.value) + assert flow.shape == (method.processed_graph.num_edges, 2) + assert np.max(np.abs(flow[:, 0])) <= 2 + 1e-8 + assert np.max(np.abs(flow[:, 1])) <= 3 + 1e-8 + assert np.asarray(problem.expr.flow.lb).shape == flow.shape + assert np.asarray(problem.expr.flow.ub).shape == flow.shape + + def test_steiner_lambda_reg_promotes_edge_sharing_across_samples(backend, request): if isinstance(backend, PicosBackend) and not request.config.getoption("--run-optional"): pytest.skip("PicosBackend is optional (use --run-optional)") @@ -298,3 +321,84 @@ def test_steiner_multisample_fixed_roots_isolate_in_edges_per_sample(backend, re assert in_c not in sample0_edges assert in_c in sample1_edges assert in_a not in sample1_edges + + +@pytest.mark.parametrize( + ("edge_type", "expected_binaries", "expected_variables"), + [ + (EdgeType.DIRECTED, 2, 9), + (EdgeType.UNDIRECTED, 4, 11), + ], +) +def test_cvxpy_strict_steiner_supports_only_biological_edges( + edge_type, + expected_binaries, + expected_variables, +): + """Strict Steiner support should exclude root and terminal boundaries.""" + graph = Graph() + graph.add_edge("A", "B", type=edge_type) + graph.add_edge("B", "C", type=edge_type) + problem = SteinerTreeFlow( + root_vertex="A", + strict_acyclic=True, + backend=CvxpyBackend(), + ).build( + graph, + terminals=["A", "C"], + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + assert boolean_count == expected_binaries + assert cvxpy_problem.size_metrics.num_scalar_variables == expected_variables + assert problem.expr.with_flow.shape == (graph.num_edges, 1) + assert "_flow_ipos" not in problem.expr + assert "_flow_ineg" not in problem.expr + + +def test_cvxpy_non_strict_undirected_steiner_uses_one_selector_per_edge(): + """Non-strict Steiner should not pay for unused direction binaries.""" + graph = _small_undirected_path_graph() + problem = SteinerTreeFlow( + root_vertex="A", + strict_acyclic=False, + backend=CvxpyBackend(), + ).build( + graph, + terminals=["A", "C"], + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + assert boolean_count == graph.num_edges + flow_variables = int(np.prod(problem.expr.flow.shape)) + assert cvxpy_problem.size_metrics.num_scalar_variables == flow_variables + graph.num_edges + assert "with_flow_positive" not in problem.expr + assert "with_flow_negative" not in problem.expr + + +def test_cvxpy_best_root_reuses_candidate_support_for_prizes(): + """Prize collection should reuse best-root boundary direction selectors.""" + graph = Graph() + graph.add_edge("A", "B", type=EdgeType.DIRECTED) + graph.add_edge("B", "C", type=EdgeType.DIRECTED) + problem = PrizeCollectingSteinerTree( + root_selection_strategy="best", + strict_acyclic=False, + backend=CvxpyBackend(), + ).build( + graph, + prizes={"B": 2, "C": 3}, + terminals=["B", "C"], + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + # Two biological selectors and positive/negative selectors for two root + # candidates. Prize support aliases those root-candidate selectors. + assert boolean_count == 6 + assert cvxpy_problem.size_metrics.num_scalar_variables == 10 + assert "_flow_prize_pos_0" not in problem.expr + assert "_flow_prize_neg_0" not in problem.expr + assert problem.expr.selected_prized_flow_edges_0.shape == (2,) diff --git a/tests/methods/test_phonemes.py b/tests/methods/test_phonemes.py index 67013736c..ae0848683 100644 --- a/tests/methods/test_phonemes.py +++ b/tests/methods/test_phonemes.py @@ -6,6 +6,7 @@ import pytest from corneto import Data, Graph +from corneto.backend import CvxpyBackend from corneto.graph import EdgeType from corneto.methods import PHONEMeS @@ -236,6 +237,26 @@ def test_auxiliary_edges_are_excluded_and_shapes_are_stable(backend): assert method.processed_graph.num_edges == graph.num_edges + 2 +def test_cvxpy_formulation_selects_only_biological_edges(): + """Boundary flows should not receive positive/negative indicator binaries.""" + graph = Graph() + graph.add_edges([("r", "a"), ("a", "m")]) + problem = PHONEMeS(backend=CvxpyBackend()).build( + graph, + perturbations=["r"], + phosphosite_scores={"m": -1}, + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + # Two biological edge selectors plus three vertex selectors. The two + # auxiliary boundary flows do not introduce binaries. + assert boolean_count == 5 + assert cvxpy_problem.size_metrics.num_scalar_variables == 12 + assert "_flow_ipos" not in problem.expr + assert "_flow_ineg" not in problem.expr + + def test_constraint_blocks_do_not_scale_with_graph_or_conditions(backend): def build_problem(num_internal): graph = Graph() diff --git a/tests/methods/test_predictive_api.py b/tests/methods/test_predictive_api.py new file mode 100644 index 000000000..837d12bf9 --- /dev/null +++ b/tests/methods/test_predictive_api.py @@ -0,0 +1,382 @@ +"""Focused tests for fixed-model mechanistic prediction APIs.""" + +import numpy as np +import pytest + +from corneto.data import Data +from corneto.graph import Graph +from corneto.methods.causal import LinearDAGDiscovery +from corneto.methods.signaling import CellNOptDAG + + +def _feature_value(data, sample, vertex): + return next(feature.value for feature in data.samples[sample].features if feature.id == vertex) + + +def _feature(data, sample, vertex): + return next(feature for feature in data.samples[sample].features if feature.id == vertex) + + +def _linear_training_data(): + return Data.from_cdict( + { + "baseline": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "intervention": { + "A": {"mapping": "vertex", "value": 2.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 6.0}, + }, + } + ) + + +def test_linear_fit_predicts_forward_without_refitting(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + model = LinearDAGDiscovery(fit_intercept=False, backend=backend).fit( + graph, + _linear_training_data(), + solve_options={"verbosity": 0}, + ) + + def no_solve(*args, **kwargs): + raise AssertionError("predict must not solve") + + model.problem.solve = no_solve + held_out = Data.from_cdict( + { + "test": { + "A": {"mapping": "vertex", "value": 3.0}, + # This endogenous observation must not be used as a predictor. + "B": {"mapping": "vertex", "value": 999.0}, + } + } + ) + prediction = model.predict(held_out) + assert np.isclose(_feature_value(prediction, "test", "A"), 0.0) + assert np.isclose(_feature_value(prediction, "test", "B"), 0.0) + assert _feature(prediction, "test", "A").data["predicted"] + assert not _feature(prediction, "test", "A").data["clamped"] + metrics = model.evaluate(held_out) + assert metrics["forward_count"] == 2 + assert metrics["local_count"] == 2 + changed_root = Data.from_cdict( + { + "test": { + "A": {"mapping": "vertex", "value": 4.0}, + "B": {"mapping": "vertex", "value": 999.0}, + } + } + ) + changed_prediction = model.predict(changed_root) + assert changed_prediction.to_dict() == prediction.to_dict() + assert model.evaluate(changed_root)["forward_loss"] != metrics["forward_loss"] + + +def test_linear_manual_build_and_solve_supports_prediction(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + model = LinearDAGDiscovery(fit_intercept=False, backend=backend) + problem = model.build(graph, _linear_training_data()) + problem.solve() + prediction = model.predict( + Data.from_cdict({"test": {"A": {"mapping": "vertex", "value": 1.0, "intervened": True}}}) + ) + assert np.isclose(_feature_value(prediction, "test", "B"), 3.0) + + +def test_linear_soft_target_can_be_missing_and_estimated_group_is_reused(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + training = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "do": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "shift_1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": { + "mapping": "vertex", + "value": 5.0, + "intervention": "shift", + "intervention_group": "drug", + }, + }, + "shift_2": { + "A": {"mapping": "vertex", "value": 2.0}, + "B": { + "mapping": "vertex", + "value": 7.0, + "intervention": "shift", + "intervention_group": "drug", + }, + }, + } + ) + model = LinearDAGDiscovery(fit_intercept=False, backend=backend).fit(graph, training) + prediction = model.predict( + Data.from_cdict( + { + "held_out": { + "A": {"mapping": "vertex", "value": 3.0, "intervened": True}, + "B": { + "mapping": "vertex", + "value": None, + "intervention": "shift", + "intervention_group": "drug", + }, + } + } + ) + ) + assert np.isclose(_feature_value(prediction, "held_out", "B"), 9.0) + with pytest.raises(ValueError, match="No fitted soft-intervention shift"): + model.predict( + Data.from_cdict( + { + "held_out": { + "A": {"mapping": "vertex", "value": 3.0, "intervened": True}, + "B": { + "mapping": "vertex", + "value": None, + "intervention": "shift", + "intervention_group": "new_drug", + }, + } + } + ) + ) + + +def test_linear_known_shift_group_is_not_reused_without_test_shift(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + training = Data.from_cdict( + { + "obs": { + "A": {"mapping": "vertex", "value": 0.0}, + "B": {"mapping": "vertex", "value": 0.0}, + }, + "do": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "shift": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": { + "mapping": "vertex", + "value": 5.0, + "intervention": "shift", + "shift": 3.0, + "intervention_group": "known_drug", + }, + }, + } + ) + model = LinearDAGDiscovery(fit_intercept=False, backend=backend).fit(graph, training) + with pytest.raises(ValueError, match="No fitted soft-intervention shift"): + model.predict( + Data.from_cdict( + { + "held_out": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": { + "mapping": "vertex", + "value": None, + "intervention": "shift", + "intervention_group": "known_drug", + }, + } + } + ) + ) + explicit = model.predict( + Data.from_cdict( + { + "held_out": { + "A": {"mapping": "vertex", "value": 1.0, "intervened": True}, + "B": { + "mapping": "vertex", + "value": None, + "intervention": "shift", + "shift": 3.0, + "intervention_group": "known_drug", + }, + } + } + ) + ) + assert np.isclose(_feature_value(explicit, "held_out", "B"), 5.0) + + +def test_linear_rejects_prediction_before_build_or_with_malformed_data(backend): + model = LinearDAGDiscovery(backend=backend) + with pytest.raises(ValueError, match="not been built"): + model.predict(Data.from_cdict({"test": {}})) + graph = Graph.from_tuples([("A", 1, "B")]) + model.build(graph, _linear_training_data()).solve() + with pytest.raises(TypeError, match="Data object"): + model.predict({"test": {}}) + + +def test_linear_evaluation_honors_vertex_and_held_out_sample_weights(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + model = LinearDAGDiscovery( + fit_intercept=False, + vertex_weights={"A": 5.0, "B": 1.0}, + backend=backend, + ).fit(graph, _linear_training_data()) + held_out = Data.from_cdict( + { + "s1": { + "A": {"mapping": "vertex", "value": 1.0}, + "B": {"mapping": "vertex", "value": 2.0}, + }, + "s2": { + "A": {"mapping": "vertex", "value": 2.0}, + "B": {"mapping": "vertex", "value": 4.0}, + }, + } + ) + scales = model.loss_scales + expected_vertex_weighted = (5.0 * (1.0 / scales[0] + 2.0 / scales[0]) + (2.0 / scales[1] + 4.0 / scales[1])) / 12.0 + metrics = model.evaluate(held_out) + assert np.isclose(metrics["forward_loss"], expected_vertex_weighted) + expected_sample_weighted = ( + 5.0 * (4.0 * 1.0 / scales[0] + 1.0 * 2.0 / scales[0]) + + (4.0 * 2.0 / scales[1] + 1.0 * 4.0 / scales[1]) + ) / 30.0 + weighted = model.evaluate(held_out, sample_weights={"s1": 4.0, "s2": 1.0}) + assert np.isclose(weighted["forward_loss"], expected_sample_weighted) + with pytest.raises(ValueError, match="unknown keys"): + model.evaluate(held_out, sample_weights={"unseen": 1.0}) + with pytest.raises(ValueError, match="positive"): + model.evaluate(held_out, sample_weights={"s1": 0.0}) + with pytest.raises(TypeError, match="mapping"): + model.evaluate(held_out, sample_weights=[1.0, 1.0]) + + +def test_cellnopt_fit_prediction_and_inhibitor_clamping(backend): + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "Y")]) + model = CellNOptDAG(lambda_reg=0, backend=backend).fit( + graph, + inputs={"train": {"A": 1}}, + measurements={"train": {"Y": 1}}, + solve_options={"verbosity": 0}, + ) + prediction = model.predict( + inputs={"active": {"A": 1}, "blocked": {"A": 1}}, + inhibitors={"active": {}, "blocked": {"B": 1}}, + ) + assert _feature_value(prediction, "active", "Y") == 1.0 + assert _feature_value(prediction, "blocked", "Y") == 0.0 + metrics = model.evaluate( + inputs={"active": {"A": 1}, "blocked": {"A": 1}}, + inhibitors={"active": {}, "blocked": {"B": 1}}, + measurements={"blocked": {"Y": 0}, "active": {"Y": 1}}, + ) + assert metrics["loss"] == 0.0 + assert metrics["by_condition"] == {"active": 0.0, "blocked": 0.0} + + +def test_fit_solver_options_validate_mapping_and_mutual_exclusion(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + model = CellNOptDAG(lambda_reg=0, backend=backend) + kwargs = { + "inputs": {"train": {"A": 1}}, + "measurements": {"train": {"Y": 1}}, + } + with pytest.raises(TypeError, match="mapping"): + model.fit(graph, **kwargs, solve_options=[]) + with pytest.raises(TypeError, match="either in solve_options"): + model.fit(graph, **kwargs, solve_options={"verbosity": 0}, verbosity=0) + + +def test_cellnopt_manual_build_predicts_without_solver(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + model = CellNOptDAG(lambda_reg=0, backend=backend) + problem = model.build(graph, inputs={"A": 1}, measurements={"Y": 1}) + with pytest.raises(ValueError, match="not been solved"): + model.predict(inputs={"test": {"A": 1}}) + problem.solve() + problem.solve = lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("predict must not solve")) + prediction = model.predict(inputs={"test": {"A": 1}}) + assert _feature_value(prediction, "test", "Y") == 1.0 + assert not _feature(prediction, "test", "A").data["predicted"] + assert _feature(prediction, "test", "A").data["forced"] + assert _feature(prediction, "test", "Y").data["predicted"] + + +def test_rebuilding_linear_model_invalidates_the_previous_solution(backend): + graph = Graph.from_tuples([("A", 1, "B")]) + model = LinearDAGDiscovery(fit_intercept=False, backend=backend).fit(graph, _linear_training_data()) + model.build(graph, _linear_training_data()) + assert model.solve_result is None + with pytest.raises(ValueError, match="not been solved"): + model.predict( + Data.from_cdict({"test": {"A": {"mapping": "vertex", "value": 1.0, "intervened": True}}}) + ) + + +def test_rebuilding_cellnopt_model_invalidates_the_previous_solution(backend): + graph = Graph.from_tuples([("A", 1, "Y")]) + model = CellNOptDAG(lambda_reg=0, backend=backend).fit( + graph, + inputs={"train": {"A": 1}}, + measurements={"train": {"Y": 1}}, + ) + model.build(graph, inputs={"A": 1}, measurements={"Y": 1}) + assert model.solve_result is None + with pytest.raises(ValueError, match="not been solved"): + model.predict(inputs={"test": {"A": 1}}) + + +def test_cellnopt_fixed_prediction_matches_solved_training_values(backend): + graph = Graph.from_tuples( + [ + ("A", 1, "Y"), + ("B", 1, "Y"), + ("C", -1, "Y"), + ("D", 1, "AND1"), + ("E", 1, "AND1"), + ("AND1", 1, "Z"), + ] + ) + inputs = { + "a": {"A": 1, "C": 1}, + "b": {"B": 1, "C": 1}, + "c_off": {"C": 0}, + "c_on": {"C": 1}, + "and": {"D": 1, "E": 1, "C": 1}, + "d_only": {"D": 1, "C": 1}, + "e_only": {"E": 1, "C": 1}, + "inhibited": {"A": 1, "C": 1}, + } + inhibitors = { + condition: ({"Y": 1} if condition == "inhibited" else {}) + for condition in inputs + } + measurements = { + "a": {"Y": 1, "Z": 0}, + "b": {"Y": 1, "Z": 0}, + "c_off": {"Y": 1, "Z": 0}, + "c_on": {"Y": 0, "Z": 0}, + "and": {"Y": 0, "Z": 1}, + "d_only": {"Y": 0, "Z": 0}, + "e_only": {"Y": 0, "Z": 0}, + "inhibited": {"Y": 0, "Z": 0}, + } + model = CellNOptDAG(lambda_reg=0, backend=backend) + problem = model.build_many(graph, inputs=inputs, measurements=measurements, inhibitors=inhibitors) + problem += problem.expr.reaction_selected == 1 + problem.solve() + assert np.allclose(np.asarray(problem.expr.reaction_selected.value).reshape(-1), [1, 1, 1, 1]) + solved = np.asarray(problem.expr.vertex_value.value, dtype=float).reshape(problem.expr.vertex_value.shape) + model.problem.solve = lambda *args, **kwargs: (_ for _ in ()).throw(AssertionError("predict must not solve")) + predicted = model.predict(inputs=inputs, inhibitors=inhibitors) + for condition_index, condition in enumerate(inputs): + for vertex_index, vertex in enumerate(model.processed_graph.V): + assert np.isclose(_feature_value(predicted, condition, vertex), solved[vertex_index, condition_index]) diff --git a/tests/methods/test_user_inputs.py b/tests/methods/test_user_inputs.py index 4093c3717..10edfde9b 100644 --- a/tests/methods/test_user_inputs.py +++ b/tests/methods/test_user_inputs.py @@ -102,13 +102,32 @@ def test_imat_separates_objectives_and_expression(backend): } gene_method = MultiSampleIMAT(backend=backend) - gene_method.build(model, gene_expression={"G1": 2}, objectives={"R1": -1}) + gene_method.build( + model, + gene_expression={"G1": 2}, + objectives={"R1": -1}, + reaction_bounds={"R1": (1, 8)}, + ) gene_feature = next( feature for feature in gene_method.processed_data.samples["condition"].features if feature.id == "R1" ) assert gene_feature.data["role"] == "objective" assert gene_feature.data["imat_score"] == 2.0 + bounded_gene_method = MultiSampleIMAT(backend=backend) + bounded_gene_method.build( + model, + gene_expression={"G1": 2}, + reaction_bounds={"R1": (1, 8)}, + ) + bounded_gene_feature = next( + feature for feature in bounded_gene_method.processed_data.samples["condition"].features if feature.id == "R1" + ) + assert bounded_gene_feature.data["role"] == "expression" + assert bounded_gene_feature.data["value"] == 2.0 + assert bounded_gene_feature.data["lower_bound"] == 1.0 + assert bounded_gene_feature.data["upper_bound"] == 8.0 + many = MultiSampleIMAT(backend=backend) many.build_many( model, diff --git a/tests/test_api_contract.py b/tests/test_api_contract.py index 21fc32036..3426de278 100644 --- a/tests/test_api_contract.py +++ b/tests/test_api_contract.py @@ -58,6 +58,7 @@ def test_methods_api_surface_and_identity(): "BidirectionalPHONEMeS", "CarnivalFlow", "CarnivalILP", + "LinearDAGDiscovery", "MultiSampleFBA", "MultiSampleIMAT", "PHONEMeS", @@ -79,6 +80,12 @@ def test_methods_api_surface_and_identity(): assert methods.create_multisample_shortest_path is create_multisample_shortest_path +def test_experimental_cellnopt_ilp_surface_is_removed(): + """The superseded experimental CellNOpt ILP modules have no shims.""" + assert importlib.util.find_spec("corneto.methods.signal") is None + assert importlib.util.find_spec("corneto.methods.signaling.cellnopt_ilp") is None + + def test_ml_api_replaces_private_module(): """KPNN helpers live in the public ML module without a private-path shim.""" assert ml.__all__ == [ diff --git a/tests/test_backend.py b/tests/test_backend.py index 96ca84708..6950273c8 100644 --- a/tests/test_backend.py +++ b/tests/test_backend.py @@ -1045,3 +1045,219 @@ def test_nonzero_indicator_matrix_bounds_block_and_sign_per_entry(backend): # Free entries should have exactly one active sign indicator. assert np.isclose(tot_val[0, 1], 1.0, atol=1e-9) assert np.isclose(tot_val[2, 0], 1.0, atol=1e-9) + + +def test_exact_support_reuses_nonnegative_selector(backend): + """ExactSupport should couple a supplied selector without another binary.""" + value = backend.Variable("supported_value", (2,), lb=0, ub=5) + selected = backend.Variable("supplied_selector", (2,), vartype=VarType.BINARY) + problem = backend.Problem() + problem += backend.ExactSupport( + value, + selected=selected, + epsilon=1, + nonnegative=True, + name="exact_support", + ) + problem += selected == np.array([0, 1]) + problem.add_objective(value.sum()) + problem.solve() + + assert np.allclose(np.asarray(selected.value).reshape(-1), [0, 1], atol=1e-8) + assert np.allclose(np.asarray(value.value).reshape(-1), [0, 1], atol=1e-8) + binary_symbols = [symbol for symbol in problem.symbols.values() if symbol._vartype == VarType.BINARY] + assert [symbol.name for symbol in binary_symbols] == ["supplied_selector"] + + +def test_exact_support_broadcasts_per_entry_epsilon(backend): + """ExactSupport should apply explicitly broadcastable gaps elementwise.""" + epsilon = np.array([[0.25, 0.5]]) + value = backend.Variable("array_supported_value", (2, 2), lb=0, ub=5) + problem = backend.Problem() + problem += backend.ExactSupport( + value, + epsilon=epsilon, + nonnegative=True, + name="array_support", + ) + problem += problem.expr.array_support == np.ones((2, 2)) + problem += value == np.broadcast_to(epsilon, value.shape) + problem.solve() + + assert np.allclose(np.asarray(value.value), np.broadcast_to(epsilon, value.shape), atol=1e-8) + + +def test_exact_support_rejects_nonbroadcastable_epsilon_shape(backend): + """ExactSupport should not reinterpret same-sized epsilon arrays by reshaping.""" + value = backend.Variable("shape_checked_value", (3, 2), lb=-5, ub=5) + + with pytest.raises(ValueError, match="broadcast"): + backend.ExactSupport(value, epsilon=np.ones((2, 3))) + + +@pytest.mark.parametrize("lower, upper", [(-np.inf, 5), (-5, np.inf)]) +def test_exact_support_requires_finite_bounds(backend, lower, upper): + """ExactSupport should reject infinite bounds even when they were supplied.""" + value = backend.Variable("finite_bound_value", (2,), lb=lower, ub=upper) + + with pytest.raises(ValueError, match="finite"): + backend.ExactSupport(value, epsilon=1) + + +@pytest.mark.parametrize("nonnegative", [False, True]) +def test_exact_support_requires_binary_supplied_selector(backend, nonnegative): + """A supplied selector must not relax ExactSupport into a continuous formulation.""" + value = backend.Variable("selector_value", (2,), lb=0 if nonnegative else -5, ub=5) + selector = backend.Variable("continuous_selector", (2,), lb=0, ub=1) + + with pytest.raises(TypeError, match="binary"): + backend.ExactSupport(value, selected=selector, epsilon=1, nonnegative=nonnegative) + + +def test_exact_support_rejects_fractional_selector_expression(backend): + """A fractional selector expression must be linked to a binary selector.""" + value = backend.Variable("fractional_selector_value", (1,), lb=0, ub=5) + binary = backend.Variable("selector_binary", (1,), vartype=VarType.BINARY) + + problem = backend.Problem() + problem += backend.ExactSupport(value, selected=0.5 * binary, epsilon=1, nonnegative=True) + problem += binary == 1 + if isinstance(backend, PicosBackend): + result = problem.solve(solver="glpk", primals=None) + else: + result = problem.solve() + + assert str(result.status).lower() in {"infeasible", "infeasible_or_unbounded"} + + +def test_exact_support_signed_value(backend): + """Signed exact support should expose mutually exclusive directions.""" + value = backend.Variable("signed_value", (2,), lb=-4, ub=4) + problem = backend.Problem() + problem += backend.ExactSupport( + value, + epsilon=0.5, + name="signed_support", + ) + problem += problem.expr.signed_support == np.array([1, 1]) + problem += value[0] >= 0 + problem += value[1] <= 0 + problem.add_objective(value[0] - value[1]) + problem.solve() + + assert np.allclose(np.asarray(value.value).reshape(-1), [0.5, -0.5], atol=1e-7) + assert np.allclose(np.asarray(problem.expr.signed_support.value).reshape(-1), [1, 1], atol=1e-8) + + +def test_selected_flow_uses_negative_direction_when_required(backend): + """Signed SelectedFlow should expose the actual traversal direction.""" + graph = Graph() + graph.add_edge((), "B") + graph.add_edge("A", "B") + graph.add_edge("A", ()) + + problem = backend.SelectedFlow( + graph, + lb=np.array([0, -5, 0]), + ub=np.array([5, 5, 5]), + edge_indices=[1], + epsilon=1, + ) + problem += problem.expr.selected_any == 1 + problem.solve() + + assert -5 - 1e-7 <= problem.expr.flow.value[1, 0] <= -1 + 1e-7 + assert np.isclose(np.asarray(problem.expr.selected_by_flow.value).reshape(-1)[0], 1, atol=1e-8) + assert np.isclose(np.asarray(problem.expr.selected_by_flow_positive.value).reshape(-1)[0], 0, atol=1e-8) + assert np.isclose(np.asarray(problem.expr.selected_by_flow_negative.value).reshape(-1)[0], 1, atol=1e-8) + + +def test_selected_flow_mixed_bounds_uses_minimal_binary_types(): + """Only edge rows that permit negative flow should get direction binaries.""" + graph = Graph.from_tuples([("A", 1, "B"), ("B", 1, "A")]) + problem = CvxpyBackend().SelectedFlow( + graph, + lb=np.array([[0, 0], [-5, -5]]), + ub=np.full((2, 2), 5), + n_flows=2, + edge_indices=[0, 1], + epsilon=1, + ) + cvxpy_problem = problem.solve(solver="SCIPY") + + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + # Nonnegative edge: 1*2 support binaries. Signed edge: 2*2 direction + # binaries. Shared structural union: 2 binaries. + assert boolean_count == 2 + 4 + 2 + assert problem.expr.selected_by_flow.shape == (2, 2) + assert problem.expr.selected_by_flow_positive.shape == (2, 2) + assert problem.expr.selected_by_flow_negative.shape == (2, 2) + + +def test_selected_flow_signed_shared_dag_rejects_opposite_directions(): + """Different flows cannot traverse one edge oppositely in a shared DAG.""" + flow_graph = Graph() + flow_graph.add_edge((), "A") + flow_graph.add_edge((), "B") + flow_graph.add_edge("A", "B") + flow_graph.add_edge("A", ()) + flow_graph.add_edge("B", ()) + acyclic_graph = Graph.from_tuples([("A", 1, "B")]) + + problem = CvxpyBackend().SelectedFlow( + flow_graph, + lb=np.array( + [ + [0, 0], + [0, 0], + [-5, -5], + [0, 0], + [0, 0], + ] + ), + ub=np.array( + [ + [5, 0], + [0, 5], + [5, 5], + [0, 5], + [5, 0], + ] + ), + n_flows=2, + edge_indices=[2], + epsilon=1, + acyclic_graph=acyclic_graph, + ) + problem += problem.expr.flow[2, 0] >= 1 + problem += problem.expr.flow[2, 1] <= -1 + cvxpy_problem = problem.solve(solver="SCIPY") + + assert cvxpy_problem.status == cp.INFEASIBLE + boolean_count = sum(variable.size for variable in cvxpy_problem.variables() if variable.attributes["boolean"]) + # Two directions per flow plus two direction-union binaries. There is no + # redundant structural-union binary. + assert boolean_count == 2 * 2 + 2 + + +def test_acyclic_signed_max_parents_counts_reversed_edges(): + """A negative edge contributes a parent at its structural source.""" + graph = Graph.from_tuples([("A", 1, "C"), ("C", 1, "B")]) + backend = CvxpyBackend() + problem = backend.Problem() + positive = backend.Variable("positive", (2,), vartype=VarType.BINARY) + negative = backend.Variable("negative", (2,), vartype=VarType.BINARY) + problem.register("positive", positive) + problem.register("negative", negative) + problem += positive == np.array([1, 0]) + problem += negative == np.array([0, 1]) + backend.Acyclic( + graph, + problem, + indicator_positive_var_name="positive", + indicator_negative_var_name="negative", + max_parents={"C": 1}, + ) + + cvxpy_problem = problem.solve(solver="SCIPY") + assert cvxpy_problem.status == cp.INFEASIBLE diff --git a/tests/test_datasets.py b/tests/test_datasets.py new file mode 100644 index 000000000..ffa727647 --- /dev/null +++ b/tests/test_datasets.py @@ -0,0 +1,194 @@ +import hashlib +import io +import tarfile +from pathlib import Path + +import pytest + +import corneto.datasets._catalog as catalog +import corneto.datasets._fetch as fetch + + +def _sha256(path: Path) -> str: + return hashlib.sha256(path.read_bytes()).hexdigest() + + +def _write_dataset(root: Path, name: str, version: str, files: dict[str, str]) -> Path: + directory = root / name / version + directory.mkdir(parents=True) + for filename, content in files.items(): + (directory / filename).write_text(content, encoding="utf-8") + return directory + + +def _make_remote_spec(tmp_path: Path, monkeypatch, *, unsafe_member: str | None = None): + files = { + "measurements.tsv": "value\n1\n", + "condition_manifest.csv": "condition\nexample\n", + "README.md": "example dataset\n", + } + payload = tmp_path / "payload" + payload.mkdir() + for filename, content in files.items(): + (payload / filename).write_text(content, encoding="utf-8") + + archive = tmp_path / "dataset.tar.gz" + with tarfile.open(archive, "w:gz") as handle: + if unsafe_member is None: + for filename in files: + handle.add(payload / filename, arcname=filename) + else: + info = tarfile.TarInfo(unsafe_member) + content = b"unsafe\n" + info.size = len(content) + handle.addfile(info, fileobj=io.BytesIO(content)) + + spec = catalog.DatasetSpec( + name="example", + version="v1", + remote_url="https://data.example.org/example-v1.tar.gz", + archive_sha256=_sha256(archive), + file_sha256={ + filename: hashlib.sha256(content.encode("utf-8")).hexdigest() for filename, content in files.items() + }, + ) + monkeypatch.setitem(catalog.DATASETS, (spec.name, spec.version), spec) + + def open_archive(request, timeout): + assert request.full_url == spec.remote_url + return archive.open("rb") + + monkeypatch.setattr(fetch, "urlopen", open_archive) + return spec + + +def test_default_version_uses_local_repository_dataset(tmp_path): + repository_root = Path(__file__).parents[1] + + result = fetch.fetch_dataset("sachs", data_home=tmp_path, auto_download=False) + + assert result == (repository_root / "datasets" / "sachs" / "v1").resolve() + assert (result / "measurements.tsv").is_file() + assert (result / "condition_manifest.csv").is_file() + + +def test_explicit_future_version_can_use_local_source(tmp_path, monkeypatch): + files = { + "measurements.tsv": "value\n2\n", + "condition_manifest.csv": "condition\nfuture\n", + "README.md": "future dataset\n", + } + directory = _write_dataset(tmp_path / "datasets", "example", "v2", files) + spec = catalog.DatasetSpec( + name="example", + version="v2", + remote_url=None, + archive_sha256="unused", + file_sha256={filename: hashlib.sha256(content.encode()).hexdigest() for filename, content in files.items()}, + ) + monkeypatch.setitem(catalog.DATASETS, (spec.name, spec.version), spec) + + result = fetch.fetch_dataset("example", version="v2", source_dir=tmp_path / "datasets", auto_download=False) + + assert result == directory.resolve() + + +def test_local_source_wins_over_remote(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch) + local = _write_dataset( + tmp_path / "checkout" / "datasets", + spec.name, + spec.version, + { + "measurements.tsv": "value\nlocal\n", + "condition_manifest.csv": "condition\nlocal\n", + "README.md": "local dataset\n", + }, + ) + local_spec = catalog.DatasetSpec( + name=spec.name, + version=spec.version, + remote_url=spec.remote_url, + archive_sha256=spec.archive_sha256, + file_sha256={filename: _sha256(local / filename) for filename in spec.file_sha256}, + ) + monkeypatch.setitem(catalog.DATASETS, (spec.name, spec.version), local_spec) + + def fail_download(*args, **kwargs): + raise AssertionError("remote source should not be used") + + monkeypatch.setattr(fetch, "urlopen", fail_download) + result = fetch.fetch_dataset(spec.name, source_dir=tmp_path / "checkout", data_home=tmp_path / "cache") + + assert result == local.resolve() + + +def test_remote_download_is_cached_and_reused(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch) + source_dir = tmp_path / "missing-source" + data_home = tmp_path / "cache" + + result = fetch.fetch_dataset(spec.name, source_dir=source_dir, data_home=data_home) + assert result == (data_home / spec.name / spec.version).resolve() + assert (result / ".complete.json").is_file() + + def fail_download(*args, **kwargs): + raise AssertionError("cached source should be used") + + monkeypatch.setattr(fetch, "urlopen", fail_download) + cached = fetch.fetch_dataset(spec.name, source_dir=source_dir, data_home=data_home) + + assert cached == result + + +def test_auto_download_false_does_not_use_remote(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch) + + with pytest.raises(FileNotFoundError, match="auto_download is false"): + fetch.fetch_dataset( + spec.name, + source_dir=tmp_path / "missing", + data_home=tmp_path / "cache", + auto_download=False, + ) + + +def test_checksum_mismatch_is_rejected(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch) + broken = catalog.DatasetSpec( + name=spec.name, + version=spec.version, + remote_url=spec.remote_url, + archive_sha256="0" * 64, + file_sha256=spec.file_sha256, + ) + monkeypatch.setitem(catalog.DATASETS, (broken.name, broken.version), broken) + + with pytest.raises(fetch.DatasetIntegrityError, match="Checksum mismatch"): + fetch.fetch_dataset(spec.name, source_dir=tmp_path / "missing", data_home=tmp_path / "cache") + + +def test_unsafe_archive_member_is_rejected(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch, unsafe_member="../measurements.tsv") + + with pytest.raises(fetch.DatasetIntegrityError, match="unsafe member"): + fetch.fetch_dataset(spec.name, source_dir=tmp_path / "missing", data_home=tmp_path / "cache") + + assert not (tmp_path / "measurements.tsv").exists() + + +def test_incomplete_cache_is_not_accepted(tmp_path, monkeypatch): + spec = _make_remote_spec(tmp_path, monkeypatch) + incomplete = tmp_path / "cache" / spec.name / spec.version + incomplete.mkdir(parents=True) + (incomplete / "measurements.tsv").write_text("partial\n", encoding="utf-8") + + result = fetch.fetch_dataset( + spec.name, + source_dir=tmp_path / "missing", + data_home=tmp_path / "cache", + auto_download=True, + ) + + assert (result / ".complete.json").is_file() + assert (result / "measurements.tsv").read_text(encoding="utf-8") == "value\n1\n" diff --git a/tests/test_deprecations.py b/tests/test_deprecations.py index d41ab62e8..b9cf74472 100644 --- a/tests/test_deprecations.py +++ b/tests/test_deprecations.py @@ -1,7 +1,5 @@ """Tests for compatibility APIs retained during the CORNETO 1.x line.""" -import importlib - import pytest import corneto as cn @@ -24,14 +22,3 @@ def test_undocumented_backend_compatibility_apis_are_removed(): with pytest.raises(TypeError, match="unexpected keyword argument 'graph'"): ProblemDef(graph=object()) - - -def test_signal_package_warns_and_reexports_canonical_cellnopt(): - """The old CellNOpt path warns and preserves function identity.""" - canonical = importlib.import_module("corneto.methods.signaling.cellnopt_ilp") - - with pytest.warns(FutureWarning, match=r"corneto\.methods\.signal is deprecated"): - legacy = importlib.import_module("corneto.methods.signal.cellnopt_ilp") - - assert legacy.cellnoptILP is canonical.cellnoptILP - assert legacy.expand_graph_for_flows is canonical.expand_graph_for_flows diff --git a/tests/test_generate_switcher.py b/tests/test_generate_switcher.py new file mode 100644 index 000000000..0df9b6794 --- /dev/null +++ b/tests/test_generate_switcher.py @@ -0,0 +1,24 @@ +"""Tests for the public documentation version switcher.""" + +from scripts.generate_switcher import build_entries + + +def test_switcher_lists_stable_and_release_tags_without_dev_docs(monkeypatch): + """The public trunk has no separate latest/development documentation site.""" + monkeypatch.setattr("scripts.generate_switcher._get_tags", lambda: ["v1.0.0-rc.2"]) + + entries = build_entries("https://corneto.org") + + assert entries == [ + { + "name": "stable", + "version": "stable", + "url": "https://corneto.org/stable/", + "preferred": True, + }, + { + "name": "v1.0.0-rc.2", + "version": "v1.0.0-rc.2", + "url": "https://corneto.org/v1.0.0-rc.2/", + }, + ] diff --git a/tests/test_prepare_docs_pages.py b/tests/test_prepare_docs_pages.py new file mode 100644 index 000000000..2a2c41b1e --- /dev/null +++ b/tests/test_prepare_docs_pages.py @@ -0,0 +1,173 @@ +"""Tests for assembling the multi-version GitHub Pages tree.""" + +from pathlib import Path + +import pytest + +from scripts.prepare_docs_pages import prepare_pages_tree, validate_built_switcher, validate_landing_bundle + + +def _write(path: Path, content: str = "content") -> None: + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content, encoding="utf-8") + + +def _landing_bundle(root: Path) -> Path: + landing = root / "landing" + _write( + landing / "index.html", + """ + + + +Docs +""", + ) + _write(landing / "assets" / "favicon.ico") + _write(landing / "assets" / "social.jpg") + _write(landing / "assets" / "logo.png") + return landing + + +def _sphinx_build(root: Path, version: str) -> Path: + build = root / f"build-{version}" + _write( + build / "index.html", + f""" +""", + ) + return build + + +def test_main_deployment_updates_root_and_exactly_replaces_stable(tmp_path): + pages = tmp_path / "pages" + build = _sphinx_build(tmp_path, "stable") + landing = _landing_bundle(tmp_path) + _write(pages / "stable" / "stale.html") + _write(pages / "v0.9.0" / "keep.html") + _write(pages / "assets" / "stale.png") + _write(pages / "index.html", "old landing") + _write(pages / "CNAME", "corneto.org") + + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=landing, + version_folder="stable", + base_url="https://corneto.org", + update_root=True, + ) + + assert (pages / "stable" / "index.html").read_text(encoding="utf-8") == (build / "index.html").read_text( + encoding="utf-8" + ) + assert not (pages / "stable" / "stale.html").exists() + assert (pages / "v0.9.0" / "keep.html").is_file() + assert (pages / "CNAME").read_text(encoding="utf-8") == "corneto.org" + assert (pages / "index.html").read_text(encoding="utf-8") == (landing / "index.html").read_text(encoding="utf-8") + assert sorted(path.name for path in (pages / "assets").iterdir()) == ["favicon.ico", "logo.png", "social.jpg"] + assert (pages / ".nojekyll").is_file() + assert (pages / "switcher.json").is_file() + + +def test_tag_deployment_preserves_root_landing_and_assets(tmp_path): + pages = tmp_path / "pages" + build = _sphinx_build(tmp_path, "v1.0.0") + _write(pages / "index.html", "current landing") + _write(pages / "assets" / "current.png") + _write(pages / "v1.0.0" / "stale.html") + + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=tmp_path / "unused-landing", + version_folder="v1.0.0", + base_url="https://corneto.org", + update_root=False, + ) + + assert (pages / "index.html").read_text(encoding="utf-8") == "current landing" + assert (pages / "assets" / "current.png").is_file() + assert (pages / "v1.0.0" / "index.html").read_text(encoding="utf-8") == (build / "index.html").read_text( + encoding="utf-8" + ) + assert not (pages / "v1.0.0" / "stale.html").exists() + assert (pages / "switcher.json").is_file() + + +def test_landing_validation_reports_missing_asset(tmp_path): + landing = _landing_bundle(tmp_path) + (landing / "assets" / "logo.png").unlink() + + with pytest.raises(ValueError, match="Landing assets are missing"): + validate_landing_bundle(landing) + + +def test_landing_validation_checks_same_site_social_image(tmp_path): + landing = _landing_bundle(tmp_path) + (landing / "assets" / "social.jpg").unlink() + + with pytest.raises(ValueError, match=r"https://corneto\.org/assets/social\.jpg"): + validate_landing_bundle(landing) + + +def test_built_switcher_rejects_wrong_url(tmp_path): + build = _sphinx_build(tmp_path, "stable") + index = build / "index.html" + index.write_text(index.read_text(encoding="utf-8").replace("corneto.org", "example.org"), encoding="utf-8") + + with pytest.raises(ValueError, match="Unexpected switcher URL"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +def test_built_switcher_rejects_wrong_version(tmp_path): + build = _sphinx_build(tmp_path, "latest") + + with pytest.raises(ValueError, match="Unexpected switcher version match"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +def test_built_switcher_rejects_missing_configuration(tmp_path): + build = tmp_path / "build" + _write(build / "index.html", "") + + with pytest.raises(ValueError, match="missing the theme switcher configuration"): + validate_built_switcher(build, "stable", "https://corneto.org") + + +@pytest.mark.parametrize("version_folder", ["latest", "../stable", "v1/escape", "/stable", ""]) +def test_unsafe_version_folder_is_rejected(tmp_path, version_folder): + pages = tmp_path / "pages" + build = tmp_path / "build" + pages.mkdir() + _write(build / "index.html") + + with pytest.raises(ValueError, match="Unsafe documentation destination"): + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=tmp_path / "unused-landing", + version_folder=version_folder, + base_url="https://corneto.org", + update_root=False, + ) + + +def test_tag_cannot_update_root_landing(tmp_path): + pages = tmp_path / "pages" + build = tmp_path / "build" + pages.mkdir() + _write(build / "index.html") + + with pytest.raises(ValueError, match="Only the stable deployment"): + prepare_pages_tree( + pages_dir=pages, + build_dir=build, + landing_dir=_landing_bundle(tmp_path), + version_folder="v1.0.0", + base_url="https://corneto.org", + update_root=True, + ) diff --git a/tests/test_release.py b/tests/test_release.py index 072020055..136429240 100644 --- a/tests/test_release.py +++ b/tests/test_release.py @@ -17,21 +17,25 @@ def test_dry_run_uses_selected_remote(monkeypatch, capsys): monkeypatch.setattr(release, "_ensure_clean_tree", lambda: None) monkeypatch.setattr(release, "_ensure_on_main", lambda: None) monkeypatch.setattr(release, "_ensure_up_to_date_with_remote_main", calls.append) - monkeypatch.setattr(release, "_ensure_dev_is_merged", calls.append) monkeypatch.setattr( release, "_ensure_tag_does_not_exist", lambda version, remote: calls.append((version, remote)), ) + monkeypatch.setattr( + release, + "_ensure_release_notes", + lambda version: calls.append(("notes", version)), + ) result = release.main(["v1.0.0-beta.8", "--remote", "public", "--dry-run"]) assert result == 0 assert calls == [ - "public", "public", "public", ("v1.0.0-beta.8", "public"), + ("notes", "v1.0.0-beta.8"), ] assert "Would create and push tag: v1.0.0-beta.8" in capsys.readouterr().out @@ -61,3 +65,51 @@ def test_remote_name_cannot_be_an_option(): assert "Invalid remote name" in str(exc) else: raise AssertionError("Expected an invalid remote name to be rejected") + + +def test_release_notes_require_canonical_prerelease_heading_and_highlights(tmp_path): + """Pre-release notes use the same title and badge as generated documentation.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + notes = notes_dir / "v1.2.3-rc.4.md" + notes.write_text( + "# Release v1.2.3-rc.4 {bdg-warning}`Pre-release`\n\n## Highlights\n\n- A release highlight.\n", + encoding="utf-8", + ) + + release._ensure_release_notes("v1.2.3-rc.4", root=tmp_path) + + +def test_release_notes_reject_inconsistent_title(tmp_path): + """A manually reformatted release name cannot pass the release guard.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + (notes_dir / "v1.2.3-rc.4.md").write_text( + "# CORNETO 1.2.3 RC4\n\n## Highlights\n", + encoding="utf-8", + ) + + try: + release._ensure_release_notes("v1.2.3-rc.4", root=tmp_path) + except release.ReleaseError as exc: + assert "must start with" in str(exc) + assert "Pre-release" in str(exc) + else: + raise AssertionError("Expected an inconsistent release-note title to be rejected") + + +def test_release_notes_require_highlights(tmp_path): + """Every manually prepared release page retains the shared highlights section.""" + notes_dir = tmp_path / "docs" / "releases" + notes_dir.mkdir(parents=True) + (notes_dir / "v1.2.3.md").write_text( + "# Release v1.2.3\n\n## Details\n", + encoding="utf-8", + ) + + try: + release._ensure_release_notes("v1.2.3", root=tmp_path) + except release.ReleaseError as exc: + assert "## Highlights" in str(exc) + else: + raise AssertionError("Expected missing highlights to be rejected") From b51f917bbcb34df219ef1f45ca3145646e19a68d Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 15:22:18 +0200 Subject: [PATCH 2/5] fix(annnet): carry PR #60 node API into dev --- corneto/methods/signaling/annnet.py | 22 +++++++++---------- .../annnet-cellnopt-dag.ipynb | 18 +++++++-------- .../methods/signaling/test_cellnopt_annnet.py | 8 +++---- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/corneto/methods/signaling/annnet.py b/corneto/methods/signaling/annnet.py index 0f209a5ca..2eb7db91e 100644 --- a/corneto/methods/signaling/annnet.py +++ b/corneto/methods/signaling/annnet.py @@ -106,11 +106,11 @@ def add_cellnopt_conditions( {condition_aspect: list(condition_names)}, ) - known_vertices = set(graph.vertices()) - base_vertices = list(graph.vertices()) + known_nodes = set(graph.nodes()) + base_nodes = list(graph.nodes()) layers = {condition: (condition,) for condition in condition_names} for condition, layer in layers.items(): - graph.add_vertices(base_vertices, layer=layer) + graph.add_nodes(base_nodes, layer=layer) values_by_role = ( (inputs[condition], input_attr), (inhibitors[condition], inhibitor_attr), @@ -119,12 +119,12 @@ def add_cellnopt_conditions( for values, attribute in values_by_role: if not isinstance(values, Mapping): raise TypeError(f"Values for condition {condition!r} must be mappings keyed by protein.") - unknown = set(values) - known_vertices + unknown = set(values) - known_nodes if unknown: protein = sorted(unknown, key=str)[0] raise ValueError(f"Unknown protein {protein!r} in condition {condition!r}.") for protein, value in values.items(): - graph.layers.set_vertex_layer_attrs(str(protein), layer, **{attribute: value}) + graph.layers.set_node_attrs(str(protein), layer, **{attribute: value}) return layers @@ -201,9 +201,9 @@ def build_cellnopt_from_annnet( inputs[condition] = {} inhibitors[condition] = {} measurements[condition] = {} - for protein in graph.layers.layer_vertex_set(layer): + for protein in graph.layers.layer_node_set(layer): protein_id = str(protein[0]) if isinstance(protein, tuple) else str(protein) - attributes = graph.layers.get_vertex_layer_attrs(protein_id, layer) + attributes = graph.layers.node_attrs(protein_id, layer) if input_attr in attributes: inputs[condition][protein_id] = attributes[input_attr] if attributes.get(inhibitor_attr): @@ -292,17 +292,17 @@ def add_cellnopt_results( condition_errors = {} for condition_index, condition in enumerate(condition_names): layer = context.condition_layers[condition] - graph.add_vertices(vertices, layer=layer) + graph.add_nodes(vertices, layer=layer) endpoint_error = 0.0 for vertex_index, protein in enumerate(vertices): predicted = float(predictions[vertex_index, condition_index]) attributes = {prediction_attr: predicted} - existing = graph.layers.get_vertex_layer_attrs(protein, layer) + existing = graph.layers.node_attrs(protein, layer) if measurement_attr in existing: error = abs(predicted - float(existing[measurement_attr])) attributes[error_attr] = error endpoint_error += error - graph.layers.set_vertex_layer_attrs(protein, layer, **attributes) + graph.layers.set_node_attrs(protein, layer, **attributes) condition_edges = [] for reaction_index in selected_indices: @@ -344,7 +344,7 @@ def add_cellnopt_results( } if solution is not None and getattr(solution, "status", None) is not None: layer_attributes["solver_status"] = str(solution.status) - graph.layers.set_layer_attrs(layer, **layer_attributes) + graph.layers.set_attrs(layer, **layer_attributes) condition_errors[condition] = endpoint_error graph.history.snapshot("cellnopt_results_added") diff --git a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb index af0ffb265..208fb7bea 100644 --- a/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb +++ b/docs/tutorials/annnet-signaling/annnet-cellnopt-dag.ipynb @@ -133,10 +133,10 @@ "signaling = an.AnnNet(directed=True)\n", "signaling.history.enable(True)\n", "signaling.slices.add(\"prior\", role=\"prior_knowledge\")\n", - "signaling.add_vertices(sorted(display_name))\n", + "signaling.add_nodes(sorted(display_name))\n", "\n", "for protein, label in display_name.items():\n", - " signaling.attrs.set_vertex_attrs(protein, label=label, entity_type=\"protein\")\n", + " signaling.attrs.set_node_attrs(protein, label=label, entity_type=\"protein\")\n", "\n", "prior_edge_ids = []\n", "for index, (source, sign, target) in enumerate(pkn_edges):\n", @@ -495,7 +495,7 @@ " signaling,\n", " backend=\"graphviz\",\n", " layout=\"dot\",\n", - " vertex_label_key=\"label\",\n", + " node_label_key=\"label\",\n", " use_weight_style=False,\n", " graph_attr={\"rankdir\": \"LR\", \"size\": \"12,7\"},\n", " node_attr={\"shape\": \"ellipse\", \"style\": \"filled\", \"fillcolor\": \"#eef4fb\"},\n", @@ -599,12 +599,12 @@ }, "outputs": [], "source": [ - "def vertex_layer_table(network, layers, columns):\n", - " \"\"\"Return selected vertex-layer attributes as a pandas table.\"\"\"\n", + "def node_layer_table(network, layers, columns):\n", + " \"\"\"Return selected node-layer attributes as a pandas table.\"\"\"\n", " rows = {}\n", " for condition, layer in layers.items():\n", " rows[condition] = {\n", - " label: network.layers.get_vertex_layer_attrs(protein, layer).get(attribute, np.nan)\n", + " label: network.layers.node_attrs(protein, layer).get(attribute, np.nan)\n", " for label, (protein, attribute) in columns.items()\n", " }\n", " return pd.DataFrame.from_dict(rows, orient=\"index\").rename_axis(\"condition\")" @@ -818,7 +818,7 @@ " \"AKT observed\": (\"akt\", \"observed\"),\n", " \"HSP27 observed\": (\"hsp27\", \"observed\"),\n", "}\n", - "experiment = vertex_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", + "experiment = node_layer_table(signaling, condition_layers, experiment_columns).fillna(0)\n", "experiment" ] }, @@ -1797,7 +1797,7 @@ } ], "source": [ - "akt_response = vertex_layer_table(\n", + "akt_response = node_layer_table(\n", " signaling,\n", " condition_layers,\n", " {\n", @@ -2007,7 +2007,7 @@ "an.io.write(signaling, analysis_path, overwrite=True)\n", "restored = an.io.read(analysis_path)\n", "\n", - "restored_akt = vertex_layer_table(\n", + "restored_akt = node_layer_table(\n", " restored,\n", " condition_layers,\n", " {\n", diff --git a/tests/methods/signaling/test_cellnopt_annnet.py b/tests/methods/signaling/test_cellnopt_annnet.py index 0dd81f0b2..d3f246e57 100644 --- a/tests/methods/signaling/test_cellnopt_annnet.py +++ b/tests/methods/signaling/test_cellnopt_annnet.py @@ -39,10 +39,10 @@ def test_cellnopt_reads_conditions_and_adds_results_to_annnet(backend): assert solution.status == "optimal" assert layers == {"off": ("off",), "on": ("on",), "blocked": ("blocked",)} - assert graph.layers.get_vertex_layer_attrs("L", ("on",))["input"] == 1 - assert graph.layers.get_vertex_layer_attrs("A", ("blocked",))["inhibited"] == 1 - assert graph.layers.get_vertex_layer_attrs("Y", ("on",))["predicted"] == 1 - assert graph.layers.get_layer_attrs(("blocked",))["endpoint_absolute_error"] == 0 + assert graph.layers.node_attrs("L", ("on",))["input"] == 1 + assert graph.layers.node_attrs("A", ("blocked",))["inhibited"] == 1 + assert graph.layers.node_attrs("Y", ("on",))["predicted"] == 1 + assert graph.layers.attrs(("blocked",))["endpoint_absolute_error"] == 0 assert graph.slices.exists("cellnopt_selected") assert summary["selected_reactions"] == 2 assert summary["condition_errors"] == {"off": 0.0, "on": 0.0, "blocked": 0.0} From 0642f4630d00557175e8249c24b888ee06fab16b Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 17:07:51 +0200 Subject: [PATCH 3/5] docs(release): prepare CORNETO 1.0.0-rc.6 --- corneto/methods/_predictive.py | 1 - docs/releases/index.md | 1 + docs/releases/v1.0.0-rc.6.md | 21 +++++++++++++++++++++ tests/methods/causal/test_linear_dag.py | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 docs/releases/v1.0.0-rc.6.md diff --git a/corneto/methods/_predictive.py b/corneto/methods/_predictive.py index 80e79e766..0d78f808f 100644 --- a/corneto/methods/_predictive.py +++ b/corneto/methods/_predictive.py @@ -62,4 +62,3 @@ def require_expression_value(problem: Any, name: str, method: str) -> np.ndarray if not np.all(np.isfinite(array)): raise ValueError(f"{method} has no usable finite solution for {name!r}.") return array - diff --git a/docs/releases/index.md b/docs/releases/index.md index 758934fa3..604e806d5 100644 --- a/docs/releases/index.md +++ b/docs/releases/index.md @@ -7,6 +7,7 @@ This section contains detailed release notes for CORNETO versions, documenting n ```{toctree} :maxdepth: 1 +v1.0.0-rc.6 v1.0.0-rc.5 v1.0.0-rc.4 v1.0.0-rc.3 diff --git a/docs/releases/v1.0.0-rc.6.md b/docs/releases/v1.0.0-rc.6.md new file mode 100644 index 000000000..fc51f195f --- /dev/null +++ b/docs/releases/v1.0.0-rc.6.md @@ -0,0 +1,21 @@ +# Release v1.0.0-rc.6 {bdg-warning}`Pre-release` + +CORNETO 1.0.0 RC6 adds causal structure discovery from perturbation data and +extends reusable signaling-model workflows. + +## Highlights + +- Added `LinearDAGDiscovery` for sparse, acyclic linear causal models constrained + by a directed prior-knowledge network. It supports hard and shift interventions, + model fitting, prediction, evaluation, and residual diagnostics. +- Extended `CellNOptDAG` with a reusable prediction and evaluation lifecycle and + expanded its multi-condition workflow and documentation. +- Added a dataset catalog and fetch helpers, with a versioned Sachs signaling + dataset and tutorial for linear causal discovery. +- Updated the AnnNet interoperability examples and bridge for the current node + API, and refined shared sparse-flow and backend support used by other methods. + +## Compatibility + +This release adds public causal-model and dataset APIs. The AnnNet integration +and examples target the node API introduced in PR #60. diff --git a/tests/methods/causal/test_linear_dag.py b/tests/methods/causal/test_linear_dag.py index 03d53ea50..d863581a3 100644 --- a/tests/methods/causal/test_linear_dag.py +++ b/tests/methods/causal/test_linear_dag.py @@ -741,7 +741,7 @@ def test_cvxpy_formulation_uses_only_required_integer_variables(): def test_linear_dag_guide_notebook_executes_every_cell(): - notebook_path = Path(__file__).parents[3] / "docs/guide/signaling/linear-dag-discovery.ipynb" + notebook_path = Path(__file__).parents[3] / "docs/guide/causal/linear-dag-discovery.ipynb" notebook = nbformat.read(notebook_path, as_version=4) executed = NotebookClient( From 19c79d68023296bf287cf269194e7eee9930a979 Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 17:17:08 +0200 Subject: [PATCH 4/5] style: format predictive API tests --- tests/methods/test_predictive_api.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/methods/test_predictive_api.py b/tests/methods/test_predictive_api.py index 837d12bf9..1541258b2 100644 --- a/tests/methods/test_predictive_api.py +++ b/tests/methods/test_predictive_api.py @@ -246,8 +246,7 @@ def test_linear_evaluation_honors_vertex_and_held_out_sample_weights(backend): metrics = model.evaluate(held_out) assert np.isclose(metrics["forward_loss"], expected_vertex_weighted) expected_sample_weighted = ( - 5.0 * (4.0 * 1.0 / scales[0] + 1.0 * 2.0 / scales[0]) - + (4.0 * 2.0 / scales[1] + 1.0 * 4.0 / scales[1]) + 5.0 * (4.0 * 1.0 / scales[0] + 1.0 * 2.0 / scales[0]) + (4.0 * 2.0 / scales[1] + 1.0 * 4.0 / scales[1]) ) / 30.0 weighted = model.evaluate(held_out, sample_weights={"s1": 4.0, "s2": 1.0}) assert np.isclose(weighted["forward_loss"], expected_sample_weighted) @@ -316,9 +315,7 @@ def test_rebuilding_linear_model_invalidates_the_previous_solution(backend): model.build(graph, _linear_training_data()) assert model.solve_result is None with pytest.raises(ValueError, match="not been solved"): - model.predict( - Data.from_cdict({"test": {"A": {"mapping": "vertex", "value": 1.0, "intervened": True}}}) - ) + model.predict(Data.from_cdict({"test": {"A": {"mapping": "vertex", "value": 1.0, "intervened": True}}})) def test_rebuilding_cellnopt_model_invalidates_the_previous_solution(backend): @@ -355,10 +352,7 @@ def test_cellnopt_fixed_prediction_matches_solved_training_values(backend): "e_only": {"E": 1, "C": 1}, "inhibited": {"A": 1, "C": 1}, } - inhibitors = { - condition: ({"Y": 1} if condition == "inhibited" else {}) - for condition in inputs - } + inhibitors = {condition: ({"Y": 1} if condition == "inhibited" else {}) for condition in inputs} measurements = { "a": {"Y": 1, "Z": 0}, "b": {"Y": 1, "Z": 0}, From 0c263df23437d663cbf65f689faee52c5a370fef Mon Sep 17 00:00:00 2001 From: Pablo Rodriguez Mier Date: Wed, 23 Sep 2026 17:28:50 +0200 Subject: [PATCH 5/5] docs: include causal tutorial setup page in toctree --- docs/tutorials/causal/README.md | 2 +- docs/tutorials/index.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/causal/README.md b/docs/tutorials/causal/README.md index b23ab887f..f4e5ac266 100644 --- a/docs/tutorials/causal/README.md +++ b/docs/tutorials/causal/README.md @@ -1,4 +1,4 @@ -# Linear DAG discovery on the Sachs dataset +# Running the LinearDAG Sachs tutorial This tutorial uses `LinearDAGDiscovery` to find a network that helps explain single-cell signaling measurements from the Sachs study. It includes two diff --git a/docs/tutorials/index.md b/docs/tutorials/index.md index 83f359db2..3baac65f8 100755 --- a/docs/tutorials/index.md +++ b/docs/tutorials/index.md @@ -16,6 +16,7 @@ carnival/multi-receptor-integration.ipynb carnival/network-sampler.ipynb carnival/network-sampler-example.ipynb ml/kpnn-with-sc.ipynb +causal/README causal/linear-dag-discovery-sachs.ipynb ```