diff --git a/.github/actions/build-dev-image/action.yml b/.github/actions/build-dev-image/action.yml index 76d6d939..116e9e3e 100644 --- a/.github/actions/build-dev-image/action.yml +++ b/.github/actions/build-dev-image/action.yml @@ -1,9 +1,6 @@ name: "build-dev-image" description: "Build a dev image and push it to the Pixelgen container registries" inputs: - tag: - description: "The tag to use for the image" - required: true cache-from: description: "The cache to use for the build" default: "" @@ -61,7 +58,12 @@ runs: bakeSetCommands.push(...cacheToArray) bakeSetCommands.push(...platformArray) - bakeSetCommandsText = bakeSetCommands.join('\n') + // Override the version in the container if we are run in a version tag push event + if ( context.eventName === "push" && context.ref.startsWith('refs/tags/v') ) { + bakeSetCommands.push("*.args.VERSION_OVERRIDE=" + "${{ steps.meta.outputs.version }}" ) + } + + const bakeSetCommandsText = bakeSetCommands.join('\n') core.setOutput('set', bakeSetCommandsText) - name: Build and push to ghcr and ecr diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 94d65436..e38d7ece 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -132,7 +132,8 @@ jobs: fail-fast: false matrix: case: - - D21 + - mpx_v1 + - mpx_v2 if: needs.pre_job.outputs.should_skip == '{}' || !fromJSON(needs.pre_job.outputs.paths_result).python.should_skip steps: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 27b8f9e6..ec20bc93 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: - id: ruff-format - repo: https://github.com/pre-commit/mirrors-mypy - rev: "v1.3.0" # Use the sha / tag you want to point at + rev: "v1.10.1" # Use the sha / tag you want to point at hooks: - id: mypy exclude: "(^cue.mod/)|(^docs/)" diff --git a/CHANGELOG.md b/CHANGELOG.md index 56fbba85..03aa59db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,194 +5,222 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.18.0] - 2024-07-11 + +### Added + +- Add minimum marker count `colocalization_min_marker_count` parameter to calculate colocalization score. +- Add `density_scatter_plot` function to make two-marker abundance scatter plots with pseudo-density coloring. +- Add `wpmds` option in `pmds_layout` to compute edge weighted layouts. This is now set as the default layout algorithm. +- Add `dsb_normalization` function for normalization of marker abundance. +- Add a `Fraction of Outlier Cells` metric to the QC report. +- Add a `Panel Version` metadata field to the QC report. +- Add support for datasets generated using the `human-sc-immunology-spatial-proteomics-2` panel. + +### Changed + +- The default value for `normalize_counts` in `local_g` is now `False` instead of `True`. +- The default transformation for the calculation of the colocalization score is now `rate-diff` instead of `log1p`. +- Rename `edge_rank_plot` function to `molecule_rank_plot`. + +### Fixed + +- Fix a bug in `compute_transition_probabilities` when `k>1` where the stochastic matrix was not correctly row-normalized. +- Fix a bug in `local_g` when `use_weights=False` where the adjacency matrix was not correctly expended if `k>1`. +- Fix a bug where `a_pixels_per_b_pixel` summary statistics where equal to the `b_pixels_per_a_pixel` statistics. +- `collapse` will return exit code 137 when one of the child processes is killed by the system (e.g. because it is + to much memory). This allows e.g. Nextflow to retry the process with more memory automatically. +- Hide the `Sample Description` metadata field in the QC report when no value is available. +- Fix an issue where boolean parameters were formatted as integers in the Parameters section of the QC report. +- Fix a bug in aggregating files with precomputed layouts, where the lazy-loading of the layouts was not working correctly. + +### Removed + +- Remove the `Pixel Version` metadata field from the QC report. + ## [0.17.1] - 2024-05-27 ### Fixed -* Poor performance when writing many small layouts to pxl file (~45x speed-up). This should almost only - impact test scenarios, since most real components should be large enough for this not to be an issue. +- Poor performance when writing many small layouts to pxl file (~45x speed-up). This should almost only + impact test scenarios, since most real components should be large enough for this not to be an issue. ## [0.17.0] - 2024-05-23 ### Added -* Add `rate_diff_transformation` function with `rate-diff` alias as an alternative option for transforming marker counts before colocalization calculation. -* Add `local_g` function to compute spatial autocorrelation of marker counts per node. -* Add `compute_transition_probabilities` function to compute transition probabilities for k-step random walks for node pairs in a graph. -* Add QC plot showing UMIs per UPIA vs Tau. -* Add plot functions showing edge rank and cell counts. -* Add 2D and 3D graph plot functions. -* Add heatmap plot functions showing colocalization and differential colocalization. -* Add volcano plot (value difference vs log p-value) function for differential colocalization. -* Add a function to calculate the differential colocalization between two conditions. -* Performance improvements and reduced bundle size in QC report. -* Improved console output in verbose mode. -* Improved logging from multiprocessing jobs. -* Improved runtime for graph creation. -* Added PMDS layout algorithm. -* Add `--sample_name` option to `single-cell amplicon` to overwrite the name derived from the input filename. -* Add `--skip-input-checks` option to `single-cell amplicon` to make input filename checks warnings instead of errors. -* `PixelDataset` instances are now written to disk without creating intermediate files on-disk. -* A nice string representation for the `Graph` class, to let you know how many nodes and edges there are in the current graph object instance. -* Metric to collect molecules (edges) in cells with outlier distributions of antibodies (aggregates). -* Provide typed interfaces for all per-stage report files using pydantic. -* Centralize pixelator intermediate file lookup and access. -* Add a `precomputed_layouts` property to `PixelDataset` to allow for loading precomputed layouts. -* Add `pixelator single-cell layout` stage to pixelator, which allows users to compute layouts for a PXL file that can then be used to visualize the graph in 2D or 3D downstream. -* Add minimum marker count `polarization_min_marker_count` parameter to calculate Polarity Score. -* Add "log1p" as an alternative for `PolarizationNormalizationTypes`. -* Add `convert_indices_to_integers` option when creating graphs. -* Add a feature flag module to aid in the development of new features. +- Add `rate_diff_transformation` function with `rate-diff` alias as an alternative option for transforming marker counts before colocalization calculation. +- Add `local_g` function to compute spatial autocorrelation of marker counts per node. +- Add `compute_transition_probabilities` function to compute transition probabilities for k-step random walks for node pairs in a graph. +- Add QC plot showing UMIs per UPIA vs Tau. +- Add plot functions showing edge rank and cell counts. +- Add 2D and 3D graph plot functions. +- Add heatmap plot functions showing colocalization and differential colocalization. +- Add volcano plot (value difference vs log p-value) function for differential colocalization. +- Add a function to calculate the differential colocalization between two conditions. +- Performance improvements and reduced bundle size in QC report. +- Improved console output in verbose mode. +- Improved logging from multiprocessing jobs. +- Improved runtime for graph creation. +- Added PMDS layout algorithm. +- Add `--sample_name` option to `single-cell amplicon` to overwrite the name derived from the input filename. +- Add `--skip-input-checks` option to `single-cell amplicon` to make input filename checks warnings instead of errors. +- `PixelDataset` instances are now written to disk without creating intermediate files on-disk. +- A nice string representation for the `Graph` class, to let you know how many nodes and edges there are in the current graph object instance. +- Metric to collect molecules (edges) in cells with outlier distributions of antibodies (aggregates). +- Provide typed interfaces for all per-stage report files using pydantic. +- Centralize pixelator intermediate file lookup and access. +- Add a `precomputed_layouts` property to `PixelDataset` to allow for loading precomputed layouts. +- Add `pixelator single-cell layout` stage to pixelator, which allows users to compute layouts for a PXL file that can then be used to visualize the graph in 2D or 3D downstream. +- Add minimum marker count `polarization_min_marker_count` parameter to calculate Polarity Score. +- Add "log1p" as an alternative for `PolarizationNormalizationTypes`. +- Add `convert_indices_to_integers` option when creating graphs. +- Add a feature flag module to aid in the development of new features. ### Changed -* Change name and description of `Avg. Reads per Cell` and `Avg. Reads Usable per Cell` in QC report. -* The output name of the `.pxl` file from the `annotate` step is now `*.annotated.dataset.pxl`. -* The output name of the `.pxl` file from the `analysis` step is now `*.analysis.dataset.pxl`. -* The term `edges` in `metrics` and `adata` is now replaced with `molecules`. -* Renaming of variables in per-stage JSON reports. -* Changed name of TCRb to TCRVb5 antibody in human-immunology-panel file and bumped to version 0.5.0. -* Renaming of component metrics in adata. -* Use MPX graph compatible permutation strategy when calculating Moran's I related statistics. -* Marker filtering is now done after count transformation in polarization score calculation. -* Use the input read count at the annotate stage for the `fraction_antibody_reads_in_outliers` metric denominator instead of the total raw input reads. -* Use common analysis engine to orchestrate running different "per component" analyses, like polarization and colocalization analysis (yielding a roughly 3x speed-up over the previous approach). -* The default transformation for the calculation of the polarity score is now `log1p` instead of `clr`. +- Change name and description of `Avg. Reads per Cell` and `Avg. Reads Usable per Cell` in QC report. +- The output name of the `.pxl` file from the `annotate` step is now `*.annotated.dataset.pxl`. +- The output name of the `.pxl` file from the `analysis` step is now `*.analysis.dataset.pxl`. +- The term `edges` in `metrics` and `adata` is now replaced with `molecules`. +- Renaming of variables in per-stage JSON reports. +- Changed name of TCRb to TCRVb5 antibody in human-immunology-panel file and bumped to version 0.5.0. +- Renaming of component metrics in adata. +- Use MPX graph compatible permutation strategy when calculating Moran's I related statistics. +- Marker filtering is now done after count transformation in polarization score calculation. +- Use the input read count at the annotate stage for the `fraction_antibody_reads_in_outliers` metric denominator instead of the total raw input reads. +- Use common analysis engine to orchestrate running different "per component" analyses, like polarization and colocalization analysis (yielding a roughly 3x speed-up over the previous approach). +- The default transformation for the calculation of the polarity score is now `log1p` instead of `clr`. ### Fixed -* Fix a bug in how discarded UMIs are calculated and reported. -* Fix deflated counts in the edgelist after collapse. -* Fix a bug where an `r1` or `r2` in the directory part of a read file would break file name sanity checks. -* Fix a bug where the wrong `r1` or `r2` in the filename would be removed when multiple matches are present. -* Logging would cause deadlocks in multiprocessing scenarios, this has been resolved by switching to a server/client-based logging system. -* Fix a bug in the amplicon stage where read suffixes were not correctly recognized. -* Ensure deterministic results from `pmds_layout` (given a set seed). -* Fix an issue with the `fraction_antibody_reads_usable_per_cell` metric where the denominator read count was not correctly averaged with the cell count. +- Fix a bug in how discarded UMIs are calculated and reported. +- Fix deflated counts in the edgelist after collapse. +- Fix a bug where an `r1` or `r2` in the directory part of a read file would break file name sanity checks. +- Fix a bug where the wrong `r1` or `r2` in the filename would be removed when multiple matches are present. +- Logging would cause deadlocks in multiprocessing scenarios, this has been resolved by switching to a server/client-based logging system. +- Fix a bug in the amplicon stage where read suffixes were not correctly recognized. +- Ensure deterministic results from `pmds_layout` (given a set seed). +- Fix an issue with the `fraction_antibody_reads_usable_per_cell` metric where the denominator read count was not correctly averaged with the cell count. ### Removed -* Remove multi-sample processing from all `single-cell` subcommands. -* Remove `--input1_pattern` and `--input2_pattern` from `single-cell amplicon` command. -* Self-correlations, e.g. CD8 vs CD8 are no longer part of the colocalization results, as these values will always be undefined. -* Remove `umi_unique_count` and `upi_unique_count` from `edgelist`. -* Remove `umi` and `median_umi_degree` from `component` metrics. -* Remove `normalized_rel` and `denoised` from `obsm` in `anndata`. -* Remove the `denoise` function. -* Remove cell type selector in QC report for UMAP colored by molecule count plots. -* Remove `clr` as a transformation option in `pixelator analysis`. +- Remove multi-sample processing from all `single-cell` subcommands. +- Remove `--input1_pattern` and `--input2_pattern` from `single-cell amplicon` command. +- Self-correlations, e.g. CD8 vs CD8 are no longer part of the colocalization results, as these values will always be undefined. +- Remove `umi_unique_count` and `upi_unique_count` from `edgelist`. +- Remove `umi` and `median_umi_degree` from `component` metrics. +- Remove `normalized_rel` and `denoised` from `obsm` in `anndata`. +- Remove the `denoise` function. +- Remove cell type selector in QC report for UMAP colored by molecule count plots. +- Remove `clr` as a transformation option in `pixelator analysis`. ## [0.16.2] - 2024-03-19 ### Fixed -* Uninitialized value for `--polarization-n-permutations` +- Uninitialized value for `--polarization-n-permutations` ## [0.16.1] - 2024-01-12 ### Fixed -* Bug in README shield formatting - +- Bug in README shield formatting ## [0.16.0] - 2024-01-12 This release introduces two major change in pixelator: - 1) the Graph backend has been switched from using igraph to using networkx - 2) the license has been changed from GLP2.0 to MIT + +1. the Graph backend has been switched from using igraph to using networkx +2. the license has been changed from GLP2.0 to MIT ### Added -* Experimental 3D heatmap plotting feature. -* Optional caching of layouts to speed up computations in some scenarios. -* `experimental` mark that can be added to functions that are not yet production ready. -* The underlying graph instance e.g. a networkx `Graph` instance is exposed as a property called `raw` from the pixelator `Graph` class. -* Monte Carlo permutations supported when calculating Moran's I (`morans_z_sim`) in `polarization_scores`. +- Experimental 3D heatmap plotting feature. +- Optional caching of layouts to speed up computations in some scenarios. +- `experimental` mark that can be added to functions that are not yet production ready. +- The underlying graph instance e.g. a networkx `Graph` instance is exposed as a property called `raw` from the pixelator `Graph` class. +- Monte Carlo permutations supported when calculating Moran's I (`morans_z_sim`) in `polarization_scores`. ### Changed -* The default (and only) graph backend in pixelator is now based on networkx. -* `mean_reads` and `median_reads` in adata.obs to `mean_reads_per_molecule` and `median_reads_per_molecule` respectively. -* Drop support for python 3.8 and 3.9. -* Change output format of `collapse` from csv to parquet. -* Change input and output format of `graph` from csv to parquet. -* Change input format of `annotate` from csv to parquet. -* Rename the report to "qc report" -* Add a Reads per Molecule frequency figure to the sequencing section of the qc report. -* Remove placeholder warning of missing data for not yet implemented features. -* Change "Median antibody molecules per cell" to "Average antibody molecules per cell" in the qc report. -* Refactoring of the graph backend implementations module. -* Speeding up the `amplicon` step by roughly 3x. +- The default (and only) graph backend in pixelator is now based on networkx. +- `mean_reads` and `median_reads` in adata.obs to `mean_reads_per_molecule` and `median_reads_per_molecule` respectively. +- Drop support for python 3.8 and 3.9. +- Change output format of `collapse` from csv to parquet. +- Change input and output format of `graph` from csv to parquet. +- Change input format of `annotate` from csv to parquet. +- Rename the report to "qc report" +- Add a Reads per Molecule frequency figure to the sequencing section of the qc report. +- Remove placeholder warning of missing data for not yet implemented features. +- Change "Median antibody molecules per cell" to "Average antibody molecules per cell" in the qc report. +- Refactoring of the graph backend implementations module. +- Speeding up the `amplicon` step by roughly 3x. ### Fixed -* Nicer error messages when there are no components valid for computing colocalization. -* A bunch of warnings. +- Nicer error messages when there are no components valid for computing colocalization. +- A bunch of warnings. ### Removed -* `graph` no longer outputs the raw edge list. -* igraph has been dropped as a graph backend for pixelator. - +- `graph` no longer outputs the raw edge list. +- igraph has been dropped as a graph backend for pixelator. ## [0.15.2] - 2023-10-23 ### Fixed -* Fixed broken pixeldataset aggregation for more than two samples. -* Fixed a bug in graph generation caused by accidentally writing the index to the parquet file. - For backwards compatibility, if there is a column named `index` in the edgelist, this - will be removed and the user will get a warning indicating that this has happened. - +- Fixed broken pixeldataset aggregation for more than two samples. +- Fixed a bug in graph generation caused by accidentally writing the index to the parquet file. + For backwards compatibility, if there is a column named `index` in the edgelist, this + will be removed and the user will get a warning indicating that this has happened. ## [0.15.1] - 2023-10-18 ### Fixed -* Fixed a bug in filtering pixeldataset causing it to return the wrong types. -* Fixed a bug in graph layout generation due to incorrect data frame concatenation. - +- Fixed a bug in filtering pixeldataset causing it to return the wrong types. +- Fixed a bug in graph layout generation due to incorrect data frame concatenation. ## [0.15.0] - 2023-10-16 ### Added -* Add support for Python 3.11. -* Add early enablement work for a networkx backend for the graph stage. +- Add support for Python 3.11. +- Add early enablement work for a networkx backend for the graph stage. ### Fixed -* Fix report color axis in report figures not updating when selecting markers or cell types. -* Remove placeholder links in report tooltips. -* Fix a bug where aggregating data did not add the correct sample, and unique component columns. - +- Fix report color axis in report figures not updating when selecting markers or cell types. +- Remove placeholder links in report tooltips. +- Fix a bug where aggregating data did not add the correct sample, and unique component columns. ## [0.14.0] - 2023-10-05 ### Added -* Lazy option for edge list loading (`pixeldataset.edgelist_lazy`), which returns a - `polars` `LazyFrame` that can be used to operate on the edge list without reading - all of it into memory. -* Option (`ignore_edgelists`) to skip the edge lists when aggregating files. This defaults - to `False`. +- Lazy option for edge list loading (`pixeldataset.edgelist_lazy`), which returns a + `polars` `LazyFrame` that can be used to operate on the edge list without reading + all of it into memory. +- Option (`ignore_edgelists`) to skip the edge lists when aggregating files. This defaults + to `False`. ### Changed -* Types on the edge list in memory will utilize the `pandas` `category` type for string, and - `uint16` for numeric values to lower the memory consumption when working with the - edge list -* Remove `--pbs1` and `--pbs2` commandline arguments to `pixelator single-cell adapterqc`. -* Restructure report figures. -* Improve metric names and tooltips in the report. -* Synchronize zoom level between the scatter plots in cell annotations section of the report. -* Add report placeholder for missing cell annotation data -* Add `Fraction of discarded UMIs` and `Avg. Reads per Molecule` metrics to the report. +- Types on the edge list in memory will utilize the `pandas` `category` type for string, and + `uint16` for numeric values to lower the memory consumption when working with the + edge list +- Remove `--pbs1` and `--pbs2` commandline arguments to `pixelator single-cell adapterqc`. +- Restructure report figures. +- Improve metric names and tooltips in the report. +- Synchronize zoom level between the scatter plots in cell annotations section of the report. +- Add report placeholder for missing cell annotation data +- Add `Fraction of discarded UMIs` and `Avg. Reads per Molecule` metrics to the report. ### Fixed -* Fix an issue where pixelator --version would return 0.0.0 when installing in editable mode. - +- Fix an issue where pixelator --version would return 0.0.0 when installing in editable mode. ## [0.13.1] - 2023-09-15 @@ -200,21 +228,20 @@ This release introduces two major change in pixelator: ### Changed -* Unpin igraph dependency to allow for newer versions of igraph to be used. -* Cleanup README and point to the external documentation site. -* Change PyPi package name to pixelgen-pixelator. +- Unpin igraph dependency to allow for newer versions of igraph to be used. +- Cleanup README and point to the external documentation site. +- Change PyPi package name to pixelgen-pixelator. ### Fixed -* Fix an issue where `--keep-workdirs` option for pytest was not available when running pytest without - restricting the testdir to `tests/integration`. -* Fix an issue where pixelator --version would return 0.0.0. +- Fix an issue where `--keep-workdirs` option for pytest was not available when running pytest without + restricting the testdir to `tests/integration`. +- Fix an issue where pixelator --version would return 0.0.0. ### Removed -* `clr` and `relative` transformation options for the colocalization computations in `analysis` - +- `clr` and `relative` transformation options for the colocalization computations in `analysis` ## [0.13.0] - 2023-09-13 -* First public release of pixelator. +- First public release of pixelator. diff --git a/CITATIONS.md b/CITATIONS.md index fe12af2d..9f77e8f4 100644 --- a/CITATIONS.md +++ b/CITATIONS.md @@ -25,3 +25,7 @@ - [local G](https://doi.org/10.1007/s11749-018-0599-x) > Bivand, R.S., Wong, D.W.S. Comparing implementations of global and local indicators of spatial association. TEST 27, 716–748 (2018). https://doi.org/10.1007/s11749-018-0599-x + +- [dsb](https://doi.org/10.1038/s41467-022-29356-8) + + > Mulè, M.P., Martins, A.J. & Tsang, J.S. Normalizing and denoising protein expression data from droplet-based single cell profiling. Nat Commun 13, 2099 (2022). https://doi.org/10.1038/s41467-022-29356-8 diff --git a/poetry.lock b/poetry.lock index 1ac78bed..82a905bd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "alabaster" @@ -13,13 +13,13 @@ files = [ [[package]] name = "anndata" -version = "0.10.7" +version = "0.10.8" description = "Annotated data." optional = false python-versions = ">=3.9" files = [ - {file = "anndata-0.10.7-py3-none-any.whl", hash = "sha256:8b50af790f9a73414d0b94fd7b8e005f5cc6c53c33eb09206d2bd6720115bffc"}, - {file = "anndata-0.10.7.tar.gz", hash = "sha256:9b186bea18956fefdc35e7464d822a17e9faa456ca2d20c7a0966a4837b822a2"}, + {file = "anndata-0.10.8-py3-none-any.whl", hash = "sha256:1b24934dc2674eaf3072cb7010e187aa2b2f4f0e4cf0a32ffeab5ffebe3b1415"}, + {file = "anndata-0.10.8.tar.gz", hash = "sha256:b728a33225eeaaefddf6bed546d935c0f06881c9166621b24de3b492b2f406bb"}, ] [package.dependencies] @@ -36,17 +36,17 @@ scipy = ">1.8" dev = ["pytest-xdist", "setuptools-scm"] doc = ["awkward (>=2.0.7)", "ipython", "myst-parser", "nbsphinx", "readthedocs-sphinx-search", "scanpydoc[theme,typehints] (>=0.13.4)", "sphinx (>=4.4)", "sphinx-autodoc-typehints (>=1.11.0)", "sphinx-book-theme (>=1.1.0)", "sphinx-copybutton", "sphinx-design (>=0.5.0)", "sphinx-issues", "sphinxext-opengraph", "zarr"] gpu = ["cupy"] -test = ["awkward (>=2.3)", "boltons", "dask[array,distributed] (>=2022.09.2)", "httpx", "joblib", "loompy (>=3.0.5)", "matplotlib", "openpyxl", "pyarrow", "pytest (>=7.3)", "pytest-cov (>=2.10)", "pytest-memray", "pytest-mock", "scanpy", "scikit-learn", "zarr"] +test = ["awkward (>=2.3)", "boltons", "dask[array,distributed] (>=2022.09.2)", "httpx", "joblib", "loompy (>=3.0.5)", "matplotlib", "openpyxl", "pyarrow", "pytest (>=8.2)", "pytest-cov (>=2.10)", "pytest-memray", "pytest-mock", "scanpy", "scikit-learn", "zarr (<3.0.0a0)"] [[package]] name = "annotated-types" -version = "0.6.0" +version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" files = [ - {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, - {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] [[package]] @@ -76,13 +76,13 @@ six = "*" [[package]] name = "array-api-compat" -version = "1.6" +version = "1.7.1" description = "A wrapper around NumPy and other array libraries to make them compatible with the Array API standard" optional = false python-versions = "*" files = [ - {file = "array_api_compat-1.6-py3-none-any.whl", hash = "sha256:0f132e698952bcebccfa941b4fc02cbc754802474b13a564208cf6cdbffb51e1"}, - {file = "array_api_compat-1.6.tar.gz", hash = "sha256:74a1e355cdabb9cf6c48922a5d07976d9230025d65731bef17174151b64876af"}, + {file = "array_api_compat-1.7.1-py3-none-any.whl", hash = "sha256:6974f51775972f39edbca39e08f1c2e43c51401c093a0fea5ac7159875095d8a"}, + {file = "array_api_compat-1.7.1.tar.gz", hash = "sha256:b6b37294cd1da2f9d9040c543d2d4c3d7a81615953d59811431ee4bf15647c3b"}, ] [package.extras] @@ -91,16 +91,17 @@ dask = ["dask"] jax = ["jax"] numpy = ["numpy"] pytorch = ["pytorch"] +sparse = ["sparse (>=0.15.1)"] [[package]] name = "astroid" -version = "3.1.0" +version = "3.2.2" description = "An abstract syntax tree for Python with inference support." optional = false python-versions = ">=3.8.0" files = [ - {file = "astroid-3.1.0-py3-none-any.whl", hash = "sha256:951798f922990137ac090c53af473db7ab4e70c770e6d7fae0cec59f74411819"}, - {file = "astroid-3.1.0.tar.gz", hash = "sha256:ac248253bfa4bd924a0de213707e7ebeeb3138abeb48d798784ead1e56d419d4"}, + {file = "astroid-3.2.2-py3-none-any.whl", hash = "sha256:e8a0083b4bb28fcffb6207a3bfc9e5d0a68be951dd7e336d5dcf639c682388c0"}, + {file = "astroid-3.2.2.tar.gz", hash = "sha256:8ead48e31b92b2e217b6c9733a21afafe479d52d6e164dd25fb1a770c7c3cf94"}, ] [package.dependencies] @@ -123,13 +124,13 @@ numpy = ">=1.12" [[package]] name = "babel" -version = "2.14.0" +version = "2.15.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, ] [package.extras] @@ -176,33 +177,33 @@ lxml = ["lxml"] [[package]] name = "black" -version = "24.4.0" +version = "24.4.2" description = "The uncompromising code formatter." optional = false python-versions = ">=3.8" files = [ - {file = "black-24.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6ad001a9ddd9b8dfd1b434d566be39b1cd502802c8d38bbb1ba612afda2ef436"}, - {file = "black-24.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3a3a092b8b756c643fe45f4624dbd5a389f770a4ac294cf4d0fce6af86addaf"}, - {file = "black-24.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dae79397f367ac8d7adb6c779813328f6d690943f64b32983e896bcccd18cbad"}, - {file = "black-24.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:71d998b73c957444fb7c52096c3843875f4b6b47a54972598741fe9a7f737fcb"}, - {file = "black-24.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8e5537f456a22cf5cfcb2707803431d2feeb82ab3748ade280d6ccd0b40ed2e8"}, - {file = "black-24.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:64e60a7edd71fd542a10a9643bf369bfd2644de95ec71e86790b063aa02ff745"}, - {file = "black-24.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd5b4f76056cecce3e69b0d4c228326d2595f506797f40b9233424e2524c070"}, - {file = "black-24.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:64578cf99b6b46a6301bc28bdb89f9d6f9b592b1c5837818a177c98525dbe397"}, - {file = "black-24.4.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f95cece33329dc4aa3b0e1a771c41075812e46cf3d6e3f1dfe3d91ff09826ed2"}, - {file = "black-24.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4396ca365a4310beef84d446ca5016f671b10f07abdba3e4e4304218d2c71d33"}, - {file = "black-24.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d99dfdf37a2a00a6f7a8dcbd19edf361d056ee51093b2445de7ca09adac965"}, - {file = "black-24.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:21f9407063ec71c5580b8ad975653c66508d6a9f57bd008bb8691d273705adcd"}, - {file = "black-24.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:652e55bb722ca026299eb74e53880ee2315b181dfdd44dca98e43448620ddec1"}, - {file = "black-24.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7f2966b9b2b3b7104fca9d75b2ee856fe3fdd7ed9e47c753a4bb1a675f2caab8"}, - {file = "black-24.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bb9ca06e556a09f7f7177bc7cb604e5ed2d2df1e9119e4f7d2f1f7071c32e5d"}, - {file = "black-24.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4e71cdebdc8efeb6deaf5f2deb28325f8614d48426bed118ecc2dcaefb9ebf3"}, - {file = "black-24.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6644f97a7ef6f401a150cca551a1ff97e03c25d8519ee0bbc9b0058772882665"}, - {file = "black-24.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:75a2d0b4f5eb81f7eebc31f788f9830a6ce10a68c91fbe0fade34fff7a2836e6"}, - {file = "black-24.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb949f56a63c5e134dfdca12091e98ffb5fd446293ebae123d10fc1abad00b9e"}, - {file = "black-24.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:7852b05d02b5b9a8c893ab95863ef8986e4dda29af80bbbda94d7aee1abf8702"}, - {file = "black-24.4.0-py3-none-any.whl", hash = "sha256:74eb9b5420e26b42c00a3ff470dc0cd144b80a766128b1771d07643165e08d0e"}, - {file = "black-24.4.0.tar.gz", hash = "sha256:f07b69fda20578367eaebbd670ff8fc653ab181e1ff95d84497f9fa20e7d0641"}, + {file = "black-24.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dd1b5a14e417189db4c7b64a6540f31730713d173f0b63e55fabd52d61d8fdce"}, + {file = "black-24.4.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e537d281831ad0e71007dcdcbe50a71470b978c453fa41ce77186bbe0ed6021"}, + {file = "black-24.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eaea3008c281f1038edb473c1aa8ed8143a5535ff18f978a318f10302b254063"}, + {file = "black-24.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:7768a0dbf16a39aa5e9a3ded568bb545c8c2727396d063bbaf847df05b08cd96"}, + {file = "black-24.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:257d724c2c9b1660f353b36c802ccece186a30accc7742c176d29c146df6e474"}, + {file = "black-24.4.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bdde6f877a18f24844e381d45e9947a49e97933573ac9d4345399be37621e26c"}, + {file = "black-24.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e151054aa00bad1f4e1f04919542885f89f5f7d086b8a59e5000e6c616896ffb"}, + {file = "black-24.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:7e122b1c4fb252fd85df3ca93578732b4749d9be076593076ef4d07a0233c3e1"}, + {file = "black-24.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:accf49e151c8ed2c0cdc528691838afd217c50412534e876a19270fea1e28e2d"}, + {file = "black-24.4.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:88c57dc656038f1ab9f92b3eb5335ee9b021412feaa46330d5eba4e51fe49b04"}, + {file = "black-24.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be8bef99eb46d5021bf053114442914baeb3649a89dc5f3a555c88737e5e98fc"}, + {file = "black-24.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:415e686e87dbbe6f4cd5ef0fbf764af7b89f9057b97c908742b6008cc554b9c0"}, + {file = "black-24.4.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bf10f7310db693bb62692609b397e8d67257c55f949abde4c67f9cc574492cc7"}, + {file = "black-24.4.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:98e123f1d5cfd42f886624d84464f7756f60ff6eab89ae845210631714f6db94"}, + {file = "black-24.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48a85f2cb5e6799a9ef05347b476cce6c182d6c71ee36925a6c194d074336ef8"}, + {file = "black-24.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:b1530ae42e9d6d5b670a34db49a94115a64596bc77710b1d05e9801e62ca0a7c"}, + {file = "black-24.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37aae07b029fa0174d39daf02748b379399b909652a806e5708199bd93899da1"}, + {file = "black-24.4.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:da33a1a5e49c4122ccdfd56cd021ff1ebc4a1ec4e2d01594fef9b6f267a9e741"}, + {file = "black-24.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef703f83fc32e131e9bcc0a5094cfe85599e7109f896fe8bc96cc402f3eb4b6e"}, + {file = "black-24.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:b9176b9832e84308818a99a561e90aa479e73c523b3f77afd07913380ae2eab7"}, + {file = "black-24.4.2-py3-none-any.whl", hash = "sha256:d36ed1124bb81b32f8614555b34cc4259c3fbc7eec17870e8ff8ded335b58d8c"}, + {file = "black-24.4.2.tar.gz", hash = "sha256:c872b53057f000085da66a19c55d68f6f8ddcac2642392ad3a355878406fbd4d"}, ] [package.dependencies] @@ -258,13 +259,13 @@ files = [ [[package]] name = "certifi" -version = "2024.2.2" +version = "2024.7.4" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, - {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, + {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"}, + {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"}, ] [[package]] @@ -478,63 +479,63 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "coverage" -version = "7.4.4" +version = "7.5.4" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0be5efd5127542ef31f165de269f77560d6cdef525fffa446de6f7e9186cfb2"}, - {file = "coverage-7.4.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ccd341521be3d1b3daeb41960ae94a5e87abe2f46f17224ba5d6f2b8398016cf"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09fa497a8ab37784fbb20ab699c246053ac294d13fc7eb40ec007a5043ec91f8"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b1a93009cb80730c9bca5d6d4665494b725b6e8e157c1cb7f2db5b4b122ea562"}, - {file = "coverage-7.4.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:690db6517f09336559dc0b5f55342df62370a48f5469fabf502db2c6d1cffcd2"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:09c3255458533cb76ef55da8cc49ffab9e33f083739c8bd4f58e79fecfe288f7"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ce1415194b4a6bd0cdcc3a1dfbf58b63f910dcb7330fe15bdff542c56949f87"}, - {file = "coverage-7.4.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b91cbc4b195444e7e258ba27ac33769c41b94967919f10037e6355e998af255c"}, - {file = "coverage-7.4.4-cp310-cp310-win32.whl", hash = "sha256:598825b51b81c808cb6f078dcb972f96af96b078faa47af7dfcdf282835baa8d"}, - {file = "coverage-7.4.4-cp310-cp310-win_amd64.whl", hash = "sha256:09ef9199ed6653989ebbcaacc9b62b514bb63ea2f90256e71fea3ed74bd8ff6f"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f9f50e7ef2a71e2fae92774c99170eb8304e3fdf9c8c3c7ae9bab3e7229c5cf"}, - {file = "coverage-7.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:623512f8ba53c422fcfb2ce68362c97945095b864cda94a92edbaf5994201083"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0513b9508b93da4e1716744ef6ebc507aff016ba115ffe8ecff744d1322a7b63"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40209e141059b9370a2657c9b15607815359ab3ef9918f0196b6fccce8d3230f"}, - {file = "coverage-7.4.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2b2b78c78293782fd3767d53e6474582f62443d0504b1554370bde86cc8227"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:73bfb9c09951125d06ee473bed216e2c3742f530fc5acc1383883125de76d9cd"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1f384c3cc76aeedce208643697fb3e8437604b512255de6d18dae3f27655a384"}, - {file = "coverage-7.4.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:54eb8d1bf7cacfbf2a3186019bcf01d11c666bd495ed18717162f7eb1e9dd00b"}, - {file = "coverage-7.4.4-cp311-cp311-win32.whl", hash = "sha256:cac99918c7bba15302a2d81f0312c08054a3359eaa1929c7e4b26ebe41e9b286"}, - {file = "coverage-7.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:b14706df8b2de49869ae03a5ccbc211f4041750cd4a66f698df89d44f4bd30ec"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:201bef2eea65e0e9c56343115ba3814e896afe6d36ffd37bab783261db430f76"}, - {file = "coverage-7.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:41c9c5f3de16b903b610d09650e5e27adbfa7f500302718c9ffd1c12cf9d6818"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d898fe162d26929b5960e4e138651f7427048e72c853607f2b200909794ed978"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ea79bb50e805cd6ac058dfa3b5c8f6c040cb87fe83de10845857f5535d1db70"}, - {file = "coverage-7.4.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce4b94265ca988c3f8e479e741693d143026632672e3ff924f25fab50518dd51"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:00838a35b882694afda09f85e469c96367daa3f3f2b097d846a7216993d37f4c"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:fdfafb32984684eb03c2d83e1e51f64f0906b11e64482df3c5db936ce3839d48"}, - {file = "coverage-7.4.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:69eb372f7e2ece89f14751fbcbe470295d73ed41ecd37ca36ed2eb47512a6ab9"}, - {file = "coverage-7.4.4-cp312-cp312-win32.whl", hash = "sha256:137eb07173141545e07403cca94ab625cc1cc6bc4c1e97b6e3846270e7e1fea0"}, - {file = "coverage-7.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d71eec7d83298f1af3326ce0ff1d0ea83c7cb98f72b577097f9083b20bdaf05e"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ae728ff3b5401cc320d792866987e7e7e880e6ebd24433b70a33b643bb0384"}, - {file = "coverage-7.4.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc4f1358cb0c78edef3ed237ef2c86056206bb8d9140e73b6b89fbcfcbdd40e1"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8130a2aa2acb8788e0b56938786c33c7c98562697bf9f4c7d6e8e5e3a0501e4a"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf271892d13e43bc2b51e6908ec9a6a5094a4df1d8af0bfc360088ee6c684409"}, - {file = "coverage-7.4.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a4cdc86d54b5da0df6d3d3a2f0b710949286094c3a6700c21e9015932b81447e"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ae71e7ddb7a413dd60052e90528f2f65270aad4b509563af6d03d53e979feafd"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:38dd60d7bf242c4ed5b38e094baf6401faa114fc09e9e6632374388a404f98e7"}, - {file = "coverage-7.4.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:aa5b1c1bfc28384f1f53b69a023d789f72b2e0ab1b3787aae16992a7ca21056c"}, - {file = "coverage-7.4.4-cp38-cp38-win32.whl", hash = "sha256:dfa8fe35a0bb90382837b238fff375de15f0dcdb9ae68ff85f7a63649c98527e"}, - {file = "coverage-7.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2991665420a803495e0b90a79233c1433d6ed77ef282e8e152a324bbbc5e0c8"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b799445b9f7ee8bf299cfaed6f5b226c0037b74886a4e11515e569b36fe310d"}, - {file = "coverage-7.4.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b4d33f418f46362995f1e9d4f3a35a1b6322cb959c31d88ae56b0298e1c22357"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadacf9a2f407a4688d700e4ebab33a7e2e408f2ca04dbf4aef17585389eff3e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c95949560050d04d46b919301826525597f07b33beba6187d04fa64d47ac82e"}, - {file = "coverage-7.4.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff7687ca3d7028d8a5f0ebae95a6e4827c5616b31a4ee1192bdfde697db110d4"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5fc1de20b2d4a061b3df27ab9b7c7111e9a710f10dc2b84d33a4ab25065994ec"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c74880fc64d4958159fbd537a091d2a585448a8f8508bf248d72112723974cbd"}, - {file = "coverage-7.4.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:742a76a12aa45b44d236815d282b03cfb1de3b4323f3e4ec933acfae08e54ade"}, - {file = "coverage-7.4.4-cp39-cp39-win32.whl", hash = "sha256:d89d7b2974cae412400e88f35d86af72208e1ede1a541954af5d944a8ba46c57"}, - {file = "coverage-7.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:9ca28a302acb19b6af89e90f33ee3e1906961f94b54ea37de6737b7ca9d8827c"}, - {file = "coverage-7.4.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:b2c5edc4ac10a7ef6605a966c58929ec6c1bd0917fb8c15cb3363f65aa40e677"}, - {file = "coverage-7.4.4.tar.gz", hash = "sha256:c901df83d097649e257e803be22592aedfd5182f07b3cc87d640bbb9afd50f49"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"}, + {file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"}, + {file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"}, + {file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"}, + {file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"}, + {file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"}, + {file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"}, + {file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"}, + {file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"}, + {file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"}, + {file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"}, + {file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"}, + {file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"}, + {file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"}, + {file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"}, + {file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"}, + {file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"}, + {file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"}, + {file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"}, + {file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"}, + {file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"}, + {file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"}, + {file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"}, + {file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"}, + {file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"}, + {file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"}, + {file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"}, + {file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"}, ] [package.dependencies] @@ -668,27 +669,32 @@ files = [ [[package]] name = "cutadapt" -version = "4.8" +version = "4.9" description = "Adapter trimming and other preprocessing of high-throughput sequencing reads" optional = false python-versions = ">=3.8" files = [ - {file = "cutadapt-4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:18f7aa6623bab2aba09567e93db0004b73346da34c589178486efe1b9121c47d"}, - {file = "cutadapt-4.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69e803b7e1ab0226246e60298d778a0e54596a5758d6b0a78d11736254215680"}, - {file = "cutadapt-4.8-cp310-cp310-win_amd64.whl", hash = "sha256:ab334b66b88c994cb789f1956d7d454f08d6f9c4924bc0748897ca71d73c7b23"}, - {file = "cutadapt-4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ad7b5fea1fdf1d3bc184f674d18c3cfc2ab9ab370bbecf96b84237747b9930e"}, - {file = "cutadapt-4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7114ea84d8f97257162eff6cda48c13ba748aa822c8d183cd6302b489cb8a2bd"}, - {file = "cutadapt-4.8-cp311-cp311-win_amd64.whl", hash = "sha256:30467bb9bd4d9855ddb31d42bc2732ca2077b88e0f46fd7da272f83750ebd90d"}, - {file = "cutadapt-4.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c25f0f093d491f039260a171ddd04f520a14691882119d244c79ba7c2c0ea7ce"}, - {file = "cutadapt-4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41ccb116aefdc1b9e56a0c11dccee6d37b61fce11d1e9502d2d50089cab23d10"}, - {file = "cutadapt-4.8-cp312-cp312-win_amd64.whl", hash = "sha256:6c750e76bf6cb0c28a5658201a150d4fc142dbf121805e8e9131fcd03f8ffd65"}, - {file = "cutadapt-4.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:143511433bda78275b2e5551b87eeff6ad5db23b9e8e1141da3059ac834bbb97"}, - {file = "cutadapt-4.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5db6878bc8fda9472cf881798173b868bbdbf7b955001ee727eac5eed53742b6"}, - {file = "cutadapt-4.8-cp38-cp38-win_amd64.whl", hash = "sha256:2ea523ec40e2e9f8091d3c0bc1b69c99c073d0dffe6bc843cceee4780414a009"}, - {file = "cutadapt-4.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:396a8193c490f52c58975d421ca4cb705cd862d2f7140003471abad2c0e86e72"}, - {file = "cutadapt-4.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa547e7236c660e5779ddf0abb58840b1dba81012e1ba5f8faf877bcb99f5ecd"}, - {file = "cutadapt-4.8-cp39-cp39-win_amd64.whl", hash = "sha256:e2260226aff84f9bbb9cdf97085dfe61fac466914cdf382354452f0df01004b5"}, - {file = "cutadapt-4.8.tar.gz", hash = "sha256:ac852f6b5f2d1147d0d34bef2eaa5879776f81c69a35dd328a701aae39ec6034"}, + {file = "cutadapt-4.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ee3ac6234ebfbedaa54414bb3741467e0db0f51ae7891b7ca6b66ab393028011"}, + {file = "cutadapt-4.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6b9c3cf9c0985759d064112016747b28cbf77d33296343adc2d21a059101112e"}, + {file = "cutadapt-4.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8da05e545bbe6fb4a579e44439a1414637f1846faa229d46dd5ccde369d7f97"}, + {file = "cutadapt-4.9-cp310-cp310-win_amd64.whl", hash = "sha256:50fecbe8d9e84f36ecd3f9cf0cc2e58c1bc15a086abbf762ee423266deee1fab"}, + {file = "cutadapt-4.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d69f738ab02613502127cdb305be61d953e950f902651c91a7d06960de11f90"}, + {file = "cutadapt-4.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d6eb142607579fdb13e2ff65f1ab557fe0975d7733fff76c66405f42a40faca6"}, + {file = "cutadapt-4.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3be4675caeab7a6d9022dd63b474f53187da5b493dc9871c404744cba7bb7495"}, + {file = "cutadapt-4.9-cp311-cp311-win_amd64.whl", hash = "sha256:1063f9ec00292847d90167d08e9e1d30d4c17751163ea1a43c53a46dd9070b3b"}, + {file = "cutadapt-4.9-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:86673bb25b63dcbb0da7a860f7416f84ea20583207438e805bf780edde0e6bed"}, + {file = "cutadapt-4.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7dad2e5871a3279c80eb2bb0f53d4d53f4600178b758c07b3269f8aabc715d21"}, + {file = "cutadapt-4.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83d1256017ac23fa09dab10e4ef7d7af80a33c143801065d646fe7e6e92b676b"}, + {file = "cutadapt-4.9-cp312-cp312-win_amd64.whl", hash = "sha256:3c51c7acee4432990e80302de2134820133c4114ec01224a24e464c21e003730"}, + {file = "cutadapt-4.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1dc05abe01a79b200f640168cae4c67c6c5bf02bb1ce80c6a9c76fa7648ba378"}, + {file = "cutadapt-4.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:11ec191877f662499ee781353db6992b2fc37c83481a635e68e1a97d57a946a1"}, + {file = "cutadapt-4.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f288cef01b15a2fedac8ed09c48549595f654658f77432d3513155002be480c"}, + {file = "cutadapt-4.9-cp38-cp38-win_amd64.whl", hash = "sha256:e8644d8accf4ecf57c32b6077a49d3abd5f02bbc475e088dde1c2e8b21f444c0"}, + {file = "cutadapt-4.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7fd8b98c89289f82b8982c472bb33aa86169ec4c2a688bdb6433befa408238e"}, + {file = "cutadapt-4.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b7843f93b582aae8ba7b2f10b7da74d097841534a097e19c9d850ddf8cd3a51d"}, + {file = "cutadapt-4.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7423bc96f0fb83d41716380c22d4d134752a8698c3c3b6c007d8757f69497b3e"}, + {file = "cutadapt-4.9-cp39-cp39-win_amd64.whl", hash = "sha256:6a89945acd0e1e192b8b5d01e85dc830f8d6ef20bc2dc599e9958d5046b3b4d7"}, + {file = "cutadapt-4.9.tar.gz", hash = "sha256:da3b45775b07334d2e2580a7b154d19ea7e872f0da813bb1ac2a4da712bfc223"}, ] [package.dependencies] @@ -741,27 +747,32 @@ files = [ [[package]] name = "dnaio" -version = "1.2.0" +version = "1.2.1" description = "Read and write FASTA and FASTQ files efficiently" optional = false python-versions = ">3.7" files = [ - {file = "dnaio-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4d3e44c49822e1d87f6f255042bd16a2006df1b39eac89d0c584937491018cc9"}, - {file = "dnaio-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d514e668ba37f564d0030ce5bbc123b6505eea9d815f0dddf9426a67bde746c"}, - {file = "dnaio-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:11c8d39b4764ba9e843c074a2e5c9f998203551b79c19b0e4087774b9bd8e344"}, - {file = "dnaio-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ee348c44283461130555d16f535a21842988d2c86669b27e2abdd0bd8ffe9cf2"}, - {file = "dnaio-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:016f20455fc1893fbdc06173eafea0fce99f4ea9ae765b09f1301dc6abd10222"}, - {file = "dnaio-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:07f066eda65a160d420afacbe227c1783bfa391b160241ef4171932919ecf7e2"}, - {file = "dnaio-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6de506c0c57b47aa70d3cd733b4ca40edac44bd2b9240c7175e0079624f5b69f"}, - {file = "dnaio-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fec250691f3b0321f2a511e12f4013e710447eb1350864bc9ff0a6fd9e071f6"}, - {file = "dnaio-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a48e159d57d95eb844c0d0fb5ec942c122b664197a234a39f184f1f87ea8735"}, - {file = "dnaio-1.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c8bf41be6bb0f9f46a35a00a33fba02ae851c814d813aa408cb41b04000d1141"}, - {file = "dnaio-1.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2dbf454913b62d1375d263a8274a47d849b6d70c948db923165c4531dede141"}, - {file = "dnaio-1.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:6a02397056bab0b41b5ee0593c79c585f8f55a9beb2abe1eff6928982ae002c2"}, - {file = "dnaio-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df8c1905b142306e7eab55f41980e245eee66fe85572339f4bb7251250f1b615"}, - {file = "dnaio-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63adab6163a856770e9d35c74c026cb6a94d3e2bcc3011396217d274ec6e2979"}, - {file = "dnaio-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:8e103c0dfde13f49cd6214d2e9edf1b2b2ce310a49bafa2035d5d251e8cdec3e"}, - {file = "dnaio-1.2.0.tar.gz", hash = "sha256:d0528c23516fe4e947970bdef33c423f0a30ab3b083bd4f6f049fd66d8cef803"}, + {file = "dnaio-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b07ab43675aef356455032ce4a7410e9ca273bc66fdacb6126c94db47613907a"}, + {file = "dnaio-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4bcdf9727a287c1fb5147453609a99c2ea0be79ec4a813811640debc146b1784"}, + {file = "dnaio-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44db752fe8cf298d22cfd1cc42e083de6a5a279f5dc8337e2bbec802819120e7"}, + {file = "dnaio-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:1a892ea10a821ee9d0d5853d8eb988e676e4564e848700298cc8e221b4246a0a"}, + {file = "dnaio-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e3829966cb0f3a6780f35204c4e5c497150807229091ff0c5ee4795d12c5376"}, + {file = "dnaio-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56485f15f8e30aa7cff8fbd903c647771a7118db4e8f6c50f9fdce9119d9b2a6"}, + {file = "dnaio-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d365f52ccdbcc9f1bf67afe15c21c89977d2e90aee9a1d2982970fec9a39f5"}, + {file = "dnaio-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:9d4baa818b0f62826b89ba30c9db216a08fdee47f49f5b4d508db582b03d9246"}, + {file = "dnaio-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b173a41e3afc35a0ac725ac0102c9a2ae702f447af59378d81a80ca91cc2e2ac"}, + {file = "dnaio-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6588b0f5caa7d645b17794033851d7535f5cdb050a618d46e23b3d72e074656f"}, + {file = "dnaio-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29eefc94691d18899f952fbc68465c5221d0b49355444621cc285b6c95377dd9"}, + {file = "dnaio-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:49256f7d0939d5edb97b29bbfc000303cf5aae098acc141f886a8fac82e30e95"}, + {file = "dnaio-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7aa0c7a87c69e1179f824f5aaec5907685b6ef25392ac16b2a5f91ae54a170cc"}, + {file = "dnaio-1.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1edf5583ee87494305f38a2932750f5b7ce89a29114cfecc3ab1fe007d5610a2"}, + {file = "dnaio-1.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00a3aeae6759e087327019f88fd13c09af4c5bf660754958f423885aaf434e7c"}, + {file = "dnaio-1.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:d17fba7daef3f04e5a75db8a695bdac1aebba136e07ae9dace64678f5a57a61b"}, + {file = "dnaio-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:be1015fb154c884f7facbbfed05221a84007c74d4ef06f100fd32030274ae9d5"}, + {file = "dnaio-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:eed466630deeb74a510b4cad2721b5a174d23508175ec8d06a3565d4330df725"}, + {file = "dnaio-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06732ac2bbeae6f7025d60e617112a46d8cdcf378f766d4a256af416554dd4cb"}, + {file = "dnaio-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:47710cd0ef8dfbf209ad2a78ca66ce508a0c08f97ac7634ef3d4c7289be63acc"}, + {file = "dnaio-1.2.1.tar.gz", hash = "sha256:4786dc63614b9f3011463d9ea9d981723dd38d1091a415a557f71d8c74400f38"}, ] [package.dependencies] @@ -864,69 +875,69 @@ lzo = ["python-lzo"] [[package]] name = "filelock" -version = "3.13.4" +version = "3.15.4" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.4-py3-none-any.whl", hash = "sha256:404e5e9253aa60ad457cae1be07c0f0ca90a63931200a47d9b6a6af84fd7b45f"}, - {file = "filelock-3.13.4.tar.gz", hash = "sha256:d13f466618bfde72bd2c18255e269f72542c6e70e7bac83a0232d6b1cc5c8cf4"}, + {file = "filelock-3.15.4-py3-none-any.whl", hash = "sha256:6ca1fffae96225dab4c6eaf1c4f4f28cd2568d3ec2a44e15a08520504de468e7"}, + {file = "filelock-3.15.4.tar.gz", hash = "sha256:2207938cbc1844345cb01a5a95524dae30f0ce089eba5b00378295a17e3e90cb"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] name = "fonttools" -version = "4.51.0" +version = "4.53.1" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, - {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, - {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, - {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, - {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, - {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, - {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, - {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, - {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, - {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, - {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, - {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, - {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, - {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, - {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, - {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, - {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, - {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, - {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, - {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, - {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, - {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, - {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, - {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, - {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, - {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, - {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, - {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, + {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, + {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, + {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, + {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, + {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, + {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, + {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, + {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, + {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, + {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, + {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, + {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, + {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, + {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, + {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, + {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, + {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, + {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, + {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, + {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, + {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, + {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, + {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, + {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, + {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, + {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, + {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, ] [package.extras] @@ -1214,13 +1225,13 @@ scipy = ">=1.4.0" [[package]] name = "identify" -version = "2.5.36" +version = "2.6.0" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, - {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, + {file = "identify-2.6.0-py2.py3-none-any.whl", hash = "sha256:e79ae4406387a9d300332b5fd366d8994f1525e8414984e1a59e058b2eda2dd0"}, + {file = "identify-2.6.0.tar.gz", hash = "sha256:cb171c685bdc31bcc4c1734698736a7d5b6c8bf2e0c15117f4d469c8640ae5cf"}, ] [package.extras] @@ -1250,22 +1261,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.1.0" +version = "8.0.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, - {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, + {file = "importlib_metadata-8.0.0-py3-none-any.whl", hash = "sha256:15584cf2b1bf449d98ff8a6ff1abef57bf20f3ac6454f431736cd3e660921b2f"}, + {file = "importlib_metadata-8.0.0.tar.gz", hash = "sha256:188bd24e4c346d3f0a933f275c2fec67050326a856b9a359881d7c2a697e8812"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "importlib-resources" @@ -1372,13 +1383,13 @@ colors = ["colorama (>=0.4.6)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1389,13 +1400,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "joblib" -version = "1.4.0" +version = "1.4.2" description = "Lightweight pipelining with Python functions" optional = false python-versions = ">=3.8" files = [ - {file = "joblib-1.4.0-py3-none-any.whl", hash = "sha256:42942470d4062537be4d54c83511186da1fc14ba354961a2114da91efa9a4ed7"}, - {file = "joblib-1.4.0.tar.gz", hash = "sha256:1eb0dc091919cd384490de890cb5dfd538410a6d4b3b54eef09fb8c50b409b1c"}, + {file = "joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6"}, + {file = "joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e"}, ] [[package]] @@ -1527,196 +1538,179 @@ test = ["coverage", "coverage-rich", "pytest", "toml"] [[package]] name = "llvmlite" -version = "0.42.0" +version = "0.43.0" description = "lightweight wrapper around basic LLVM functionality" optional = false python-versions = ">=3.9" files = [ - {file = "llvmlite-0.42.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3366938e1bf63d26c34fbfb4c8e8d2ded57d11e0567d5bb243d89aab1eb56098"}, - {file = "llvmlite-0.42.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c35da49666a21185d21b551fc3caf46a935d54d66969d32d72af109b5e7d2b6f"}, - {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70f44ccc3c6220bd23e0ba698a63ec2a7d3205da0d848804807f37fc243e3f77"}, - {file = "llvmlite-0.42.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:763f8d8717a9073b9e0246998de89929071d15b47f254c10eef2310b9aac033d"}, - {file = "llvmlite-0.42.0-cp310-cp310-win_amd64.whl", hash = "sha256:8d90edf400b4ceb3a0e776b6c6e4656d05c7187c439587e06f86afceb66d2be5"}, - {file = "llvmlite-0.42.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ae511caed28beaf1252dbaf5f40e663f533b79ceb408c874c01754cafabb9cbf"}, - {file = "llvmlite-0.42.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81e674c2fe85576e6c4474e8c7e7aba7901ac0196e864fe7985492b737dbab65"}, - {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb3975787f13eb97629052edb5017f6c170eebc1c14a0433e8089e5db43bcce6"}, - {file = "llvmlite-0.42.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5bece0cdf77f22379f19b1959ccd7aee518afa4afbd3656c6365865f84903f9"}, - {file = "llvmlite-0.42.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e0c4c11c8c2aa9b0701f91b799cb9134a6a6de51444eff5a9087fc7c1384275"}, - {file = "llvmlite-0.42.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:08fa9ab02b0d0179c688a4216b8939138266519aaa0aa94f1195a8542faedb56"}, - {file = "llvmlite-0.42.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b2fce7d355068494d1e42202c7aff25d50c462584233013eb4470c33b995e3ee"}, - {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebe66a86dc44634b59a3bc860c7b20d26d9aaffcd30364ebe8ba79161a9121f4"}, - {file = "llvmlite-0.42.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d47494552559e00d81bfb836cf1c4d5a5062e54102cc5767d5aa1e77ccd2505c"}, - {file = "llvmlite-0.42.0-cp312-cp312-win_amd64.whl", hash = "sha256:05cb7e9b6ce69165ce4d1b994fbdedca0c62492e537b0cc86141b6e2c78d5888"}, - {file = "llvmlite-0.42.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bdd3888544538a94d7ec99e7c62a0cdd8833609c85f0c23fcb6c5c591aec60ad"}, - {file = "llvmlite-0.42.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d0936c2067a67fb8816c908d5457d63eba3e2b17e515c5fe00e5ee2bace06040"}, - {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a78ab89f1924fc11482209f6799a7a3fc74ddc80425a7a3e0e8174af0e9e2301"}, - {file = "llvmlite-0.42.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7599b65c7af7abbc978dbf345712c60fd596aa5670496561cc10e8a71cebfb2"}, - {file = "llvmlite-0.42.0-cp39-cp39-win_amd64.whl", hash = "sha256:43d65cc4e206c2e902c1004dd5418417c4efa6c1d04df05c6c5675a27e8ca90e"}, - {file = "llvmlite-0.42.0.tar.gz", hash = "sha256:f92b09243c0cc3f457da8b983f67bd8e1295d0f5b3746c7a1861d7a99403854a"}, + {file = "llvmlite-0.43.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a289af9a1687c6cf463478f0fa8e8aa3b6fb813317b0d70bf1ed0759eab6f761"}, + {file = "llvmlite-0.43.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d4fd101f571a31acb1559ae1af30f30b1dc4b3186669f92ad780e17c81e91bc"}, + {file = "llvmlite-0.43.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d434ec7e2ce3cc8f452d1cd9a28591745de022f931d67be688a737320dfcead"}, + {file = "llvmlite-0.43.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6912a87782acdff6eb8bf01675ed01d60ca1f2551f8176a300a886f09e836a6a"}, + {file = "llvmlite-0.43.0-cp310-cp310-win_amd64.whl", hash = "sha256:14f0e4bf2fd2d9a75a3534111e8ebeb08eda2f33e9bdd6dfa13282afacdde0ed"}, + {file = "llvmlite-0.43.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8d0618cb9bfe40ac38a9633f2493d4d4e9fcc2f438d39a4e854f39cc0f5f98"}, + {file = "llvmlite-0.43.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0a9a1a39d4bf3517f2af9d23d479b4175ead205c592ceeb8b89af48a327ea57"}, + {file = "llvmlite-0.43.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1da416ab53e4f7f3bc8d4eeba36d801cc1894b9fbfbf2022b29b6bad34a7df2"}, + {file = "llvmlite-0.43.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:977525a1e5f4059316b183fb4fd34fa858c9eade31f165427a3977c95e3ee749"}, + {file = "llvmlite-0.43.0-cp311-cp311-win_amd64.whl", hash = "sha256:d5bd550001d26450bd90777736c69d68c487d17bf371438f975229b2b8241a91"}, + {file = "llvmlite-0.43.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f99b600aa7f65235a5a05d0b9a9f31150c390f31261f2a0ba678e26823ec38f7"}, + {file = "llvmlite-0.43.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:35d80d61d0cda2d767f72de99450766250560399edc309da16937b93d3b676e7"}, + {file = "llvmlite-0.43.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eccce86bba940bae0d8d48ed925f21dbb813519169246e2ab292b5092aba121f"}, + {file = "llvmlite-0.43.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:df6509e1507ca0760787a199d19439cc887bfd82226f5af746d6977bd9f66844"}, + {file = "llvmlite-0.43.0-cp312-cp312-win_amd64.whl", hash = "sha256:7a2872ee80dcf6b5dbdc838763d26554c2a18aa833d31a2635bff16aafefb9c9"}, + {file = "llvmlite-0.43.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9cd2a7376f7b3367019b664c21f0c61766219faa3b03731113ead75107f3b66c"}, + {file = "llvmlite-0.43.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18e9953c748b105668487b7c81a3e97b046d8abf95c4ddc0cd3c94f4e4651ae8"}, + {file = "llvmlite-0.43.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74937acd22dc11b33946b67dca7680e6d103d6e90eeaaaf932603bec6fe7b03a"}, + {file = "llvmlite-0.43.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc9efc739cc6ed760f795806f67889923f7274276f0eb45092a1473e40d9b867"}, + {file = "llvmlite-0.43.0-cp39-cp39-win_amd64.whl", hash = "sha256:47e147cdda9037f94b399bf03bfd8a6b6b1f2f90be94a454e3386f006455a9b4"}, + {file = "llvmlite-0.43.0.tar.gz", hash = "sha256:ae2b5b5c3ef67354824fb75517c8db5fbe93bc02cd9671f3c62271626bc041d5"}, ] [[package]] name = "lxml" -version = "5.2.1" +version = "5.2.2" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=3.6" files = [ - {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1"}, - {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a"}, - {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01"}, - {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1"}, - {file = "lxml-5.2.1-cp310-cp310-win32.whl", hash = "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5"}, - {file = "lxml-5.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f"}, - {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867"}, - {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a"}, - {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f"}, - {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534"}, - {file = "lxml-5.2.1-cp311-cp311-win32.whl", hash = "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be"}, - {file = "lxml-5.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102"}, - {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851"}, - {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0"}, - {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169"}, - {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4"}, - {file = "lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134"}, - {file = "lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a"}, - {file = "lxml-5.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c"}, - {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0"}, - {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1"}, - {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863"}, - {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_s390x.whl", hash = "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62"}, - {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461"}, - {file = "lxml-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0"}, - {file = "lxml-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289"}, - {file = "lxml-5.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029"}, - {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af"}, - {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0"}, - {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75"}, - {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, - {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, - {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3e183c6e3298a2ed5af9d7a356ea823bccaab4ec2349dc9ed83999fd289d14d5"}, - {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, - {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, - {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, - {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86"}, - {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533"}, - {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c"}, - {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637"}, - {file = "lxml-5.2.1-cp38-cp38-win32.whl", hash = "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da"}, - {file = "lxml-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806"}, - {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd"}, - {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b"}, - {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c"}, - {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188"}, - {file = "lxml-5.2.1-cp39-cp39-win32.whl", hash = "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708"}, - {file = "lxml-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e"}, - {file = "lxml-5.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96"}, - {file = "lxml-5.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85"}, - {file = "lxml-5.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246"}, - {file = "lxml-5.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704"}, - {file = "lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"}, + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:364d03207f3e603922d0d3932ef363d55bbf48e3647395765f9bfcbdf6d23632"}, + {file = "lxml-5.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:50127c186f191b8917ea2fb8b206fbebe87fd414a6084d15568c27d0a21d60db"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74e4f025ef3db1c6da4460dd27c118d8cd136d0391da4e387a15e48e5c975147"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981a06a3076997adf7c743dcd0d7a0415582661e2517c7d961493572e909aa1d"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aef5474d913d3b05e613906ba4090433c515e13ea49c837aca18bde190853dff"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e275ea572389e41e8b039ac076a46cb87ee6b8542df3fff26f5baab43713bca"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5b65529bb2f21ac7861a0e94fdbf5dc0daab41497d18223b46ee8515e5ad297"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:bcc98f911f10278d1daf14b87d65325851a1d29153caaf146877ec37031d5f36"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:b47633251727c8fe279f34025844b3b3a3e40cd1b198356d003aa146258d13a2"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:fbc9d316552f9ef7bba39f4edfad4a734d3d6f93341232a9dddadec4f15d425f"}, + {file = "lxml-5.2.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:13e69be35391ce72712184f69000cda04fc89689429179bc4c0ae5f0b7a8c21b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3b6a30a9ab040b3f545b697cb3adbf3696c05a3a68aad172e3fd7ca73ab3c835"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a233bb68625a85126ac9f1fc66d24337d6e8a0f9207b688eec2e7c880f012ec0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:dfa7c241073d8f2b8e8dbc7803c434f57dbb83ae2a3d7892dd068d99e96efe2c"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1a7aca7964ac4bb07680d5c9d63b9d7028cace3e2d43175cb50bba8c5ad33316"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ae4073a60ab98529ab8a72ebf429f2a8cc612619a8c04e08bed27450d52103c0"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ffb2be176fed4457e445fe540617f0252a72a8bc56208fd65a690fdb1f57660b"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:e290d79a4107d7d794634ce3e985b9ae4f920380a813717adf61804904dc4393"}, + {file = "lxml-5.2.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:96e85aa09274955bb6bd483eaf5b12abadade01010478154b0ec70284c1b1526"}, + {file = "lxml-5.2.2-cp310-cp310-win32.whl", hash = "sha256:f956196ef61369f1685d14dad80611488d8dc1ef00be57c0c5a03064005b0f30"}, + {file = "lxml-5.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:875a3f90d7eb5c5d77e529080d95140eacb3c6d13ad5b616ee8095447b1d22e7"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:45f9494613160d0405682f9eee781c7e6d1bf45f819654eb249f8f46a2c22545"}, + {file = "lxml-5.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b0b3f2df149efb242cee2ffdeb6674b7f30d23c9a7af26595099afaf46ef4e88"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d28cb356f119a437cc58a13f8135ab8a4c8ece18159eb9194b0d269ec4e28083"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:657a972f46bbefdbba2d4f14413c0d079f9ae243bd68193cb5061b9732fa54c1"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b74b9ea10063efb77a965a8d5f4182806fbf59ed068b3c3fd6f30d2ac7bee734"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:07542787f86112d46d07d4f3c4e7c760282011b354d012dc4141cc12a68cef5f"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:303f540ad2dddd35b92415b74b900c749ec2010e703ab3bfd6660979d01fd4ed"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2eb2227ce1ff998faf0cd7fe85bbf086aa41dfc5af3b1d80867ecfe75fb68df3"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:1d8a701774dfc42a2f0b8ccdfe7dbc140500d1049e0632a611985d943fcf12df"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:56793b7a1a091a7c286b5f4aa1fe4ae5d1446fe742d00cdf2ffb1077865db10d"}, + {file = "lxml-5.2.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:eb00b549b13bd6d884c863554566095bf6fa9c3cecb2e7b399c4bc7904cb33b5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a2569a1f15ae6c8c64108a2cd2b4a858fc1e13d25846be0666fc144715e32ab"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:8cf85a6e40ff1f37fe0f25719aadf443686b1ac7652593dc53c7ef9b8492b115"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:d237ba6664b8e60fd90b8549a149a74fcc675272e0e95539a00522e4ca688b04"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0b3f5016e00ae7630a4b83d0868fca1e3d494c78a75b1c7252606a3a1c5fc2ad"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23441e2b5339bc54dc949e9e675fa35efe858108404ef9aa92f0456929ef6fe8"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:2fb0ba3e8566548d6c8e7dd82a8229ff47bd8fb8c2da237607ac8e5a1b8312e5"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:79d1fb9252e7e2cfe4de6e9a6610c7cbb99b9708e2c3e29057f487de5a9eaefa"}, + {file = "lxml-5.2.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6dcc3d17eac1df7859ae01202e9bb11ffa8c98949dcbeb1069c8b9a75917e01b"}, + {file = "lxml-5.2.2-cp311-cp311-win32.whl", hash = "sha256:4c30a2f83677876465f44c018830f608fa3c6a8a466eb223535035fbc16f3438"}, + {file = "lxml-5.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:49095a38eb333aaf44c06052fd2ec3b8f23e19747ca7ec6f6c954ffea6dbf7be"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7429e7faa1a60cad26ae4227f4dd0459efde239e494c7312624ce228e04f6391"}, + {file = "lxml-5.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:50ccb5d355961c0f12f6cf24b7187dbabd5433f29e15147a67995474f27d1776"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc911208b18842a3a57266d8e51fc3cfaccee90a5351b92079beed912a7914c2"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33ce9e786753743159799fdf8e92a5da351158c4bfb6f2db0bf31e7892a1feb5"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec87c44f619380878bd49ca109669c9f221d9ae6883a5bcb3616785fa8f94c97"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08ea0f606808354eb8f2dfaac095963cb25d9d28e27edcc375d7b30ab01abbf6"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75a9632f1d4f698b2e6e2e1ada40e71f369b15d69baddb8968dcc8e683839b18"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74da9f97daec6928567b48c90ea2c82a106b2d500f397eeb8941e47d30b1ca85"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:0969e92af09c5687d769731e3f39ed62427cc72176cebb54b7a9d52cc4fa3b73"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:9164361769b6ca7769079f4d426a41df6164879f7f3568be9086e15baca61466"}, + {file = "lxml-5.2.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d26a618ae1766279f2660aca0081b2220aca6bd1aa06b2cf73f07383faf48927"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab67ed772c584b7ef2379797bf14b82df9aa5f7438c5b9a09624dd834c1c1aaf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:3d1e35572a56941b32c239774d7e9ad724074d37f90c7a7d499ab98761bd80cf"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:8268cbcd48c5375f46e000adb1390572c98879eb4f77910c6053d25cc3ac2c67"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e282aedd63c639c07c3857097fc0e236f984ceb4089a8b284da1c526491e3f3d"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfdc2bfe69e9adf0df4915949c22a25b39d175d599bf98e7ddf620a13678585"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4aefd911793b5d2d7a921233a54c90329bf3d4a6817dc465f12ffdfe4fc7b8fe"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:8b8df03a9e995b6211dafa63b32f9d405881518ff1ddd775db4e7b98fb545e1c"}, + {file = "lxml-5.2.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f11ae142f3a322d44513de1018b50f474f8f736bc3cd91d969f464b5bfef8836"}, + {file = "lxml-5.2.2-cp312-cp312-win32.whl", hash = "sha256:16a8326e51fcdffc886294c1e70b11ddccec836516a343f9ed0f82aac043c24a"}, + {file = "lxml-5.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:bbc4b80af581e18568ff07f6395c02114d05f4865c2812a1f02f2eaecf0bfd48"}, + {file = "lxml-5.2.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e3d9d13603410b72787579769469af730c38f2f25505573a5888a94b62b920f8"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38b67afb0a06b8575948641c1d6d68e41b83a3abeae2ca9eed2ac59892b36706"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c689d0d5381f56de7bd6966a4541bff6e08bf8d3871bbd89a0c6ab18aa699573"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:cf2a978c795b54c539f47964ec05e35c05bd045db5ca1e8366988c7f2fe6b3ce"}, + {file = "lxml-5.2.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:739e36ef7412b2bd940f75b278749106e6d025e40027c0b94a17ef7968d55d56"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d8bbcd21769594dbba9c37d3c819e2d5847656ca99c747ddb31ac1701d0c0ed9"}, + {file = "lxml-5.2.2-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:2304d3c93f2258ccf2cf7a6ba8c761d76ef84948d87bf9664e14d203da2cd264"}, + {file = "lxml-5.2.2-cp36-cp36m-win32.whl", hash = "sha256:02437fb7308386867c8b7b0e5bc4cd4b04548b1c5d089ffb8e7b31009b961dc3"}, + {file = "lxml-5.2.2-cp36-cp36m-win_amd64.whl", hash = "sha256:edcfa83e03370032a489430215c1e7783128808fd3e2e0a3225deee278585196"}, + {file = "lxml-5.2.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:28bf95177400066596cdbcfc933312493799382879da504633d16cf60bba735b"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a745cc98d504d5bd2c19b10c79c61c7c3df9222629f1b6210c0368177589fb8"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b336b0416828022bfd5a2e3083e7f5ba54b96242159f83c7e3eebaec752f1716"}, + {file = "lxml-5.2.2-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:4bc6cb140a7a0ad1f7bc37e018d0ed690b7b6520ade518285dc3171f7a117905"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:57f0a0bbc9868e10ebe874e9f129d2917750adf008fe7b9c1598c0fbbfdde6a6"}, + {file = "lxml-5.2.2-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:60499fe961b21264e17a471ec296dcbf4365fbea611bf9e303ab69db7159ce61"}, + {file = "lxml-5.2.2-cp37-cp37m-win32.whl", hash = "sha256:d9b342c76003c6b9336a80efcc766748a333573abf9350f4094ee46b006ec18f"}, + {file = "lxml-5.2.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b16db2770517b8799c79aa80f4053cd6f8b716f21f8aca962725a9565ce3ee40"}, + {file = "lxml-5.2.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7ed07b3062b055d7a7f9d6557a251cc655eed0b3152b76de619516621c56f5d3"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f60fdd125d85bf9c279ffb8e94c78c51b3b6a37711464e1f5f31078b45002421"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a7e24cb69ee5f32e003f50e016d5fde438010c1022c96738b04fc2423e61706"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23cfafd56887eaed93d07bc4547abd5e09d837a002b791e9767765492a75883f"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:19b4e485cd07b7d83e3fe3b72132e7df70bfac22b14fe4bf7a23822c3a35bff5"}, + {file = "lxml-5.2.2-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:7ce7ad8abebe737ad6143d9d3bf94b88b93365ea30a5b81f6877ec9c0dee0a48"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e49b052b768bb74f58c7dda4e0bdf7b79d43a9204ca584ffe1fb48a6f3c84c66"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d14a0d029a4e176795cef99c056d58067c06195e0c7e2dbb293bf95c08f772a3"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:be49ad33819d7dcc28a309b86d4ed98e1a65f3075c6acd3cd4fe32103235222b"}, + {file = "lxml-5.2.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a6d17e0370d2516d5bb9062c7b4cb731cff921fc875644c3d751ad857ba9c5b1"}, + {file = "lxml-5.2.2-cp38-cp38-win32.whl", hash = "sha256:5b8c041b6265e08eac8a724b74b655404070b636a8dd6d7a13c3adc07882ef30"}, + {file = "lxml-5.2.2-cp38-cp38-win_amd64.whl", hash = "sha256:f61efaf4bed1cc0860e567d2ecb2363974d414f7f1f124b1df368bbf183453a6"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fb91819461b1b56d06fa4bcf86617fac795f6a99d12239fb0c68dbeba41a0a30"}, + {file = "lxml-5.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d4ed0c7cbecde7194cd3228c044e86bf73e30a23505af852857c09c24e77ec5d"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54401c77a63cc7d6dc4b4e173bb484f28a5607f3df71484709fe037c92d4f0ed"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:625e3ef310e7fa3a761d48ca7ea1f9d8718a32b1542e727d584d82f4453d5eeb"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:519895c99c815a1a24a926d5b60627ce5ea48e9f639a5cd328bda0515ea0f10c"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7079d5eb1c1315a858bbf180000757db8ad904a89476653232db835c3114001"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:343ab62e9ca78094f2306aefed67dcfad61c4683f87eee48ff2fd74902447726"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:cd9e78285da6c9ba2d5c769628f43ef66d96ac3085e59b10ad4f3707980710d3"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:546cf886f6242dff9ec206331209db9c8e1643ae642dea5fdbecae2453cb50fd"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:02f6a8eb6512fdc2fd4ca10a49c341c4e109aa6e9448cc4859af5b949622715a"}, + {file = "lxml-5.2.2-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:339ee4a4704bc724757cd5dd9dc8cf4d00980f5d3e6e06d5847c1b594ace68ab"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0a028b61a2e357ace98b1615fc03f76eb517cc028993964fe08ad514b1e8892d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f90e552ecbad426eab352e7b2933091f2be77115bb16f09f78404861c8322981"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d83e2d94b69bf31ead2fa45f0acdef0757fa0458a129734f59f67f3d2eb7ef32"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a02d3c48f9bb1e10c7788d92c0c7db6f2002d024ab6e74d6f45ae33e3d0288a3"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6d68ce8e7b2075390e8ac1e1d3a99e8b6372c694bbe612632606d1d546794207"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:453d037e09a5176d92ec0fd282e934ed26d806331a8b70ab431a81e2fbabf56d"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:3b019d4ee84b683342af793b56bb35034bd749e4cbdd3d33f7d1107790f8c472"}, + {file = "lxml-5.2.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:cb3942960f0beb9f46e2a71a3aca220d1ca32feb5a398656be934320804c0df9"}, + {file = "lxml-5.2.2-cp39-cp39-win32.whl", hash = "sha256:ac6540c9fff6e3813d29d0403ee7a81897f1d8ecc09a8ff84d2eea70ede1cdbf"}, + {file = "lxml-5.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:610b5c77428a50269f38a534057444c249976433f40f53e3b47e68349cca1425"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b537bd04d7ccd7c6350cdaaaad911f6312cbd61e6e6045542f781c7f8b2e99d2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4820c02195d6dfb7b8508ff276752f6b2ff8b64ae5d13ebe02e7667e035000b9"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a09f6184f17a80897172863a655467da2b11151ec98ba8d7af89f17bf63dae"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:76acba4c66c47d27c8365e7c10b3d8016a7da83d3191d053a58382311a8bf4e1"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b128092c927eaf485928cec0c28f6b8bead277e28acf56800e972aa2c2abd7a2"}, + {file = "lxml-5.2.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ae791f6bd43305aade8c0e22f816b34f3b72b6c820477aab4d18473a37e8090b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a2f6a1bc2460e643785a2cde17293bd7a8f990884b822f7bca47bee0a82fc66b"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e8d351ff44c1638cb6e980623d517abd9f580d2e53bfcd18d8941c052a5a009"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bec4bd9133420c5c52d562469c754f27c5c9e36ee06abc169612c959bd7dbb07"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:55ce6b6d803890bd3cc89975fca9de1dff39729b43b73cb15ddd933b8bc20484"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:8ab6a358d1286498d80fe67bd3d69fcbc7d1359b45b41e74c4a26964ca99c3f8"}, + {file = "lxml-5.2.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:06668e39e1f3c065349c51ac27ae430719d7806c026fec462e5693b08b95696b"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9cd5323344d8ebb9fb5e96da5de5ad4ebab993bbf51674259dbe9d7a18049525"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89feb82ca055af0fe797a2323ec9043b26bc371365847dbe83c7fd2e2f181c34"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e481bba1e11ba585fb06db666bfc23dbe181dbafc7b25776156120bf12e0d5a6"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:9d6c6ea6a11ca0ff9cd0390b885984ed31157c168565702959c25e2191674a14"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3d98de734abee23e61f6b8c2e08a88453ada7d6486dc7cdc82922a03968928db"}, + {file = "lxml-5.2.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:69ab77a1373f1e7563e0fb5a29a8440367dec051da6c7405333699d07444f511"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:34e17913c431f5ae01d8658dbf792fdc457073dcdfbb31dc0cc6ab256e664a8d"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f8757b03208c3f50097761be2dea0aba02e94f0dc7023ed73a7bb14ff11eb0"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a520b4f9974b0a0a6ed73c2154de57cdfd0c8800f4f15ab2b73238ffed0b36e"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5e097646944b66207023bc3c634827de858aebc226d5d4d6d16f0b77566ea182"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b5e4ef22ff25bfd4ede5f8fb30f7b24446345f3e79d9b7455aef2836437bc38a"}, + {file = "lxml-5.2.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ff69a9a0b4b17d78170c73abe2ab12084bdf1691550c5629ad1fe7849433f324"}, + {file = "lxml-5.2.2.tar.gz", hash = "sha256:bb2dc4898180bea79863d5487e5f9c7c34297414bad54bcd0f0852aee9cfdb87"}, ] [package.extras] @@ -1821,39 +1815,40 @@ files = [ [[package]] name = "matplotlib" -version = "3.8.4" +version = "3.9.1" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014"}, - {file = "matplotlib-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106"}, - {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10"}, - {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0"}, - {file = "matplotlib-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef"}, - {file = "matplotlib-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338"}, - {file = "matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661"}, - {file = "matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c"}, - {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa"}, - {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71"}, - {file = "matplotlib-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b"}, - {file = "matplotlib-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae"}, - {file = "matplotlib-3.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616"}, - {file = "matplotlib-3.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732"}, - {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb"}, - {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30"}, - {file = "matplotlib-3.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25"}, - {file = "matplotlib-3.8.4-cp312-cp312-win_amd64.whl", hash = "sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a"}, - {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"}, - {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"}, - {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"}, - {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"}, - {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"}, - {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"}, - {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"}, + {file = "matplotlib-3.9.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7ccd6270066feb9a9d8e0705aa027f1ff39f354c72a87efe8fa07632f30fc6bb"}, + {file = "matplotlib-3.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:591d3a88903a30a6d23b040c1e44d1afdd0d778758d07110eb7596f811f31842"}, + {file = "matplotlib-3.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd2a59ff4b83d33bca3b5ec58203cc65985367812cb8c257f3e101632be86d92"}, + {file = "matplotlib-3.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fc001516ffcf1a221beb51198b194d9230199d6842c540108e4ce109ac05cc0"}, + {file = "matplotlib-3.9.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:83c6a792f1465d174c86d06f3ae85a8fe36e6f5964633ae8106312ec0921fdf5"}, + {file = "matplotlib-3.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:421851f4f57350bcf0811edd754a708d2275533e84f52f6760b740766c6747a7"}, + {file = "matplotlib-3.9.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b3fce58971b465e01b5c538f9d44915640c20ec5ff31346e963c9e1cd66fa812"}, + {file = "matplotlib-3.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a973c53ad0668c53e0ed76b27d2eeeae8799836fd0d0caaa4ecc66bf4e6676c0"}, + {file = "matplotlib-3.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82cd5acf8f3ef43f7532c2f230249720f5dc5dd40ecafaf1c60ac8200d46d7eb"}, + {file = "matplotlib-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab38a4f3772523179b2f772103d8030215b318fef6360cb40558f585bf3d017f"}, + {file = "matplotlib-3.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2315837485ca6188a4b632c5199900e28d33b481eb083663f6a44cfc8987ded3"}, + {file = "matplotlib-3.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:a0c977c5c382f6696caf0bd277ef4f936da7e2aa202ff66cad5f0ac1428ee15b"}, + {file = "matplotlib-3.9.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:565d572efea2b94f264dd86ef27919515aa6d629252a169b42ce5f570db7f37b"}, + {file = "matplotlib-3.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d397fd8ccc64af2ec0af1f0efc3bacd745ebfb9d507f3f552e8adb689ed730a"}, + {file = "matplotlib-3.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26040c8f5121cd1ad712abffcd4b5222a8aec3a0fe40bc8542c94331deb8780d"}, + {file = "matplotlib-3.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d12cb1837cffaac087ad6b44399d5e22b78c729de3cdae4629e252067b705e2b"}, + {file = "matplotlib-3.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0e835c6988edc3d2d08794f73c323cc62483e13df0194719ecb0723b564e0b5c"}, + {file = "matplotlib-3.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:44a21d922f78ce40435cb35b43dd7d573cf2a30138d5c4b709d19f00e3907fd7"}, + {file = "matplotlib-3.9.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:0c584210c755ae921283d21d01f03a49ef46d1afa184134dd0f95b0202ee6f03"}, + {file = "matplotlib-3.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:11fed08f34fa682c2b792942f8902e7aefeed400da71f9e5816bea40a7ce28fe"}, + {file = "matplotlib-3.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0000354e32efcfd86bda75729716b92f5c2edd5b947200be9881f0a671565c33"}, + {file = "matplotlib-3.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4db17fea0ae3aceb8e9ac69c7e3051bae0b3d083bfec932240f9bf5d0197a049"}, + {file = "matplotlib-3.9.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:208cbce658b72bf6a8e675058fbbf59f67814057ae78165d8a2f87c45b48d0ff"}, + {file = "matplotlib-3.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:dc23f48ab630474264276be156d0d7710ac6c5a09648ccdf49fef9200d8cbe80"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:3fda72d4d472e2ccd1be0e9ccb6bf0d2eaf635e7f8f51d737ed7e465ac020cb3"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:84b3ba8429935a444f1fdc80ed930babbe06725bcf09fbeb5c8757a2cd74af04"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b918770bf3e07845408716e5bbda17eadfc3fcbd9307dc67f37d6cf834bb3d98"}, + {file = "matplotlib-3.9.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f1f2e5d29e9435c97ad4c36fb6668e89aee13d48c75893e25cef064675038ac9"}, + {file = "matplotlib-3.9.1.tar.gz", hash = "sha256:de06b19b8db95dd33d0dc17c926c7c9ebed9f572074b6fac4f65068a6814d010"}, ] [package.dependencies] @@ -1861,12 +1856,15 @@ contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.3.1" -numpy = ">=1.21" +numpy = ">=1.23" packaging = ">=20.0" pillow = ">=8" pyparsing = ">=2.3.1" python-dateutil = ">=2.7" +[package.extras] +dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] + [[package]] name = "mccabe" version = "0.7.0" @@ -1880,13 +1878,13 @@ files = [ [[package]] name = "mdit-py-plugins" -version = "0.4.0" +version = "0.4.1" description = "Collection of plugins for markdown-it-py" optional = false python-versions = ">=3.8" files = [ - {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, - {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, + {file = "mdit_py_plugins-0.4.1-py3-none-any.whl", hash = "sha256:1020dfe4e6bfc2c79fb49ae4e3f5b297f5ccd20f010187acc52af2921e27dc6a"}, + {file = "mdit_py_plugins-0.4.1.tar.gz", hash = "sha256:834b8ac23d1cd60cec703646ffd22ae97b7955a6d596eb1d304be1e251ae499c"}, ] [package.dependencies] @@ -1910,38 +1908,38 @@ files = [ [[package]] name = "mypy" -version = "1.9.0" +version = "1.10.1" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f8a67616990062232ee4c3952f41c779afac41405806042a8126fe96e098419f"}, - {file = "mypy-1.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d357423fa57a489e8c47b7c85dfb96698caba13d66e086b412298a1a0ea3b0ed"}, - {file = "mypy-1.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49c87c15aed320de9b438ae7b00c1ac91cd393c1b854c2ce538e2a72d55df150"}, - {file = "mypy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:48533cdd345c3c2e5ef48ba3b0d3880b257b423e7995dada04248725c6f77374"}, - {file = "mypy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:4d3dbd346cfec7cb98e6cbb6e0f3c23618af826316188d587d1c1bc34f0ede03"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:653265f9a2784db65bfca694d1edd23093ce49740b2244cde583aeb134c008f3"}, - {file = "mypy-1.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3a3c007ff3ee90f69cf0a15cbcdf0995749569b86b6d2f327af01fd1b8aee9dc"}, - {file = "mypy-1.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2418488264eb41f69cc64a69a745fad4a8f86649af4b1041a4c64ee61fc61129"}, - {file = "mypy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:68edad3dc7d70f2f17ae4c6c1b9471a56138ca22722487eebacfd1eb5321d612"}, - {file = "mypy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:85ca5fcc24f0b4aeedc1d02f93707bccc04733f21d41c88334c5482219b1ccb3"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aceb1db093b04db5cd390821464504111b8ec3e351eb85afd1433490163d60cd"}, - {file = "mypy-1.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0235391f1c6f6ce487b23b9dbd1327b4ec33bb93934aa986efe8a9563d9349e6"}, - {file = "mypy-1.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4d5ddc13421ba3e2e082a6c2d74c2ddb3979c39b582dacd53dd5d9431237185"}, - {file = "mypy-1.9.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:190da1ee69b427d7efa8aa0d5e5ccd67a4fb04038c380237a0d96829cb157913"}, - {file = "mypy-1.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:fe28657de3bfec596bbeef01cb219833ad9d38dd5393fc649f4b366840baefe6"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e54396d70be04b34f31d2edf3362c1edd023246c82f1730bbf8768c28db5361b"}, - {file = "mypy-1.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5e6061f44f2313b94f920e91b204ec600982961e07a17e0f6cd83371cb23f5c2"}, - {file = "mypy-1.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:81a10926e5473c5fc3da8abb04119a1f5811a236dc3a38d92015cb1e6ba4cb9e"}, - {file = "mypy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b685154e22e4e9199fc95f298661deea28aaede5ae16ccc8cbb1045e716b3e04"}, - {file = "mypy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:5d741d3fc7c4da608764073089e5f58ef6352bedc223ff58f2f038c2c4698a89"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:587ce887f75dd9700252a3abbc9c97bbe165a4a630597845c61279cf32dfbf02"}, - {file = "mypy-1.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f88566144752999351725ac623471661c9d1cd8caa0134ff98cceeea181789f4"}, - {file = "mypy-1.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61758fabd58ce4b0720ae1e2fea5cfd4431591d6d590b197775329264f86311d"}, - {file = "mypy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e49499be624dead83927e70c756970a0bc8240e9f769389cdf5714b0784ca6bf"}, - {file = "mypy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:571741dc4194b4f82d344b15e8837e8c5fcc462d66d076748142327626a1b6e9"}, - {file = "mypy-1.9.0-py3-none-any.whl", hash = "sha256:a260627a570559181a9ea5de61ac6297aa5af202f06fd7ab093ce74e7181e43e"}, - {file = "mypy-1.9.0.tar.gz", hash = "sha256:3cc5da0127e6a478cddd906068496a97a7618a21ce9b54bde5bf7e539c7af974"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"}, + {file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"}, + {file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"}, + {file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"}, + {file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"}, + {file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"}, + {file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"}, + {file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"}, + {file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"}, + {file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"}, + {file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"}, + {file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"}, + {file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"}, + {file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"}, + {file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"}, + {file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"}, + {file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"}, + {file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"}, + {file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"}, + {file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"}, + {file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"}, + {file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"}, + {file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"}, ] [package.dependencies] @@ -2027,51 +2025,48 @@ test = ["pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "nodeenv" -version = "1.8.0" +version = "1.9.1" description = "Node.js virtual environment builder" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, - {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, + {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, + {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "numba" -version = "0.59.1" +version = "0.60.0" description = "compiling Python code using LLVM" optional = false python-versions = ">=3.9" files = [ - {file = "numba-0.59.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97385a7f12212c4f4bc28f648720a92514bee79d7063e40ef66c2d30600fd18e"}, - {file = "numba-0.59.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b77aecf52040de2a1eb1d7e314497b9e56fba17466c80b457b971a25bb1576d"}, - {file = "numba-0.59.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3476a4f641bfd58f35ead42f4dcaf5f132569c4647c6f1360ccf18ee4cda3990"}, - {file = "numba-0.59.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:525ef3f820931bdae95ee5379c670d5c97289c6520726bc6937a4a7d4230ba24"}, - {file = "numba-0.59.1-cp310-cp310-win_amd64.whl", hash = "sha256:990e395e44d192a12105eca3083b61307db7da10e093972ca285c85bef0963d6"}, - {file = "numba-0.59.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43727e7ad20b3ec23ee4fc642f5b61845c71f75dd2825b3c234390c6d8d64051"}, - {file = "numba-0.59.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:411df625372c77959570050e861981e9d196cc1da9aa62c3d6a836b5cc338966"}, - {file = "numba-0.59.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2801003caa263d1e8497fb84829a7ecfb61738a95f62bc05693fcf1733e978e4"}, - {file = "numba-0.59.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:dd2842fac03be4e5324ebbbd4d2d0c8c0fc6e0df75c09477dd45b288a0777389"}, - {file = "numba-0.59.1-cp311-cp311-win_amd64.whl", hash = "sha256:0594b3dfb369fada1f8bb2e3045cd6c61a564c62e50cf1f86b4666bc721b3450"}, - {file = "numba-0.59.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1cce206a3b92836cdf26ef39d3a3242fec25e07f020cc4feec4c4a865e340569"}, - {file = "numba-0.59.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c8b4477763cb1fbd86a3be7050500229417bf60867c93e131fd2626edb02238"}, - {file = "numba-0.59.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d80bce4ef7e65bf895c29e3889ca75a29ee01da80266a01d34815918e365835"}, - {file = "numba-0.59.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f7ad1d217773e89a9845886401eaaab0a156a90aa2f179fdc125261fd1105096"}, - {file = "numba-0.59.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bf68f4d69dd3a9f26a9b23548fa23e3bcb9042e2935257b471d2a8d3c424b7f"}, - {file = "numba-0.59.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e0318ae729de6e5dbe64c75ead1a95eb01fabfe0e2ebed81ebf0344d32db0ae"}, - {file = "numba-0.59.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f68589740a8c38bb7dc1b938b55d1145244c8353078eea23895d4f82c8b9ec1"}, - {file = "numba-0.59.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:649913a3758891c77c32e2d2a3bcbedf4a69f5fea276d11f9119677c45a422e8"}, - {file = "numba-0.59.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9712808e4545270291d76b9a264839ac878c5eb7d8b6e02c970dc0ac29bc8187"}, - {file = "numba-0.59.1-cp39-cp39-win_amd64.whl", hash = "sha256:8d51ccd7008a83105ad6a0082b6a2b70f1142dc7cfd76deb8c5a862367eb8c86"}, - {file = "numba-0.59.1.tar.gz", hash = "sha256:76f69132b96028d2774ed20415e8c528a34e3299a40581bae178f0994a2f370b"}, + {file = "numba-0.60.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d761de835cd38fb400d2c26bb103a2726f548dc30368853121d66201672e651"}, + {file = "numba-0.60.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:159e618ef213fba758837f9837fb402bbe65326e60ba0633dbe6c7f274d42c1b"}, + {file = "numba-0.60.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1527dc578b95c7c4ff248792ec33d097ba6bef9eda466c948b68dfc995c25781"}, + {file = "numba-0.60.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe0b28abb8d70f8160798f4de9d486143200f34458d34c4a214114e445d7124e"}, + {file = "numba-0.60.0-cp310-cp310-win_amd64.whl", hash = "sha256:19407ced081d7e2e4b8d8c36aa57b7452e0283871c296e12d798852bc7d7f198"}, + {file = "numba-0.60.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a17b70fc9e380ee29c42717e8cc0bfaa5556c416d94f9aa96ba13acb41bdece8"}, + {file = "numba-0.60.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3fb02b344a2a80efa6f677aa5c40cd5dd452e1b35f8d1c2af0dfd9ada9978e4b"}, + {file = "numba-0.60.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5f4fde652ea604ea3c86508a3fb31556a6157b2c76c8b51b1d45eb40c8598703"}, + {file = "numba-0.60.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4142d7ac0210cc86432b818338a2bc368dc773a2f5cf1e32ff7c5b378bd63ee8"}, + {file = "numba-0.60.0-cp311-cp311-win_amd64.whl", hash = "sha256:cac02c041e9b5bc8cf8f2034ff6f0dbafccd1ae9590dc146b3a02a45e53af4e2"}, + {file = "numba-0.60.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d7da4098db31182fc5ffe4bc42c6f24cd7d1cb8a14b59fd755bfee32e34b8404"}, + {file = "numba-0.60.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:38d6ea4c1f56417076ecf8fc327c831ae793282e0ff51080c5094cb726507b1c"}, + {file = "numba-0.60.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:62908d29fb6a3229c242e981ca27e32a6e606cc253fc9e8faeb0e48760de241e"}, + {file = "numba-0.60.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0ebaa91538e996f708f1ab30ef4d3ddc344b64b5227b67a57aa74f401bb68b9d"}, + {file = "numba-0.60.0-cp312-cp312-win_amd64.whl", hash = "sha256:f75262e8fe7fa96db1dca93d53a194a38c46da28b112b8a4aca168f0df860347"}, + {file = "numba-0.60.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:01ef4cd7d83abe087d644eaa3d95831b777aa21d441a23703d649e06b8e06b74"}, + {file = "numba-0.60.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:819a3dfd4630d95fd574036f99e47212a1af41cbcb019bf8afac63ff56834449"}, + {file = "numba-0.60.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0b983bd6ad82fe868493012487f34eae8bf7dd94654951404114f23c3466d34b"}, + {file = "numba-0.60.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c151748cd269ddeab66334bd754817ffc0cabd9433acb0f551697e5151917d25"}, + {file = "numba-0.60.0-cp39-cp39-win_amd64.whl", hash = "sha256:3031547a015710140e8c87226b4cfe927cac199835e5bf7d4fe5cb64e814e3ab"}, + {file = "numba-0.60.0.tar.gz", hash = "sha256:5df6158e5584eece5fc83294b949fd30b9f1125df7708862205217e068aabf16"}, ] [package.dependencies] -llvmlite = "==0.42.*" -numpy = ">=1.22,<1.27" +llvmlite = "==0.43.*" +numpy = ">=1.22,<2.1" [[package]] name = "numpy" @@ -2112,13 +2107,13 @@ files = [ [[package]] name = "packaging" -version = "24.0" +version = "24.1" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, - {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, + {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, + {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, ] [[package]] @@ -2224,84 +2219,95 @@ test = ["pytest", "pytest-cov", "scipy"] [[package]] name = "pillow" -version = "10.3.0" +version = "10.4.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, - {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, - {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, - {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, - {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, - {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, - {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, - {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, - {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, - {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, - {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, - {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, - {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, - {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, - {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, - {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, - {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, - {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, - {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, - {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, - {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, - {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, - {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, - {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, - {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, - {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, - {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, - {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, - {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, - {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, - {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, - {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, - {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, + {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, + {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, + {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, + {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, + {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, + {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, + {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, + {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, + {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, + {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, + {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, + {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, + {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, + {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, + {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, + {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, + {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, + {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, + {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, + {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, + {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, + {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, + {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, + {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, + {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, + {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, + {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, + {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, + {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, + {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, + {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, + {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, + {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, + {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, + {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, + {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, + {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, + {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -2310,33 +2316,34 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.2" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "playwright" -version = "1.43.0" +version = "1.45.0" description = "A high-level API to automate web browsers" optional = false python-versions = ">=3.8" files = [ - {file = "playwright-1.43.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:b03b12bd4da9c2cfb78dff820deac8b52892fe3c2f89a4d95d6f08c59e41deb9"}, - {file = "playwright-1.43.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e9ec21b141727392f630761c7f4dec46d80c98243614257cc501b64ff636d337"}, - {file = "playwright-1.43.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:e05a8d8fb2040c630429cca07e843c8fa33059717837c8f50c01b7d1fc651ce1"}, - {file = "playwright-1.43.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:50d9a5c07c76456945a2296d63f78fdf6eb11aed3e8d39bb5ccbda760a8d6d41"}, - {file = "playwright-1.43.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87191272c40b4c282cf2c9449ca3acaf705f38ac6e2372270f1617ce16b661b8"}, - {file = "playwright-1.43.0-py3-none-win32.whl", hash = "sha256:bd8b818904b17e2914be23e7bc2a340b203f57fe81678520b10f908485b056ea"}, - {file = "playwright-1.43.0-py3-none-win_amd64.whl", hash = "sha256:9b7bd707eeeaebee47f656b2de90aa9bd85e9ca2c6af7a08efd73896299e4d50"}, + {file = "playwright-1.45.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:7d49aee5907d8e72060f04bc299cb6851c2dc44cb227540ade89d7aa529e907a"}, + {file = "playwright-1.45.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:210c9f848820f58b5b5ed48047748620b780ca3acc3e2b7560dafb2bfdd6d90a"}, + {file = "playwright-1.45.0-py3-none-macosx_11_0_universal2.whl", hash = "sha256:13b5398831f5499580e819ddc996633446a93bf88029e89451e51da188e16ae3"}, + {file = "playwright-1.45.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:0ba5a39f25fb9b9cf1bd48678f44536a29f6d83376329de2dee1567dac220afe"}, + {file = "playwright-1.45.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b09fa76614ba2926d45a4c0581f710c13652d5e32290ba6a1490fbafff7f0be8"}, + {file = "playwright-1.45.0-py3-none-win32.whl", hash = "sha256:97a7d53af89af54208b69c051046b462675fcf5b93f7fbfb7c0fa7f813424ee2"}, + {file = "playwright-1.45.0-py3-none-win_amd64.whl", hash = "sha256:701db496928429aec103739e48e3110806bd5cf49456cc95b89f28e1abda71da"}, ] [package.dependencies] @@ -2345,13 +2352,13 @@ pyee = "11.1.0" [[package]] name = "plotly" -version = "5.21.0" +version = "5.22.0" description = "An open-source, interactive data visualization library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "plotly-5.21.0-py3-none-any.whl", hash = "sha256:a33f41fd5922e45b2b253f795b200d14452eb625790bb72d0a72cf1328a6abbf"}, - {file = "plotly-5.21.0.tar.gz", hash = "sha256:69243f8c165d4be26c0df1c6f0b7b258e2dfeefe032763404ad7e7fb7d7c2073"}, + {file = "plotly-5.22.0-py3-none-any.whl", hash = "sha256:68fc1901f098daeb233cc3dd44ec9dc31fb3ca4f4e53189344199c43496ed006"}, + {file = "plotly-5.22.0.tar.gz", hash = "sha256:859fdadbd86b5770ae2466e542b761b247d1c6b49daed765b95bb8c7063e7469"}, ] [package.dependencies] @@ -2414,67 +2421,77 @@ xlsxwriter = ["xlsxwriter"] [[package]] name = "pot" -version = "0.9.3" +version = "0.9.4" description = "Python Optimal Transport Library" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "POT-0.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:00ceb63cfc49e27fab2829646ed24f553bd7d3584eb8ba83fc856e7a757b0b8c"}, - {file = "POT-0.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:590b583e43f401435dac2b83da9ca244abbe21f606477c9b67bbc45e46103ed7"}, - {file = "POT-0.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:35b172ec33dbfbe44f66ca16fc16a77e0eb68439026ba920f73bd3602f18d92e"}, - {file = "POT-0.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88544f3811eef1f9e9e50d8e68f73a3bf3d84886fbe7be2389cf57d86101e274"}, - {file = "POT-0.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfaf40a74c5131c1c49f5624c170cb4de24f294ddef1cff6c494321c134d6f2d"}, - {file = "POT-0.9.3-cp310-cp310-win32.whl", hash = "sha256:30df60ba279591583ce2921e0e78bdcb27337713f433ee0b7385f77e79d63a69"}, - {file = "POT-0.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:88d4d06cec340c53d1abe9369cb905fe953bd5bf126b0e589d5254e3f5d86592"}, - {file = "POT-0.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:73fc8a643ed4c95dacad4dfb8a4dd50beda3853354b923c4b442a97f5e86db03"}, - {file = "POT-0.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b1888da5458269648990c292ab5f2ad1f60d8496440af45361a1075250af58cd"}, - {file = "POT-0.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:787dae6ba7f72a927a9f8a7e9e4e844935153a09d2a0834548c1b9cb377486d9"}, - {file = "POT-0.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd434bc9659af8ed814200473bfdfc67573db08442bb924324f238903f36bb60"}, - {file = "POT-0.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34019967a47120e9460fb344162d010103e1b1fbf96aa8872b27a07dd7f51144"}, - {file = "POT-0.9.3-cp311-cp311-win32.whl", hash = "sha256:596b296d5522cd55dade5c110442281a1189dc5e5449eb948e4d7eaed2f74503"}, - {file = "POT-0.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:fd2f8fa78b364d51a4dc397d8c4f45dd74df3a904b7c03481aebaf39ebc9eafb"}, - {file = "POT-0.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3e12fbdf9bf6d5de0ecb56277da85036e647d1cdf57cfd087ee57d3e83c19d0d"}, - {file = "POT-0.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ee6269aa3ce7d9706e021f23aea91b932cfd4c264869ee89956ebce40cbe2cd3"}, - {file = "POT-0.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cb28fc18fb1acc095999b80844458a5645aa5b09ea2d8647be48257d1c6dddf"}, - {file = "POT-0.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16bb37c7d20da3a6ff7b4f0c0c5ff98e1e097323e560811392e963440994e661"}, - {file = "POT-0.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b29232b6c1cca507d969a8797aef0cf87631d77e28e03cfb5b62d64d9d63044e"}, - {file = "POT-0.9.3-cp312-cp312-win32.whl", hash = "sha256:b20bf5cca6776e1d92421a14bc14307a0914d172c67e5a76acaf1a3ecfe7d02b"}, - {file = "POT-0.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:e9e419868ae64c397d932a43d98cc2d1464b6060815775037a070fd2e1d4eafa"}, - {file = "POT-0.9.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1e401b5ae17d95d33ef48c851df7aaac4711e7af21705ba9b5fae7bf53ae9217"}, - {file = "POT-0.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db3ac04a2f272855501a7d8117969b6dff15a146986f7a5c1f0e6d9f1840fa73"}, - {file = "POT-0.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9268e48a1a43e947fdb78a89e3866b484c559681ed88bb178ac5b3dccb217579"}, - {file = "POT-0.9.3-cp37-cp37m-win32.whl", hash = "sha256:0dbe4878419ae1edbd029b2e166406f8fd1387356bd18ab2fd9a3c656bc4125a"}, - {file = "POT-0.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:6f114b5ab93039c0426afa59be6db1fa6b2e251dc3e1e7f7b348a1334f2c0061"}, - {file = "POT-0.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:aab4eb2b4bbfe01fee10bb1c2157891883cc63fa70c2bc2a8460a486c77de9f3"}, - {file = "POT-0.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:09badce0c77cdc94422e74aa81fdcf0ad8e6e826bf7eafcb8a1701bd9ff5f393"}, - {file = "POT-0.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:18f2c3905e0678bf397890f242ae196afaa25ac4dec5f06ef6ae30921adc0614"}, - {file = "POT-0.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74cc9a8ab92329c50b0df74b3be19f282860aa7f1abddf0c149fb2f5e96d18bb"}, - {file = "POT-0.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36b0377111e50a8008b29bcfb092aac8594f183716993369f2e2f3ff746dacd7"}, - {file = "POT-0.9.3-cp38-cp38-win32.whl", hash = "sha256:342161c182f3b4719c4424bf3d852b30f7cb794f17166aa64965b2408355d44a"}, - {file = "POT-0.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:a38f573bddf670dee651a6df220c18f30f71c74e4ec9ac398b7937ca9adfc0ff"}, - {file = "POT-0.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5b72b204af2d6a236dfc457767f5e9ad3cca60e2ee3cf0f909c0028be95f7b42"}, - {file = "POT-0.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec4482888de48d17ad4d8fe905bd186a6c41f8dc907cda9d0468331a907e2419"}, - {file = "POT-0.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b19c0a8051d80e6d55e0dfd4473f7841ef30167b3013c95eedbaba7acc385dea"}, - {file = "POT-0.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aede827854d868fb4ec9e8aaeac97f13fdd2a1313c16d06d4ccae10a92e272a7"}, - {file = "POT-0.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:057246783b90936d7ce32b7bb27e1cfa59731eb95898ea5f756e4d1de6e9ae3f"}, - {file = "POT-0.9.3-cp39-cp39-win32.whl", hash = "sha256:fc7676338404001ad61050610494b7b5ab496f0533ce29f1d44cff833efd80d8"}, - {file = "POT-0.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:f391982d5b9877faabac21ec1bccfb5567b0fc8305770277bc87fdff4563bd5b"}, - {file = "POT-0.9.3.tar.gz", hash = "sha256:eecf2394390a73472e727ef75f7c801fc47509039f00c40f8fc64fdeea617c86"}, + {file = "POT-0.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8418ab9c24f549290fdc452caebb58ded05b986a024063fe3354cfd2e704b378"}, + {file = "POT-0.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:096cd3b454f87ff9c8f48d8e221bc26509d8f9355ce99d9fefe83560f82278b5"}, + {file = "POT-0.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6e67d420a479ed66f4549c785e157bb3dce2c5489bf81a44ac922a6e9471fe69"}, + {file = "POT-0.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bc7225906a3fa3aafdb441e1d24c55eaf1ee3badd1c93ab6199865f689221"}, + {file = "POT-0.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfee044f744b1722912654c8b905bc289ce160524db5ca0e853f1aa442ffea55"}, + {file = "POT-0.9.4-cp310-cp310-win32.whl", hash = "sha256:421c3efb8da2f1ce9605f9f2068047ea629b95de87baa15b8786b3e664de9dbd"}, + {file = "POT-0.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:6e76194a62f29ddadc975e18cf7f07d22060735bd3fb9a023781e0e126a05822"}, + {file = "POT-0.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:148040b89063790ab784458d5d200ba4a7f36c54fdb62ea0842f8d5d4c5c6ccb"}, + {file = "POT-0.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1109fc77989834a1467be731ff957d90c2b558e772cff6c06fb90f7cbe58b014"}, + {file = "POT-0.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8218cd419e8457b37fe2b8060b5bf9bd07d4671d5f5fa4d5ac98c58b5be8c0"}, + {file = "POT-0.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ea0055f18e26917ff326f39dd5e5fd43bcc9eccaab4b09a4f8d7785c8921250"}, + {file = "POT-0.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f03b4af3f56234787d2a34e0637dac9c1e1de4cb3f7386ca4f91331f0c4af187"}, + {file = "POT-0.9.4-cp311-cp311-win32.whl", hash = "sha256:a69f6d554df1de47dd312fc065d9171bdbedf48c90c8409889485945ffaaeacf"}, + {file = "POT-0.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:8791c8f09a852901e03e2dc1c6aec4f374b58b3ee905a90349713587aa16e26a"}, + {file = "POT-0.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1a7a55b3fd528e6808f99de0165dcacf185eb86ae3aff4d358b850479b76a8ba"}, + {file = "POT-0.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a9bbd2507605be6eae4f0f0d6f6f0ff91ce3eeb5b7c8eeb350e4eb76bcc6940a"}, + {file = "POT-0.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5594ab0e78329307ce4cd293f2de409513876695d60fb4c1013b5dd46069f256"}, + {file = "POT-0.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0ca658105d129b752c8d20751ff2cb965d1bdcaecec319ae489b135c58d9da9"}, + {file = "POT-0.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6732f1acd94959b8fa13a4fa250ad49c1e6894ece488a81f4427dbf13df4776"}, + {file = "POT-0.9.4-cp312-cp312-win32.whl", hash = "sha256:bf7f5253fee6ba7df5dd854b739540f701153cabab80dd25332dfac93d84bec1"}, + {file = "POT-0.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:597ff64b06a157871feb84e6e82b3f5dfbfff57161c14660ab2ddbcc93c940e6"}, + {file = "POT-0.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:385b41606943fbc73f1ab96fd994117d79c4ad782c91bbb7ba74c0359e9de887"}, + {file = "POT-0.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b3f697e084243b9fe0a975331e471fd09610343c6aa28172232958e39100ede6"}, + {file = "POT-0.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b967fb9cafc6ad30a6d51b21d6307b384491a106d6dc75f37bee52a3f63575c3"}, + {file = "POT-0.9.4-cp37-cp37m-win32.whl", hash = "sha256:35926c2f4d2ee49309dce340f7f6646fe451ca1e0d11b2d017a851d482bf4468"}, + {file = "POT-0.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:f29fa1fcd591d1940e2279dc1422ff46c0c273f6be4ecbcaa819d91dd196573e"}, + {file = "POT-0.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:63f8b50f448e32a4ae274dd1e68e22b1a2bc291c53c5c6ec5afadfb930b6a809"}, + {file = "POT-0.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cabd13a728d2db40b3989ad57810769dfba8972b686ae7f4881dbd315252e5d9"}, + {file = "POT-0.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5984157d5a819bd6c55db3b0d8fe631ff398c243e80a9e9e933cbd1ee7c7588c"}, + {file = "POT-0.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b8da4e3268eeee40dff96364f0a9f0326979d565d970ec74a1688b8ad338022"}, + {file = "POT-0.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ede957083299e4904627621f4d2c8a6b56af108fef9b486330f65519a395f10a"}, + {file = "POT-0.9.4-cp38-cp38-win32.whl", hash = "sha256:79716079d7970c6c0bf909f986c65d7103135e36b364ba5fa5caed97d7aa6464"}, + {file = "POT-0.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:3246493745bcf2b353312183b9ab547466cae711936f991a6754b62f55ff1dec"}, + {file = "POT-0.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:223c4ca199b679e4c2b8a79fb49d31f2c7fab2975c2c37d1e68a0a7fbe2bc55d"}, + {file = "POT-0.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c30d77994d02984ad32665f5975e272e8c02e8d5288c4edfbec08617c5c38f91"}, + {file = "POT-0.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b0fe5be45112c12cc0f6ab61fb85ed9161ca540b24a4037e5d53ab86f390a49"}, + {file = "POT-0.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab68bdfeae54719d202e923f18ec29869c09b105e42f94568221fc92996f0f4d"}, + {file = "POT-0.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2847015e3bb65171eb70eca786f8cebe806960af40625ebc17c858b6314a9e0b"}, + {file = "POT-0.9.4-cp39-cp39-win32.whl", hash = "sha256:2e35d68c6e676108d6eeb7e6b119c4c19dca364992bca57f3f513660bfb1810c"}, + {file = "POT-0.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:e7d029f024ed58f8d10b3e4d517df551bb9758ac12d0503be793f44258f2dffc"}, + {file = "pot-0.9.4.tar.gz", hash = "sha256:4cf8b46bf4992c37529161c32dd5e3334e0c089399142f08ed6d455b57015edd"}, ] [package.dependencies] numpy = ">=1.16" scipy = ">=1.6" +[package.extras] +all = ["autograd", "cvxopt", "jax", "jaxlib", "matplotlib", "pymanopt", "scikit-learn", "tensorflow", "torch", "torch-geometric"] +backend-jax = ["jax", "jaxlib"] +backend-tf = ["tensorflow"] +backend-torch = ["torch"] +cvxopt = ["cvxopt"] +dr = ["autograd", "pymanopt", "scikit-learn"] +gnn = ["torch", "torch-geometric"] +plot = ["matplotlib"] + [[package]] name = "pre-commit" -version = "3.7.0" +version = "3.7.1" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.7.0-py2.py3-none-any.whl", hash = "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab"}, - {file = "pre_commit-3.7.0.tar.gz", hash = "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"}, + {file = "pre_commit-3.7.1-py2.py3-none-any.whl", hash = "sha256:fae36fd1d7ad7d6a5a1c0b0d5adb2ed1a3bda5a21bf6c3e5372073d7a11cd4c5"}, + {file = "pre_commit-3.7.1.tar.gz", hash = "sha256:8ca3ad567bc78a4972a3f1a477e94a79d4597e8140a6e0b651c5e33899c3654a"}, ] [package.dependencies] @@ -2555,18 +2572,18 @@ files = [ [[package]] name = "pydantic" -version = "2.4.0" +version = "2.4.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic-2.4.0-py3-none-any.whl", hash = "sha256:909b2b7d7be775a890631218e8c4b6b5418c9b6c57074ae153e5c09b73bf06a3"}, - {file = "pydantic-2.4.0.tar.gz", hash = "sha256:54216ccb537a606579f53d7f6ed912e98fffce35aff93b25cd80b1c2ca806fc3"}, + {file = "pydantic-2.4.2-py3-none-any.whl", hash = "sha256:bc3ddf669d234f4220e6e1c4d96b061abe0998185a8d7855c0126782b7abc8c1"}, + {file = "pydantic-2.4.2.tar.gz", hash = "sha256:94f336138093a5d7f426aac732dcfe7ab4eb4da243c88f891d65deb4a2556ee7"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.10.0" +pydantic-core = "2.10.1" typing-extensions = ">=4.6.1" [package.extras] @@ -2574,117 +2591,117 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.10.0" +version = "2.10.1" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "pydantic_core-2.10.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:daea90360d99ad06a3f686b3e628222ac3aa953b1982f13be5b69b2648c5e6bb"}, - {file = "pydantic_core-2.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f76cb8d68d87fd05e56aba392c841d98eeb3ad378bcf5331b42bac7afee0d66"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e816d042f80dd630aaedbc75c21084da9e1d7ea5918619b8089c7edaedd57e8"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7192492b09c1e4ad103e5cb98eb397f9b61a9037fce03e94cafe3238404dbe0f"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:312831c5bf50d9d432c11baf9bbd8d8961740608ccbc66fb1290d532aff21b18"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:873db84afcbcf3f1ed0040ed9c5534bc1af5d647d13c04be12f3568421f5dd3e"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0aa8bdc2d78afadd191148726f094be81d5e4b76011f8fa9300f317e06a1b732"}, - {file = "pydantic_core-2.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7cbf77664099345a25932ebe25d7bf9a330fc29acd9a909e8751ac0c42097fb3"}, - {file = "pydantic_core-2.10.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a537e87ca600e59e532fbc770a60f9f3a5ebcff9bae8c60aceeec5beb326e1b8"}, - {file = "pydantic_core-2.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ed5f8d6cb834c80fb813d233f9bfb60d3453b7450c80c0814b8e78c23d1ea8bf"}, - {file = "pydantic_core-2.10.0-cp310-none-win32.whl", hash = "sha256:0e210107faf47d5965fcebc294c41891573adab36e5cf70731c57d0068fc7c5c"}, - {file = "pydantic_core-2.10.0-cp310-none-win_amd64.whl", hash = "sha256:9527cf9c25fd655617620c8d6cb43216c0ce5779871ab7f83175421267b85199"}, - {file = "pydantic_core-2.10.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:ab2d56dfa13244164f0ba8125d8315c799fa0150459b88fc42ed5c1e3c04d47a"}, - {file = "pydantic_core-2.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1e79893a20207ff671f13f5562c1f0aaece030e6e30252683f536286ba89864"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:030ba2f59e78c8732445d8c9f093579674f2b5b93b3960945face14ec2e82682"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:705fad71297dfedc5c9e3c935702864aa0cc7812be11ac544f152677ba6ea430"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394a8ce4a7495af8dbf33038daf57a6170be15f8d1d92a7b63c6f2211527d950"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19c7aa3c0ff08ddc91597d8af08f8c4de59b27fe752b3bd1db9a67f6f08c4020"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb204346d3eda4e0c63cbeeec6398a52682ac51f9cf7379a13505863e47d3186"}, - {file = "pydantic_core-2.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b1fefe63baa04f1d9dd5b4564b1e73d133e1c745589933d7ef9718235915cc81"}, - {file = "pydantic_core-2.10.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fa4bd88165d860111e860e8b43efd97afd137a9165cf24eb3cfb2371f57452bf"}, - {file = "pydantic_core-2.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e21ab9c49cc58282c228ff89fb4a5e4b447233ccd53acb7f333d1cde58df37b"}, - {file = "pydantic_core-2.10.0-cp311-none-win32.whl", hash = "sha256:2a6f28e2b2a5cef3b52b5ac6c6d64fe810ca51ec57081554f447c818778eea09"}, - {file = "pydantic_core-2.10.0-cp311-none-win_amd64.whl", hash = "sha256:f94539aa4265ab5528d8c3dc4505a19369083c29d0713b8ed536f93b9bc1e94f"}, - {file = "pydantic_core-2.10.0-cp311-none-win_arm64.whl", hash = "sha256:2352f7cb8ef0cd21fbc582abe2a14105d7e8400f97a551ca2e3b05dee77525d2"}, - {file = "pydantic_core-2.10.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:c2a126c7271a9421005a0f57cf71294ad49c375e4d0a9198b93665796f49e7f7"}, - {file = "pydantic_core-2.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7440933341f655a64456065211cf7657c3cf3524d5b0b02f5d9b63ef5a7e0d49"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85d8225cd08aacb8a2843cf0a0a72f1c403c6ac6f18d4cfeecabe050f80c9ea3"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:573e89b3da5908f564ae54b6284e20b490158681e91e1776a59dfda17ec0a6a8"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b0061965942489e6da23f0399b1136fd10eff0a4f0cefae13369eba1776e22a6"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:725f0276402773a6b61b6f67bf9562f37ba08a8bfebdfb9990eea786ed5711b2"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25cacd12689b1a357ae6212c7f5980ebf487720db5bbf1bb5d91085226b6a962"}, - {file = "pydantic_core-2.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e70c6c882ab101a72010c8f91e87db211fa2aaf6aa51acc7160fe5649630ed75"}, - {file = "pydantic_core-2.10.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e079540fd4c45c23de4465cafb20cddcd8befe3b5f46505a2eb28e49b9d13ee2"}, - {file = "pydantic_core-2.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:98474284adb71c8738e5efb71ccb1382d8d66f042ad0875018c78bcb38ac0f47"}, - {file = "pydantic_core-2.10.0-cp312-none-win32.whl", hash = "sha256:ab1fa046ef9058ceef941b576c5e7711bab3d99be00a304fb4726cf4b94e05ff"}, - {file = "pydantic_core-2.10.0-cp312-none-win_amd64.whl", hash = "sha256:b4df023610af081d6da85328411fed7aacf19e939fe955bb31f29212f8dcf306"}, - {file = "pydantic_core-2.10.0-cp312-none-win_arm64.whl", hash = "sha256:f1a70f99d1a7270d4f321a8824e87d5b88acd64c2af6049915b7fd8215437e04"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:f622778eb180cf7eba25e65d2fe37a57a0eadd8403df4c44606b56d204f686de"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:fb513fc74bdf5f649e6e855fc87ed9b81ee8b0be96717190f9e00683244f0616"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82c3f0752547f928e4fcfb00151d6deb9124be7d35e012c567429fe93ec71b71"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:100bbd622433d9d7ca8ee4fa63dfae90f9f38358558955173aed6ed56c573db8"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f919d17581fdf6e71ff3d3fe4b02ed32aaa0429e0b4346798de7a1361e098ef"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f32df1d8d383e1b729674ad1053d8f43f7ed79848496d3cb6ca81a906318317b"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab4d279c480e83c516e4e0b7b1f882f168f614d9c62e18ab779edef0cd13aaa9"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c394e9ed6f9e6f4af3618c34bc15f2af4237f7d1989b7f45588f8e855bc10e08"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bc0a33779fded534ff0b5d8ef766a1c94d3e740877ea8adab65cbf1878ba03b4"}, - {file = "pydantic_core-2.10.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c1041d8fcd313c68b77dec6a16bf1d690008270b50eec11e96d89e1b4ba756b1"}, - {file = "pydantic_core-2.10.0-cp37-none-win32.whl", hash = "sha256:68992f78507e95ed63ca87b8b177785d9806cde34ca3a9f98382188dd11d8720"}, - {file = "pydantic_core-2.10.0-cp37-none-win_amd64.whl", hash = "sha256:aa45f0846773cb142252ccef66b096d917bb76c6ef9da1aa747e6b44aa318192"}, - {file = "pydantic_core-2.10.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:a04054b91afc41282a0a7426147654849136b37a41da86412d4ff5ba51b9cd2f"}, - {file = "pydantic_core-2.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1c1bfa2ca352bf43d34b7099f8ed675deb88113bd36c76880f4ca18fc0d3af50"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba288fa675b2951e7898ebfdd8defa0e958e514d4d1cc7a5f6a8d627378c0c47"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fbba90179672707ab69ad19ef7d3c3f0a8e2f0a0579f0eb79649ffcdacf476d0"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7c6915a9b3dd16e016dba7e76070e667eca50530f957daa5b78c73abbf281b25"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e72c1e06a20c10b9c5f7a3fe09ec46e0e208c65a69d2efb92a3e1b64443e6c3"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b50848d1a614093c05c97d0fdf841ef547d8c087fbd06f6eafe8ef1d836d6c1"}, - {file = "pydantic_core-2.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ad7b5f4352f3dfcc481b008bce3b3931a485a93112deaa0a25bee2817d3f7b98"}, - {file = "pydantic_core-2.10.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:66c0169457733a4dfe72be51dd359414eddd0738b15dda07827f18a10e9f6ab7"}, - {file = "pydantic_core-2.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e24d92d3a60d6eb19a1bd0f1f259369f478e0f34412a33e794da6cdaa36218be"}, - {file = "pydantic_core-2.10.0-cp38-none-win32.whl", hash = "sha256:30c5df611afc5a9f2ad48babe2192f9cf0d12ed6c0dd5eb57b3538491c113737"}, - {file = "pydantic_core-2.10.0-cp38-none-win_amd64.whl", hash = "sha256:d72a561d7c0738ae5d05a709c739b2953d05e18151539750ca9622f3438de041"}, - {file = "pydantic_core-2.10.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:7cecd7669b1ebee8ae90f5aa7d459770b6e79db7b95983aacc5b7392a050b9ab"}, - {file = "pydantic_core-2.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:923000ea46def1bdded511b5792ec19866909797a05dc8f75342c6a9cacb2d66"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:729a2fc4bc1564d164258eaf138ab4c03baa2080a5e3f91a9b3cb2d758248b8f"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6930eaf3aa2ba660ed3f64206902a534f454f9954e5de06354e20d890bebbd8a"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0b17e8d08a1c94efb91d8d389ec76a32fc3f85ba06626b5ef0c2d6bffcbe066"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c61755149ba534123ae08e6aa814aa34f47c6ba45a622ea98ddd7860b5312767"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b126893f53c789ad2253c9288a59362171a5bafbb865190c43d430dc805edb"}, - {file = "pydantic_core-2.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:776eee60ca8ca3de83add0fb95a0034ac965a12590bb22ec09b05c87870ba401"}, - {file = "pydantic_core-2.10.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b1496f38e49c7960461002768c5f4c9ba9720fe259cd5c8b229cd0b3b0861844"}, - {file = "pydantic_core-2.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:cd175beab2ac845a90d31bb4ea8e6c1e8be12efaf14b9918d0ab4828dd3c916b"}, - {file = "pydantic_core-2.10.0-cp39-none-win32.whl", hash = "sha256:391805e8a4ad731e729a22d8e14bad2d724915d28618be6c66dc7ccb421a13a0"}, - {file = "pydantic_core-2.10.0-cp39-none-win_amd64.whl", hash = "sha256:7e2360b86b21e2aab8d4f1ce2551e2b731bc30610b7cc9324ea7517af4375b08"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b40221d1490f2c6e488d2576773a574d42436b5aba1faed91f59a9feb82c384b"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9f3b25201efe20d182f3bd6fe8d99685f4ed01cac67b79c017c9cf688b747263"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34a45943bb14275e9681fd4abafbe3acae1e7dac7248bebf38ac5bde492e00f7"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc5be7a29a6b25a186941e9e2b5f9281c05723628e1fdb244f429f4c1682ff49"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17460ffd8f8e49ca52711b4926fefe2b336d01b63dc27aee432a576c2147c8ce"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c1ab3701d660bd136a22e1ca95292bfed50245eb869adaee2e08f29d4dd5e360"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:09ac18617199704327d99c85893d697b8442c18b8c2db1ea636ba83313223541"}, - {file = "pydantic_core-2.10.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e3f69d48191103587950981cf47c936064c808b6c18f57e745ed130a305c73a6"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:792af9e4f78d6f1d0aabfb95162c5ed56b5369b25350eaa68b1495e8f675d4d9"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ecd28fb4c98c97836046d092029017bcc35e060ea547484aa1234b8a592de17"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a622a8abf656cc51960766fa4d194504e8a9f85ae48032f87fb42c79462c7b8"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:52eb5c61de017bfee422f6aa9a3e76de5aa5a9189ba808bba63b9de67e55c4ca"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:69772dcdcf90b677d0d2ecedafe4c6a610572f1fad15912cde28a6f8eb5654fd"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:12470a4de172aaa1bbadb45744de4a9b0298fa8f974eb508314c3b5da0cb4aed"}, - {file = "pydantic_core-2.10.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f9f2c70257f03db712658d4138e2b892bdd7c71472783eaebc2813a47fd29ef3"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:8a5323d6778931ab1b3b22bac05fb7c961786d3b04a6c84f7c0ffcc331b4b998"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:5f00e83aa9aebbfd4382695a5ed94e6282ac01455fbb1a37d99d2effa29df30f"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c871820c60fc863c7b3f660612af6ce5bb8f5f69d6364f208e29d2ca7992d154"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1bcb1b9b33573eeef218ffb3a2910c57fedc8831caf3c942e68a2222481d2cc"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d122a46c360c8069f7ac39c6f2c29cf99436baa48ba1e28ea5443336e9bbb838"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ffb2a3462bb7905c4d849b95f536ac1f3948e92f5e0fc7e65bd3f3b0d132cf4"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b5d4eec8aba25b163a4d9dcc6be8354bc8f939040bc15a6400cbd62ba0511a5f"}, - {file = "pydantic_core-2.10.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5cbfe4cd608cf6d032374961e4e07d0506acfaec7b1a69beade1d5f98dce00fd"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:02b3d546342e7f583bf58f4a4618c7e97f44426db2358789393537dd4e9a921d"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7820faf076216654ae54ad8a8443a296faaac9057a49ff404ce92ab85c9518a3"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f114130c44ae52b3bd2450dac8e1d3e1e92a92baecb24dbcdb6de2d2fc15bdb5"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f6f70680c15876c583a24bd476e49004327e87392be0282aedbc65773519ea8"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f230d70be54447e12fcd0f1c2319dac74341244fafd2350d5675aa194f6c3f4"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:96b3007451863b46e8138f8096ef31aea6f7721a9910843b0554ce4ae17024a2"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b196c4ace34be6c2953c6ec3906d1af88c418b93325d612d7f900ed30bf1e0ac"}, - {file = "pydantic_core-2.10.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5958b1af7acd7b4a629e9758ce54a31c1910695e85e0ef847ba3daa4f25a0a08"}, - {file = "pydantic_core-2.10.0.tar.gz", hash = "sha256:8fe66506700efdfc699c613ccc4974ac7d8fceed8c74983e55ec380504db2e05"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:d64728ee14e667ba27c66314b7d880b8eeb050e58ffc5fec3b7a109f8cddbd63"}, + {file = "pydantic_core-2.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48525933fea744a3e7464c19bfede85df4aba79ce90c60b94d8b6e1eddd67096"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef337945bbd76cce390d1b2496ccf9f90b1c1242a3a7bc242ca4a9fc5993427a"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1392e0638af203cee360495fd2cfdd6054711f2db5175b6e9c3c461b76f5175"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0675ba5d22de54d07bccde38997e780044dcfa9a71aac9fd7d4d7a1d2e3e65f7"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128552af70a64660f21cb0eb4876cbdadf1a1f9d5de820fed6421fa8de07c893"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f6e6aed5818c264412ac0598b581a002a9f050cb2637a84979859e70197aa9e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ecaac27da855b8d73f92123e5f03612b04c5632fd0a476e469dfc47cd37d6b2e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3c01c2fb081fced3bbb3da78510693dc7121bb893a1f0f5f4b48013201f362e"}, + {file = "pydantic_core-2.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:92f675fefa977625105708492850bcbc1182bfc3e997f8eecb866d1927c98ae6"}, + {file = "pydantic_core-2.10.1-cp310-none-win32.whl", hash = "sha256:420a692b547736a8d8703c39ea935ab5d8f0d2573f8f123b0a294e49a73f214b"}, + {file = "pydantic_core-2.10.1-cp310-none-win_amd64.whl", hash = "sha256:0880e239827b4b5b3e2ce05e6b766a7414e5f5aedc4523be6b68cfbc7f61c5d0"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:073d4a470b195d2b2245d0343569aac7e979d3a0dcce6c7d2af6d8a920ad0bea"}, + {file = "pydantic_core-2.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:600d04a7b342363058b9190d4e929a8e2e715c5682a70cc37d5ded1e0dd370b4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39215d809470f4c8d1881758575b2abfb80174a9e8daf8f33b1d4379357e417c"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eeb3d3d6b399ffe55f9a04e09e635554012f1980696d6b0aca3e6cf42a17a03b"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a7a7902bf75779bc12ccfc508bfb7a4c47063f748ea3de87135d433a4cca7a2f"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3625578b6010c65964d177626fde80cf60d7f2e297d56b925cb5cdeda6e9925a"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:caa48fc31fc7243e50188197b5f0c4228956f97b954f76da157aae7f67269ae8"}, + {file = "pydantic_core-2.10.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:07ec6d7d929ae9c68f716195ce15e745b3e8fa122fc67698ac6498d802ed0fa4"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e6f31a17acede6a8cd1ae2d123ce04d8cca74056c9d456075f4f6f85de055607"}, + {file = "pydantic_core-2.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d8f1ebca515a03e5654f88411420fea6380fc841d1bea08effb28184e3d4899f"}, + {file = "pydantic_core-2.10.1-cp311-none-win32.whl", hash = "sha256:6db2eb9654a85ada248afa5a6db5ff1cf0f7b16043a6b070adc4a5be68c716d6"}, + {file = "pydantic_core-2.10.1-cp311-none-win_amd64.whl", hash = "sha256:4a5be350f922430997f240d25f8219f93b0c81e15f7b30b868b2fddfc2d05f27"}, + {file = "pydantic_core-2.10.1-cp311-none-win_arm64.whl", hash = "sha256:5fdb39f67c779b183b0c853cd6b45f7db84b84e0571b3ef1c89cdb1dfc367325"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1f22a9ab44de5f082216270552aa54259db20189e68fc12484873d926426921"}, + {file = "pydantic_core-2.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8572cadbf4cfa95fb4187775b5ade2eaa93511f07947b38f4cd67cf10783b118"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9a28c063c7c00844ae42a80203eb6d2d6bbb97070cfa00194dff40e6f545ab"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0e2a35baa428181cb2270a15864ec6286822d3576f2ed0f4cd7f0c1708472aff"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05560ab976012bf40f25d5225a58bfa649bb897b87192a36c6fef1ab132540d7"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6495008733c7521a89422d7a68efa0a0122c99a5861f06020ef5b1f51f9ba7c"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ac492c686defc8e6133e3a2d9eaf5261b3df26b8ae97450c1647286750b901"}, + {file = "pydantic_core-2.10.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8282bab177a9a3081fd3d0a0175a07a1e2bfb7fcbbd949519ea0980f8a07144d"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:aafdb89fdeb5fe165043896817eccd6434aee124d5ee9b354f92cd574ba5e78f"}, + {file = "pydantic_core-2.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f6defd966ca3b187ec6c366604e9296f585021d922e666b99c47e78738b5666c"}, + {file = "pydantic_core-2.10.1-cp312-none-win32.whl", hash = "sha256:7c4d1894fe112b0864c1fa75dffa045720a194b227bed12f4be7f6045b25209f"}, + {file = "pydantic_core-2.10.1-cp312-none-win_amd64.whl", hash = "sha256:5994985da903d0b8a08e4935c46ed8daf5be1cf217489e673910951dc533d430"}, + {file = "pydantic_core-2.10.1-cp312-none-win_arm64.whl", hash = "sha256:0d8a8adef23d86d8eceed3e32e9cca8879c7481c183f84ed1a8edc7df073af94"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9badf8d45171d92387410b04639d73811b785b5161ecadabf056ea14d62d4ede"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:ebedb45b9feb7258fac0a268a3f6bec0a2ea4d9558f3d6f813f02ff3a6dc6698"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cfe1090245c078720d250d19cb05d67e21a9cd7c257698ef139bc41cf6c27b4f"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e357571bb0efd65fd55f18db0a2fb0ed89d0bb1d41d906b138f088933ae618bb"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b3dcd587b69bbf54fc04ca157c2323b8911033e827fffaecf0cafa5a892a0904"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c120c9ce3b163b985a3b966bb701114beb1da4b0468b9b236fc754783d85aa3"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d6bca84ffc966cc9976b09a18cf9543ed4d4ecbd97e7086f9ce9327ea48891"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5cabb9710f09d5d2e9e2748c3e3e20d991a4c5f96ed8f1132518f54ab2967221"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82f55187a5bebae7d81d35b1e9aaea5e169d44819789837cdd4720d768c55d15"}, + {file = "pydantic_core-2.10.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1d40f55222b233e98e3921df7811c27567f0e1a4411b93d4c5c0f4ce131bc42f"}, + {file = "pydantic_core-2.10.1-cp37-none-win32.whl", hash = "sha256:14e09ff0b8fe6e46b93d36a878f6e4a3a98ba5303c76bb8e716f4878a3bee92c"}, + {file = "pydantic_core-2.10.1-cp37-none-win_amd64.whl", hash = "sha256:1396e81b83516b9d5c9e26a924fa69164156c148c717131f54f586485ac3c15e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6835451b57c1b467b95ffb03a38bb75b52fb4dc2762bb1d9dbed8de31ea7d0fc"}, + {file = "pydantic_core-2.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b00bc4619f60c853556b35f83731bd817f989cba3e97dc792bb8c97941b8053a"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fa467fd300a6f046bdb248d40cd015b21b7576c168a6bb20aa22e595c8ffcdd"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d99277877daf2efe074eae6338453a4ed54a2d93fb4678ddfe1209a0c93a2468"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fa7db7558607afeccb33c0e4bf1c9a9a835e26599e76af6fe2fcea45904083a6"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aad7bd686363d1ce4ee930ad39f14e1673248373f4a9d74d2b9554f06199fb58"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:443fed67d33aa85357464f297e3d26e570267d1af6fef1c21ca50921d2976302"}, + {file = "pydantic_core-2.10.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:042462d8d6ba707fd3ce9649e7bf268633a41018d6a998fb5fbacb7e928a183e"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ecdbde46235f3d560b18be0cb706c8e8ad1b965e5c13bbba7450c86064e96561"}, + {file = "pydantic_core-2.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ed550ed05540c03f0e69e6d74ad58d026de61b9eaebebbaaf8873e585cbb18de"}, + {file = "pydantic_core-2.10.1-cp38-none-win32.whl", hash = "sha256:8cdbbd92154db2fec4ec973d45c565e767ddc20aa6dbaf50142676484cbff8ee"}, + {file = "pydantic_core-2.10.1-cp38-none-win_amd64.whl", hash = "sha256:9f6f3e2598604956480f6c8aa24a3384dbf6509fe995d97f6ca6103bb8c2534e"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:655f8f4c8d6a5963c9a0687793da37b9b681d9ad06f29438a3b2326d4e6b7970"}, + {file = "pydantic_core-2.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e570ffeb2170e116a5b17e83f19911020ac79d19c96f320cbfa1fa96b470185b"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64322bfa13e44c6c30c518729ef08fda6026b96d5c0be724b3c4ae4da939f875"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:485a91abe3a07c3a8d1e082ba29254eea3e2bb13cbbd4351ea4e5a21912cc9b0"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7c2b8eb9fc872e68b46eeaf835e86bccc3a58ba57d0eedc109cbb14177be531"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a5cb87bdc2e5f620693148b5f8f842d293cae46c5f15a1b1bf7ceeed324a740c"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25bd966103890ccfa028841a8f30cebcf5875eeac8c4bde4fe221364c92f0c9a"}, + {file = "pydantic_core-2.10.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f323306d0556351735b54acbf82904fe30a27b6a7147153cbe6e19aaaa2aa429"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0c27f38dc4fbf07b358b2bc90edf35e82d1703e22ff2efa4af4ad5de1b3833e7"}, + {file = "pydantic_core-2.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f1365e032a477c1430cfe0cf2856679529a2331426f8081172c4a74186f1d595"}, + {file = "pydantic_core-2.10.1-cp39-none-win32.whl", hash = "sha256:a1c311fd06ab3b10805abb72109f01a134019739bd3286b8ae1bc2fc4e50c07a"}, + {file = "pydantic_core-2.10.1-cp39-none-win_amd64.whl", hash = "sha256:ae8a8843b11dc0b03b57b52793e391f0122e740de3df1474814c700d2622950a"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d43002441932f9a9ea5d6f9efaa2e21458221a3a4b417a14027a1d530201ef1b"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fcb83175cc4936a5425dde3356f079ae03c0802bbdf8ff82c035f8a54b333521"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:962ed72424bf1f72334e2f1e61b68f16c0e596f024ca7ac5daf229f7c26e4208"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2cf5bb4dd67f20f3bbc1209ef572a259027c49e5ff694fa56bed62959b41e1f9"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e544246b859f17373bed915182ab841b80849ed9cf23f1f07b73b7c58baee5fb"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c0877239307b7e69d025b73774e88e86ce82f6ba6adf98f41069d5b0b78bd1bf"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:53df009d1e1ba40f696f8995683e067e3967101d4bb4ea6f667931b7d4a01357"}, + {file = "pydantic_core-2.10.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a1254357f7e4c82e77c348dabf2d55f1d14d19d91ff025004775e70a6ef40ada"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:524ff0ca3baea164d6d93a32c58ac79eca9f6cf713586fdc0adb66a8cdeab96a"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f0ac9fb8608dbc6eaf17956bf623c9119b4db7dbb511650910a82e261e6600f"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:320f14bd4542a04ab23747ff2c8a778bde727158b606e2661349557f0770711e"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:63974d168b6233b4ed6a0046296803cb13c56637a7b8106564ab575926572a55"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:417243bf599ba1f1fef2bb8c543ceb918676954734e2dcb82bf162ae9d7bd514"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dda81e5ec82485155a19d9624cfcca9be88a405e2857354e5b089c2a982144b2"}, + {file = "pydantic_core-2.10.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:14cfbb00959259e15d684505263d5a21732b31248a5dd4941f73a3be233865b9"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:631cb7415225954fdcc2a024119101946793e5923f6c4d73a5914d27eb3d3a05"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:bec7dd208a4182e99c5b6c501ce0b1f49de2802448d4056091f8e630b28e9a52"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:149b8a07712f45b332faee1a2258d8ef1fb4a36f88c0c17cb687f205c5dc6e7d"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4d966c47f9dd73c2d32a809d2be529112d509321c5310ebf54076812e6ecd884"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7eb037106f5c6b3b0b864ad226b0b7ab58157124161d48e4b30c4a43fef8bc4b"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:154ea7c52e32dce13065dbb20a4a6f0cc012b4f667ac90d648d36b12007fa9f7"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e562617a45b5a9da5be4abe72b971d4f00bf8555eb29bb91ec2ef2be348cd132"}, + {file = "pydantic_core-2.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:f23b55eb5464468f9e0e9a9935ce3ed2a870608d5f534025cd5536bca25b1402"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:e9121b4009339b0f751955baf4543a0bfd6bc3f8188f8056b1a25a2d45099934"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:0523aeb76e03f753b58be33b26540880bac5aa54422e4462404c432230543f33"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0e2959ef5d5b8dc9ef21e1a305a21a36e254e6a34432d00c72a92fdc5ecda5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da01bec0a26befab4898ed83b362993c844b9a607a86add78604186297eb047e"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f2e9072d71c1f6cfc79a36d4484c82823c560e6f5599c43c1ca6b5cdbd54f881"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f36a3489d9e28fe4b67be9992a23029c3cec0babc3bd9afb39f49844a8c721c5"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f64f82cc3443149292b32387086d02a6c7fb39b8781563e0ca7b8d7d9cf72bd7"}, + {file = "pydantic_core-2.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b4a6db486ac8e99ae696e09efc8b2b9fea67b63c8f88ba7a1a16c24a057a0776"}, + {file = "pydantic_core-2.10.1.tar.gz", hash = "sha256:0f8682dbdd2f67f8e1edddcbffcc29f60a6182b4901c367fc8c1c40d30bb0a82"}, ] [package.dependencies] @@ -2792,32 +2809,31 @@ files = [ [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pylint" -version = "3.1.0" +version = "3.2.5" description = "python code static checker" optional = false python-versions = ">=3.8.0" files = [ - {file = "pylint-3.1.0-py3-none-any.whl", hash = "sha256:507a5b60953874766d8a366e8e8c7af63e058b26345cfcb5f91f89d987fd6b74"}, - {file = "pylint-3.1.0.tar.gz", hash = "sha256:6a69beb4a6f63debebaab0a3477ecd0f559aa726af4954fc948c51f7a2549e23"}, + {file = "pylint-3.2.5-py3-none-any.whl", hash = "sha256:32cd6c042b5004b8e857d727708720c54a676d1e22917cf1a2df9b4d4868abd6"}, + {file = "pylint-3.2.5.tar.gz", hash = "sha256:e9b7171e242dcc6ebd0aaa7540481d1a72860748a0a7816b8fe6cf6c80a6fe7e"}, ] [package.dependencies] -astroid = ">=3.1.0,<=3.2.0-dev0" +astroid = ">=3.2.2,<=3.3.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ {version = ">=0.2", markers = "python_version < \"3.11\""}, @@ -2835,13 +2851,13 @@ testutils = ["gitpython (>3)"] [[package]] name = "pynndescent" -version = "0.5.12" +version = "0.5.13" description = "Nearest Neighbor Descent" optional = false python-versions = "*" files = [ - {file = "pynndescent-0.5.12-py3-none-any.whl", hash = "sha256:9023dc5fea520a4e84d0633ae735db97d2509da927bfa86c897e61f3315473c7"}, - {file = "pynndescent-0.5.12.tar.gz", hash = "sha256:0736291fcbbedfd5e0a3a280f71a63f8eb2f8bd9670d4c0b51ac1b4d081adf70"}, + {file = "pynndescent-0.5.13-py3-none-any.whl", hash = "sha256:69aabb8f394bc631b6ac475a1c7f3994c54adf3f51cd63b2730fefba5771b949"}, + {file = "pynndescent-0.5.13.tar.gz", hash = "sha256:d74254c0ee0a1eeec84597d5fe89fedcf778593eeabe32c2f97412934a9800fb"}, ] [package.dependencies] @@ -2867,22 +2883,22 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pyproject-api" -version = "1.6.1" +version = "1.7.1" description = "API to interact with the python pyproject.toml based projects" optional = false python-versions = ">=3.8" files = [ - {file = "pyproject_api-1.6.1-py3-none-any.whl", hash = "sha256:4c0116d60476b0786c88692cf4e325a9814965e2469c5998b830bba16b183675"}, - {file = "pyproject_api-1.6.1.tar.gz", hash = "sha256:1817dc018adc0d1ff9ca1ed8c60e1623d5aaca40814b953af14a9cf9a5cae538"}, + {file = "pyproject_api-1.7.1-py3-none-any.whl", hash = "sha256:2dc1654062c2b27733d8fd4cdda672b22fe8741ef1dde8e3a998a9547b071eeb"}, + {file = "pyproject_api-1.7.1.tar.gz", hash = "sha256:7ebc6cd10710f89f4cf2a2731710a98abce37ebff19427116ff2174c9236a827"}, ] [package.dependencies] -packaging = ">=23.1" +packaging = ">=24.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -docs = ["furo (>=2023.8.19)", "sphinx (<7.2)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "setuptools (>=68.1.2)", "wheel (>=0.41.2)"] +docs = ["furo (>=2024.5.6)", "sphinx-autodoc-typehints (>=2.2.1)"] +testing = ["covdefaults (>=2.3)", "pytest (>=8.2.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "setuptools (>=70.1)"] [[package]] name = "pytest" @@ -3129,7 +3145,6 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, @@ -3166,115 +3181,101 @@ files = [ [[package]] name = "regex" -version = "2024.4.16" +version = "2024.5.15" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "regex-2024.4.16-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fb83cc090eac63c006871fd24db5e30a1f282faa46328572661c0a24a2323a08"}, - {file = "regex-2024.4.16-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8c91e1763696c0eb66340c4df98623c2d4e77d0746b8f8f2bee2c6883fd1fe18"}, - {file = "regex-2024.4.16-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:10188fe732dec829c7acca7422cdd1bf57d853c7199d5a9e96bb4d40db239c73"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:956b58d692f235cfbf5b4f3abd6d99bf102f161ccfe20d2fd0904f51c72c4c66"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a70b51f55fd954d1f194271695821dd62054d949efd6368d8be64edd37f55c86"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c02fcd2bf45162280613d2e4a1ca3ac558ff921ae4e308ecb307650d3a6ee51"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4ed75ea6892a56896d78f11006161eea52c45a14994794bcfa1654430984b22"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd727ad276bb91928879f3aa6396c9a1d34e5e180dce40578421a691eeb77f47"}, - {file = "regex-2024.4.16-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7cbc5d9e8a1781e7be17da67b92580d6ce4dcef5819c1b1b89f49d9678cc278c"}, - {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:78fddb22b9ef810b63ef341c9fcf6455232d97cfe03938cbc29e2672c436670e"}, - {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:445ca8d3c5a01309633a0c9db57150312a181146315693273e35d936472df912"}, - {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:95399831a206211d6bc40224af1c635cb8790ddd5c7493e0bd03b85711076a53"}, - {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7731728b6568fc286d86745f27f07266de49603a6fdc4d19c87e8c247be452af"}, - {file = "regex-2024.4.16-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4facc913e10bdba42ec0aee76d029aedda628161a7ce4116b16680a0413f658a"}, - {file = "regex-2024.4.16-cp310-cp310-win32.whl", hash = "sha256:911742856ce98d879acbea33fcc03c1d8dc1106234c5e7d068932c945db209c0"}, - {file = "regex-2024.4.16-cp310-cp310-win_amd64.whl", hash = "sha256:e0a2df336d1135a0b3a67f3bbf78a75f69562c1199ed9935372b82215cddd6e2"}, - {file = "regex-2024.4.16-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1210365faba7c2150451eb78ec5687871c796b0f1fa701bfd2a4a25420482d26"}, - {file = "regex-2024.4.16-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9ab40412f8cd6f615bfedea40c8bf0407d41bf83b96f6fc9ff34976d6b7037fd"}, - {file = "regex-2024.4.16-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fd80d1280d473500d8086d104962a82d77bfbf2b118053824b7be28cd5a79ea5"}, - {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bb966fdd9217e53abf824f437a5a2d643a38d4fd5fd0ca711b9da683d452969"}, - {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20b7a68444f536365af42a75ccecb7ab41a896a04acf58432db9e206f4e525d6"}, - {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b74586dd0b039c62416034f811d7ee62810174bb70dffcca6439f5236249eb09"}, - {file = "regex-2024.4.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c8290b44d8b0af4e77048646c10c6e3aa583c1ca67f3b5ffb6e06cf0c6f0f89"}, - {file = "regex-2024.4.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2d80a6749724b37853ece57988b39c4e79d2b5fe2869a86e8aeae3bbeef9eb0"}, - {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3a1018e97aeb24e4f939afcd88211ace472ba566efc5bdf53fd8fd7f41fa7170"}, - {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:8d015604ee6204e76569d2f44e5a210728fa917115bef0d102f4107e622b08d5"}, - {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:3d5ac5234fb5053850d79dd8eb1015cb0d7d9ed951fa37aa9e6249a19aa4f336"}, - {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:0a38d151e2cdd66d16dab550c22f9521ba79761423b87c01dae0a6e9add79c0d"}, - {file = "regex-2024.4.16-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:159dc4e59a159cb8e4e8f8961eb1fa5d58f93cb1acd1701d8aff38d45e1a84a6"}, - {file = "regex-2024.4.16-cp311-cp311-win32.whl", hash = "sha256:ba2336d6548dee3117520545cfe44dc28a250aa091f8281d28804aa8d707d93d"}, - {file = "regex-2024.4.16-cp311-cp311-win_amd64.whl", hash = "sha256:8f83b6fd3dc3ba94d2b22717f9c8b8512354fd95221ac661784df2769ea9bba9"}, - {file = "regex-2024.4.16-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:80b696e8972b81edf0af2a259e1b2a4a661f818fae22e5fa4fa1a995fb4a40fd"}, - {file = "regex-2024.4.16-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d61ae114d2a2311f61d90c2ef1358518e8f05eafda76eaf9c772a077e0b465ec"}, - {file = "regex-2024.4.16-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8ba6745440b9a27336443b0c285d705ce73adb9ec90e2f2004c64d95ab5a7598"}, - {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6295004b2dd37b0835ea5c14a33e00e8cfa3c4add4d587b77287825f3418d310"}, - {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4aba818dcc7263852aabb172ec27b71d2abca02a593b95fa79351b2774eb1d2b"}, - {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0800631e565c47520aaa04ae38b96abc5196fe8b4aa9bd864445bd2b5848a7a"}, - {file = "regex-2024.4.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08dea89f859c3df48a440dbdcd7b7155bc675f2fa2ec8c521d02dc69e877db70"}, - {file = "regex-2024.4.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eeaa0b5328b785abc344acc6241cffde50dc394a0644a968add75fcefe15b9d4"}, - {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4e819a806420bc010489f4e741b3036071aba209f2e0989d4750b08b12a9343f"}, - {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:c2d0e7cbb6341e830adcbfa2479fdeebbfbb328f11edd6b5675674e7a1e37730"}, - {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:91797b98f5e34b6a49f54be33f72e2fb658018ae532be2f79f7c63b4ae225145"}, - {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:d2da13568eff02b30fd54fccd1e042a70fe920d816616fda4bf54ec705668d81"}, - {file = "regex-2024.4.16-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:370c68dc5570b394cbaadff50e64d705f64debed30573e5c313c360689b6aadc"}, - {file = "regex-2024.4.16-cp312-cp312-win32.whl", hash = "sha256:904c883cf10a975b02ab3478bce652f0f5346a2c28d0a8521d97bb23c323cc8b"}, - {file = "regex-2024.4.16-cp312-cp312-win_amd64.whl", hash = "sha256:785c071c982dce54d44ea0b79cd6dfafddeccdd98cfa5f7b86ef69b381b457d9"}, - {file = "regex-2024.4.16-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2f142b45c6fed48166faeb4303b4b58c9fcd827da63f4cf0a123c3480ae11fb"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e87ab229332ceb127a165612d839ab87795972102cb9830e5f12b8c9a5c1b508"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:81500ed5af2090b4a9157a59dbc89873a25c33db1bb9a8cf123837dcc9765047"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b340cccad138ecb363324aa26893963dcabb02bb25e440ebdf42e30963f1a4e0"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c72608e70f053643437bd2be0608f7f1c46d4022e4104d76826f0839199347a"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a01fe2305e6232ef3e8f40bfc0f0f3a04def9aab514910fa4203bafbc0bb4682"}, - {file = "regex-2024.4.16-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:03576e3a423d19dda13e55598f0fd507b5d660d42c51b02df4e0d97824fdcae3"}, - {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:549c3584993772e25f02d0656ac48abdda73169fe347263948cf2b1cead622f3"}, - {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:34422d5a69a60b7e9a07a690094e824b66f5ddc662a5fc600d65b7c174a05f04"}, - {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:5f580c651a72b75c39e311343fe6875d6f58cf51c471a97f15a938d9fe4e0d37"}, - {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:3399dd8a7495bbb2bacd59b84840eef9057826c664472e86c91d675d007137f5"}, - {file = "regex-2024.4.16-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d1f86f3f4e2388aa3310b50694ac44daefbd1681def26b4519bd050a398dc5a"}, - {file = "regex-2024.4.16-cp37-cp37m-win32.whl", hash = "sha256:dd5acc0a7d38fdc7a3a6fd3ad14c880819008ecb3379626e56b163165162cc46"}, - {file = "regex-2024.4.16-cp37-cp37m-win_amd64.whl", hash = "sha256:ba8122e3bb94ecda29a8de4cf889f600171424ea586847aa92c334772d200331"}, - {file = "regex-2024.4.16-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:743deffdf3b3481da32e8a96887e2aa945ec6685af1cfe2bcc292638c9ba2f48"}, - {file = "regex-2024.4.16-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7571f19f4a3fd00af9341c7801d1ad1967fc9c3f5e62402683047e7166b9f2b4"}, - {file = "regex-2024.4.16-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:df79012ebf6f4efb8d307b1328226aef24ca446b3ff8d0e30202d7ebcb977a8c"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e757d475953269fbf4b441207bb7dbdd1c43180711b6208e129b637792ac0b93"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4313ab9bf6a81206c8ac28fdfcddc0435299dc88cad12cc6305fd0e78b81f9e4"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d83c2bc678453646f1a18f8db1e927a2d3f4935031b9ad8a76e56760461105dd"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9df1bfef97db938469ef0a7354b2d591a2d438bc497b2c489471bec0e6baf7c4"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62120ed0de69b3649cc68e2965376048793f466c5a6c4370fb27c16c1beac22d"}, - {file = "regex-2024.4.16-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c2ef6f7990b6e8758fe48ad08f7e2f66c8f11dc66e24093304b87cae9037bb4a"}, - {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8fc6976a3395fe4d1fbeb984adaa8ec652a1e12f36b56ec8c236e5117b585427"}, - {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:03e68f44340528111067cecf12721c3df4811c67268b897fbe695c95f860ac42"}, - {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ec7e0043b91115f427998febaa2beb82c82df708168b35ece3accb610b91fac1"}, - {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:c21fc21a4c7480479d12fd8e679b699f744f76bb05f53a1d14182b31f55aac76"}, - {file = "regex-2024.4.16-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:12f6a3f2f58bb7344751919a1876ee1b976fe08b9ffccb4bbea66f26af6017b9"}, - {file = "regex-2024.4.16-cp38-cp38-win32.whl", hash = "sha256:479595a4fbe9ed8f8f72c59717e8cf222da2e4c07b6ae5b65411e6302af9708e"}, - {file = "regex-2024.4.16-cp38-cp38-win_amd64.whl", hash = "sha256:0534b034fba6101611968fae8e856c1698da97ce2efb5c2b895fc8b9e23a5834"}, - {file = "regex-2024.4.16-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a7ccdd1c4a3472a7533b0a7aa9ee34c9a2bef859ba86deec07aff2ad7e0c3b94"}, - {file = "regex-2024.4.16-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6f2f017c5be19984fbbf55f8af6caba25e62c71293213f044da3ada7091a4455"}, - {file = "regex-2024.4.16-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:803b8905b52de78b173d3c1e83df0efb929621e7b7c5766c0843704d5332682f"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:684008ec44ad275832a5a152f6e764bbe1914bea10968017b6feaecdad5736e0"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:65436dce9fdc0aeeb0a0effe0839cb3d6a05f45aa45a4d9f9c60989beca78b9c"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea355eb43b11764cf799dda62c658c4d2fdb16af41f59bb1ccfec517b60bcb07"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98c1165f3809ce7774f05cb74e5408cd3aa93ee8573ae959a97a53db3ca3180d"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cccc79a9be9b64c881f18305a7c715ba199e471a3973faeb7ba84172abb3f317"}, - {file = "regex-2024.4.16-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:00169caa125f35d1bca6045d65a662af0202704489fada95346cfa092ec23f39"}, - {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6cc38067209354e16c5609b66285af17a2863a47585bcf75285cab33d4c3b8df"}, - {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:23cff1b267038501b179ccbbd74a821ac4a7192a1852d1d558e562b507d46013"}, - {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:b9d320b3bf82a39f248769fc7f188e00f93526cc0fe739cfa197868633d44701"}, - {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:89ec7f2c08937421bbbb8b48c54096fa4f88347946d4747021ad85f1b3021b3c"}, - {file = "regex-2024.4.16-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4918fd5f8b43aa7ec031e0fef1ee02deb80b6afd49c85f0790be1dc4ce34cb50"}, - {file = "regex-2024.4.16-cp39-cp39-win32.whl", hash = "sha256:684e52023aec43bdf0250e843e1fdd6febbe831bd9d52da72333fa201aaa2335"}, - {file = "regex-2024.4.16-cp39-cp39-win_amd64.whl", hash = "sha256:e697e1c0238133589e00c244a8b676bc2cfc3ab4961318d902040d099fec7483"}, - {file = "regex-2024.4.16.tar.gz", hash = "sha256:fa454d26f2e87ad661c4f0c5a5fe4cf6aab1e307d1b94f16ffdfcb089ba685c0"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, + {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, + {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, + {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, + {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, + {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, + {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, + {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, + {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, + {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, + {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, + {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, ] [[package]] name = "requests" -version = "2.31.0" +version = "2.32.3" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, - {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] @@ -3314,24 +3315,24 @@ python-versions = ">=3.6" files = [ {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b42169467c42b692c19cf539c38d4602069d8c1505e97b86387fcf7afb766e1d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:07238db9cbdf8fc1e9de2489a4f68474e70dffcb32232db7c08fa61ca0c7c462"}, + {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d92f81886165cb14d7b067ef37e142256f1c6a90a65cd156b063a43da1708cfd"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fff3573c2db359f091e1589c3d7c5fc2f86f5bdb6f24252c2d8e539d4e45f412"}, - {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-manylinux_2_24_aarch64.whl", hash = "sha256:aa2267c6a303eb483de8d02db2871afb5c5fc15618d894300b88958f729ad74f"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:840f0c7f194986a63d2c2465ca63af8ccbbc90ab1c6001b1978f05119b5e7334"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:024cfe1fc7c7f4e1aff4a81e718109e13409767e4f871443cbff3dba3578203d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win32.whl", hash = "sha256:c69212f63169ec1cfc9bb44723bf2917cbbd8f6191a00ef3410f5a7fe300722d"}, {file = "ruamel.yaml.clib-0.2.8-cp310-cp310-win_amd64.whl", hash = "sha256:cabddb8d8ead485e255fe80429f833172b4cadf99274db39abc080e068cbcc31"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bef08cd86169d9eafb3ccb0a39edb11d8e25f3dae2b28f5c52fd997521133069"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:b16420e621d26fdfa949a8b4b47ade8810c56002f5389970db4ddda51dbff248"}, + {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:b5edda50e5e9e15e54a6a8a0070302b00c518a9d32accc2346ad6c984aacd279"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:25c515e350e5b739842fc3228d662413ef28f295791af5e5110b543cf0b57d9b"}, - {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-manylinux_2_24_aarch64.whl", hash = "sha256:1707814f0d9791df063f8c19bb51b0d1278b8e9a2353abbb676c2f685dee6afe"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:46d378daaac94f454b3a0e3d8d78cafd78a026b1d71443f4966c696b48a6d899"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09b055c05697b38ecacb7ac50bdab2240bfca1a0c4872b0fd309bb07dc9aa3a9"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win32.whl", hash = "sha256:53a300ed9cea38cf5a2a9b069058137c2ca1ce658a874b79baceb8f892f915a7"}, {file = "ruamel.yaml.clib-0.2.8-cp311-cp311-win_amd64.whl", hash = "sha256:c2a72e9109ea74e511e29032f3b670835f8a59bbdc9ce692c5b4ed91ccf1eedb"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ebc06178e8821efc9692ea7544aa5644217358490145629914d8020042c24aa1"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:edaef1c1200c4b4cb914583150dcaa3bc30e592e907c01117c08b13a07255ec2"}, + {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:7048c338b6c86627afb27faecf418768acb6331fc24cfa56c93e8c9780f815fa"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d176b57452ab5b7028ac47e7b3cf644bcfdc8cacfecf7e71759f7f51a59e5c92"}, - {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-manylinux_2_24_aarch64.whl", hash = "sha256:1dc67314e7e1086c9fdf2680b7b6c2be1c0d8e3a8279f2e993ca2a7545fecf62"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3213ece08ea033eb159ac52ae052a4899b56ecc124bb80020d9bbceeb50258e9"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:aab7fd643f71d7946f2ee58cc88c9b7bfc97debd71dcc93e03e2d174628e7e2d"}, {file = "ruamel.yaml.clib-0.2.8-cp312-cp312-win32.whl", hash = "sha256:5c365d91c88390c8d0a8545df0b5857172824b1c604e867161e6b3d59a827eaa"}, @@ -3339,7 +3340,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a5aa27bad2bb83670b71683aae140a1f52b0857a2deff56ad3f6c13a017a26ed"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c58ecd827313af6864893e7af0a3bb85fd529f862b6adbefe14643947cfe2942"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f481f16baec5290e45aebdc2a5168ebc6d35189ae6fea7a58787613a25f6e875"}, - {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_24_aarch64.whl", hash = "sha256:77159f5d5b5c14f7c34073862a6b7d34944075d9f93e681638f6d753606c6ce6"}, + {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:3fcc54cb0c8b811ff66082de1680b4b14cf8a81dce0d4fbf665c2265a81e07a1"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7f67a1ee819dc4562d444bbafb135832b0b909f81cc90f7aa00260968c9ca1b3"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4ecbf9c3e19f9562c7fdd462e8d18dd902a47ca046a2e64dba80699f0b6c09b7"}, {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:87ea5ff66d8064301a154b3933ae406b0863402a799b16e4a1d24d9fbbcbe0d3"}, @@ -3347,7 +3348,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp37-cp37m-win_amd64.whl", hash = "sha256:3f215c5daf6a9d7bbed4a0a4f760f3113b10e82ff4c5c44bec20a68c8014f675"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337"}, - {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1"}, + {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:665f58bfd29b167039f714c6998178d27ccd83984084c286110ef26b230f259f"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28"}, {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d"}, @@ -3355,7 +3356,7 @@ files = [ {file = "ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03d1162b6d1df1caa3a4bd27aa51ce17c9afc2046c31b0ad60a0a96ec22f8001"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba64af9fa9cebe325a62fa398760f5c7206b215201b0ec825005f1b18b9bccf"}, - {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_24_aarch64.whl", hash = "sha256:a1a45e0bb052edf6a1d3a93baef85319733a888363938e1fc9924cb00c8df24c"}, + {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:9eb5dee2772b0f704ca2e45b1713e4e5198c18f515b52743576d196348f374d3"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:da09ad1c359a728e112d60116f626cc9f29730ff3e0e7db72b9a2dbc2e4beed5"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:184565012b60405d93838167f425713180b949e9d8dd0bbc7b49f074407c5a8b"}, {file = "ruamel.yaml.clib-0.2.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a75879bacf2c987c003368cf14bed0ffe99e8e85acfa6c0bfffc21a090f16880"}, @@ -3366,39 +3367,40 @@ files = [ [[package]] name = "ruff" -version = "0.4.1" +version = "0.5.1" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:2d9ef6231e3fbdc0b8c72404a1a0c46fd0dcea84efca83beb4681c318ea6a953"}, - {file = "ruff-0.4.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9485f54a7189e6f7433e0058cf8581bee45c31a25cd69009d2a040d1bd4bfaef"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2921ac03ce1383e360e8a95442ffb0d757a6a7ddd9a5be68561a671e0e5807e"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eec8d185fe193ad053eda3a6be23069e0c8ba8c5d20bc5ace6e3b9e37d246d3f"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:baa27d9d72a94574d250f42b7640b3bd2edc4c58ac8ac2778a8c82374bb27984"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f1ee41580bff1a651339eb3337c20c12f4037f6110a36ae4a2d864c52e5ef954"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0926cefb57fc5fced629603fbd1a23d458b25418681d96823992ba975f050c2b"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6e37f2e3cd74496a74af9a4fa67b547ab3ca137688c484749189bf3a686ceb"}, - {file = "ruff-0.4.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd703a5975ac1998c2cc5e9494e13b28f31e66c616b0a76e206de2562e0843c"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:b92f03b4aa9fa23e1799b40f15f8b95cdc418782a567d6c43def65e1bbb7f1cf"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:1c859f294f8633889e7d77de228b203eb0e9a03071b72b5989d89a0cf98ee262"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b34510141e393519a47f2d7b8216fec747ea1f2c81e85f076e9f2910588d4b64"}, - {file = "ruff-0.4.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:6e68d248ed688b9d69fd4d18737edcbb79c98b251bba5a2b031ce2470224bdf9"}, - {file = "ruff-0.4.1-py3-none-win32.whl", hash = "sha256:b90506f3d6d1f41f43f9b7b5ff845aeefabed6d2494307bc7b178360a8805252"}, - {file = "ruff-0.4.1-py3-none-win_amd64.whl", hash = "sha256:c7d391e5936af5c9e252743d767c564670dc3889aff460d35c518ee76e4b26d7"}, - {file = "ruff-0.4.1-py3-none-win_arm64.whl", hash = "sha256:a1eaf03d87e6a7cd5e661d36d8c6e874693cb9bc3049d110bc9a97b350680c43"}, - {file = "ruff-0.4.1.tar.gz", hash = "sha256:d592116cdbb65f8b1b7e2a2b48297eb865f6bdc20641879aa9d7b9c11d86db79"}, + {file = "ruff-0.5.1-py3-none-linux_armv6l.whl", hash = "sha256:6ecf968fcf94d942d42b700af18ede94b07521bd188aaf2cd7bc898dd8cb63b6"}, + {file = "ruff-0.5.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:204fb0a472f00f2e6280a7c8c7c066e11e20e23a37557d63045bf27a616ba61c"}, + {file = "ruff-0.5.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d235968460e8758d1e1297e1de59a38d94102f60cafb4d5382033c324404ee9d"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38beace10b8d5f9b6bdc91619310af6d63dd2019f3fb2d17a2da26360d7962fa"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e478d2f09cf06add143cf8c4540ef77b6599191e0c50ed976582f06e588c994"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0368d765eec8247b8550251c49ebb20554cc4e812f383ff9f5bf0d5d94190b0"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:3a9a9a1b582e37669b0138b7c1d9d60b9edac880b80eb2baba6d0e566bdeca4d"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bdd9f723e16003623423affabcc0a807a66552ee6a29f90eddad87a40c750b78"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:be9fd62c1e99539da05fcdc1e90d20f74aec1b7a1613463ed77870057cd6bd96"}, + {file = "ruff-0.5.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e216fc75a80ea1fbd96af94a6233d90190d5b65cc3d5dfacf2bd48c3e067d3e1"}, + {file = "ruff-0.5.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:c4c2112e9883a40967827d5c24803525145e7dab315497fae149764979ac7929"}, + {file = "ruff-0.5.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:dfaf11c8a116394da3b65cd4b36de30d8552fa45b8119b9ef5ca6638ab964fa3"}, + {file = "ruff-0.5.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d7ceb9b2fe700ee09a0c6b192c5ef03c56eb82a0514218d8ff700f6ade004108"}, + {file = "ruff-0.5.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:bac6288e82f6296f82ed5285f597713acb2a6ae26618ffc6b429c597b392535c"}, + {file = "ruff-0.5.1-py3-none-win32.whl", hash = "sha256:5c441d9c24ec09e1cb190a04535c5379b36b73c4bc20aa180c54812c27d1cca4"}, + {file = "ruff-0.5.1-py3-none-win_amd64.whl", hash = "sha256:b1789bf2cd3d1b5a7d38397cac1398ddf3ad7f73f4de01b1e913e2abc7dfc51d"}, + {file = "ruff-0.5.1-py3-none-win_arm64.whl", hash = "sha256:2875b7596a740cbbd492f32d24be73e545a4ce0a3daf51e4f4e609962bfd3cd2"}, + {file = "ruff-0.5.1.tar.gz", hash = "sha256:3164488aebd89b1745b47fd00604fb4358d774465f20d1fcd907f9c0fc1b0655"}, ] [[package]] name = "scanpy" -version = "1.10.1" +version = "1.10.2" description = "Single-Cell Analysis in Python." optional = false python-versions = ">=3.9" files = [ - {file = "scanpy-1.10.1-py3-none-any.whl", hash = "sha256:399c6a0fc9c8b85500cfab87f79daf8684782a6bb5303eb680c0ac99da14e4d8"}, - {file = "scanpy-1.10.1.tar.gz", hash = "sha256:4a9194d94985dee41d914fc9438f0b502dfacf54796d0501e06a5978d709c7f6"}, + {file = "scanpy-1.10.2-py3-none-any.whl", hash = "sha256:2ad4348e214b1dd0db5a4cf21d73695be11b8f5f0ef47508d3075525d9d1c7c6"}, + {file = "scanpy-1.10.2.tar.gz", hash = "sha256:5d1649e73ac35e3ad02b455d8a16fdb16d4c8dc27330e696f4cd4e27f2d879be"}, ] [package.dependencies] @@ -3410,7 +3412,7 @@ matplotlib = ">=3.6" natsort = "*" networkx = ">=2.7" numba = ">=0.56" -numpy = ">=1.23" +numpy = ">=1.23,<2" packaging = ">=21.3" pandas = ">=1.5" patsy = "*" @@ -3426,9 +3428,9 @@ umap-learn = ">0.5.0" [package.extras] bbknn = ["bbknn"] dask = ["dask[array] (>=2022.09.2)"] -dask-ml = ["dask-ml", "scanpy[dask]"] +dask-ml = ["dask-ml", "dask[array] (>=2022.09.2)"] dev = ["pre-commit", "setuptools-scm"] -doc = ["dask", "ipython (>=7.20)", "matplotlib (!=3.6.1)", "myst-nb (>=1)", "myst-parser (>=2)", "nbsphinx (>=0.9)", "readthedocs-sphinx-search", "sam-algorithm", "scanpy[paga]", "scanpydoc (>=0.13.4)", "setuptools", "sphinx (>=7)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx-book-theme (>=1.1.0)", "sphinx-copybutton", "sphinx-design", "sphinxcontrib-bibtex", "sphinxext-opengraph"] +doc = ["dask", "igraph", "ipython (>=7.20)", "matplotlib (!=3.6.1)", "myst-nb (>=1)", "myst-parser (>=2)", "nbsphinx (>=0.9)", "readthedocs-sphinx-search", "sam-algorithm", "scanpydoc (>=0.13.4)", "setuptools", "sphinx (>=7)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx-book-theme (>=1.1.0)", "sphinx-copybutton", "sphinx-design", "sphinxcontrib-bibtex", "sphinxext-opengraph"] harmony = ["harmonypy"] leiden = ["igraph (>=0.10)", "leidenalg (>=0.9.0)"] louvain = ["igraph", "louvain (>=0.6.0,!=0.6.2)"] @@ -3438,51 +3440,54 @@ rapids = ["cudf (>=0.9)", "cugraph (>=0.9)", "cuml (>=0.9)"] scanorama = ["scanorama"] scrublet = ["scikit-image"] skmisc = ["scikit-misc (>=0.1.3)"] -test = ["scanpy[dask]", "scanpy[leiden]", "scanpy[scrublet]", "scanpy[test-min]", "zarr"] -test-full = ["scanpy[dask-ml]", "scanpy[harmony]", "scanpy[louvain]", "scanpy[magic]", "scanpy[scanorama]", "scanpy[skmisc]", "scanpy[test]"] -test-min = ["profimp", "pytest (>=7.4.2)", "pytest-cov", "pytest-mock", "pytest-nunit"] +test = ["dask[array] (>=2022.09.2)", "igraph (>=0.10)", "leidenalg (>=0.9.0)", "profimp", "pytest (>=8.2)", "pytest-cov", "pytest-mock", "pytest-nunit", "scikit-image", "zarr"] +test-full = ["dask-ml", "dask[array] (>=2022.09.2)", "harmonypy", "igraph", "igraph (>=0.10)", "leidenalg (>=0.9.0)", "louvain (>=0.6.0,!=0.6.2)", "magic-impute (>=2.0)", "profimp", "pytest (>=8.2)", "pytest-cov", "pytest-mock", "pytest-nunit", "scanorama", "scikit-image", "scikit-misc (>=0.1.3)", "zappy", "zarr"] +test-min = ["profimp", "pytest (>=8.2)", "pytest-cov", "pytest-mock", "pytest-nunit"] [[package]] name = "scikit-learn" -version = "1.4.2" +version = "1.5.1" description = "A set of python modules for machine learning and data mining" optional = false python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.4.2.tar.gz", hash = "sha256:daa1c471d95bad080c6e44b4946c9390a4842adc3082572c20e4f8884e39e959"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8539a41b3d6d1af82eb629f9c57f37428ff1481c1e34dddb3b9d7af8ede67ac5"}, - {file = "scikit_learn-1.4.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:68b8404841f944a4a1459b07198fa2edd41a82f189b44f3e1d55c104dbc2e40c"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81bf5d8bbe87643103334032dd82f7419bc8c8d02a763643a6b9a5c7288c5054"}, - {file = "scikit_learn-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36f0ea5d0f693cb247a073d21a4123bdf4172e470e6d163c12b74cbb1536cf38"}, - {file = "scikit_learn-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:87440e2e188c87db80ea4023440923dccbd56fbc2d557b18ced00fef79da0727"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:45dee87ac5309bb82e3ea633955030df9bbcb8d2cdb30383c6cd483691c546cc"}, - {file = "scikit_learn-1.4.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1d0b25d9c651fd050555aadd57431b53d4cf664e749069da77f3d52c5ad14b3b"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0203c368058ab92efc6168a1507d388d41469c873e96ec220ca8e74079bf62e"}, - {file = "scikit_learn-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44c62f2b124848a28fd695db5bc4da019287abf390bfce602ddc8aa1ec186aae"}, - {file = "scikit_learn-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:5cd7b524115499b18b63f0c96f4224eb885564937a0b3477531b2b63ce331904"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90378e1747949f90c8f385898fff35d73193dfcaec3dd75d6b542f90c4e89755"}, - {file = "scikit_learn-1.4.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ff4effe5a1d4e8fed260a83a163f7dbf4f6087b54528d8880bab1d1377bd78be"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:671e2f0c3f2c15409dae4f282a3a619601fa824d2c820e5b608d9d775f91780c"}, - {file = "scikit_learn-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d36d0bc983336bbc1be22f9b686b50c964f593c8a9a913a792442af9bf4f5e68"}, - {file = "scikit_learn-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:d762070980c17ba3e9a4a1e043ba0518ce4c55152032f1af0ca6f39b376b5928"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9993d5e78a8148b1d0fdf5b15ed92452af5581734129998c26f481c46586d68"}, - {file = "scikit_learn-1.4.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:426d258fddac674fdf33f3cb2d54d26f49406e2599dbf9a32b4d1696091d4256"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5460a1a5b043ae5ae4596b3126a4ec33ccba1b51e7ca2c5d36dac2169f62ab1d"}, - {file = "scikit_learn-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49d64ef6cb8c093d883e5a36c4766548d974898d378e395ba41a806d0e824db8"}, - {file = "scikit_learn-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c97a50b05c194be9146d61fe87dbf8eac62b203d9e87a3ccc6ae9aed2dfaf361"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:781586c414f8cc58e71da4f3d7af311e0505a683e112f2f62919e3019abd3745"}, + {file = "scikit_learn-1.5.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5b213bc29cc30a89a3130393b0e39c847a15d769d6e59539cd86b75d276b1a7"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff4ba34c2abff5ec59c803ed1d97d61b036f659a17f55be102679e88f926fac"}, + {file = "scikit_learn-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:161808750c267b77b4a9603cf9c93579c7a74ba8486b1336034c2f1579546d21"}, + {file = "scikit_learn-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:10e49170691514a94bb2e03787aa921b82dbc507a4ea1f20fd95557862c98dc1"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:154297ee43c0b83af12464adeab378dee2d0a700ccd03979e2b821e7dd7cc1c2"}, + {file = "scikit_learn-1.5.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b5e865e9bd59396220de49cb4a57b17016256637c61b4c5cc81aaf16bc123bbe"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:909144d50f367a513cee6090873ae582dba019cb3fca063b38054fa42704c3a4"}, + {file = "scikit_learn-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:689b6f74b2c880276e365fe84fe4f1befd6a774f016339c65655eaff12e10cbf"}, + {file = "scikit_learn-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:9a07f90846313a7639af6a019d849ff72baadfa4c74c778821ae0fad07b7275b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5944ce1faada31c55fb2ba20a5346b88e36811aab504ccafb9f0339e9f780395"}, + {file = "scikit_learn-1.5.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0828673c5b520e879f2af6a9e99eee0eefea69a2188be1ca68a6121b809055c1"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:508907e5f81390e16d754e8815f7497e52139162fd69c4fdbd2dfa5d6cc88915"}, + {file = "scikit_learn-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97625f217c5c0c5d0505fa2af28ae424bd37949bb2f16ace3ff5f2f81fb4498b"}, + {file = "scikit_learn-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:da3f404e9e284d2b0a157e1b56b6566a34eb2798205cba35a211df3296ab7a74"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:88e0672c7ac21eb149d409c74cc29f1d611d5158175846e7a9c2427bd12b3956"}, + {file = "scikit_learn-1.5.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:7b073a27797a283187a4ef4ee149959defc350b46cbf63a84d8514fe16b69855"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b59e3e62d2be870e5c74af4e793293753565c7383ae82943b83383fdcf5cc5c1"}, + {file = "scikit_learn-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bd8d3a19d4bd6dc5a7d4f358c8c3a60934dc058f363c34c0ac1e9e12a31421d"}, + {file = "scikit_learn-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:5f57428de0c900a98389c4a433d4a3cf89de979b3aa24d1c1d251802aa15e44d"}, + {file = "scikit_learn-1.5.1.tar.gz", hash = "sha256:0ea5d40c0e3951df445721927448755d3fe1d80833b0b7308ebff5d2a45e6414"}, ] [package.dependencies] joblib = ">=1.2.0" numpy = ">=1.19.5" scipy = ">=1.6.0" -threadpoolctl = ">=2.0.0" +threadpoolctl = ">=3.1.0" [package.extras] -benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "pandas (>=1.1.5)"] +build = ["cython (>=3.0.10)", "meson-python (>=0.16.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory_profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pydata-sphinx-theme (>=0.15.3)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=7.3.7)", "sphinx-copybutton (>=0.5.2)", "sphinx-design (>=0.5.0)", "sphinx-gallery (>=0.16.0)", "sphinx-prompt (>=1.4.0)", "sphinx-remove-toctrees (>=1.0.0.post1)", "sphinxcontrib-sass (>=0.3.4)", "sphinxext-opengraph (>=0.9.1)"] examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] +install = ["joblib (>=1.2.0)", "numpy (>=1.19.5)", "scipy (>=1.6.0)", "threadpoolctl (>=3.1.0)"] +maintenance = ["conda-lock (==2.5.6)"] +tests = ["black (>=24.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.9)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.20.23)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.2.1)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" @@ -3573,19 +3578,18 @@ stdlib_list = "*" [[package]] name = "setuptools" -version = "69.5.1" +version = "70.2.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, - {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, + {file = "setuptools-70.2.0-py3-none-any.whl", hash = "sha256:b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05"}, + {file = "setuptools-70.2.0.tar.gz", hash = "sha256:bd63e505105011b25c3c11f753f7e3b8465ea739efddaccef8f0efac2137bac1"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" @@ -3717,13 +3721,13 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"] [[package]] name = "sphinx-design" -version = "0.5.0" +version = "0.6.0" description = "A sphinx extension for designing beautiful, view size responsive web components." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinx_design-0.5.0-py3-none-any.whl", hash = "sha256:1af1267b4cea2eedd6724614f19dcc88fe2e15aff65d06b2f6252cee9c4f4c1e"}, - {file = "sphinx_design-0.5.0.tar.gz", hash = "sha256:e8e513acea6f92d15c6de3b34e954458f245b8e761b45b63950f65373352ab00"}, + {file = "sphinx_design-0.6.0-py3-none-any.whl", hash = "sha256:e9bd07eecec82eb07ff72cb50fc3624e186b04f5661270bc7b62db86c7546e95"}, + {file = "sphinx_design-0.6.0.tar.gz", hash = "sha256:ec8e3c5c59fed4049b3a5a2e209360feab31829346b5f6a0c7c342b894082192"}, ] [package.dependencies] @@ -3732,11 +3736,12 @@ sphinx = ">=5,<8" [package.extras] code-style = ["pre-commit (>=3,<4)"] rtd = ["myst-parser (>=1,<3)"] -testing = ["myst-parser (>=1,<3)", "pytest (>=7.1,<8.0)", "pytest-cov", "pytest-regressions"] -theme-furo = ["furo (>=2023.7.0,<2023.8.0)"] -theme-pydata = ["pydata-sphinx-theme (>=0.13.0,<0.14.0)"] -theme-rtd = ["sphinx-rtd-theme (>=1.0,<2.0)"] -theme-sbt = ["sphinx-book-theme (>=1.0,<2.0)"] +testing = ["defusedxml", "myst-parser (>=1,<3)", "pytest (>=7.1,<8.0)", "pytest-cov", "pytest-regressions"] +theme-furo = ["furo (>=2024.5.4,<2024.6.0)"] +theme-im = ["sphinx-immaterial (>=0.11.11,<0.12.0)"] +theme-pydata = ["pydata-sphinx-theme (>=0.15.2,<0.16.0)"] +theme-rtd = ["sphinx-rtd-theme (>=2.0,<3.0)"] +theme-sbt = ["sphinx-book-theme (>=1.1,<2.0)"] [[package]] name = "sphinx-inline-tabs" @@ -3915,17 +3920,18 @@ test = ["coverage[toml]", "pytest", "pytest-cov"] [[package]] name = "tenacity" -version = "8.2.3" +version = "8.5.0" description = "Retry code until it succeeds" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "tenacity-8.2.3-py3-none-any.whl", hash = "sha256:ce510e327a630c9e1beaf17d42e6ffacc88185044ad85cf74c0a8887c6a0f88c"}, - {file = "tenacity-8.2.3.tar.gz", hash = "sha256:5398ef0d78e63f40007c1fb4c0bff96e1911394d2fa8d194f77619c05ff6cc8a"}, + {file = "tenacity-8.5.0-py3-none-any.whl", hash = "sha256:b594c2a5945830c267ce6b79a166228323ed52718f30302c1359836112346687"}, + {file = "tenacity-8.5.0.tar.gz", hash = "sha256:8bc6c0c8a09b31e6cad13c47afbed1a567518250a9a171418582ed8d9c20ca78"}, ] [package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] +doc = ["reno", "sphinx"] +test = ["pytest", "tornado (>=4.5)", "typeguard"] [[package]] name = "text-unidecode" @@ -3940,13 +3946,13 @@ files = [ [[package]] name = "threadpoolctl" -version = "3.4.0" +version = "3.5.0" description = "threadpoolctl" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.4.0-py3-none-any.whl", hash = "sha256:8f4c689a65b23e5ed825c8436a92b818aac005e0f3715f6a1664d7c7ee29d262"}, - {file = "threadpoolctl-3.4.0.tar.gz", hash = "sha256:f11b491a03661d6dd7ef692dd422ab34185d982466c49c8f98c8f716b5c93196"}, + {file = "threadpoolctl-3.5.0-py3-none-any.whl", hash = "sha256:56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467"}, + {file = "threadpoolctl-3.5.0.tar.gz", hash = "sha256:082433502dd922bf738de0d8bcc4fdcbf0979ff44c42bd40f5af8a282f6fa107"}, ] [[package]] @@ -3962,41 +3968,41 @@ files = [ [[package]] name = "tomlkit" -version = "0.12.4" +version = "0.12.5" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.12.4-py3-none-any.whl", hash = "sha256:5cd82d48a3dd89dee1f9d64420aa20ae65cfbd00668d6f094d7578a78efbb77b"}, - {file = "tomlkit-0.12.4.tar.gz", hash = "sha256:7ca1cfc12232806517a8515047ba66a19369e71edf2439d0f5824f91032b6cc3"}, + {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, + {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, ] [[package]] name = "tox" -version = "4.14.2" +version = "4.16.0" description = "tox is a generic virtualenv management and test command line tool" optional = false python-versions = ">=3.8" files = [ - {file = "tox-4.14.2-py3-none-any.whl", hash = "sha256:2900c4eb7b716af4a928a7fdc2ed248ad6575294ed7cfae2ea41203937422847"}, - {file = "tox-4.14.2.tar.gz", hash = "sha256:0defb44f6dafd911b61788325741cc6b2e12ea71f987ac025ad4d649f1f1a104"}, + {file = "tox-4.16.0-py3-none-any.whl", hash = "sha256:61e101061b977b46cf00093d4319438055290ad0009f84497a07bf2d2d7a06d0"}, + {file = "tox-4.16.0.tar.gz", hash = "sha256:43499656f9949edb681c0f907f86fbfee98677af9919d8b11ae5ad77cb800748"}, ] [package.dependencies] -cachetools = ">=5.3.2" +cachetools = ">=5.3.3" chardet = ">=5.2" colorama = ">=0.4.6" -filelock = ">=3.13.1" -packaging = ">=23.2" -platformdirs = ">=4.1" -pluggy = ">=1.3" -pyproject-api = ">=1.6.1" +filelock = ">=3.15.4" +packaging = ">=24.1" +platformdirs = ">=4.2.2" +pluggy = ">=1.5" +pyproject-api = ">=1.7.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -virtualenv = ">=20.25" +virtualenv = ">=20.26.3" [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.25.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.11)"] -testing = ["build[virtualenv] (>=1.0.3)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=8.0.2)", "distlib (>=0.3.8)", "flaky (>=3.7)", "hatch-vcs (>=0.4)", "hatchling (>=1.21)", "psutil (>=5.9.7)", "pytest (>=7.4.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-xdist (>=3.5)", "re-assert (>=1.1)", "time-machine (>=2.13)", "wheel (>=0.42)"] +docs = ["furo (>=2024.5.6)", "sphinx (>=7.3.7)", "sphinx-argparse-cli (>=1.16)", "sphinx-autodoc-typehints (>=2.2.2)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.11)"] +testing = ["build[virtualenv] (>=1.2.1)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.2)", "devpi-process (>=1)", "diff-cover (>=9.1)", "distlib (>=0.3.8)", "flaky (>=3.8.1)", "hatch-vcs (>=0.4)", "hatchling (>=1.25)", "psutil (>=6)", "pytest (>=8.2.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)", "pytest-xdist (>=3.6.1)", "re-assert (>=1.1)", "setuptools (>=70.2)", "time-machine (>=2.14.2)", "wheel (>=0.43)"] [[package]] name = "tox-current-env" @@ -4017,13 +4023,13 @@ tests = ["packaging", "pytest", "pytest-xdist"] [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.4" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, ] [package.dependencies] @@ -4037,13 +4043,13 @@ telegram = ["requests"] [[package]] name = "typing-extensions" -version = "4.11.0" +version = "4.12.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, - {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, ] [[package]] @@ -4103,13 +4109,13 @@ setuptools = ">=1.1" [[package]] name = "urllib3" -version = "2.2.1" +version = "2.2.2" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=3.8" files = [ - {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, - {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, + {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, + {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, ] [package.extras] @@ -4120,13 +4126,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.3" +version = "20.26.3" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.3-py3-none-any.whl", hash = "sha256:8aac4332f2ea6ef519c648d0bc48a5b1d324994753519919bddbb1aff25a104e"}, - {file = "virtualenv-20.25.3.tar.gz", hash = "sha256:7bb554bbdfeaacc3349fa614ea5bff6ac300fc7c335e9facf3a3bcfc703f45be"}, + {file = "virtualenv-20.26.3-py3-none-any.whl", hash = "sha256:8cc4a31139e796e9a7de2cd5cf2489de1217193116a8fd42328f1bd65f434589"}, + {file = "virtualenv-20.26.3.tar.gz", hash = "sha256:4c43a2a236279d9ea36a0d76f98d84bd6ca94ac4e0f4a3b9d46d05e10fea542a"}, ] [package.dependencies] @@ -4140,40 +4146,43 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "watchdog" -version = "4.0.0" +version = "4.0.1" description = "Filesystem events monitoring" optional = false python-versions = ">=3.8" files = [ - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:39cb34b1f1afbf23e9562501673e7146777efe95da24fab5707b88f7fb11649b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c522392acc5e962bcac3b22b9592493ffd06d1fc5d755954e6be9f4990de932b"}, - {file = "watchdog-4.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6c47bdd680009b11c9ac382163e05ca43baf4127954c5f6d0250e7d772d2b80c"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8350d4055505412a426b6ad8c521bc7d367d1637a762c70fdd93a3a0d595990b"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c17d98799f32e3f55f181f19dd2021d762eb38fdd381b4a748b9f5a36738e935"}, - {file = "watchdog-4.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4986db5e8880b0e6b7cd52ba36255d4793bf5cdc95bd6264806c233173b1ec0b"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:11e12fafb13372e18ca1bbf12d50f593e7280646687463dd47730fd4f4d5d257"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5369136a6474678e02426bd984466343924d1df8e2fd94a9b443cb7e3aa20d19"}, - {file = "watchdog-4.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76ad8484379695f3fe46228962017a7e1337e9acadafed67eb20aabb175df98b"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:45cc09cc4c3b43fb10b59ef4d07318d9a3ecdbff03abd2e36e77b6dd9f9a5c85"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eed82cdf79cd7f0232e2fdc1ad05b06a5e102a43e331f7d041e5f0e0a34a51c4"}, - {file = "watchdog-4.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ba30a896166f0fee83183cec913298151b73164160d965af2e93a20bbd2ab605"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d18d7f18a47de6863cd480734613502904611730f8def45fc52a5d97503e5101"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2895bf0518361a9728773083908801a376743bcc37dfa252b801af8fd281b1ca"}, - {file = "watchdog-4.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:87e9df830022488e235dd601478c15ad73a0389628588ba0b028cb74eb72fed8"}, - {file = "watchdog-4.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6e949a8a94186bced05b6508faa61b7adacc911115664ccb1923b9ad1f1ccf7b"}, - {file = "watchdog-4.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6a4db54edea37d1058b08947c789a2354ee02972ed5d1e0dca9b0b820f4c7f92"}, - {file = "watchdog-4.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d31481ccf4694a8416b681544c23bd271f5a123162ab603c7d7d2dd7dd901a07"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:8fec441f5adcf81dd240a5fe78e3d83767999771630b5ddfc5867827a34fa3d3"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:6a9c71a0b02985b4b0b6d14b875a6c86ddea2fdbebd0c9a720a806a8bbffc69f"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:557ba04c816d23ce98a06e70af6abaa0485f6d94994ec78a42b05d1c03dcbd50"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d0f9bd1fd919134d459d8abf954f63886745f4660ef66480b9d753a7c9d40927"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f9b2fdca47dc855516b2d66eef3c39f2672cbf7e7a42e7e67ad2cbfcd6ba107d"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:73c7a935e62033bd5e8f0da33a4dcb763da2361921a69a5a95aaf6c93aa03a87"}, - {file = "watchdog-4.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:6a80d5cae8c265842c7419c560b9961561556c4361b297b4c431903f8c33b269"}, - {file = "watchdog-4.0.0-py3-none-win32.whl", hash = "sha256:8f9a542c979df62098ae9c58b19e03ad3df1c9d8c6895d96c0d51da17b243b1c"}, - {file = "watchdog-4.0.0-py3-none-win_amd64.whl", hash = "sha256:f970663fa4f7e80401a7b0cbeec00fa801bf0287d93d48368fc3e6fa32716245"}, - {file = "watchdog-4.0.0-py3-none-win_ia64.whl", hash = "sha256:9a03e16e55465177d416699331b0f3564138f1807ecc5f2de9d55d8f188d08c7"}, - {file = "watchdog-4.0.0.tar.gz", hash = "sha256:e3e7065cbdabe6183ab82199d7a4f6b3ba0a438c5a512a68559846ccb76a78ec"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da2dfdaa8006eb6a71051795856bedd97e5b03e57da96f98e375682c48850645"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e93f451f2dfa433d97765ca2634628b789b49ba8b504fdde5837cdcf25fdb53b"}, + {file = "watchdog-4.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ef0107bbb6a55f5be727cfc2ef945d5676b97bffb8425650dadbb184be9f9a2b"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:17e32f147d8bf9657e0922c0940bcde863b894cd871dbb694beb6704cfbd2fb5"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:03e70d2df2258fb6cb0e95bbdbe06c16e608af94a3ffbd2b90c3f1e83eb10767"}, + {file = "watchdog-4.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:123587af84260c991dc5f62a6e7ef3d1c57dfddc99faacee508c71d287248459"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:093b23e6906a8b97051191a4a0c73a77ecc958121d42346274c6af6520dec175"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:611be3904f9843f0529c35a3ff3fd617449463cb4b73b1633950b3d97fa4bfb7"}, + {file = "watchdog-4.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:62c613ad689ddcb11707f030e722fa929f322ef7e4f18f5335d2b73c61a85c28"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d4925e4bf7b9bddd1c3de13c9b8a2cdb89a468f640e66fbfabaf735bd85b3e35"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cad0bbd66cd59fc474b4a4376bc5ac3fc698723510cbb64091c2a793b18654db"}, + {file = "watchdog-4.0.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a3c2c317a8fb53e5b3d25790553796105501a235343f5d2bf23bb8649c2c8709"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9904904b6564d4ee8a1ed820db76185a3c96e05560c776c79a6ce5ab71888ba"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:667f3c579e813fcbad1b784db7a1aaa96524bed53437e119f6a2f5de4db04235"}, + {file = "watchdog-4.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d10a681c9a1d5a77e75c48a3b8e1a9f2ae2928eda463e8d33660437705659682"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0144c0ea9997b92615af1d94afc0c217e07ce2c14912c7b1a5731776329fcfc7"}, + {file = "watchdog-4.0.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:998d2be6976a0ee3a81fb8e2777900c28641fb5bfbd0c84717d89bca0addcdc5"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7921319fe4430b11278d924ef66d4daa469fafb1da679a2e48c935fa27af193"}, + {file = "watchdog-4.0.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:f0de0f284248ab40188f23380b03b59126d1479cd59940f2a34f8852db710625"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bca36be5707e81b9e6ce3208d92d95540d4ca244c006b61511753583c81c70dd"}, + {file = "watchdog-4.0.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab998f567ebdf6b1da7dc1e5accfaa7c6992244629c0fdaef062f43249bd8dee"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:dddba7ca1c807045323b6af4ff80f5ddc4d654c8bce8317dde1bd96b128ed253"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:4513ec234c68b14d4161440e07f995f231be21a09329051e67a2118a7a612d2d"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_i686.whl", hash = "sha256:4107ac5ab936a63952dea2a46a734a23230aa2f6f9db1291bf171dac3ebd53c6"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:6e8c70d2cd745daec2a08734d9f63092b793ad97612470a0ee4cbb8f5f705c57"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:f27279d060e2ab24c0aa98363ff906d2386aa6c4dc2f1a374655d4e02a6c5e5e"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:f8affdf3c0f0466e69f5b3917cdd042f89c8c63aebdb9f7c078996f607cdb0f5"}, + {file = "watchdog-4.0.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ac7041b385f04c047fcc2951dc001671dee1b7e0615cde772e84b01fbf68ee84"}, + {file = "watchdog-4.0.1-py3-none-win32.whl", hash = "sha256:206afc3d964f9a233e6ad34618ec60b9837d0582b500b63687e34011e15bb429"}, + {file = "watchdog-4.0.1-py3-none-win_amd64.whl", hash = "sha256:7577b3c43e5909623149f76b099ac49a1a01ca4e167d1785c76eb52fa585745a"}, + {file = "watchdog-4.0.1-py3-none-win_ia64.whl", hash = "sha256:d7b9f5f3299e8dd230880b6c55504a1f69cf1e4316275d1b215ebdd8187ec88d"}, + {file = "watchdog-4.0.1.tar.gz", hash = "sha256:eebaacf674fa25511e8867028d281e602ee6500045b57f43b08778082f7f8b44"}, ] [package.extras] @@ -4260,13 +4269,13 @@ files = [ [[package]] name = "xopen" -version = "2.0.1" +version = "2.0.2" description = "Open compressed files transparently" optional = false python-versions = ">=3.8" files = [ - {file = "xopen-2.0.1-py3-none-any.whl", hash = "sha256:8b90d6f6eedb337dec438aa1622b856749e55de864be75e17e51745689a346f2"}, - {file = "xopen-2.0.1.tar.gz", hash = "sha256:6c34127651e538cfdd67ec8016a6505ba386158bbfe3f615e105d49027d5968e"}, + {file = "xopen-2.0.2-py3-none-any.whl", hash = "sha256:74e7f7fb7e7f42bd843c798595fa5a52086d7d1bf3de0e8513c6615516431313"}, + {file = "xopen-2.0.2.tar.gz", hash = "sha256:f19d83de470f5a81725df0140180ec71d198311a1d7dad48f5467b4ad5df6154"}, ] [package.dependencies] @@ -4357,18 +4366,18 @@ test = ["gevent (>=20.6.2)"] [[package]] name = "zipp" -version = "3.18.1" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, - {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [[package]] name = "zlib-ng" diff --git a/src/pixelator/analysis/__init__.py b/src/pixelator/analysis/__init__.py index a3607344..9403fd76 100644 --- a/src/pixelator/analysis/__init__.py +++ b/src/pixelator/analysis/__init__.py @@ -33,6 +33,7 @@ class AnalysisParameters: colocalization_neighbourhood_size: int colocalization_n_permutations: int colocalization_min_region_count: int + colocalization_min_marker_count: int def analyse_pixels( diff --git a/src/pixelator/analysis/colocalization/__init__.py b/src/pixelator/analysis/colocalization/__init__.py index 241427b4..09c59615 100644 --- a/src/pixelator/analysis/colocalization/__init__.py +++ b/src/pixelator/analysis/colocalization/__init__.py @@ -51,6 +51,7 @@ def colocalization_from_component_edgelist( n_permutations: int = 50, use_full_bipartite: bool = True, min_region_count: int = 5, + min_marker_count: int = 5, random_seed: Optional[int] = None, ) -> pd.DataFrame: """Get the colocalization scores for the component in the given `edgelist`. @@ -65,6 +66,8 @@ def colocalization_from_component_edgelist( projection, defaults to True :param min_region_count: minimum number of counts in region to consider, defaults to 5 + :param min_marker_count: the minimum number of counts of a marker to calculate + colocalization :param random_seed: Set the random seed for the permutation tests, defaults to None :return: a dataframe with computed colocalization scores :rtype: pd.DataFrame @@ -84,6 +87,7 @@ def colocalization_from_component_edgelist( neighbourhood_size=neighbourhood_size, n_permutations=n_permutations, min_region_count=min_region_count, + min_marker_count=min_marker_count, random_seed=random_seed, ) @@ -109,6 +113,7 @@ def colocalization_from_component_graph( neighbourhood_size: int = 1, n_permutations: int = 50, min_region_count: int = 5, + min_marker_count: int = 5, random_seed: Optional[int] = None, ) -> pd.DataFrame: """Compute the colocalization scores for this component graph. @@ -121,20 +126,29 @@ def colocalization_from_component_graph( p-values and z-scores, defaults to 50 :param min_region_count: minimum number of counts in region to consider, defaults to 5 + :param min_marker_count: the minimum number of counts of a marker to calculate + colocalization :param random_seed: Set the random seed for the permutation tests, defaults to None :return: a dataframe containing colocalization scores for this component :rtype: pd.DataFrame """ logger.debug("Computing colocalization for component: %s", component_id) logger.debug("Prepare the graph data for computing colocalization") - marker_counts_by_region = prepare_from_graph(graph, n_neighbours=neighbourhood_size) + raw_marker_counts = graph.node_marker_counts + # Record markers to keep + # Remove markers with zero variance and markers below minimum marker count + markers_to_keep = raw_marker_counts.columns[ + (raw_marker_counts != 0).any(axis=0) + & (raw_marker_counts.nunique() > 1) + & (raw_marker_counts.sum() >= min_marker_count) + ] + + marker_counts_by_region = prepare_from_graph(graph, n_neighbours=neighbourhood_size) + marker_counts_by_region = marker_counts_by_region[markers_to_keep] marker_counts_by_region = filter_by_region_counts( marker_counts_by_region, min_region_counts=min_region_count ) - marker_counts_by_region = filter_by_unique_values( - marker_counts_by_region, at_least_n_unique=2 - ) nrow, ncols = marker_counts_by_region.shape if nrow == 0: @@ -187,6 +201,7 @@ def colocalization_scores( neighbourhood_size: int = 1, n_permutations: int = 50, min_region_count: int = 5, + min_marker_count: int = 5, random_seed: Optional[int] = None, ) -> pd.DataFrame: """Compute colocalization scores for antibody pairs. @@ -225,6 +240,8 @@ def colocalization_scores( :param min_region_count: The minimum size of the region (e.g. number of counts in the neighbourhood) required for it to be considered + :param min_marker_count: the minimum number of counts of a marker to calculate + colocalization :param random_seed: Set a random seed for the permutation function :returns: a pd.DataFrame of scores :rtype: pd.DataFrame @@ -273,6 +290,7 @@ def data(): neighbourhood_size=neighbourhood_size, n_permutations=n_permutations, min_region_count=min_region_count, + min_marker_count=min_marker_count, random_seed=random_seed, ) @@ -402,6 +420,7 @@ def __init__( neighbourhood_size: int, n_permutations: int, min_region_count: int, + min_marker_count: int, ): """Initialize the ColocalizationAnalysis. @@ -413,11 +432,14 @@ def __init__( :param min_region_count: The minimum size of the region (e.g. number of counts in the neighbourhood) required for it to be considered for colocalization analysis + :param min_marker_count: the minimum number of counts of a marker to calculate + colocalization """ self.transformation_type = transformation_type self.neighbourhood_size = neighbourhood_size self.n_permutations = n_permutations self.min_region_count = min_region_count + self.min_marker_count = min_marker_count def run_on_component(self, component: Graph, component_id: str) -> pd.DataFrame: """Run colocalization analysis on the component.""" @@ -429,6 +451,7 @@ def run_on_component(self, component: Graph, component_id: str) -> pd.DataFrame: neighbourhood_size=self.neighbourhood_size, n_permutations=self.n_permutations, min_region_count=self.min_region_count, + min_marker_count=self.min_marker_count, ) def post_process_data(self, data: pd.DataFrame) -> pd.DataFrame: diff --git a/src/pixelator/analysis/normalization/__init__.py b/src/pixelator/analysis/normalization/__init__.py new file mode 100644 index 00000000..c4592373 --- /dev/null +++ b/src/pixelator/analysis/normalization/__init__.py @@ -0,0 +1,66 @@ +"""Functions for the colocalization analysis in pixelator. + +Copyright © 2024 Pixelgen Technologies AB. +""" + +from typing import List, Union + +import numpy as np +import pandas as pd +from sklearn.decomposition import PCA +from sklearn.mixture import GaussianMixture +from sklearn.preprocessing import StandardScaler + + +def _regress_out_confounder(pheno, exprs, rcond=1e-8): + """Linear regression to remove confounding factors from abundance data.""" + design_matrix = np.column_stack((np.ones((len(pheno), 1)), pheno)) + coefficients, res, rank, s = np.linalg.lstsq(design_matrix, exprs, rcond=rcond) + beta = coefficients[1:] # remove intercept term + return exprs - design_matrix[:, 1:].dot(beta) + + +def _get_background_abundance(dataframe: pd.DataFrame, axis=0): + """Fit a double gaussian distribution to the abundance data and return the mean of the first gaussian as an estimation of the background level.""" + background = pd.Series(index=dataframe.index if axis == 0 else dataframe.columns) + scores = pd.Series(index=dataframe.index if axis == 0 else dataframe.columns) + gmm = GaussianMixture(n_components=2, max_iter=1000, random_state=0) + if axis not in {0, 1}: + raise ValueError(f"Axis was {axis}. Must be 0 or 1") + ax_iter = dataframe.index if axis == 0 else dataframe.columns + for i in ax_iter: + current_axis = dataframe.loc[i, :] if axis == 0 else dataframe.loc[:, i] + gmm = gmm.fit(current_axis.to_frame()) + background[i] = np.min(gmm.means_) + scores[i] = np.abs(gmm.means_[1] - gmm.means_[0]) / np.sum(gmm.covariances_) + return background, scores + + +def dsb_normalize( + raw_abundance: pd.DataFrame, isotype_controls: Union[List, None] = None +): + """empty-droplet-free method as implemented in Mulè et. al. dsb package. + + The normalization steps are: 1- log1p transformation, 2- remove background + abundance per marker, 3- regularize abundance per component. + + :param raw_abundance: the raw abundance count data. + :param isotype_controls: list of isotype controls. + :return: normalized abundance data. + """ + log_abundance = np.log1p(raw_abundance) + marker_background, _ = _get_background_abundance(log_abundance, axis=1) + log_abundance = log_abundance - marker_background + component_background, _ = _get_background_abundance(log_abundance, axis=0) + + if isotype_controls is not None: + control_signals = log_abundance.loc[:, isotype_controls] + control_signals["component_background"] = component_background + control_signals = StandardScaler().fit_transform(control_signals) + pheno = PCA(n_components=1).fit_transform(control_signals) + else: + raise ValueError(f"At least one isotype control must be provided.") + + normalized_abundance = _regress_out_confounder(pheno, log_abundance) + + return normalized_abundance diff --git a/src/pixelator/cli/analysis.py b/src/pixelator/cli/analysis.py index e607c8de..f8a6b9b2 100644 --- a/src/pixelator/cli/analysis.py +++ b/src/pixelator/cli/analysis.py @@ -92,7 +92,7 @@ ) @click.option( "--colocalization-transformation", - default="log1p", + default="rate-diff", required=False, type=click.Choice(get_args(TransformationTypes)), show_default=True, @@ -134,6 +134,14 @@ "valid for computing colocalization" ), ) +@click.option( + "--colocalization-min-marker-count", + default=5, + required=False, + type=click.IntRange(min=0), + show_default=True, + help=("The minimum number of marker counts in component for colocalization"), +) @output_option @click.pass_context @timer @@ -150,6 +158,7 @@ def analysis( colocalization_neighbourhood_size, colocalization_n_permutations, colocalization_min_region_count, + colocalization_min_marker_count, output, ): """ @@ -171,6 +180,7 @@ def analysis( colocalization_neighbourhood_size=colocalization_neighbourhood_size, colocalization_n_permutations=colocalization_n_permutations, colocalization_min_region_count=colocalization_min_region_count, + colocalization_min_marker_count=colocalization_min_marker_count, ) # some basic sanity check on the input files @@ -214,6 +224,7 @@ def analysis( neighbourhood_size=colocalization_neighbourhood_size, n_permutations=colocalization_n_permutations, min_region_count=colocalization_min_region_count, + min_marker_count=colocalization_min_marker_count, ) ) diff --git a/src/pixelator/cli/collapse.py b/src/pixelator/cli/collapse.py index 1c0138e5..7cd91258 100644 --- a/src/pixelator/cli/collapse.py +++ b/src/pixelator/cli/collapse.py @@ -3,6 +3,7 @@ Copyright © 2022 Pixelgen Technologies AB. """ +import sys from collections import defaultdict from concurrent import futures from pathlib import Path @@ -25,6 +26,38 @@ ) +def _handle_errors(jobs, executor): + for job in jobs: + exception = job.exception() + if exception is None: + continue + + logger.error( + "Found an issue in the process pool. Trying to determine what went wrong and set the correct exit code. Exception was: %s", + exception, + ) + process_map = executor._processes + for pid in process_map.keys(): + exit_code = process_map[pid].exitcode + if exit_code is not None and exit_code != 0: + logger.error( + "The child process in the process pool returned a non-zero exit code: %s.", + exit_code, + ) + # If we have an out of memory exception, make sure we exit with that. + if abs(exit_code) == 9: + logger.error( + "One of the child processes was killed (exit code: 9). " + "Usually this is caused by the out-of-memory killer terminating the process. " + "The parent process will return an exit code of 137 to indicate that it terminated because of a kill signal in the child process." + ) + sys.exit(137) + logger.error( + "Was unable to determine what when wrong in process pool. Will raise original exception." + ) + raise exception + + @click.command( "collapse", short_help=( @@ -238,12 +271,12 @@ def collapse( min_count=min_count, ) ) + jobs = list(futures.as_completed(jobs)) + _handle_errors(jobs, executor) total_input_reads = 0 tmp_files = [] - for job in futures.as_completed(jobs): - if job.exception() is not None: - raise job.exception() + for job in jobs: # the worker returns a path to a file (temp antibody edge list) tmp_file, input_reads_count = job.result() if tmp_file is not None: diff --git a/src/pixelator/cli/layout.py b/src/pixelator/cli/layout.py index c0a4e595..faba6f90 100644 --- a/src/pixelator/cli/layout.py +++ b/src/pixelator/cli/layout.py @@ -48,7 +48,7 @@ "--layout-algorithm", required=False, multiple=True, - default=["pmds_3d"], + default=["wpmds_3d"], help="Select a layout algorithm to use. This can be specified multiple times to compute multiple layouts. Default: pmds_3d", type=click.Choice(get_args(SupportedLayoutAlgorithm)), ) diff --git a/src/pixelator/cli/misc.py b/src/pixelator/cli/misc.py index 09867cea..66a6476c 100644 --- a/src/pixelator/cli/misc.py +++ b/src/pixelator/cli/misc.py @@ -41,7 +41,7 @@ def list_single_cell_panels(ctx: click.Context, param: Any, value: Any) -> None: if not value or ctx.resilient_parsing: return - options = list(config.panels.keys()) + options = config.list_panel_names(include_aliases=True) for option in options: click_echo(option) diff --git a/src/pixelator/config/config_class.py b/src/pixelator/config/config_class.py index 0a7388a9..837c0766 100644 --- a/src/pixelator/config/config_class.py +++ b/src/pixelator/config/config_class.py @@ -7,6 +7,7 @@ import itertools import typing +import warnings from collections import defaultdict from pathlib import Path from typing import Dict, List, Optional, Tuple @@ -16,6 +17,7 @@ from pixelator.config.assay import Assay from pixelator.config.panel import AntibodyPanel +from pixelator.exceptions import PixelatorBaseException from pixelator.types import PathType DNA_CHARS = {"A", "C", "G", "T"} @@ -25,6 +27,12 @@ ) +class PanelException(PixelatorBaseException): + """Exception raised for failures to load a panel into the global configuration.""" + + pass + + class Config: """Class containing the pixelator configuration (assay settings).""" @@ -36,6 +44,7 @@ def __init__( """Initialize the config object.""" self.assays: Dict[str, Assay] = {} self.panels: typing.MutableMapping[str, List[AntibodyPanel]] = defaultdict(list) + self.panel_aliases: Dict[str, str] = {} if assays is not None: self.assays.update({a.name: a for a in assays}) @@ -51,11 +60,29 @@ def load_assay(self, path: PathType) -> None: self.assays[assay.name] = assay def load_panel_file(self, path: PathType) -> None: - """Load the panel file.""" + """Load the panel file. + + :param path: The path to the panel file. + :raises PanelException: If the panel alias already exists in the config. + """ panel = AntibodyPanel.from_csv(path) key = panel.name if panel.name is not None else str(panel.filename) self.panels[key].append(panel) + # Enable panel lookup by aliases + for alias in panel.aliases: + if (alias in self.panel_aliases) and (key != self.panel_aliases[alias]): + raise PanelException( + f'Panel alias "{alias}" already exists in the ' + f'config for panel "{self.panel_aliases[alias]}".' + "If you provided your own panel file, please " + "ensure the panel name an aliases are unique " + "in the header of the file." + ) + continue + + self.panel_aliases[alias] = key + def load_assays(self, path: PathType): """Load all assays from a directory containing yaml files.""" search_path = Path(path) @@ -83,11 +110,40 @@ def get_assay(self, assay_name: str) -> Optional[Assay]: """Get an assay by name.""" return self.assays.get(assay_name) + def list_panel_names(self, include_aliases: bool = False) -> List[str]: + """Return a list of all panel names. + + :param include_aliases: Include panel aliases in the list + :returns: A list of panel names + """ + out = sorted(list(self.panels.keys())) + + if not include_aliases: + return out + + out += sorted(list(self.panel_aliases.keys())) + return out + def get_panel( - self, panel_name: str, version: Optional[str] = None + self, + panel_name: str, + version: Optional[str] = None, + allow_aliases: bool = True, ) -> Optional[AntibodyPanel]: - """Get a panel by name.""" + """Get a panel by name. + + :param panel_name: The name of the panel + :param version: The optional version of a panel to return + :param allow_aliases: Allow panel aliases to be used + """ panels_with_key = self.panels.get(panel_name) + + # Try to load using an alias if no name matches are found + if panels_with_key is None and allow_aliases: + panel_alias = self.panel_aliases.get(panel_name) + if panel_alias is not None: + panels_with_key = self.panels.get(panel_alias) + if panels_with_key is None: return None diff --git a/src/pixelator/config/panel.py b/src/pixelator/config/panel.py index 0382c60b..b8c9cf1c 100644 --- a/src/pixelator/config/panel.py +++ b/src/pixelator/config/panel.py @@ -29,6 +29,7 @@ class AntibodyPanelMetadata(pydantic.BaseModel): version: Optional[str] = None name: Optional[str] = None description: Optional[str] = None + aliases: List[str] = [] class AntibodyPanel: @@ -118,6 +119,11 @@ def description(self) -> Optional[str]: """Return the panel file description.""" return self._metadata.description + @property + def aliases(self) -> list[str]: + """Return the (optional) list of panel file aliases.""" + return self._metadata.aliases + @classmethod def validate_antibody_panel(self, panel_df: pd.DataFrame) -> list[str]: """Perform validation on an antibody panel file. diff --git a/src/pixelator/graph/backends/implementations/_networkx.py b/src/pixelator/graph/backends/implementations/_networkx.py index 430e2889..ce1baa58 100644 --- a/src/pixelator/graph/backends/implementations/_networkx.py +++ b/src/pixelator/graph/backends/implementations/_networkx.py @@ -320,7 +320,7 @@ def clusters(leiden_communities): def _layout_coordinates( self, - layout_algorithm: SupportedLayoutAlgorithm = "pmds_3d", + layout_algorithm: SupportedLayoutAlgorithm = "wpmds_3d", random_seed: Optional[int] = None, **kwargs, ) -> pd.DataFrame: @@ -352,6 +352,10 @@ def _layout_coordinates( layout_inst = pmds_layout(raw, seed=random_seed, **kwargs) if layout_algorithm == "pmds_3d": layout_inst = pmds_layout(raw, dim=3, seed=random_seed, **kwargs) + if layout_algorithm == "wpmds_3d": + layout_inst = pmds_layout( + raw, dim=3, weights="prob_dist", seed=random_seed, **kwargs + ) coordinates = pd.DataFrame.from_dict( layout_inst, @@ -396,7 +400,7 @@ def node_marker_counts(self) -> pd.DataFrame: def layout_coordinates( self, - layout_algorithm: SupportedLayoutAlgorithm = "pmds_3d", + layout_algorithm: SupportedLayoutAlgorithm = "wpmds_3d", only_keep_a_pixels: bool = True, get_node_marker_matrix: bool = True, random_seed: Optional[int] = None, @@ -414,9 +418,14 @@ def layout_coordinates( - fruchterman_reingold_3d - kamada_kawai - kamada_kawai_3d + - wpmds_3d - The `pmds` options are much (~10-100x) faster than the `fruchterman_reingold` and - the `kamada_kawai`. + For most cases the `pmds` options should be about 10-100x faster + than the force directed layout methods, i.e. `fruchterman_reingold` + and `kamada_kawai`. Among the force directed layout methods, + `fruchterman_reingold` is generally faster than `kamada_kawai`. The + `wpmds_3d` method uses edge weights to improve the layout, but is slightly + slower than `pmds_3d`. :param layout_algorithm: the layout algorithm to use to generate the coordinates :param only_keep_a_pixels: If true, only keep the a-pixels @@ -739,33 +748,50 @@ def subgraphs(self) -> Iterable[Graph]: def pmds_layout( - g: nx.Graph, pivots: int = 50, dim: int = 2, seed: Optional[int] = None + g: nx.Graph, + pivots: int = 200, + dim: int = 2, + weights: Optional[Union[np.ndarray, str]] = None, + seed: Optional[int] = None, ) -> pd.DataFrame: """Calculate a pivot MDS layout for a graph as described in [1]_. - The algorithm is similar to classical multidimensional scaling (MDS), but uses only - a smalls set of random pivot nodes. The algorithm is considerably faster than MDS - and therefore scales better to large graphs. The topology of resulting layouts are - deterministic for a given seed, but may be mirrored across different systems due to - variations in floating-point precision. + The algorithm is similar to classical multidimensional scaling (MDS), + but uses only a smalls set of random pivot nodes. The algorithm is + considerably faster than MDS and therefore scales better to large graphs. + The topology of resulting layouts are deterministic for a given seed, + but may be mirrored across different systems due to variations in + floating-point precision. - .. [1] Brandes U, Pich C. Eigensolver Methods for Progressive Multidimensional - Scaling of Large Data. International Symposium on Graph Drawing, 2007. - Lecture Notes in Computer Science, vol 4372. doi: 10.1007/978-3-540-70904-6_6. + .. [1] Brandes U, Pich C. Eigensolver Methods for Progressive + Multidimensional Scaling of Large Data. International Symposium + on Graph Drawing, 2007. Lecture Notes in Computer Science, vol + 4372. doi: 10.1007/978-3-540-70904-6_6. :param g: A networkx graph object :param pivots: The number of pivot nodes to use :param dim: The dimension of the layout + :param weights: Edge weights to use for the layout computation. + Options are: + + * an np.array with non-negative values (same number of elements as edges in g) + * "prob_dist" to use -log(P)^3, where P is the probability of a random walker to traverse the end nodes of and edge (i->j) and back again (j->i) in 5 steps. + * None to use unweighted shortest path lengths :param seed: Set seed for reproducibility :return: A dataframe with layout coordinates :rtype: pd.DataFrame - :raises: ValueError raises if conditions are not met + :raises ValueError: if conditions are not met """ if not nx.is_connected(g): raise ValueError("Only connected graphs are supported.") if pivots >= len(g.nodes): - raise ValueError("'pivots' must be less than the number of nodes in the graph.") + total_nodes = len(g.nodes) + warnings.warn( + f"'pivots' ({pivots}) should be less than the number of " + f"nodes ({total_nodes}) in the graph. Using all nodes as 'pivots'." + ) + pivots = total_nodes if dim not in [2, 3]: raise ValueError("'dim' must be either 2 or 3.") @@ -779,6 +805,28 @@ def pmds_layout( f"'pivots' must be greater than or equal to {pivot_lower_bound}" ) + if isinstance(weights, str): + if weights != "prob_dist": + raise ValueError("If 'weights' is a string, it must be 'prob_dist'.") + weights = -(np.log(_prob_edge_weights(g, k=5)) ** 3) + elif isinstance(weights, np.ndarray): + if len(weights) != len(g.edges): + raise ValueError( + "'weights' must have the same length as the number of edges in the graph." + ) + if np.any(weights < 0): + raise ValueError("All elements in 'weights' must be non-negative.") + elif weights is not None: + raise ValueError("'weights' must be a string or an array.") + + if weights is not None: + edges = list(g.edges) + edge_weight_dict = {edges[i]: weights[i] for i in range(len(edges))} + nx.set_edge_attributes(g, edge_weight_dict, "weight") + weight = "weight" + else: + weight = None + if seed is not None: np.random.seed(seed) @@ -788,7 +836,7 @@ def pmds_layout( pivs = np.random.choice(node_list, pivots, replace=False) # Calculate the shortest path length from the pivots to all other nodes - A = nx.to_scipy_sparse_array(g, weight=None, nodelist=node_list, format="csr") + A = nx.to_scipy_sparse_array(g, weight=weight, nodelist=node_list, format="csr") # This is a workaround for what seems to be a bug in the type of # the indices of the sparse array created above @@ -797,15 +845,16 @@ def pmds_layout( D = sp.sparse.csgraph.shortest_path( A, directed=False, - unweighted=True, + unweighted=weight is None, method="D", indices=np.where(np.isin(g.nodes, pivs))[0], ).T # Center values in rows and columns - cmean = np.mean(D**2, axis=0) - rmean = np.mean(D**2, axis=1) - D_pivs_centered = D**2 - np.add.outer(rmean, cmean) + np.mean(D**2) + D2 = D**2 + cmean = np.mean(D2, axis=0) + rmean = np.mean(D2, axis=1) + D_pivs_centered = D2 - np.add.outer(rmean, cmean) + np.mean(D2) # Compute SVD and use distances to compute coordinates for all nodes # in an abstract cartesian space @@ -818,3 +867,59 @@ def pmds_layout( coordinates = {node_list[i]: coordinates[i, :] for i in range(coordinates.shape[0])} return coordinates + + +def _prob_edge_weights( + g: nx.Graph, + k: int = 5, +) -> np.ndarray: + """Compute edge weights based on k-step transition probabilities. + + The transition probabilities are computed using powers of the + stochastic matrix of the graph with self-loops allowed. + + :param g: A networkx graph object + :param k: The number of steps in the random walk + :return: An array of edge weights + :rtype: np.array + :raises ValueError: if conditions are not met + """ + # Check that k is an integer between 1 and 10 + if not isinstance(k, int) and k < 1 or k > 10: + raise ValueError("'k' must be an integer between 1 and 10.") + + A = nx.to_scipy_sparse_array(g, weight=None, nodelist=list(g.nodes), format="csr") + + # Add 1 to the diagonal to allow self-loops + A = A + sp.sparse.diags([1] * A.shape[0], format="csr") + + # Divide by row sum + D = sp.sparse.diags(1 / A.sum(axis=1), format="csr") + P = D @ A + + # Compute the transition probabilities for a k-step walk + P_step = _mat_pow(P, k) + + # Keep edges from original graph + P_step = P_step.multiply(A) + + # Compute bi-directional transition probabilities which are symmetric. + # Now we get the probability of going from i to j and back again in k steps, + # so it doesn't matter if we start in i or j. + P_step_bidirectional = P_step.multiply(P_step.T) + + # Extract the transition probabilities for edges in g + edges = list(g.edges) + edge_probs = P_step_bidirectional[ + [list(g.nodes).index(u) for u, _ in edges], + [list(g.nodes).index(v) for _, v in edges], + ] + + return np.array(edge_probs)[0] + + +def _mat_pow(mat, power): + mat_power = mat + for _ in range(power - 1): + mat_power = mat @ mat_power + return mat_power diff --git a/src/pixelator/graph/backends/protocol.py b/src/pixelator/graph/backends/protocol.py index 41886998..28e898ca 100644 --- a/src/pixelator/graph/backends/protocol.py +++ b/src/pixelator/graph/backends/protocol.py @@ -34,6 +34,7 @@ "kamada_kawai_3d", "pmds", "pmds_3d", + "wpmds_3d", ] @@ -149,7 +150,7 @@ def node_marker_counts(self) -> pd.DataFrame: def layout_coordinates( self, - layout_algorithm: SupportedLayoutAlgorithm = "pmds_3d", + layout_algorithm: SupportedLayoutAlgorithm = "wpmds_3d", only_keep_a_pixels: bool = True, get_node_marker_matrix: bool = True, random_seed: Optional[int] = None, @@ -167,11 +168,14 @@ def layout_coordinates( - kamada_kawai_3d - pmds - pmds_3d + - wpmds_3d For most cases the `pmds` options should be about 10-100x faster than the force directed layout methods, i.e. `fruchterman_reingold` and `kamada_kawai`. Among the force directed layout methods, - `fruchterman_reingold` is generally faster than `kamada_kawai`. + `fruchterman_reingold` is generally faster than `kamada_kawai`. The + `wpmds_3d` method uses edge weights to improve the layout, but is slightly + slower than `pmds_3d`. :param layout_algorithm: the layout algorithm to use to generate the coordinates :param only_keep_a_pixels: If true, only keep the a-pixels diff --git a/src/pixelator/graph/graph.py b/src/pixelator/graph/graph.py index d93ea0d2..c11aa5d6 100644 --- a/src/pixelator/graph/graph.py +++ b/src/pixelator/graph/graph.py @@ -183,7 +183,7 @@ def community_leiden( def layout_coordinates( self, - layout_algorithm: SupportedLayoutAlgorithm = "pmds_3d", + layout_algorithm: SupportedLayoutAlgorithm = "wpmds_3d", only_keep_a_pixels: bool = True, get_node_marker_matrix: bool = True, cache: bool = False, @@ -202,10 +202,11 @@ def layout_coordinates( - kamada_kawai_3d - pmds - pmds_3d + - wpmds_3d - The `fruchterman_reingold` options are in general faster, but less - accurate than the `kamada_kawai` ones. + The `pmds` options are much faster than the force-directed algorithms fruchterman_reingold + and kamada_kawai. The `wpmds_3d` option is a weighted version of the `pmds_3d` algorithm. :param layout_algorithm: the layout algorithm to use to generate the coordinates :param only_keep_a_pixels: If true, only keep the a-pixels diff --git a/src/pixelator/graph/node_metrics.py b/src/pixelator/graph/node_metrics.py index d6495376..30a6e92c 100644 --- a/src/pixelator/graph/node_metrics.py +++ b/src/pixelator/graph/node_metrics.py @@ -52,7 +52,9 @@ def compute_transition_probabilities( # Set diagonal of W to 0 if k > 1 for gi to avoid self-loops W_out.setdiag(values=0) # Renormalize transition probabilities to sum to 1 - W_out = W_out / W_out.sum(axis=0)[:, None] + row_sums = np.array(W_out.sum(axis=1)).flatten() + inv_row_sums = np.reciprocal(row_sums, where=row_sums != 0) + W_out = W_out.multiply(inv_row_sums[:, np.newaxis]) return W_out @@ -63,7 +65,7 @@ def local_g( counts: pd.DataFrame, k: int = 1, use_weights: bool = True, - normalize_counts: bool = True, + normalize_counts: bool = False, W: sp.sparse.csr_array | None = None, method: Literal["gi", "gstari"] = "gi", ) -> pd.DataFrame: @@ -97,7 +99,7 @@ def local_g( :param k: The number of steps in the k-step random walk. Default is 1. :param use_weights: Whether to use weights in the computation. When turned off, all edge weights will be qeual to 1. Default is True. - :param normalize_counts: Whether to normalize counts to proportions. Default is True. + :param normalize_counts: Whether to normalize counts to proportions. Default is False. :param W: A sparse matrix of custom edge weights. This will override the automated computation of edge weights. `W` must have the same dimensions as A. Note that weights can be defined for any pair of nodes, not only the pairs represented by edges in `A`. Default is None. @@ -156,6 +158,17 @@ def local_g( W = W.T else: W = A + if k > 1: + # Expand local neighborhood using matrix powers + W = sp.sparse.linalg.matrix_power(W, k) + # Set all positive elements to 1 + W.data = np.ones_like(W.data) + if method == "gstari": + # Set diagonal of A to 1 for gstari which expects self-loops + W = W + sp.sparse.eye(n_nodes) + else: + # Set diagonal of W to 0 for gi to avoid self-loops + W.setdiag(values=0) # Compute lag matrix lag_mat = W @ counts diff --git a/src/pixelator/graph/utils.py b/src/pixelator/graph/utils.py index 5117f2ed..af2f989a 100644 --- a/src/pixelator/graph/utils.py +++ b/src/pixelator/graph/utils.py @@ -101,8 +101,8 @@ def components_metrics(edgelist: pd.DataFrame) -> pd.DataFrame: median_b_pixels_per_a_pixel = b_pixels_per_a_pixel_series.median() a_pixels_per_b_pixel = group_df.groupby("upib", observed=True)["upia"].nunique() - mean_a_pixels_per_b_pixel = b_pixels_per_a_pixel_series.mean() - median_a_pixels_per_b_pixel = b_pixels_per_a_pixel_series.median() + mean_a_pixels_per_b_pixel = a_pixels_per_b_pixel.mean() + median_a_pixels_per_b_pixel = a_pixels_per_b_pixel.median() # Same reasoning as above molecule_count_per_a_pixel_series = group_df.groupby("upia", observed=True)[ diff --git a/src/pixelator/logging.py b/src/pixelator/logging.py index cd8ec403..bdea09d3 100644 --- a/src/pixelator/logging.py +++ b/src/pixelator/logging.py @@ -214,6 +214,11 @@ def log_exception(exc_type, exc_value, traceback_obj): # and thus we ignore them here. return False + if issubclass(exc_type, SystemExit): + # SystemExit is raised when the application has been explicitly + # directed to exit, so we don't what a trace dumped for that. + return False + self._root_logger.critical( "Unhandled exception of type: {}".format(exc_type.__name__) ) diff --git a/src/pixelator/pixeldataset/precomputed_layouts.py b/src/pixelator/pixeldataset/precomputed_layouts.py index d512ee68..a9e99875 100644 --- a/src/pixelator/pixeldataset/precomputed_layouts.py +++ b/src/pixelator/pixeldataset/precomputed_layouts.py @@ -212,6 +212,8 @@ def __init__( self._data_provider: _DataProvider = _EmptyDataProvider() elif isinstance(layouts_lazy, pl.LazyFrame): self._data_provider = _SingleFrameDataProvider(layouts_lazy) + elif isinstance(layouts_lazy, pl.DataFrame): + self._data_provider = _SingleFrameDataProvider(layouts_lazy.lazy()) elif isinstance(layouts_lazy, Iterable): self._data_provider = _MultiFrameDataProvider(layouts_lazy) else: @@ -363,7 +365,7 @@ def data(): try: return PreComputedLayouts( - pl.concat(data(), rechunk=False), + pl.concat(data(), rechunk=True).collect(), partitioning=["sample"] + PreComputedLayouts.DEFAULT_PARTITIONING, ) except ValueError: @@ -474,7 +476,7 @@ def generate_precomputed_layouts_for_components( components: set[str] | None = None, add_node_marker_counts: bool = True, layout_algorithms: SupportedLayoutAlgorithm - | list[SupportedLayoutAlgorithm] = "pmds_3d", + | list[SupportedLayoutAlgorithm] = "wpmds_3d", ) -> PreComputedLayouts: """Generate precomputed layouts for the components in the PixelDataset. diff --git a/src/pixelator/plot/__init__.py b/src/pixelator/plot/__init__.py index 44f14e78..ca7f048d 100644 --- a/src/pixelator/plot/__init__.py +++ b/src/pixelator/plot/__init__.py @@ -4,57 +4,32 @@ """ import warnings -from typing import Literal, Optional, Tuple, Union +from typing import Optional, Tuple +import anndata import matplotlib.pyplot as plt -import networkx as nx import numpy as np import pandas as pd -import plotly.graph_objects as go -import polars as pl -import scipy import seaborn as sns -from matplotlib import cm -from matplotlib.colors import Normalize +from matplotlib.colors import LinearSegmentedColormap +from matplotlib.patches import Rectangle +from scipy.stats import gaussian_kde -from pixelator.analysis.colocalization import get_differential_colocalization -from pixelator.graph import Graph -from pixelator.marks import experimental -from pixelator.pixeldataset import PixelDataset from pixelator.plot.constants import Color +from pixelator.plot.layout_plots import ( + plot_2d_graph, + plot_3d_from_coordinates, + plot_3d_graph, + plot_3d_heatmap, +) +from pixelator.plot.spatial_analysis_plots import ( + plot_colocalization_diff_heatmap, + plot_colocalization_diff_volcano, + plot_colocalization_heatmap, +) sns.set_style("whitegrid") - - -def _unit_sphere_surface(horizontal_resolution, vertical_resolution): - horizontal_angles = np.linspace(0, 2 * np.pi, horizontal_resolution) - vertical_angles = np.linspace(0, np.pi, vertical_resolution) - - X = np.outer(np.cos(horizontal_angles), np.sin(vertical_angles)) - Y = np.outer(np.sin(horizontal_angles), np.sin(vertical_angles)) - Z = np.outer(np.ones(np.size(horizontal_angles)), np.cos(vertical_angles)) - return X, Y, Z - - -def _calculate_distance_to_unit_sphere_zones(coordinates, unit_sphere_surface): - X, Y, Z = unit_sphere_surface - zones_on_sphere_surface = np.stack([X, Y, Z], axis=2).reshape(-1, 3) - return scipy.spatial.distance.cdist( - zones_on_sphere_surface, coordinates, "euclidean" - ) - - -def _calculate_densities(coordinates, distance_cutoff, unit_sphere_surface): - dist = _calculate_distance_to_unit_sphere_zones( - coordinates=coordinates, unit_sphere_surface=unit_sphere_surface - ) - raw_sums = np.sum( - 1 - (dist / distance_cutoff), where=(dist < distance_cutoff), axis=1 - ) - raw_sums[raw_sums <= 1] = 0 - densities = np.log(raw_sums, out=raw_sums, where=(raw_sums > 1)) - densities = densities / np.max(densities) - return densities +jet_colormap = LinearSegmentedColormap.from_list("jet_colormap", Color.JETSET) def scatter_umi_per_upia_vs_tau( @@ -120,13 +95,68 @@ def scatter_umi_per_upia_vs_tau( return plt.gcf(), plt.gca() +def molecule_rank_plot( + data: pd.DataFrame, group_by: Optional[str] = None +) -> Tuple[plt.Figure, plt.Axes]: + """Plot the number of molecules per component against its molecule rank. + + :param data: a pandas DataFrame with a column 'molecules' containing edge counts for MPX + components. + :param group_by: a column in the DataFrame to group the plot by. + + :return: a plot showing the number of molecules per component against its edge rank used + for quality control. + :rtype: Tuple[plt.Figure, plt.Axes] + :raises: AssertionError if the required column(s) are not present in the DataFrame + :raises: ValueError if the data types are invalid + """ + if "molecules" not in data.columns and "edges" in data.columns: + data["molecules"] = data["edges"] + assert "molecules" in data.columns, "column 'molecules' is missing from DataFrame" + assert ( + isinstance(data["molecules"], pd.Series) and data["molecules"].dtype == int + ), "'molecules' must be a vector of integer values" + + if group_by is not None: + assert ( + group_by in data.columns + ), f"group variable '{group_by}' not found in DataFrame" + + if data[group_by].dtype not in ["object", "category"]: + raise ValueError( + f"Invalid class '{data[group_by].dtype}' for column '{group_by}'. " + f"Expected a string or categorical value" + ) + else: + edge_rank_df = data[[group_by, "molecules"]].copy() + edge_rank_df["rank"] = edge_rank_df.groupby([group_by])["molecules"].rank( + ascending=False, method="first" + ) + else: + edge_rank_df = data[["molecules"]].copy() + edge_rank_df["rank"] = edge_rank_df["molecules"].rank( + ascending=False, method="first" + ) + + ( + sns.relplot( + data=edge_rank_df, x="rank", y="molecules", hue=group_by, aspect=1.6 + ) + .set(xscale="log", yscale="log") + .set_xlabels("Component rank (by number of molecules)") + .set_ylabels("Number of molecules") + ) + + return plt.gcf(), plt.gca() + + def edge_rank_plot( data: pd.DataFrame, group_by: Optional[str] = None ) -> Tuple[plt.Figure, plt.Axes]: """Plot the number of edges per component against its edge rank. :param data: a pandas DataFrame with a column 'edges' containing edge counts for MPX - momponents. + components. :param group_by: a column in the DataFrame to group the plot by. :return: a plot showing the number of edges per component against its edge rank used @@ -135,6 +165,11 @@ def edge_rank_plot( :raises: AssertionError if the required column(s) are not present in the DataFrame :raises: ValueError if the data types are invalid """ + warnings.warn( + "edge_rank_plot is deprecated and will be removed in a future version. Use molecule_rank_plot instead.", + DeprecationWarning, + stacklevel=2, + ) assert "edges" in data.columns, "column 'edges' is missing from DataFrame" assert ( isinstance(data["edges"], pd.Series) and data["edges"].dtype == int @@ -250,739 +285,172 @@ def cell_count_plot( return plt.gcf(), plt.gca() -def _get_component_graph(pxl_data: PixelDataset, component: str): - component_edges = pxl_data.edgelist_lazy.filter(pl.col("component") == component) - component_graph = Graph.from_edgelist( - component_edges, - add_marker_counts=True, - simplify=True, - use_full_bipartite=True, - ) - return component_graph - - -def _get_coordinates( - component_graph: Graph, - layout_algorithm: str, - cache_layout: bool = False, - show_b_nodes: bool = False, - random_seed: int | None = None, -) -> pd.DataFrame: - coordinates = component_graph.layout_coordinates( - layout_algorithm=layout_algorithm, # type: ignore - cache=cache_layout, - only_keep_a_pixels=not show_b_nodes, - random_seed=random_seed, - ) - filtered_coordinates = coordinates - filtered_coordinates["pixel_type"] = [ - component_graph.raw.nodes[ind]["pixel_type"] - for ind in filtered_coordinates.index - ] - - if not show_b_nodes: - filtered_coordinates = filtered_coordinates[ - filtered_coordinates["pixel_type"] == "A" - ] - - edgelist = pd.DataFrame(component_graph.es) - edgelist = edgelist[edgelist[0].isin(filtered_coordinates.index)] - edgelist = edgelist[edgelist[1].isin(filtered_coordinates.index)] - edgelist = edgelist.loc[:, [0, 1]].to_numpy() - - return filtered_coordinates, edgelist - - -def _plot_for_legend(coordinates: pd.DataFrame, axis, show_b_nodes, cmap, node_size): - a_node_example = coordinates[coordinates["pixel_type"] == "A"].iloc[0, :] - axis.scatter( - a_node_example["x"], - a_node_example["y"], - c=0, - cmap=cmap, - vmin=0, - s=node_size, - label="A-nodes", - ) - if show_b_nodes: - b_node_example = coordinates[coordinates["pixel_type"] == "B"].iloc[0, :] - axis.scatter( - b_node_example["x"], - b_node_example["y"], - c=1, - cmap=cmap, - vmin=0, - s=node_size, - label="B-nodes", - ) - - -def _decorate_plot( - im=None, - include_colorbar: bool = False, - vmax: float = 0, - cmap: str = "cool", +def _plot_joint_distribution(data, x, y, show_marginal, **kargs): + g = sns.JointGrid(data, x=x, y=y) + g.plot_marginals(sns.kdeplot, fill=True) + g.ax_marg_x.axis("off") + g.ax_marg_y.axis("off") + g.plot_joint( + sns.scatterplot, + legend=False, + data=data, + hue="density", + palette=jet_colormap, + size=0.1, + ) + if not show_marginal: + g.ax_marg_x.set_visible(False) + g.ax_marg_y.set_visible(False) + return g + + +def _add_gate_box( + data, + gate: pd.Series | pd.DataFrame, + marker1, + marker2, + facet_row=None, + facet_column=None, ax=None, - fig=None, - legend_ax=None, + **kargs, ): - if include_colorbar: - if isinstance(ax, np.ndarray): - fig.colorbar( - im, - ax=ax.ravel().tolist(), - cmap=cmap, - norm=Normalize(vmin=0, vmax=vmax), - ) - else: - fig.colorbar( - im, - ax=ax, - cmap=cmap, - norm=Normalize(vmin=0, vmax=vmax), - ) - if legend_ax is not None: - if not include_colorbar: - handles, labels = legend_ax.get_legend_handles_labels() - fig.legend(handles, labels, loc="right") - plt.subplots_adjust(right=0.80) - else: - raise AssertionError( - "Plotting pixel_type together with other markers is not supported." - ) - - -def _get_current_axis(ax, i_m, i_c, marker_list, component): - if len(marker_list) == 1: - if len(component) == 1: - crnt_ax = ax - else: - crnt_ax = ax[i_c] + if ax is None: + ax = plt.gca() + + if facet_row is not None and facet_column is not None: + condition = (data.iloc[0][facet_row], data.iloc[0][facet_column]) + elif facet_row is not None: + condition = data.iloc[0][facet_row] + elif facet_column is not None: + condition = data.iloc[0][facet_column] else: - if len(component) == 1: - crnt_ax = ax[i_m] - else: - crnt_ax = ax[i_m, i_c] + condition = None - if i_c == 0: # Set the y-label only for the first column - crnt_ax.set_ylabel(marker_list[i_m], rotation=90, size="large") - if i_m == 0: # Set the title only for the first row - crnt_ax.set_title(component[i_c]) - - return crnt_ax - - -def _get_color_values(mark, filtered_coordinates, log_scale, vmax): - if mark is None: - color_val = Color.NETWORKX_NODE_COLOR - elif mark == "pixel_type": - color_val = filtered_coordinates["pixel_type"] == "B" - elif mark not in filtered_coordinates.columns: - raise AssertionError(f"Marker {mark} not found in the component graph.") - else: - if log_scale: - color_val = np.log1p(filtered_coordinates.loc[:, mark]) + if isinstance(gate, pd.DataFrame): + if condition in gate.index: + gate = gate.loc[condition, :] else: - color_val = filtered_coordinates.loc[:, mark] - vmax = max(vmax, np.max(color_val)) - - return color_val, vmax - - -def plot_2d_graph( - pxl_data: PixelDataset, - component: Union["str", list], - marker: str = "pixel_type", - layout_algorithm: Literal["fruchterman_reingold", "kamada_kawai", "pmds"] = "pmds", - show_edges: bool = False, - log_scale: bool = True, - node_size: float = 10.0, - edge_width: float = 1.0, - show_b_nodes: bool = False, - cmap: str = "cool", - alpha: float = 0.5, - cache_layout: bool = False, - random_seed: int | None = None, -) -> Tuple[plt.Figure, plt.Axes]: - """Plot a (collection of) 2D graph(s) based on the given pixel data. - - The graph can be plotted for one or a list of components. - The graph nodes can be colored by a marker. The marker can be a (list of) marker(s) or "pixel_type". - Example usage: plot_2d_graph(pxl, component=["PXLCMP0000000"], marker=["HLA-ABC", "HLA-RA"]). - - :param pxl_data: The pixel dataset to plot. - :param component: The component(s) to plot. Defaults to None. - :param marker: The marker attribute to use for coloring the nodes. Defaults to "pixel_type". - :param layout_algorithm: The layout algorithm to use. Defaults to "pmds". - :param show_edges: Whether to show the edges in the graph. Defaults to False. - :param log_scale: Whether to use a logarithmic scale for the marker attribute. Defaults to True. - :param node_size: The size of the nodes. Defaults to 10.0. - :param edge_width: The width of the edges. Defaults to 1.0. - :param show_b_nodes: Whether to show the B-nodes. Defaults to False. - :param cmap: The colormap to use for coloring the nodes. Defaults to "cool". - :param alpha: The alpha value for the nodes. Defaults to 0.7. - :param cache_layout: Whether to cache the layout coordinates. Defaults to False. - :param random_seed: The random seed to use for the layout algorithm. Defaults to None. - - :return: The figure and axes objects of the plot. - :rtype: Tuple[plt.Figure, plt.Axes] - - :raises: AssertionError if the marker is not found in the component graph. - :raises: AssertionError if no nodes are found with the specified marker. - :raises: AssertionError if "pixel_type" is in the markers together with other markers. - - """ - if isinstance(component, str): - component = [component] - - if isinstance(marker, str): - marker_list = [marker] - else: - marker_list = marker - - fig, ax = plt.subplots(nrows=len(marker_list), ncols=len(component)) - - include_colorbar = False - vmax = 0 # maximum value for colorbar - for i_c, comp in enumerate(component): - component_graph = _get_component_graph(pxl_data=pxl_data, component=comp) - coordinates, edgelist = _get_coordinates( - component_graph=component_graph, - layout_algorithm=layout_algorithm, - cache_layout=cache_layout, - show_b_nodes=show_b_nodes, - random_seed=random_seed, + return + ax.add_patch( + Rectangle( + xy=(gate["xmin"], gate["ymin"]), + width=gate["xmax"] - gate["xmin"], + height=gate["ymax"] - gate["ymin"], + fill=False, + linestyle="--", + linewidth=1, + edgecolor="black", ) - - for i_m, mark in enumerate(marker_list): - crnt_ax = _get_current_axis(ax, i_m, i_c, marker_list, component) - color_val, vmax = _get_color_values(mark, coordinates, log_scale, vmax) - if mark != "pixel_type": - include_colorbar = True - - im = nx.draw_networkx( - component_graph.raw, - nodelist=coordinates.index, - pos=coordinates.loc[:, ["x", "y"]].T.to_dict("list"), - ax=crnt_ax, - node_size=node_size, - node_color=color_val, - cmap=cmap, - width=edge_width, - with_labels=False, - edgelist=edgelist if show_edges else [], - label="_nolegend_", - alpha=alpha, - ) - - if mark == "pixel_type": - # Re-plot one point from each pixel type to add a legend - _plot_for_legend(coordinates, crnt_ax, show_b_nodes, cmap, node_size) - legend_ax = crnt_ax - else: - legend_ax = None - - crnt_ax.grid(False) - crnt_ax.spines[:].set_visible(False) - crnt_ax.set_xticks([]) - crnt_ax.set_yticks([]) - - _decorate_plot( - im=im, - include_colorbar=include_colorbar, - vmax=vmax, - cmap=cmap, - ax=ax, - fig=fig, - legend_ax=legend_ax, - ) - - return fig, ax - - -def plot_3d_from_coordinates( - coordinates: pd.DataFrame, - node_size: float = 3.0, - opacity: float = 0.4, - cmap: str = "Inferno", - suppress_fig: bool = False, -) -> go.Figure: - """Plot a 3D graph from the given coordinates. - - :param coordinates: The coordinates to plot. - :param node_size: The size of the nodes. Defaults to 3.0. - :param opacity: The opacity of the nodes. Defaults to 0.4. - :param cmap: The colormap to use for coloring the nodes. Defaults to "Inferno". - :param suppress_fig: Whether to suppress (i.e. not plot) the figure. Defaults to False. - :return: The plotted 3D graph. - :rtype: go.Figure - - """ - fig = go.Figure( - data=[ - go.Scatter3d( - x=coordinates["x"], - y=coordinates["y"], - z=coordinates["z"], - mode="markers", - marker=dict( - size=node_size, - color=coordinates["color"], - colorscale=cmap, - opacity=opacity, - colorbar=dict(thickness=20, title="color"), - ), - ) - ] - ) - - if not suppress_fig: - fig.show() - return fig - - -def plot_3d_graph( - pxl_data: PixelDataset, - component: str, - marker: Union[list, None] = None, - layout_algorithm: Literal[ - "fruchterman_reingold_3d", "kamada_kawai_3d", "pmds_3d" - ] = "fruchterman_reingold_3d", - log_scale: bool = True, - normalize: bool = False, - node_size: float = 3.0, - opacity: float = 0.4, - show_b_nodes: bool = False, - cmap: str = "Inferno", - cache_layout: bool = False, - suppress_fig: bool = False, -) -> go.Figure: - """Plot a 3D graph of the specified component in the given PixelDataset. - - :param pxl_data: The PixelDataset containing the data. - :param component: The component to plot. - :param marker: The marker to use for coloring the nodes. Defaults to None. - :param layout_algorithm: The layout algorithm to use for positioning the nodes. Defaults to "fruchterman_reingold_3d". - :param log_scale: Whether to apply logarithmic scaling to the marker values. Defaults to True. - :param normalize: Whether to normalize the coordinates. Defaults to False. - :param node_size: The size of the nodes. Defaults to 3.0. - :param opacity: The opacity of the nodes. Defaults to 0.4. - :param show_b_nodes: Whether to show nodes of type B. Defaults to False. - :param cmap: The colormap to use for coloring the nodes. Defaults to "Inferno". - :param cache_layout: Whether to cache the layout coordinates. Defaults to False. - :param suppress_fig: Whether to suppress (i.e. not plot) the figure. Defaults to False. - :return: The plotted 3D graph. - :rtype: go.Figure - - """ - component_graph = _get_component_graph(pxl_data=pxl_data, component=component) - coordinates, _ = _get_coordinates( - component_graph=component_graph, - layout_algorithm=layout_algorithm, - cache_layout=cache_layout, - show_b_nodes=show_b_nodes, - ) - - if marker is not None: - if log_scale: - coordinates["color"] = np.log1p(coordinates[marker]) - else: - coordinates["color"] = coordinates[marker] - else: - coordinates["color"] = Color.SKYBLUE3 - - if normalize: - coordinates[["x", "y", "z"]] = coordinates[["x_norm", "y_norm", "z_norm"]] - - fig = plot_3d_from_coordinates( - coordinates=coordinates, - node_size=node_size, - opacity=opacity, - cmap=cmap, - suppress_fig=True, ) - fig.update_layout(title=component) - - if not suppress_fig: - fig.show() - - return fig - - -def _pivot_colocalization_data( - colocalization_data: pd.DataFrame, - value_col: str = "pearson", - markers: Union[list, None] = None, + # Counting data points inside the gate box + inside_box = ( + (data[marker1] >= gate["xmin"]) + & (data[marker1] < gate["xmax"]) + & (data[marker2] >= gate["ymin"]) + & (data[marker2] < gate["ymax"]) + ) + inside_percentage = f"{inside_box.mean() * 100:.1f}%" + ax.text( + x=gate["xmin"], + y=gate["ymax"], + s=inside_percentage, + verticalalignment="top", + horizontalalignment="left", + fontsize=10, + color="black", + ) + return + + +def density_scatter_plot( + adata: anndata.AnnData, + marker1: str, + marker2: str, + layer: str | None = None, + facet_row: str | None = None, + facet_column: str | None = None, + gate: pd.Series | pd.DataFrame | None = None, + show_marginal=False, ): - colocalization_data_pivot = pd.pivot_table( - colocalization_data, - index="marker_1", - columns="marker_2", - values=value_col, - fill_value=0, - ) - - if markers is not None: - colocalization_data_pivot = colocalization_data_pivot.loc[markers, markers] - - for m in colocalization_data_pivot.index: - colocalization_data_pivot.loc[m, m] = 0 # remove autocorrelations - - colocalization_data_pivot = colocalization_data_pivot.fillna(0) - - return colocalization_data_pivot - - -def _make_colocalization_symmetric( - colocalization_data: pd.DataFrame, - value_col: str = "pearson", -): - colocalization_data = pd.DataFrame( - np.concatenate( - [ - colocalization_data[["marker_1", "marker_2", value_col]].to_numpy(), - colocalization_data[["marker_2", "marker_1", value_col]].to_numpy(), - ], - ), - columns=["marker_1", "marker_2", value_col], - ) - colocalization_data = ( - colocalization_data.groupby(["marker_1", "marker_2"])[value_col] - .apply(lambda x: np.mean(x)) - .reset_index() - ) - - return colocalization_data - - -def plot_colocalization_heatmap( - colocalization_data: pd.DataFrame, - markers: Union[list, None] = None, - cmap: str = "vlag", - use_z_scores: bool = False, -) -> Tuple[plt.Figure, plt.Axes]: - """Plot a colocalization heatmap based on the provided colocalization data. - - The colocalization_data DataFrame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z". - Example usage: plot_colocalization_heatmap(pxl.colocalization). - - :param colocalization_data: The colocalization data to plot. The colocalization data frame that can be found in a pixel variable "pxl" through pxl.colocalization. The data frame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z", and "component". - :param markers: The markers to include in the heatmap. Defaults to None. - :param cmap: The colormap to use for the heatmap. Defaults to "vlag". - :param use_z_scores: Whether to use z-scores. Defaults to False. - - :return: The figure and axes objects of the plot. - :rtype: Tuple[plt.Figure, plt.Axes] - + """Pseudocolor density scatter plot. + + This function creates a scatter plot of abundance data for two markers colored + based on the density of points: + Example usage: `density_scatter_plot(pxl.adata, "CD3E", "CD4")`. + It is also possible to specify one or two variables for faceting the plot by + columns and rows: + Example usage: `density_scatter_plot(pxl.adata, "CD3E", "CD4", + facet_row = "stimulation", facet_column = "donor")`. + `facet_row` and `facet_column` should be names of categorical columns in `adata.obs`. + In addition, a gate can be specified as a Series with xmin, xmax, ymin, and ymax + to mark a range for components of interest. Alternatively, gate can be specified + as a DataFrame to allow for different gate ranges for various conditions. + When both facet_row and facet_column are specified, the condition becomes a + tuple (facet_row, facet_column), if only one is specified, that parameter + becomes the condition. The condition permuations are used as the index of + the gate. + Example usage: + gate = pd.DataFrame(columns = ["xmin", "ymin", "xmax", "ymax"]) + gate.loc["Resting"] = [2, 2, 5, 4] + gate.loc["PHA"] = [1.5, 1.5, 5, 4] + fig, ax = density_scatter_plot(pixel.adata, "CD3E", "CD4", layer="dsb", + facet_column="sample", gate=gate) + + + :param adata: Anndata object containing the marker abundance data per + component. + :param marker1: The first marker to plot (x-axis). + :param marker2: The second marker to plot (y-axis). + :param layer: The anndata layer (e.g. transformation) to use for the marker + data. Defaults to None. + :param facet_row: The column to use for faceting the plot by rows. + Defaults to None. + :param facet_column: The column to use for faceting the plot by columns. + Defaults to None. + :param gate: The gate to use for marking a range of interest. Defaults to + None. + :param show_marginal: Whether to show marginal distributions. Defaults to False. """ - if use_z_scores: - value_col = "pearson_z" - else: - value_col = "pearson" - - colocalization_data = _make_colocalization_symmetric(colocalization_data, value_col) - - colocalization_data_pivot = _pivot_colocalization_data( - colocalization_data, value_col, markers=markers - ) - sns.clustermap( - colocalization_data_pivot, - yticklabels=True, - xticklabels=True, - linewidths=0.1, - method="complete", - cmap=cmap, - ) - - return plt.gcf(), plt.gca() - - -def _get_top_marker_pairs( - colocalization_data: pd.DataFrame, - n_top_marker_pairs: int, - value_col: str = "pearson", -) -> list: - colocalization_data["abs_val"] = colocalization_data[value_col].abs() - top_marker_pairs = colocalization_data.nlargest(n_top_marker_pairs, "abs_val") - top_markers = list( - set(top_marker_pairs["marker_1"]).union(set(top_marker_pairs["marker_2"])) - ) - - return top_markers - - -def plot_colocalization_diff_heatmap( - colocalization_data: pd.DataFrame, - target: str, - reference: str, - contrast_column: str = "sample", - markers: Union[list, None] = None, - n_top_marker_pairs: Union[int, None] = None, - cmap: str = "vlag", - use_z_score: bool = True, -) -> Tuple[plt.Figure, plt.Axes]: - """Plot the differential colocalization between reference and target components. - - Example usage: plot_colocalization_diff_heatmap(pxl.colocalization, target:"stimulated", reference:"control", contrast_column="sample"). - - :param colocalization_data: The colocalization data frame that can be found in a pixel variable "pxl" through pxl.colocalization. The data frame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z", and the contrast_column. - :param target: The label for target components in the contrast_column. - :param reference: The label for reference components in the contrast_column. - :param contrast_column: The column to use for the contrast. Defaults to "sample". - :param markers: The markers to include in the heatmap. Defaults to None. At most only one of n_top_marker_pairs or markers should be provided. - :param n_top_marker_pairs: The number of top marker pairs to include in the heatmap. Defaults to None. At most only one of n_top_marker_pairs or markers should be provided. - :param cmap: The colormap to use for the heatmap. Defaults to "vlag". - :param use_z_score: Whether to use the z-score. Defaults to True. - - :return: The figure and axes objects of the plot. - :rtype: Tuple[plt.Figure, plt.Axes] - """ - assert ( - markers is None or n_top_marker_pairs is None - ), "Only one of markers or n_top_marker_pairs can be provided." - - if use_z_score: - value_col = "pearson_z" - else: - value_col = "pearson" - - if markers is not None: - filter_mask = (colocalization_data["marker_1"].isin(markers)) & ( - colocalization_data["marker_2"].isin(markers) - ) - colocalization_data = colocalization_data[filter_mask] - - differential_colocalization = get_differential_colocalization( - colocalization_data, - target=target, - reference=reference, - contrast_column=contrast_column, - use_z_score=use_z_score, - ) - - differential_colocalization = differential_colocalization.fillna(0).reset_index() - - if n_top_marker_pairs is not None: - top_markers = _get_top_marker_pairs( - differential_colocalization, n_top_marker_pairs, "median_difference" + layer_data = adata.to_df(layer) + data = layer_data.loc[:, [marker1, marker2]] + data.loc[:, "density"] = gaussian_kde(data.T)(data.T) + if facet_column is not None: + data.loc[:, facet_column] = adata.obs.loc[:, facet_column] + + if facet_row is not None: + data.loc[:, facet_row] = adata.obs.loc[:, facet_row] + + if facet_column is not None or facet_row is not None: + if show_marginal: + warnings.warn("show_marginal is not supported for faceted plots.") + plot_grid = sns.FacetGrid(data=data, col=facet_column, row=facet_row) + plot_grid.map_dataframe( + sns.scatterplot, + x=marker1, + y=marker2, + hue="density", + palette=jet_colormap, + size=0.1, ) + if gate is not None: + plot_grid.map_dataframe( + _add_gate_box, + gate=gate, + marker1=marker1, + marker2=marker2, + facet_row=facet_row, + facet_column=facet_column, + ) + plot_grid.refline(x=0, y=0) else: - top_markers = None - - # Making the differential colocalization symmetric - differential_colocalization = _make_colocalization_symmetric( - differential_colocalization, "median_difference" - ) - - pivoted_differential_colocalization = _pivot_colocalization_data( - differential_colocalization, - "median_difference", - markers=top_markers, - ) - - max_value = np.max(np.abs(pivoted_differential_colocalization.to_numpy().flatten())) - sns.clustermap( - pivoted_differential_colocalization, - yticklabels=True, - xticklabels=True, - method="complete", - linewidths=0.1, - vmin=-max_value, - vmax=max_value, - cmap=cmap, - ) - + plot_grid = _plot_joint_distribution( + data, x=marker1, y=marker2, show_marginal=show_marginal + ) + if gate is not None: + _add_gate_box( + data, marker1=marker1, marker2=marker2, ax=plot_grid.ax_joint, gate=gate + ) + plot_grid.ax_joint.axhline(0, color="black", linewidth=1, linestyle="--") + plot_grid.ax_joint.axvline(0, color="black", linewidth=1, linestyle="--") return plt.gcf(), plt.gca() - - -def _add_top_marker_labels( - differential_colocalization, - ax, - n_top_pairs: int = 5, - min_log_p: float = 5.0, -): - differential_colocalization = differential_colocalization.sort_values( - "median_difference" - ) - differential_colocalization = differential_colocalization.loc[ - -np.log10(differential_colocalization["p_adj"]) > min_log_p, : - ] - - ## Labels for marker pair withs highest negative differential colocalization scores - for _, row in differential_colocalization.head(n_top_pairs).iterrows(): - x, y = row[["median_difference", "p_adj"]] - y = -np.log10(y) - if x > 0: - continue - ax.text(x, y, row["markers"], horizontalalignment="left", fontsize="xx-small") - - ## Labels for marker pair with highest positive differential colocalization scores - for _, row in differential_colocalization.tail(n_top_pairs).iterrows(): - x, y = row[["median_difference", "p_adj"]] - y = -np.log10(y) - if x < 0: - continue - ax.text(x, y, row["markers"], horizontalalignment="left", fontsize="xx-small") - - -def _add_target_mean_colocalizations( - differential_colocalization, - target_coloc, - value_col, -): - differential_colocalization = differential_colocalization.fillna(0).reset_index() - - target_values = ( - target_coloc.groupby(["marker_1", "marker_2"])[value_col].mean().reset_index() - ) - differential_colocalization = pd.merge( - target_values, - differential_colocalization, - on=["marker_1", "marker_2"], - how="inner", - ) - - return differential_colocalization - - -def plot_colocalization_diff_volcano( - colocalization_data: pd.DataFrame, - target: str, - reference: str, - contrast_column: str = "sample", - cmap: str = "vlag", - use_z_score: bool = True, - n_top_pairs: int = 5, - min_log_p: float = 5.0, - ax: Optional[plt.Axes] = None, -) -> Tuple[plt.Figure, plt.Axes]: - """Generate the volcano plot of differential colocalization between reference and target components. - - Example usage: `plot_colocalization_diff_volcano(pxl.colocalization, target:"stimulated", reference:"control", contrast_column="sample")`. - - :param colocalization_data: The colocalization data frame that can be found in a pixel variable - "pxl" through pxl.colocalization. The data frame should contain the - columns "marker_1", "marker_2", "pearson", "pearson_z", and the contrast_column. - :param target: The label for target components in the contrast_column. - :param reference: The label for reference components in the contrast_column. - :param contrast_column: The column to use for the contrast. Defaults to "sample". - :param cmap: The colormap to use for the heatmap. Defaults to "vlag". - :param use_z_score: Whether to use the z-score. Defaults to True. - :param n_top_pairs: Number of high value marker-pairs to label from positive and negative sides. - :param min_log_p: marker-pairs only receive a label if -log10 of their p-value is higher than - this parameter. - - :return: The figure and axes objects of the plot. - :rtype: Tuple[plt.Figure, plt.Axes] - """ - if use_z_score: - value_col = "pearson_z" - else: - value_col = "pearson" - - differential_colocalization = get_differential_colocalization( - colocalization_data, - target=target, - reference=reference, - contrast_column=contrast_column, - use_z_score=use_z_score, - ) - - differential_colocalization = _add_target_mean_colocalizations( - differential_colocalization, - target_coloc=colocalization_data.loc[ - colocalization_data[contrast_column] == target, : - ], - value_col=value_col, - ) - - if ax is None: - fig, ax = plt.subplots() - - p = ax.scatter( - x=differential_colocalization["median_difference"], - y=-np.log10(differential_colocalization["p_adj"]), - c=differential_colocalization[value_col], - s=20, - marker="o", - cmap=cmap, - ) - - ax.set(xlabel="Median difference", ylabel=r"$-\log_{10}$(adj. p-value)") - fig = plt.gcf() - fig.colorbar(p, label="Mean target colocalization score", cmap=cmap) - _add_top_marker_labels( - differential_colocalization, - n_top_pairs=n_top_pairs, - min_log_p=min_log_p, - ax=ax, - ) - - return fig, ax - - -@experimental -def plot_3d_heatmap( - component_graph: Graph, - marker: str, - distance_cutoff: float, - layout_algorithm: Literal[ - "fruchterman_reingold_3d", "kamada_kawai_3d" - ] = "fruchterman_reingold_3d", - cache_layout: bool = False, -) -> Tuple[plt.Figure, plt.Axes]: - """Plot a 3D heatmap for the marker in the provided component. - - :param component_graph: A component graph to plot for. - :param marker: marker to plot this for. - :param distance_cutoff: a distance cutoff to use for determining size of - area to consider as close in the density calculation. - :param layout_algorithm: Layout algorithm to use. Options are: - "fruchterman_reingold_3d" and "kamada_kawai_3d" - :param cache_layout: set this to `True` to cache the layout - or faster computations on subsequent calls. This comes at the - cost of additional memory usage. - :return: A matplotlib 3D heatmap figure, and it's associated Axes instance - :rtype: Tuple[plt.Figure, plt.Axes] - :raises: AssertionError if the provided `layout_algorithm` is not valid, - or there are no with markers for the provided `marker` - """ - coordinates = component_graph.layout_coordinates( - layout_algorithm=layout_algorithm, cache=cache_layout - ) - coordinates = coordinates[coordinates[marker] > 0] - coordinates = np.array(coordinates[["x_norm", "y_norm", "z_norm"]]) - if len(coordinates) < 1: - raise AssertionError(f"No nodes found with {marker}.") - - horizontal_resolution = 120 - vertical_resolution = 80 - X, Y, Z = _unit_sphere_surface( - horizontal_resolution=horizontal_resolution, - vertical_resolution=vertical_resolution, - ) - - densities = _calculate_densities( - coordinates=coordinates, - distance_cutoff=distance_cutoff, - unit_sphere_surface=(X, Y, Z), - ) - - fig = plt.figure(figsize=(6, 6)) - ax = fig.add_subplot(1, 1, 1, projection="3d") - color_scale = cm.inferno( # type: ignore - densities.reshape(horizontal_resolution, -1) - ) - ax.plot_surface( # type: ignore - X, - Y, - Z, - cstride=1, - rstride=1, - facecolors=color_scale, - shade=False, - ) - ax.set_axis_off() - ax.set_box_aspect([1.0, 1.0, 1.0]) # type: ignore - return fig, ax diff --git a/src/pixelator/plot/constants.py b/src/pixelator/plot/constants.py index ceeaf2d0..cd2d94f7 100644 --- a/src/pixelator/plot/constants.py +++ b/src/pixelator/plot/constants.py @@ -1,6 +1,6 @@ """Contains constants used as part of plotting modules. -Copyright (c) 2023 Pixelgen Technologies AB. +Copyright © 2023 Pixelgen Technologies AB. """ @@ -11,3 +11,14 @@ class Color: ORANGERED2 = "#ee4000" SKYBLUE3 = "#6ca6cd" NETWORKX_NODE_COLOR = "#1f78b4" + JETSET = [ + "#00007F", # dark blue + "#0000FF", # blue + "#007FFF", # azure + "#00FFFF", # cyan + "#7FFF7F", # light green + "#FFFF00", # yellow + "#FF7F00", # orange + "#FF0000", # red + "#7F0000", # dark red + ] diff --git a/src/pixelator/plot/layout_plots.py b/src/pixelator/plot/layout_plots.py new file mode 100644 index 00000000..1c94ecf9 --- /dev/null +++ b/src/pixelator/plot/layout_plots.py @@ -0,0 +1,491 @@ +"""Functions for plotting component layouts for MPX data. + +Copyright © 2024 Pixelgen Technologies AB. +""" + +from typing import List, Literal, Tuple, Union + +import matplotlib.pyplot as plt +import networkx as nx +import numpy as np +import pandas as pd +import plotly.graph_objects as go +import polars as pl +import scipy +from matplotlib import cm +from matplotlib.colors import Normalize + +from pixelator.graph import Graph +from pixelator.graph.backends.protocol import SupportedLayoutAlgorithm +from pixelator.marks import experimental +from pixelator.pixeldataset import PixelDataset +from pixelator.plot.constants import Color + + +def _unit_sphere_surface(horizontal_resolution, vertical_resolution): + horizontal_angles = np.linspace(0, 2 * np.pi, horizontal_resolution) + vertical_angles = np.linspace(0, np.pi, vertical_resolution) + + X = np.outer(np.cos(horizontal_angles), np.sin(vertical_angles)) + Y = np.outer(np.sin(horizontal_angles), np.sin(vertical_angles)) + Z = np.outer(np.ones(np.size(horizontal_angles)), np.cos(vertical_angles)) + return X, Y, Z + + +def _calculate_distance_to_unit_sphere_zones(coordinates, unit_sphere_surface): + X, Y, Z = unit_sphere_surface + zones_on_sphere_surface = np.stack([X, Y, Z], axis=2).reshape(-1, 3) + return scipy.spatial.distance.cdist( + zones_on_sphere_surface, coordinates, "euclidean" + ) + + +def _calculate_densities(coordinates, distance_cutoff, unit_sphere_surface): + dist = _calculate_distance_to_unit_sphere_zones( + coordinates=coordinates, unit_sphere_surface=unit_sphere_surface + ) + raw_sums = np.sum( + 1 - (dist / distance_cutoff), where=(dist < distance_cutoff), axis=1 + ) + raw_sums[raw_sums <= 1] = 0 + densities = np.log(raw_sums, out=raw_sums, where=(raw_sums > 1)) + densities = densities / np.max(densities) + return densities + + +def _get_component_graph(pxl_data: PixelDataset, component: str): + component_edges = pxl_data.edgelist_lazy.filter(pl.col("component") == component) + component_graph = Graph.from_edgelist( + component_edges, + add_marker_counts=True, + simplify=True, + use_full_bipartite=True, + ) + return component_graph + + +def _get_coordinates( + pxl_data: PixelDataset, + component: str, + layout_algorithm: SupportedLayoutAlgorithm | None = None, + cache_layout: bool = False, + show_b_nodes: bool = False, + random_seed: int | None = None, +) -> pd.DataFrame: + component_graph = _get_component_graph(pxl_data=pxl_data, component=component) + if ( + layout_algorithm is None + and hasattr(pxl_data, "precomputed_layouts") + and pxl_data.precomputed_layouts is not None + ): + coordinates = pxl_data.precomputed_layouts.filter( + component_ids=component + ).to_df() + else: + if layout_algorithm is None: + layout_algorithm = "pmds_3d" + coordinates = component_graph.layout_coordinates( + layout_algorithm=layout_algorithm, # type: ignore + cache=cache_layout, + only_keep_a_pixels=not show_b_nodes, + random_seed=random_seed, + ) + + filtered_coordinates = coordinates + filtered_coordinates["pixel_type"] = [ + component_graph.raw.nodes[ind]["pixel_type"] + for ind in filtered_coordinates.index + ] + + if not show_b_nodes: + filtered_coordinates = filtered_coordinates[ + filtered_coordinates["pixel_type"] == "A" + ] + + edgelist = pd.DataFrame(component_graph.es) + edgelist = edgelist[edgelist[0].isin(filtered_coordinates.index)] + edgelist = edgelist[edgelist[1].isin(filtered_coordinates.index)] + edgelist = edgelist.loc[:, [0, 1]].to_numpy() + + return filtered_coordinates, edgelist, component_graph + + +def _plot_for_legend(coordinates: pd.DataFrame, axis, show_b_nodes, cmap, node_size): + a_node_example = coordinates[coordinates["pixel_type"] == "A"].iloc[0, :] + axis.scatter( + a_node_example["x"], + a_node_example["y"], + c=0, + cmap=cmap, + vmin=0, + s=node_size, + label="A-nodes", + ) + if show_b_nodes: + b_node_example = coordinates[coordinates["pixel_type"] == "B"].iloc[0, :] + axis.scatter( + b_node_example["x"], + b_node_example["y"], + c=1, + cmap=cmap, + vmin=0, + s=node_size, + label="B-nodes", + ) + + +def _decorate_plot( + im=None, + include_colorbar: bool = False, + vmax: float = 0, + cmap: str = "cool", + ax=None, + fig=None, + legend_ax=None, +): + if include_colorbar: + if isinstance(ax, np.ndarray): + fig.colorbar( + im, + ax=ax.ravel().tolist(), + cmap=cmap, + norm=Normalize(vmin=0, vmax=vmax), + ) + else: + fig.colorbar( + im, + ax=ax, + cmap=cmap, + norm=Normalize(vmin=0, vmax=vmax), + ) + if legend_ax is not None: + if not include_colorbar: + handles, labels = legend_ax.get_legend_handles_labels() + fig.legend(handles, labels, loc="right") + plt.subplots_adjust(right=0.80) + else: + raise AssertionError( + "Plotting pixel_type together with other markers is not supported." + ) + + +def _get_current_axis(ax, i_m, i_c, marker_list, component): + if len(marker_list) == 1: + if len(component) == 1: + crnt_ax = ax + else: + crnt_ax = ax[i_c] + else: + if len(component) == 1: + crnt_ax = ax[i_m] + else: + crnt_ax = ax[i_m, i_c] + + if i_c == 0: # Set the y-label only for the first column + crnt_ax.set_ylabel(marker_list[i_m], rotation=90, size="large") + if i_m == 0: # Set the title only for the first row + crnt_ax.set_title(component[i_c]) + + return crnt_ax + + +def _get_color_values(mark, filtered_coordinates, log_scale, vmax): + if mark is None: + color_val = Color.NETWORKX_NODE_COLOR + elif mark == "pixel_type": + color_val = filtered_coordinates["pixel_type"] == "B" + elif mark not in filtered_coordinates.columns: + raise AssertionError(f"Marker {mark} not found in the component graph.") + else: + if log_scale: + color_val = np.log1p(filtered_coordinates.loc[:, mark]) + else: + color_val = filtered_coordinates.loc[:, mark] + vmax = max(vmax, np.max(color_val)) + + return color_val, vmax + + +def plot_2d_graph( + pxl_data: PixelDataset, + component: str | List[str], + marker: str | List[str] = "pixel_type", + layout_algorithm: SupportedLayoutAlgorithm | None = None, + show_edges: bool = False, + log_scale: bool = True, + node_size: float = 10.0, + edge_width: float = 1.0, + show_b_nodes: bool = False, + cmap: str = "cool", + alpha: float = 0.5, + cache_layout: bool = False, + random_seed: int | None = None, +) -> Tuple[plt.Figure, plt.Axes | np.ndarray]: + """Plot a (collection of) 2D graph(s) based on the given pixel data. + + The graph can be plotted for one or a list of components. + The graph nodes can be colored by a marker. The marker can be a (list of) marker(s) or "pixel_type". + Example usage: plot_2d_graph(pxl, component=["PXLCMP0000000"], marker=["HLA-ABC", "HLA-RA"]). + + :param pxl_data: The pixel dataset to plot. + :param component: The component(s) to plot. Defaults to None. + :param marker: The marker attribute to use for coloring the nodes. Defaults to "pixel_type". + :param layout_algorithm: The layout algorithm to use. Defaults to None (checking for pre-computed). + :param show_edges: Whether to show the edges in the graph. Defaults to False. + :param log_scale: Whether to use a logarithmic scale for the marker attribute. Defaults to True. + :param node_size: The size of the nodes. Defaults to 10.0. + :param edge_width: The width of the edges. Defaults to 1.0. + :param show_b_nodes: Whether to show the B-nodes. Defaults to False. + :param cmap: The colormap to use for coloring the nodes. Defaults to "cool". + :param alpha: The alpha value for the nodes. Defaults to 0.7. + :param cache_layout: Whether to cache the layout coordinates. Defaults to False. + :param random_seed: The random seed to use for the layout algorithm. Defaults to None. + + :return: The figure and axes objects of the plot. + :rtype: Tuple[plt.Figure, plt.Axes] + + :raises: AssertionError if the marker is not found in the component graph. + :raises: AssertionError if no nodes are found with the specified marker. + :raises: AssertionError if "pixel_type" is in the markers together with other markers. + + """ + if isinstance(component, str): + component = [component] + + if isinstance(marker, str): + marker_list = [marker] + else: + marker_list = marker + + fig, ax = plt.subplots(nrows=len(marker_list), ncols=len(component)) + + include_colorbar = False + vmax = 0 # maximum value for colorbar + for i_c, comp in enumerate(component): + coordinates, edgelist, component_graph = _get_coordinates( + pxl_data=pxl_data, + component=comp, + layout_algorithm=layout_algorithm, + cache_layout=cache_layout, + show_b_nodes=show_b_nodes, + random_seed=random_seed, + ) + + for i_m, mark in enumerate(marker_list): + crnt_ax = _get_current_axis(ax, i_m, i_c, marker_list, component) + color_val, vmax = _get_color_values(mark, coordinates, log_scale, vmax) + if mark != "pixel_type": + include_colorbar = True + + im = nx.draw_networkx( + component_graph.raw, + nodelist=coordinates.index, + pos=coordinates.loc[:, ["x", "y"]].T.to_dict("list"), + ax=crnt_ax, + node_size=node_size, + node_color=color_val, + cmap=cmap, + width=edge_width, + with_labels=False, + edgelist=edgelist if show_edges else [], + label="_nolegend_", + alpha=alpha, + ) + + if mark == "pixel_type": + # Re-plot one point from each pixel type to add a legend + _plot_for_legend(coordinates, crnt_ax, show_b_nodes, cmap, node_size) + legend_ax = crnt_ax + else: + legend_ax = None + + crnt_ax.grid(False) + crnt_ax.spines[:].set_visible(False) + crnt_ax.set_xticks([]) + crnt_ax.set_yticks([]) + + _decorate_plot( + im=im, + include_colorbar=include_colorbar, + vmax=vmax, + cmap=cmap, + ax=ax, + fig=fig, + legend_ax=legend_ax, + ) + + return fig, ax + + +def plot_3d_from_coordinates( + coordinates: pd.DataFrame, + node_size: float = 3.0, + opacity: float = 0.4, + cmap: str = "Inferno", + suppress_fig: bool = False, +) -> go.Figure: + """Plot a 3D graph from the given coordinates. + + :param coordinates: The coordinates to plot. + :param node_size: The size of the nodes. Defaults to 3.0. + :param opacity: The opacity of the nodes. Defaults to 0.4. + :param cmap: The colormap to use for coloring the nodes. Defaults to "Inferno". + :param suppress_fig: Whether to suppress (i.e. not plot) the figure. Defaults to False. + :return: The plotted 3D graph. + :rtype: go.Figure + + """ + fig = go.Figure( + data=[ + go.Scatter3d( + x=coordinates["x"], + y=coordinates["y"], + z=coordinates["z"], + mode="markers", + marker=dict( + size=node_size, + color=coordinates["color"], + colorscale=cmap, + opacity=opacity, + colorbar=dict(thickness=20, title="color"), + ), + ) + ] + ) + + if not suppress_fig: + fig.show() + return fig + + +def plot_3d_graph( + pxl_data: PixelDataset, + component: str, + marker: Union[list, None] = None, + layout_algorithm: SupportedLayoutAlgorithm | None = None, + log_scale: bool = True, + normalize: bool = False, + node_size: float = 3.0, + opacity: float = 0.4, + show_b_nodes: bool = False, + cmap: str = "Inferno", + cache_layout: bool = False, + suppress_fig: bool = False, +) -> go.Figure: + """Plot a 3D graph of the specified component in the given PixelDataset. + + :param pxl_data: The PixelDataset containing the data. + :param component: The component to plot. + :param marker: The marker to use for coloring the nodes. Defaults to None. + :param layout_algorithm: The layout algorithm to use for positioning the nodes. Defaults to "fruchterman_reingold_3d". + :param log_scale: Whether to apply logarithmic scaling to the marker values. Defaults to True. + :param normalize: Whether to normalize the coordinates. Defaults to False. + :param node_size: The size of the nodes. Defaults to 3.0. + :param opacity: The opacity of the nodes. Defaults to 0.4. + :param show_b_nodes: Whether to show nodes of type B. Defaults to False. + :param cmap: The colormap to use for coloring the nodes. Defaults to "Inferno". + :param cache_layout: Whether to cache the layout coordinates. Defaults to False. + :param suppress_fig: Whether to suppress (i.e. not plot) the figure. Defaults to False. + :return: The plotted 3D graph. + :rtype: go.Figure + + """ + coordinates, _, _ = _get_coordinates( + pxl_data=pxl_data, + component=component, + layout_algorithm=layout_algorithm, + cache_layout=cache_layout, + show_b_nodes=show_b_nodes, + ) + + if marker is not None: + if log_scale: + coordinates["color"] = np.log1p(coordinates[marker]) + else: + coordinates["color"] = coordinates[marker] + else: + coordinates["color"] = Color.SKYBLUE3 + + if normalize: + coordinates[["x", "y", "z"]] = coordinates[["x_norm", "y_norm", "z_norm"]] + + fig = plot_3d_from_coordinates( + coordinates=coordinates, + node_size=node_size, + opacity=opacity, + cmap=cmap, + suppress_fig=True, + ) + + fig.update_layout(title=component) + + if not suppress_fig: + fig.show() + + return fig + + +@experimental +def plot_3d_heatmap( + component_graph: Graph, + marker: str, + distance_cutoff: float, + layout_algorithm: Literal[ + "fruchterman_reingold_3d", "kamada_kawai_3d" + ] = "fruchterman_reingold_3d", + cache_layout: bool = False, +) -> Tuple[plt.Figure, plt.Axes]: + """Plot a 3D heatmap for the marker in the provided component. + + :param component_graph: A component graph to plot for. + :param marker: marker to plot this for. + :param distance_cutoff: a distance cutoff to use for determining size of + area to consider as close in the density calculation. + :param layout_algorithm: Layout algorithm to use. Options are: + "fruchterman_reingold_3d" and "kamada_kawai_3d" + :param cache_layout: set this to `True` to cache the layout + or faster computations on subsequent calls. This comes at the + cost of additional memory usage. + :return: A matplotlib 3D heatmap figure, and it's associated Axes instance + :rtype: Tuple[plt.Figure, plt.Axes] + :raises: AssertionError if the provided `layout_algorithm` is not valid, + or there are no with markers for the provided `marker` + """ + coordinates = component_graph.layout_coordinates( + layout_algorithm=layout_algorithm, cache=cache_layout + ) + coordinates = coordinates[coordinates[marker] > 0] + coordinates = np.array(coordinates[["x_norm", "y_norm", "z_norm"]]) + if len(coordinates) < 1: + raise AssertionError(f"No nodes found with {marker}.") + + horizontal_resolution = 120 + vertical_resolution = 80 + X, Y, Z = _unit_sphere_surface( + horizontal_resolution=horizontal_resolution, + vertical_resolution=vertical_resolution, + ) + + densities = _calculate_densities( + coordinates=coordinates, + distance_cutoff=distance_cutoff, + unit_sphere_surface=(X, Y, Z), + ) + + fig = plt.figure(figsize=(6, 6)) + ax = fig.add_subplot(1, 1, 1, projection="3d") + color_scale = cm.inferno( # type: ignore + densities.reshape(horizontal_resolution, -1) + ) + ax.plot_surface( # type: ignore + X, + Y, + Z, + cstride=1, + rstride=1, + facecolors=color_scale, + shade=False, + ) + ax.set_axis_off() + ax.set_box_aspect([1.0, 1.0, 1.0]) # type: ignore + return fig, ax diff --git a/src/pixelator/plot/spatial_analysis_plots.py b/src/pixelator/plot/spatial_analysis_plots.py new file mode 100644 index 00000000..16296fb8 --- /dev/null +++ b/src/pixelator/plot/spatial_analysis_plots.py @@ -0,0 +1,325 @@ +"""Functions for creating spatial analysis plots for MPX data. + +Copyright © 2024 Pixelgen Technologies AB. +""" + +from typing import Optional, Tuple, Union + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import seaborn as sns + +from pixelator.analysis.colocalization import get_differential_colocalization + + +def _pivot_colocalization_data( + colocalization_data: pd.DataFrame, + value_col: str = "pearson", + markers: Union[list, None] = None, +): + colocalization_data_pivot = pd.pivot_table( + colocalization_data, + index="marker_1", + columns="marker_2", + values=value_col, + fill_value=0, + ) + + if markers is not None: + colocalization_data_pivot = colocalization_data_pivot.loc[markers, markers] + + for m in colocalization_data_pivot.index: + colocalization_data_pivot.loc[m, m] = 0 # remove autocorrelations + + colocalization_data_pivot = colocalization_data_pivot.fillna(0) + + return colocalization_data_pivot + + +def _make_colocalization_symmetric( + colocalization_data: pd.DataFrame, + value_col: str = "pearson", +): + colocalization_data = pd.DataFrame( + np.concatenate( + [ + colocalization_data[["marker_1", "marker_2", value_col]].to_numpy(), + colocalization_data[["marker_2", "marker_1", value_col]].to_numpy(), + ], + ), + columns=["marker_1", "marker_2", value_col], + ) + colocalization_data = ( + colocalization_data.groupby(["marker_1", "marker_2"])[value_col] + .apply(lambda x: np.mean(x)) + .reset_index() + ) + + return colocalization_data + + +def plot_colocalization_heatmap( + colocalization_data: pd.DataFrame, + markers: Union[list, None] = None, + cmap: str = "vlag", + use_z_scores: bool = False, +) -> Tuple[plt.Figure, plt.Axes]: + """Plot a colocalization heatmap based on the provided colocalization data. + + The colocalization_data DataFrame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z". + Example usage: plot_colocalization_heatmap(pxl.colocalization). + + :param colocalization_data: The colocalization data to plot. The colocalization data frame that can be found in a pixel variable "pxl" through pxl.colocalization. The data frame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z", and "component". + :param markers: The markers to include in the heatmap. Defaults to None. + :param cmap: The colormap to use for the heatmap. Defaults to "vlag". + :param use_z_scores: Whether to use z-scores. Defaults to False. + + :return: The figure and axes objects of the plot. + :rtype: Tuple[plt.Figure, plt.Axes] + + """ + if use_z_scores: + value_col = "pearson_z" + else: + value_col = "pearson" + + colocalization_data = _make_colocalization_symmetric(colocalization_data, value_col) + + colocalization_data_pivot = _pivot_colocalization_data( + colocalization_data, value_col, markers=markers + ) + sns.clustermap( + colocalization_data_pivot, + yticklabels=True, + xticklabels=True, + linewidths=0.1, + method="complete", + cmap=cmap, + ) + + return plt.gcf(), plt.gca() + + +def _get_top_marker_pairs( + colocalization_data: pd.DataFrame, + n_top_marker_pairs: int, + value_col: str = "pearson", +) -> list: + colocalization_data["abs_val"] = colocalization_data[value_col].abs() + top_marker_pairs = colocalization_data.nlargest(n_top_marker_pairs, "abs_val") + top_markers = list( + set(top_marker_pairs["marker_1"]).union(set(top_marker_pairs["marker_2"])) + ) + + return top_markers + + +def plot_colocalization_diff_heatmap( + colocalization_data: pd.DataFrame, + target: str, + reference: str, + contrast_column: str = "sample", + markers: Union[list, None] = None, + n_top_marker_pairs: Union[int, None] = None, + cmap: str = "vlag", + use_z_score: bool = True, +) -> Tuple[plt.Figure, plt.Axes]: + """Plot the differential colocalization between reference and target components. + + Example usage: plot_colocalization_diff_heatmap(pxl.colocalization, target:"stimulated", reference:"control", contrast_column="sample"). + + :param colocalization_data: The colocalization data frame that can be found in a pixel variable "pxl" through pxl.colocalization. The data frame should contain the columns "marker_1", "marker_2", "pearson", "pearson_z", and the contrast_column. + :param target: The label for target components in the contrast_column. + :param reference: The label for reference components in the contrast_column. + :param contrast_column: The column to use for the contrast. Defaults to "sample". + :param markers: The markers to include in the heatmap. Defaults to None. At most only one of n_top_marker_pairs or markers should be provided. + :param n_top_marker_pairs: The number of top marker pairs to include in the heatmap. Defaults to None. At most only one of n_top_marker_pairs or markers should be provided. + :param cmap: The colormap to use for the heatmap. Defaults to "vlag". + :param use_z_score: Whether to use the z-score. Defaults to True. + + :return: The figure and axes objects of the plot. + :rtype: Tuple[plt.Figure, plt.Axes] + """ + assert ( + markers is None or n_top_marker_pairs is None + ), "Only one of markers or n_top_marker_pairs can be provided." + + if use_z_score: + value_col = "pearson_z" + else: + value_col = "pearson" + + if markers is not None: + filter_mask = (colocalization_data["marker_1"].isin(markers)) & ( + colocalization_data["marker_2"].isin(markers) + ) + colocalization_data = colocalization_data[filter_mask] + + differential_colocalization = get_differential_colocalization( + colocalization_data, + target=target, + reference=reference, + contrast_column=contrast_column, + use_z_score=use_z_score, + ) + + differential_colocalization = differential_colocalization.fillna(0).reset_index() + + if n_top_marker_pairs is not None: + top_markers = _get_top_marker_pairs( + differential_colocalization, n_top_marker_pairs, "median_difference" + ) + else: + top_markers = None + + # Making the differential colocalization symmetric + differential_colocalization = _make_colocalization_symmetric( + differential_colocalization, "median_difference" + ) + + pivoted_differential_colocalization = _pivot_colocalization_data( + differential_colocalization, + "median_difference", + markers=top_markers, + ) + + max_value = np.max(np.abs(pivoted_differential_colocalization.to_numpy().flatten())) + sns.clustermap( + pivoted_differential_colocalization, + yticklabels=True, + xticklabels=True, + method="complete", + linewidths=0.1, + vmin=-max_value, + vmax=max_value, + cmap=cmap, + ) + + return plt.gcf(), plt.gca() + + +def _add_top_marker_labels( + differential_colocalization, + ax, + n_top_pairs: int = 5, + min_log_p: float = 5.0, +): + differential_colocalization = differential_colocalization.sort_values( + "median_difference" + ) + differential_colocalization = differential_colocalization.loc[ + -np.log10(differential_colocalization["p_adj"]) > min_log_p, : + ] + + ## Labels for marker pair withs highest negative differential colocalization scores + for _, row in differential_colocalization.head(n_top_pairs).iterrows(): + x, y = row[["median_difference", "p_adj"]] + y = -np.log10(y) + if x > 0: + continue + ax.text(x, y, row["markers"], horizontalalignment="left", fontsize="xx-small") + + ## Labels for marker pair with highest positive differential colocalization scores + for _, row in differential_colocalization.tail(n_top_pairs).iterrows(): + x, y = row[["median_difference", "p_adj"]] + y = -np.log10(y) + if x < 0: + continue + ax.text(x, y, row["markers"], horizontalalignment="left", fontsize="xx-small") + + +def _add_target_mean_colocalizations( + differential_colocalization, + target_coloc, + value_col, +): + differential_colocalization = differential_colocalization.fillna(0).reset_index() + + target_values = ( + target_coloc.groupby(["marker_1", "marker_2"])[value_col].mean().reset_index() + ) + differential_colocalization = pd.merge( + target_values, + differential_colocalization, + on=["marker_1", "marker_2"], + how="inner", + ) + + return differential_colocalization + + +def plot_colocalization_diff_volcano( + colocalization_data: pd.DataFrame, + target: str, + reference: str, + contrast_column: str = "sample", + cmap: str = "vlag", + use_z_score: bool = True, + n_top_pairs: int = 5, + min_log_p: float = 5.0, + ax: Optional[plt.Axes] = None, +) -> Tuple[plt.Figure, plt.Axes]: + """Generate the volcano plot of differential colocalization between reference and target components. + + Example usage: `plot_colocalization_diff_volcano(pxl.colocalization, target:"stimulated", reference:"control", contrast_column="sample")`. + + :param colocalization_data: The colocalization data frame that can be found in a pixel variable + "pxl" through pxl.colocalization. The data frame should contain the + columns "marker_1", "marker_2", "pearson", "pearson_z", and the contrast_column. + :param target: The label for target components in the contrast_column. + :param reference: The label for reference components in the contrast_column. + :param contrast_column: The column to use for the contrast. Defaults to "sample". + :param cmap: The colormap to use for the heatmap. Defaults to "vlag". + :param use_z_score: Whether to use the z-score. Defaults to True. + :param n_top_pairs: Number of high value marker-pairs to label from positive and negative sides. + :param min_log_p: marker-pairs only receive a label if -log10 of their p-value is higher than + this parameter. + + :return: The figure and axes objects of the plot. + :rtype: Tuple[plt.Figure, plt.Axes] + """ + if use_z_score: + value_col = "pearson_z" + else: + value_col = "pearson" + + differential_colocalization = get_differential_colocalization( + colocalization_data, + target=target, + reference=reference, + contrast_column=contrast_column, + use_z_score=use_z_score, + ) + + differential_colocalization = _add_target_mean_colocalizations( + differential_colocalization, + target_coloc=colocalization_data.loc[ + colocalization_data[contrast_column] == target, : + ], + value_col=value_col, + ) + + if ax is None: + fig, ax = plt.subplots() + + p = ax.scatter( + x=differential_colocalization["median_difference"], + y=-np.log10(differential_colocalization["p_adj"]), + c=differential_colocalization[value_col], + s=20, + marker="o", + cmap=cmap, + ) + + ax.set(xlabel="Median difference", ylabel=r"$-\log_{10}$(adj. p-value)") + fig = plt.gcf() + fig.colorbar(p, label="Mean target colocalization score", cmap=cmap) + _add_top_marker_labels( + differential_colocalization, + n_top_pairs=n_top_pairs, + min_log_p=min_log_p, + ax=ax, + ) + + return fig, ax diff --git a/src/pixelator/report/common/reporting.py b/src/pixelator/report/common/reporting.py index 9b2ee3a7..43c48a4e 100644 --- a/src/pixelator/report/common/reporting.py +++ b/src/pixelator/report/common/reporting.py @@ -55,6 +55,9 @@ def __init__(self, workdir: Path | PixelatorWorkdir): else: self.workdir = PixelatorWorkdir(workdir) + # all pixelator commands in defined order + self._command_list: list[str] | None = None + def samples(self) -> set[str]: """Return a list of all samples encountered from command metadata files.""" return self.workdir.samples() @@ -353,7 +356,6 @@ def cli_invocation_info(self, sample: str, cache: bool = True) -> CLIInvocationI :raises WorkdirOutputNotFound: If no commandline metadata is found for the sample """ # Function scope import to avoid circular dependencies - from pixelator.cli import main_cli as click_context try: metadata_files = self.workdir.metadata_files(sample, cache=cache) @@ -361,12 +363,42 @@ def cli_invocation_info(self, sample: str, cache: bool = True) -> CLIInvocationI e.message = f'No command line metadata found for sample: "{sample}"' raise - data_flat: list[CommandInfo] = [] - order = list(click_context.commands["single-cell"].commands.keys()) # type: ignore - + data_flat = [] for f in metadata_files: command_info_flat = CommandInfo.from_json(f) data_flat.append(command_info_flat) - data_flat.sort(key=lambda x: order.index(x.command.split(" ")[-1])) + if self._command_list is None: + self._command_list = _ordered_pixelator_commands() + + # mypy cannot detect that self._command_list cannot be None + # anymore at this point so we cast it explicitly. + data_flat.sort( + key=lambda x: typing.cast("list[str]", self._command_list).index(x.command) + ) return CLIInvocationInfo(data_flat, sample_id=sample) + + +def _ordered_pixelator_commands() -> list[str]: + """Return a list of pixelator CLI commands in depth-first order.""" + # local imports to avoid circular dependency issues + import click + + from pixelator.cli import main_cli as click_context + + def build_command_list(obj: typing.Any, prefix=None): + """Recursively go through groups and commands to create a list of commands.""" + prefix = prefix or [] + + if isinstance(obj, click.Group): + res = [] + new_prefix = prefix + [obj.name] + + for subcommand in obj.commands.values(): + res.extend(build_command_list(subcommand, prefix=new_prefix)) + + return res + + return (" ".join(prefix + [obj.name]),) + + return build_command_list(click_context) diff --git a/src/pixelator/report/models/annotate.py b/src/pixelator/report/models/annotate.py index c7d9f3ba..4b49c5e5 100644 --- a/src/pixelator/report/models/annotate.py +++ b/src/pixelator/report/models/annotate.py @@ -117,7 +117,7 @@ def pixel_count(self) -> int: # noqa: D102 # ------------------------------------------------------------------------------- # aggregate_count: int | None = pydantic.Field( - description="The number of components identified as aggregates and removed from results." + description="The number of components identified as aggregates." ) molecules_in_aggregates_count: int | None = pydantic.Field( @@ -128,6 +128,23 @@ def pixel_count(self) -> int: # noqa: D102 description="The total number of reads for unique molecules in aggregates." ) + @pydantic.computed_field( + return_type=float, + description=textwrap.dedent( + """The fraction of components identified as aggregates or + None if aggregate recovery was disabled. + """ + ), + ) + def fraction_aggregate_components(self) -> float | None: + """Return the fraction of the total cell count that is marked as aggregates. + + Returns None if aggregate recovery was disabled during analysis. + """ + if self.aggregate_count is not None and self.cell_count > 0: + return self.aggregate_count / self.cell_count + return None + @pydantic.computed_field( return_type=float, description=textwrap.dedent( diff --git a/src/pixelator/report/qcreport/builder.py b/src/pixelator/report/qcreport/builder.py index c6b1cee0..e55101bb 100644 --- a/src/pixelator/report/qcreport/builder.py +++ b/src/pixelator/report/qcreport/builder.py @@ -46,7 +46,7 @@ class QCReportBuilder: """ _JSON_OPTIONS: ClassVar[Dict[str, Any]] = {"indent": None, "separators": (",", ":")} - VERSIONS_CONSTRAINTS: ClassVar[List[str]] = ["<0.14.0", ">=0.10.0"] + VERSIONS_CONSTRAINTS: ClassVar[List[str]] = ["<0.15.0", ">=0.10.0"] def __init__(self, template: Union[str, Path] = DEFAULT_QC_REPORT_TEMPLATE): """Construct a QC report builder given a html template. diff --git a/src/pixelator/report/qcreport/main.py b/src/pixelator/report/qcreport/main.py index d0dafab7..456a5220 100644 --- a/src/pixelator/report/qcreport/main.py +++ b/src/pixelator/report/qcreport/main.py @@ -93,6 +93,7 @@ def create_dynamic_report( # Map pixelator metrics to QC report metrics metrics = Metrics( number_of_cells=annotate_metrics.cell_count, + fraction_outlier_cells=annotate_metrics.fraction_aggregate_components, average_reads_usable_per_cell=int( annotate_metrics.read_count_per_cell_stats.mean ), diff --git a/src/pixelator/report/qcreport/template.html b/src/pixelator/report/qcreport/template.html index 68d1b459..eba575e4 100644 --- a/src/pixelator/report/qcreport/template.html +++ b/src/pixelator/report/qcreport/template.html @@ -1,4 +1,4 @@ -Pixelator QC report
\ No newline at end of file +self,e.exports=function(){var e={33041:function(e,t,n){function r(e,t){for(var n=0;nf)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,h.prototype),t}function h(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return v(e)}return m(e,t,n)}function m(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!h.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|T(e,t),r=p(n),a=r.write(e,t);return a!==n&&(r=r.slice(0,a)),r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(te(e,Uint8Array)){var t=new Uint8Array(e);return b(t.buffer,t.byteOffset,t.byteLength)}return g(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+s(e));if(te(e,ArrayBuffer)||e&&te(e.buffer,ArrayBuffer))return b(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(te(e,SharedArrayBuffer)||e&&te(e.buffer,SharedArrayBuffer)))return b(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return h.from(r,t,n);var a=function(e){if(h.isBuffer(e)){var t=0|x(e.length),n=p(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||ne(e.length)?p(0):g(e):"Buffer"===e.type&&Array.isArray(e.data)?g(e.data):void 0}(e);if(a)return a;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return h.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+s(e))}function y(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function v(e){return y(e),p(e<0?0:0|x(e))}function g(e){for(var t=e.length<0?0:0|x(e.length),n=p(t),r=0;r=f)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+f.toString(16)+" bytes");return 0|e}function T(e,t){if(h.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||te(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+s(e));var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return $(e).length;default:if(a)return r?-1:q(e).length;t=(""+t).toLowerCase(),a=!0}}function w(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return X(this,t,n);case"utf8":case"utf-8":return Z(this,t,n);case"ascii":return R(this,t,n);case"latin1":case"binary":return N(this,t,n);case"base64":return M(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function k(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function A(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),ne(n=+n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=h.from(t,r)),h.isBuffer(t))return 0===t.length?-1:S(e,t,n,r,a);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):S(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function S(e,t,n,r,a){var i,o=1,l=e.length,s=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,l/=2,s/=2,n/=2}function c(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(a){var u=-1;for(i=n;il&&(n=l-s),i=n;i>=0;i--){for(var d=!0,f=0;fa&&(r=a):r=a;var i,o=t.length;for(r>o/2&&(r=o/2),i=0;i>8,a=n%256,i.push(a),i.push(r);return i}(t,e.length-n),e,n,r)}function M(e,t,n){return 0===t&&n===e.length?c.fromByteArray(e):c.fromByteArray(e.slice(t,n))}function Z(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a239?4:i>223?3:i>191?2:1;if(a+l<=n){var s=void 0,c=void 0,u=void 0,d=void 0;switch(l){case 1:i<128&&(o=i);break;case 2:128==(192&(s=e[a+1]))&&(d=(31&i)<<6|63&s)>127&&(o=d);break;case 3:s=e[a+1],c=e[a+2],128==(192&s)&&128==(192&c)&&(d=(15&i)<<12|(63&s)<<6|63&c)>2047&&(d<55296||d>57343)&&(o=d);break;case 4:s=e[a+1],c=e[a+2],u=e[a+3],128==(192&s)&&128==(192&c)&&128==(192&u)&&(d=(15&i)<<18|(63&s)<<12|(63&c)<<6|63&u)>65535&&d<1114112&&(o=d)}}null===o?(o=65533,l=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),a+=l}return function(e){var t=e.length;if(t<=O)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr.length?(h.isBuffer(i)||(i=h.from(i)),i.copy(r,a)):Uint8Array.prototype.set.call(r,i,a);else{if(!h.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(r,a)}a+=i.length}return r},h.byteLength=T,h.prototype._isBuffer=!0,h.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tn&&(e+=" ... "),""},d&&(h.prototype[d]=h.prototype.inspect),h.prototype.compare=function(e,t,n,r,a){if(te(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+s(e));if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(a>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),l=Math.min(i,o),c=this.slice(r,a),u=e.slice(t,n),d=0;d>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return C(this,e,t,n);case"utf8":case"utf-8":return I(this,e,t,n);case"ascii":case"latin1":case"binary":return L(this,e,t,n);case"base64":return P(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,e,t,n);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var O=4096;function R(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;ar)&&(n=r);for(var a="",i=t;in)throw new RangeError("Trying to access beyond buffer length")}function W(e,t,n,r,a,i){if(!h.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||te.length)throw new RangeError("Index out of range")}function G(e,t,n,r,a){K(t,r,a,e,n,7);var i=Number(t&BigInt(4294967295));e[n++]=i,i>>=8,e[n++]=i,i>>=8,e[n++]=i,i>>=8,e[n++]=i;var o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function V(e,t,n,r,a){K(t,r,a,e,n,7);var i=Number(t&BigInt(4294967295));e[n+7]=i,i>>=8,e[n+6]=i,i>>=8,e[n+5]=i,i>>=8,e[n+4]=i;var o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function z(e,t,n,r,a,i){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function F(e,t,n,r,a){return t=+t,n>>>=0,a||z(e,0,n,4),u.write(e,t,n,r,23,4),n+4}function Y(e,t,n,r,a){return t=+t,n>>>=0,a||z(e,0,n,8),u.write(e,t,n,r,52,8),n+8}h.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e],a=1,i=0;++i>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},h.prototype.readUint8=h.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},h.prototype.readBigUInt64LE=ae((function(e){J(e>>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||U(e,this.length-8);var r=t+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,24),a=this[++e]+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+n*Math.pow(2,24);return BigInt(r)+(BigInt(a)<>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||U(e,this.length-8);var r=t*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e],a=this[++e]*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+n;return(BigInt(r)<>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e],a=1,i=0;++i=(a*=128)&&(r-=Math.pow(2,8*t)),r},h.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);for(var r=t,a=1,i=this[e+--r];r>0&&(a*=256);)i+=this[e+--r]*a;return i>=(a*=128)&&(i-=Math.pow(2,8*t)),i},h.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},h.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},h.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},h.prototype.readBigInt64LE=ae((function(e){J(e>>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||U(e,this.length-8);var r=this[e+4]+this[e+5]*Math.pow(2,8)+this[e+6]*Math.pow(2,16)+(n<<24);return(BigInt(r)<>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||U(e,this.length-8);var r=(t<<24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e];return(BigInt(r)<>>=0,t||D(e,4,this.length),u.read(this,e,!0,23,4)},h.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),u.read(this,e,!1,23,4)},h.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),u.read(this,e,!0,52,8)},h.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),u.read(this,e,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(e,t,n,r){e=+e,t>>>=0,n>>>=0,r||W(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,i=0;for(this[t]=255&e;++i>>=0,n>>>=0,r||W(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,i=1;for(this[t+a]=255&e;--a>=0&&(i*=256);)this[t+a]=e/i&255;return t+n},h.prototype.writeUint8=h.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,1,255,0),this[t]=255&e,t+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigUInt64LE=ae((function(e){return G(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=ae((function(e){return V(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var a=Math.pow(2,8*n-1);W(this,e,t,n,a-1,-a)}var i=0,o=1,l=0;for(this[t]=255&e;++i>>=0,!r){var a=Math.pow(2,8*n-1);W(this,e,t,n,a-1,-a)}var i=n-1,o=1,l=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===l&&0!==this[t+i+1]&&(l=1),this[t+i]=(e/o|0)-l&255;return t+n},h.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},h.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},h.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||W(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigInt64LE=ae((function(e){return G(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=ae((function(e){return V(this,e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(e,t,n){return F(this,e,t,!0,n)},h.prototype.writeFloatBE=function(e,t,n){return F(this,e,t,!1,n)},h.prototype.writeDoubleLE=function(e,t,n){return Y(this,e,t,!0,n)},h.prototype.writeDoubleBE=function(e,t,n){return Y(this,e,t,!1,n)},h.prototype.copy=function(e,t,n,r){if(!h.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;n-=3)t="_".concat(e.slice(n-3,n)).concat(t);return"".concat(e.slice(0,n)).concat(t)}function K(e,t,n,r,a,i){if(e>n||e3?0===t||t===BigInt(0)?">= 0".concat(l," and < 2").concat(l," ** ").concat(8*(i+1)).concat(l):">= -(2".concat(l," ** ").concat(8*(i+1)-1).concat(l,") and < 2 ** ")+"".concat(8*(i+1)-1).concat(l):">= ".concat(t).concat(l," and <= ").concat(n).concat(l),new _.ERR_OUT_OF_RANGE("value",o,e)}var s,c,u;s=r,u=i,J(c=a,"offset"),void 0!==s[c]&&void 0!==s[c+u]||U(c,s.length-(u+1))}function J(e,t){if("number"!=typeof e)throw new _.ERR_INVALID_ARG_TYPE(t,"number",e)}function U(e,t,n){if(Math.floor(e)!==e)throw J(e,n),new _.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new _.ERR_BUFFER_OUT_OF_BOUNDS;throw new _.ERR_OUT_OF_RANGE(n||"offset",">= ".concat(n?1:0," and <= ").concat(t),e)}B("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?"".concat(e," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"}),RangeError),B("ERR_INVALID_ARG_TYPE",(function(e,t){return'The "'.concat(e,'" argument must be of type number. Received type ').concat(s(t))}),TypeError),B("ERR_OUT_OF_RANGE",(function(e,t,n){var r='The value of "'.concat(e,'" is out of range.'),a=n;return Number.isInteger(n)&&Math.abs(n)>Math.pow(2,32)?a=j(String(n)):"bigint"==typeof n&&(a=String(n),(n>Math.pow(BigInt(2),BigInt(32))||n<-Math.pow(BigInt(2),BigInt(32)))&&(a=j(a)),a+="n"),r+" It must be ".concat(t,". Received ").concat(a)}),RangeError);var Q=/[^+/0-9A-Za-z-_]/g;function q(e,t){var n;t=t||1/0;for(var r=e.length,a=null,i=[],o=0;o55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&i.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&i.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function $(e){return c.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(Q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function ee(e,t,n,r){var a;for(a=0;a=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function te(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function ne(e){return e!=e}var re=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,a=0;a<16;++a)t[r+a]=e[n]+e[a];return t}();function ae(e){return"undefined"==typeof BigInt?ie:e}function ie(){throw new Error("BigInt not supported")}},14488:function(e){e.exports=a,e.exports.isMobile=a,e.exports.default=a;var t=/(android|bb\d+|meego).+mobile|armv7l|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series[46]0|samsungbrowser.*mobile|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i,n=/CrOS/,r=/android|ipad|playbook|silk/i;function a(e){e||(e={});var a=e.ua;if(a||"undefined"==typeof navigator||(a=navigator.userAgent),a&&a.headers&&"string"==typeof a.headers["user-agent"]&&(a=a.headers["user-agent"]),"string"!=typeof a)return!1;var i=t.test(a)&&!n.test(a)||!!e.tablet&&r.test(a);return!i&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==a.indexOf("Macintosh")&&-1!==a.indexOf("Safari")&&(i=!0),i}},6565:function(e,t,n){var r=n(11005),a={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg":"overflow:hidden;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(var i in a){var o=i.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier");r.addStyleRule(o,a[i])}},46591:function(e,t,n){e.exports=n(22248)},74053:function(e,t,n){e.exports=n(62758)},99491:function(e,t,n){e.exports=n(26998)},90281:function(e,t,n){e.exports=n(40138)},46740:function(e,t,n){e.exports=n(89085)},87714:function(e,t,n){e.exports=n(77169)},75884:function(e,t,n){var r=n(90281);r.register([n(74053),n(35407),n(81117),n(46591),n(46740),n(87714),n(40954),n(99491)]),e.exports=r},81117:function(e,t,n){e.exports=n(77582)},40954:function(e,t,n){e.exports=n(88123)},35407:function(e,t,n){e.exports=n(58688)},12583:function(e,t,n){var r,a;(function(){var i={version:"3.8.0"},o=[].slice,l=function(e){return o.call(e)},s=self.document;function c(e){return e&&(e.ownerDocument||e.document||e).documentElement}function u(e){return e&&(e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView)}if(s)try{l(s.documentElement.childNodes)[0].nodeType}catch(mi){l=function(e){for(var t=e.length,n=new Array(t);t--;)n[t]=e[t];return n}}if(Date.now||(Date.now=function(){return+new Date}),s)try{s.createElement("DIV").style.setProperty("opacity",0,"")}catch(mi){var d=this.Element.prototype,f=d.setAttribute,p=d.setAttributeNS,h=this.CSSStyleDeclaration.prototype,m=h.setProperty;d.setAttribute=function(e,t){f.call(this,e,t+"")},d.setAttributeNS=function(e,t,n){p.call(this,e,t,n+"")},h.setProperty=function(e,t,n){m.call(this,e,t+"",n)}}function y(e,t){return et?1:e>=t?0:NaN}function v(e){return null===e?NaN:+e}function g(e){return!isNaN(e)}function b(e){return{left:function(t,n,r,a){for(arguments.length<3&&(r=0),arguments.length<4&&(a=t.length);r>>1;e(t[i],n)<0?r=i+1:a=i}return r},right:function(t,n,r,a){for(arguments.length<3&&(r=0),arguments.length<4&&(a=t.length);r>>1;e(t[i],n)>0?a=i:r=i+1}return r}}}i.ascending=y,i.descending=function(e,t){return te?1:t>=e?0:NaN},i.min=function(e,t){var n,r,a=-1,i=e.length;if(1===arguments.length){for(;++a=r){n=r;break}for(;++ar&&(n=r)}else{for(;++a=r){n=r;break}for(;++ar&&(n=r)}return n},i.max=function(e,t){var n,r,a=-1,i=e.length;if(1===arguments.length){for(;++a=r){n=r;break}for(;++an&&(n=r)}else{for(;++a=r){n=r;break}for(;++an&&(n=r)}return n},i.extent=function(e,t){var n,r,a,i=-1,o=e.length;if(1===arguments.length){for(;++i=r){n=a=r;break}for(;++ir&&(n=r),a=r){n=a=r;break}for(;++ir&&(n=r),a1)return o/(s-1)},i.deviation=function(){var e=i.variance.apply(this,arguments);return e?Math.sqrt(e):e};var x=b(y);function T(e){return e.length}i.bisectLeft=x.left,i.bisect=i.bisectRight=x.right,i.bisector=function(e){return b(1===e.length?function(t,n){return y(e(t),n)}:e)},i.shuffle=function(e,t,n){(i=arguments.length)<3&&(n=e.length,i<2&&(t=0));for(var r,a,i=n-t;i;)a=Math.random()*i--|0,r=e[i+t],e[i+t]=e[a+t],e[a+t]=r;return e},i.permute=function(e,t){for(var n=t.length,r=new Array(n);n--;)r[n]=e[t[n]];return r},i.pairs=function(e){for(var t=0,n=e.length-1,r=e[0],a=new Array(n<0?0:n);t=0;)for(t=(r=e[a]).length;--t>=0;)n[--o]=r[t];return n};var w=Math.abs;function k(e,t){for(var n in t)Object.defineProperty(e.prototype,n,{value:t[n],enumerable:!1})}function A(){this._=Object.create(null)}i.range=function(e,t,n){if(arguments.length<3&&(n=1,arguments.length<2&&(t=e,e=0)),(t-e)/n==1/0)throw new Error("infinite range");var r,a=[],i=function(e){for(var t=1;e*t%1;)t*=10;return t}(w(n)),o=-1;if(e*=i,t*=i,(n*=i)<0)for(;(r=e+n*++o)>t;)a.push(r/i);else for(;(r=e+n*++o)=r.length)return t?t.call(n,i):e?i.sort(e):i;for(var s,c,u,d,f=-1,p=i.length,h=r[l++],m=new A;++f=r.length)return e;var n=[],i=a[t++];return e.forEach((function(e,r){n.push({key:e,values:l(r,t)})})),i?n.sort((function(e,t){return i(e.key,t.key)})):n}return n.map=function(e,t){return o(t,e,0)},n.entries=function(e){return l(o(i.map,e,0),0)},n.key=function(e){return r.push(e),n},n.sortKeys=function(e){return a[r.length-1]=e,n},n.sortValues=function(t){return e=t,n},n.rollup=function(e){return t=e,n},n},i.set=function(e){var t=new R;if(e)for(var n=0,r=e.length;n=0&&(r=e.slice(n+1),e=e.slice(0,n)),e)return arguments.length<2?this[e].on(r):this[e].on(r,t);if(2===arguments.length){if(null==t)for(e in this)this.hasOwnProperty(e)&&this[e].on(r,null);return this}},i.event=null,i.requote=function(e){return e.replace(_,"\\$&")};var _=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,B={}.__proto__?function(e,t){e.__proto__=t}:function(e,t){for(var n in t)e[n]=t[n]};function j(e){return B(e,Q),e}var K=function(e,t){return t.querySelector(e)},J=function(e,t){return t.querySelectorAll(e)},U=function(e,t){var n=e.matches||e[H(e,"matchesSelector")];return(U=function(e,t){return n.call(e,t)})(e,t)};"function"==typeof Sizzle&&(K=function(e,t){return Sizzle(e,t)[0]||null},J=Sizzle,U=Sizzle.matchesSelector),i.selection=function(){return i.select(s.documentElement)};var Q=i.selection.prototype=[];function q(e){return"function"==typeof e?e:function(){return K(e,this)}}function $(e){return"function"==typeof e?e:function(){return J(e,this)}}Q.select=function(e){var t,n,r,a,i=[];e=q(e);for(var o=-1,l=this.length;++o=0&&"xmlns"!==(n=e.slice(0,t))&&(e=e.slice(t+1)),te.hasOwnProperty(n)?{space:te[n],local:e}:e}},Q.attr=function(e,t){if(arguments.length<2){if("string"==typeof e){var n=this.node();return(e=i.ns.qualify(e)).local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}for(t in e)this.each(ne(t,e[t]));return this}return this.each(ne(e,t))},Q.classed=function(e,t){if(arguments.length<2){if("string"==typeof e){var n=this.node(),r=(e=ie(e)).length,a=-1;if(t=n.classList){for(;++a=0;)(n=r[a])&&(i&&i!==n.nextSibling&&i.parentNode.insertBefore(n,i),i=n);return this},Q.sort=function(e){e=he.apply(this,arguments);for(var t=-1,n=this.length;++t0&&(e=e.slice(0,a));var s=be.get(e);function c(){var t=this[r];t&&(this.removeEventListener(e,t,t.$),delete this[r])}return s&&(e=s,o=Te),a?t?function(){var a=o(t,l(arguments));c.call(this),this.addEventListener(e,this[r]=a,a.$=n),a._=t}:c:t?W:function(){var t,n=new RegExp("^__on([^.]+)"+i.requote(e)+"$");for(var r in this)if(t=r.match(n)){var a=this[r];this.removeEventListener(t[1],a,a.$),delete this[r]}}}i.selection.enter=ye,i.selection.enter.prototype=ve,ve.append=Q.append,ve.empty=Q.empty,ve.node=Q.node,ve.call=Q.call,ve.size=Q.size,ve.select=function(e){for(var t,n,r,a,i,o=[],l=-1,s=this.length;++l=r&&(r=t+1);!(o=l[r])&&++r1?Oe:e<-1?-Oe:Math.asin(e)}function He(e){return((e=Math.exp(e))+1/e)/2}var De=Math.SQRT2;i.interpolateZoom=function(e,t){var n,r,a=e[0],i=e[1],o=e[2],l=t[0],s=t[1],c=t[2],u=l-a,d=s-i,f=u*u+d*d;if(f0&&(e=e.transition().duration(m)),e.call(w.event)}function I(){l&&l.domain(o.range().map((function(e){return(e-f.x)/f.k})).map(o.invert)),d&&d.domain(c.range().map((function(e){return(e-f.y)/f.k})).map(c.invert))}function L(e){y++||e({type:"zoomstart"})}function P(e){I(),e({type:"zoom",scale:f.k,translate:[f.x,f.y]})}function E(e){--y||(e({type:"zoomend"}),t=null)}function M(){var e=this,t=T.of(e,arguments),n=0,r=i.select(u(e)).on(g,(function(){n=1,S(i.mouse(e),a),P(t)})).on(b,(function(){r.on(g,null).on(b,null),o(n),E(t)})),a=k(i.mouse(e)),o=Ae(e);Ua.call(e),L(t)}function Z(){var e,t=this,n=T.of(t,arguments),r={},o=0,l=".zoom-"+i.event.changedTouches[0].identifier,s="touchmove"+l,c="touchend"+l,u=[],d=i.select(t),p=Ae(t);function h(){var n=i.touches(t);return e=f.k,n.forEach((function(e){e.identifier in r&&(r[e.identifier]=k(e))})),n}function m(){var e=i.event.target;i.select(e).on(s,y).on(c,g),u.push(e);for(var n=i.event.changedTouches,l=0,d=n.length;l1){v=p[0];var b=p[1],x=v[0]-b[0],T=v[1]-b[1];o=x*x+T*T}}function y(){var l,s,c,u,d=i.touches(t);Ua.call(t);for(var f=0,p=d.length;f360?t-=360:t<0&&(t+=360),t<60?r+(a-r)*t/60:t<180?a:t<240?r+(a-r)*(240-t)/60:r));var t}return e=isNaN(e)?0:(e%=360)<0?e+360:e,t=isNaN(t)||t<0?0:t>1?1:t,r=2*(n=n<0?0:n>1?1:n)-(a=n<=.5?n*(1+t):n+t-n*t),new it(i(e+120),i(e),i(e-120))}function Be(e,t,n){return this instanceof Be?(this.h=+e,this.c=+t,void(this.l=+n)):arguments.length<2?e instanceof Be?new Be(e.h,e.c,e.l):(r=e instanceof Je?e.l:(e=ft((e=i.rgb(e)).r,e.g,e.b)).l,a=e.a,o=e.b,r>0?new Be(Math.atan2(o,a)*Ne,Math.sqrt(a*a+o*o),r):new Be(NaN,NaN,r)):new Be(e,t,n);var r,a,o}Ye.brighter=function(e){return e=Math.pow(.7,arguments.length?e:1),new Fe(this.h,this.s,this.l/e)},Ye.darker=function(e){return e=Math.pow(.7,arguments.length?e:1),new Fe(this.h,this.s,e*this.l)},Ye.rgb=function(){return _e(this.h,this.s,this.l)},i.hcl=Be;var je=Be.prototype=new ze;function Ke(e,t,n){return isNaN(e)&&(e=0),isNaN(t)&&(t=0),new Je(n,Math.cos(e*=Re)*t,Math.sin(e)*t)}function Je(e,t,n){return this instanceof Je?(this.l=+e,this.a=+t,void(this.b=+n)):arguments.length<2?e instanceof Je?new Je(e.l,e.a,e.b):e instanceof Be?Ke(e.h,e.c,e.l):ft((e=it(e)).r,e.g,e.b):new Je(e,t,n)}je.brighter=function(e){return new Be(this.h,this.c,Math.min(100,this.l+Ue*(arguments.length?e:1)))},je.darker=function(e){return new Be(this.h,this.c,Math.max(0,this.l-Ue*(arguments.length?e:1)))},je.rgb=function(){return Ke(this.h,this.c,this.l).rgb()},i.lab=Je;var Ue=18,Qe=.95047,qe=1,$e=1.08883,et=Je.prototype=new ze;function tt(e,t,n){var r=(e+16)/116,a=r+t/500,i=r-n/200;return new it(at(3.2404542*(a=nt(a)*Qe)-1.5371385*(r=nt(r)*qe)-.4985314*(i=nt(i)*$e)),at(-.969266*a+1.8760108*r+.041556*i),at(.0556434*a-.2040259*r+1.0572252*i))}function nt(e){return e>.206893034?e*e*e:(e-4/29)/7.787037}function rt(e){return e>.008856?Math.pow(e,1/3):7.787037*e+4/29}function at(e){return Math.round(255*(e<=.00304?12.92*e:1.055*Math.pow(e,1/2.4)-.055))}function it(e,t,n){return this instanceof it?(this.r=~~e,this.g=~~t,void(this.b=~~n)):arguments.length<2?e instanceof it?new it(e.r,e.g,e.b):ut(""+e,it,_e):new it(e,t,n)}function ot(e){return new it(e>>16,e>>8&255,255&e)}function lt(e){return ot(e)+""}et.brighter=function(e){return new Je(Math.min(100,this.l+Ue*(arguments.length?e:1)),this.a,this.b)},et.darker=function(e){return new Je(Math.max(0,this.l-Ue*(arguments.length?e:1)),this.a,this.b)},et.rgb=function(){return tt(this.l,this.a,this.b)},i.rgb=it;var st=it.prototype=new ze;function ct(e){return e<16?"0"+Math.max(0,e).toString(16):Math.min(255,e).toString(16)}function ut(e,t,n){var r,a,i,o=0,l=0,s=0;if(r=/([a-z]+)\((.*)\)/.exec(e=e.toLowerCase()))switch(a=r[2].split(","),r[1]){case"hsl":return n(parseFloat(a[0]),parseFloat(a[1])/100,parseFloat(a[2])/100);case"rgb":return t(ht(a[0]),ht(a[1]),ht(a[2]))}return(i=mt.get(e))?t(i.r,i.g,i.b):(null==e||"#"!==e.charAt(0)||isNaN(i=parseInt(e.slice(1),16))||(4===e.length?(o=(3840&i)>>4,o|=o>>4,l=240&i,l|=l>>4,s=15&i,s|=s<<4):7===e.length&&(o=(16711680&i)>>16,l=(65280&i)>>8,s=255&i)),t(o,l,s))}function dt(e,t,n){var r,a,i=Math.min(e/=255,t/=255,n/=255),o=Math.max(e,t,n),l=o-i,s=(o+i)/2;return l?(a=s<.5?l/(o+i):l/(2-o-i),r=e==o?(t-n)/l+(t0&&s<1?0:r),new Fe(r,a,s)}function ft(e,t,n){var r=rt((.4124564*(e=pt(e))+.3575761*(t=pt(t))+.1804375*(n=pt(n)))/Qe),a=rt((.2126729*e+.7151522*t+.072175*n)/qe);return Je(116*a-16,500*(r-a),200*(a-rt((.0193339*e+.119192*t+.9503041*n)/$e)))}function pt(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function ht(e){var t=parseFloat(e);return"%"===e.charAt(e.length-1)?Math.round(2.55*t):t}st.brighter=function(e){e=Math.pow(.7,arguments.length?e:1);var t=this.r,n=this.g,r=this.b,a=30;return t||n||r?(t&&t=200&&a<300||304===a){try{e=n.call(o,u)}catch(t){return void s.error.call(o,t)}s.load.call(o,e)}else s.error.call(o,u)}return self.XDomainRequest&&!("withCredentials"in u)&&/^(http(s)?:)?\/\//.test(e)&&(u=new XDomainRequest),"onload"in u?u.onload=u.onerror=f:u.onreadystatechange=function(){u.readyState>3&&f()},u.onprogress=function(e){var t=i.event;i.event=e;try{s.progress.call(o,u)}finally{i.event=t}},o.header=function(e,t){return e=(e+"").toLowerCase(),arguments.length<2?c[e]:(null==t?delete c[e]:c[e]=t+"",o)},o.mimeType=function(e){return arguments.length?(t=null==e?null:e+"",o):t},o.responseType=function(e){return arguments.length?(d=e,o):d},o.response=function(e){return n=e,o},["get","post"].forEach((function(e){o[e]=function(){return o.send.apply(o,[e].concat(l(arguments)))}})),o.send=function(n,r,a){if(2===arguments.length&&"function"==typeof r&&(a=r,r=null),u.open(n,e,!0),null==t||"accept"in c||(c.accept=t+",*/*"),u.setRequestHeader)for(var i in c)u.setRequestHeader(i,c[i]);return null!=t&&u.overrideMimeType&&u.overrideMimeType(t),null!=d&&(u.responseType=d),null!=a&&o.on("error",a).on("load",(function(e){a(null,e)})),s.beforesend.call(o,u),u.send(null==r?null:r),o},o.abort=function(){return u.abort(),o},i.rebind(o,s,"on"),null==r?o:o.get(1===(a=r).length?function(e,t){a(null==e?t:null)}:a)}mt.forEach((function(e,t){mt.set(e,ot(t))})),i.functor=yt,i.xhr=vt(N),i.dsv=function(e,t){var n=new RegExp('["'+e+"\n]"),r=e.charCodeAt(0);function a(e,n,r){arguments.length<3&&(r=n,n=null);var a=gt(e,t,null==n?i:o(n),r);return a.row=function(e){return arguments.length?a.response(null==(n=e)?i:o(e)):n},a}function i(e){return a.parse(e.responseText)}function o(e){return function(t){return a.parse(t.responseText,e)}}function l(t){return t.map(s).join(e)}function s(e){return n.test(e)?'"'+e.replace(/\"/g,'""')+'"':e}return a.parse=function(e,t){var n;return a.parseRows(e,(function(e,r){if(n)return n(e,r-1);var a=function(t){for(var n={},r=e.length,a=0;a=s)return o;if(a)return a=!1,i;var t=c;if(34===e.charCodeAt(t)){for(var n=t;n++24?(isFinite(t)&&(clearTimeout(wt),wt=setTimeout(St,t)),Tt=0):(Tt=1,kt(St))}function Ct(){for(var e=Date.now(),t=bt;t;)e>=t.t&&t.c(e-t.t)&&(t.c=null),t=t.n;return e}function It(){for(var e,t=bt,n=1/0;t;)t.c?(t.t1&&(t=e[i[o-2]],n=e[i[o-1]],r=e[l],(n[0]-t[0])*(r[1]-t[1])-(n[1]-t[1])*(r[0]-t[0])<=0);)--o;i[o++]=l}return i.slice(0,o)}function Mt(e,t){return e[0]-t[0]||e[1]-t[1]}i.timer=function(){At.apply(this,arguments)},i.timer.flush=function(){Ct(),It()},i.round=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},i.geom={},i.geom.hull=function(e){var t=Lt,n=Pt;if(arguments.length)return r(e);function r(e){if(e.length<3)return[];var r,a=yt(t),i=yt(n),o=e.length,l=[],s=[];for(r=0;r=0;--r)p.push(e[l[c[r]][2]]);for(r=+d;rLe)l=l.L;else{if(!((a=i-Jt(l,o))>Le)){r>-Le?(t=l.P,n=l):a>-Le?(t=l,n=l.N):t=n=l;break}if(!l.R){t=l;break}l=l.R}var s=Yt(e);if(Dt.insert(t,s),t||n){if(t===n)return en(t),n=Yt(t.site),Dt.insert(s,n),s.edge=n.edge=rn(t.site,s.site),$t(t),void $t(n);if(n){en(t),en(n);var c=t.site,u=c.x,d=c.y,f=e.x-u,p=e.y-d,h=n.site,m=h.x-u,y=h.y-d,v=2*(f*y-p*m),g=f*f+p*p,b=m*m+y*y,x={x:(y*g-p*b)/v+u,y:(f*b-m*g)/v+d};an(n.edge,c,h,x),s.edge=rn(c,e,null,x),n.edge=rn(e,h,null,x),$t(t),$t(n)}else s.edge=rn(t.site,s.site)}}function Kt(e,t){var n=e.site,r=n.x,a=n.y,i=a-t;if(!i)return r;var o=e.P;if(!o)return-1/0;var l=(n=o.site).x,s=n.y,c=s-t;if(!c)return l;var u=l-r,d=1/i-1/c,f=u/c;return d?(-f+Math.sqrt(f*f-2*d*(u*u/(-2*c)-s+c/2+a-i/2)))/d+r:(r+l)/2}function Jt(e,t){var n=e.N;if(n)return Kt(n,t);var r=e.site;return r.y===t?r.x:1/0}function Ut(e){this.site=e,this.edges=[]}function Qt(e,t){return t.angle-e.angle}function qt(){sn(this),this.x=this.y=this.arc=this.site=this.cy=null}function $t(e){var t=e.P,n=e.N;if(t&&n){var r=t.site,a=e.site,i=n.site;if(r!==i){var o=a.x,l=a.y,s=r.x-o,c=r.y-l,u=i.x-o,d=2*(s*(y=i.y-l)-c*u);if(!(d>=-Pe)){var f=s*s+c*c,p=u*u+y*y,h=(y*f-c*p)/d,m=(s*p-u*f)/d,y=m+l,v=zt.pop()||new qt;v.arc=e,v.site=a,v.x=h+o,v.y=y+Math.sqrt(h*h+m*m),v.cy=y,e.circle=v;for(var g=null,b=Gt._;b;)if(v.y=l)return;if(f>h){if(i){if(i.y>=c)return}else i={x:y,y:s};n={x:y,y:c}}else{if(i){if(i.y1)if(f>h){if(i){if(i.y>=c)return}else i={x:(s-a)/r,y:s};n={x:(c-a)/r,y:c}}else{if(i){if(i.y=l)return}else i={x:o,y:r*o+a};n={x:l,y:r*l+a}}else{if(i){if(i.x0)){if(t/=f,f<0){if(t0){if(t>d)return;t>u&&(u=t)}if(t=a-s,f||!(t<0)){if(t/=f,f<0){if(t>d)return;t>u&&(u=t)}else if(f>0){if(t0)){if(t/=p,p<0){if(t0){if(t>d)return;t>u&&(u=t)}if(t=i-c,p||!(t<0)){if(t/=p,p<0){if(t>d)return;t>u&&(u=t)}else if(p>0){if(t0&&(e.a={x:s+u*f,y:c+u*p}),d<1&&(e.b={x:s+d*f,y:c+d*p}),e}}}}}),s=o.length;s--;)(!tn(t=o[s],e)||!l(t)||w(t.a.x-t.b.x)Le||w(a-n)>Le)&&(l.splice(o,0,new on((v=i.site,g=u,b=w(r-d)Le?{x:d,y:w(t-d)Le?{x:w(n-h)Le?{x:f,y:w(t-f)Le?{x:w(n-p)=n&&c.x<=a&&c.y>=r&&c.y<=o?[[n,o],[a,o],[a,r],[n,r]]:[]).point=e[l]})),t}function l(e){return e.map((function(e,t){return{x:Math.round(r(e,t)/Le)*Le,y:Math.round(a(e,t)/Le)*Le,i:t}}))}return o.links=function(e){return fn(l(e)).edges.filter((function(e){return e.l&&e.r})).map((function(t){return{source:e[t.l.i],target:e[t.r.i]}}))},o.triangles=function(e){var t=[];return fn(l(e)).cells.forEach((function(n,r){for(var a,i,o,l,s=n.site,c=n.edges.sort(Qt),u=-1,d=c.length,f=c[d-1].edge,p=f.l===s?f.r:f.l;++ui&&(a=t.slice(i,a),l[o]?l[o]+=a:l[++o]=a),(n=n[0])===(r=r[0])?l[o]?l[o]+=r:l[++o]=r:(l[++o]=null,s.push({i:o,x:xn(n,r)})),i=kn.lastIndex;return im&&(m=s.x),s.y>y&&(y=s.y),c.push(s.x),u.push(s.y);else for(d=0;dm&&(m=b),x>y&&(y=x),c.push(b),u.push(x)}var T=m-p,k=y-h;function A(e,t,n,r,a,i,o,l){if(!isNaN(n)&&!isNaN(r))if(e.leaf){var s=e.x,c=e.y;if(null!=s)if(w(s-n)+w(c-r)<.01)S(e,t,n,r,a,i,o,l);else{var u=e.point;e.x=e.y=e.point=null,S(e,u,s,c,a,i,o,l),S(e,t,n,r,a,i,o,l)}else e.x=n,e.y=r,e.point=t}else S(e,t,n,r,a,i,o,l)}function S(e,t,n,r,a,i,o,l){var s=.5*(a+o),c=.5*(i+l),u=n>=s,d=r>=c,f=d<<1|u;e.leaf=!1,u?a=s:o=s,d?i=c:l=c,A(e=e.nodes[f]||(e.nodes[f]={leaf:!0,nodes:[],point:null,x:null,y:null}),t,n,r,a,i,o,l)}T>k?y=h+T:m=p+k;var C={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(e){A(C,e,+v(e,++d),+g(e,d),p,h,m,y)},visit:function(e){vn(e,C,p,h,m,y)},find:function(e){return t=C,n=e[0],r=e[1],c=1/0,function e(t,u,d,f,p){if(!(u>o||d>l||f=T)<<1|n>=x,k=w+4;w=0&&!(n=i.interpolators[r](e,t)););return n}function Sn(e,t){var n,r=[],a=[],i=e.length,o=t.length,l=Math.min(e.length,t.length);for(n=0;n=1)return 1;var t=e*e,n=t*e;return 4*(e<.5?n:3*(e-t)+n-.75)}function Rn(e){return 1-Math.cos(e*Oe)}function Nn(e){return Math.pow(2,10*(e-1))}function Xn(e){return 1-Math.sqrt(1-e*e)}function Hn(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375}function Dn(e,t){return t-=e,function(n){return Math.round(e+t*n)}}function Wn(e){var t,n,r,a=[e.a,e.b],i=[e.c,e.d],o=Vn(a),l=Gn(a,i),s=Vn(((t=i)[0]+=(r=-l)*(n=a)[0],t[1]+=r*n[1],t))||0;a[0]*i[1]=0?e.slice(0,n):e,a=n>=0?e.slice(n+1):"in";return r=In.get(r)||Cn,a=Ln.get(a)||N,t=a(r.apply(null,o.call(arguments,1))),function(e){return e<=0?0:e>=1?1:t(e)}},i.interpolateHcl=function(e,t){e=i.hcl(e),t=i.hcl(t);var n=e.h,r=e.c,a=e.l,o=t.h-n,l=t.c-r,s=t.l-a;return isNaN(l)&&(l=0,r=isNaN(r)?t.c:r),isNaN(o)?(o=0,n=isNaN(n)?t.h:n):o>180?o-=360:o<-180&&(o+=360),function(e){return Ke(n+o*e,r+l*e,a+s*e)+""}},i.interpolateHsl=function(e,t){e=i.hsl(e),t=i.hsl(t);var n=e.h,r=e.s,a=e.l,o=t.h-n,l=t.s-r,s=t.l-a;return isNaN(l)&&(l=0,r=isNaN(r)?t.s:r),isNaN(o)?(o=0,n=isNaN(n)?t.h:n):o>180?o-=360:o<-180&&(o+=360),function(e){return _e(n+o*e,r+l*e,a+s*e)+""}},i.interpolateLab=function(e,t){e=i.lab(e),t=i.lab(t);var n=e.l,r=e.a,a=e.b,o=t.l-n,l=t.a-r,s=t.b-a;return function(e){return tt(n+o*e,r+l*e,a+s*e)+""}},i.interpolateRound=Dn,i.transform=function(e){var t=s.createElementNS(i.ns.prefix.svg,"g");return(i.transform=function(e){if(null!=e){t.setAttribute("transform",e);var n=t.transform.baseVal.consolidate()}return new Wn(n?n.matrix:zn)})(e)},Wn.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var zn={a:1,b:0,c:0,d:1,e:0,f:0};function Fn(e){return e.length?e.pop()+",":""}function Yn(e,t){var n,r,a,o,l=[],s=[];return e=i.transform(e),t=i.transform(t),function(e,t,n,r){if(e[0]!==t[0]||e[1]!==t[1]){var a=n.push("translate(",null,",",null,")");r.push({i:a-4,x:xn(e[0],t[0])},{i:a-2,x:xn(e[1],t[1])})}else(t[0]||t[1])&&n.push("translate("+t+")")}(e.translate,t.translate,l,s),n=e.rotate,r=t.rotate,a=l,o=s,n!==r?(n-r>180?r+=360:r-n>180&&(n+=360),o.push({i:a.push(Fn(a)+"rotate(",null,")")-2,x:xn(n,r)})):r&&a.push(Fn(a)+"rotate("+r+")"),function(e,t,n,r){e!==t?r.push({i:n.push(Fn(n)+"skewX(",null,")")-2,x:xn(e,t)}):t&&n.push(Fn(n)+"skewX("+t+")")}(e.skew,t.skew,l,s),function(e,t,n,r){if(e[0]!==t[0]||e[1]!==t[1]){var a=n.push(Fn(n)+"scale(",null,",",null,")");r.push({i:a-4,x:xn(e[0],t[0])},{i:a-2,x:xn(e[1],t[1])})}else 1===t[0]&&1===t[1]||n.push(Fn(n)+"scale("+t+")")}(e.scale,t.scale,l,s),e=t=null,function(e){for(var t,n=-1,r=s.length;++n0?n=t:(e.c=null,e.t=NaN,e=null,s.end({type:"end",alpha:n=0})):t>0&&(s.start({type:"start",alpha:n=t}),e=At(l.tick)),l):n},l.start=function(){var e,t,n,i=v.length,s=g.length,u=c[0],h=c[1];for(e=0;e=0;)n.push(a[r])}function ir(e,t){for(var n=[e],r=[];null!=(e=n.pop());)if(r.push(e),(i=e.children)&&(a=i.length))for(var a,i,o=-1;++o=0;)o.push(u=c[s]),u.parent=i,u.depth=i.depth+1;n&&(i.value=0),i.children=c}else n&&(i.value=+n.call(r,i,i.depth)||0),delete i.children;return ir(a,(function(t){var r,a;e&&(r=t.children)&&r.sort(e),n&&(a=t.parent)&&(a.value+=t.value)})),l}return r.sort=function(t){return arguments.length?(e=t,r):e},r.children=function(e){return arguments.length?(t=e,r):t},r.value=function(e){return arguments.length?(n=e,r):n},r.revalue=function(e){return n&&(ar(e,(function(e){e.children&&(e.value=0)})),ir(e,(function(e){var t;e.children||(e.value=+n.call(r,e,e.depth)||0),(t=e.parent)&&(t.value+=e.value)}))),e},r},i.layout.partition=function(){var e=i.layout.hierarchy(),t=[1,1];function n(e,t,r,a){var i=e.children;if(e.x=t,e.y=e.depth*a,e.dx=r,e.dy=a,i&&(o=i.length)){var o,l,s,c=-1;for(r=e.value?r/e.value:0;++cl&&(l=r),o.push(r)}for(n=0;na&&(r=n,a=t);return r}function br(e){return e.reduce(xr,0)}function xr(e,t){return e+t[1]}function Tr(e,t){return wr(e,Math.ceil(Math.log(t.length)/Math.LN2+1))}function wr(e,t){for(var n=-1,r=+e[0],a=(e[1]-r)/t,i=[];++n<=t;)i[n]=a*n+r;return i}function kr(e){return[i.min(e),i.max(e)]}function Ar(e,t){return e.value-t.value}function Sr(e,t){var n=e._pack_next;e._pack_next=t,t._pack_prev=e,t._pack_next=n,n._pack_prev=t}function Cr(e,t){e._pack_next=t,t._pack_prev=e}function Ir(e,t){var n=t.x-e.x,r=t.y-e.y,a=e.r+t.r;return.999*a*a>n*n+r*r}function Lr(e){if((t=e.children)&&(s=t.length)){var t,n,r,a,i,o,l,s,c=1/0,u=-1/0,d=1/0,f=-1/0;if(t.forEach(Pr),(n=t[0]).x=-n.r,n.y=0,b(n),s>1&&((r=t[1]).x=r.r,r.y=0,b(r),s>2))for(Zr(n,r,a=t[2]),b(a),Sr(n,a),n._pack_prev=a,Sr(a,r),r=n._pack_next,i=3;i0)for(o=-1;++o=d[0]&&s<=d[1]&&((l=c[i.bisect(f,s,1,h)-1]).y+=m,l.push(a[o]));return c}return a.value=function(e){return arguments.length?(t=e,a):t},a.range=function(e){return arguments.length?(n=yt(e),a):n},a.bins=function(e){return arguments.length?(r="number"==typeof e?function(t){return wr(t,e)}:yt(e),a):r},a.frequency=function(t){return arguments.length?(e=!!t,a):e},a},i.layout.pack=function(){var e,t=i.layout.hierarchy().sort(Ar),n=0,r=[1,1];function a(a,i){var o=t.call(this,a,i),l=o[0],s=r[0],c=r[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(l.x=l.y=0,ir(l,(function(e){e.r=+u(e.value)})),ir(l,Lr),n){var d=n*(e?1:Math.max(2*l.r/s,2*l.r/c))/2;ir(l,(function(e){e.r+=d})),ir(l,Lr),ir(l,(function(e){e.r-=d}))}return Mr(l,s/2,c/2,e?1:1/Math.max(2*l.r/s,2*l.r/c)),o}return a.size=function(e){return arguments.length?(r=e,a):r},a.radius=function(t){return arguments.length?(e=null==t||"function"==typeof t?t:+t,a):e},a.padding=function(e){return arguments.length?(n=+e,a):n},rr(a,t)},i.layout.tree=function(){var e=i.layout.hierarchy().sort(null).value(null),t=Or,n=[1,1],r=null;function a(a,i){var c=e.call(this,a,i),u=c[0],d=function(e){for(var t,n={A:null,children:[e]},r=[n];null!=(t=r.pop());)for(var a,i=t.children,o=0,l=i.length;op.x&&(p=e),e.depth>h.depth&&(h=e)}));var m=t(f,p)/2-f.x,y=n[0]/(p.x+t(p,f)/2+m),v=n[1]/(h.depth||1);ar(u,(function(e){e.x=(e.x+m)*y,e.y=e.depth*v}))}return c}function o(e){var n=e.children,r=e.parent.children,a=e.i?r[e.i-1]:null;if(n.length){!function(e){for(var t,n=0,r=0,a=e.children,i=a.length;--i>=0;)(t=a[i]).z+=n,t.m+=n,n+=t.s+(r+=t.c)}(e);var i=(n[0].z+n[n.length-1].z)/2;a?(e.z=a.z+t(e._,a._),e.m=e.z-i):e.z=i}else a&&(e.z=a.z+t(e._,a._));e.parent.A=function(e,n,r){if(n){for(var a,i=e,o=e,l=n,s=i.parent.children[0],c=i.m,u=o.m,d=l.m,f=s.m;l=Nr(l),i=Rr(i),l&&i;)s=Rr(s),(o=Nr(o)).a=e,(a=l.z+d-i.z-c+t(l._,i._))>0&&(Xr(Hr(l,e,r),e,a),c+=a,u+=a),d+=l.m,c+=i.m,f+=s.m,u+=o.m;l&&!Nr(o)&&(o.t=l,o.m+=d-u),i&&!Rr(s)&&(s.t=i,s.m+=c-f,r=e)}return r}(e,a,e.parent.A||r[0])}function l(e){e._.x=e.z+e.parent.m,e.m+=e.parent.m}function s(e){e.x*=n[0],e.y=e.depth*n[1]}return a.separation=function(e){return arguments.length?(t=e,a):t},a.size=function(e){return arguments.length?(r=null==(n=e)?s:null,a):r?null:n},a.nodeSize=function(e){return arguments.length?(r=null==(n=e)?null:s,a):r?n:null},rr(a,e)},i.layout.cluster=function(){var e=i.layout.hierarchy().sort(null).value(null),t=Or,n=[1,1],r=!1;function a(a,o){var l,s=e.call(this,a,o),c=s[0],u=0;ir(c,(function(e){var n,r=e.children;r&&r.length?(e.x=(n=r).reduce((function(e,t){return e+t.x}),0)/n.length,e.y=function(e){return 1+i.max(e,(function(e){return e.y}))}(r)):(e.x=l?u+=t(e,l):0,e.y=0,l=e)}));var d=Dr(c),f=Wr(c),p=d.x-t(d,f)/2,h=f.x+t(f,d)/2;return ir(c,r?function(e){e.x=(e.x-c.x)*n[0],e.y=(c.y-e.y)*n[1]}:function(e){e.x=(e.x-p)/(h-p)*n[0],e.y=(1-(c.y?e.y/c.y:1))*n[1]}),s}return a.separation=function(e){return arguments.length?(t=e,a):t},a.size=function(e){return arguments.length?(r=null==(n=e),a):r?null:n},a.nodeSize=function(e){return arguments.length?(r=null!=(n=e),a):r?n:null},rr(a,e)},i.layout.treemap=function(){var e,t=i.layout.hierarchy(),n=Math.round,r=[1,1],a=null,o=Gr,l=!1,s="squarify",c=.5*(1+Math.sqrt(5));function u(e,t){for(var n,r,a=-1,i=e.length;++a0;)l.push(n=c[a-1]),l.area+=n.area,"squarify"!==s||(r=p(l,m))<=f?(c.pop(),f=r):(l.area-=l.pop().area,h(l,m,i,!1),m=Math.min(i.dx,i.dy),l.length=l.area=0,f=1/0);l.length&&(h(l,m,i,!0),l.length=l.area=0),t.forEach(d)}}function f(e){var t=e.children;if(t&&t.length){var n,r=o(e),a=t.slice(),i=[];for(u(a,r.dx*r.dy/e.value),i.area=0;n=a.pop();)i.push(n),i.area+=n.area,null!=n.z&&(h(i,n.z?r.dx:r.dy,r,!a.length),i.length=i.area=0);t.forEach(f)}}function p(e,t){for(var n,r=e.area,a=0,i=1/0,o=-1,l=e.length;++oa&&(a=n));return t*=t,(r*=r)?Math.max(t*a*c/r,r/(t*i*c)):1/0}function h(e,t,r,a){var i,o=-1,l=e.length,s=r.x,c=r.y,u=t?n(e.area/t):0;if(t==r.dx){for((a||u>r.dy)&&(u=r.dy);++or.dx)&&(u=r.dx);++o1);return e+t*n*Math.sqrt(-2*Math.log(a)/a)}},logNormal:function(){var e=i.random.normal.apply(i,arguments);return function(){return Math.exp(e())}},bates:function(e){var t=i.random.irwinHall(e);return function(){return t()/e}},irwinHall:function(e){return function(){for(var t=0,n=0;n2?Kr:Yr,s=r?Bn:_n;return a=o(e,t,s,n),i=o(t,e,s,An),l}function l(e){return a(e)}return l.invert=function(e){return i(e)},l.domain=function(t){return arguments.length?(e=t.map(Number),o()):e},l.range=function(e){return arguments.length?(t=e,o()):t},l.rangeRound=function(e){return l.range(e).interpolate(Dn)},l.clamp=function(e){return arguments.length?(r=e,o()):r},l.interpolate=function(e){return arguments.length?(n=e,o()):n},l.ticks=function(t){return $r(e,t)},l.tickFormat=function(t,n){return d3_scale_linearTickFormat(e,t,n)},l.nice=function(t){return Qr(e,t),o()},l.copy=function(){return Jr(e,t,n,r)},o()}function Ur(e,t){return i.rebind(e,t,"range","rangeRound","interpolate","clamp")}function Qr(e,t){return _r(e,Br(qr(e,t)[2])),_r(e,Br(qr(e,t)[2])),e}function qr(e,t){null==t&&(t=10);var n=zr(e),r=n[1]-n[0],a=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*a;return i<=.15?a*=10:i<=.35?a*=5:i<=.75&&(a*=2),n[0]=Math.ceil(n[0]/a)*a,n[1]=Math.floor(n[1]/a)*a+.5*a,n[2]=a,n}function $r(e,t){return i.range.apply(i,qr(e,t))}function ea(e,t,n,r){function a(e){return(n?Math.log(e<0?0:e):-Math.log(e>0?0:-e))/Math.log(t)}function i(e){return n?Math.pow(t,e):-Math.pow(t,-e)}function o(t){return e(a(t))}return o.invert=function(t){return i(e.invert(t))},o.domain=function(t){return arguments.length?(n=t[0]>=0,e.domain((r=t.map(Number)).map(a)),o):r},o.base=function(n){return arguments.length?(t=+n,e.domain(r.map(a)),o):t},o.nice=function(){var t=_r(r.map(a),n?Math:ta);return e.domain(t),r=t.map(i),o},o.ticks=function(){var e=zr(r),o=[],l=e[0],s=e[1],c=Math.floor(a(l)),u=Math.ceil(a(s)),d=t%1?2:t;if(isFinite(u-c)){if(n){for(;c0;f--)o.push(i(c)*f);for(c=0;o[c]s;u--);o=o.slice(c,u)}return o},o.copy=function(){return ea(e.copy(),t,n,r)},Ur(o,e)}i.scale.linear=function(){return Jr([0,1],[0,1],An,!1)},i.scale.log=function(){return ea(i.scale.linear().domain([0,1]),10,!0,[1,10])};var ta={floor:function(e){return-Math.ceil(-e)},ceil:function(e){return-Math.floor(-e)}};function na(e,t,n){var r=ra(t),a=ra(1/t);function i(t){return e(r(t))}return i.invert=function(t){return a(e.invert(t))},i.domain=function(t){return arguments.length?(e.domain((n=t.map(Number)).map(r)),i):n},i.ticks=function(e){return $r(n,e)},i.tickFormat=function(e,t){return d3_scale_linearTickFormat(n,e,t)},i.nice=function(e){return i.domain(Qr(n,e))},i.exponent=function(o){return arguments.length?(r=ra(t=o),a=ra(1/t),e.domain(n.map(r)),i):t},i.copy=function(){return na(e.copy(),t,n)},Ur(i,e)}function ra(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function aa(e,t){var n,r,a;function o(a){return r[((n.get(a)||("range"===t.t?n.set(a,e.push(a)):NaN))-1)%r.length]}function l(t,n){return i.range(e.length).map((function(e){return t+n*e}))}return o.domain=function(r){if(!arguments.length)return e;e=[],n=new A;for(var a,i=-1,l=r.length;++i0?n[r-1]:e[0],rd?0:1;if(c=Ze)return s(c,p)+(l?s(l,1-p):"")+"Z";var h,m,y,v,g,b,x,T,w,k,A,S,C=0,I=0,L=[];if((v=(+o.apply(this,arguments)||0)/2)&&(y=r===ha?Math.sqrt(l*l+c*c):+r.apply(this,arguments),p||(I*=-1),c&&(I=Xe(y/c*Math.sin(v))),l&&(C=Xe(y/l*Math.sin(v)))),c){g=c*Math.cos(u+I),b=c*Math.sin(u+I),x=c*Math.cos(d-I),T=c*Math.sin(d-I);var P=Math.abs(d-u-2*I)<=Ee?0:1;if(I&&xa(g,b,x,T)===p^P){var E=(u+d)/2;g=c*Math.cos(E),b=c*Math.sin(E),x=T=null}}else g=b=0;if(l){w=l*Math.cos(d-C),k=l*Math.sin(d-C),A=l*Math.cos(u+C),S=l*Math.sin(u+C);var M=Math.abs(u-d+2*C)<=Ee?0:1;if(C&&xa(w,k,A,S)===1-p^M){var Z=(u+d)/2;w=l*Math.cos(Z),k=l*Math.sin(Z),A=S=null}}else w=k=0;if(f>Le&&(h=Math.min(Math.abs(c-l)/2,+n.apply(this,arguments)))>.001){m=l0?0:1}function Ta(e,t,n,r,a){var i=e[0]-t[0],o=e[1]-t[1],l=(a?r:-r)/Math.sqrt(i*i+o*o),s=l*o,c=-l*i,u=e[0]+s,d=e[1]+c,f=t[0]+s,p=t[1]+c,h=(u+f)/2,m=(d+p)/2,y=f-u,v=p-d,g=y*y+v*v,b=n-r,x=u*p-f*d,T=(v<0?-1:1)*Math.sqrt(Math.max(0,b*b*g-x*x)),w=(x*v-y*T)/g,k=(-x*y-v*T)/g,A=(x*v+y*T)/g,S=(-x*y+v*T)/g,C=w-h,I=k-m,L=A-h,P=S-m;return C*C+I*I>L*L+P*P&&(w=A,k=S),[[w-s,k-c],[w*n/b,k*n/b]]}function wa(){return!0}function ka(e){var t=Lt,n=Pt,r=wa,a=Sa,i=a.key,o=.7;function l(i){var l,s=[],c=[],u=-1,d=i.length,f=yt(t),p=yt(n);function h(){s.push("M",a(e(c),o))}for(;++u1&&a.push("H",r[0]),a.join("")},"step-before":Ia,"step-after":La,basis:Ma,"basis-open":function(e){if(e.length<4)return Sa(e);for(var t,n=[],r=-1,a=e.length,i=[0],o=[0];++r<3;)t=e[r],i.push(t[0]),o.push(t[1]);for(n.push(Za(Na,i)+","+Za(Na,o)),--r;++r9&&(a=3*t/Math.sqrt(a),o[l]=a*n,o[l+1]=a*r);for(l=-1;++l<=s;)a=(e[Math.min(s,l+1)][0]-e[Math.max(0,l-1)][0])/(6*(1+o[l]*o[l])),i.push([a||0,o[l]*a||0]);return i}(e))}});function Sa(e){return e.length>1?e.join("L"):e+"Z"}function Ca(e){return e.join("L")+"Z"}function Ia(e){for(var t=0,n=e.length,r=e[0],a=[r[0],",",r[1]];++t1){l=t[1],i=e[s],s++,r+="C"+(a[0]+o[0])+","+(a[1]+o[1])+","+(i[0]-l[0])+","+(i[1]-l[1])+","+i[0]+","+i[1];for(var c=2;cEe)+",1 "+t}function s(e,t,n,r){return"Q 0,0 "+r}return i.radius=function(e){return arguments.length?(n=yt(e),i):n},i.source=function(t){return arguments.length?(e=yt(t),i):e},i.target=function(e){return arguments.length?(t=yt(e),i):t},i.startAngle=function(e){return arguments.length?(r=yt(e),i):r},i.endAngle=function(e){return arguments.length?(a=yt(e),i):a},i},i.svg.diagonal=function(){var e=Ga,t=Va,n=Fa;function r(r,a){var i=e.call(this,r,a),o=t.call(this,r,a),l=(i.y+o.y)/2,s=[i,{x:i.x,y:l},{x:o.x,y:l},o];return"M"+(s=s.map(n))[0]+"C"+s[1]+" "+s[2]+" "+s[3]}return r.source=function(t){return arguments.length?(e=yt(t),r):e},r.target=function(e){return arguments.length?(t=yt(e),r):t},r.projection=function(e){return arguments.length?(n=e,r):n},r},i.svg.diagonal.radial=function(){var e=i.svg.diagonal(),t=Fa,n=e.projection;return e.projection=function(e){return arguments.length?n(function(e){return function(){var t=e.apply(this,arguments),n=t[0],r=t[1]-Oe;return[n*Math.cos(r),n*Math.sin(r)]}}(t=e)):t},e},i.svg.symbol=function(){var e=_a,t=Ya;function n(n,r){return(ja.get(e.call(this,n,r))||Ba)(t.call(this,n,r))}return n.type=function(t){return arguments.length?(e=yt(t),n):e},n.size=function(e){return arguments.length?(t=yt(e),n):t},n};var ja=i.map({circle:Ba,cross:function(e){var t=Math.sqrt(e/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(e){var t=Math.sqrt(e/(2*Ja)),n=t*Ja;return"M0,"+-t+"L"+n+",0 0,"+t+" "+-n+",0Z"},square:function(e){var t=Math.sqrt(e)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(e){var t=Math.sqrt(e/Ka),n=t*Ka/2;return"M0,"+n+"L"+t+","+-n+" "+-t+","+-n+"Z"},"triangle-up":function(e){var t=Math.sqrt(e/Ka),n=t*Ka/2;return"M0,"+-n+"L"+t+","+n+" "+-t+","+n+"Z"}});i.svg.symbolTypes=ja.keys();var Ka=Math.sqrt(3),Ja=Math.tan(30*Re);Q.transition=function(e){for(var t,n,r=$a||++ni,a=ii(e),i=[],o=ei||{time:Date.now(),ease:On,delay:0,duration:250},l=-1,s=this.length;++l0;)c[--f].call(e,o);if(i>=1)return d.event&&d.event.end.call(e,e.__data__,t),--u.count?delete u[r]:delete e[n],1}d||(i=a.time,o=At((function(e){var t=d.delay;if(o.t=t+i,t<=e)return f(e-t);o.c=f}),0,i),d=u[r]={tween:new A,time:i,timer:o,delay:a.delay,duration:a.duration,ease:a.ease,index:t},a=null,++u.count)}ti.call=Q.call,ti.empty=Q.empty,ti.node=Q.node,ti.size=Q.size,i.transition=function(e,t){return e&&e.transition?$a?e.transition(t):e:i.selection().transition(e)},i.transition.prototype=ti,ti.select=function(e){var t,n,r,a=this.id,i=this.namespace,o=[];e=q(e);for(var l=-1,s=this.length;++lrect,.s>rect").attr("width",o[1]-o[0])}function m(e){e.select(".extent").attr("y",l[0]),e.selectAll(".extent,.e>rect,.w>rect").attr("height",l[1]-l[0])}function y(){var d,y,v=this,g=i.select(i.event.target),b=n.of(v,arguments),x=i.select(v),T=g.datum(),w=!/^(n|s)$/.test(T)&&r,k=!/^(e|w)$/.test(T)&&a,A=g.classed("extent"),S=Ae(v),C=i.mouse(v),I=i.select(u(v)).on("keydown.brush",(function(){32==i.event.keyCode&&(A||(d=null,C[0]-=o[1],C[1]-=l[1],A=2),z())})).on("keyup.brush",(function(){32==i.event.keyCode&&2==A&&(C[0]+=o[1],C[1]+=l[1],A=0,z())}));if(i.event.changedTouches?I.on("touchmove.brush",E).on("touchend.brush",Z):I.on("mousemove.brush",E).on("mouseup.brush",Z),x.interrupt().selectAll("*").interrupt(),A)C[0]=o[0]-C[0],C[1]=l[0]-C[1];else if(T){var L=+/w$/.test(T),P=+/^n/.test(T);y=[o[1-L]-C[0],l[1-P]-C[1]],C[0]=o[L],C[1]=l[P]}else i.event.altKey&&(d=C.slice());function E(){var e=i.mouse(v),t=!1;y&&(e[0]+=y[0],e[1]+=y[1]),A||(i.event.altKey?(d||(d=[(o[0]+o[1])/2,(l[0]+l[1])/2]),C[0]=o[+(e[0]>>1;t.dtype||(t.dtype="array"),"string"==typeof t.dtype?h=new(d(t.dtype))(y):t.dtype&&(h=t.dtype,Array.isArray(h)&&(h.length=y));for(var v=0;vn||l>1073741824){for(var f=0;fn+a||C>r+a||I=E||o===l)){var s=g[i];void 0===l&&(l=s.length);for(var c=o;c=y&&d<=w&&f>=v&&f<=k&&M.push(u)}var p=b[i],h=p[4*o+0],m=p[4*o+1],x=p[4*o+2],T=p[4*o+3],A=function(e,t){for(var n=null,r=0;null===n;)if(n=e[4*t+r],++r>e.length)return null;return n}(p,o+1),L=.5*a,Z=i+1;t(n,r,L,Z,h,m||x||T||A),t(n,r+L,L,Z,m,x||T||A),t(n+L,r,L,Z,x,T||A),t(n+L,r+L,L,Z,T,A)}}(0,0,1,0,0,1),M},h;function L(e,t,n){for(var r=1,a=.5,i=.5,o=.5,l=0;la&&(a=e[o]),e[o]>2],i+=r[(3&n[t])<<4|n[t+1]>>4],i+=r[(15&n[t+1])<<2|n[t+2]>>6],i+=r[63&n[t+2]];return a%3==2?i=i.substring(0,i.length-1)+"=":a%3==1&&(i=i.substring(0,i.length-2)+"=="),i},l=function(e){var t,n,r,i,o,l=.75*e.length,s=e.length,c=0;"="===e[e.length-1]&&(l--,"="===e[e.length-2]&&l--);var u=new ArrayBuffer(l),d=new Uint8Array(u);for(t=0;t>4,d[c++]=(15&r)<<4|i>>2,d[c++]=(3&i)<<6|63&o;return u}},91493:function(e,t){t.byteLength=function(e){var t=l(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,i,o=l(e),s=o[0],c=o[1],u=new a(3*(s+(i=c))/4-i),d=0,f=c>0?s-4:s;for(n=0;n>16&255,u[d++]=t>>8&255,u[d++]=255&t;return 2===c&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,u[d++]=255&t),1===c&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,u[d++]=t>>8&255,u[d++]=255&t),u},t.fromByteArray=function(e){for(var t,r=e.length,a=r%3,i=[],o=16383,l=0,c=r-a;lc?c:l+o));return 1===a?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+"==")):2===a&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),i.join("")};for(var n=[],r=[],a="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)n[o]=i[o],r[i.charCodeAt(o)]=o;function l(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function s(e,t,r){for(var a,i,o=[],l=t;l>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return o.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},75496:function(e){function t(e,t,n,r,a){for(var i=a+1;r<=a;){var o=r+a>>>1,l=e[o];(void 0!==n?n(l,t):l-t)>=0?(i=o,a=o-1):r=o+1}return i}function n(e,t,n,r,a){for(var i=a+1;r<=a;){var o=r+a>>>1,l=e[o];(void 0!==n?n(l,t):l-t)>0?(i=o,a=o-1):r=o+1}return i}function r(e,t,n,r,a){for(var i=r-1;r<=a;){var o=r+a>>>1,l=e[o];(void 0!==n?n(l,t):l-t)<0?(i=o,r=o+1):a=o-1}return i}function a(e,t,n,r,a){for(var i=r-1;r<=a;){var o=r+a>>>1,l=e[o];(void 0!==n?n(l,t):l-t)<=0?(i=o,r=o+1):a=o-1}return i}function i(e,t,n,r,a){for(;r<=a;){var i=r+a>>>1,o=e[i],l=void 0!==n?n(o,t):o-t;if(0===l)return i;l<=0?r=i+1:a=i-1}return-1}function o(e,t,n,r,a,i){return"function"==typeof n?i(e,t,n,void 0===r?0:0|r,void 0===a?e.length-1:0|a):i(e,t,void 0,void 0===n?0:0|n,void 0===r?e.length-1:0|r)}e.exports={ge:function(e,n,r,a,i){return o(e,n,r,a,i,t)},gt:function(e,t,r,a,i){return o(e,t,r,a,i,n)},lt:function(e,t,n,a,i){return o(e,t,n,a,i,r)},le:function(e,t,n,r,i){return o(e,t,n,r,i,a)},eq:function(e,t,n,r,a){return o(e,t,n,r,a,i)}}},41586:function(e,t){function n(e){var t=32;return(e&=-e)&&t--,65535&e&&(t-=16),16711935&e&&(t-=8),252645135&e&&(t-=4),858993459&e&&(t-=2),1431655765&e&&(t-=1),t}t.INT_BITS=32,t.INT_MAX=2147483647,t.INT_MIN=-1<<31,t.sign=function(e){return(e>0)-(e<0)},t.abs=function(e){var t=e>>31;return(e^t)-t},t.min=function(e,t){return t^(e^t)&-(e65535)<<4,t|=n=((e>>>=t)>255)<<3,t|=n=((e>>>=n)>15)<<2,(t|=n=((e>>>=n)>3)<<1)|(e>>>=n)>>1},t.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0},t.popCount=function(e){return 16843009*((e=(858993459&(e-=e>>>1&1431655765))+(e>>>2&858993459))+(e>>>4)&252645135)>>>24},t.countTrailingZeros=n,t.nextPow2=function(e){return e+=0===e,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,1+((e|=e>>>8)|e>>>16)},t.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,(e|=e>>>16)-(e>>>1)},t.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,27030>>>(e&=15)&1};var r=new Array(256);!function(e){for(var t=0;t<256;++t){var n=t,r=t,a=7;for(n>>>=1;n;n>>>=1)r<<=1,r|=1&n,--a;e[t]=r<>>8&255]<<16|r[e>>>16&255]<<8|r[e>>>24&255]},t.interleave2=function(e,t){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))<<1},t.deinterleave2=function(e,t){return(e=65535&((e=16711935&((e=252645135&((e=858993459&((e=e>>>t&1431655765)|e>>>1))|e>>>2))|e>>>4))|e>>>16))<<16>>16},t.interleave3=function(e,t,n){return e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2),(e|=(t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2))<<1)|(n=1227133513&((n=3272356035&((n=251719695&((n=4278190335&((n&=1023)|n<<16))|n<<8))|n<<4))|n<<2))<<2},t.deinterleave3=function(e,t){return(e=1023&((e=4278190335&((e=251719695&((e=3272356035&((e=e>>>t&1227133513)|e>>>2))|e>>>4))|e>>>8))|e>>>16))<<22>>22},t.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>n(e)+1}},79273:function(e){e.exports=function(e,r){r||(r={});var a,i,o,l,s,c,u,d,f,p,h,m=null==r.cutoff?.25:r.cutoff,y=null==r.radius?8:r.radius,v=r.channel||0;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!r.width||!r.height)throw Error("For raw data width and height should be provided by options");a=r.width,i=r.height,l=e,c=r.stride?r.stride:Math.floor(e.length/a/i)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(u=(d=e).getContext("2d"),a=d.width,i=d.height,l=(f=u.getImageData(0,0,a,i)).data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(u=e,a=(d=e.canvas).width,i=d.height,l=(f=u.getImageData(0,0,a,i)).data,c=4):window.ImageData&&e instanceof window.ImageData&&(f=e,a=e.width,i=e.height,l=f.data,c=4);if(o=Math.max(a,i),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(s=l,l=Array(a*i),p=0,h=Math.floor(s.length/c);pn?n:e:et?t:e}},82759:function(e,t,n){var r=n(91259);function a(e,t){null==t&&(t=!0);var n=e[0],a=e[1],i=e[2],o=e[3];return null==o&&(o=t?1:255),t&&(n*=255,a*=255,i*=255,o*=255),16777216*(n=255&r(n,0,255))+((a=255&r(a,0,255))<<16)+((i=255&r(i,0,255))<<8)+(255&r(o,0,255))}e.exports=a,e.exports.to=a,e.exports.from=function(e,t){var n=(e=+e)>>>24,r=(16711680&e)>>>16,a=(65280&e)>>>8,i=255&e;return!1===t?[n,r,a,i]:[n/255,r/255,a/255,i/255]}},83781:function(e){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},24373:function(e,t,n){var r=n(12869),a=n(91259),i=n(68100);e.exports=function(e,t){"float"!==t&&t||(t="array"),"uint"===t&&(t="uint8"),"uint_clamped"===t&&(t="uint8_clamped");var n,o=new(i(t))(4),l="uint8"!==t&&"uint8_clamped"!==t;return e.length&&"string"!=typeof e||((e=r(e))[0]/=255,e[1]/=255,e[2]/=255),(n=e)instanceof Uint8Array||n instanceof Uint8ClampedArray||Array.isArray(n)&&(n[0]>1||0===n[0])&&(n[1]>1||0===n[1])&&(n[2]>1||0===n[2])&&(!n[3]||n[3]>1)?(o[0]=e[0],o[1]=e[1],o[2]=e[2],o[3]=null!=e[3]?e[3]:255,l&&(o[0]/=255,o[1]/=255,o[2]/=255,o[3]/=255),o):(l?(o[0]=e[0],o[1]=e[1],o[2]=e[2],o[3]=null!=e[3]?e[3]:1):(o[0]=a(Math.floor(255*e[0]),0,255),o[1]=a(Math.floor(255*e[1]),0,255),o[2]=a(Math.floor(255*e[2]),0,255),o[3]=null==e[3]?255:a(Math.floor(255*e[3]),0,255)),o)}},89110:function(e,t,n){var r=n(83781);e.exports=function(e){var t,n,i=[],o=1;if("string"==typeof e)if(e=e.toLowerCase(),r[e])i=r[e].slice(),n="rgb";else if("transparent"===e)o=0,n="rgb",i=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var l=e.slice(1);o=1,(u=l.length)<=4?(i=[parseInt(l[0]+l[0],16),parseInt(l[1]+l[1],16),parseInt(l[2]+l[2],16)],4===u&&(o=parseInt(l[3]+l[3],16)/255)):(i=[parseInt(l[0]+l[1],16),parseInt(l[2]+l[3],16),parseInt(l[4]+l[5],16)],8===u&&(o=parseInt(l[6]+l[7],16)/255)),i[0]||(i[0]=0),i[1]||(i[1]=0),i[2]||(i[2]=0),n="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var s=t[1],c="rgb"===s;n=l=s.replace(/a$/,"");var u="cmyk"===l?4:"gray"===l?1:3;i=t[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(e,t){if(/%$/.test(e))return t===u?parseFloat(e)/100:"rgb"===l?255*parseFloat(e)/100:parseFloat(e);if("h"===l[t]){if(/deg$/.test(e))return parseFloat(e);if(void 0!==a[e])return a[e]}return parseFloat(e)})),s===l&&i.push(1),o=c||void 0===i[u]?1:i[u],i=i.slice(0,u)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(i=e.match(/([0-9]+)/g).map((function(e){return parseFloat(e)})),n=e.match(/([a-z])/gi).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(i=[e[0],e[1],e[2]],n="rgb",o=4===e.length?e[3]:1):e instanceof Object&&(null!=e.r||null!=e.red||null!=e.R?(n="rgb",i=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(n="hsl",i=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),o=e.a||e.alpha||e.opacity||1,null!=e.opacity&&(o/=100)):(n="rgb",i=[e>>>16,(65280&e)>>>8,255&e]);return{space:n,values:i,alpha:o}};var a={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}},12869:function(e,t,n){var r=n(89110);e.exports=function(e){var t;Array.isArray(e)&&e.raw&&(e=String.raw.apply(null,arguments));var n=r(e);if(!n.space)return[];var a=[0,0,0],i="h"===n.space[0]?[360,100,100]:[255,255,255];return(t=Array(3))[0]=Math.min(Math.max(n.values[0],a[0]),i[0]),t[1]=Math.min(Math.max(n.values[1],a[1]),i[1]),t[2]=Math.min(Math.max(n.values[2],a[2]),i[2]),"h"===n.space[0]&&(t=function(e){var t,n,r,a,i,o=e[0]/360,l=e[1]/100,s=e[2]/100,c=0;if(0===l)return[i=255*s,i,i];for(t=2*s-(n=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];c<3;)(r=o+1/3*-(c-1))<0?r++:r>1&&r--,i=6*r<1?t+6*(n-t)*r:2*r<1?n:3*r<2?t+(n-t)*(2/3-r)*6:t,a[c++]=255*i;return a}(t)),t.push(Math.min(Math.max(n.alpha,0),1)),t}},93211:function(e,t,n){e.exports={parse:n(54020),stringify:n(92410)}},86355:function(e,t,n){var r=n(23648);e.exports={isSize:function(e){return/^[\d\.]/.test(e)||-1!==e.indexOf("/")||-1!==r.indexOf(e)}}},54020:function(e,t,n){var r=n(72029),a=n(54324),i=n(94316),o=n(99803),l=n(87486),s=n(2362),c=n(57530),u=n(86355).isSize;e.exports=f;var d=f.cache={};function f(e){if("string"!=typeof e)throw new Error("Font argument must be a string.");if(d[e])return d[e];if(""===e)throw new Error("Cannot parse an empty string.");if(-1!==i.indexOf(e))return d[e]={system:e};for(var t,n={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},f=c(e,/\s+/);t=f.shift();){if(-1!==a.indexOf(t))return["style","variant","weight","stretch"].forEach((function(e){n[e]=t})),d[e]=n;if(-1===l.indexOf(t))if("normal"!==t&&"small-caps"!==t)if(-1===s.indexOf(t)){if(-1===o.indexOf(t)){if(u(t)){var h=c(t,"/");if(n.size=h[0],null!=h[1]?n.lineHeight=p(h[1]):"/"===f[0]&&(f.shift(),n.lineHeight=p(f.shift())),!f.length)throw new Error("Missing required font-family.");return n.family=c(f.join(" "),/\s*,\s*/).map(r),d[e]=n}throw new Error("Unknown or unsupported font token: "+t)}n.weight=t}else n.stretch=t;else n.variant=t;else n.style=t}throw new Error("Missing required font-size.")}function p(e){var t=parseFloat(e);return t.toString()===e?t:e}},92410:function(e,t,n){var r=n(75680),a=n(86355).isSize,i=h(n(54324)),o=h(n(94316)),l=h(n(99803)),s=h(n(87486)),c=h(n(2362)),u={normal:1,"small-caps":1},d={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},f="serif";function p(e,t){if(e&&!t[e]&&!i[e])throw Error("Unknown keyword `"+e+"`");return e}function h(e){for(var t={},n=0;n1?r[0]+r.slice(2):r,+e.slice(n+1)]}n.d(t,{GP:function(){return f},OE:function(){return m}});var a,i=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function o(e){if(!(t=i.exec(e)))throw new Error("invalid format: "+e);var t;return new l({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function l(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function s(e,t){var n=r(e,t);if(!n)return e+"";var a=n[0],i=n[1];return i<0?"0."+new Array(-i).join("0")+a:a.length>i+1?a.slice(0,i+1)+"."+a.slice(i+1):a+new Array(i-a.length+2).join("0")}o.prototype=l.prototype,l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var c={"%":function(e,t){return(100*e).toFixed(t)},b:function(e){return Math.round(e).toString(2)},c:function(e){return e+""},d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:function(e,t){return e.toExponential(t)},f:function(e,t){return e.toFixed(t)},g:function(e,t){return e.toPrecision(t)},o:function(e){return Math.round(e).toString(8)},p:function(e,t){return s(100*e,t)},r:s,s:function(e,t){var n=r(e,t);if(!n)return e+"";var i=n[0],o=n[1],l=o-(a=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,s=i.length;return l===s?i:l>s?i+new Array(l-s+1).join("0"):l>0?i.slice(0,l)+"."+i.slice(l):"0."+new Array(1-l).join("0")+r(e,Math.max(0,t+l-1))[0]},X:function(e){return Math.round(e).toString(16).toUpperCase()},x:function(e){return Math.round(e).toString(16)}};function u(e){return e}var d,f,p=Array.prototype.map,h=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function m(e){var t,n,i=void 0===e.grouping||void 0===e.thousands?u:(t=p.call(e.grouping,Number),n=e.thousands+"",function(e,r){for(var a=e.length,i=[],o=0,l=t[0],s=0;a>0&&l>0&&(s+l+1>r&&(l=Math.max(1,r-s)),i.push(e.substring(a-=l,a+l)),!((s+=l+1)>r));)l=t[o=(o+1)%t.length];return i.reverse().join(n)}),l=void 0===e.currency?"":e.currency[0]+"",s=void 0===e.currency?"":e.currency[1]+"",d=void 0===e.decimal?".":e.decimal+"",f=void 0===e.numerals?u:function(e){return function(t){return t.replace(/[0-9]/g,(function(t){return e[+t]}))}}(p.call(e.numerals,String)),m=void 0===e.percent?"%":e.percent+"",y=void 0===e.minus?"-":e.minus+"",v=void 0===e.nan?"NaN":e.nan+"";function g(e){var t=(e=o(e)).fill,n=e.align,r=e.sign,u=e.symbol,p=e.zero,g=e.width,b=e.comma,x=e.precision,T=e.trim,w=e.type;"n"===w?(b=!0,w="g"):c[w]||(void 0===x&&(x=12),T=!0,w="g"),(p||"0"===t&&"="===n)&&(p=!0,t="0",n="=");var k="$"===u?l:"#"===u&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A="$"===u?s:/[%p]/.test(w)?m:"",S=c[w],C=/[defgprs%]/.test(w);function I(e){var o,l,s,c=k,u=A;if("c"===w)u=S(e)+u,e="";else{var m=(e=+e)<0||1/e<0;if(e=isNaN(e)?v:S(Math.abs(e),x),T&&(e=function(e){e:for(var t,n=e.length,r=1,a=-1;r0&&(a=0)}return a>0?e.slice(0,a)+e.slice(t+1):e}(e)),m&&0==+e&&"+"!==r&&(m=!1),c=(m?"("===r?r:y:"-"===r||"("===r?"":r)+c,u=("s"===w?h[8+a/3]:"")+u+(m&&"("===r?")":""),C)for(o=-1,l=e.length;++o(s=e.charCodeAt(o))||s>57){u=(46===s?d+e.slice(o+1):e.slice(o))+u,e=e.slice(0,o);break}}b&&!p&&(e=i(e,1/0));var I=c.length+e.length+u.length,L=I>1)+c+e+u+L.slice(I);break;default:e=L+c+e+u}return f(e)}return x=void 0===x?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,x)):Math.max(0,Math.min(20,x)),I.toString=function(){return e+""},I}return{format:g,formatPrefix:function(e,t){var n,a=g(((e=o(e)).type="f",e)),i=3*Math.max(-8,Math.min(8,Math.floor((n=t,((n=r(Math.abs(n)))?n[1]:NaN)/3)))),l=Math.pow(10,-i),s=h[8+i/3];return function(e){return a(l*e)+s}}}}d=m({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),f=d.format,d.formatPrefix},11910:function(e,t,n){n.d(t,{DC:function(){return h},de:function(){return f},aL:function(){return m}});var r=n(87958),a=n(52862),i=n(78870),o=n(68286),l=n(6571),s=n(56235);function c(e){if(0<=e.y&&e.y<100){var t=new Date(-1,e.m,e.d,e.H,e.M,e.S,e.L);return t.setFullYear(e.y),t}return new Date(e.y,e.m,e.d,e.H,e.M,e.S,e.L)}function u(e){if(0<=e.y&&e.y<100){var t=new Date(Date.UTC(-1,e.m,e.d,e.H,e.M,e.S,e.L));return t.setUTCFullYear(e.y),t}return new Date(Date.UTC(e.y,e.m,e.d,e.H,e.M,e.S,e.L))}function d(e,t,n){return{y:e,m:t,d:n,H:0,M:0,S:0,L:0}}function f(e){var t=e.dateTime,n=e.date,l=e.time,s=e.periods,f=e.days,p=e.shortDays,h=e.months,m=e.shortMonths,v=w(s),g=k(s),b=w(f),x=k(f),T=w(p),te=k(p),Te=w(h),Oe=k(h),Re=w(m),Ne=k(m),Xe={a:function(e){return p[e.getDay()]},A:function(e){return f[e.getDay()]},b:function(e){return m[e.getMonth()]},B:function(e){return h[e.getMonth()]},c:null,d:Y,e:Y,f:J,g:oe,G:se,H:_,I:B,j:j,L:K,m:U,M:Q,p:function(e){return s[+(e.getHours()>=12)]},q:function(e){return 1+~~(e.getMonth()/3)},Q:Me,s:Ze,S:q,u:$,U:ee,V:ne,w:re,W:ae,x:null,X:null,y:ie,Y:le,Z:ce,"%":Ee},He={a:function(e){return p[e.getUTCDay()]},A:function(e){return f[e.getUTCDay()]},b:function(e){return m[e.getUTCMonth()]},B:function(e){return h[e.getUTCMonth()]},c:null,d:ue,e:ue,f:me,g:Ce,G:Le,H:de,I:fe,j:pe,L:he,m:ye,M:ve,p:function(e){return s[+(e.getUTCHours()>=12)]},q:function(e){return 1+~~(e.getUTCMonth()/3)},Q:Me,s:Ze,S:ge,u:be,U:xe,V:we,w:ke,W:Ae,x:null,X:null,y:Se,Y:Ie,Z:Pe,"%":Ee},De={a:function(e,t,n){var r=T.exec(t.slice(n));return r?(e.w=te[r[0].toLowerCase()],n+r[0].length):-1},A:function(e,t,n){var r=b.exec(t.slice(n));return r?(e.w=x[r[0].toLowerCase()],n+r[0].length):-1},b:function(e,t,n){var r=Re.exec(t.slice(n));return r?(e.m=Ne[r[0].toLowerCase()],n+r[0].length):-1},B:function(e,t,n){var r=Te.exec(t.slice(n));return r?(e.m=Oe[r[0].toLowerCase()],n+r[0].length):-1},c:function(e,n,r){return Ve(e,t,n,r)},d:R,e:R,f:G,g:E,G:P,H:X,I:X,j:N,L:W,m:O,M:H,p:function(e,t,n){var r=v.exec(t.slice(n));return r?(e.p=g[r[0].toLowerCase()],n+r[0].length):-1},q:Z,Q:z,s:F,S:D,u:S,U:C,V:I,w:A,W:L,x:function(e,t,r){return Ve(e,n,t,r)},X:function(e,t,n){return Ve(e,l,t,n)},y:E,Y:P,Z:M,"%":V};function We(e,t){return function(n){var r,a,i,o=[],l=-1,s=0,c=e.length;for(n instanceof Date||(n=new Date(+n));++l53)return null;"w"in f||(f.w=1),"Z"in f?(s=(l=u(d(f.y,0,1))).getUTCDay(),l=s>4||0===s?r.rt.ceil(l):(0,r.rt)(l),l=a.A.offset(l,7*(f.V-1)),f.y=l.getUTCFullYear(),f.m=l.getUTCMonth(),f.d=l.getUTCDate()+(f.w+6)%7):(s=(l=c(d(f.y,0,1))).getDay(),l=s>4||0===s?i.By.ceil(l):(0,i.By)(l),l=o.A.offset(l,7*(f.V-1)),f.y=l.getFullYear(),f.m=l.getMonth(),f.d=l.getDate()+(f.w+6)%7)}else("W"in f||"U"in f)&&("w"in f||(f.w="u"in f?f.u%7:"W"in f?1:0),s="Z"in f?u(d(f.y,0,1)).getUTCDay():c(d(f.y,0,1)).getDay(),f.m=0,f.d="W"in f?(f.w+6)%7+7*f.W-(s+5)%7:f.w+7*f.U-(s+6)%7);return"Z"in f?(f.H+=f.Z/100|0,f.M+=f.Z%100,u(f)):c(f)}}function Ve(e,t,n,r){for(var a,i,o=0,l=t.length,s=n.length;o=s)return-1;if(37===(a=t.charCodeAt(o++))){if(a=t.charAt(o++),!(i=De[a in y?t.charAt(o++):a])||(r=i(e,n,r))<0)return-1}else if(a!=n.charCodeAt(r++))return-1}return r}return Xe.x=We(n,Xe),Xe.X=We(l,Xe),Xe.c=We(t,Xe),He.x=We(n,He),He.X=We(l,He),He.c=We(t,He),{format:function(e){var t=We(e+="",Xe);return t.toString=function(){return e},t},parse:function(e){var t=Ge(e+="",!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=We(e+="",He);return t.toString=function(){return e},t},utcParse:function(e){var t=Ge(e+="",!0);return t.toString=function(){return e},t}}}var p,h,m,y={"-":"",_:" ",0:"0"},v=/^\s*\d+/,g=/^%/,b=/[\\^$*+?|[\]().{}]/g;function x(e,t,n){var r=e<0?"-":"",a=(r?-e:e)+"",i=a.length;return r+(i68?1900:2e3),n+r[0].length):-1}function M(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||"00")),n+r[0].length):-1}function Z(e,t,n){var r=v.exec(t.slice(n,n+1));return r?(e.q=3*r[0]-3,n+r[0].length):-1}function O(e,t,n){var r=v.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function R(e,t,n){var r=v.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function N(e,t,n){var r=v.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function X(e,t,n){var r=v.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function H(e,t,n){var r=v.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function D(e,t,n){var r=v.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function W(e,t,n){var r=v.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function G(e,t,n){var r=v.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function V(e,t,n){var r=g.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function z(e,t,n){var r=v.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function F(e,t,n){var r=v.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function Y(e,t){return x(e.getDate(),t,2)}function _(e,t){return x(e.getHours(),t,2)}function B(e,t){return x(e.getHours()%12||12,t,2)}function j(e,t){return x(1+o.A.count((0,l.A)(e),e),t,3)}function K(e,t){return x(e.getMilliseconds(),t,3)}function J(e,t){return K(e,t)+"000"}function U(e,t){return x(e.getMonth()+1,t,2)}function Q(e,t){return x(e.getMinutes(),t,2)}function q(e,t){return x(e.getSeconds(),t,2)}function $(e){var t=e.getDay();return 0===t?7:t}function ee(e,t){return x(i.fz.count((0,l.A)(e)-1,e),t,2)}function te(e){var t=e.getDay();return t>=4||0===t?(0,i.dt)(e):i.dt.ceil(e)}function ne(e,t){return e=te(e),x(i.dt.count((0,l.A)(e),e)+(4===(0,l.A)(e).getDay()),t,2)}function re(e){return e.getDay()}function ae(e,t){return x(i.By.count((0,l.A)(e)-1,e),t,2)}function ie(e,t){return x(e.getFullYear()%100,t,2)}function oe(e,t){return x((e=te(e)).getFullYear()%100,t,2)}function le(e,t){return x(e.getFullYear()%1e4,t,4)}function se(e,t){var n=e.getDay();return x((e=n>=4||0===n?(0,i.dt)(e):i.dt.ceil(e)).getFullYear()%1e4,t,4)}function ce(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+x(t/60|0,"0",2)+x(t%60,"0",2)}function ue(e,t){return x(e.getUTCDate(),t,2)}function de(e,t){return x(e.getUTCHours(),t,2)}function fe(e,t){return x(e.getUTCHours()%12||12,t,2)}function pe(e,t){return x(1+a.A.count((0,s.A)(e),e),t,3)}function he(e,t){return x(e.getUTCMilliseconds(),t,3)}function me(e,t){return he(e,t)+"000"}function ye(e,t){return x(e.getUTCMonth()+1,t,2)}function ve(e,t){return x(e.getUTCMinutes(),t,2)}function ge(e,t){return x(e.getUTCSeconds(),t,2)}function be(e){var t=e.getUTCDay();return 0===t?7:t}function xe(e,t){return x(r.Hl.count((0,s.A)(e)-1,e),t,2)}function Te(e){var t=e.getUTCDay();return t>=4||0===t?(0,r.pT)(e):r.pT.ceil(e)}function we(e,t){return e=Te(e),x(r.pT.count((0,s.A)(e),e)+(4===(0,s.A)(e).getUTCDay()),t,2)}function ke(e){return e.getUTCDay()}function Ae(e,t){return x(r.rt.count((0,s.A)(e)-1,e),t,2)}function Se(e,t){return x(e.getUTCFullYear()%100,t,2)}function Ce(e,t){return x((e=Te(e)).getUTCFullYear()%100,t,2)}function Ie(e,t){return x(e.getUTCFullYear()%1e4,t,4)}function Le(e,t){var n=e.getUTCDay();return x((e=n>=4||0===n?(0,r.pT)(e):r.pT.ceil(e)).getUTCFullYear()%1e4,t,4)}function Pe(){return"+0000"}function Ee(){return"%"}function Me(e){return+e}function Ze(e){return Math.floor(+e/1e3)}p=f({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]}),h=p.format,p.parse,m=p.utcFormat,p.utcParse},68286:function(e,t,n){n.d(t,{_:function(){return o}});var r=n(53407),a=n(59318),i=(0,r.A)((function(e){e.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*a.rR)/a.Nm}),(function(e){return e.getDate()-1}));t.A=i;var o=i.range},59318:function(e,t,n){n.d(t,{Fq:function(){return l},JJ:function(){return i},Nm:function(){return o},Tt:function(){return r},rR:function(){return a}});var r=1e3,a=6e4,i=36e5,o=864e5,l=6048e5},42197:function(e,t,n){n.r(t),n.d(t,{timeDay:function(){return v.A},timeDays:function(){return v._},timeFriday:function(){return g.Sh},timeFridays:function(){return g.tz},timeHour:function(){return m},timeHours:function(){return y},timeInterval:function(){return r.A},timeMillisecond:function(){return i},timeMilliseconds:function(){return o},timeMinute:function(){return f},timeMinutes:function(){return p},timeMonday:function(){return g.By},timeMondays:function(){return g.KP},timeMonth:function(){return x},timeMonths:function(){return T},timeSaturday:function(){return g.kS},timeSaturdays:function(){return g.t$},timeSecond:function(){return c},timeSeconds:function(){return u},timeSunday:function(){return g.fz},timeSundays:function(){return g.se},timeThursday:function(){return g.dt},timeThursdays:function(){return g.Q$},timeTuesday:function(){return g.eQ},timeTuesdays:function(){return g.yW},timeWednesday:function(){return g.l3},timeWednesdays:function(){return g.gf},timeWeek:function(){return g.fz},timeWeeks:function(){return g.se},timeYear:function(){return w.A},timeYears:function(){return w.V},utcDay:function(){return P.A},utcDays:function(){return P.o},utcFriday:function(){return E.a1},utcFridays:function(){return E.Zn},utcHour:function(){return I},utcHours:function(){return L},utcMillisecond:function(){return i},utcMilliseconds:function(){return o},utcMinute:function(){return A},utcMinutes:function(){return S},utcMonday:function(){return E.rt},utcMondays:function(){return E.ON},utcMonth:function(){return Z},utcMonths:function(){return O},utcSaturday:function(){return E.c8},utcSaturdays:function(){return E.Xo},utcSecond:function(){return c},utcSeconds:function(){return u},utcSunday:function(){return E.Hl},utcSundays:function(){return E.aZ},utcThursday:function(){return E.pT},utcThursdays:function(){return E.wr},utcTuesday:function(){return E.sr},utcTuesdays:function(){return E.jN},utcWednesday:function(){return E.z2},utcWednesdays:function(){return E.G6},utcWeek:function(){return E.Hl},utcWeeks:function(){return E.aZ},utcYear:function(){return R.A},utcYears:function(){return R.j}});var r=n(53407),a=(0,r.A)((function(){}),(function(e,t){e.setTime(+e+t)}),(function(e,t){return t-e}));a.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?(0,r.A)((function(t){t.setTime(Math.floor(t/e)*e)}),(function(t,n){t.setTime(+t+n*e)}),(function(t,n){return(n-t)/e})):a:null};var i=a,o=a.range,l=n(59318),s=(0,r.A)((function(e){e.setTime(e-e.getMilliseconds())}),(function(e,t){e.setTime(+e+t*l.Tt)}),(function(e,t){return(t-e)/l.Tt}),(function(e){return e.getUTCSeconds()})),c=s,u=s.range,d=(0,r.A)((function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*l.Tt)}),(function(e,t){e.setTime(+e+t*l.rR)}),(function(e,t){return(t-e)/l.rR}),(function(e){return e.getMinutes()})),f=d,p=d.range,h=(0,r.A)((function(e){e.setTime(e-e.getMilliseconds()-e.getSeconds()*l.Tt-e.getMinutes()*l.rR)}),(function(e,t){e.setTime(+e+t*l.JJ)}),(function(e,t){return(t-e)/l.JJ}),(function(e){return e.getHours()})),m=h,y=h.range,v=n(68286),g=n(78870),b=(0,r.A)((function(e){e.setDate(1),e.setHours(0,0,0,0)}),(function(e,t){e.setMonth(e.getMonth()+t)}),(function(e,t){return t.getMonth()-e.getMonth()+12*(t.getFullYear()-e.getFullYear())}),(function(e){return e.getMonth()})),x=b,T=b.range,w=n(6571),k=(0,r.A)((function(e){e.setUTCSeconds(0,0)}),(function(e,t){e.setTime(+e+t*l.rR)}),(function(e,t){return(t-e)/l.rR}),(function(e){return e.getUTCMinutes()})),A=k,S=k.range,C=(0,r.A)((function(e){e.setUTCMinutes(0,0,0)}),(function(e,t){e.setTime(+e+t*l.JJ)}),(function(e,t){return(t-e)/l.JJ}),(function(e){return e.getUTCHours()})),I=C,L=C.range,P=n(52862),E=n(87958),M=(0,r.A)((function(e){e.setUTCDate(1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCMonth(e.getUTCMonth()+t)}),(function(e,t){return t.getUTCMonth()-e.getUTCMonth()+12*(t.getUTCFullYear()-e.getUTCFullYear())}),(function(e){return e.getUTCMonth()})),Z=M,O=M.range,R=n(56235)},53407:function(e,t,n){n.d(t,{A:function(){return i}});var r=new Date,a=new Date;function i(e,t,n,o){function l(t){return e(t=0===arguments.length?new Date:new Date(+t)),t}return l.floor=function(t){return e(t=new Date(+t)),t},l.ceil=function(n){return e(n=new Date(n-1)),t(n,1),e(n),n},l.round=function(e){var t=l(e),n=l.ceil(e);return e-t0))return o;do{o.push(i=new Date(+n)),t(n,a),e(n)}while(i=t)for(;e(t),!n(t);)t.setTime(t-1)}),(function(e,r){if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}))},n&&(l.count=function(t,i){return r.setTime(+t),a.setTime(+i),e(r),e(a),Math.floor(n(r,a))},l.every=function(e){return e=Math.floor(e),isFinite(e)&&e>0?e>1?l.filter(o?function(t){return o(t)%e==0}:function(t){return l.count(0,t)%e==0}):l:null}),l}},52862:function(e,t,n){n.d(t,{o:function(){return o}});var r=n(53407),a=n(59318),i=(0,r.A)((function(e){e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+t)}),(function(e,t){return(t-e)/a.Nm}),(function(e){return e.getUTCDate()-1}));t.A=i;var o=i.range},87958:function(e,t,n){n.d(t,{G6:function(){return y},Hl:function(){return o},ON:function(){return h},Xo:function(){return b},Zn:function(){return g},a1:function(){return d},aZ:function(){return p},c8:function(){return f},jN:function(){return m},pT:function(){return u},rt:function(){return l},sr:function(){return s},wr:function(){return v},z2:function(){return c}});var r=n(53407),a=n(59318);function i(e){return(0,r.A)((function(t){t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCDate(e.getUTCDate()+7*t)}),(function(e,t){return(t-e)/a.Fq}))}var o=i(0),l=i(1),s=i(2),c=i(3),u=i(4),d=i(5),f=i(6),p=o.range,h=l.range,m=s.range,y=c.range,v=u.range,g=d.range,b=f.range},56235:function(e,t,n){n.d(t,{j:function(){return i}});var r=n(53407),a=(0,r.A)((function(e){e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,t){e.setUTCFullYear(e.getUTCFullYear()+t)}),(function(e,t){return t.getUTCFullYear()-e.getUTCFullYear()}),(function(e){return e.getUTCFullYear()}));a.every=function(e){return isFinite(e=Math.floor(e))&&e>0?(0,r.A)((function(t){t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,n){t.setUTCFullYear(t.getUTCFullYear()+n*e)})):null},t.A=a;var i=a.range},78870:function(e,t,n){n.d(t,{By:function(){return l},KP:function(){return h},Q$:function(){return v},Sh:function(){return d},dt:function(){return u},eQ:function(){return s},fz:function(){return o},gf:function(){return y},kS:function(){return f},l3:function(){return c},se:function(){return p},t$:function(){return b},tz:function(){return g},yW:function(){return m}});var r=n(53407),a=n(59318);function i(e){return(0,r.A)((function(t){t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)}),(function(e,t){e.setDate(e.getDate()+7*t)}),(function(e,t){return(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*a.rR)/a.Fq}))}var o=i(0),l=i(1),s=i(2),c=i(3),u=i(4),d=i(5),f=i(6),p=o.range,h=l.range,m=s.range,y=c.range,v=u.range,g=d.range,b=f.range},6571:function(e,t,n){n.d(t,{V:function(){return i}});var r=n(53407),a=(0,r.A)((function(e){e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,t){e.setFullYear(e.getFullYear()+t)}),(function(e,t){return t.getFullYear()-e.getFullYear()}),(function(e){return e.getFullYear()}));a.every=function(e){return isFinite(e=Math.floor(e))&&e>0?(0,r.A)((function(t){t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,n){t.setFullYear(t.getFullYear()+n*e)})):null},t.A=a;var i=a.range},97957:function(e){e.exports=function(){for(var e=0;el*s){var p=(f-d)/l;o[u]=1e3*p}}return o}function a(e){for(var t=[],n=e[0];n<=e[1];n++)for(var r=String.fromCharCode(n),a=e[0];a0)return function(e,t){var n,r;for(n=new Array(e),r=0;r80*r){i=l=e[0],o=s=e[1];for(var b=r;bl&&(l=d),f>s&&(s=f);h=0!==(h=Math.max(l-i,s-o))?32767/h:0}return a(v,g,r,i,o,h,0),g}function n(e,t,n,r,a){var i,o;if(a===C(e,t,n,r)>0)for(i=t;i=t;i-=r)o=k(i,e[i],e[i+1],o);return o&&v(o,o.next)&&(A(o),o=o.next),o}function r(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!v(r,r.next)&&0!==y(r.prev,r,r.next))r=r.next;else{if(A(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function a(e,t,n,c,u,d,p){if(e){!p&&d&&function(e,t,n,r){var a=e;do{0===a.z&&(a.z=f(a.x,a.y,t,n,r)),a.prevZ=a.prev,a.nextZ=a.next,a=a.next}while(a!==e);a.prevZ.nextZ=null,a.prevZ=null,function(e){var t,n,r,a,i,o,l,s,c=1;do{for(n=e,e=null,i=null,o=0;n;){for(o++,r=n,l=0,t=0;t0||s>0&&r;)0!==l&&(0===s||!r||n.z<=r.z)?(a=n,n=n.nextZ,l--):(a=r,r=r.nextZ,s--),i?i.nextZ=a:e=a,a.prevZ=i,i=a;n=r}i.nextZ=null,c*=2}while(o>1)}(a)}(e,c,u,d);for(var h,m,y=e;e.prev!==e.next;)if(h=e.prev,m=e.next,d?o(e,c,u,d):i(e))t.push(h.i/n|0),t.push(e.i/n|0),t.push(m.i/n|0),A(e),e=m.next,y=m.next;else if((e=m)===y){p?1===p?a(e=l(r(e),t,n),t,n,c,u,d,2):2===p&&s(e,t,n,c,u,d):a(r(e),t,n,c,u,d,1);break}}}function i(e){var t=e.prev,n=e,r=e.next;if(y(t,n,r)>=0)return!1;for(var a=t.x,i=n.x,o=r.x,l=t.y,s=n.y,c=r.y,u=ai?a>o?a:o:i>o?i:o,p=l>s?l>c?l:c:s>c?s:c,m=r.next;m!==t;){if(m.x>=u&&m.x<=f&&m.y>=d&&m.y<=p&&h(a,l,i,s,o,c,m.x,m.y)&&y(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function o(e,t,n,r){var a=e.prev,i=e,o=e.next;if(y(a,i,o)>=0)return!1;for(var l=a.x,s=i.x,c=o.x,u=a.y,d=i.y,p=o.y,m=ls?l>c?l:c:s>c?s:c,b=u>d?u>p?u:p:d>p?d:p,x=f(m,v,t,n,r),T=f(g,b,t,n,r),w=e.prevZ,k=e.nextZ;w&&w.z>=x&&k&&k.z<=T;){if(w.x>=m&&w.x<=g&&w.y>=v&&w.y<=b&&w!==a&&w!==o&&h(l,u,s,d,c,p,w.x,w.y)&&y(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,k.x>=m&&k.x<=g&&k.y>=v&&k.y<=b&&k!==a&&k!==o&&h(l,u,s,d,c,p,k.x,k.y)&&y(k.prev,k,k.next)>=0)return!1;k=k.nextZ}for(;w&&w.z>=x;){if(w.x>=m&&w.x<=g&&w.y>=v&&w.y<=b&&w!==a&&w!==o&&h(l,u,s,d,c,p,w.x,w.y)&&y(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;k&&k.z<=T;){if(k.x>=m&&k.x<=g&&k.y>=v&&k.y<=b&&k!==a&&k!==o&&h(l,u,s,d,c,p,k.x,k.y)&&y(k.prev,k,k.next)>=0)return!1;k=k.nextZ}return!0}function l(e,t,n){var a=e;do{var i=a.prev,o=a.next.next;!v(i,o)&&g(i,a,a.next,o)&&T(i,o)&&T(o,i)&&(t.push(i.i/n|0),t.push(a.i/n|0),t.push(o.i/n|0),A(a),A(a.next),a=e=o),a=a.next}while(a!==e);return r(a)}function s(e,t,n,i,o,l){var s=e;do{for(var c=s.next.next;c!==s.prev;){if(s.i!==c.i&&m(s,c)){var u=w(s,c);return s=r(s,s.next),u=r(u,u.next),a(s,t,n,i,o,l,0),void a(u,t,n,i,o,l,0)}c=c.next}s=s.next}while(s!==e)}function c(e,t){return e.x-t.x}function u(e,t){var n=function(e,t){var n,r=t,a=e.x,i=e.y,o=-1/0;do{if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){var l=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(l<=a&&l>o&&(o=l,n=r.x=r.x&&r.x>=u&&a!==r.x&&h(in.x||r.x===n.x&&d(n,r)))&&(n=r,p=s)),r=r.next}while(r!==c);return n}(e,t);if(!n)return t;var a=w(n,e);return r(a,a.next),r(n,n.next)}function d(e,t){return y(e.prev,e,t.prev)<0&&y(t.next,e,e.next)<0}function f(e,t,n,r,a){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*a|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*a|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function p(e){var t=e,n=e;do{(t.x=(e-o)*(i-l)&&(e-o)*(r-l)>=(n-o)*(t-l)&&(n-o)*(i-l)>=(a-o)*(r-l)}function m(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&g(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(T(e,t)&&T(t,e)&&function(e,t){var n=e,r=!1,a=(e.x+t.x)/2,i=(e.y+t.y)/2;do{n.y>i!=n.next.y>i&&n.next.y!==n.y&&a<(n.next.x-n.x)*(i-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)&&(y(e.prev,e,t.prev)||y(e,t.prev,t))||v(e,t)&&y(e.prev,e,e.next)>0&&y(t.prev,t,t.next)>0)}function y(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function v(e,t){return e.x===t.x&&e.y===t.y}function g(e,t,n,r){var a=x(y(e,t,n)),i=x(y(e,t,r)),o=x(y(n,r,e)),l=x(y(n,r,t));return a!==i&&o!==l||!(0!==a||!b(e,n,t))||!(0!==i||!b(e,r,t))||!(0!==o||!b(n,e,r))||!(0!==l||!b(n,t,r))}function b(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function x(e){return e>0?1:e<0?-1:0}function T(e,t){return y(e.prev,e,e.next)<0?y(e,t,e.next)>=0&&y(e,e.prev,t)>=0:y(e,t,e.prev)<0||y(e,e.next,t)<0}function w(e,t){var n=new S(e.i,e.x,e.y),r=new S(t.i,t.x,t.y),a=e.next,i=t.prev;return e.next=t,t.prev=e,n.next=a,a.prev=n,r.next=n,n.prev=r,i.next=r,r.prev=i,r}function k(e,t,n,r){var a=new S(e,t,n);return r?(a.next=r.next,a.prev=r,r.next.prev=a,r.next=a):(a.prev=a,a.next=a),a}function A(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function S(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function C(e,t,n,r){for(var a=0,i=t,o=n-r;i0&&(r+=e[a-1].length,n.holes.push(r))}return n}},61164:function(e,t,n){var r=n(80079);e.exports=function(){return r(this).length=0,this}},27348:function(e,t,n){e.exports=n(88155)()?Array.from:n(78619)},88155:function(e){e.exports=function(){var e,t,n=Array.from;return"function"==typeof n&&(t=n(e=["raz","dwa"]),Boolean(t&&t!==e&&"dwa"===t[1]))}},78619:function(e,t,n){var r=n(1253).iterator,a=n(42305),i=n(97413),o=n(85394),l=n(72660),s=n(80079),c=n(11137),u=n(26993),d=Array.isArray,f=Function.prototype.call,p={configurable:!0,enumerable:!0,writable:!0,value:null},h=Object.defineProperty;e.exports=function(e){var t,n,m,y,v,g,b,x,T,w,k=arguments[1],A=arguments[2];if(e=Object(s(e)),c(k)&&l(k),this&&this!==Array&&i(this))t=this;else{if(!k){if(a(e))return 1!==(v=e.length)?Array.apply(null,e):((y=new Array(1))[0]=e[0],y);if(d(e)){for(y=new Array(v=e.length),n=0;n=55296&&g<=56319&&(w+=e[++n]),w=k?f.call(k,A,w,m):w,t?(p.value=w,h(y,m,p)):y[m]=w,++m;v=m}if(void 0===v)for(v=o(e.length),t&&(y=new t(v)),n=0;n0?1:-1}},80985:function(e,t,n){var r=n(28332),a=Math.abs,i=Math.floor;e.exports=function(e){return isNaN(e)?0:0!==(e=Number(e))&&isFinite(e)?r(e)*i(a(e)):e}},85394:function(e,t,n){var r=n(80985),a=Math.max;e.exports=function(e){return a(0,r(e))}},90052:function(e,t,n){var r=n(72660),a=n(80079),i=Function.prototype.bind,o=Function.prototype.call,l=Object.keys,s=Object.prototype.propertyIsEnumerable;e.exports=function(e,t){return function(n,c){var u,d=arguments[2],f=arguments[3];return n=Object(a(n)),r(c),u=l(n),f&&u.sort("function"==typeof f?i.call(f,n):void 0),"function"!=typeof e&&(e=u[e]),o.call(e,u,(function(e,r){return s.call(n,e)?o.call(c,d,n[e],e,n,r):t}))}}},96775:function(e,t,n){e.exports=n(80990)()?Object.assign:n(63462)},80990:function(e){e.exports=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},63462:function(e,t,n){var r=n(53226),a=n(80079),i=Math.max;e.exports=function(e,t){var n,o,l,s=i(arguments.length,2);for(e=Object(a(e)),l=function(r){try{e[r]=t[r]}catch(a){n||(n=a)}},o=1;o-1}},26993:function(e){var t=Object.prototype.toString,n=t.call("");e.exports=function(e){return"string"==typeof e||e&&"object"==typeof e&&(e instanceof String||t.call(e)===n)||!1}},99496:function(e){var t=Object.create(null),n=Math.random;e.exports=function(){var e;do{e=n().toString(36).slice(2)}while(t[e]);return e}},48746:function(e,t,n){var r,a=n(63885),i=n(29703),o=n(78572),l=n(1253),s=n(74895),c=Object.defineProperty;r=e.exports=function(e,t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");s.call(this,e),t=t?i.call(t,"key+value")?"key+value":i.call(t,"key")?"key":"value":"value",c(this,"__kind__",o("",t))},a&&a(r,s),delete r.prototype.constructor,r.prototype=Object.create(s.prototype,{_resolve:o((function(e){return"value"===this.__kind__?this.__list__[e]:"key+value"===this.__kind__?[e,this.__list__[e]]:e}))}),c(r.prototype,l.toStringTag,o("c","Array Iterator"))},57152:function(e,t,n){var r=n(42305),a=n(72660),i=n(26993),o=n(19119),l=Array.isArray,s=Function.prototype.call,c=Array.prototype.some;e.exports=function(e,t){var n,u,d,f,p,h,m,y,v=arguments[2];if(l(e)||r(e)?n="array":i(e)?n="string":e=o(e),a(t),d=function(){f=!0},"array"!==n)if("string"!==n)for(u=e.next();!u.done;){if(s.call(t,v,u.value,d),f)return;u=e.next()}else for(h=e.length,p=0;p=55296&&y<=56319&&(m+=e[++p]),s.call(t,v,m,d),!f);++p);else c.call(e,(function(e){return s.call(t,v,e,d),f}))}},19119:function(e,t,n){var r=n(42305),a=n(26993),i=n(48746),o=n(92590),l=n(97244),s=n(1253).iterator;e.exports=function(e){return"function"==typeof l(e)[s]?e[s]():r(e)?new i(e):a(e)?new o(e):new i(e)}},74895:function(e,t,n){var r,a=n(61164),i=n(96775),o=n(72660),l=n(80079),s=n(78572),c=n(29097),u=n(1253),d=Object.defineProperty,f=Object.defineProperties;e.exports=r=function(e,t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");f(this,{__list__:s("w",l(e)),__context__:s("w",t),__nextIndex__:s("w",0)}),t&&(o(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))},delete r.prototype.constructor,f(r.prototype,i({_next:s((function(){var e;if(this.__list__)return this.__redo__&&void 0!==(e=this.__redo__.shift())?e:this.__nextIndex__=this.__nextIndex__||(++this.__nextIndex__,this.__redo__?(this.__redo__.forEach((function(t,n){t>=e&&(this.__redo__[n]=++t)}),this),this.__redo__.push(e)):d(this,"__redo__",s("c",[e])))})),_onDelete:s((function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(t=this.__redo__.indexOf(e))&&this.__redo__.splice(t,1),this.__redo__.forEach((function(t,n){t>e&&(this.__redo__[n]=--t)}),this)))})),_onClear:s((function(){this.__redo__&&a.call(this.__redo__),this.__nextIndex__=0}))}))),d(r.prototype,u.iterator,s((function(){return this})))},25330:function(e,t,n){var r=n(42305),a=n(11137),i=n(26993),o=n(1253).iterator,l=Array.isArray;e.exports=function(e){return!(!a(e)||!l(e)&&!i(e)&&!r(e)&&"function"!=typeof e[o])}},92590:function(e,t,n){var r,a=n(63885),i=n(78572),o=n(1253),l=n(74895),s=Object.defineProperty;r=e.exports=function(e){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");e=String(e),l.call(this,e),s(this,"__length__",i("",e.length))},a&&a(r,l),delete r.prototype.constructor,r.prototype=Object.create(l.prototype,{_next:i((function(){if(this.__list__)return this.__nextIndex__=55296&&t<=56319?n+this.__list__[this.__nextIndex__++]:n}))}),s(r.prototype,o.toStringTag,i("c","String Iterator"))},97244:function(e,t,n){var r=n(25330);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not iterable");return e}},1253:function(e,t,n){e.exports=n(69468)()?n(24190).Symbol:n(87106)},69468:function(e,t,n){var r=n(24190),a={object:!0,symbol:!0};e.exports=function(){var e,t=r.Symbol;if("function"!=typeof t)return!1;e=t("test symbol");try{String(e)}catch(n){return!1}return!!a[typeof t.iterator]&&!!a[typeof t.toPrimitive]&&!!a[typeof t.toStringTag]}},44922:function(e){e.exports=function(e){return!!e&&("symbol"==typeof e||!!e.constructor&&"Symbol"===e.constructor.name&&"Symbol"===e[e.constructor.toStringTag])}},4196:function(e,t,n){var r=n(78572),a=Object.create,i=Object.defineProperty,o=Object.prototype,l=a(null);e.exports=function(e){for(var t,n,a=0;l[e+(a||"")];)++a;return l[e+=a||""]=!0,i(o,t="@@"+e,r.gs(null,(function(e){n||(n=!0,i(this,t,r(e)),n=!1)}))),t}},23266:function(e,t,n){var r=n(78572),a=n(24190).Symbol;e.exports=function(e){return Object.defineProperties(e,{hasInstance:r("",a&&a.hasInstance||e("hasInstance")),isConcatSpreadable:r("",a&&a.isConcatSpreadable||e("isConcatSpreadable")),iterator:r("",a&&a.iterator||e("iterator")),match:r("",a&&a.match||e("match")),replace:r("",a&&a.replace||e("replace")),search:r("",a&&a.search||e("search")),species:r("",a&&a.species||e("species")),split:r("",a&&a.split||e("split")),toPrimitive:r("",a&&a.toPrimitive||e("toPrimitive")),toStringTag:r("",a&&a.toStringTag||e("toStringTag")),unscopables:r("",a&&a.unscopables||e("unscopables"))})}},67447:function(e,t,n){var r=n(78572),a=n(76492),i=Object.create(null);e.exports=function(e){return Object.defineProperties(e,{for:r((function(t){return i[t]?i[t]:i[t]=e(String(t))})),keyFor:r((function(e){var t;for(t in a(e),i)if(i[t]===e)return t}))})}},87106:function(e,t,n){var r,a,i,o=n(78572),l=n(76492),s=n(24190).Symbol,c=n(4196),u=n(23266),d=n(67447),f=Object.create,p=Object.defineProperties,h=Object.defineProperty;if("function"==typeof s)try{String(s()),i=!0}catch(m){}else s=null;a=function(e){if(this instanceof a)throw new TypeError("Symbol is not a constructor");return r(e)},e.exports=r=function e(t){var n;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return i?s(t):(n=f(a.prototype),t=void 0===t?"":String(t),p(n,{__description__:o("",t),__name__:o("",c(t))}))},u(r),d(r),p(a.prototype,{constructor:o(r),toString:o("",(function(){return this.__name__}))}),p(r.prototype,{toString:o((function(){return"Symbol ("+l(this).__description__+")"})),valueOf:o((function(){return l(this)}))}),h(r.prototype,r.toPrimitive,o("",(function(){var e=l(this);return"symbol"==typeof e?e:e.toString()}))),h(r.prototype,r.toStringTag,o("c","Symbol")),h(a.prototype,r.toStringTag,o("c",r.prototype[r.toStringTag])),h(a.prototype,r.toPrimitive,o("c",r.prototype[r.toPrimitive]))},76492:function(e,t,n){var r=n(44922);e.exports=function(e){if(!r(e))throw new TypeError(e+" is not a symbol");return e}},47642:function(e,t,n){e.exports=n(84113)()?WeakMap:n(37499)},84113:function(e){e.exports=function(){var e,t;if("function"!=typeof WeakMap)return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(n){return!1}return"[object WeakMap]"===String(e)&&"function"==typeof e.set&&e.set({},1)===e&&"function"==typeof e.delete&&"function"==typeof e.has&&"one"===e.get(t)}},79323:function(e){e.exports="function"==typeof WeakMap&&"[object WeakMap]"===Object.prototype.toString.call(new WeakMap)},37499:function(e,t,n){var r,a=n(11137),i=n(63885),o=n(35639),l=n(80079),s=n(99496),c=n(78572),u=n(19119),d=n(57152),f=n(1253).toStringTag,p=n(79323),h=Array.isArray,m=Object.defineProperty,y=Object.prototype.hasOwnProperty,v=Object.getPrototypeOf;e.exports=r=function(){var e,t=arguments[0];if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");return e=p&&i&&WeakMap!==r?i(new WeakMap,v(this)):this,a(t)&&(h(t)||(t=u(t))),m(e,"__weakMapData__",c("c","$weakMap$"+s())),t?(d(t,(function(t){l(t),e.set(t[0],t[1])})),e):e},p&&(i&&i(r,WeakMap),r.prototype=Object.create(WeakMap.prototype,{constructor:c(r)})),Object.defineProperties(r.prototype,{delete:c((function(e){return!!y.call(o(e),this.__weakMapData__)&&(delete e[this.__weakMapData__],!0)})),get:c((function(e){if(y.call(o(e),this.__weakMapData__))return e[this.__weakMapData__]})),has:c((function(e){return y.call(o(e),this.__weakMapData__)})),set:c((function(e,t){return m(o(e),this.__weakMapData__,c("c",t)),this})),toString:c((function(){return"[object WeakMap]"}))}),m(r.prototype,f,c("c","WeakMap"))},78908:function(e){var t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function i(){i.init.call(this)}e.exports=i,e.exports.once=function(e,t){return new Promise((function(n,r){function a(n){e.removeListener(t,i),r(n)}function i(){"function"==typeof e.removeListener&&e.removeListener("error",a),n([].slice.call(arguments))}var o,l;m(e,t,i,{once:!0}),"error"!==t&&(l=a,"function"==typeof(o=e).on&&m(o,"error",l,{once:!0}))}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var o=10;function l(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function s(e){return void 0===e._maxListeners?i.defaultMaxListeners:e._maxListeners}function c(e,t,n,r){var a,i,o,c;if(l(n),void 0===(i=e._events)?(i=e._events=Object.create(null),e._eventsCount=0):(void 0!==i.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),i=e._events),o=i[t]),void 0===o)o=i[t]=n,++e._eventsCount;else if("function"==typeof o?o=i[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(a=s(e))>0&&o.length>a&&!o.warned){o.warned=!0;var u=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");u.name="MaxListenersExceededWarning",u.emitter=e,u.type=t,u.count=o.length,c=u,console&&console.warn&&console.warn(c)}return e}function u(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},a=u.bind(r);return a.listener=n,r.wrapFn=a,a}function f(e,t,n){var r=e._events;if(void 0===r)return[];var a=r[t];return void 0===a?[]:"function"==typeof a?n?[a.listener||a]:[a]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(o=t[0]),o instanceof Error)throw o;var l=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw l.context=o,l}var s=i[e];if(void 0===s)return!1;if("function"==typeof s)r(s,this,t);else{var c=s.length,u=h(s,c);for(n=0;n=0;i--)if(n[i]===t||n[i].listener===t){o=n[i].listener,a=i;break}if(a<0)return this;0===a?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},i.prototype.listeners=function(e){return f(this,e,!0)},i.prototype.rawListeners=function(e){return f(this,e,!1)},i.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):p.call(e,t)},i.prototype.listenerCount=p,i.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},41174:function(e){var t=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return t()}try{return __global__||t()}finally{delete Object.prototype.__global__}}()},24190:function(e,t,n){e.exports=n(66965)()?globalThis:n(41174)},66965:function(e){e.exports=function(){return"object"==typeof globalThis&&!!globalThis&&globalThis.Array===Array}},74668:function(e,t,n){var r=n(64345);e.exports=function(e){var t=typeof e;if("string"===t){var n=e;if(0==(e=+e)&&r(n))return!1}else if("number"!==t)return!1;return e-e<1}},84078:function(e,t,n){var r=n(68100);e.exports=function(e,t,n){if(!e)throw new TypeError("must specify data as first parameter");if(n=0|+(n||0),Array.isArray(e)&&e[0]&&"number"==typeof e[0][0]){var a,i,o,l,s=e[0].length,c=e.length*s;t&&"string"!=typeof t||(t=new(r(t||"float32"))(c+n));var u=t.length-n;if(c!==u)throw new Error("source length "+c+" ("+s+"x"+e.length+") does not match destination length "+u);for(a=0,o=n;at[0]-o[0]/2&&(f=o[0]/2,p+=o[1]);return n}},48992:function(e){function t(e,i){i||(i={}),("string"==typeof e||Array.isArray(e))&&(i.family=e);var o=Array.isArray(i.family)?i.family.join(", "):i.family;if(!o)throw Error("`family` must be defined");var l=i.size||i.fontSize||i.em||48,s=i.weight||i.fontWeight||"",c=(e=[i.style||i.fontStyle||"",s,l].join(" ")+"px "+o,i.origin||"top");if(t.cache[o]&&l<=t.cache[o].em)return n(t.cache[o],c);var u=i.canvas||t.canvas,d=u.getContext("2d"),f={upper:void 0!==i.upper?i.upper:"H",lower:void 0!==i.lower?i.lower:"x",descent:void 0!==i.descent?i.descent:"p",ascent:void 0!==i.ascent?i.ascent:"h",tittle:void 0!==i.tittle?i.tittle:"i",overshoot:void 0!==i.overshoot?i.overshoot:"O"},p=Math.ceil(1.5*l);u.height=p,u.width=.5*p,d.font=e;var h="H",m={top:0};d.clearRect(0,0,p,p),d.textBaseline="top",d.fillStyle="black",d.fillText(h,0,0);var y=r(d.getImageData(0,0,p,p));d.clearRect(0,0,p,p),d.textBaseline="bottom",d.fillText(h,0,p);var v=r(d.getImageData(0,0,p,p));m.lineHeight=m.bottom=p-v+y,d.clearRect(0,0,p,p),d.textBaseline="alphabetic",d.fillText(h,0,p);var g=p-r(d.getImageData(0,0,p,p))-1+y;m.baseline=m.alphabetic=g,d.clearRect(0,0,p,p),d.textBaseline="middle",d.fillText(h,0,.5*p);var b=r(d.getImageData(0,0,p,p));m.median=m.middle=p-b-1+y-.5*p,d.clearRect(0,0,p,p),d.textBaseline="hanging",d.fillText(h,0,.5*p);var x=r(d.getImageData(0,0,p,p));m.hanging=p-x-1+y-.5*p,d.clearRect(0,0,p,p),d.textBaseline="ideographic",d.fillText(h,0,p);var T=r(d.getImageData(0,0,p,p));if(m.ideographic=p-T-1+y,f.upper&&(d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.upper,0,0),m.upper=r(d.getImageData(0,0,p,p)),m.capHeight=m.baseline-m.upper),f.lower&&(d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.lower,0,0),m.lower=r(d.getImageData(0,0,p,p)),m.xHeight=m.baseline-m.lower),f.tittle&&(d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.tittle,0,0),m.tittle=r(d.getImageData(0,0,p,p))),f.ascent&&(d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.ascent,0,0),m.ascent=r(d.getImageData(0,0,p,p))),f.descent&&(d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.descent,0,0),m.descent=a(d.getImageData(0,0,p,p))),f.overshoot){d.clearRect(0,0,p,p),d.textBaseline="top",d.fillText(f.overshoot,0,0);var w=a(d.getImageData(0,0,p,p));m.overshoot=w-g}for(var k in m)m[k]/=l;return m.em=l,t.cache[o]=m,n(m,c)}function n(e,t){var n={};for(var r in"string"==typeof t&&(t=e[t]),e)"em"!==r&&(n[r]=e[r]-t);return n}function r(e){for(var t=e.height,n=e.data,r=3;r0;r-=4)if(0!==n[r])return Math.floor(.25*(r-3)/t)}e.exports=t,t.canvas=document.createElement("canvas"),t.cache={}},92143:function(e){e.exports=function(e,t){var n=t[0],r=t[1],a=t[2],i=t[3],o=t[4],l=t[5],s=t[6],c=t[7],u=t[8],d=t[9],f=t[10],p=t[11],h=t[12],m=t[13],y=t[14],v=t[15];return e[0]=l*(f*v-p*y)-d*(s*v-c*y)+m*(s*p-c*f),e[1]=-(r*(f*v-p*y)-d*(a*v-i*y)+m*(a*p-i*f)),e[2]=r*(s*v-c*y)-l*(a*v-i*y)+m*(a*c-i*s),e[3]=-(r*(s*p-c*f)-l*(a*p-i*f)+d*(a*c-i*s)),e[4]=-(o*(f*v-p*y)-u*(s*v-c*y)+h*(s*p-c*f)),e[5]=n*(f*v-p*y)-u*(a*v-i*y)+h*(a*p-i*f),e[6]=-(n*(s*v-c*y)-o*(a*v-i*y)+h*(a*c-i*s)),e[7]=n*(s*p-c*f)-o*(a*p-i*f)+u*(a*c-i*s),e[8]=o*(d*v-p*m)-u*(l*v-c*m)+h*(l*p-c*d),e[9]=-(n*(d*v-p*m)-u*(r*v-i*m)+h*(r*p-i*d)),e[10]=n*(l*v-c*m)-o*(r*v-i*m)+h*(r*c-i*l),e[11]=-(n*(l*p-c*d)-o*(r*p-i*d)+u*(r*c-i*l)),e[12]=-(o*(d*y-f*m)-u*(l*y-s*m)+h*(l*f-s*d)),e[13]=n*(d*y-f*m)-u*(r*y-a*m)+h*(r*f-a*d),e[14]=-(n*(l*y-s*m)-o*(r*y-a*m)+h*(r*s-a*l)),e[15]=n*(l*f-s*d)-o*(r*f-a*d)+u*(r*s-a*l),e}},45417:function(e){e.exports=function(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}},69583:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},96290:function(e){e.exports=function(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},32323:function(e){e.exports=function(e){var t=e[0],n=e[1],r=e[2],a=e[3],i=e[4],o=e[5],l=e[6],s=e[7],c=e[8],u=e[9],d=e[10],f=e[11],p=e[12],h=e[13],m=e[14],y=e[15];return(t*o-n*i)*(d*y-f*m)-(t*l-r*i)*(u*y-f*h)+(t*s-a*i)*(u*m-d*h)+(n*l-r*o)*(c*y-f*p)-(n*s-a*o)*(c*m-d*p)+(r*s-a*l)*(c*h-u*p)}},62845:function(e){e.exports=function(e,t){var n=t[0],r=t[1],a=t[2],i=t[3],o=n+n,l=r+r,s=a+a,c=n*o,u=r*o,d=r*l,f=a*o,p=a*l,h=a*s,m=i*o,y=i*l,v=i*s;return e[0]=1-d-h,e[1]=u+v,e[2]=f-y,e[3]=0,e[4]=u-v,e[5]=1-c-h,e[6]=p+m,e[7]=0,e[8]=f+y,e[9]=p-m,e[10]=1-c-d,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},12752:function(e){e.exports=function(e,t,n){var r,a,i,o=n[0],l=n[1],s=n[2],c=Math.sqrt(o*o+l*l+s*s);return Math.abs(c)<1e-6?null:(o*=c=1/c,l*=c,s*=c,r=Math.sin(t),i=1-(a=Math.cos(t)),e[0]=o*o*i+a,e[1]=l*o*i+s*r,e[2]=s*o*i-l*r,e[3]=0,e[4]=o*l*i-s*r,e[5]=l*l*i+a,e[6]=s*l*i+o*r,e[7]=0,e[8]=o*s*i+l*r,e[9]=l*s*i-o*r,e[10]=s*s*i+a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}},80725:function(e){e.exports=function(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],l=r+r,s=a+a,c=i+i,u=r*l,d=r*s,f=r*c,p=a*s,h=a*c,m=i*c,y=o*l,v=o*s,g=o*c;return e[0]=1-(p+m),e[1]=d+g,e[2]=f-v,e[3]=0,e[4]=d-g,e[5]=1-(u+m),e[6]=h+y,e[7]=0,e[8]=f+v,e[9]=h-y,e[10]=1-(u+p),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}},85273:function(e){e.exports=function(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},51079:function(e){e.exports=function(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}},41398:function(e){e.exports=function(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},32969:function(e){e.exports=function(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},69560:function(e){e.exports=function(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},8234:function(e){e.exports=function(e,t,n,r,a,i,o){var l=1/(n-t),s=1/(a-r),c=1/(i-o);return e[0]=2*i*l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*i*s,e[6]=0,e[7]=0,e[8]=(n+t)*l,e[9]=(a+r)*s,e[10]=(o+i)*c,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*i*2*c,e[15]=0,e}},12436:function(e){e.exports=function(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},89700:function(e,t,n){e.exports={create:n(96290),clone:n(45417),copy:n(69583),identity:n(12436),transpose:n(3971),invert:n(43998),adjoint:n(92143),determinant:n(32323),multiply:n(55546),translate:n(82474),scale:n(33774),rotate:n(28353),rotateX:n(11957),rotateY:n(93718),rotateZ:n(13363),fromRotation:n(12752),fromRotationTranslation:n(80725),fromScaling:n(85273),fromTranslation:n(51079),fromXRotation:n(41398),fromYRotation:n(32969),fromZRotation:n(69560),fromQuat:n(62845),frustum:n(8234),perspective:n(9658),perspectiveFromFieldOfView:n(20060),ortho:n(85610),lookAt:n(90828),str:n(53555)}},43998:function(e){e.exports=function(e,t){var n=t[0],r=t[1],a=t[2],i=t[3],o=t[4],l=t[5],s=t[6],c=t[7],u=t[8],d=t[9],f=t[10],p=t[11],h=t[12],m=t[13],y=t[14],v=t[15],g=n*l-r*o,b=n*s-a*o,x=n*c-i*o,T=r*s-a*l,w=r*c-i*l,k=a*c-i*s,A=u*m-d*h,S=u*y-f*h,C=u*v-p*h,I=d*y-f*m,L=d*v-p*m,P=f*v-p*y,E=g*P-b*L+x*I+T*C-w*S+k*A;return E?(E=1/E,e[0]=(l*P-s*L+c*I)*E,e[1]=(a*L-r*P-i*I)*E,e[2]=(m*k-y*w+v*T)*E,e[3]=(f*w-d*k-p*T)*E,e[4]=(s*C-o*P-c*S)*E,e[5]=(n*P-a*C+i*S)*E,e[6]=(y*x-h*k-v*b)*E,e[7]=(u*k-f*x+p*b)*E,e[8]=(o*L-l*C+c*A)*E,e[9]=(r*C-n*L-i*A)*E,e[10]=(h*w-m*x+v*g)*E,e[11]=(d*x-u*w-p*g)*E,e[12]=(l*S-o*I-s*A)*E,e[13]=(n*I-r*S+a*A)*E,e[14]=(m*b-h*T-y*g)*E,e[15]=(u*T-d*b+f*g)*E,e):null}},90828:function(e,t,n){var r=n(12436);e.exports=function(e,t,n,a){var i,o,l,s,c,u,d,f,p,h,m=t[0],y=t[1],v=t[2],g=a[0],b=a[1],x=a[2],T=n[0],w=n[1],k=n[2];return Math.abs(m-T)<1e-6&&Math.abs(y-w)<1e-6&&Math.abs(v-k)<1e-6?r(e):(d=m-T,f=y-w,p=v-k,i=b*(p*=h=1/Math.sqrt(d*d+f*f+p*p))-x*(f*=h),o=x*(d*=h)-g*p,l=g*f-b*d,(h=Math.sqrt(i*i+o*o+l*l))?(i*=h=1/h,o*=h,l*=h):(i=0,o=0,l=0),s=f*l-p*o,c=p*i-d*l,u=d*o-f*i,(h=Math.sqrt(s*s+c*c+u*u))?(s*=h=1/h,c*=h,u*=h):(s=0,c=0,u=0),e[0]=i,e[1]=s,e[2]=d,e[3]=0,e[4]=o,e[5]=c,e[6]=f,e[7]=0,e[8]=l,e[9]=u,e[10]=p,e[11]=0,e[12]=-(i*m+o*y+l*v),e[13]=-(s*m+c*y+u*v),e[14]=-(d*m+f*y+p*v),e[15]=1,e)}},55546:function(e){e.exports=function(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],l=t[4],s=t[5],c=t[6],u=t[7],d=t[8],f=t[9],p=t[10],h=t[11],m=t[12],y=t[13],v=t[14],g=t[15],b=n[0],x=n[1],T=n[2],w=n[3];return e[0]=b*r+x*l+T*d+w*m,e[1]=b*a+x*s+T*f+w*y,e[2]=b*i+x*c+T*p+w*v,e[3]=b*o+x*u+T*h+w*g,b=n[4],x=n[5],T=n[6],w=n[7],e[4]=b*r+x*l+T*d+w*m,e[5]=b*a+x*s+T*f+w*y,e[6]=b*i+x*c+T*p+w*v,e[7]=b*o+x*u+T*h+w*g,b=n[8],x=n[9],T=n[10],w=n[11],e[8]=b*r+x*l+T*d+w*m,e[9]=b*a+x*s+T*f+w*y,e[10]=b*i+x*c+T*p+w*v,e[11]=b*o+x*u+T*h+w*g,b=n[12],x=n[13],T=n[14],w=n[15],e[12]=b*r+x*l+T*d+w*m,e[13]=b*a+x*s+T*f+w*y,e[14]=b*i+x*c+T*p+w*v,e[15]=b*o+x*u+T*h+w*g,e}},85610:function(e){e.exports=function(e,t,n,r,a,i,o){var l=1/(t-n),s=1/(r-a),c=1/(i-o);return e[0]=-2*l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*s,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*c,e[11]=0,e[12]=(t+n)*l,e[13]=(a+r)*s,e[14]=(o+i)*c,e[15]=1,e}},9658:function(e){e.exports=function(e,t,n,r,a){var i=1/Math.tan(t/2),o=1/(r-a);return e[0]=i/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=i,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(a+r)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*a*r*o,e[15]=0,e}},20060:function(e){e.exports=function(e,t,n,r){var a=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),l=Math.tan(t.rightDegrees*Math.PI/180),s=2/(o+l),c=2/(a+i);return e[0]=s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=c,e[6]=0,e[7]=0,e[8]=-(o-l)*s*.5,e[9]=(a-i)*c*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}},28353:function(e){e.exports=function(e,t,n,r){var a,i,o,l,s,c,u,d,f,p,h,m,y,v,g,b,x,T,w,k,A,S,C,I,L=r[0],P=r[1],E=r[2],M=Math.sqrt(L*L+P*P+E*E);return Math.abs(M)<1e-6?null:(L*=M=1/M,P*=M,E*=M,a=Math.sin(n),o=1-(i=Math.cos(n)),l=t[0],s=t[1],c=t[2],u=t[3],d=t[4],f=t[5],p=t[6],h=t[7],m=t[8],y=t[9],v=t[10],g=t[11],b=L*L*o+i,x=P*L*o+E*a,T=E*L*o-P*a,w=L*P*o-E*a,k=P*P*o+i,A=E*P*o+L*a,S=L*E*o+P*a,C=P*E*o-L*a,I=E*E*o+i,e[0]=l*b+d*x+m*T,e[1]=s*b+f*x+y*T,e[2]=c*b+p*x+v*T,e[3]=u*b+h*x+g*T,e[4]=l*w+d*k+m*A,e[5]=s*w+f*k+y*A,e[6]=c*w+p*k+v*A,e[7]=u*w+h*k+g*A,e[8]=l*S+d*C+m*I,e[9]=s*S+f*C+y*I,e[10]=c*S+p*C+v*I,e[11]=u*S+h*C+g*I,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}},11957:function(e){e.exports=function(e,t,n){var r=Math.sin(n),a=Math.cos(n),i=t[4],o=t[5],l=t[6],s=t[7],c=t[8],u=t[9],d=t[10],f=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=i*a+c*r,e[5]=o*a+u*r,e[6]=l*a+d*r,e[7]=s*a+f*r,e[8]=c*a-i*r,e[9]=u*a-o*r,e[10]=d*a-l*r,e[11]=f*a-s*r,e}},93718:function(e){e.exports=function(e,t,n){var r=Math.sin(n),a=Math.cos(n),i=t[0],o=t[1],l=t[2],s=t[3],c=t[8],u=t[9],d=t[10],f=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*a-c*r,e[1]=o*a-u*r,e[2]=l*a-d*r,e[3]=s*a-f*r,e[8]=i*r+c*a,e[9]=o*r+u*a,e[10]=l*r+d*a,e[11]=s*r+f*a,e}},13363:function(e){e.exports=function(e,t,n){var r=Math.sin(n),a=Math.cos(n),i=t[0],o=t[1],l=t[2],s=t[3],c=t[4],u=t[5],d=t[6],f=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=i*a+c*r,e[1]=o*a+u*r,e[2]=l*a+d*r,e[3]=s*a+f*r,e[4]=c*a-i*r,e[5]=u*a-o*r,e[6]=d*a-l*r,e[7]=f*a-s*r,e}},33774:function(e){e.exports=function(e,t,n){var r=n[0],a=n[1],i=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*i,e[9]=t[9]*i,e[10]=t[10]*i,e[11]=t[11]*i,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}},53555:function(e){e.exports=function(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}},82474:function(e){e.exports=function(e,t,n){var r,a,i,o,l,s,c,u,d,f,p,h,m=n[0],y=n[1],v=n[2];return t===e?(e[12]=t[0]*m+t[4]*y+t[8]*v+t[12],e[13]=t[1]*m+t[5]*y+t[9]*v+t[13],e[14]=t[2]*m+t[6]*y+t[10]*v+t[14],e[15]=t[3]*m+t[7]*y+t[11]*v+t[15]):(r=t[0],a=t[1],i=t[2],o=t[3],l=t[4],s=t[5],c=t[6],u=t[7],d=t[8],f=t[9],p=t[10],h=t[11],e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=l,e[5]=s,e[6]=c,e[7]=u,e[8]=d,e[9]=f,e[10]=p,e[11]=h,e[12]=r*m+l*y+d*v+t[12],e[13]=a*m+s*y+f*v+t[13],e[14]=i*m+c*y+p*v+t[14],e[15]=o*m+u*y+h*v+t[15]),e}},3971:function(e){e.exports=function(e,t){if(e===t){var n=t[1],r=t[2],a=t[3],i=t[6],o=t[7],l=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=i,e[11]=t[14],e[12]=a,e[13]=o,e[14]=l}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}},54537:function(e,t,n){var r=n(93211),a=n(75680),i=n(45271),o=n(31309),l=n(47642),s=n(24373),c=n(56979),u=n(83190),d=n(88324),f=n(38657),p=n(14080),h=n(839),m=n(26038),y=n(89043),v=n(48992),g=n(84078),b=n(41586).nextPow2,x=new l,T=!1;if(document.body){var w=document.body.appendChild(document.createElement("div"));w.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(w).fontStretch&&(T=!0),document.body.removeChild(w)}var k=function(e){var t;"function"==typeof(t=e)&&t._gl&&t.prop&&t.texture&&t.buffer?(e={regl:e},this.gl=e.regl._gl):this.gl=o(e),this.shader=x.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=e.regl||i({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),x.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(f(e)?e:{})};k.prototype.createShader=function(){var e=this.regl,t=e({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:e.prop("count"),offset:e.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:e.this("sizeBuffer")},width:{offset:0,stride:8,buffer:e.this("sizeBuffer")},char:e.this("charBuffer"),position:e.this("position")},uniforms:{atlasSize:function(e,t){return[t.atlas.width,t.atlas.height]},atlasDim:function(e,t){return[t.atlas.cols,t.atlas.rows]},atlas:function(e,t){return t.atlas.texture},charStep:function(e,t){return t.atlas.step},em:function(e,t){return t.atlas.em},color:e.prop("color"),opacity:e.prop("opacity"),viewport:e.this("viewportArray"),scale:e.this("scale"),align:e.prop("align"),baseline:e.prop("baseline"),translate:e.this("translate"),positionOffset:e.prop("positionOffset")},primitive:"points",viewport:e.this("viewport"),vert:"\n\t\t\tprecision highp float;\n\t\t\tattribute float width, charOffset, char;\n\t\t\tattribute vec2 position;\n\t\t\tuniform float fontSize, charStep, em, align, baseline;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform vec4 color;\n\t\t\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvoid main () {\n\t\t\t\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\n\t\t\t\t\t+ vec2(positionOffset.x, -positionOffset.y)))\n\t\t\t\t\t/ (viewport.zw * scale.xy);\n\n\t\t\t\tvec2 position = (position + translate) * scale;\n\t\t\t\tposition += offset * scale;\n\n\t\t\t\tcharCoord = position * viewport.zw + viewport.xy;\n\n\t\t\t\tgl_Position = vec4(position * 2. - 1., 0, 1);\n\n\t\t\t\tgl_PointSize = charStep;\n\n\t\t\t\tcharId.x = mod(char, atlasDim.x);\n\t\t\t\tcharId.y = floor(char / atlasDim.x);\n\n\t\t\t\tcharWidth = width * em;\n\n\t\t\t\tfontColor = color / 255.;\n\t\t\t}",frag:"\n\t\t\tprecision highp float;\n\t\t\tuniform float fontSize, charStep, opacity;\n\t\t\tuniform vec2 atlasSize;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform sampler2D atlas;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\n\t\t\tfloat lightness(vec4 color) {\n\t\t\t\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\n\t\t\t}\n\n\t\t\tvoid main () {\n\t\t\t\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\n\t\t\t\tfloat halfCharStep = floor(charStep * .5 + .5);\n\n\t\t\t\t// invert y and shift by 1px (FF expecially needs that)\n\t\t\t\tuv.y = charStep - uv.y;\n\n\t\t\t\t// ignore points outside of character bounding box\n\t\t\t\tfloat halfCharWidth = ceil(charWidth * .5);\n\t\t\t\tif (floor(uv.x) > halfCharStep + halfCharWidth ||\n\t\t\t\t\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\n\n\t\t\t\tuv += charId * charStep;\n\t\t\t\tuv = uv / atlasSize;\n\n\t\t\t\tvec4 color = fontColor;\n\t\t\t\tvec4 mask = texture2D(atlas, uv);\n\n\t\t\t\tfloat maskY = lightness(mask);\n\t\t\t\t// float colorY = lightness(color);\n\t\t\t\tcolor.a *= maskY;\n\t\t\t\tcolor.a *= opacity;\n\n\t\t\t\t// color.a += .1;\n\n\t\t\t\t// antialiasing, see yiq color space y-channel formula\n\t\t\t\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\n\n\t\t\t\tgl_FragColor = color;\n\t\t\t}"});return{regl:e,draw:t,atlas:{}}},k.prototype.update=function(e){var t=this;if("string"==typeof e)e={text:e};else if(!e)return;null!=(e=a(e,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0)).opacity&&(Array.isArray(e.opacity)?this.opacity=e.opacity.map((function(e){return parseFloat(e)})):this.opacity=parseFloat(e.opacity)),null!=e.viewport&&(this.viewport=d(e.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=e.kerning&&(this.kerning=e.kerning),null!=e.offset&&("number"==typeof e.offset&&(e.offset=[e.offset,0]),this.positionOffset=g(e.offset)),e.direction&&(this.direction=e.direction),e.range&&(this.range=e.range,this.scale=[1/(e.range[2]-e.range[0]),1/(e.range[3]-e.range[1])],this.translate=[-e.range[0],-e.range[1]]),e.scale&&(this.scale=e.scale),e.translate&&(this.translate=e.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),this.font.length||e.font||(e.font=k.baseFontSize+"px sans-serif");var n,i=!1,o=!1;if(e.font&&(Array.isArray(e.font)?e.font:[e.font]).forEach((function(e,n){if("string"==typeof e)try{e=r.parse(e)}catch(g){e=r.parse(k.baseFontSize+"px "+e)}else{var a=e.style,l=e.weight,s=e.stretch,c=e.variant;e=r.parse(r.stringify(e)),a&&(e.style=a),l&&(e.weight=l),s&&(e.stretch=s),c&&(e.variant=c)}var u=r.stringify({size:k.baseFontSize,family:e.family,stretch:T?e.stretch:void 0,variant:e.variant,weight:e.weight,style:e.style}),d=p(e.size),f=Math.round(d[0]*h(d[1]));if(f!==t.fontSize[n]&&(o=!0,t.fontSize[n]=f),!(t.font[n]&&u==t.font[n].baseString||(i=!0,t.font[n]=k.fonts[u],t.font[n]))){var m=e.family.join(", "),y=[e.style];e.style!=e.variant&&y.push(e.variant),e.variant!=e.weight&&y.push(e.weight),T&&e.weight!=e.stretch&&y.push(e.stretch),t.font[n]={baseString:u,family:m,weight:e.weight,stretch:e.stretch,style:e.style,variant:e.variant,width:{},kerning:{},metrics:v(m,{origin:"top",fontSize:k.baseFontSize,fontStyle:y.join(" ")})},k.fonts[u]=t.font[n]}})),(i||o)&&this.font.forEach((function(n,a){var i=r.stringify({size:t.fontSize[a],family:n.family,stretch:T?n.stretch:void 0,variant:n.variant,weight:n.weight,style:n.style});if(t.fontAtlas[a]=t.shader.atlas[i],!t.fontAtlas[a]){var o=n.metrics;t.shader.atlas[i]=t.fontAtlas[a]={fontString:i,step:2*Math.ceil(t.fontSize[a]*o.bottom*.5),em:t.fontSize[a],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:t.regl.texture()}}null==e.text&&(e.text=t.text)})),"string"==typeof e.text&&e.position&&e.position.length>2){for(var l=Array(.5*e.position.length),f=0;f2){for(var w=!e.position[0].length,A=u.mallocFloat(2*this.count),S=0,C=0;S1?t.align[n]:t.align[0]:t.align;if("number"==typeof r)return r;switch(r){case"right":case"end":return-e;case"center":case"centre":case"middle":return.5*-e}return 0}))),null==this.baseline&&null==e.baseline&&(e.baseline=0),null!=e.baseline&&(this.baseline=e.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(e,n){var r=(t.font[n]||t.font[0]).metrics,a=0;return-1*((a+=.5*r.bottom)+("number"==typeof e?e-r.baseline:-r[e]))}))),null!=e.color)if(e.color||(e.color="transparent"),"string"!=typeof e.color&&isNaN(e.color)){var Y;if("number"==typeof e.color[0]&&e.color.length>this.counts.length){var _=e.color.length;Y=u.mallocUint8(_);for(var B=(e.color.subarray||e.color.slice).bind(e.color),j=0;j<_;j+=4)Y.set(s(B(j,j+4),"uint8"),j)}else{var K=e.color.length;Y=u.mallocUint8(4*K);for(var J=0;J4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var U=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array(U);for(var Q=0;Q1?this.counts[Q]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Q]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*Q,4*Q+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Q]:this.opacity,baseline:null!=this.baselineOffset[Q]?this.baselineOffset[Q]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[Q]?this.alignOffset[Q]:this.alignOffset[0]:0,atlas:this.fontAtlas[Q]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*Q,2*Q+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},k.prototype.destroy=function(){},k.prototype.kerning=!0,k.prototype.position={constant:new Float32Array(2)},k.prototype.translate=null,k.prototype.scale=null,k.prototype.font=null,k.prototype.text="",k.prototype.positionOffset=[0,0],k.prototype.opacity=1,k.prototype.color=new Uint8Array([0,0,0,255]),k.prototype.alignOffset=[0,0],k.maxAtlasSize=1024,k.atlasCanvas=document.createElement("canvas"),k.atlasContext=k.atlasCanvas.getContext("2d",{alpha:!1}),k.baseFontSize=64,k.fonts={},e.exports=k},31309:function(e,t,n){var r=n(75680);function a(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*n.g.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*n.g.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function i(e){return"function"==typeof e.getContext&&"width"in e&&"height"in e}function o(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}e.exports=function(e){var t,l;if(e?"string"==typeof e&&(e={container:e}):e={},(e=i(e)||"string"==typeof(t=e).nodeName&&"function"==typeof t.appendChild&&"function"==typeof t.getBoundingClientRect?{container:e}:(l=e,"function"==typeof l.drawArrays||"function"==typeof l.drawElements?{gl:e}:r(e,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0))).pixelRatio||(e.pixelRatio=n.g.pixelRatio||1),e.gl)return e.gl;if(e.canvas&&(e.container=e.canvas.parentNode),e.container){if("string"==typeof e.container){var s=document.querySelector(e.container);if(!s)throw Error("Element "+e.container+" is not found");e.container=s}i(e.container)?(e.canvas=e.container,e.container=e.canvas.parentNode):e.canvas||(e.canvas=o(),e.container.appendChild(e.canvas),a(e))}else if(!e.canvas){if("undefined"==typeof document)throw Error("Not DOM environment. Use headless-gl.");e.container=document.body||document.documentElement,e.canvas=o(),e.container.appendChild(e.canvas),a(e)}return e.gl||["webgl","experimental-webgl","webgl-experimental"].some((function(t){try{e.gl=e.canvas.getContext(t,e.attrs)}catch(l){}return e.gl})),e.gl}},74386:function(e){e.exports=function(e){"string"==typeof e&&(e=[e]);for(var t=[].slice.call(arguments,1),n=[],r=0;r>1,u=-7,d=n?a-1:0,f=n?-1:1,p=e[t+d];for(d+=f,i=p&(1<<-u)-1,p>>=-u,u+=l;u>0;i=256*i+e[t+d],d+=f,u-=8);for(o=i&(1<<-u)-1,i>>=-u,u+=r;u>0;o=256*o+e[t+d],d+=f,u-=8);if(0===i)i=1-c;else{if(i===s)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,r),i-=c}return(p?-1:1)*o*Math.pow(2,i-r)},t.write=function(e,t,n,r,a,i){var o,l,s,c=8*i-a-1,u=(1<>1,f=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,o=u):(o=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-o))<1&&(o--,s*=2),(t+=o+d>=1?f/s:f*Math.pow(2,1-d))*s>=2&&(o++,s/=2),o+d>=u?(l=0,o=u):o+d>=1?(l=(t*s-1)*Math.pow(2,a),o+=d):(l=t*Math.pow(2,d-1)*Math.pow(2,a),o=0));a>=8;e[n+p]=255&l,p+=h,l/=256,a-=8);for(o=o<0;e[n+p]=255&o,p+=h,o/=256,c-=8);e[n+p-h]|=128*m}},62446:function(e){e.exports=!0},4421:function(e){e.exports="undefined"!=typeof navigator&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))},31476:function(e){e.exports=function(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}},38657:function(e){var t=Object.prototype.toString;e.exports=function(e){var n;return"[object Object]"===t.call(e)&&(null===(n=Object.getPrototypeOf(e))||n===Object.getPrototypeOf({}))}},64345:function(e){e.exports=function(e){for(var t,n=e.length,r=0;r13)&&32!==t&&133!==t&&160!==t&&5760!==t&&6158!==t&&(t<8192||t>8205)&&8232!==t&&8233!==t&&8239!==t&&8287!==t&&8288!==t&&12288!==t&&65279!==t)return!1;return!0}},32145:function(e){e.exports=function(e){return"string"==typeof e&&(e=e.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(e)&&/[\dz]$/i.test(e)&&e.length>4))}},79869:function(e){e.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}},4682:function(e){var t={left:0,top:0};e.exports=function(e,n,r){n=n||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var a,i=e.clientX||0,o=e.clientY||0,l=(a=n)===window||a===document||a===document.body?t:a.getBoundingClientRect();return r[0]=i-l.left,r[1]=o-l.top,r}},24683:function(e,t,n){var r,a,i,o;a="Promise",o=function(){var e,t,n,r=Object.prototype.toString,a="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,t,n,r){return Object.defineProperty(e,t,{value:n,writable:!0,configurable:!1!==r})}}catch(y){e=function(e,t,n){return e[t]=n,e}}function i(e,r){n.add(e,r),t||(t=a(n.drain))}function o(e){var t,n=typeof e;return null==e||"object"!=n&&"function"!=n||(t=e.then),"function"==typeof t&&t}function l(){for(var e=0;e0&&i(l,n))}catch(r){u.call(new f(n),r)}}}function u(e){var t=this;t.triggered||(t.triggered=!0,t.def&&(t=t.def),t.msg=e,t.state=2,t.chain.length>0&&i(l,t))}function d(e,t,n,r){for(var a=0;a1&&(a*=v=Math.sqrt(v),l*=v);var g=a*a,b=l*l,x=(c==u?-1:1)*Math.sqrt(Math.abs((g*b-g*y*y-b*m*m)/(g*y*y+b*m*m)));x==1/0&&(x=1);var T=x*a*y/l+(e+d)/2,w=x*-l*m/a+(r+f)/2,k=Math.asin(((r-w)/l).toFixed(9)),A=Math.asin(((f-w)/l).toFixed(9));(k=eA&&(k-=2*t),!u&&A>k&&(A-=2*t)}if(Math.abs(A-k)>n){var S=A,C=d,I=f;A=k+n*(u&&A>k?1:-1);var L=i(d=T+a*Math.cos(A),f=w+l*Math.sin(A),a,l,s,0,u,C,I,[A,S,T,w])}var P=Math.tan((A-k)/4),E=4/3*a*P,M=4/3*l*P,Z=[2*e-(e+E*Math.sin(k)),2*r-(r-M*Math.cos(k)),d+E*Math.sin(A),f-M*Math.cos(A),d,f];if(p)return Z;L&&(Z=Z.concat(L));for(var O=0;O7&&(n.push(v.splice(0,7)),v.unshift("C"));break;case"S":var b=p,x=h;"C"!=t&&"S"!=t||(b+=b-o,x+=x-s),v=["C",b,x,v[1],v[2],v[3],v[4]];break;case"T":"Q"==t||"T"==t?(d=2*p-d,f=2*h-f):(d=p,f=h),v=a(p,h,d,f,v[1],v[2]);break;case"Q":d=v[1],f=v[2],v=a(p,h,v[1],v[2],v[3],v[4]);break;case"L":v=r(p,h,v[1],v[2]);break;case"H":v=r(p,h,v[1],h);break;case"V":v=r(p,h,p,v[1]);break;case"Z":v=r(p,h,c,u)}t=g,p=v[v.length-2],h=v[v.length-1],v.length>4?(o=v[v.length-4],s=v[v.length-3]):(o=p,s=h),n.push(v)}return n}},89043:function(e){var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var i,o,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s1e4)throw Error("References have circular dependency. Please, check them.");n[r]=e})),r=r.reverse(),n=n.map((function(t){return r.forEach((function(n){t=t.replace(new RegExp("(\\"+a+n+"\\"+a+")","g"),e[0]+"$1"+e[1])})),t}))}));var o=new RegExp("\\"+a+"([0-9]+)\\"+a);return i?n:function e(t,n,r){for(var a,i=[],l=0;a=o.exec(t);){if(l++>1e4)throw Error("Circular references in parenthesis");i.push(t.slice(0,a.index)),i.push(e(n[a[1]],n)),t=t.slice(a.index+a[0].length)}return i.push(t),i}(n[0],n)}function n(e,t){if(t&&t.flat){var n,r=t&&t.escape||"___",a=e[0];if(!a)return"";for(var i=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;a!=n;){if(o++>1e4)throw Error("Circular references in "+e);n=a,a=a.replace(i,l)}return a}return e.reduce((function e(t,n){return Array.isArray(n)&&(n=n.reduce(e,"")),t+n}),"");function l(t,n){if(null==e[n])throw Error("Reference "+n+"is undefined");return e[n]}}function r(e,r){return Array.isArray(e)?n(e,r):t(e,r)}r.parse=t,r.stringify=n,e.exports=r},88324:function(e,t,n){var r=n(75680);e.exports=function(e){var t;return arguments.length>1&&(e=arguments),"string"==typeof e?e=e.split(/\s/).map(parseFloat):"number"==typeof e&&(e=[e]),e.length&&"number"==typeof e[0]?t=1===e.length?{width:e[0],height:e[0],x:0,y:0}:2===e.length?{width:e[0],height:e[1],x:0,y:0}:{x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(t={x:(e=r(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"})).left||0,y:e.top||0},null==e.width?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,null==e.height?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}},28092:function(e){e.exports=function(e){var a=[];return e.replace(n,(function(e,n,i){var o,l=n.toLowerCase();for(o=void 0,i=(o=i.match(r))?o.map(Number):[],"m"==l&&i.length>2&&(a.push([n].concat(i.splice(0,2))),l="l",n="m"==n?"l":"L");;){if(i.length==t[l])return i.unshift(n),a.push(i);if(i.lengthi!=p>i&&a<(f-u)*(i-d)/(p-d)+u&&(o=!o)}return o}},10129:function(e,t,n){var r,a=n(29970),i=n(48707),o=n(65975),l=n(87147),s=n(17156),c=n(42978),u=!1,d=i();function f(e,t,n){var a=r.segments(e),i=r.segments(t),o=n(r.combine(a,i));return r.polygon(o)}r={buildLog:function(e){return!0===e?u=a():!1===e&&(u=!1),!1!==u&&u.list},epsilon:function(e){return d.epsilon(e)},segments:function(e){var t=o(!0,d,u);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){return{combined:o(!1,d,u).calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:s.union(e.combined,u),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:s.intersect(e.combined,u),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:s.difference(e.combined,u),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:s.differenceRev(e.combined,u),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:s.xor(e.combined,u),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:l(e.segments,d,u),inverted:e.inverted}},polygonFromGeoJSON:function(e){return c.toPolygon(r,e)},polygonToGeoJSON:function(e){return c.fromPolygon(r,d,e)},union:function(e,t){return f(e,t,r.selectUnion)},intersect:function(e,t){return f(e,t,r.selectIntersect)},difference:function(e,t){return f(e,t,r.selectDifference)},differenceRev:function(e,t){return f(e,t,r.selectDifferenceRev)},xor:function(e,t){return f(e,t,r.selectXor)}},"object"==typeof window&&(window.PolyBool=r),e.exports=r},29970:function(e){e.exports=function(){var e,t=0,n=!1;function r(t,n){return e.list.push({type:t,data:n?JSON.parse(JSON.stringify(n)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(e,t){return r("check",{seg1:e,seg2:t})},segmentChop:function(e,t){return r("div_seg",{seg:e,pt:t}),r("chop",{seg:e,pt:t})},statusRemove:function(e){return r("pop_seg",{seg:e})},segmentUpdate:function(e){return r("seg_update",{seg:e})},segmentNew:function(e,t){return r("new_seg",{seg:e,primary:t})},segmentRemove:function(e){return r("rem_seg",{seg:e})},tempStatus:function(e,t,n){return r("temp_status",{seg:e,above:t,below:n})},rewind:function(e){return r("rewind",{seg:e})},status:function(e,t,n){return r("status",{seg:e,above:t,below:n})},vert:function(t){return t===n?e:(n=t,r("vert",{x:t}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),r("log",{txt:e})},reset:function(){return r("reset")},selected:function(e){return r("selected",{segs:e})},chainStart:function(e){return r("chain_start",{seg:e})},chainRemoveHead:function(e,t){return r("chain_rem_head",{index:e,pt:t})},chainRemoveTail:function(e,t){return r("chain_rem_tail",{index:e,pt:t})},chainNew:function(e,t){return r("chain_new",{pt1:e,pt2:t})},chainMatch:function(e){return r("chain_match",{index:e})},chainClose:function(e){return r("chain_close",{index:e})},chainAddHead:function(e,t){return r("chain_add_head",{index:e,pt:t})},chainAddTail:function(e,t){return r("chain_add_tail",{index:e,pt:t})},chainConnect:function(e,t){return r("chain_con",{index1:e,index2:t})},chainReverse:function(e){return r("chain_rev",{index:e})},chainJoin:function(e,t){return r("chain_join",{index1:e,index2:t})},done:function(){return r("done")}}}},48707:function(e){e.exports=function(e){"number"!=typeof e&&(e=1e-10);var t={epsilon:function(t){return"number"==typeof t&&(e=t),e},pointAboveOrOnLine:function(t,n,r){var a=n[0],i=n[1],o=r[0],l=r[1],s=t[0];return(o-a)*(t[1]-i)-(l-i)*(s-a)>=-e},pointBetween:function(t,n,r){var a=t[1]-n[1],i=r[0]-n[0],o=t[0]-n[0],l=r[1]-n[1],s=o*i+a*l;return!(s-e)},pointsSameX:function(t,n){return Math.abs(t[0]-n[0])e!=o-a>e&&(i-c)*(a-u)/(o-u)+c-r>e&&(l=!l),i=c,o=u}return l}};return t}},42978:function(e){var t={toPolygon:function(e,t){function n(t){if(t.length<=0)return e.segments({inverted:!1,regions:[]});function n(t){var n=t.slice(0,t.length-1);return e.segments({inverted:!1,regions:[n]})}for(var r=n(t[0]),a=1;a0}))}function u(e,r){var a=e.seg,i=r.seg,o=a.start,l=a.end,c=i.start,u=i.end;n&&n.checkIntersection(a,i);var d=t.linesIntersect(o,l,c,u);if(!1===d){if(!t.pointsCollinear(o,l,c))return!1;if(t.pointsSame(o,u)||t.pointsSame(l,c))return!1;var f=t.pointsSame(o,c),p=t.pointsSame(l,u);if(f&&p)return r;var h=!f&&t.pointBetween(o,c,u),m=!p&&t.pointBetween(l,c,u);if(f)return m?s(r,l):s(e,u),r;h&&(p||(m?s(r,l):s(e,u)),s(r,o))}else 0===d.alongA&&(-1===d.alongB?s(e,c):0===d.alongB?s(e,d.pt):1===d.alongB&&s(e,u)),0===d.alongB&&(-1===d.alongA?s(r,o):0===d.alongA?s(r,d.pt):1===d.alongA&&s(r,l));return!1}for(var d=[];!i.isEmpty();){var f=i.getHead();if(n&&n.vert(f.pt[0]),f.isStart){let t=function(){if(h){var e=u(f,h);if(e)return e}return!!m&&u(f,m)};n&&n.segmentNew(f.seg,f.primary);var p=c(f),h=p.before?p.before.ev:null,m=p.after?p.after.ev:null;n&&n.tempStatus(f.seg,!!h&&h.seg,!!m&&m.seg);var y,v,g=t();if(g&&(e?(v=null===f.seg.myFill.below||f.seg.myFill.above!==f.seg.myFill.below)&&(g.seg.myFill.above=!g.seg.myFill.above):g.seg.otherFill=f.seg.myFill,n&&n.segmentUpdate(g.seg),f.other.remove(),f.remove()),i.getHead()!==f){n&&n.rewind(f.seg);continue}e?(v=null===f.seg.myFill.below||f.seg.myFill.above!==f.seg.myFill.below,f.seg.myFill.below=m?m.seg.myFill.above:a,f.seg.myFill.above=v?!f.seg.myFill.below:f.seg.myFill.below):null===f.seg.otherFill&&(y=m?f.primary===m.primary?m.seg.otherFill.above:m.seg.myFill.above:f.primary?o:a,f.seg.otherFill={above:y,below:y}),n&&n.status(f.seg,!!h&&h.seg,!!m&&m.seg),f.other.status=p.insert(r.node({ev:f}))}else{var b=f.status;if(null===b)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(l.exists(b.prev)&&l.exists(b.next)&&u(b.prev.ev,b.next.ev),n&&n.statusRemove(b.ev.seg),b.remove(),!f.primary){var x=f.seg.myFill;f.seg.myFill=f.seg.otherFill,f.seg.otherFill=x}d.push(f.seg)}i.getHead().remove()}return n&&n.done(),d}return e?{addRegion:function(e){for(var r,a,i,o=e[e.length-1],s=0;s1&&(e.scaleRatio=[e.scale[0]*e.viewport.width,e.scale[1]*e.viewport.height],n(e),e.after&&e.after(e))}function k(e){if(e){null!=e.length?"number"==typeof e[0]&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);var t=0,n=0;if(x.groups=b=e.map((function(e,c){var u=b[c];return e?("function"==typeof e?e={after:e}:"number"==typeof e[0]&&(e={positions:e}),e=o(e,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),u||(b[c]=u={id:c,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},e=l({},g,e)),i(u,e,[{lineWidth:function(e){return.5*+e},capSize:function(e){return.5*+e},opacity:parseFloat,errors:function(e){return e=s(e),n+=e.length,e},positions:function(e,n){return e=s(e,"float64"),n.count=Math.floor(e.length/2),n.bounds=r(e,2),n.offset=t,t+=n.count,e}},{color:function(e,t){var n=t.count;if(e||(e="transparent"),!Array.isArray(e)||"number"==typeof e[0]){var r=e;e=Array(n);for(var i=0;i 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n",frag:"\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n",attributes:{lineEnd:{buffer:n,divisor:0,stride:8,offset:0},lineTop:{buffer:n,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){t=a}return{fill:e({primitive:"triangle",elements:function(e,t){return t.triangles},offset:0,vert:"\nprecision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}\n",frag:"\nprecision highp float;\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}\n",uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:function(e,t){return[t.viewport.x,t.viewport.y,e.viewportWidth,e.viewportHeight]}},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:a,miter:t}},y.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},y.prototype.render=function(){for(var e,t=[],n=arguments.length;n--;)t[n]=arguments[n];t.length&&(e=this).update.apply(e,t),this.draw()},y.prototype.draw=function(){for(var e=this,t=[],n=arguments.length;n--;)t[n]=arguments[n];return(t.length?t:this.passes).forEach((function(t,n){var r;if(t&&Array.isArray(t))return(r=e).draw.apply(r,t);"number"==typeof t&&(t=e.passes[t]),t&&t.count>1&&t.opacity&&(e.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&e.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>y.precisionThreshold||t.scale[1]*t.viewport.height>y.precisionThreshold||"rect"===t.join||!t.join&&(t.thickness<=2||t.count>=y.maxPoints)?e.shaders.rect(t):e.shaders.miter(t)))})),this},y.prototype.update=function(e){var t=this;if(e){null!=e.length?"number"==typeof e[0]&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);var n=this.regl,u=this.gl;if(e.forEach((function(e,p){var v=t.passes[p];if(void 0!==e)if(null!==e){if("number"==typeof e[0]&&(e={positions:e}),e=o(e,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),v||(t.passes[p]=v={id:p,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:n.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:n.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:n.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:n.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},e=i({},y.defaults,e)),null!=e.thickness&&(v.thickness=parseFloat(e.thickness)),null!=e.opacity&&(v.opacity=parseFloat(e.opacity)),null!=e.miterLimit&&(v.miterLimit=parseFloat(e.miterLimit)),null!=e.overlay&&(v.overlay=!!e.overlay,p=N}));(Z=Z.slice(0,X)).push(N)}for(var H=function(e){var t=A.slice(2*R,2*Z[e]).concat(N?A.slice(2*N):[]),n=(v.hole||[]).map((function(t){return t-N+(Z[e]-R)})),r=s(t,n);r=r.map((function(t){return t+R+(t+Re.length)&&(t=e.length);for(var n=0,r=new Array(t);n 1.0 + delta) {\n\t\tdiscard;\n\t}\n\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\n\n\tfloat borderRadius = fragBorderRadius;\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\n\tcolor.a *= alpha * opacity;\n\tgl_FragColor = color;\n}\n"]),s.vert=d(["precision highp float;\n#define GLSLIFY 1\n\nattribute float x, y, xFract, yFract;\nattribute float size, borderSize;\nattribute vec4 colorId, borderColorId;\nattribute float isActive;\n\n// `invariant` effectively turns off optimizations for the position.\n// We need this because -fast-math on M1 Macs is re-ordering\n// floating point operations in a way that causes floating point\n// precision limits to put points in the wrong locations.\ninvariant gl_Position;\n\nuniform bool constPointSize;\nuniform float pixelRatio;\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\nuniform sampler2D paletteTexture;\n\nconst float maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\n\nbool isDirect = (paletteSize.x < 1.);\n\nvec4 getColor(vec4 id) {\n return isDirect ? id / 255. : texture2D(paletteTexture,\n vec2(\n (id.x + .5) / paletteSize.x,\n (id.y + .5) / paletteSize.y\n )\n );\n}\n\nvoid main() {\n // ignore inactive points\n if (isActive == 0.) return;\n\n vec2 position = vec2(x, y);\n vec2 positionFract = vec2(xFract, yFract);\n\n vec4 color = getColor(colorId);\n vec4 borderColor = getColor(borderColorId);\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = (size + borderSize) * pointSizeScale;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\n\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\n fragColor = color;\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\n fragWidth = 1. / gl_PointSize;\n}\n"]),m&&(s.frag=s.frag.replace("smoothstep","smoothStep"),l.frag=l.frag.replace("smoothstep","smoothStep")),this.drawCircle=e(s)}b.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var e=this,t=arguments.length,n=new Array(t),r=0;rr)?t.tree=c(e,{bounds:d}):r&&r.length&&(t.tree=r),t.tree){var f={primitive:"points",usage:"static",data:t.tree,type:"uint32"};t.elements?t.elements(f):t.elements=o.elements(f)}var p=y.float32(e);return a({data:p,usage:"dynamic"}),i({data:y.fract32(e,p),usage:"dynamic"}),s({data:new Uint8Array(u),type:"uint8",usage:"stream"}),e}},{marker:function(t,n,r){var a=n.activation;if(a.forEach((function(e){return e&&e.destroy&&e.destroy()})),a.length=0,t&&"number"!=typeof t[0]){for(var i=[],l=0,s=Math.min(t.length,n.count);l=0)return i;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)t=e;else{t=new Uint8Array(e.length);for(var o=0,l=e.length;o4*r&&(this.tooManyColors=!0),this.updatePalette(n),1===a.length?a[0]:a},b.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,n=this.paletteTexture,r=Math.ceil(.25*e.length/t);if(r>1)for(var a=.25*(e=e.slice()).length%t;a>>=t))<<3,(t|=n=(15<(e>>>=n))<<2)|(n=(3<(e>>>=n))<<1)|e>>>n>>1}function s(){function e(e){e:{for(var t=16;268435456>=t;t*=16)if(e<=t){e=t;break e}e=0}return 0<(t=n[l(e)>>2]).length?t.pop():new ArrayBuffer(e)}function t(e){n[l(e.byteLength)>>2].push(e)}var n=o(8,(function(){return[]}));return{alloc:e,free:t,allocType:function(t,n){var r=null;switch(t){case 5120:r=new Int8Array(e(n),0,n);break;case 5121:r=new Uint8Array(e(n),0,n);break;case 5122:r=new Int16Array(e(2*n),0,n);break;case 5123:r=new Uint16Array(e(2*n),0,n);break;case 5124:r=new Int32Array(e(4*n),0,n);break;case 5125:r=new Uint32Array(e(4*n),0,n);break;case 5126:r=new Float32Array(e(4*n),0,n);break;default:return null}return r.length!==n?r.subarray(0,n):r},freeType:function(e){t(e.buffer)}}}function c(e){return!!e&&"object"==typeof e&&Array.isArray(e.shape)&&Array.isArray(e.stride)&&"number"==typeof e.offset&&e.shape.length===e.stride.length&&(Array.isArray(e.data)||q(e.data))}function u(e,t,n,r,a,i){for(var o=0;o(a=l)&&(a=r.buffer.byteLength,5123===d?a>>=1:5125===d&&(a>>=2)),r.vertCount=a,a=o,0>o&&(a=4,1===(o=r.buffer.dimension)&&(a=0),2===o&&(a=1),3===o&&(a=4)),r.primType=a}function o(e){r.elementsCount--,delete l[e.id],e.buffer.destroy(),e.buffer=null}var l={},s=0,u={uint8:5121,uint16:5123};t.oes_element_index_uint&&(u.uint32=5125),a.prototype.bind=function(){this.buffer.bind()};var d=[];return{create:function(e,t){function l(e){if(e)if("number"==typeof e)s(e),d.primType=4,d.vertCount=0|e,d.type=5121;else{var t=null,n=35044,r=-1,a=-1,o=0,f=0;Array.isArray(e)||q(e)||c(e)?t=e:("data"in e&&(t=e.data),"usage"in e&&(n=re[e.usage]),"primitive"in e&&(r=le[e.primitive]),"count"in e&&(a=0|e.count),"type"in e&&(f=u[e.type]),"length"in e?o=0|e.length:(o=a,5123===f||5122===f?o*=2:5125!==f&&5124!==f||(o*=4))),i(d,t,n,r,a,o,f)}else s(),d.primType=4,d.vertCount=0,d.type=5121;return l}var s=n.create(null,34963,!0),d=new a(s._buffer);return r.elementsCount++,l(e),l._reglType="elements",l._elements=d,l.subdata=function(e,t){return s.subdata(e,t),l},l.destroy=function(){o(d)},l},createStream:function(e){var t=d.pop();return t||(t=new a(n.create(null,34963,!0,!1)._buffer)),i(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){d.push(e)},getElements:function(e){return"function"==typeof e&&e._elements instanceof a?e._elements:null},clear:function(){$(l).forEach(o)}}}function v(e){for(var t=U.allocType(5123,e.length),n=0;n>>31<<15,a=(i<<1>>>24)-127,i=i>>13&1023;t[n]=-24>a?r:-14>a?r+(i+1024>>-14-a):15>=a,n.height>>=a,p(n,r[a]),e.mipmask|=1<t;++t)e.images[t]=null;return e}function E(e){for(var t=e.images,n=0;nt){for(var n=0;n=--this.refCount&&H(this)}}),o.profile&&(i.getTotalTextureSize=function(){var e=0;return Object.keys(ce).forEach((function(t){e+=ce[t].stats.size})),e}),{create2D:function(t,n){function r(e,t){var n=a.texInfo;M.call(n);var i=P();return"number"==typeof e?C(i,0|e,"number"==typeof t?0|t:0|e):e?(Z(n,e),I(i,e)):C(i,1,1),n.genMipmaps&&(i.mipmask=(i.width<<1)-1),a.mipmask=i.mipmask,s(a,i),a.internalformat=i.internalformat,r.width=i.width,r.height=i.height,N(a),L(i,3553),O(n,3553),X(),E(i),o.profile&&(a.stats.size=S(a.internalformat,a.type,i.width,i.height,n.genMipmaps,!1)),r.format=J[a.internalformat],r.type=Q[a.type],r.mag=ne[n.magFilter],r.min=re[n.minFilter],r.wrapS=ae[n.wrapS],r.wrapT=ae[n.wrapT],r}var a=new R(3553);return ce[a.id]=a,i.textureCount++,r(t,n),r.subimage=function(e,t,n,i){t|=0,n|=0,i|=0;var o=m();return s(o,a),o.width=0,o.height=0,p(o,e),o.width=o.width||(a.width>>i)-t,o.height=o.height||(a.height>>i)-n,N(a),h(o,3553,t,n,i),X(),y(o),r},r.resize=function(t,n){var i=0|t,l=0|n||i;if(i===a.width&&l===a.height)return r;r.width=a.width=i,r.height=a.height=l,N(a);for(var s=0;a.mipmask>>s;++s){var c=i>>s,u=l>>s;if(!c||!u)break;e.texImage2D(3553,s,a.format,c,u,0,a.format,a.type,null)}return X(),o.profile&&(a.stats.size=S(a.internalformat,a.type,i,l,!1,!1)),r},r._reglType="texture2d",r._texture=a,o.profile&&(r.stats=a.stats),r.destroy=function(){a.decRef()},r},createCube:function(t,n,r,a,l,c){function d(e,t,n,r,a,i){var l,c=f.texInfo;for(M.call(c),l=0;6>l;++l)v[l]=P();if("number"!=typeof e&&e){if("object"==typeof e)if(t)I(v[0],e),I(v[1],t),I(v[2],n),I(v[3],r),I(v[4],a),I(v[5],i);else if(Z(c,e),u(f,e),"faces"in e)for(e=e.faces,l=0;6>l;++l)s(v[l],f),I(v[l],e[l]);else for(l=0;6>l;++l)I(v[l],e)}else for(e=0|e||1,l=0;6>l;++l)C(v[l],e,e);for(s(f,v[0]),f.mipmask=c.genMipmaps?(v[0].width<<1)-1:v[0].mipmask,f.internalformat=v[0].internalformat,d.width=v[0].width,d.height=v[0].height,N(f),l=0;6>l;++l)L(v[l],34069+l);for(O(c,34067),X(),o.profile&&(f.stats.size=S(f.internalformat,f.type,d.width,d.height,c.genMipmaps,!0)),d.format=J[f.internalformat],d.type=Q[f.type],d.mag=ne[c.magFilter],d.min=re[c.minFilter],d.wrapS=ae[c.wrapS],d.wrapT=ae[c.wrapT],l=0;6>l;++l)E(v[l]);return d}var f=new R(34067);ce[f.id]=f,i.cubeCount++;var v=Array(6);return d(t,n,r,a,l,c),d.subimage=function(e,t,n,r,a){n|=0,r|=0,a|=0;var i=m();return s(i,f),i.width=0,i.height=0,p(i,t),i.width=i.width||(f.width>>a)-n,i.height=i.height||(f.height>>a)-r,N(f),h(i,34069+e,n,r,a),X(),y(i),d},d.resize=function(t){if((t|=0)!==f.width){d.width=f.width=t,d.height=f.height=t,N(f);for(var n=0;6>n;++n)for(var r=0;f.mipmask>>r;++r)e.texImage2D(34069+n,r,f.format,t>>r,t>>r,0,f.format,f.type,null);return X(),o.profile&&(f.stats.size=S(f.internalformat,f.type,d.width,d.height,!1,!0)),d}},d._reglType="textureCube",d._texture=f,o.profile&&(d.stats=f.stats),d.destroy=function(){f.decRef()},d},clear:function(){for(var t=0;tn;++n)if(t.mipmask&1<>n,t.height>>n,0,t.internalformat,t.type,null);else for(var r=0;6>r;++r)e.texImage2D(34069+r,n,t.internalformat,t.width>>n,t.height>>n,0,t.internalformat,t.type,null);O(t.texInfo,t.target)}))},refresh:function(){for(var t=0;ta;++a){for(c=0;ce;++e)n[e].resize(r);return t.width=t.height=r,t},_reglType:"framebufferCube",destroy:function(){n.forEach((function(e){e.destroy()}))}})},clear:function(){$(A).forEach(y)},restore:function(){b.cur=null,b.next=null,b.dirty=!0,$(A).forEach((function(t){t.framebuffer=e.createFramebuffer(),v(t)}))}})}function L(){this.w=this.z=this.y=this.x=this.state=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.divisor=this.stride=this.offset=0}function P(e,t,n,r,a,i,o){function l(){this.id=++d,this.attributes=[],this.elements=null,this.ownsElements=!1,this.offset=this.count=0,this.instances=-1,this.primitive=4;var e=t.oes_vertex_array_object;this.vao=e?e.createVertexArrayOES():null,f[this.id]=this,this.buffers=[]}var s=n.maxAttributes,u=Array(s);for(n=0;n=f.byteLength?s.subdata(f):(s.destroy(),n.buffers[l]=null)),n.buffers[l]||(s=n.buffers[l]=a.create(u,34962,!1,!0)),d.buffer=a.getBuffer(s),d.size=0|d.buffer.dimension,d.normalized=!1,d.type=d.buffer.dtype,d.offset=0,d.stride=0,d.divisor=0,d.state=1,e[l]=1):a.getBuffer(u)?(d.buffer=a.getBuffer(u),d.size=0|d.buffer.dimension,d.normalized=!1,d.type=d.buffer.dtype,d.offset=0,d.stride=0,d.divisor=0,d.state=1):a.getBuffer(u.buffer)?(d.buffer=a.getBuffer(u.buffer),d.size=0|(+u.size||d.buffer.dimension),d.normalized=!!u.normalized||!1,d.type="type"in u?ne[u.type]:d.buffer.dtype,d.offset=0|(u.offset||0),d.stride=0|(u.stride||0),d.divisor=0|(u.divisor||0),d.state=1):"x"in u&&(d.x=+u.x||0,d.y=+u.y||0,d.z=+u.z||0,d.w=+u.w||0,d.state=2)}for(s=0;se&&(e=t.stats.uniformsCount)})),e},n.getMaxAttributesCount=function(){var e=0;return f.forEach((function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)})),e}),{clear:function(){var t=e.deleteShader.bind(e);$(c).forEach(t),c={},$(u).forEach(t),u={},f.forEach((function(t){e.deleteProgram(t.program)})),f.length=0,d={},n.shaderCount=0},program:function(t,r,a,i){var o=d[r];o||(o=d[r]={});var p=o[t];if(p&&(p.refCount++,!i))return p;var h=new l(r,t);return n.shaderCount++,s(h,a,i),p||(o[t]=h),f.push(h),_(h,{destroy:function(){if(h.refCount--,0>=h.refCount){e.deleteProgram(h.program);var t=f.indexOf(h);f.splice(t,1),n.shaderCount--}0>=o[h.vertId].refCount&&(e.deleteShader(u[h.vertId]),delete u[h.vertId],delete d[h.fragId][h.vertId]),Object.keys(d[h.fragId]).length||(e.deleteShader(c[h.fragId]),delete c[h.fragId],delete d[h.fragId])}})},restore:function(){c={},u={};for(var e=0;e>>t|e<<32-t}function O(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function R(e){return Array.prototype.slice.call(e)}function N(e){return R(e).join("")}function X(e){function t(){var e=[],t=[];return _((function(){e.push.apply(e,R(arguments))}),{def:function(){var n="v"+a++;return t.push(n),0>>4&15)+"0123456789abcdef".charAt(15&t);return n}(function(e){for(var t=Array(e.length>>2),n=0;n>5]|=(255&e.charCodeAt(n/8))<<24-n%32;var r,a,i,o,l,s,c,u,d,f,p,h=8*e.length;for(e=[1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225],n=Array(64),t[h>>5]|=128<<24-h%32,t[15+(h+64>>9<<4)]=h,u=0;ud;d++){var m;16>d?n[d]=t[d+u]:(f=d,p=O(p=Z(p=n[d-2],17)^Z(p,19)^p>>>10,n[d-7]),m=Z(m=n[d-15],7)^Z(m,18)^m>>>3,n[f]=O(O(p,m),n[d-16])),f=O(O(O(O(c,f=Z(f=o,6)^Z(f,11)^Z(f,25)),o&l^~o&s),Ce[d]),n[d]),p=O(c=Z(c=h,2)^Z(c,13)^Z(c,22),h&r^h&a^r&a),c=s,s=l,l=o,o=O(i,f),i=a,a=r,r=h,h=O(f,p)}e[0]=O(h,e[0]),e[1]=O(r,e[1]),e[2]=O(a,e[2]),e[3]=O(i,e[3]),e[4]=O(o,e[4]),e[5]=O(l,e[5]),e[6]=O(s,e[6]),e[7]=O(c,e[7])}for(t="",n=0;n<32*e.length;n+=8)t+=String.fromCharCode(e[n>>5]>>>24-n%32&255);return t}(function(e){for(var t,n,r="",a=-1;++a=t&&56320<=n&&57343>=n&&(t=65536+((1023&t)<<10)+(1023&n),a++),127>=t?r+=String.fromCharCode(t):2047>=t?r+=String.fromCharCode(192|t>>>6&31,128|63&t):65535>=t?r+=String.fromCharCode(224|t>>>12&15,128|t>>>6&63,128|63&t):2097151>=t&&(r+=String.fromCharCode(240|t>>>18&7,128|t>>>12&63,128|t>>>6&63,128|63&t));return r}(n))),r[t])?r[t].apply(null,o):(n=Function.apply(null,i.concat(n)),r&&(r[t]=n),n.apply(null,o))}}}function H(e){return Array.isArray(e)||q(e)||c(e)}function D(e){return e.sort((function(e,t){return"viewport"===e?-1:"viewport"===t?1:e"+t+"?"+a+".constant["+t+"]:0;"})).join(""),"}}else{","if(",l,"(",a,".buffer)){",u,"=",i,".createStream(",34962,",",a,".buffer);","}else{",u,"=",i,".getBuffer(",a,".buffer);","}",d,'="type" in ',a,"?",o.glTypes,"[",a,".type]:",u,".dtype;",s.normalized,"=!!",a,".normalized;"),r("size"),r("offset"),r("stride"),r("divisor"),n("}}"),n.exit("if(",s.isStream,"){",i,".destroyStream(",u,");","}"),s}))})),o}function C(e,t,r,a,i){function l(e){var t=h[e];t&&(y[e]=t)}var s,c,d,f,p=function(e,t){if("string"==typeof(n=e.static).frag&&"string"==typeof n.vert){if(0>1)",l],");")}function t(){n(s,".drawArraysInstancedANGLE(",[y,v,g,l],");")}m&&"null"!==m?x?e():(n("if(",m,"){"),e(),n("}else{"),t(),n("}")):t()}function o(){function e(){n(f+".drawElements("+[y,g,b,v+"<<(("+b+"-5121)>>1)"]+");")}function t(){n(f+".drawArrays("+[y,v,g]+");")}m&&"null"!==m?x?e():(n("if(",m,"){"),e(),n("}else{"),t(),n("}")):t()}var l,s,c,u,d=e.shared,f=d.gl,p=d.draw,h=r.draw,m=(c=h.elements,u=t,c?((c.contextDep&&r.contextDynamic||c.propDep)&&(u=n),c=c.append(e,u),h.elementsActive&&u("if("+c+")"+f+".bindBuffer(34963,"+c+".buffer.buffer);")):(c=u.def(),u(c,"=",p,".","elements",";","if(",c,"){",f,".bindBuffer(",34963,",",c,".buffer.buffer);}","else if(",d.vao,".currentVAO){",c,"=",e.shared.elements+".getElements("+d.vao,".currentVAO.elements);",te?"":"if("+c+")"+f+".bindBuffer(34963,"+c+".buffer.buffer);","}")),c),y=a("primitive"),v=a("offset"),g=function(){var a=h.count,i=t;return a?((a.contextDep&&r.contextDynamic||a.propDep)&&(i=n),a=a.append(e,i)):a=i.def(p,".","count"),a}();if("number"==typeof g){if(0===g)return}else n("if(",g,"){"),n.exit("}");$&&(l=a("instances"),s=e.instancing);var b=m+".type",x=h.elements&&G(h.elements)&&!h.vaoActive;$&&("number"!=typeof l||0<=l)?"string"==typeof l?(n("if(",l,">0){"),i(),n("}else if(",l,"<0){"),o(),n("}")):i():o()}function F(e,t,n,r,a){return a=(t=T()).proc("body",a),$&&(t.instancing=a.def(t.shared.extensions,".angle_instanced_arrays")),e(t,a,n,r),t.compile().body}function Y(e,t,n,r){M(e,t),n.useVAO?n.drawVAO?t(e.shared.vao,".setVAO(",n.drawVAO.append(e,t),");"):t(e.shared.vao,".setVAO(",e.shared.vao,".targetVAO);"):(t(e.shared.vao,".setVAO(null);"),O(e,t,n,r.attributes,(function(){return!0}))),R(e,t,n,r.uniforms,(function(){return!0}),!1),N(e,t,t,n)}function B(e,t,n,r){function a(){return!0}e.batchId="a1",M(e,t),O(e,t,n,r.attributes,a),R(e,t,n,r.uniforms,a,!1),N(e,t,t,n)}function K(e,t,n,r){function a(e){return e.contextDep&&o||e.propDep}function i(e){return!a(e)}M(e,t);var o=n.contextDep,l=t.def(),s=t.def();e.shared.props=s,e.batchId=l;var c=e.scope(),u=e.scope();t(c.entry,"for(",l,"=0;",l,"<","a1",";++",l,"){",s,"=","a0","[",l,"];",u,"}",c.exit),n.needsContext&&I(e,u,n.context),n.needsFramebuffer&&L(e,u,n.framebuffer),E(e,u,n.state,a),n.profile&&a(n.profile)&&Z(e,u,n,!1,!0),r?(n.useVAO?n.drawVAO?a(n.drawVAO)?u(e.shared.vao,".setVAO(",n.drawVAO.append(e,u),");"):c(e.shared.vao,".setVAO(",n.drawVAO.append(e,c),");"):c(e.shared.vao,".setVAO(",e.shared.vao,".targetVAO);"):(c(e.shared.vao,".setVAO(null);"),O(e,c,n,r.attributes,i),O(e,u,n,r.attributes,a)),R(e,c,n,r.uniforms,i,!1),R(e,u,n,r.uniforms,a,!0),N(e,c,u,n)):(t=e.global.def("{}"),r=n.shader.progVar.append(e,u),s=u.def(r,".id"),c=u.def(t,"[",s,"]"),u(e.shared.gl,".useProgram(",r,".program);","if(!",c,"){",c,"=",t,"[",s,"]=",e.link((function(t){return F(B,e,n,t,2)})),"(",r,");}",c,".call(this,a0[",l,"],",l,");"))}function J(e,n){function r(t){var r=n.shader[t];r&&(r=r.append(e,a),isNaN(r)?a.set(i.shader,"."+t,r):a.set(i.shader,"."+t,e.link(r,{stable:!0})))}var a=e.proc("scope",3);e.batchId="a2";var i=e.shared,o=i.current;if(I(e,a,n.context),n.framebuffer&&n.framebuffer.append(e,a),D(Object.keys(n.state)).forEach((function(t){var r=n.state[t],o=r.append(e,a);g(o)?o.forEach((function(n,r){isNaN(n)?a.set(e.next[t],"["+r+"]",n):a.set(e.next[t],"["+r+"]",e.link(n,{stable:!0}))})):G(r)?a.set(i.next,"."+t,e.link(o,{stable:!0})):a.set(i.next,"."+t,o)})),Z(e,a,n,!0,!0),["elements","offset","count","instances","primitive"].forEach((function(t){var r=n.draw[t];r&&(r=r.append(e,a),isNaN(r)?a.set(i.draw,"."+t,r):a.set(i.draw,"."+t,e.link(r),{stable:!0}))})),Object.keys(n.uniforms).forEach((function(r){var o=n.uniforms[r].append(e,a);Array.isArray(o)&&(o="["+o.map((function(t){return isNaN(t)?t:e.link(t,{stable:!0})}))+"]"),a.set(i.uniforms,"["+e.link(t.id(r),{stable:!0})+"]",o)})),Object.keys(n.attributes).forEach((function(t){var r=n.attributes[t].append(e,a),i=e.scopeAttrib(t);Object.keys(new Q).forEach((function(e){a.set(i,"."+e,r[e])}))})),n.scopeVAO){var l=n.scopeVAO.append(e,a);isNaN(l)?a.set(i.vao,".targetVAO",l):a.set(i.vao,".targetVAO",e.link(l,{stable:!0}))}r("vert"),r("frag"),0=--this.refCount&&o(this)},a.profile&&(r.getTotalRenderbufferSize=function(){var e=0;return Object.keys(u).forEach((function(t){e+=u[t].stats.size})),e}),{create:function(t,n){function o(t,n){var r=0,i=0,u=32854;if("object"==typeof t&&t?("shape"in t?(r=0|(i=t.shape)[0],i=0|i[1]):("radius"in t&&(r=i=0|t.radius),"width"in t&&(r=0|t.width),"height"in t&&(i=0|t.height)),"format"in t&&(u=l[t.format])):"number"==typeof t?(r=0|t,i="number"==typeof n?0|n:r):t||(r=i=1),r!==c.width||i!==c.height||u!==c.format)return o.width=c.width=r,o.height=c.height=i,c.format=u,e.bindRenderbuffer(36161,c.renderbuffer),e.renderbufferStorage(36161,u,r,i),a.profile&&(c.stats.size=we[c.format]*c.width*c.height),o.format=s[c.format],o}var c=new i(e.createRenderbuffer());return u[c.id]=c,r.renderbufferCount++,o(t,n),o.resize=function(t,n){var r=0|t,i=0|n||r;return r===c.width&&i===c.height||(o.width=c.width=r,o.height=c.height=i,e.bindRenderbuffer(36161,c.renderbuffer),e.renderbufferStorage(36161,c.format,r,i),a.profile&&(c.stats.size=we[c.format]*c.width*c.height)),o},o._reglType="renderbuffer",o._renderbuffer=c,a.profile&&(o.stats=c.stats),o.destroy=function(){c.decRef()},o},clear:function(){$(u).forEach(o)},restore:function(){$(u).forEach((function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(36161,t.renderbuffer),e.renderbufferStorage(36161,t.format,t.width,t.height)})),e.bindRenderbuffer(36161,null)}}},Ae=[];Ae[6408]=4,Ae[6407]=3;var Se=[];Se[5121]=1,Se[5126]=4,Se[36193]=2;var Ce=[1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998],Ie=["x","y","z","w"],Le="blend.func blend.equation stencil.func stencil.opFront stencil.opBack sample.coverage viewport scissor.box polygonOffset.offset".split(" "),Pe={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Ee={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Me={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Ze={cw:2304,ccw:2305},Oe=new W(!1,!1,!1,(function(){}));return function(e){function t(){if(0===U.length)k&&k.update(),te=null;else{te=K.next(t),d();for(var e=U.length-1;0<=e;--e){var n=U[e];n&&n(Z,null,0)}h.flush(),k&&k.update()}}function n(){!te&&0=U.length&&r()}}}}function u(){var e=z.viewport,t=z.scissor_box;e[0]=e[1]=t[0]=t[1]=0,Z.viewportWidth=Z.framebufferWidth=Z.drawingBufferWidth=e[2]=t[2]=h.drawingBufferWidth,Z.viewportHeight=Z.framebufferHeight=Z.drawingBufferHeight=e[3]=t[3]=h.drawingBufferHeight}function d(){Z.tick+=1,Z.time=p(),u(),V.procs.poll()}function f(){D.refresh(),u(),V.procs.refresh(),k&&k.update()}function p(){return(J()-A)/1e3}if(!(e=i(e)))return null;var h=e.gl,v=h.getContextAttributes();h.isContextLost();var g=function(e,t){function n(t){var n;t=t.toLowerCase();try{n=r[t]=e.getExtension(t)}catch(a){}return!!n}for(var r={},a=0;at;++t)ne(_({framebuffer:e.framebuffer.faces[t]},e),s);else ne(e,s);else s(0,e)},prop:j.define.bind(null,1),context:j.define.bind(null,2),this:j.define.bind(null,3),draw:l({}),buffer:function(e){return R.create(e,34962,!1,!1)},elements:function(e){return N.create(e,!1)},texture:D.create2D,cube:D.createCube,renderbuffer:W.create,framebuffer:G.create,framebufferCube:G.createCube,vao:X.createVAO,attributes:v,frame:c,on:function(e,t){var n;switch(e){case"frame":return c(t);case"lost":n=q;break;case"restore":n=$;break;case"destroy":n=ee}return n.push(t),{cancel:function(){for(var e=0;e",'""',"''","``","“”","«»"]:("string"==typeof n.ignore&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map((function(e){return 1===e.length&&(e+=e),e})));var a=r.parse(e,{flat:!0,brackets:n.ignore}),i=a[0].split(t);if(n.escape){for(var o=[],l=0;l1&&(a=1),a<-1&&(a=-1),(e*r-t*n<0?-1:1)*Math.acos(a)};t.default=function(e){var t=e.px,n=e.py,l=e.cx,s=e.cy,c=e.rx,u=e.ry,d=e.xAxisRotation,f=void 0===d?0:d,p=e.largeArcFlag,h=void 0===p?0:p,m=e.sweepFlag,y=void 0===m?0:m,v=[];if(0===c||0===u)return[];var g=Math.sin(f*r/360),b=Math.cos(f*r/360),x=b*(t-l)/2+g*(n-s)/2,T=-g*(t-l)/2+b*(n-s)/2;if(0===x&&0===T)return[];c=Math.abs(c),u=Math.abs(u);var w=Math.pow(x,2)/Math.pow(c,2)+Math.pow(T,2)/Math.pow(u,2);w>1&&(c*=Math.sqrt(w),u*=Math.sqrt(w));var k=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(s){a=!0,i=s}finally{try{!r&&l.return&&l.return()}finally{if(a)throw i}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}(function(e,t,n,a,i,l,s,c,u,d,f,p){var h=Math.pow(i,2),m=Math.pow(l,2),y=Math.pow(f,2),v=Math.pow(p,2),g=h*m-h*v-m*y;g<0&&(g=0),g/=h*v+m*y;var b=(g=Math.sqrt(g)*(s===c?-1:1))*i/l*p,x=g*-l/i*f,T=d*b-u*x+(e+n)/2,w=u*b+d*x+(t+a)/2,k=(f-b)/i,A=(p-x)/l,S=(-f-b)/i,C=(-p-x)/l,I=o(1,0,k,A),L=o(k,A,S,C);return 0===c&&L>0&&(L-=r),1===c&&L<0&&(L+=r),[T,w,I,L]}(t,n,l,s,c,u,h,y,g,b,x,T),4),A=k[0],S=k[1],C=k[2],I=k[3],L=Math.abs(I)/(r/4);Math.abs(1-L)<1e-7&&(L=1);var P=Math.max(Math.ceil(L),1);I/=P;for(var E=0;Et[2]&&(t[2]=s[c+0]),s[c+1]>t[3]&&(t[3]=s[c+1]);return t}},53052:function(e,t,n){e.exports=function(e){for(var t,n=[],o=0,l=0,s=0,c=0,u=null,d=null,f=0,p=0,h=0,m=e.length;h4?(o=y[y.length-4],l=y[y.length-3]):(o=f,l=p),n.push(y)}return n};var r=n(54026);function a(e,t,n,r){return["C",e,t,n,r,n,r]}function i(e,t,n,r,a,i){return["C",e/3+2/3*n,t/3+2/3*r,a/3+2/3*n,i/3+2/3*r,a,i]}},16300:function(e,t,n){var r,a=n(57208),i=n(28092),o=n(87351),l=n(32145),s=n(79273),c=document.createElement("canvas"),u=c.getContext("2d");e.exports=function(e,t){if(!l(e))throw Error("Argument should be valid svg path string");var n,d;t||(t={}),t.shape?(n=t.shape[0],d=t.shape[1]):(n=c.width=t.w||t.width||200,d=c.height=t.h||t.height||200);var f=Math.min(n,d),p=t.stroke||0,h=t.viewbox||t.viewBox||a(e),m=[n/(h[2]-h[0]),d/(h[3]-h[1])],y=Math.min(m[0]||0,m[1]||0)/2;if(u.fillStyle="black",u.fillRect(0,0,n,d),u.fillStyle="white",p&&("number"!=typeof p&&(p=1),u.strokeStyle=p>0?"white":"black",u.lineWidth=Math.abs(p)),u.translate(.5*n,.5*d),u.scale(y,y),function(){if(null!=r)return r;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return r=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var n=e.getImageData(0,0,1,1);return r=n&&n.data&&255===n.data[3]}()){var v=new Path2D(e);u.fill(v),p&&u.stroke(v)}else{var g=i(e);o(u,g),u.fill(),p&&u.stroke()}return u.setTransform(1,0,0,1,0,0),s(u,{cutoff:null!=t.cutoff?t.cutoff:.5,radius:null!=t.radius?t.radius:.5*f})}},61515:function(e){e.exports=n,e.exports.float32=e.exports.float=n,e.exports.fract32=e.exports.fract=function(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=n(e));for(var r=0,a=t.length;r-1?a(t):null;if(n&&n.name){var l,s,c,u,d=e.indexOf("%n");if(d>-1)return i>-1?(d>i?(l=o,c=i,s=n.name,u=d):(l=n.name,c=d,s=o,u=i),e.slice(0,c)+l+e.slice(c+2,u)+s+e.slice(u+2)):e.slice(0,d)+n.name+e.slice(d+2)}return i>-1?e.slice(0,i)+o+e.slice(i+2):e}},5572:function(e,t,n){var r=n(78320),a=n(72777);e.exports=function(e,t,n){if(n&&!r(e)){if("default"in n)return n.default;if(n.isOptional)return null}var i=new(n&&n.Error||TypeError)(a(t,e,n));throw n&&n.errorCode&&(i.code=n.errorCode),i}},65171:function(e){e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(n){return null}}}},7692:function(e,t,n){var r=n(65171),a=/[\n\r\u2028\u2029]/g;e.exports=function(e){var t=r(e);return null===t?"":(t.length>100&&(t=t.slice(0,99)+"…"),t=t.replace(a,(function(e){switch(e){case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}})))}},4128:function(e,t,n){var r=n(78320),a={object:!0,function:!0,undefined:!0};e.exports=function(e){return!!r(e)&&hasOwnProperty.call(a,typeof e)}},73750:function(e,t,n){var r=n(5572),a=n(49944);e.exports=function(e){if(a(e))return e;var t=arguments[1],n=t&&t.name?"Expected a plain function for %n, received %v":"%v is not a plain function";return r(e,n,t)}},49944:function(e,t,n){var r=n(50913),a=/^\s*class[\s{/}]/,i=Function.prototype.toString;e.exports=function(e){return!!r(e)&&!a.test(i.call(e))}},1985:function(e,t,n){var r=n(4128);e.exports=function(e){if(!r(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(t){return!1}}},36263:function(e,t,n){var r=n(78320),a=n(4128),i=Object.prototype.toString;e.exports=function(e){if(!r(e))return null;if(a(e)){var t=e.toString;if("function"!=typeof t)return null;if(t===i)return null}try{return""+e}catch(n){return null}}},72014:function(e,t,n){var r=n(5572),a=n(78320);e.exports=function(e){if(a(e))return e;var t=arguments[1],n=t&&t.name?"Expected a value for %n, received %v":"Cannot use %v";return r(e,n,t)}},78320:function(e){e.exports=function(e){return null!=e}},83190:function(e,t,n){var r=n(41586),a=n(31092),i=n(33041).hp;n.g.__TYPEDARRAY_POOL||(n.g.__TYPEDARRAY_POOL={UINT8:a([32,0]),UINT16:a([32,0]),UINT32:a([32,0]),BIGUINT64:a([32,0]),INT8:a([32,0]),INT16:a([32,0]),INT32:a([32,0]),BIGINT64:a([32,0]),FLOAT:a([32,0]),DOUBLE:a([32,0]),DATA:a([32,0]),UINT8C:a([32,0]),BUFFER:a([32,0])});var o="undefined"!=typeof Uint8ClampedArray,l="undefined"!=typeof BigUint64Array,s="undefined"!=typeof BigInt64Array,c=n.g.__TYPEDARRAY_POOL;c.UINT8C||(c.UINT8C=a([32,0])),c.BIGUINT64||(c.BIGUINT64=a([32,0])),c.BIGINT64||(c.BIGINT64=a([32,0])),c.BUFFER||(c.BUFFER=a([32,0]));var u=c.DATA,d=c.BUFFER;function f(e){if(e){var t=e.length||e.byteLength,n=r.log2(t);u[n].push(e)}}function p(e){e=r.nextPow2(e);var t=r.log2(e),n=u[t];return n.length>0?n.pop():new ArrayBuffer(e)}function h(e){return new Uint8Array(p(e),0,e)}function m(e){return new Uint16Array(p(2*e),0,e)}function y(e){return new Uint32Array(p(4*e),0,e)}function v(e){return new Int8Array(p(e),0,e)}function g(e){return new Int16Array(p(2*e),0,e)}function b(e){return new Int32Array(p(4*e),0,e)}function x(e){return new Float32Array(p(4*e),0,e)}function T(e){return new Float64Array(p(8*e),0,e)}function w(e){return o?new Uint8ClampedArray(p(e),0,e):h(e)}function k(e){return l?new BigUint64Array(p(8*e),0,e):null}function A(e){return s?new BigInt64Array(p(8*e),0,e):null}function S(e){return new DataView(p(e),0,e)}function C(e){e=r.nextPow2(e);var t=r.log2(e),n=d[t];return n.length>0?n.pop():new i(e)}t.free=function(e){if(i.isBuffer(e))d[r.log2(e.length)].push(e);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(e)&&(e=e.buffer),!e)return;var t=e.length||e.byteLength,n=0|r.log2(t);u[n].push(e)}},t.freeUint8=t.freeUint16=t.freeUint32=t.freeBigUint64=t.freeInt8=t.freeInt16=t.freeInt32=t.freeBigInt64=t.freeFloat32=t.freeFloat=t.freeFloat64=t.freeDouble=t.freeUint8Clamped=t.freeDataView=function(e){f(e.buffer)},t.freeArrayBuffer=f,t.freeBuffer=function(e){d[r.log2(e.length)].push(e)},t.malloc=function(e,t){if(void 0===t||"arraybuffer"===t)return p(e);switch(t){case"uint8":return h(e);case"uint16":return m(e);case"uint32":return y(e);case"int8":return v(e);case"int16":return g(e);case"int32":return b(e);case"float":case"float32":return x(e);case"double":case"float64":return T(e);case"uint8_clamped":return w(e);case"bigint64":return A(e);case"biguint64":return k(e);case"buffer":return C(e);case"data":case"dataview":return S(e);default:return null}return null},t.mallocArrayBuffer=p,t.mallocUint8=h,t.mallocUint16=m,t.mallocUint32=y,t.mallocInt8=v,t.mallocInt16=g,t.mallocInt32=b,t.mallocFloat32=t.mallocFloat=x,t.mallocFloat64=t.mallocDouble=T,t.mallocUint8Clamped=w,t.mallocBigUint64=k,t.mallocBigInt64=A,t.mallocDataView=S,t.mallocBuffer=C,t.clearCache=function(){for(var e=0;e<32;++e)c.UINT8[e].length=0,c.UINT16[e].length=0,c.UINT32[e].length=0,c.INT8[e].length=0,c.INT16[e].length=0,c.INT32[e].length=0,c.FLOAT[e].length=0,c.DOUBLE[e].length=0,c.BIGUINT64[e].length=0,c.BIGINT64[e].length=0,c.UINT8C[e].length=0,u[e].length=0,d[e].length=0}},72029:function(e){var t=/[\'\"]/;e.exports=function(e){return e?(t.test(e.charAt(0))&&(e=e.substr(1)),t.test(e.charAt(e.length-1))&&(e=e.substr(0,e.length-1)),e):""}},6007:function(e){e.exports=function(e,t,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var r=0,a=n.length;r2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,n){var a=this.intercalaryMonth(e);if(n&&t!==a||t<1||t>12)throw r.local.invalidMonth.replace(/\{0\}/,this.local.name);return a?!n&&t<=a?t-1:t:t-1},toChineseMonth:function(e,t){e.year&&(t=(e=e.year()).month());var n=this.intercalaryMonth(e);if(t<0||t>(n?12:11))throw r.local.invalidMonth.replace(/\{0\}/,this.local.name);return n?t>13},isIntercalaryMonth:function(e,t){e.year&&(t=(e=e.year()).month());var n=this.intercalaryMonth(e);return!!n&&n===t},leapYear:function(e){return 0!==this.intercalaryMonth(e)},weekOfYear:function(e,t,n){var a,o=this._validateYear(e,r.local.invalidyear),l=f[o-f[0]],s=l>>9&4095,c=l>>5&15,u=31&l;(a=i.newDate(s,c,u)).add(4-(a.dayOfWeek()||7),"d");var d=this.toJD(e,t,n)-a.toJD();return 1+Math.floor(d/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var n=d[e-d[0]];if(t>(n>>13?12:11))throw r.local.invalidMonth.replace(/\{0\}/,this.local.name);return n&1<<12-t?30:29},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,l,n,r.local.invalidDate);e=this._validateYear(a.year()),t=a.month(),n=a.day();var o=this.isIntercalaryMonth(e,t),l=this.toChineseMonth(e,t),s=function(e,t,n,r,a){var i,o,l;if("object"==typeof e)o=e,i=t||{};else{var s;if(!("number"==typeof e&&e>=1888&&e<=2111))throw new Error("Lunar year outside range 1888-2111");if(!("number"==typeof t&&t>=1&&t<=12))throw new Error("Lunar month outside range 1 - 12");if(!("number"==typeof n&&n>=1&&n<=30))throw new Error("Lunar day outside range 1 - 30");"object"==typeof r?(s=!1,i=r):(s=!!r,i={}),o={year:e,month:t,day:n,isIntercalary:s}}l=o.day-1;var c,u=d[o.year-d[0]],p=u>>13;c=p&&(o.month>p||o.isIntercalary)?o.month:o.month-1;for(var h=0;h>9&4095,(m>>5&15)-1,(31&m)+l);return i.year=y.getFullYear(),i.month=1+y.getMonth(),i.day=y.getDate(),i}(e,l,n,o);return i.toJD(s.year,s.month,s.day)},fromJD:function(e){var t=i.fromJD(e),n=function(e,t,n,r){var a,i;if("object"==typeof e)a=e,i=t||{};else{if(!("number"==typeof e&&e>=1888&&e<=2111))throw new Error("Solar year outside range 1888-2111");if(!("number"==typeof t&&t>=1&&t<=12))throw new Error("Solar month outside range 1 - 12");if(!("number"==typeof n&&n>=1&&n<=31))throw new Error("Solar day outside range 1 - 31");a={year:e,month:t,day:n},i={}}var o=f[a.year-f[0]],l=a.year<<9|a.month<<5|a.day;i.year=l>=o?a.year:a.year-1,o=f[i.year-f[0]];var s,c=new Date(o>>9&4095,(o>>5&15)-1,31&o),u=new Date(a.year,a.month-1,a.day);s=Math.round((u-c)/864e5);var p,h=d[i.year-d[0]];for(p=0;p<13;p++){var m=h&1<<12-p?30:29;if(s>13;return!y||p=2&&r<=6},extraInfo:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return{century:o[Math.floor((a.year()-1)/100)+1]||""}},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return e=a.year()+(a.year()<0?1:0),t=a.month(),(n=a.day())+(t>1?16:0)+(t>2?32*(t-2):0)+400*(e-1)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=400*(t-1),e+=e>15?16:0;var n=Math.floor(e/32)+1,r=e-32*(n-1)+1;return this.newDate(t<=0?t-1:t,n,r)}});var o={20:"Fruitbat",21:"Anchovy"};r.calendars.discworld=i},94872:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Ethiopian",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return(e=t.year()+(t.year()<0?1:0))%4==3||e%4==-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-r.dayOfWeek(),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(13===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return(e=a.year())<0&&e++,a.day()+30*(a.month()-1)+365*(e-1)+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,n=Math.floor((t-Math.floor((t+366)/1461))/365)+1;n<=0&&n--,t=Math.floor(e)+.5-this.newDate(n,1,1).toJD();var r=Math.floor(t/30)+1,a=t-30*(r-1)+1;return this.newDate(n,r,a)}}),r.calendars.ethiopian=i},95076:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}function o(e,t){return e-t*Math.floor(e/t)}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return o(7*(e=e<0?e+1:e)+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,r.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-r.dayOfWeek(),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInYear:function(e){return e=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear).year(),this.toJD(-1===e?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,r.local.invalidMonth),12===t&&this.leapYear(e)||8===t&&5===o(this.daysInYear(e),10)?30:9===t&&3===o(this.daysInYear(e),10)?29:this.daysPerMonth[t-1]},weekDay:function(e,t,n){return 6!==this.dayOfWeek(e,t,n)},extraInfo:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return{yearType:(this.leapYear(a)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(a)%10-3]}},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);e=a.year(),t=a.month(),n=a.day();var i=e<=0?e+1:e,o=this.jdEpoch+this._delay1(i)+this._delay2(i)+n+1;if(t<7){for(var l=7;l<=this.monthsInYear(e);l++)o+=this.daysInMonth(e,l);for(l=1;l=this.toJD(-1===t?1:t+1,7,1);)t++;for(var n=ethis.toJD(t,n,this.daysInMonth(t,n));)n++;var r=e-this.toJD(t,n,1)+1;return this.newDate(t,n,r)}}),r.calendars.hebrew=i},83985:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Islamic",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-khamīs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){return(11*this._validate(e,this.minMonth,this.minDay,r.local.invalidYear).year()+14)%30<11},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-r.dayOfWeek(),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return 5!==this.dayOfWeek(e,t,n)},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return e=a.year(),t=a.month(),e=e<=0?e+1:e,(n=a.day())+Math.ceil(29.5*(t-1))+354*(e-1)+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var n=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),r=e-this.toJD(t,n,1)+1;return this.newDate(t,n,r)}}),r.calendars.islamic=i},73066:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Julian",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return(e=t.year()<0?t.year()+1:t.year())%4==0},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(4-(r.dayOfWeek()||7),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return e=a.year(),t=a.month(),n=a.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+n-1524.5},fromJD:function(e){var t=Math.floor(e+.5)+1524,n=Math.floor((t-122.1)/365.25),r=Math.floor(365.25*n),a=Math.floor((t-r)/30.6001),i=a-Math.floor(a<14?1:13),o=n-Math.floor(i>2?4716:4715),l=t-r-Math.floor(30.6001*a);return o<=0&&o--,this.newDate(o,i,l)}}),r.calendars.julian=i},90185:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}function o(e,t){return e-t*Math.floor(e/t)}function l(e,t){return o(e-1,t)+1}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,r.local.invalidYear),!1},formatYear:function(e){e=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear).year();var t=Math.floor(e/400);return e%=400,e+=e<0?400:0,t+"."+Math.floor(e/20)+"."+e%20},forYear:function(e){if((e=e.split(".")).length<3)throw"Invalid Mayan year";for(var t=0,n=0;n19||n>0&&r<0)throw"Invalid Mayan year";t=20*t+r}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,r.local.invalidYear),18},weekOfYear:function(e,t,n){return this._validate(e,t,n,r.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,r.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,r.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,n){return this._validate(e,t,n,r.local.invalidDate).day()},weekDay:function(e,t,n){return this._validate(e,t,n,r.local.invalidDate),!0},extraInfo:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate).toJD(),i=this._toHaab(a),o=this._toTzolkin(a);return{haabMonthName:this.local.haabMonths[i[0]-1],haabMonth:i[0],haabDay:i[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){var t=o(8+(e-=this.jdEpoch)+340,365);return[Math.floor(t/20)+1,o(t,20)]},_toTzolkin:function(e){return[l(20+(e-=this.jdEpoch),20),l(e+4,13)]},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return a.day()+20*a.month()+360*a.year()+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e%=360,e+=e<0?360:0;var n=Math.floor(e/20),r=e%20;return this.newDate(t,n,r)}}),r.calendars.mayan=i},52313:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar;var o=r.instance("gregorian");a(i.prototype,{name:"Nanakshahi",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear);return o.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(1-(r.dayOfWeek()||7),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidMonth);(e=a.year())<0&&e++;for(var i=a.day(),l=1;l=this.toJD(t+1,1,1);)t++;for(var n=e-Math.floor(this.toJD(t,1,1)+.5)+1,r=1;n>this.daysInMonth(t,r);)n-=this.daysInMonth(t,r),r++;return this.newDate(t,r,n)}}),r.calendars.nanakshahi=i},92142:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar,a(i.prototype,{name:"Nepali",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-r.dayOfWeek(),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInYear:function(e){if(e=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear).year(),void 0===this.NEPALI_CALENDAR_DATA[e])return this.daysPerYear;for(var t=0,n=this.minMonth;n<=12;n++)t+=this.NEPALI_CALENDAR_DATA[e][n];return t},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,r.local.invalidMonth),void 0===this.NEPALI_CALENDAR_DATA[e]?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,n){return 6!==this.dayOfWeek(e,t,n)},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);e=a.year(),t=a.month(),n=a.day();var i=r.instance(),o=0,l=t,s=e;this._createMissingCalendarData(e);var c=e-(l>9||9===l&&n>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(9!==t&&(o=n,l--);9!==l;)l<=0&&(l=12,s--),o+=this.NEPALI_CALENDAR_DATA[s][l],l--;return 9===t?(o+=n-this.NEPALI_CALENDAR_DATA[s][0])<0&&(o+=i.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(c,1,1).add(o,"d").toJD()},fromJD:function(e){var t=r.instance().fromJD(e),n=t.year(),a=t.dayOfYear(),i=n+56;this._createMissingCalendarData(i);for(var o=9,l=this.NEPALI_CALENDAR_DATA[i][0],s=this.NEPALI_CALENDAR_DATA[i][o]-l+1;a>s;)++o>12&&(o=1,i++),s+=this.NEPALI_CALENDAR_DATA[i][o];var c=this.NEPALI_CALENDAR_DATA[i][o]-(s-a);return this.newDate(i,o,c)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var n=e-1;n0?474:473))%2820+474+38)%2816<682},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-(r.dayOfWeek()+1)%7,"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return 5!==this.dayOfWeek(e,t,n)},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);e=a.year(),t=a.month(),n=a.day();var i=e-(e>=0?474:473),l=474+o(i,2820);return n+(t<=7?31*(t-1):30*(t-1)+6)+Math.floor((682*l-110)/2816)+365*(l-1)+1029983*Math.floor(i/2820)+this.jdEpoch-1},fromJD:function(e){var t=(e=Math.floor(e)+.5)-this.toJD(475,1,1),n=Math.floor(t/1029983),r=o(t,1029983),a=2820;if(1029982!==r){var i=Math.floor(r/366),l=o(r,366);a=Math.floor((2134*i+2816*l+2815)/1028522)+i+1}var s=a+2820*n+474;s=s<=0?s-1:s;var c=e-this.toJD(s,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),d=e-this.toJD(s,u,1)+1;return this.newDate(s,u,d)}}),r.calendars.persian=i,r.calendars.jalali=i},64215:function(e,t,n){var r=n(64090),a=n(89043),i=r.instance();function o(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}o.prototype=new r.baseCalendar,a(o.prototype,{name:"Taiwan",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return e=this._t2gYear(t.year()),i.leapYear(e)},weekOfYear:function(e,t,n){var a=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return e=this._t2gYear(a.year()),i.weekOfYear(e,a.month(),a.day())},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return e=this._t2gYear(a.year()),i.toJD(e,a.month(),a.day())},fromJD:function(e){var t=i.fromJD(e),n=this._g2tYear(t.year());return this.newDate(n,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}}),r.calendars.taiwan=o},54921:function(e,t,n){var r=n(64090),a=n(89043),i=r.instance();function o(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}o.prototype=new r.baseCalendar,a(o.prototype,{name:"Thai",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return e=this._t2gYear(t.year()),i.leapYear(e)},weekOfYear:function(e,t,n){var a=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return e=this._t2gYear(a.year()),i.weekOfYear(e,a.month(),a.day())},daysInMonth:function(e,t){var n=this._validate(e,t,this.minDay,r.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(e,t,n){return(this.dayOfWeek(e,t,n)||7)<6},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate);return e=this._t2gYear(a.year()),i.toJD(e,a.month(),a.day())},fromJD:function(e){var t=i.fromJD(e),n=this._g2tYear(t.year());return this.newDate(n,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}}),r.calendars.thai=o},61848:function(e,t,n){var r=n(64090),a=n(89043);function i(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}i.prototype=new r.baseCalendar,a(i.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thalāthā’","Yawm al-Arba‘ā’","Yawm al-Khamīs","Yawm al-Jum‘a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,r.local.invalidYear);return 355===this.daysInYear(t.year())},weekOfYear:function(e,t,n){var r=this.newDate(e,t,n);return r.add(-r.dayOfWeek(),"d"),Math.floor((r.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,n=1;n<=12;n++)t+=this.daysInMonth(e,n);return t},daysInMonth:function(e,t){for(var n=this._validate(e,t,this.minDay,r.local.invalidMonth).toJD()-24e5+.5,a=0,i=0;in)return o[a]-o[a-1];a++}return 30},weekDay:function(e,t,n){return 5!==this.dayOfWeek(e,t,n)},toJD:function(e,t,n){var a=this._validate(e,t,n,r.local.invalidDate),i=12*(a.year()-1)+a.month()-15292;return a.day()+o[i-1]-1+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,n=0,r=0;rt);r++)n++;var a=n+15292,i=Math.floor((a-1)/12),l=i+1,s=a-12*i,c=t-o[n-1]+1;return this.newDate(l,s,c)},isValid:function(e,t,n){var a=r.baseCalendar.prototype.isValid.apply(this,arguments);return a&&(a=(e=null!=e.year?e.year:e)>=1276&&e<=1500),a},_validate:function(e,t,n,a){var i=r.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw a.replace(/\{0\}/,this.local.name);return i}}),r.calendars.ummalqura=i;var o=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]},64090:function(e,t,n){var r=n(89043);function a(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}function i(e,t,n,r){if(this._calendar=e,this._year=t,this._month=n,this._day=r,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(c.local.invalidDate||c.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function o(e,t){return"000000".substring(0,t-(e=""+e).length)+e}function l(){this.shortYearCutoff="+10"}function s(e){this.local=this.regionalOptions[e]||this.regionalOptions[""]}r(a.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var n=this._localCals[e+"-"+t];if(!n&&this.calendars[e]&&(n=new this.calendars[e](t),this._localCals[e+"-"+t]=n),!n)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return n},newDate:function(e,t,n,r,a){return(r=(null!=e&&e.year?e.calendar():"string"==typeof r?this.instance(r,a):r)||this.instance()).newDate(e,t,n)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,(function(t){return e[t]}))}},substituteChineseDigits:function(e,t){return function(n){for(var r="",a=0;n>0;){var i=n%10;r=(0===i?"":e[i]+t[a])+r,a++,n=Math.floor(n/10)}return 0===r.indexOf(e[1]+t[1])&&(r=r.substr(1)),r||e[0]}}}),r(i.prototype,{newDate:function(e,t,n){return this._calendar.newDate(null==e?this:e,t,n)},year:function(e){return 0===arguments.length?this._year:this.set(e,"y")},month:function(e){return 0===arguments.length?this._month:this.set(e,"m")},day:function(e){return 0===arguments.length?this._day:this.set(e,"d")},date:function(e,t,n){if(!this._calendar.isValid(e,t,n))throw(c.local.invalidDate||c.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=n,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(c.local.differentCalendars||c.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return 0===t?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+o(Math.abs(this.year()),4)+"-"+o(this.month(),2)+"-"+o(this.day(),2)}}),r(l.prototype,{_validateLevel:0,newDate:function(e,t,n){return null==e?this.today():(e.year&&(this._validate(e,t,n,c.local.invalidDate||c.regionalOptions[""].invalidDate),n=e.day(),t=e.month(),e=e.year()),new i(this,e,t,n))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){return this._validate(e,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+o(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var n=this._validate(e,t,this.minDay,c.local.invalidMonth||c.regionalOptions[""].invalidMonth);return(n.month()+this.monthsInYear(n)-this.firstMonth)%this.monthsInYear(n)+this.minMonth},fromMonthOfYear:function(e,t){var n=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,n,this.minDay,c.local.invalidMonth||c.regionalOptions[""].invalidMonth),n},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,c.local.invalidYear||c.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,n){var r=this._validate(e,t,n,c.local.invalidDate||c.regionalOptions[""].invalidDate);return r.toJD()-this.newDate(r.year(),this.fromMonthOfYear(r.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,n){var r=this._validate(e,t,n,c.local.invalidDate||c.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(r))+2)%this.daysInWeek()},extraInfo:function(e,t,n){return this._validate(e,t,n,c.local.invalidDate||c.regionalOptions[""].invalidDate),{}},add:function(e,t,n){return this._validate(e,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,n),t,n)},_add:function(e,t,n){if(this._validateLevel++,"d"===n||"w"===n){var r=e.toJD()+t*("w"===n?this.daysInWeek():1),a=e.calendar().fromJD(r);return this._validateLevel--,[a.year(),a.month(),a.day()]}try{var i=e.year()+("y"===n?t:0),o=e.monthOfYear()+("m"===n?t:0);a=e.day(),"y"===n?(e.month()!==this.fromMonthOfYear(i,o)&&(o=this.newDate(i,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(i)),a=Math.min(a,this.daysInMonth(i,this.fromMonthOfYear(i,o)))):"m"===n&&(function(e){for(;ot-1+e.minMonth;)i++,o-=t,t=e.monthsInYear(i)}(this),a=Math.min(a,this.daysInMonth(i,this.fromMonthOfYear(i,o))));var l=[i,this.fromMonthOfYear(i,o),a];return this._validateLevel--,l}catch(s){throw this._validateLevel--,s}},_correctAdd:function(e,t,n,r){if(!(this.hasYearZero||"y"!==r&&"m"!==r||0!==t[0]&&e.year()>0==t[0]>0)){var a={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[r],i=n<0?-1:1;t=this._add(e,n*a[0]+i*a[1],a[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,n){this._validate(e,this.minMonth,this.minDay,c.local.invalidDate||c.regionalOptions[""].invalidDate);var r="y"===n?t:e.year(),a="m"===n?t:e.month(),i="d"===n?t:e.day();return"y"!==n&&"m"!==n||(i=Math.min(i,this.daysInMonth(r,a))),e.date(r,a,i)},isValid:function(e,t,n){this._validateLevel++;var r=this.hasYearZero||0!==e;if(r){var a=this.newDate(e,t,this.minDay);r=t>=this.minMonth&&t-this.minMonth=this.minDay&&n-this.minDay13.5?13:1),c=a-(s>2.5?4716:4715);return c<=0&&c--,this.newDate(c,s,l)},toJSDate:function(e,t,n){var r=this._validate(e,t,n,c.local.invalidDate||c.regionalOptions[""].invalidDate),a=new Date(r.year(),r.month()-1,r.day());return a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0),a.setHours(a.getHours()>12?a.getHours()+2:0),a},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var c=e.exports=new a;c.cdate=i,c.baseCalendar=l,c.calendars.gregorian=s},14267:function(e,t,n){var r=n(89043),a=n(64090);r(a.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),a.local=a.regionalOptions[""],r(a.cdate.prototype,{formatDate:function(e,t){return"string"!=typeof e&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}}),r(a.baseCalendar.prototype,{UNIX_EPOCH:a.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:a.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,n){if("string"!=typeof e&&(n=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw a.local.invalidFormat||a.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat;for(var r,i,o,l=(n=n||{}).dayNamesShort||this.local.dayNamesShort,s=n.dayNames||this.local.dayNames,c=n.monthNumbers||this.local.monthNumbers,u=n.monthNamesShort||this.local.monthNamesShort,d=n.monthNames||this.local.monthNames,f=(n.calculateWeek||this.local.calculateWeek,function(t,n){for(var r=1;T+r1}),p=function(e,t,n,r){var a=""+t;if(f(e,r))for(;a.length1},b=function(e,n){var r=g(e,n),i=[2,3,r?4:2,r?4:2,10,11,20]["oyYJ@!".indexOf(e)+1],o=new RegExp("^-?\\d{1,"+i+"}"),l=t.substring(S).match(o);if(!l)throw(a.local.missingNumberAt||a.regionalOptions[""].missingNumberAt).replace(/\{0\}/,S);return S+=l[0].length,parseInt(l[0],10)},x=this,T=function(){if("function"==typeof s){g("m");var e=s.call(x,t.substring(S));return S+=e.length,e}return b("m")},w=function(e,n,r,i){for(var o=g(e,i)?r:n,l=0;l-1){p=1,h=m;for(var L=this.daysInMonth(f,p);h>L;L=this.daysInMonth(f,p))p++,h-=L}return d>-1?this.fromJD(d):this.newDate(f,p,h)},determineDate:function(e,t,n,r,a){n&&"object"!=typeof n&&(a=r,r=n,n=null),"string"!=typeof r&&(a=r,r="");var i=this;return t=t?t.newDate():null,null==e?t:"string"==typeof e?function(e){try{return i.parseDate(r,e,a)}catch(s){}for(var t=((e=e.toLowerCase()).match(/^c/)&&n?n.newDate():null)||i.today(),o=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,l=o.exec(e);l;)t.add(parseInt(l[1],10),l[2]||"d"),l=o.exec(e);return t}(e):"number"==typeof e?isNaN(e)||e===1/0||e===-1/0?t:i.today().add(e,"d"):i.newDate(e)}})},71633:function(e){e.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]},60738:function(e,t,n){var r=n(71633),a=n(69133),i=n(13806),o=n(69100).templatedArray;n(39413),e.exports=o("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:a({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:r.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:r.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",i.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",i.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:a({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc",_deprecated:{ref:{valType:"string",editType:"calc"}}})},1241:function(e,t,n){var r=n(11005),a=n(60638),i=n(21981).draw;function o(e){var t=e._fullLayout;r.filterVisible(t.annotations).forEach((function(t){var n=a.getFromId(e,t.xref),r=a.getFromId(e,t.yref),i=a.getRefType(t.xref),o=a.getRefType(t.yref);t._extremes={},"range"===i&&l(t,n),"range"===o&&l(t,r)}))}function l(e,t){var n,r=t._id,i=r.charAt(0),o=e[i],l=e["a"+i],s=e[i+"ref"],c=e["a"+i+"ref"],u=e["_"+i+"padplus"],d=e["_"+i+"padminus"],f={x:1,y:-1}[i]*e[i+"shift"],p=3*e.arrowsize*e.arrowwidth||0,h=p+f,m=p-f,y=3*e.startarrowsize*e.arrowwidth||0,v=y+f,g=y-f;if(c===s){var b=a.findExtremes(t,[t.r2c(o)],{ppadplus:h,ppadminus:m}),x=a.findExtremes(t,[t.r2c(l)],{ppadplus:Math.max(u,v),ppadminus:Math.max(d,g)});n={min:[b.min[0],x.min[0]],max:[b.max[0],x.max[0]]}}else v=l?v+l:v,g=l?g-l:g,n=a.findExtremes(t,[t.r2c(o)],{ppadplus:Math.max(u,h,v),ppadminus:Math.max(d,m,g)});e._extremes[r]=n}e.exports=function(e){var t=e._fullLayout;if(r.filterVisible(t.annotations).length&&e._fullData.length)return r.syncOrAsync([i,o],e)}},3695:function(e,t,n){var r=n(11005),a=n(94134),i=n(69100).arrayEditor;function o(e,t){var n,r,a,i,o,s,c,u=e._fullLayout.annotations,d=[],f=[],p=[],h=(t||[]).length;for(n=0;n0||n.explicitOff.length>0},onClick:function(e,t){var n,l,s=o(e,t),c=s.on,u=s.off.concat(s.explicitOff),d={},f=e._fullLayout.annotations;if(c.length||u.length){for(n=0;n2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[t]}for(var j=!1,K=["x","y"],J=0;J1)&&(re===ne?((pe=ae.r2fraction(t["a"+te]))<0||pe>1)&&(j=!0):j=!0),U=ae._offset+ae.r2p(t[te]),$=.5}else{var he="domain"===fe;"x"===te?(q=t[te],U=he?ae._offset+ae._length*q:U=k.l+k.w*q):(q=1-t[te],U=he?ae._offset+ae._length*q:U=k.t+k.h*q),$=t.showarrow?.5:q}if(t.showarrow){de.head=U;var me=t["a"+te];if(ee=oe*Y(.5,t.xanchor)-le*Y(.5,t.yanchor),re===ne){var ye=s.getRefType(re);"domain"===ye?("y"===te&&(me=1-me),de.tail=ae._offset+ae._length*me):"paper"===ye?"y"===te?(me=1-me,de.tail=k.t+k.h*me):de.tail=k.l+k.w*me:de.tail=ae._offset+ae.r2p(me),Q=ee}else de.tail=U+me,Q=ee+me;de.text=de.tail+ee;var ve=w["x"===te?"width":"height"];if("paper"===ne&&(de.head=o.constrain(de.head,1,ve-1)),"pixel"===re){var ge=-Math.max(de.tail-3,de.text),be=Math.min(de.tail+3,de.text)-ve;ge>0?(de.tail+=ge,de.text+=ge):be>0&&(de.tail-=be,de.text-=be)}de.tail+=ue,de.head+=ue}else Q=ee=se*Y($,ce),de.text=U+ee;de.text+=ue,ee+=ue,Q+=ue,t["_"+te+"padplus"]=se/2+Q,t["_"+te+"padminus"]=se/2-Q,t["_"+te+"size"]=se,t["_"+te+"shift"]=ee}if(j)X.remove();else{var xe=0,Te=0;if("left"!==t.align&&(xe=(S-x)*("center"===t.align?.5:1)),"top"!==t.valign&&(Te=(N-T)*("middle"===t.valign?.5:1)),d)r.select("svg").attr({x:W+xe-1,y:W+Te}).call(u.setClipUrl,V?P:null,e);else{var we=W+Te-m.top,ke=W+xe-m.left;_.call(f.positionText,ke,we).call(u.setClipUrl,V?P:null,e)}z.select("rect").call(u.setRect,W,W,S,N),G.call(u.setRect,H/2,H/2,D-H,F-H),X.call(u.setTranslate,Math.round(E.x.text-D/2),Math.round(E.y.text-F/2)),O.attr({transform:"rotate("+M+","+E.x.text+","+E.y.text+")"});var Ae,Se=function(n,r){Z.selectAll(".annotation-arrow-g").remove();var s=E.x.head,d=E.y.head,f=E.x.tail+n,p=E.y.tail+r,m=E.x.text+n,x=E.y.text+r,T=o.rotationXYMatrix(M,m,x),w=o.apply2DTransform(T),S=o.apply2DTransform2(T),P=+G.attr("width"),R=+G.attr("height"),N=m-.5*P,H=N+P,D=x-.5*R,W=D+R,V=[[N,D,N,W],[N,W,H,W],[H,W,H,D],[H,D,N,D]].map(S);if(!V.reduce((function(e,t){return e^!!o.segmentsIntersect(s,d,s+1e6,d+1e6,t[0],t[1],t[2],t[3])}),!1)){V.forEach((function(e){var t=o.segmentsIntersect(f,p,s,d,e[0],e[1],e[2],e[3]);t&&(f=t.x,p=t.y)}));var z=t.arrowwidth,F=t.arrowcolor,Y=t.arrowside,_=Z.append("g").style({opacity:c.opacity(F)}).classed("annotation-arrow-g",!0),B=_.append("path").attr("d","M"+f+","+p+"L"+s+","+d).style("stroke-width",z+"px").call(c.stroke,c.rgb(F));if(y(B,Y,t),A.annotationPosition&&B.node().parentNode&&!i){var j=s,K=d;if(t.standoff){var J=Math.sqrt(Math.pow(s-f,2)+Math.pow(d-p,2));j+=t.standoff*(f-s)/J,K+=t.standoff*(p-d)/J}var U,Q,q=_.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(f-j)+","+(p-K),transform:l(j,K)}).style("stroke-width",z+6+"px").call(c.stroke,"rgba(0,0,0,0)").call(c.fill,"rgba(0,0,0,0)");h.init({element:q.node(),gd:e,prepFn:function(){var e=u.getTranslate(X);U=e.x,Q=e.y,v&&v.autorange&&C(v._name+".autorange",!0),b&&b.autorange&&C(b._name+".autorange",!0)},moveFn:function(e,n){var r=w(U,Q),a=r[0]+e,i=r[1]+n;X.call(u.setTranslate,a,i),I("x",g(v,e,"x",k,t)),I("y",g(b,n,"y",k,t)),t.axref===t.xref&&I("ax",g(v,e,"ax",k,t)),t.ayref===t.yref&&I("ay",g(b,n,"ay",k,t)),_.attr("transform",l(e,n)),O.attr({transform:"rotate("+M+","+a+","+i+")"})},doneFn:function(){a.call("_guiRelayout",e,L());var t=document.querySelector(".js-notes-box-panel");t&&t.redraw(t.selectedObj)}})}}};t.showarrow&&Se(0,0),R&&h.init({element:X.node(),gd:e,prepFn:function(){Ae=O.attr("transform")},moveFn:function(e,n){var r="pointer";if(t.showarrow)t.axref===t.xref?I("ax",g(v,e,"ax",k,t)):I("ax",t.ax+e),t.ayref===t.yref?I("ay",g(b,n,"ay",k.w,t)):I("ay",t.ay+n),Se(e,n);else{if(i)return;var a,o;if(v)a=g(v,e,"x",k,t);else{var s=t._xsize/k.w,c=t.x+(t._xshift-t.xshift)/k.w-s/2;a=h.align(c+e/k.w,s,0,1,t.xanchor)}if(b)o=g(b,n,"y",k,t);else{var u=t._ysize/k.h,d=t.y-(t._yshift+t.yshift)/k.h-u/2;o=h.align(d-n/k.h,u,0,1,t.yanchor)}I("x",a),I("y",o),v&&b||(r=h.getCursor(v?.5:a,b?.5:o,t.xanchor,t.yanchor))}O.attr({transform:l(e,n)+Ae}),p(X,r)},clickFn:function(n,r){t.captureevents&&e.emit("plotly_clickannotation",B(r))},doneFn:function(){p(X),a.call("_guiRelayout",e,L());var t=document.querySelector(".js-notes-box-panel");t&&t.redraw(t.selectedObj)}})}}}e.exports={draw:function(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var n=0;n=0,b=t.indexOf("end")>=0,x=h.backoff*y+n.standoff,T=m.backoff*v+n.startstandoff;if("line"===p.nodeName){o={x:+e.attr("x1"),y:+e.attr("y1")},u={x:+e.attr("x2"),y:+e.attr("y2")};var w=o.x-u.x,k=o.y-u.y;if(f=(d=Math.atan2(k,w))+Math.PI,x&&T&&x+T>Math.sqrt(w*w+k*k))return void R();if(x){if(x*x>w*w+k*k)return void R();var A=x*Math.cos(d),S=x*Math.sin(d);u.x+=A,u.y+=S,e.attr({x2:u.x,y2:u.y})}if(T){if(T*T>w*w+k*k)return void R();var C=T*Math.cos(d),I=T*Math.sin(d);o.x-=C,o.y-=I,e.attr({x1:o.x,y1:o.y})}}else if("path"===p.nodeName){var L=p.getTotalLength(),P="";if(L1){c=!0;break}}c?e.fullLayout._infolayer.select(".annotation-"+e.id+'[data-index="'+l+'"]').remove():(s._pdata=a(e.glplot.cameraParams,[t.xaxis.r2l(s.x)*n[0],t.yaxis.r2l(s.y)*n[1],t.zaxis.r2l(s.z)*n[2]]),r(e.graphDiv,s,l,e.id,s._xa,s._ya))}}},80200:function(e,t,n){var r=n(94134),a=n(11005);e.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:n(34955)}}},layoutAttributes:n(34955),handleDefaults:n(19980),includeBasePlot:function(e,t){var n=r.subplotsRegistry.gl3d;if(n)for(var i=n.attrRegex,o=Object.keys(e),l=0;l=0))return e;if(3===o)r[o]>1&&(r[o]=1);else if(r[o]>=1)return e}var l=Math.round(255*r[0])+", "+Math.round(255*r[1])+", "+Math.round(255*r[2]);return i?"rgba("+l+", "+r[3]+")":"rgb("+l+")"}o.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"},o.rgb=function(e){return o.tinyRGB(r(e))},o.opacity=function(e){return e?r(e).getAlpha():0},o.addOpacity=function(e,t){var n=r(e).toRgb();return"rgba("+Math.round(n.r)+", "+Math.round(n.g)+", "+Math.round(n.b)+", "+t+")"},o.combine=function(e,t){var n=r(e).toRgb();if(1===n.a)return r(e).toRgbString();var a=r(t||c).toRgb(),i=1===a.a?a:{r:255*(1-a.a)+a.r*a.a,g:255*(1-a.a)+a.g*a.a,b:255*(1-a.a)+a.b*a.a},o={r:i.r*(1-n.a)+n.r*n.a,g:i.g*(1-n.a)+n.g*n.a,b:i.b*(1-n.a)+n.b*n.a};return r(o).toRgbString()},o.contrast=function(e,t,n){var a=r(e);return 1!==a.getAlpha()&&(a=r(o.combine(e,c))),(a.isDark()?t?a.lighten(t):c:n?a.darken(n):s).toString()},o.stroke=function(e,t){var n=r(t);e.style({stroke:o.tinyRGB(n),"stroke-opacity":n.getAlpha()})},o.fill=function(e,t){var n=r(t);e.style({fill:o.tinyRGB(n),"fill-opacity":n.getAlpha()})},o.clean=function(e){if(e&&"object"==typeof e){var t,n,r,a,l=Object.keys(e);for(t=0;t0?r>=s:r<=s));a++)r>u&&r0?r>=s:r<=s));a++)r>n[0]&&r1){var pe=Math.pow(10,Math.floor(Math.log(fe)/Math.LN10));ue*=pe*c.roundUp(fe/pe,[2,5,10]),(Math.abs(B.start)/B.size+1e-6)%1<2e-6&&(se.tick0=0)}se.dtick=ue}se.domain=o?[oe+Z/D.h,oe+$-Z/D.h]:[oe+M/D.w,oe+$-M/D.w],se.setScale(),e.attr("transform",u(Math.round(D.l),Math.round(D.t)));var he,me=e.select("."+S.cbtitleunshift).attr("transform",u(-Math.round(D.l),-Math.round(D.t))),ye=se.ticklabelposition,ve=se.title.font.size,ge=e.select("."+S.cbaxis),be=0,xe=0;function Te(r,a){var i={propContainer:se,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:H._dfltTitle.colorbar,containerGroup:e.select("."+S.cbtitle)},o="h"===r.charAt(0)?r.substr(1):"h"+r;e.selectAll("."+o+",."+o+"-math-group").remove(),m.draw(n,r,d(i,a||{}))}return c.syncOrAsync([i.previousPromises,function(){var e,t;(o&&ce||!o&&!ce)&&("top"===z&&(e=M+D.l+ee*O,t=Z+D.t+te*(1-oe-$)+3+.75*ve),"bottom"===z&&(e=M+D.l+ee*O,t=Z+D.t+te*(1-oe)-3-.25*ve),"right"===z&&(t=Z+D.t+te*R+3+.75*ve,e=M+D.l+ee*oe),Te(se._id+"title",{attributes:{x:e,y:t,"text-anchor":o?"start":"middle"}}))},function(){if(!o&&!ce||o&&ce){var i,s=e.select("."+S.cbtitle),d=s.select("text"),f=[-C/2,C/2],h=s.select(".h"+se._id+"title-math-group").node(),m=15.6;if(d.node()&&(m=parseInt(d.node().style.fontSize,10)*w),h?(i=p.bBox(h),xe=i.width,(be=i.height)>m&&(f[1]-=(be-m)/2)):d.node()&&!d.classed(S.jsPlaceholder)&&(i=p.bBox(d.node()),xe=i.width,be=i.height),o){if(be){if(be+=5,"top"===z)se.domain[1]-=be/D.h,f[1]*=-1;else{se.domain[0]+=be/D.h;var v=y.lineCount(d);f[1]+=(1-v)*m}s.attr("transform",u(f[0],f[1])),se.setScale()}}else xe&&("right"===z&&(se.domain[0]+=(xe+ve/2)/D.w),s.attr("transform",u(f[0],f[1])),se.setScale())}e.selectAll("."+S.cbfills+",."+S.cblines).attr("transform",o?u(0,Math.round(D.h*(1-se.domain[1]))):u(Math.round(D.w*se.domain[0]),0)),ge.attr("transform",o?u(0,Math.round(-D.t)):u(Math.round(-D.l),0));var g=e.select("."+S.cbfills).selectAll("rect."+S.cbfill).attr("style","").data(K);g.enter().append("rect").classed(S.cbfill,!0).attr("style",""),g.exit().remove();var b=F.map(se.c2p).map(Math.round).sort((function(e,t){return e-t}));g.each((function(e,i){var l=[0===i?F[0]:(K[i]+K[i-1])/2,i===K.length-1?F[1]:(K[i]+K[i+1])/2].map(se.c2p).map(Math.round);o&&(l[1]=c.constrain(l[1]+(l[1]>l[0])?1:-1,b[0],b[1]));var s=r.select(this).attr(o?"x":"y",ne).attr(o?"y":"x",r.min(l)).attr(o?"width":"height",Math.max(U,2)).attr(o?"height":"width",Math.max(r.max(l)-r.min(l),2));if(t._fillgradient)p.gradient(s,n,t._id,o?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var u=_(e).replace("e-","");s.attr("fill",a(u).toHexString())}}));var x=e.select("."+S.cblines).selectAll("path."+S.cbline).data(G.color&&G.width?J:[]);x.enter().append("path").classed(S.cbline,!0),x.exit().remove(),x.each((function(e){var t=ne,n=Math.round(se.c2p(e))+G.width/2%1;r.select(this).attr("d","M"+(o?t+","+n:n+","+t)+(o?"h":"v")+U).call(p.lineGroupStyle,G.width,Y(e),G.dash)})),ge.selectAll("g."+se._id+"tick,path").remove();var T=ne+U+(C||0)/2-("outside"===t.ticks?1:0),k=l.calcTicks(se),A=l.getTickSigns(se)[2];return l.drawTicks(n,se,{vals:"inside"===se.ticks?l.clipEnds(se,k):k,layer:ge,path:l.makeTickPath(se,T,A),transFn:l.makeTransTickFn(se)}),l.drawLabels(n,se,{vals:k,layer:ge,transFn:l.makeTransTickLabelFn(se),labelFns:l.makeLabelFns(se,T)})},function(){if(o&&!ce||!o&&ce){var e,a,i=se.position||0,l=se._offset+se._length/2;if("right"===z)a=l,e=D.l+ee*i+10+ve*(se.showticklabels?1:.5);else if(e=l,"bottom"===z&&(a=D.t+te*i+10+(-1===ye.indexOf("inside")?se.tickfont.size:0)+("intside"!==se.ticks&&t.ticklen||0)),"top"===z){var s=V.text.split("
").length;a=D.t+te*i+10-U-w*ve*s}Te((o?"h":"v")+se._id+"title",{avoid:{selection:r.select(n).selectAll("g."+se._id+"tick"),side:z,offsetTop:o?0:D.t,offsetLeft:o?D.l:0,maxShift:o?H.width:H.height},attributes:{x:e,y:a,"text-anchor":"middle"},transform:{rotate:o?-90:0,offset:0}})}},i.previousPromises,function(){var r,l=U+C/2;-1===ye.indexOf("inside")&&(r=p.bBox(ge.node()),l+=o?r.width:r.height),he=me.select("text");var c=0,d=o&&"top"===z,m=!o&&"right"===z,y=0;if(he.node()&&!he.classed(S.jsPlaceholder)){var g,b=me.select(".h"+se._id+"title-math-group").node();b&&(o&&ce||!o&&!ce)?(c=(r=p.bBox(b)).width,g=r.height):(c=(r=p.bBox(me.node())).right-D.l-(o?ne:le),g=r.bottom-D.t-(o?le:ne),o||"top"!==z||(l+=r.height,y=r.height)),m&&(he.attr("transform",u(c/2+ve/2,0)),c*=2),l=Math.max(l,o?c:g)}var x=2*(o?M:Z)+l+I+C/2,w=0;!o&&V.text&&"bottom"===E&&R<=0&&(x+=w=x/2,y+=w),H._hColorbarMoveTitle=w,H._hColorbarMoveCBTitle=y;var W=I+C,G=(o?ne:le)-W/2-(o?M:0),F=(o?le:ne)-(o?q:Z+y-w);e.select("."+S.cbbg).attr("x",G).attr("y",F).attr(o?"width":"height",Math.max(x-w,2)).attr(o?"height":"width",Math.max(q+W,2)).call(h.fill,L).call(h.stroke,t.bordercolor).style("stroke-width",I);var Y=m?Math.max(c-10,0):0;e.selectAll("."+S.cboutline).attr("x",(o?ne:le+M)+Y).attr("y",(o?le+Z-q:ne)+(d?be:0)).attr(o?"width":"height",Math.max(U,2)).attr(o?"height":"width",Math.max(q-(o?2*Z+be:2*M+Y),2)).call(h.stroke,t.outlinecolor).style({fill:"none","stroke-width":C});var _=o?re*x:0,B=o?0:(1-ae)*x-y;if(_=X?D.l-_:-_,B=N?D.t-B:-B,e.attr("transform",u(_,B)),!o&&(I||a(L).getAlpha()&&!a.equals(H.paper_bgcolor,L))){var j=ge.selectAll("text"),K=j[0].length,J=e.select("."+S.cbbg).node(),Q=p.bBox(J),$=p.getTranslate(e);j.each((function(e,t){var n=K-1;if(0===t||t===n){var r,a=p.bBox(this),i=p.getTranslate(this);if(t===n){var o=a.right+i.x;(r=Q.right+$.x+le-I-2+O-o)>0&&(r=0)}else if(0===t){var l=a.left+i.x;(r=Q.left+$.x+le+I+2-l)<0&&(r=0)}r&&(K<3?this.setAttribute("transform","translate("+r+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}}))}var ee={},te=k[P],ie=A[P],oe=k[E],ue=A[E],de=x-U;o?("pixels"===f?(ee.y=R,ee.t=q*oe,ee.b=q*ue):(ee.t=ee.b=0,ee.yt=R+s*oe,ee.yb=R-s*ue),"pixels"===T?(ee.x=O,ee.l=x*te,ee.r=x*ie):(ee.l=de*te,ee.r=de*ie,ee.xl=O-v*te,ee.xr=O+v*ie)):("pixels"===f?(ee.x=O,ee.l=q*te,ee.r=q*ie):(ee.l=ee.r=0,ee.xl=O+s*te,ee.xr=O-s*ie),"pixels"===T?(ee.y=1-R,ee.t=x*oe,ee.b=x*ue):(ee.t=de*oe,ee.b=de*ue,ee.yt=R-v*oe,ee.yb=R+v*ue));var fe=t.y<.5?"b":"t",pe=t.x<.5?"l":"r";n._fullLayout._reservedMargin[t._id]={};var xe={r:H.width-G-_,l:G+ee.r,b:H.height-F-B,t:F+ee.b};X&&N?i.autoMargin(n,t._id,ee):X?n._fullLayout._reservedMargin[t._id][fe]=xe[fe]:N||o?n._fullLayout._reservedMargin[t._id][pe]=xe[pe]:n._fullLayout._reservedMargin[t._id][fe]=xe[fe]}],n)}(n,t,e);Z&&Z.then&&(e._promises||[]).push(Z),e._context.edits.colorbarPosition&&(v=n,C=e,E="v"===(T=t).orientation,M=C._fullLayout._size,s.init({element:v.node(),gd:C,prepFn:function(){I=v.attr("transform"),f(v)},moveFn:function(e,t){v.attr("transform",I+u(e,t)),L=s.align((E?T._uFrac:T._vFrac)+e/M.w,E?T._thickFrac:T._lenFrac,0,1,T.xanchor),P=s.align((E?T._vFrac:1-T._uFrac)-t/M.h,E?T._lenFrac:T._thickFrac,0,1,T.yanchor);var n=s.getCursor(L,P,T.xanchor,T.yanchor);f(v,n)},doneFn:function(){if(f(v),void 0!==L&&void 0!==P){var e={};e[T._propPrefix+"x"]=L,e[T._propPrefix+"y"]=P,void 0!==T._traceIndex?o.call("_guiRestyle",C,e,T._traceIndex):o.call("_guiRelayout",C,e)}}}))})),t.exit().each((function(t){i.autoMargin(e,t._id)})).remove(),t.order()}}},30230:function(e,t,n){var r=n(11005);e.exports=function(e){return r.isPlainObject(e.colorbar)}},95563:function(e,t,n){e.exports={moduleType:"component",name:"colorbar",attributes:n(63250),supplyDefaults:n(29125),draw:n(22349).draw,hasColorbar:n(30230)}},28663:function(e,t,n){var r=n(63250),a=n(95306).counter,i=n(67606),o=n(79565).scales;function l(e){return"`"+e+"`"}i(o),e.exports=function(e,t){e=e||"";var n,i=(t=t||{}).cLetter||"c",s=("onlyIfNumerical"in t?t.onlyIfNumerical:Boolean(e),"noScale"in t?t.noScale:"marker.line"===e),c="showScaleDflt"in t?t.showScaleDflt:"z"===i,u="string"==typeof t.colorscaleDflt?o[t.colorscaleDflt]:null,d=t.editTypeOverride||"",f=e?e+".":"";"colorAttr"in t?(n=t.colorAttr,t.colorAttr):l(f+(n={z:"z",c:"color"}[i]));var p=i+"auto",h=i+"min",m=i+"max",y=i+"mid",v={};v[h]=v[m]=void 0;var g={};g[p]=!1;var b={};return"color"===n&&(b.color={valType:"color",arrayOk:!0,editType:d||"style"},t.anim&&(b.color.anim=!0)),b[p]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:v},b[h]={valType:"number",dflt:null,editType:d||"plot",impliedEdits:g},b[m]={valType:"number",dflt:null,editType:d||"plot",impliedEdits:g},b[y]={valType:"number",dflt:null,editType:"calc",impliedEdits:v},b.colorscale={valType:"colorscale",editType:"calc",dflt:u,impliedEdits:{autocolorscale:!1}},b.autocolorscale={valType:"boolean",dflt:!1!==t.autoColorDflt,editType:"calc",impliedEdits:{colorscale:void 0}},b.reversescale={valType:"boolean",dflt:!1,editType:"plot"},s||(b.showscale={valType:"boolean",dflt:c,editType:"calc"},b.colorbar=r),t.noColorAxis||(b.coloraxis={valType:"subplotid",regex:a("coloraxis"),dflt:null,editType:"calc"}),b}},50327:function(e,t,n){var r=n(74668),a=n(11005),i=n(47161).extractOpts;e.exports=function(e,t,n){var o,l=e._fullLayout,s=n.vals,c=n.containerStr,u=c?a.nestedProperty(t,c).get():t,d=i(u),f=!1!==d.auto,p=d.min,h=d.max,m=d.mid,y=function(){return a.aggNums(Math.min,null,s)},v=function(){return a.aggNums(Math.max,null,s)};void 0===p?p=y():f&&(p=u._colorAx&&r(p)?Math.min(p,y()):y()),void 0===h?h=v():f&&(h=u._colorAx&&r(h)?Math.max(h,v()):v()),f&&void 0!==m&&(h-m>m-p?p=m-(h-m):h-m=0?l.colorscale.sequential:l.colorscale.sequentialminus,d._sync("colorscale",o))}},88643:function(e,t,n){var r=n(11005),a=n(47161).hasColorscale,i=n(47161).extractOpts;e.exports=function(e,t){function n(e,t){var n=e["_"+t];void 0!==n&&(e[t]=n)}function o(e,a){var o=a.container?r.nestedProperty(e,a.container).get():e;if(o)if(o.coloraxis)o._colorAx=t[o.coloraxis];else{var l=i(o),s=l.auto;(s||void 0===l.min)&&n(o,a.min),(s||void 0===l.max)&&n(o,a.max),l.autocolorscale&&n(o,"colorscale")}}for(var l=0;l=0;r--,a++){var i=e[r];n[a]=[1-i[0],i[1]]}return n}function h(e,t){t=t||{};for(var n=e.domain,o=e.range,s=o.length,c=new Array(s),u=0;u4/3-l?o:l}},8493:function(e,t,n){var r=n(11005),a=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];e.exports=function(e,t,n,i){return e="left"===n?0:"center"===n?1:"right"===n?2:r.constrain(Math.floor(3*e),0,2),t="bottom"===i?0:"middle"===i?1:"top"===i?2:r.constrain(Math.floor(3*t),0,2),a[t][e]}},6442:function(e,t){t.selectMode=function(e){return"lasso"===e||"select"===e},t.drawMode=function(e){return"drawclosedpath"===e||"drawopenpath"===e||"drawline"===e||"drawrect"===e||"drawcircle"===e},t.openMode=function(e){return"drawline"===e||"drawopenpath"===e},t.rectMode=function(e){return"select"===e||"drawline"===e||"drawrect"===e||"drawcircle"===e},t.freeMode=function(e){return"lasso"===e||"drawclosedpath"===e||"drawopenpath"===e},t.selectingOrDrawing=function(e){return t.freeMode(e)||t.rectMode(e)}},96955:function(e,t,n){var r=n(4682),a=n(16075),i=n(78854),o=n(11005).removeElement,l=n(13806),s=e.exports={};s.align=n(57270),s.getCursor=n(8493);var c=n(64528);function u(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}function d(e){return r(e.changedTouches?e.changedTouches[0]:e,document.body)}s.unhover=c.wrapped,s.unhoverRaw=c.raw,s.init=function(e){var t,n,r,c,f,p,h,m,y=e.gd,v=1,g=y._context.doubleClickDelay,b=e.element;y._mouseDownTime||(y._mouseDownTime=0),b.style.pointerEvents="all",b.onmousedown=T,i?(b._ontouchstart&&b.removeEventListener("touchstart",b._ontouchstart),b._ontouchstart=T,b.addEventListener("touchstart",T,{passive:!1})):b.ontouchstart=T;var x=e.clampFn||function(e,t,n){return Math.abs(e)g&&(v=Math.max(v-1,1)),y._dragged)e.doneFn&&e.doneFn();else if(e.clickFn&&e.clickFn(v,p),!m){var n;try{n=new MouseEvent("click",t)}catch(i){var r=d(t);(n=document.createEvent("MouseEvents")).initMouseEvent("click",t.bubbles,t.cancelable,t.view,t.detail,t.screenX,t.screenY,r[0],r[1],t.ctrlKey,t.altKey,t.shiftKey,t.metaKey,t.button,t.relatedTarget)}h.dispatchEvent(n)}y._dragging=!1,y._dragged=!1}else y._dragged=!1}},s.coverSlip=u},64528:function(e,t,n){var r=n(40368),a=n(22253),i=n(1477).getGraphDiv,o=n(11512),l=e.exports={};l.wrapped=function(e,t,n){(e=i(e))._fullLayout&&a.clear(e._fullLayout._uid+o.HOVERID),l.raw(e,t,n)},l.raw=function(e,t){var n=e._fullLayout,a=e._hoverdata;t||(t={}),t.target&&!e._dragged&&!1===r.triggerHandler(e,"plotly_beforehover",t)||(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),e._hoverdata=void 0,t.target&&a&&e.emit("plotly_unhover",{event:t,points:a}))}},53198:function(e,t){t.T={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"},t.k={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}},65967:function(e,t,n){var r=n(12583),a=n(11005),i=a.numberFormat,o=n(74668),l=n(70930),s=n(94134),c=n(45354),u=n(10300),d=a.strTranslate,f=n(59663),p=n(48320),h=n(55862).LINE_SPACING,m=n(41962).DESELECTDIM,y=n(56466),v=n(13707),g=n(25452).appendArrayPointValue,b=e.exports={};function x(e,t,n){var r=t.fillpattern,a=r&&b.getPatternAttr(r.shape,0,"");if(a){var i=b.getPatternAttr(r.bgcolor,0,null),o=b.getPatternAttr(r.fgcolor,0,null),l=r.fgopacity,s=b.getPatternAttr(r.size,0,8),u=b.getPatternAttr(r.solidity,0,.3),d=t.uid;b.pattern(e,"point",n,d,a,s,u,void 0,r.fillmode,i,o,l)}else t.fillcolor&&e.call(c.fill,t.fillcolor)}b.font=function(e,t,n,r){a.isPlainObject(t)&&(r=t.color,n=t.size,t=t.family),t&&e.style("font-family",t),n+1&&e.style("font-size",n+"px"),r&&e.call(c.fill,r)},b.setPosition=function(e,t,n){e.attr("x",t).attr("y",n)},b.setSize=function(e,t,n){e.attr("width",t).attr("height",n)},b.setRect=function(e,t,n,r,a){e.call(b.setPosition,t,n).call(b.setSize,r,a)},b.translatePoint=function(e,t,n,r){var a=n.c2p(e.x),i=r.c2p(e.y);return!!(o(a)&&o(i)&&t.node())&&("text"===t.node().nodeName?t.attr("x",a).attr("y",i):t.attr("transform",d(a,i)),!0)},b.translatePoints=function(e,t,n){e.each((function(e){var a=r.select(this);b.translatePoint(e,a,t,n)}))},b.hideOutsideRangePoint=function(e,t,n,r,a,i){t.attr("display",n.isPtWithinRange(e,a)&&r.isPtWithinRange(e,i)?null:"none")},b.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var n=t.xaxis,a=t.yaxis;e.each((function(t){var i=t[0].trace,o=i.xcalendar,l=i.ycalendar,c=s.traceIs(i,"bar-like")?".bartext":".point,.textpoint";e.selectAll(c).each((function(e){b.hideOutsideRangePoint(e,r.select(this),n,a,o,l)}))}))}},b.crispRound=function(e,t,n){return t&&o(t)?e._context.staticPlot?t:t<1?1:Math.round(t):n||0},b.singleLineStyle=function(e,t,n,r,a){t.style("fill","none");var i=(((e||[])[0]||{}).trace||{}).line||{},o=n||i.width||0,l=a||i.dash||"";c.stroke(t,r||i.color),b.dashLine(t,l,o)},b.lineGroupStyle=function(e,t,n,a){e.style("fill","none").each((function(e){var i=(((e||[])[0]||{}).trace||{}).line||{},o=t||i.width||0,l=a||i.dash||"";r.select(this).call(c.stroke,n||i.color).call(b.dashLine,l,o)}))},b.dashLine=function(e,t,n){n=+n||0,t=b.dashStyle(t,n),e.style({"stroke-dasharray":t,"stroke-width":n+"px"})},b.dashStyle=function(e,t){t=+t||1;var n=Math.max(t,3);return"solid"===e?e="":"dot"===e?e=n+"px,"+n+"px":"dash"===e?e=3*n+"px,"+3*n+"px":"longdash"===e?e=5*n+"px,"+5*n+"px":"dashdot"===e?e=3*n+"px,"+n+"px,"+n+"px,"+n+"px":"longdashdot"===e&&(e=5*n+"px,"+2*n+"px,"+n+"px,"+2*n+"px"),e},b.singleFillStyle=function(e,t){var n=r.select(e.node());x(e,((n.data()[0]||[])[0]||{}).trace||{},t)},b.fillGroupStyle=function(e,t){e.style("stroke-width",0).each((function(e){var n=r.select(this);e[0].trace&&x(n,e[0].trace,t)}))};var T=n(56102);b.symbolNames=[],b.symbolFuncs=[],b.symbolBackOffs=[],b.symbolNeedLines={},b.symbolNoDot={},b.symbolNoFill={},b.symbolList=[],Object.keys(T).forEach((function(e){var t=T[e],n=t.n;b.symbolList.push(n,String(n),e,n+100,String(n+100),e+"-open"),b.symbolNames[n]=e,b.symbolFuncs[n]=t.f,b.symbolBackOffs[n]=t.backoff||0,t.needLine&&(b.symbolNeedLines[n]=!0),t.noDot?b.symbolNoDot[n]=!0:b.symbolList.push(n+200,String(n+200),e+"-dot",n+300,String(n+300),e+"-open-dot"),t.noFill&&(b.symbolNoFill[n]=!0)}));var w=b.symbolNames.length;function k(e,t,n,r){var a=e%100;return b.symbolFuncs[a](t,n,r)+(e>=200?"M0,0.5L0.5,0L0,-0.5L-0.5,0Z":"")}b.symbolNumber=function(e){if(o(e))e=+e;else if("string"==typeof e){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),(e=b.symbolNames.indexOf(e))>=0&&(e+=t)}return e%100>=w||e>=400?0:Math.floor(Math.max(e,0))};var A={x1:1,x2:0,y1:0,y2:0},S={x1:0,x2:0,y1:1,y2:0},C=i("~f"),I={radial:{node:"radialGradient"},radialreversed:{node:"radialGradient",reversed:!0},horizontal:{node:"linearGradient",attrs:A},horizontalreversed:{node:"linearGradient",attrs:A,reversed:!0},vertical:{node:"linearGradient",attrs:S},verticalreversed:{node:"linearGradient",attrs:S,reversed:!0}};b.gradient=function(e,t,n,i,o,s){for(var u=o.length,d=I[i],f=new Array(u),p=0;p=0&&void 0===e.i&&(e.i=o.i),t.style("opacity",r.selectedOpacityFn?r.selectedOpacityFn(e):void 0===e.mo?l.opacity:e.mo),r.ms2mrc){var u;u="various"===e.ms||"various"===l.size?3:r.ms2mrc(e.ms),e.mrc=u,r.selectedSizeFn&&(u=e.mrc=r.selectedSizeFn(e));var d=b.symbolNumber(e.mx||l.symbol)||0;e.om=d%200>=100;var f=ne(e,n),p=_(e,n);t.attr("d",k(d,u,f,p))}var h,m,y,v=!1;if(e.so)y=s.outlierwidth,m=s.outliercolor,h=l.outliercolor;else{var g=(s||{}).width;y=(e.mlw+1||g+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,m="mlc"in e?e.mlcc=r.lineScale(e.mlc):a.isArrayOrTypedArray(s.color)?c.defaultLine:s.color,a.isArrayOrTypedArray(l.color)&&(h=c.defaultLine,v=!0),h="mc"in e?e.mcc=r.markerScale(e.mc):l.color||l.colors||"rgba(0,0,0,0)",r.selectedColorFn&&(h=r.selectedColorFn(e))}if(e.om)t.call(c.stroke,h).style({"stroke-width":(y||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:y)+"px");var x=l.gradient,T=e.mgt;T?v=!0:T=x&&x.type,a.isArrayOrTypedArray(T)&&(T=T[0],I[T]||(T=0));var w=l.pattern,A=w&&b.getPatternAttr(w.shape,e.i,"");if(T&&"none"!==T){var S=e.mgc;S?v=!0:S=x.color;var C=n.uid;v&&(C+="-"+e.i),b.gradient(t,i,C,T,[[0,S],[1,h]],"fill")}else if(A){var L=!1,P=w.fgcolor;!P&&o&&o.color&&(P=o.color,L=!0);var E=b.getPatternAttr(P,e.i,o&&o.color||null),M=b.getPatternAttr(w.bgcolor,e.i,null),Z=w.fgopacity,O=b.getPatternAttr(w.size,e.i,8),R=b.getPatternAttr(w.solidity,e.i,.3);L=L||e.mcc||a.isArrayOrTypedArray(w.shape)||a.isArrayOrTypedArray(w.bgcolor)||a.isArrayOrTypedArray(w.fgcolor)||a.isArrayOrTypedArray(w.size)||a.isArrayOrTypedArray(w.solidity);var N=n.uid;L&&(N+="-"+e.i),b.pattern(t,"point",i,N,A,O,R,e.mcc,w.fillmode,M,E,Z)}else a.isArrayOrTypedArray(h)?c.fill(t,h[e.i]):c.fill(t,h);y&&c.stroke(t,m)}},b.makePointStyleFns=function(e){var t={},n=e.marker;return t.markerScale=b.tryColorscale(n,""),t.lineScale=b.tryColorscale(n,"line"),s.traceIs(e,"symbols")&&(t.ms2mrc=y.isBubble(e)?v(e):function(){return(n.size||6)/2}),e.selectedpoints&&a.extendFlat(t,b.makeSelectedPointStyleFns(e)),t},b.makeSelectedPointStyleFns=function(e){var t={},n=e.selected||{},r=e.unselected||{},i=e.marker||{},o=n.marker||{},l=r.marker||{},c=i.opacity,u=o.opacity,d=l.opacity,f=void 0!==u,p=void 0!==d;(a.isArrayOrTypedArray(c)||f||p)&&(t.selectedOpacityFn=function(e){var t=void 0===e.mo?i.opacity:e.mo;return e.selected?f?u:t:p?d:m*t});var h=i.color,y=o.color,v=l.color;(y||v)&&(t.selectedColorFn=function(e){var t=e.mcc||h;return e.selected?y||t:v||t});var g=i.size,b=o.size,x=l.size,T=void 0!==b,w=void 0!==x;return s.traceIs(e,"symbols")&&(T||w)&&(t.selectedSizeFn=function(e){var t=e.mrc||g/2;return e.selected?T?b/2:t:w?x/2:t}),t},b.makeSelectedTextStyleFns=function(e){var t={},n=e.selected||{},r=e.unselected||{},a=e.textfont||{},i=n.textfont||{},o=r.textfont||{},l=a.color,s=i.color,u=o.color;return t.selectedTextColorFn=function(e){var t=e.tc||l;return e.selected?s||t:u||(s?t:c.addOpacity(t,m))},t},b.selectedPointStyle=function(e,t){if(e.size()&&t.selectedpoints){var n=b.makeSelectedPointStyleFns(t),a=t.marker||{},i=[];n.selectedOpacityFn&&i.push((function(e,t){e.style("opacity",n.selectedOpacityFn(t))})),n.selectedColorFn&&i.push((function(e,t){c.fill(e,n.selectedColorFn(t))})),n.selectedSizeFn&&i.push((function(e,r){var i=r.mx||a.symbol||0,o=n.selectedSizeFn(r);e.attr("d",k(b.symbolNumber(i),o,ne(r,t),_(r,t))),r.mrc2=o})),i.length&&e.each((function(e){for(var t=r.select(this),n=0;n0?n:0}function O(e,t,n){return n&&(e=W(e)),t?N(e[1]):R(e[0])}function R(e){var t=r.round(e,2);return L=t,t}function N(e){var t=r.round(e,2);return P=t,t}function X(e,t,n,r){var a=e[0]-t[0],i=e[1]-t[1],o=n[0]-t[0],l=n[1]-t[1],s=Math.pow(a*a+i*i,.25),c=Math.pow(o*o+l*l,.25),u=(c*c*a-s*s*o)*r,d=(c*c*i-s*s*l)*r,f=3*c*(s+c),p=3*s*(s+c);return[[R(t[0]+(f&&u/f)),N(t[1]+(f&&d/f))],[R(t[0]-(p&&u/p)),N(t[1]-(p&&d/p))]]}b.textPointStyle=function(e,t,n){if(e.size()){var i;if(t.selectedpoints){var o=b.makeSelectedTextStyleFns(t);i=o.selectedTextColorFn}var l=t.texttemplate,s=n._fullLayout;e.each((function(e){var o=r.select(this),c=l?a.extractOption(e,t,"txt","texttemplate"):a.extractOption(e,t,"tx","text");if(c||0===c){if(l){var u=t._module.formatLabels,d=u?u(e,t,s):{},p={};g(p,t,e.i);var h=t._meta||{};c=a.texttemplateString(c,d,s._d3locale,p,e,h)}var m=e.tp||t.textposition,y=Z(e,t),v=i?i(e):e.tc||t.textfont.color;o.call(b.font,e.tf||t.textfont.family,y,v).text(c).call(f.convertToTspans,n).call(M,m,y,e.mrc)}else o.remove()}))}},b.selectedTextStyle=function(e,t){if(e.size()&&t.selectedpoints){var n=b.makeSelectedTextStyleFns(t);e.each((function(e){var a=r.select(this),i=n.selectedTextColorFn(e),o=e.tp||t.textposition,l=Z(e,t);c.fill(a,i);var u=s.traceIs(t,"bar-like");M(a,o,l,e.mrc2||e.mrc,u)}))}},b.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var n,r="M"+e[0],a=[];for(n=1;n=c||w>=d&&w<=c)&&(k<=f&&k>=u||k>=f&&k<=u)&&(e=[w,k])}return e}b.steps=function(e){var t=H[e]||D;return function(e){for(var n="M"+R(e[0][0])+","+N(e[0][1]),r=e.length,a=1;a=1e4&&(b.savedBBoxes={},G=0),n&&(b.savedBBoxes[n]=y),G++,a.extendFlat({},y)},b.setClipUrl=function(e,t,n){e.attr("clip-path",z(t,n))},b.getTranslate=function(e){var t=(e[e.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,(function(e,t,n){return[t,n].join(" ")})).split(" ");return{x:+t[0]||0,y:+t[1]||0}},b.setTranslate=function(e,t,n){var r=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",i=e[r]("transform")||"";return t=t||0,n=n||0,i=i.replace(/(\btranslate\(.*?\);?)/,"").trim(),i=(i+=d(t,n)).trim(),e[a]("transform",i),i},b.getScale=function(e){var t=(e[e.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,(function(e,t,n){return[t,n].join(" ")})).split(" ");return{x:+t[0]||1,y:+t[1]||1}},b.setScale=function(e,t,n){var r=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",i=e[r]("transform")||"";return t=t||1,n=n||1,i=i.replace(/(\bscale\(.*?\);?)/,"").trim(),i=(i+="scale("+t+","+n+")").trim(),e[a]("transform",i),i};var F=/\s*sc.*/;b.setPointGroupScale=function(e,t,n){if(t=t||1,n=n||1,e){var r=1===t&&1===n?"":"scale("+t+","+n+")";e.each((function(){var e=(this.getAttribute("transform")||"").replace(F,"");e=(e+=r).trim(),this.setAttribute("transform",e)}))}};var Y=/translate\([^)]*\)\s*$/;function _(e,t){var n;return e&&(n=e.mf),void 0===n&&(n=t.marker&&t.marker.standoff||0),t._geo||t._xA?n:-n}b.setTextPointsScale=function(e,t,n){e&&e.each((function(){var e,a=r.select(this),i=a.select("text");if(i.node()){var o=parseFloat(i.attr("x")||0),l=parseFloat(i.attr("y")||0),s=(a.attr("transform")||"").match(Y);e=1===t&&1===n?[]:[d(o,l),"scale("+t+","+n+")",d(-o,-l)],s&&e.push(s),a.attr("transform",e.join(""))}}))},b.getMarkerStandoff=_;var B,j,K,J,U,Q,q=Math.atan2,$=Math.cos,ee=Math.sin;function te(e,t){var n=t[0],r=t[1];return[n*$(e)-r*ee(e),n*ee(e)+r*$(e)]}function ne(e,t){var n,r,i=e.ma;void 0===i&&((i=t.marker.angle)&&!a.isArrayOrTypedArray(i)||(i=0));var l=t.marker.angleref;if("previous"===l||"north"===l){if(t._geo){var s=t._geo.project(e.lonlat);n=s[0],r=s[1]}else{var c=t._xA,u=t._yA;if(!c||!u)return 90;n=c.c2p(e.x),r=u.c2p(e.y)}if(t._geo){var d,f=e.lonlat[0],p=e.lonlat[1],h=t._geo.project([f,p+1e-5]),m=t._geo.project([f+1e-5,p]),y=q(m[1]-r,m[0]-n),v=q(h[1]-r,h[0]-n);if("north"===l)d=i/180*Math.PI;else if("previous"===l){var g=f/180*Math.PI,b=p/180*Math.PI,x=B/180*Math.PI,T=j/180*Math.PI,w=x-g,k=$(T)*ee(w),A=ee(T)*$(b)-$(T)*ee(b)*$(w);d=-q(k,A)-Math.PI,B=f,j=p}var S=te(y,[$(d),0]),C=te(v,[ee(d),0]);i=q(S[1]+C[1],S[0]+C[0])/Math.PI*180,"previous"!==l||Q===t.uid&&e.i===U+1||(i=null)}if("previous"===l&&!t._geo)if(Q===t.uid&&e.i===U+1&&o(n)&&o(r)){var I=n-K,L=r-J,P=t.line&&t.line.shape||"",E=P.slice(P.length-1);"h"===E&&(L=0),"v"===E&&(I=0),i+=q(L,I)/Math.PI*180+90}else i=null}return K=n,J=r,U=e.i,Q=t.uid,i}b.getMarkerAngle=ne},56102:function(e,t,n){var r,a,i,o,l=n(28092),s=n(12583).round,c="M0,0Z",u=Math.sqrt(2),d=Math.sqrt(3),f=Math.PI,p=Math.cos,h=Math.sin;function m(e){return null===e}function y(e,t,n){if(!(e&&e%360!=0||t))return n;if(i===e&&o===t&&r===n)return a;function s(e,n){var r=p(e),a=h(e),i=n[0],o=n[1]+(t||0);return[i*r-o*a,i*a+o*r]}i=e,o=t,r=n;for(var c=e/180*f,u=0,d=0,m=l(n),y="",v=0;v0,d=e._context.staticPlot;t.each((function(t){var f,p=t[0].trace,h=p.error_x||{},m=p.error_y||{};p.ids&&(f=function(e){return e.id});var y=o.hasMarkers(p)&&p.marker.maxdisplayed>0;m.visible||h.visible||(t=[]);var v=r.select(this).selectAll("g.errorbar").data(t,f);if(v.exit().remove(),t.length){h.visible||v.selectAll("path.xerror").remove(),m.visible||v.selectAll("path.yerror").remove(),v.style("opacity",1);var g=v.enter().append("g").classed("errorbar",!0);u&&g.style("opacity",0).transition().duration(l.duration).style("opacity",1),i.setClipUrl(v,n.layerClipId,e),v.each((function(e){var t,n,i,o,f=r.select(this),p=(t=e,i=c,o={x:(n=s).c2p(t.x),y:i.c2p(t.y)},void 0!==t.yh&&(o.yh=i.c2p(t.yh),o.ys=i.c2p(t.ys),a(o.ys)||(o.noYS=!0,o.ys=i.c2p(t.ys,!0))),void 0!==t.xh&&(o.xh=n.c2p(t.xh),o.xs=n.c2p(t.xs),a(o.xs)||(o.noXS=!0,o.xs=n.c2p(t.xs,!0))),o);if(!y||e.vis){var v,g=f.select("path.yerror");if(m.visible&&a(p.x)&&a(p.yh)&&a(p.ys)){var b=m.width;v="M"+(p.x-b)+","+p.yh+"h"+2*b+"m-"+b+",0V"+p.ys,p.noYS||(v+="m-"+b+",0h"+2*b),g.size()?u&&(g=g.transition().duration(l.duration).ease(l.easing)):g=f.append("path").style("vector-effect",d?"none":"non-scaling-stroke").classed("yerror",!0),g.attr("d",v)}else g.remove();var x=f.select("path.xerror");if(h.visible&&a(p.y)&&a(p.xh)&&a(p.xs)){var T=(h.copy_ystyle?m:h).width;v="M"+p.xh+","+(p.y-T)+"v"+2*T+"m0,-"+T+"H"+p.xs,p.noXS||(v+="m0,-"+T+"v"+2*T),x.size()?u&&(x=x.transition().duration(l.duration).ease(l.easing)):x=f.append("path").style("vector-effect",d?"none":"non-scaling-stroke").classed("xerror",!0),x.attr("d",v)}else x.remove()}}))}}))}},58564:function(e,t,n){var r=n(12583),a=n(45354);e.exports=function(e){e.each((function(e){var t=e[0].trace,n=t.error_y||{},i=t.error_x||{},o=r.select(this);o.selectAll("path.yerror").style("stroke-width",n.thickness+"px").call(a.stroke,n.color),i.copy_ystyle&&(i=n),o.selectAll("path.xerror").style("stroke-width",i.thickness+"px").call(a.stroke,i.color)}))}},79740:function(e,t,n){var r=n(69133),a=n(31287).hoverlabel,i=n(60821).extendFlat;e.exports={hoverlabel:{bgcolor:i({},a.bgcolor,{arrayOk:!0}),bordercolor:i({},a.bordercolor,{arrayOk:!0}),font:r({arrayOk:!0,editType:"none"}),align:i({},a.align,{arrayOk:!0}),namelength:i({},a.namelength,{arrayOk:!0}),editType:"none"}}},20124:function(e,t,n){var r=n(11005),a=n(94134);function i(e,t,n,a){a=a||r.identity,Array.isArray(e)&&(t[0][n]=a(e))}e.exports=function(e){var t=e.calcdata,n=e._fullLayout;function o(e){return function(t){return r.coerceHoverinfo({hoverinfo:t},{_module:e._module},n)}}for(var l=0;l=0&&n.indexT[0]._length||se<0||se>w[0]._length)return h.unhoverRaw(e,t)}else le="xpx"in t?t.xpx:T[0]._length/2,se="ypx"in t?t.ypx:w[0]._length/2;if(t.pointerX=le+T[0]._offset,t.pointerY=se+w[0]._offset,Y="xval"in t?v.flat(s,t.xval):v.p2c(T,le),_="yval"in t?v.flat(s,t.yval):v.p2c(w,se),!a(Y[0])||!a(_[0]))return o.warn("Fx.hover failed",t,e),h.unhoverRaw(e,t)}var de=1/0;function fe(e,n){for(j=0;jne&&(re.splice(0,ne),de=re[0].distance),g&&0!==F&&0===re.length){te.distance=F,te.index=!1;var d=J._module.hoverPoints(te,$,ee,"closest",{hoverLayer:u._hoverlayer});if(d&&(d=d.filter((function(e){return e.spikeDistance<=F}))),d&&d.length){var f,h=d.filter((function(e){return e.xa.showspikes&&"hovered data"!==e.xa.spikesnap}));if(h.length){var m=h[0];a(m.x0)&&a(m.y0)&&(f=he(m),(!ie.vLinePoint||ie.vLinePoint.spikeDistance>f.spikeDistance)&&(ie.vLinePoint=f))}var y=d.filter((function(e){return e.ya.showspikes&&"hovered data"!==e.ya.spikesnap}));if(y.length){var b=y[0];a(b.x0)&&a(b.y0)&&(f=he(b),(!ie.hLinePoint||ie.hLinePoint.spikeDistance>f.spikeDistance)&&(ie.hLinePoint=f))}}}}}function pe(e,t,n){for(var r,a=null,i=1/0,o=0;o0&&Math.abs(e.distance)Se-1;Ce--)Ee(re[Ce]);re=Ie,ge()}var Me=e._hoverdata,Ze=[],Oe=V(e),Re=z(e);for(B=0;B1||re.length>1)||"closest"===O&&oe&&re.length>1,je=p.combine(u.plot_bgcolor||p.background,u.paper_bgcolor),Ke=Z(re,{gd:e,hovermode:O,rotateLabels:Be,bgColor:je,container:u._hoverlayer,outerContainer:u._paper.node(),commonLabelOpts:u.hoverlabel,hoverdistance:u.hoverdistance}),Je=Ke.hoverLabels;if(v.isUnifiedHover(O)||(function(e,t,n,r){var a,i,o,l,s,c,u,d=t?"xa":"ya",f=t?"ya":"xa",p=0,h=1,m=e.size(),y=new Array(m),v=0,g=r.minX,b=r.maxX,x=r.minY,T=r.maxY,w=function(e){return e*n._invScaleX},A=function(e){return e*n._invScaleY};function S(e){var t=e[0],n=e[e.length-1];if(i=t.pmin-t.pos-t.dp+t.size,o=n.pos+n.dp+n.size-t.pmax,i>.01){for(s=e.length-1;s>=0;s--)e[s].dp+=i;a=!1}if(!(o<.01)){if(i<-.01){for(s=e.length-1;s>=0;s--)e[s].dp-=o;a=!1}if(a){var r=0;for(l=0;lt.pmax&&r++;for(l=e.length-1;l>=0&&!(r<=0);l--)(c=e[l]).pos>t.pmax-1&&(c.del=!0,r--);for(l=0;l=0;s--)e[s].dp-=o;for(l=e.length-1;l>=0&&!(r<=0);l--)(c=e[l]).pos+c.dp+c.size>t.pmax&&(c.del=!0,r--)}}}for(e.each((function(e){var r=e[d],a=e[f],i="x"===r._id.charAt(0),o=r.range;0===v&&o&&o[0]>o[1]!==i&&(h=-1);var l=0,s=i?n.width:n.height;if("x"===n.hovermode||"y"===n.hovermode){var c,u,p=R(e,t),m=e.anchor,S="end"===m?-1:1;if("middle"===m)u=(c=e.crossPos+(i?A(p.y-e.by/2):w(e.bx/2+e.tx2width/2)))+(i?A(e.by):w(e.bx));else if(i)u=(c=e.crossPos+A(C+p.y)-A(e.by/2-C))+A(e.by);else{var I=w(S*C+p.x),L=I+w(S*e.bx);c=e.crossPos+Math.min(I,L),u=e.crossPos+Math.max(I,L)}i?void 0!==x&&void 0!==T&&Math.min(u,T)-Math.max(c,x)>1&&("left"===a.side?(l=a._mainLinePosition,s=n.width):s=a._mainLinePosition):void 0!==g&&void 0!==b&&Math.min(u,b)-Math.max(c,g)>1&&("top"===a.side?(l=a._mainLinePosition,s=n.height):s=a._mainLinePosition)}y[v++]=[{datum:e,traceIndex:e.trace.index,dp:0,pos:e.pos,posref:e.posref,size:e.by*(i?k:1)/2,pmin:l,pmax:s}]})),y.sort((function(e,t){return e[0].posref-t[0].posref||h*(t[0].traceIndex-e[0].traceIndex)}));!a&&p<=m;){for(p++,a=!0,l=0;l.01&&P.pmin===E.pmin&&P.pmax===E.pmax){for(s=L.length-1;s>=0;s--)L[s].dp+=i;for(I.push.apply(I,L),y.splice(l+1,1),u=0,s=I.length-1;s>=0;s--)u+=I[s].dp;for(o=u/I.length,s=I.length-1;s>=0;s--)I[s].dp-=o;a=!1}else l++}y.forEach(S)}for(l=y.length-1;l>=0;l--){var M=y[l];for(s=M.length-1;s>=0;s--){var Z=M[s],O=Z.datum;O.offset=Z.dp,O.del=Z.del}}}(Je,Be,u,Ke.commonLabelBoundingBox),N(Je,Be,u._invScaleX,u._invScaleY)),l&&l.tagName){var Ue=y.getComponentMethod("annotations","hasClickToShow")(e,Ze);d(r.select(l),Ue?"pointer":"")}l&&!i&&function(e,t,n){if(!n||n.length!==e._hoverdata.length)return!0;for(var r=n.length-1;r>=0;r--){var a=n[r],i=e._hoverdata[r];if(a.curveNumber!==i.curveNumber||String(a.pointNumber)!==String(i.pointNumber)||String(a.pointNumbers)!==String(i.pointNumbers))return!0}return!1}(e,0,Me)&&(Me&&e.emit("plotly_unhover",{event:t,points:Me}),e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:T,yaxes:w,xvals:Y,yvals:_}))}(e,t,n,i,l)}))},t.loneHover=function(e,t){var n=!0;Array.isArray(e)||(n=!1,e=[e]);var a=t.gd,i=V(a),o=z(a),l=!1,s=Z(e.map((function(e){var n=e._x0||e.x0||e.x||0,r=e._x1||e.x1||e.x||0,l=e._y0||e.y0||e.y||0,s=e._y1||e.y1||e.y||0,c=e.eventData;if(c){var u=Math.min(n,r),d=Math.max(n,r),f=Math.min(l,s),h=Math.max(l,s),m=e.trace;if(y.traceIs(m,"gl3d")){var v=a._fullLayout[m.scene]._scene.container,g=v.offsetLeft,b=v.offsetTop;u+=g,d+=g,f+=b,h+=b}c.bbox={x0:u+o,x1:d+o,y0:f+i,y1:h+i},t.inOut_bbox&&t.inOut_bbox.push(c.bbox)}else c=!1;return{color:e.color||p.defaultLine,x0:e.x0||e.x||0,x1:e.x1||e.x||0,y0:e.y0||e.y||0,y1:e.y1||e.y||0,xLabel:e.xLabel,yLabel:e.yLabel,zLabel:e.zLabel,text:e.text,name:e.name,idealAlign:e.idealAlign,borderColor:e.borderColor,fontFamily:e.fontFamily,fontSize:e.fontSize,fontColor:e.fontColor,nameLength:e.nameLength,textAlign:e.textAlign,trace:e.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:e.hovertemplate||!1,hovertemplateLabels:e.hovertemplateLabels||!1,eventData:c}})),{gd:a,hovermode:"closest",rotateLabels:l,bgColor:t.bgColor||p.background,container:r.select(t.container),outerContainer:t.outerContainer||t.container}).hoverLabels,c=0,u=0;return s.sort((function(e,t){return e.y0-t.y0})).each((function(e,n){var r=e.y0-e.by/2;e.offset=r-5([\s\S]*)<\/extra>/;function Z(e,t){var n=t.gd,a=n._fullLayout,i=t.hovermode,c=t.rotateLabels,d=t.bgColor,h=t.container,m=t.outerContainer,w=t.commonLabelOpts||{};if(0===e.length)return[[]];var k=t.fontFamily||g.HOVERFONT,A=t.fontSize||g.HOVERFONTSIZE,S=e[0],L=S.xa,P=S.ya,M=i.charAt(0),Z=M+"Label",R=S[Z];if(void 0===R&&"multicategory"===L.type)for(var N=0;Na.width-x?(y=a.width-x,t.attr("d","M"+(x-C)+",0L"+x+","+b+C+"v"+b+(2*I+g.height)+"H-"+x+"V"+b+C+"H"+(x-2*C)+"Z")):t.attr("d","M0,0L"+C+","+b+C+"H"+x+"v"+b+(2*I+g.height)+"H-"+x+"V"+b+C+"H-"+C+"Z"),j.minX=y-x,j.maxX=y+x,"top"===L.side?(j.minY=v-(2*I+g.height),j.maxY=v-I):(j.minY=v+I,j.maxY=v+(2*I+g.height))}else{var T,E,M;"right"===P.side?(T="start",E=1,M="",y=L._offset+L._length):(T="end",E=-1,M="-",y=L._offset),v=P._offset+(S.y0+S.y1)/2,s.attr("text-anchor",T),t.attr("d","M0,0L"+M+C+","+C+"V"+(I+g.height/2)+"h"+M+(2*I+g.width)+"V-"+(I+g.height/2)+"H"+M+C+"V-"+C+"Z"),j.minY=v-(I+g.height/2),j.maxY=v+(I+g.height/2),"right"===P.side?(j.minX=y+C,j.maxX=y+C+(2*I+g.width)):(j.minX=y-C-(2*I+g.width),j.maxX=y-C);var Z,O=g.height/2,N=H-g.top-O,X="clip"+a._uid+"commonlabel"+P._id;if(y=0?se:ce+fe=0?ce:xe+fe=0?oe:le+pe=0?le:Te+pe=0,"top"!==e.idealAlign&&_||!B?_?(Z+=X/2,e.anchor="start"):e.anchor="middle":(Z-=X/2,e.anchor="end"),e.crossPos=Z;else{if(e.pos=Z,_=M+N/2+j<=D,B=M-N/2-j>=0,"left"!==e.idealAlign&&_||!B)if(_)M+=N/2,e.anchor="start";else{e.anchor="middle";var K=j/2,J=M+K-D,U=M-K;J>0&&(M-=J),U<0&&(M+=-U)}else M-=N/2,e.anchor="end";e.crossPos=M}w.attr("text-anchor",e.anchor),L&&S.attr("text-anchor",e.anchor),t.attr("transform",l(M,Z)+(c?s(T):""))})),{hoverLabels:we,commonLabelBoundingBox:j}}function O(e,t,n,r,a,i){var l="",s="";void 0!==e.nameOverride&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=o.templateString(e.name,e.trace._meta)),l=W(e.name,e.nameLength));var c=n.charAt(0),u="x"===c?"y":"x";void 0!==e.zLabel?(void 0!==e.xLabel&&(s+="x: "+e.xLabel+"
"),void 0!==e.yLabel&&(s+="y: "+e.yLabel+"
"),"choropleth"!==e.trace.type&&"choroplethmapbox"!==e.trace.type&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[c+"Label"]===a?s=e[u+"Label"]||"":void 0===e.xLabel?void 0!==e.yLabel&&"scattercarpet"!==e.trace.type&&(s=e.yLabel):s=void 0===e.yLabel?e.xLabel:"("+e.xLabel+", "+e.yLabel+")",!e.text&&0!==e.text||Array.isArray(e.text)||(s+=(s?"
":"")+e.text),void 0!==e.extraText&&(s+=(s?"
":"")+e.extraText),i&&""===s&&!e.hovertemplate&&(""===l&&i.remove(),s=l);var d=e.hovertemplate||!1;if(d){var f=e.hovertemplateLabels||e;e[c+"Label"]!==a&&(f[c+"other"]=f[c+"Val"],f[c+"otherLabel"]=f[c+"Label"]),s=(s=o.hovertemplateString(d,f,r._d3locale,e.eventData[0]||{},e.trace._meta)).replace(M,(function(t,n){return l=W(n,e.nameLength),""}))}return[s,l]}function R(e,t){var n=0,r=e.offset;return t&&(r*=-S,n=e.offset*A),{x:n,y:r}}function N(e,t,n,a){var i=function(e){return e*n},o=function(e){return e*a};e.each((function(e){var n=r.select(this);if(e.del)return n.remove();var a,l,s,c,d=n.select("text.nums"),p=e.anchor,h="end"===p?-1:1,m=(c=(s=(l={start:1,end:-1,middle:0}[(a=e).anchor])*(C+I))+l*(a.txwidth+I),"middle"===a.anchor&&(s-=a.tx2width/2,c+=a.txwidth/2+I),{alignShift:l,textShiftX:s,text2ShiftX:c}),y=R(e,t),v=y.x,g=y.y,b="middle"===p;n.select("path").attr("d",b?"M-"+i(e.bx/2+e.tx2width/2)+","+o(g-e.by/2)+"h"+i(e.bx)+"v"+o(e.by)+"h-"+i(e.bx)+"Z":"M0,0L"+i(h*C+v)+","+o(C+g)+"v"+o(e.by/2-C)+"h"+i(h*e.bx)+"v-"+o(e.by)+"H"+i(h*C+v)+"V"+o(g-C)+"Z");var x=v+m.textShiftX,T=g+e.ty0-e.by/2+I,w=e.textAlign||"auto";"auto"!==w&&("left"===w&&"start"!==p?(d.attr("text-anchor","start"),x=b?-e.bx/2-e.tx2width/2+I:-e.bx-I):"right"===w&&"end"!==p&&(d.attr("text-anchor","end"),x=b?e.bx/2-e.tx2width/2-I:e.bx+I)),d.call(u.positionText,i(x),o(T)),e.tx2width&&(n.select("text.name").call(u.positionText,i(m.text2ShiftX+m.alignShift*I+v),o(g+e.ty0-e.by/2+I)),n.select("rect").call(f.setRect,i(m.text2ShiftX+(m.alignShift-1)*e.tx2width/2+v),o(g-e.by/2-1),i(e.tx2width),o(e.by+2)))}))}function X(e,t){var n=e.index,r=e.trace||{},i=e.cd[0],l=e.cd[n]||{};function s(e){return e||a(e)&&0===e}var c=Array.isArray(n)?function(e,t){var a=o.castOption(i,n,e);return s(a)?a:o.extractOption({},r,"",t)}:function(e,t){return o.extractOption(l,r,e,t)};function u(t,n,r){var a=c(n,r);s(a)&&(e[t]=a)}if(u("hoverinfo","hi","hoverinfo"),u("bgcolor","hbg","hoverlabel.bgcolor"),u("borderColor","hbc","hoverlabel.bordercolor"),u("fontFamily","htf","hoverlabel.font.family"),u("fontSize","hts","hoverlabel.font.size"),u("fontColor","htc","hoverlabel.font.color"),u("nameLength","hnl","hoverlabel.namelength"),u("textAlign","hta","hoverlabel.align"),e.posref="y"===t||"closest"===t&&"h"===r.orientation?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=o.constrain(e.x0,0,e.xa._length),e.x1=o.constrain(e.x1,0,e.xa._length),e.y0=o.constrain(e.y0,0,e.ya._length),e.y1=o.constrain(e.y1,0,e.ya._length),void 0!==e.xLabelVal&&(e.xLabel="xLabel"in e?e.xLabel:m.hoverLabelText(e.xa,e.xLabelVal,r.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),void 0!==e.yLabelVal&&(e.yLabel="yLabel"in e?e.yLabel:m.hoverLabelText(e.ya,e.yLabelVal,r.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),void 0!==e.zLabelVal&&void 0===e.zLabel&&(e.zLabel=String(e.zLabelVal)),!(isNaN(e.xerr)||"log"===e.xa.type&&e.xerr<=0)){var d=m.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;void 0!==e.xerrneg?e.xLabel+=" +"+d+" / -"+m.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" ± "+d,"x"===t&&(e.distance+=1)}if(!(isNaN(e.yerr)||"log"===e.ya.type&&e.yerr<=0)){var f=m.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;void 0!==e.yerrneg?e.yLabel+=" +"+f+" / -"+m.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" ± "+f,"y"===t&&(e.distance+=1)}var p=e.hoverinfo||e.trace.hoverinfo;return p&&"all"!==p&&(-1===(p=Array.isArray(p)?p:p.split("+")).indexOf("x")&&(e.xLabel=void 0),-1===p.indexOf("y")&&(e.yLabel=void 0),-1===p.indexOf("z")&&(e.zLabel=void 0),-1===p.indexOf("text")&&(e.text=void 0),-1===p.indexOf("name")&&(e.name=void 0)),e}function H(e,t,n){var r,a,o=n.container,l=n.fullLayout,s=l._size,c=n.event,u=!!t.hLinePoint,d=!!t.vLinePoint;if(o.selectAll(".spikeline").remove(),d||u){var h=p.combine(l.plot_bgcolor,l.paper_bgcolor);if(u){var y,v,g=t.hLinePoint;r=g&&g.xa,"cursor"===(a=g&&g.ya).spikesnap?(y=c.pointerX,v=c.pointerY):(y=r._offset+g.x,v=a._offset+g.y);var b,x,T=i.readability(g.color,h)<1.5?p.contrast(h):g.color,w=a.spikemode,k=a.spikethickness,A=a.spikecolor||T,S=m.getPxPosition(e,a);if(-1!==w.indexOf("toaxis")||-1!==w.indexOf("across")){if(-1!==w.indexOf("toaxis")&&(b=S,x=y),-1!==w.indexOf("across")){var C=a._counterDomainMin,I=a._counterDomainMax;"free"===a.anchor&&(C=Math.min(C,a.position),I=Math.max(I,a.position)),b=s.l+C*s.w,x=s.l+I*s.w}o.insert("line",":first-child").attr({x1:b,x2:x,y1:v,y2:v,"stroke-width":k,stroke:A,"stroke-dasharray":f.dashStyle(a.spikedash,k)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:b,x2:x,y1:v,y2:v,"stroke-width":k+2,stroke:h}).classed("spikeline",!0).classed("crisp",!0)}-1!==w.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:S+("right"!==a.side?k:-k),cy:v,r:k,fill:A}).classed("spikeline",!0)}if(d){var L,P,E=t.vLinePoint;r=E&&E.xa,a=E&&E.ya,"cursor"===r.spikesnap?(L=c.pointerX,P=c.pointerY):(L=r._offset+E.x,P=a._offset+E.y);var M,Z,O=i.readability(E.color,h)<1.5?p.contrast(h):E.color,R=r.spikemode,N=r.spikethickness,X=r.spikecolor||O,H=m.getPxPosition(e,r);if(-1!==R.indexOf("toaxis")||-1!==R.indexOf("across")){if(-1!==R.indexOf("toaxis")&&(M=H,Z=P),-1!==R.indexOf("across")){var D=r._counterDomainMin,W=r._counterDomainMax;"free"===r.anchor&&(D=Math.min(D,r.position),W=Math.max(W,r.position)),M=s.t+(1-W)*s.h,Z=s.t+(1-D)*s.h}o.insert("line",":first-child").attr({x1:L,x2:L,y1:M,y2:Z,"stroke-width":N,stroke:X,"stroke-dasharray":f.dashStyle(r.spikedash,N)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:L,x2:L,y1:M,y2:Z,"stroke-width":N+2,stroke:h}).classed("spikeline",!0).classed("crisp",!0)}-1!==R.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:L,cy:H-("top"!==r.side?N:-N),r:N,fill:X}).classed("spikeline",!0)}}}function D(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function W(e,t){return u.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em"]})}function G(e,t,n){var r=t[e+"a"],a=t[e+"Val"],i=t.cd[0];if("category"===r.type||"multicategory"===r.type)a=r._categoriesMap[a];else if("date"===r.type){var o=t.trace[e+"periodalignment"];if(o){var l=t.cd[t.index],s=l[e+"Start"];void 0===s&&(s=l[e]);var c=l[e+"End"];void 0===c&&(c=l[e]);var u=c-s;"end"===o?a+=u:"middle"===o&&(a+=u/2)}a=r.d2c(a)}return i&&i.t&&i.t.posLetter===r._id&&("group"!==n.boxmode&&"group"!==n.violinmode||(a+=i.t.dPos)),a}function V(e){return e.offsetTop+e.clientTop}function z(e){return e.offsetLeft+e.clientLeft}function F(e,t){var n=e._fullLayout,r=t.getBoundingClientRect(),a=r.left,i=r.top,l=a+r.width,s=i+r.height,c=o.apply3DTransform(n._invTransform)(a,i),u=o.apply3DTransform(n._invTransform)(l,s),d=c[0],f=c[1],p=u[0],h=u[1];return{x:d,y:f,width:p-d,height:h-f,top:Math.min(f,h),left:Math.min(d,p),right:Math.max(d,p),bottom:Math.max(f,h)}}},49842:function(e,t,n){var r=n(11005),a=n(45354),i=n(25452).isUnifiedHover;e.exports=function(e,t,n,o){o=o||{};var l=t.legend;function s(e){o.font[e]||(o.font[e]=l?t.legend.font[e]:t.font[e])}t&&i(t.hovermode)&&(o.font||(o.font={}),s("size"),s("family"),s("color"),l?(o.bgcolor||(o.bgcolor=a.combine(t.legend.bgcolor,t.paper_bgcolor)),o.bordercolor||(o.bordercolor=t.legend.bordercolor)):o.bgcolor||(o.bgcolor=t.paper_bgcolor)),n("hoverlabel.bgcolor",o.bgcolor),n("hoverlabel.bordercolor",o.bordercolor),n("hoverlabel.namelength",o.namelength),r.coerceFont(n,"hoverlabel.font",o.font),n("hoverlabel.align",o.align)}},29701:function(e,t,n){var r=n(11005),a=n(31287);e.exports=function(e,t){function n(n,i){return void 0!==t[n]?t[n]:r.coerce(e,t,a,n,i)}return n("clickmode"),n("hovermode")}},13169:function(e,t,n){var r=n(12583),a=n(11005),i=n(96955),o=n(25452),l=n(31287),s=n(9227);e.exports={moduleType:"component",name:"fx",constants:n(11512),schema:{layout:l},attributes:n(79740),layoutAttributes:l,supplyLayoutGlobalDefaults:n(76834),supplyDefaults:n(37515),supplyLayoutDefaults:n(38064),calc:n(20124),getDistanceFunction:o.getDistanceFunction,getClosest:o.getClosest,inbox:o.inbox,quadrature:o.quadrature,appendArrayPointValue:o.appendArrayPointValue,castHoverOption:function(e,t,n){return a.castOption(e,t,"hoverlabel."+n)},castHoverinfo:function(e,t,n){return a.castOption(e,n,"hoverinfo",(function(n){return a.coerceHoverinfo({hoverinfo:n},{_module:e._module},t)}))},hover:s.hover,unhover:i.unhover,loneHover:s.loneHover,loneUnhover:function(e){var t=a.isD3Selection(e)?e:r.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()},click:n(94565)}},31287:function(e,t,n){var r=n(11512),a=n(69133),i=a({editType:"none"});i.family.dflt=r.HOVERFONT,i.size.dflt=r.HOVERFONTSIZE,e.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:i,grouptitlefont:a({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}},38064:function(e,t,n){var r=n(11005),a=n(31287),i=n(29701),o=n(49842);e.exports=function(e,t){function n(n,i){return r.coerce(e,t,a,n,i)}i(e,t)&&(n("hoverdistance"),n("spikedistance")),"select"===n("dragmode")&&n("selectdirection");var l=t._has("mapbox"),s=t._has("geo"),c=t._basePlotModules.length;"zoom"===t.dragmode&&((l||s)&&1===c||l&&s&&2===c)&&(t.dragmode="pan"),o(e,t,n),r.coerceFont(n,"hoverlabel.grouptitlefont",t.hoverlabel.font)}},76834:function(e,t,n){var r=n(11005),a=n(49842),i=n(31287);e.exports=function(e,t){a(e,t,(function(n,a){return r.coerce(e,t,i,n,a)}))}},83895:function(e,t,n){var r=n(11005),a=n(95306).counter,i=n(35140).u,o=n(13806).idRegex,l=n(69100),s={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[a("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[o.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:i({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function c(e,t,n){var r=t[n+"axes"],a=Object.keys((e._splomAxes||{})[n]||{});return Array.isArray(r)?r:a.length?a:void 0}function u(e,t,n,r,a,i){var o=t(e+"gap",n),l=t("domain."+e);t(e+"side",r);for(var s=new Array(a),c=l[0],u=(l[1]-c)/(a-o),d=u*(1-o),f=0;f1){f||p||h||"independent"===A("pattern")&&(f=!0),y._hasSubplotGrid=f;var b,x,T="top to bottom"===A("roworder"),w=f?.2:.1,k=f?.3:.1;m&&t._splomGridDflt&&(b=t._splomGridDflt.xside,x=t._splomGridDflt.yside),y._domains={x:u("x",A,w,b,g),y:u("y",A,k,x,v,T)}}else delete t.grid}function A(e,t){return r.coerce(n,y,s,e,t)}},contentDefaults:function(e,t){var n=t.grid;if(n&&n._domains){var r,a,i,o,l,s,u,f=e.grid||{},p=t._subplots,h=n._hasSubplotGrid,m=n.rows,y=n.columns,v="independent"===n.pattern,g=n._axisMap={};if(h){var b=f.subplots||[];s=n.subplots=new Array(m);var x=1;for(r=0;r("legend"===e?1:0));if(!1===C&&(n[e]=void 0),(!1!==C||d.uirevision)&&(p("uirevision",n.uirevision),!1!==C)){p("borderwidth");var I,L,P,E="h"===p("orientation"),M="paper"===p("yref"),Z="paper"===p("xref"),O="left";if(E?(I=0,r.getComponentMethod("rangeslider","isVisible")(t.xaxis)?M?(L=1.1,P="bottom"):(L=1,P="top"):M?(L=-.1,P="top"):(L=0,P="bottom")):(L=1,P="auto",Z?I=1.02:(I=1,O="right")),a.coerce(d,f,{x:{valType:"number",editType:"legend",min:Z?-2:0,max:Z?3:1,dflt:I}},"x"),a.coerce(d,f,{y:{valType:"number",editType:"legend",min:M?-2:0,max:M?3:1,dflt:L}},"y"),p("traceorder",T),c.isGrouped(n[e])&&p("tracegroupgap"),p("entrywidth"),p("entrywidthmode"),p("itemsizing"),p("itemwidth"),p("itemclick"),p("itemdoubleclick"),p("groupclick"),p("xanchor",O),p("yanchor",P),p("valign"),a.noneOrAll(d,f,["x","y"]),p("title.text")){p("title.side",E?"left":"top");var R=a.extendFlat({},h,{size:a.bigFont(h.size)});a.coerceFont(p,"title.font",R)}}}}e.exports=function(e,t,n){var r,i=n.slice(),o=t.shapes;if(o)for(r=0;r1)}var D=h.hiddenlabels||[];if(!(k||h.showlegend&&I.length))return l.selectAll("."+w).remove(),h._topdefs.select("#"+n).remove(),i.autoMargin(e,w);var W=a.ensureSingle(l,"g",w,(function(e){k||e.attr("pointer-events","all")})),G=a.ensureSingleById(h._topdefs,"clipPath",n,(function(e){e.append("rect")})),V=a.ensureSingle(W,"rect","bg",(function(e){e.attr("shape-rendering","crispEdges")}));V.call(u.stroke,f.bordercolor).call(u.fill,f.bgcolor).style("stroke-width",f.borderwidth+"px");var z,F=a.ensureSingle(W,"g","scrollbox"),Y=f.title;f._titleWidth=0,f._titleHeight=0,Y.text?((z=a.ensureSingle(F,"text",w+"titletext")).attr("text-anchor","start").call(c.font,Y.font).text(Y.text),P(z,F,e,f,T)):F.selectAll("."+w+"titletext").remove();var _=a.ensureSingle(W,"rect","scrollbar",(function(e){e.attr(p.scrollBarEnterAttrs).call(u.fill,p.scrollBarColor)})),B=F.selectAll("g.groups").data(I);B.enter().append("g").attr("class","groups"),B.exit().remove();var j=B.selectAll("g.traces").data(a.identity);j.enter().append("g").attr("class","traces"),j.exit().remove(),j.style("opacity",(function(e){var t=e[0].trace;return o.traceIs(t,"pie-like")?-1!==D.indexOf(e[0].label)?.5:1:"legendonly"===t.visible?.5:1})).each((function(){r.select(this).call(C,e,f)})).call(b,e,f).each((function(){k||r.select(this).call(L,e,w)})),a.syncOrAsync([i.previousPromises,function(){return function(e,t,n,a){var i=e._fullLayout,o=Z(a);a||(a=i[o]);var l=i._size,s=x.isVertical(a),u=x.isGrouped(a),d="fraction"===a.entrywidthmode,f=a.borderwidth,h=2*f,m=p.itemGap,y=a.itemwidth+2*m,v=2*(f+m),g=M(a),b=a.y<0||0===a.y&&"top"===g,T=a.y>1||1===a.y&&"bottom"===g,w=a.tracegroupgap,k={};a._maxHeight=Math.max(b||T?i.height/2:l.h,30);var S=0;a._width=0,a._height=0;var C,I,L,P,O=(I=0,L=0,(P=(C=a).title.side)&&(-1!==P.indexOf("left")&&(I=C._titleWidth),-1!==P.indexOf("top")&&(L=C._titleHeight)),[I,L]);if(s)n.each((function(e){var t=e[0].height;c.setTranslate(this,f+O[0],f+O[1]+a._height+t/2+m),a._height+=t,a._width=Math.max(a._width,e[0].width)})),S=y+a._width,a._width+=m+y+h,a._height+=v,u&&(t.each((function(e,t){c.setTranslate(this,0,t*a.tracegroupgap)})),a._height+=(a._lgroupsLength-1)*a.tracegroupgap);else{var R=E(a),N=a.x<0||0===a.x&&"right"===R,X=a.x>1||1===a.x&&"left"===R,H=T||b,D=i.width/2;a._maxWidth=Math.max(N?H&&"left"===R?l.l+l.w:D:X?H&&"right"===R?l.r+l.w:D:l.w,2*y);var W=0,G=0;n.each((function(e){var t=A(e,a,y);W=Math.max(W,t),G+=t})),S=null;var V=0;if(u){var z=0,F=0,Y=0;t.each((function(){var e=0,t=0;r.select(this).selectAll("g.traces").each((function(n){var r=A(n,a,y),i=n[0].height;c.setTranslate(this,O[0],O[1]+f+m+i/2+t),t+=i,e=Math.max(e,r),k[n[0].trace.legendgroup]=e}));var n=e+m;F>0&&n+f+F>a._maxWidth?(V=Math.max(V,F),F=0,Y+=z+w,z=t):z=Math.max(z,t),c.setTranslate(this,F,Y),F+=n})),a._width=Math.max(V,F)+f,a._height=Y+z+v}else{var _=n.size(),B=G+h+(_-1)*m=a._maxWidth&&(V=Math.max(V,U),K=0,J+=j,a._height+=j,j=0),c.setTranslate(this,O[0]+f+K,O[1]+f+J+t/2+m),U=K+n+m,K+=r,j=Math.max(j,t)})),B?(a._width=K+h,a._height=j+v):(a._width=Math.max(V,U)+h,a._height+=j+v)}}a._width=Math.ceil(Math.max(a._width+O[0],a._titleWidth+2*(f+p.titlePad))),a._height=Math.ceil(Math.max(a._height+O[1],a._titleHeight+2*(f+p.itemGap))),a._effHeight=Math.min(a._height,a._maxHeight);var Q=e._context.edits,q=Q.legendText||Q.legendPosition;n.each((function(e){var t=r.select(this).select("."+o+"toggle"),n=e[0].height,i=e[0].trace.legendgroup,l=A(e,a,y);u&&""!==i&&(l=k[i]);var f=q?y:S||l;s||d||(f+=m/2),c.setRect(t,0,-n/2,f,n)}))}(e,B,j,f)},function(){var t,u,g,b,x=h._size,T=f.borderwidth,A="paper"===f.xref,C="paper"===f.yref;if(Y.text&&function(e,t,n){if("top center"===t.title.side||"top right"===t.title.side){var r=t.title.font.size*m,a=0,i=e.node(),o=c.bBox(i).width;"top center"===t.title.side?a=.5*(t._width-2*n-2*p.titlePad-o):"top right"===t.title.side&&(a=t._width-2*n-2*p.titlePad-o),d.positionText(e,n+p.titlePad+a,n+r)}}(z,f,T),!k){var I,L;if(I=A?x.l+x.w*f.x-y[E(f)]*f._width:h.width*f.x-y[E(f)]*f._width,L=C?x.t+x.h*(1-f.y)-y[M(f)]*f._effHeight:h.height*(1-f.y)-y[M(f)]*f._effHeight,function(e,t,n,r){var a=e._fullLayout,o=a[t],l=E(o),s=M(o),c="paper"===o.xref,u="paper"===o.yref;e._fullLayout._reservedMargin[t]={};var d=o.y<.5?"b":"t",f=o.x<.5?"l":"r",p={r:a.width-n,l:n+o._width,b:a.height-r,t:r+o._effHeight};if(c&&u)return i.autoMargin(e,t,{x:o.x,y:o.y,l:o._width*y[l],r:o._width*v[l],b:o._effHeight*v[s],t:o._effHeight*y[s]});c?e._fullLayout._reservedMargin[t][d]=p[d]:u||"v"===o.orientation?e._fullLayout._reservedMargin[t][f]=p[f]:e._fullLayout._reservedMargin[t][d]=p[d]}(e,w,I,L))return;if(h.margin.autoexpand){var P=I,Z=L;I=A?a.constrain(I,0,h.width-f._width):P,L=C?a.constrain(L,0,h.height-f._effHeight):Z,I!==P&&a.log("Constrain "+w+".x to make legend fit inside graph"),L!==Z&&a.log("Constrain "+w+".y to make legend fit inside graph")}c.setTranslate(W,I,L)}if(_.on(".drag",null),W.on("wheel",null),k||f._height<=f._maxHeight||e._context.staticPlot){var O=f._effHeight;k&&(O=f._height),V.attr({width:f._width-T,height:O-T,x:T/2,y:T/2}),c.setTranslate(F,0,0),G.select("rect").attr({width:f._width-2*T,height:O-2*T,x:T,y:T}),c.setClipUrl(F,n,e),c.setRect(_,0,0,0,0),delete f._scrollY}else{var R,N,X,H=Math.max(p.scrollBarMinHeight,f._effHeight*f._effHeight/f._height),D=f._effHeight-H-2*p.scrollBarMargin,B=f._height-f._effHeight,j=D/B,K=Math.min(f._scrollY||0,B);V.attr({width:f._width-2*T+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-T,x:T/2,y:T/2}),G.select("rect").attr({width:f._width-2*T+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-2*T,x:T,y:T+K}),c.setClipUrl(F,n,e),Q(K,H,j),W.on("wheel",(function(){Q(K=a.constrain(f._scrollY+r.event.deltaY/D*B,0,B),H,j),0!==K&&K!==B&&r.event.preventDefault()}));var J=r.behavior.drag().on("dragstart",(function(){var e=r.event.sourceEvent;R="touchstart"===e.type?e.changedTouches[0].clientY:e.clientY,X=K})).on("drag",(function(){var e,t=r.event.sourceEvent;2===t.buttons||t.ctrlKey||(N="touchmove"===t.type?t.changedTouches[0].clientY:t.clientY,e=(N-R)/j+X,Q(K=a.constrain(e,0,B),H,j))}));_.call(J);var U=r.behavior.drag().on("dragstart",(function(){var e=r.event.sourceEvent;"touchstart"===e.type&&(R=e.changedTouches[0].clientY,X=K)})).on("drag",(function(){var e,t=r.event.sourceEvent;"touchmove"===t.type&&(N=t.changedTouches[0].clientY,e=(R-N)/j+X,Q(K=a.constrain(e,0,B),H,j))}));F.call(U)}function Q(t,n,r){f._scrollY=e._fullLayout[w]._scrollY=t,c.setTranslate(F,0,-t),c.setRect(_,f._width,p.scrollBarMargin+t*r,p.scrollBarWidth,n),G.select("rect").attr("y",T+t)}e._context.edits.legendPosition&&(W.classed("cursor-move",!0),s.init({element:W.node(),gd:e,prepFn:function(){var e=c.getTranslate(W);g=e.x,b=e.y},moveFn:function(e,n){var r=g+e,a=b+n;c.setTranslate(W,r,a),t=s.align(r,f._width,x.l,x.l+x.w,f.xanchor),u=s.align(a+f._height,-f._height,x.t+x.h,x.t,f.yanchor)},doneFn:function(){if(void 0!==t&&void 0!==u){var n={};n[w+".x"]=t,n[w+".y"]=u,o.call("_guiRelayout",e,n)}},clickFn:function(t,n){var r=l.selectAll("g.traces").filter((function(){var e=this.getBoundingClientRect();return n.clientX>=e.left&&n.clientX<=e.right&&n.clientY>=e.top&&n.clientY<=e.bottom}));r.size()>0&&S(e,W,r,t,n)}}))}],e)}}function A(e,t,n){var r=e[0],a=r.width,i=t.entrywidthmode,o=r.trace.legendwidth||t.entrywidth;return"fraction"===i?t._maxWidth*o:n+(o||a)}function S(e,t,n,r,a){var i=n.data()[0][0].trace,s={event:a,node:n.node(),curveNumber:i.index,expandedIndex:i._expandedIndex,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};i._group&&(s.group=i._group),o.traceIs(i,"pie-like")&&(s.label=n.datum()[0].label);var c=l.triggerHandler(e,"plotly_legendclick",s);if(1===r){if(!1===c)return;t._clickTimeout=setTimeout((function(){e._fullLayout&&f(n,e,r)}),e._context.doubleClickDelay)}else 2===r&&(t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0,!1!==l.triggerHandler(e,"plotly_legenddoubleclick",s)&&!1!==c&&f(n,e,r))}function C(e,t,n){var r,i,l=Z(n),s=e.data()[0][0],u=s.trace,f=o.traceIs(u,"pie-like"),h=!n._inHover&&t._context.edits.legendText&&!f,m=n._maxNameLength;s.groupTitle?(r=s.groupTitle.text,i=s.groupTitle.font):(i=n.font,n.entries?r=s.text:(r=f?s.label:u.name,u._meta&&(r=a.templateString(r,u._meta))));var y=a.ensureSingle(e,"text",l+"text");y.attr("text-anchor","start").call(c.font,i).text(h?I(r,m):r);var v=n.itemwidth+2*p.itemGap;d.positionText(y,v,0),h?y.call(d.makeEditable,{gd:t,text:r}).call(P,e,t,n).on("edit",(function(r){this.text(I(r,m)).call(P,e,t,n);var i=s.trace._fullInput||{},l={};if(o.hasTransform(i,"groupby")){var c=o.getTransformIndices(i,"groupby"),d=c[c.length-1],f=a.keyedContainer(i,"transforms["+d+"].styles","target","value.name");f.set(s.trace._group,r),l=f.constructUpdate()}else l.name=r;return i._isShape?o.call("_guiRelayout",t,"shapes["+u.index+"].name",l.name):o.call("_guiRestyle",t,l,u.index)})):P(y,e,t,n)}function I(e,t){var n=Math.max(4,t);if(e&&e.trim().length>=n/2)return e;for(var r=n-(e=e||"").length;r>0;r--)e+=" ";return e}function L(e,t,n){var i,o=t._context.doubleClickDelay,l=1,s=a.ensureSingle(e,"rect",n+"toggle",(function(e){t._context.staticPlot||e.style("cursor","pointer").attr("pointer-events","all"),e.call(u.fill,"rgba(0,0,0,0)")}));t._context.staticPlot||(s.on("mousedown",(function(){(i=(new Date).getTime())-t._legendMouseDownTimeo&&(l=Math.max(l-1,1)),S(t,a,e,l,r.event)}})))}function P(e,t,n,r,a){r._inHover&&e.attr("data-notex",!0),d.convertToTspans(e,n,(function(){!function(e,t,n,r){var a=e.data()[0][0];if(n._inHover||!a||a.trace.showlegend){var i=e.select("g[class*=math-group]"),o=i.node(),l=Z(n);n||(n=t._fullLayout[l]);var s,u,f=n.borderwidth,h=(r===T?n.title.font:a.groupTitle?a.groupTitle.font:n.font).size*m;if(o){var y=c.bBox(o);s=y.height,u=y.width,r===T?c.setTranslate(i,f,f+.75*s):c.setTranslate(i,0,.25*s)}else{var v="."+l+(r===T?"title":"")+"text",g=e.select(v),b=d.lineCount(g),x=g.node();if(s=h*b,u=x?c.bBox(x).width:0,r===T)"left"===n.title.side&&(u+=2*p.itemGap),d.positionText(g,f+p.titlePad,f+h);else{var w=2*p.itemGap+n.itemwidth;a.groupTitle&&(w=p.itemGap,u-=n.itemwidth),d.positionText(g,w,-h*((b-1)/2-.3))}}r===T?(n._titleWidth=u,n._titleHeight=s):(a.lineHeight=h,a.height=Math.max(s,16)+3,a.width=u)}else e.remove()}(t,n,r,a)}))}function E(e){return a.isRightAnchor(e)?"right":a.isCenterAnchor(e)?"center":"left"}function M(e){return a.isBottomAnchor(e)?"bottom":a.isMiddleAnchor(e)?"middle":"top"}function Z(e){return e._id||"legend"}e.exports=function(e,t){if(t)k(e,t);else{var n=e._fullLayout,a=n._legends;n._infolayer.selectAll('[class^="legend"]').each((function(){var e=r.select(this),t=e.attr("class").split(" ")[0];t.match(w)&&-1===a.indexOf(t)&&e.remove()}));for(var i=0;iI&&(C=I)}A[i][0]._groupMinRank=C,A[i][0]._preGroupSort=i}var L=function(e,t){return e.trace.legendrank-t.trace.legendrank||e._preSort-t._preSort};for(A.forEach((function(e,t){e[0]._preGroupSort=t})),A.sort((function(e,t){return e[0]._groupMinRank-t[0]._groupMinRank||e[0]._preGroupSort-t[0]._preGroupSort})),i=0;in?n:e}e.exports=function(e,t,n){var v=t._fullLayout;n||(n=v.legend);var g="constant"===n.itemsizing,b=n.itemwidth,x=(b+2*p.itemGap)/2,T=o(x,0),w=function(e,t,n,r){var a;if(e+1)a=e;else{if(!(t&&t.width>0))return 0;a=t.width}return g?r:Math.min(a,n)};function k(e,i,o){var u=e[0].trace,d=u.marker||{},f=d.line||{},p=d.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",h=o?u.visible&&u.type===o:a.traceIs(u,"bar"),m=r.select(i).select("g.legendpoints").selectAll("path.legend"+o).data(h?[e]:[]);m.enter().append("path").classed("legend"+o,!0).attr("d",p).attr("transform",T),m.exit().remove(),m.each((function(e){var a=r.select(this),i=e[0],o=w(i.mlw,d.line,5,2);a.style("stroke-width",o+"px");var p=i.mcc;if(!n._inHover&&"mc"in i){var h=c(d),m=h.mid;void 0===m&&(m=(h.max+h.min)/2),p=l.tryColorscale(d,"")(m)}var v=p||i.mc||d.color,g=d.pattern,b=g&&l.getPatternAttr(g.shape,0,"");if(b){var x=l.getPatternAttr(g.bgcolor,0,null),T=l.getPatternAttr(g.fgcolor,0,null),k=g.fgopacity,A=y(g.size,8,10),S=y(g.solidity,.5,1),C="legend-"+u.uid;a.call(l.pattern,"legend",t,C,b,A,S,p,g.fillmode,x,T,k)}else a.call(s.fill,v);o&&s.stroke(a,i.mlc||f.color)}))}function A(e,n,o){var l=e[0],s=l.trace,c=o?s.visible&&s.type===o:a.traceIs(s,o),u=r.select(n).select("g.legendpoints").selectAll("path.legend"+o).data(c?[e]:[]);if(u.enter().append("path").classed("legend"+o,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",T),u.exit().remove(),u.size()){var p=s.marker||{},h=w(f(p.line.width,l.pts),p.line,5,2),m="pieLike",y=i.minExtend(s,{marker:{line:{width:h}}},m),v=i.minExtend(l,{trace:y},m);d(u,v,y,t)}}e.each((function(e){var t=r.select(this),a=i.ensureSingle(t,"g","layers");a.style("opacity",e[0].trace.opacity);var l=n.valign,s=e[0].lineHeight,c=e[0].height;if("middle"!==l&&s&&c){var u={top:1,bottom:-1}[l]*(.5*(s-c+3));a.attr("transform",o(0,u))}else a.attr("transform",null);a.selectAll("g.legendfill").data([e]).enter().append("g").classed("legendfill",!0),a.selectAll("g.legendlines").data([e]).enter().append("g").classed("legendlines",!0);var d=a.selectAll("g.legendsymbols").data([e]);d.enter().append("g").classed("legendsymbols",!0),d.selectAll("g.legendpoints").data([e]).enter().append("g").classed("legendpoints",!0)})).each((function(e){var n,a=e[0].trace,o=[];if(a.visible)switch(a.type){case"histogram2d":case"heatmap":o=[["M-15,-2V4H15V-2Z"]],n=!0;break;case"choropleth":case"choroplethmapbox":o=[["M-6,-6V6H6V-6Z"]],n=!0;break;case"densitymapbox":o=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],n="radial";break;case"cone":o=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],n=!1;break;case"streamtube":o=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],n=!1;break;case"surface":o=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],n=!0;break;case"mesh3d":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],n=!1;break;case"volume":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],n=!0;break;case"isosurface":o=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],n=!1}var u=r.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(o);u.enter().append("path").classed("legend3dandfriends",!0).attr("transform",T).style("stroke-miterlimit",1),u.exit().remove(),u.each((function(e,o){var u,d=r.select(this),f=c(a),p=f.colorscale,m=f.reversescale;if(p){if(!n){var y=p.length;u=0===o?p[m?y-1:0][1]:1===o?p[m?0:y-1][1]:p[Math.floor((y-1)/2)][1]}}else{var v=a.vertexcolor||a.facecolor||a.color;u=i.isArrayOrTypedArray(v)?v[o]||v[0]:v}d.attr("d",e[0]),u?d.call(s.fill,u):d.call((function(e){if(e.size()){var r="legendfill-"+a.uid;l.gradient(e,t,r,h(m,"radial"===n),p,"fill")}}))}))})).each((function(e){var t=e[0].trace,n="waterfall"===t.type;if(e[0]._distinct&&n){var a=e[0].trace[e[0].dir].marker;return e[0].mc=a.color,e[0].mlw=a.line.width,e[0].mlc=a.line.color,k(e,this,"waterfall")}var i=[];t.visible&&n&&(i=e[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var o=r.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(i);o.enter().append("path").classed("legendwaterfall",!0).attr("transform",T).style("stroke-miterlimit",1),o.exit().remove(),o.each((function(e){var n=r.select(this),a=t[e[0]].marker,i=w(void 0,a.line,5,2);n.attr("d",e[1]).style("stroke-width",i+"px").call(s.fill,a.color),i&&n.call(s.stroke,a.line.color)}))})).each((function(e){k(e,this,"funnel")})).each((function(e){k(e,this)})).each((function(e){var n=e[0].trace,o=r.select(this).select("g.legendpoints").selectAll("path.legendbox").data(n.visible&&a.traceIs(n,"box-violin")?[e]:[]);o.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",T),o.exit().remove(),o.each((function(){var e=r.select(this);if("all"!==n.boxpoints&&"all"!==n.points||0!==s.opacity(n.fillcolor)||0!==s.opacity((n.line||{}).color)){var a=w(void 0,n.line,5,2);e.style("stroke-width",a+"px").call(s.fill,n.fillcolor),a&&s.stroke(e,n.line.color)}else{var c=i.minExtend(n,{marker:{size:g?12:i.constrain(n.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});o.call(l.pointStyle,c,t)}}))})).each((function(e){A(e,this,"funnelarea")})).each((function(e){A(e,this,"pie")})).each((function(e){var n,a,o=m(e),s=o.showFill,d=o.showLine,f=o.showGradientLine,p=o.showGradientFill,y=o.anyFill,v=o.anyLine,g=e[0],x=g.trace,T=c(x),k=T.colorscale,A=T.reversescale,S=u.hasMarkers(x)||!y?"M5,0":v?"M5,-2":"M5,-3",C=r.select(this),I=C.select(".legendfill").selectAll("path").data(s||p?[e]:[]);if(I.enter().append("path").classed("js-fill",!0),I.exit().remove(),I.attr("d",S+"h"+b+"v6h-"+b+"z").call((function(e){if(e.size())if(s)l.fillGroupStyle(e,t);else{var n="legendfill-"+x.uid;l.gradient(e,t,n,h(A),k,"fill")}})),d||f){var L=w(void 0,x.line,10,5);a=i.minExtend(x,{line:{width:L}}),n=[i.minExtend(g,{trace:a})]}var P=C.select(".legendlines").selectAll("path").data(d||f?[n]:[]);P.enter().append("path").classed("js-line",!0),P.exit().remove(),P.attr("d",S+(f?"l"+b+",0.0001":"h"+b)).call(d?l.lineGroupStyle:function(e){if(e.size()){var n="legendline-"+x.uid;l.lineGroupStyle(e),l.gradient(e,t,n,h(A),k,"stroke")}})})).each((function(e){var n,a,o=m(e),s=o.anyFill,c=o.anyLine,d=o.showLine,f=o.showMarker,p=e[0],h=p.trace,y=!f&&!c&&!s&&u.hasText(h);function v(e,t,n,r){var a=i.nestedProperty(h,e).get(),o=i.isArrayOrTypedArray(a)&&t?t(a):a;if(g&&o&&void 0!==r&&(o=r),n){if(on[1])return n[1]}return o}function b(e){return p._distinct&&p.index&&e[p.index]?e[p.index]:e[0]}if(f||y||d){var x={},w={};if(f){x.mc=v("marker.color",b),x.mx=v("marker.symbol",b),x.mo=v("marker.opacity",i.mean,[.2,1]),x.mlc=v("marker.line.color",b),x.mlw=v("marker.line.width",i.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var k=v("marker.size",i.mean,[2,16],12);x.ms=k,w.marker.size=k}d&&(w.line={width:v("line.width",b,[0,10],5)}),y&&(x.tx="Aa",x.tp=v("textposition",b),x.ts=10,x.tc=v("textfont.color",b),x.tf=v("textfont.family",b)),n=[i.minExtend(p,x)],(a=i.minExtend(h,w)).selectedpoints=null,a.texttemplate=null}var A=r.select(this).select("g.legendpoints"),S=A.selectAll("path.scatterpts").data(f?n:[]);S.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",T),S.exit().remove(),S.call(l.pointStyle,a,t),f&&(n[0].mrc=3);var C=A.selectAll("g.pointtext").data(y?n:[]);C.enter().append("g").classed("pointtext",!0).append("text").attr("transform",T),C.exit().remove(),C.selectAll("text").call(l.textPointStyle,a,t)})).each((function(e){var t=e[0].trace,n=r.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(t.visible&&"candlestick"===t.type?[e,e]:[]);n.enter().append("path").classed("legendcandle",!0).attr("d",(function(e,t){return t?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"})).attr("transform",T).style("stroke-miterlimit",1),n.exit().remove(),n.each((function(e,n){var a=r.select(this),i=t[n?"increasing":"decreasing"],o=w(void 0,i.line,5,2);a.style("stroke-width",o+"px").call(s.fill,i.fillcolor),o&&s.stroke(a,i.line.color)}))})).each((function(e){var t=e[0].trace,n=r.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(t.visible&&"ohlc"===t.type?[e,e]:[]);n.enter().append("path").classed("legendohlc",!0).attr("d",(function(e,t){return t?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"})).attr("transform",T).style("stroke-miterlimit",1),n.exit().remove(),n.each((function(e,n){var a=r.select(this),i=t[n?"increasing":"decreasing"],o=w(void 0,i.line,5,2);a.style("fill","none").call(l.dashLine,i.line.dash,o),o&&s.stroke(a,i.line.color)}))}))}},23728:function(e,t,n){n(92516),e.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}},90684:function(e,t,n){var r=n(94134),a=n(21086),i=n(55483),o=n(10680),l=n(39115).eraseActiveShape,s=n(11005),c=s._,u=e.exports={};function d(e,t){var n,a,o=t.currentTarget,l=o.getAttribute("data-attr"),s=o.getAttribute("data-val")||!0,c=e._fullLayout,u={},d=i.list(e,null,!0),f=c._cartesianSpikesEnabled;if("zoom"===l){var p,h="in"===s?.5:2,m=(1+h)/2,y=(1-h)/2;for(a=0;a1?(Z=["toggleHover"],O=["resetViews"]):v?(M=["zoomInGeo","zoomOutGeo"],Z=["hoverClosestGeo"],O=["resetGeo"]):y?(Z=["hoverClosest3d"],O=["resetCameraDefault3d","resetCameraLastSave3d"]):w?(M=["zoomInMapbox","zoomOutMapbox"],Z=["toggleHover"],O=["resetViewMapbox"]):x?Z=["hoverClosestGl2d"]:g?Z=["hoverClosestPie"]:S?(Z=["hoverClosestCartesian","hoverCompareCartesian"],O=["resetViewSankey"]):Z=["toggleHover"],m&&(Z=["toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"]),(function(e){for(var t=0;t0)){var m=function(e,t,n){for(var r=n.filter((function(n){return t[n].anchor===e._id})),a=0,i=0;i0?e.touches[0].clientX:0}function v(e,t,n,r){var a=o.ensureSingle(e,"rect",m.bgClassName,(function(e){e.attr({x:0,y:0,"shape-rendering":"crispEdges"})})),i=r.borderwidth%2==0?r.borderwidth:r.borderwidth-1,u=-r._offsetShift,d=s.crispRound(t,r.borderwidth);a.attr({width:r._width+i,height:r._height+i,transform:l(u,u),"stroke-width":d}).call(c.stroke,r.bordercolor).call(c.fill,r.bgcolor)}function g(e,t,n,r){var a=t._fullLayout;o.ensureSingleById(a._topdefs,"clipPath",r._clipId,(function(e){e.append("rect").attr({x:0,y:0})})).select("rect").attr({width:r._width,height:r._height})}function b(e,t,n,a){var l,c=t.calcdata,u=e.selectAll("g."+m.rangePlotClassName).data(n._subplotsWith,o.identity);u.enter().append("g").attr("class",(function(e){return m.rangePlotClassName+" "+e})).call(s.setClipUrl,a._clipId,t),u.order(),u.exit().remove(),u.each((function(e,o){var s=r.select(this),u=0===o,p=f.getFromId(t,e,"y"),h=p._name,m=a[h],y={data:[],layout:{xaxis:{type:n.type,domain:[0,1],range:a.range.slice(),calendar:n.calendar},width:a._width,height:a._height,margin:{t:0,b:0,l:0,r:0}},_context:t._context};n.rangebreaks&&(y.layout.xaxis.rangebreaks=n.rangebreaks),y.layout[h]={type:p.type,domain:[0,1],range:"match"!==m.rangemode?m.range.slice():p.range.slice(),calendar:p.calendar},p.rangebreaks&&(y.layout[h].rangebreaks=p.rangebreaks),i.supplyDefaults(y);var v=y._fullLayout.xaxis,g=y._fullLayout[h];v.clearCalc(),v.setScale(),g.clearCalc(),g.setScale();var b={id:e,plotgroup:s,xaxis:v,yaxis:g,isRangePlot:!0};u?l=b:(b.mainplot="xy",b.mainplotinfo=l),d.rangePlot(t,b,function(e,t){for(var n=[],r=0;r=r.max)t=D[n+1];else if(e=r.pmax)t=D[n+1];else if(en._length||g+T<0)return;u=v+T,p=g+T;break;case s:if(x="col-resize",v+T>n._length)return;u=v+T,p=g;break;case c:if(x="col-resize",g+T<0)return;u=v,p=g+T;break;default:x="ew-resize",u=m,p=m+T}if(p=0;A--){var S=n.append("path").attr(y).style("opacity",A?.1:v).call(o.stroke,b).call(o.fill,g).call(l.dashLine,A?"solid":T,A?4+x:x);if(h(S,e,i),w){var C=s(e.layout,"selections",i);S.style({cursor:"move"});var I={element:S.node(),plotinfo:p,gd:e,editHelpers:C,isActiveSelection:!0},L=r(c,e);a(L,S,I)}else S.style("pointer-events",A?"all":"none");k[A]=S}var P=k[0];k[1].node().addEventListener("click",(function(){return function(e,t){if(f(e)){var n=+t.node().getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex)return void m(e);e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=m,d(e)}}}(e,P)}))}(e._fullLayout._selectionLayer)}function h(e,t,n){var r=n.xref+n.yref;l.setClipUrl(e,"clip"+t._fullLayout._uid+r,t)}function m(e){f(e)&&e._fullLayout._activeSelectionIndex>=0&&(i(e),delete e._fullLayout._activeSelectionIndex,d(e))}e.exports={draw:d,drawOne:p,activateLastSelection:function(e){if(f(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=m,d(e)}}}},72959:function(e,t,n){var r=n(53198).T,a=n(60821).extendFlat;e.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:a({},r,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}},82488:function(e){e.exports=function(e,t,n){n("newselection.mode"),n("newselection.line.width")&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}},31565:function(e,t,n){var r=n(6442).selectMode,a=n(94306).clearOutline,i=n(15555),o=i.readPaths,l=i.writePaths,s=i.fixDatesForPaths;e.exports=function(e,t){if(e.length){var n=e[0][0];if(n){var i=n.getAttribute("d"),c=t.gd,u=c._fullLayout.newselection,d=t.plotinfo,f=d.xaxis,p=d.yaxis,h=t.isActiveSelection,m=t.dragmode,y=(c.layout||{}).selections||[];if(!r(m)&&void 0!==h){var v=c._fullLayout._activeSelectionIndex;if(v-1,T=[];if((v=b)&&Array.isArray(v)&&!0!==v[0].hoverOnBox){B(e,t,i);var w=function(e,t){var n,r,a=e[0],i=-1,o=[];for(r=0;r0?function(e,t){var n,r,a,i=[];for(a=0;a0&&i.push(n);if(1===i.length&&i[0]===t.searchInfo&&(r=t.searchInfo.cd[0].trace).selectedpoints.length===t.pointNumbers.length){for(a=0;a1)return!1;if((r+=t.selectedpoints.length)>1)return!1}return 1===r}(l)&&(f=Q(w))){for(o&&o.remove(),y=0;y=0&&a._fullLayout._deactivateShape(a),function(e){return e._fullLayout._activeSelectionIndex>=0}(a)&&a._fullLayout._deactivateSelection(a);var o=a._fullLayout._zoomlayer,l=p(n),s=m(n);if(l||s){var c,u,d=o.selectAll(".select-outline-"+r.id);d&&a._fullLayout._outlining&&(l&&(c=k(d,e)),c&&i.call("_guiRelayout",a,{shapes:c}),s&&!V(e)&&(u=A(d,e)),u&&(a._fullLayout._noEmitSelectedAtStart=!0,i.call("_guiRelayout",a,{selections:u}).then((function(){t&&S(a)}))),a._fullLayout._outlining=!1)}r.selection={},r.selection.selectionDefs=e.selectionDefs=[],r.selection.mergedPolygons=e.mergedPolygons=[]}function K(e){return e._id}function J(e,t,n,r){if(!e.calcdata)return[];var a,i,o,l=[],s=t.map(K),c=n.map(K);for(o=0;o0?r[0]:n;return!!t.selectedpoints&&t.selectedpoints.indexOf(a)>-1}function q(e,t,n){var r,a;for(r=0;r-1&&t;if(!i&&t){var te=oe(e,!0);if(te.length){var re=te[0].xref,pe=te[0].yref;if(re&&pe){var he=ce(te);ue([E(e,re,"x"),E(e,pe,"y")])($,he)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ee&&de(e,$),f._reselect=!1}if(!i&&f._deselect){var me=f._deselect;(function(e,t,n){for(var r=0;r=0)A._fullLayout._deactivateShape(A);else if(!b){var n=S.clickmode;P.done(Ce).then((function(){if(P.clear(Ce),2===e){for(xe.remove(),Q=0;Q-1&&z(t,A,r.xaxes,r.yaxes,r.subplot,r,xe),"event"===n&&de(A,void 0);s.click(A,t,M.id)})).catch(C.error)}},r.doneFn=function(){Ae.remove(),P.done(Ce).then((function(){P.clear(Ce),!I&&U&&r.selectionDefs&&(U.subtract=be,r.selectionDefs.push(U),r.mergedPolygons.length=0,[].push.apply(r.mergedPolygons,K)),(I||b)&&j(r,I),r.doneFnCompleted&&r.doneFnCompleted(Ie),x&&de(A,ie)})).catch(C.error)}},clearOutline:b,clearSelectionsCache:j,selectOnClick:z}},59124:function(e,t,n){var r=n(60738),a=n(69133),i=n(78508).line,o=n(53198).T,l=n(60821).extendFlat,s=n(69100).templatedArray,c=(n(39413),n(97089)),u=n(17172).LF,d=n(64959);e.exports=s("shape",{visible:l({},c.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:l({},c.legend,{editType:"calc+arraydraw"}),legendgroup:l({},c.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:l({},c.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:a({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:l({},c.legendrank,{editType:"calc+arraydraw"}),legendwidth:l({},c.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},xref:l({},r.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},yref:l({},r.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:l({},i.color,{editType:"arraydraw"}),width:l({},i.width,{editType:"calc+arraydraw"}),dash:l({},o,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:u({},{keys:Object.keys(d)}),font:a({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})},99219:function(e,t,n){var r=n(11005),a=n(60638),i=n(54656),o=n(40804);function l(e){return c(e.line.width,e.xsizemode,e.x0,e.x1,e.path,!1)}function s(e){return c(e.line.width,e.ysizemode,e.y0,e.y1,e.path,!0)}function c(e,t,n,a,l,s){var c=e/2,u=s;if("pixel"===t){var d=l?o.extractPathCoords(l,s?i.paramIsY:i.paramIsX):[n,a],f=r.aggNums(Math.max,null,d),p=r.aggNums(Math.min,null,d),h=p<0?Math.abs(p)+c:c,m=f>0?f+c:c;return{ppad:c,ppadplus:u?h:m,ppadminus:u?m:h}}return{ppad:c}}function u(e,t,n,r,a){var l="category"===e.type||"multicategory"===e.type?e.r2c:e.d2c;if(void 0!==t)return[l(t),l(n)];if(r){var s,c,u,d,f=1/0,p=-1/0,h=r.match(i.segmentRE);for("date"===e.type&&(l=o.decodeDate(l)),s=0;sp&&(p=d)));return p>=f?[f,p]:void 0}}e.exports=function(e){var t=e._fullLayout,n=r.filterVisible(t.shapes);if(n.length&&e._fullData.length)for(var o=0;o=_?B-K:K-B,-180/Math.PI*Math.atan2(J,U)):0),S.call((function(t){return t.call(o.font,A).attr({}),i.convertToTspans(t,e),t}));var V=function(e,t,n,r,a,i,o){var l,s,c,u,f=a.label.textposition,p=a.label.textangle,h=a.label.padding,m=a.type,y=Math.PI/180*i,v=Math.sin(y),g=Math.cos(y),b=a.label.xanchor,x=a.label.yanchor;if("line"===m){"start"===f?(l=e,s=t):"end"===f?(l=n,s=r):(l=(e+n)/2,s=(t+r)/2),"auto"===b&&(b="start"===f?"auto"===p?n>e?"left":ne?"right":ne?"right":ne?"left":n1&&(2!==e.length||"Z"!==e[1][0])&&(0===E&&(e[0][0]="M"),t[P]=e,S(),C())}}()}}function z(e,n){!function(e,n){if(t.length)for(var r=0;rT?(C=p,E="y0",I=T,M="y1"):(C=T,E="y1",I=p,M="y0"),ee(r),re(s,n),a=t,l=e,c=(i=n).xref,u=i.yref,h=o.getFromId(l,c),m=o.getFromId(l,u),y="","paper"===c||h.autorange||(y+=c),"paper"===u||m.autorange||(y+=u),f.setClipUrl(a,y?"clip"+l._fullLayout._uid+y:null,l),$.moveFn="move"===N?te:ne,$.altKey=r.altKey)},doneFn:function(){x(e)||(m(t),ae(s),k(t,e,n),a.call("_guiRelayout",e,u.getUpdateObj()))},clickFn:function(){x(e)||ae(s)}};function ee(n){if(x(e))N=null;else if(G)N="path"===n.target.tagName?"move":"start-point"===n.target.attributes["data-line-point"].value?"resize-over-start-point":"resize-over-end-point";else{var r=$.element.getBoundingClientRect(),a=r.right-r.left,i=r.bottom-r.top,o=n.clientX-r.left,l=n.clientY-r.top,s=!V&&a>X&&i>H&&!n.shiftKey?h.getCursor(o/a,1-l/i):"move";m(t,s),N=s.split("-")[0]}}function te(r,a){if("path"===n.type){var i=function(e){return e},o=i,u=i;D?z("xanchor",n.xanchor=U(w+r)):(o=function(e){return U(K(e)+r)},Y&&"date"===Y.type&&(o=v.encodeDate(o))),W?z("yanchor",n.yanchor=Q(S+a)):(u=function(e){return Q(J(e)+a)},B&&"date"===B.type&&(u=v.encodeDate(u))),z("path",n.path=A(R,o,u))}else D?z("xanchor",n.xanchor=U(w+r)):(z("x0",n.x0=U(d+r)),z("x1",n.x1=U(b+r))),W?z("yanchor",n.yanchor=Q(S+a)):(z("y0",n.y0=Q(p+a)),z("y1",n.y1=Q(T+a)));t.attr("d",g(e,n)),re(s,n),c(e,l,n,F)}function ne(r,a){if(V){var i=function(e){return e},o=i,u=i;D?z("xanchor",n.xanchor=U(w+r)):(o=function(e){return U(K(e)+r)},Y&&"date"===Y.type&&(o=v.encodeDate(o))),W?z("yanchor",n.yanchor=Q(S+a)):(u=function(e){return Q(J(e)+a)},B&&"date"===B.type&&(u=v.encodeDate(u))),z("path",n.path=A(R,o,u))}else if(G){if("resize-over-start-point"===N){var f=d+r,h=W?p-a:p+a;z("x0",n.x0=D?f:U(f)),z("y0",n.y0=W?h:Q(h))}else if("resize-over-end-point"===N){var m=b+r,y=W?T-a:T+a;z("x1",n.x1=D?m:U(m)),z("y1",n.y1=W?y:Q(y))}}else{var x=function(e){return-1!==N.indexOf(e)},k=x("n"),_=x("s"),j=x("w"),q=x("e"),$=k?C+a:C,ee=_?I+a:I,te=j?L+r:L,ne=q?P+r:P;W&&(k&&($=C-a),_&&(ee=I-a)),(!W&&ee-$>H||W&&$-ee>H)&&(z(E,n[E]=W?$:Q($)),z(M,n[M]=W?ee:Q(ee))),ne-te>X&&(z(Z,n[Z]=D?te:U(te)),z(O,n[O]=D?ne:U(ne)))}t.attr("d",g(e,n)),re(s,n),c(e,l,n,F)}function re(e,t){(D||W)&&function(){var n="path"!==t.type,r=e.selectAll(".visual-cue").data([0]);r.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":1}).classed("visual-cue",!0);var a=K(D?t.xanchor:i.midRange(n?[t.x0,t.x1]:v.extractPathCoords(t.path,y.paramIsX))),o=J(W?t.yanchor:i.midRange(n?[t.y0,t.y1]:v.extractPathCoords(t.path,y.paramIsY)));if(a=v.roundPositionForSharpStrokeRendering(a,1),o=v.roundPositionForSharpStrokeRendering(o,1),D&&W){var l="M"+(a-1-1)+","+(o-1-1)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";r.attr("d",l)}else if(D){var s="M"+(a-1-1)+","+(o-9-1)+"v18 h2 v-18 Z";r.attr("d",s)}else{var c="M"+(a-9-1)+","+(o-1-1)+"h18 v2 h-18 Z";r.attr("d",c)}}()}function ae(e){e.selectAll(".visual-cue").remove()}h.init($),q.node().onmousemove=ee}(e,H,u,t,n,N):!0===u.editable&&H.style("pointer-events",O||d.opacity(P)*L<=.5?"stroke":"all");H.node().addEventListener("click",(function(){return function(e,t){if(T(e)){var n=+t.node().getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex)return void S(e);e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=S,b(e)}}}(e,H)}))}u._input&&!0===u.visible&&("below"!==u.layer?C(e._fullLayout._shapeUpperLayer):"paper"===u.xref||"paper"===u.yref?C(e._fullLayout._shapeLowerLayer):w._hadPlotinfo?C((w.mainplotinfo||w).shapelayer):C(e._fullLayout._shapeLowerLayer))}function k(e,t,n){var r=(n.xref+n.yref).replace(/paper/g,"").replace(/[xyz][1-9]* *domain/g,"");f.setClipUrl(e,r?"clip"+t._fullLayout._uid+r:null,t)}function A(e,t,n){return e.replace(y.segmentRE,(function(e){var r=0,a=e.charAt(0),i=y.paramIsX[a],o=y.paramIsY[a],l=y.numParams[a];return a+e.substr(1).replace(y.paramRE,(function(e){return r>=l||(i[r]?e=t(e):o[r]&&(e=n(e)),r++),e}))}))}function S(e){T(e)&&e._fullLayout._activeShapeIndex>=0&&(u(e),delete e._fullLayout._activeShapeIndex,b(e))}e.exports={draw:b,drawOne:w,eraseActiveShape:function(e){if(T(e)){u(e);var t=e._fullLayout._activeShapeIndex,n=(e.layout||{}).shapes||[];if(t0&&sl&&(e="X"),e}));return t>l&&(s=s.replace(/[\s,]*X.*/,""),a.log("Ignoring extra params in segment "+e)),n+s}));if("pixel"===n.xsizemode){var L=l(n.xanchor);u=L+n.x0,d=L+n.x1}else u=l(n.x0),d=l(n.x1);if("pixel"===n.ysizemode){var P=c(n.yanchor);f=P-n.y0,p=P-n.y1}else f=c(n.y0),p=c(n.y1);if("line"===w)return"M"+u+","+f+"L"+d+","+p;if("rect"===w)return"M"+u+","+f+"H"+d+"V"+p+"H"+u+"Z";var E=(u+d)/2,M=(f+p)/2,Z=Math.abs(E-u),O=Math.abs(M-f),R="A"+Z+","+O,N=E+Z+","+M;return"M"+N+R+" 0 1,1 "+E+","+(M-O)+R+" 0 0,1 "+N+"Z"}},28569:function(e,t,n){var r=n(39115);e.exports={moduleType:"component",name:"shapes",layoutAttributes:n(59124),supplyLayoutDefaults:n(13955),supplyDrawNewShapeDefaults:n(71990),includeBasePlot:n(26494)("shapes"),calcAutorange:n(99219),draw:r.draw,drawOne:r.drawOne}},64959:function(e){function t(e,t){return t?t.d2l(e):e}function n(e,t){return t?t.l2d(e):e}function r(e,n){return t(e.x1,n)-t(e.x0,n)}function a(e,n,r){return t(e.y1,r)-t(e.y0,r)}e.exports={x0:function(e){return e.x0},x1:function(e){return e.x1},y0:function(e){return e.y0},y1:function(e){return e.y1},slope:function(e,t,n){return"line"!==e.type?void 0:a(e,0,n)/r(e,t)},dx:r,dy:a,width:function(e,t){return Math.abs(r(e,t))},height:function(e,t,n){return Math.abs(a(e,0,n))},length:function(e,t,n){return"line"!==e.type?void 0:Math.sqrt(Math.pow(r(e,t),2)+Math.pow(a(e,0,n),2))},xcenter:function(e,r){return n((t(e.x1,r)+t(e.x0,r))/2,r)},ycenter:function(e,r,a){return n((t(e.y1,a)+t(e.y0,a))/2,a)}}},99666:function(e,t,n){var r=n(69133),a=n(6575),i=n(60821).extendDeepAll,o=n(92018).overrideAll,l=n(14454),s=n(69100).templatedArray,c=n(12846),u=s("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});e.exports=o(s("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:u,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:i(a({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:l.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:r({})},font:r({}),activebgcolor:{valType:"color",dflt:c.gripBgActiveColor},bgcolor:{valType:"color",dflt:c.railBgColor},bordercolor:{valType:"color",dflt:c.railBorderColor},borderwidth:{valType:"number",min:0,dflt:c.railBorderWidth},ticklen:{valType:"number",min:0,dflt:c.tickLength},tickcolor:{valType:"color",dflt:c.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:c.minorTickLength}}),"arraydraw","from-root")},12846:function(e){e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}},16037:function(e,t,n){var r=n(11005),a=n(69932),i=n(99666),o=n(12846).name,l=i.steps;function s(e,t,n){function o(n,a){return r.coerce(e,t,i,n,a)}for(var l=a(e,t,{name:"steps",handleItemDefaults:c}),s=0,u=0;u0&&(l=l.transition().duration(t.transition.duration).ease(t.transition.easing)),l.attr("transform",s(o-.5*d.gripWidth,t._dims.currentValueTotalHeight))}}function L(e,t){var n=e._dims;return n.inputAreaStart+d.stepInset+(n.inputAreaLength-2*d.stepInset)*Math.min(1,Math.max(0,t))}function P(e,t){var n=e._dims;return Math.min(1,Math.max(0,(t-d.stepInset-n.inputAreaStart)/(n.inputAreaLength-2*d.stepInset-2*n.inputAreaStart)))}function E(e,t,n){var r=n._dims,a=l.ensureSingle(e,"rect",d.railTouchRectClass,(function(r){r.call(S,t,e,n).style("pointer-events","all")}));a.attr({width:r.inputAreaLength,height:Math.max(r.inputAreaWidth,d.tickOffset+n.ticklen+r.labelHeight)}).call(i.fill,n.bgcolor).attr("opacity",0),o.setTranslate(a,0,r.currentValueTotalHeight)}function M(e,t){var n=t._dims,r=n.inputAreaLength-2*d.railInset,a=l.ensureSingle(e,"rect",d.railRectClass);a.attr({width:r,height:d.railWidth,rx:d.railRadius,ry:d.railRadius,"shape-rendering":"crispEdges"}).call(i.stroke,t.bordercolor).call(i.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),o.setTranslate(a,d.railInset,.5*(n.inputAreaWidth-d.railWidth)+n.currentValueTotalHeight)}e.exports=function(e){var t=e._context.staticPlot,n=e._fullLayout,i=function(e,t){for(var n=e[d.name],r=[],a=0;a0?[0]:[]);function s(t){t._commandObserver&&(t._commandObserver.remove(),delete t._commandObserver),a.autoMargin(e,y(t))}if(l.enter().append("g").classed(d.containerClassName,!0).style("cursor",t?null:"ew-resize"),l.exit().each((function(){r.select(this).selectAll("g."+d.groupClassName).each(s)})).remove(),0!==i.length){var c=l.selectAll("g."+d.groupClassName).data(i,v);c.enter().append("g").classed(d.groupClassName,!0),c.exit().each(s).remove();for(var u=0;u0||T<0){var C={left:[-w,0],right:[w,0],top:[0,-w],bottom:[0,w]}[x.side];n.attr("transform",s(C[0],C[1]))}}}return X.call(H),O&&(L?X.on(".opacity",null):(S=0,C=!0,X.text(g).on("mouseover.opacity",(function(){r.select(this).transition().duration(f.SHOW_PLACEHOLDER).style("opacity",1)})).on("mouseout.opacity",(function(){r.select(this).transition().duration(f.HIDE_PLACEHOLDER).style("opacity",0)}))),X.call(d.makeEditable,{gd:e}).on("edit",(function(t){void 0!==b?o.call("_guiRestyle",e,v,t,b):o.call("_guiRelayout",e,v,t)})).on("cancel",(function(){this.text(this.attr("data-unformatted")).call(H)})).on("input",(function(e){this.text(e||" ").call(d.positionText,T.x,T.y)}))),X.classed("js-placeholder",C),k}}},42889:function(e,t,n){var r=n(69133),a=n(81449),i=n(60821).extendFlat,o=n(92018).overrideAll,l=n(6575),s=n(69100).templatedArray,c=s("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});e.exports=o(s("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:c,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:i(l({editType:"arraydraw"}),{}),font:r({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:a.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")},9275:function(e){e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"◄",right:"►",up:"▲",down:"▼"}}},58414:function(e,t,n){var r=n(11005),a=n(69932),i=n(42889),o=n(9275).name,l=i.buttons;function s(e,t,n){function o(n,a){return r.coerce(e,t,i,n,a)}o("visible",a(e,t,{name:"buttons",handleItemDefaults:c}).length>0)&&(o("active"),o("direction"),o("type"),o("showactive"),o("x"),o("y"),r.noneOrAll(e,t,["x","y"]),o("xanchor"),o("yanchor"),o("pad.t"),o("pad.r"),o("pad.b"),o("pad.l"),r.coerceFont(o,"font",n.font),o("bgcolor",n.paper_bgcolor),o("bordercolor"),o("borderwidth"))}function c(e,t){function n(n,a){return r.coerce(e,t,l,n,a)}n("visible","skip"===e.method||Array.isArray(e.args))&&(n("method"),n("args"),n("args2"),n("label"),n("execute"))}e.exports=function(e,t){a(e,t,{name:o,handleItemDefaults:s})}},64162:function(e,t,n){var r=n(12583),a=n(21086),i=n(45354),o=n(65967),l=n(11005),s=n(59663),c=n(69100).arrayEditor,u=n(55862).LINE_SPACING,d=n(9275),f=n(38676);function p(e){return e._index}function h(e,t){return+e.attr(d.menuIndexAttrName)===t._index}function m(e,t,n,r,a,i,o,l){t.active=o,c(e.layout,d.name,t).applyUpdate("active",o),"buttons"===t.type?v(e,r,null,null,t):"dropdown"===t.type&&(a.attr(d.menuIndexAttrName,"-1"),y(e,r,a,i,t),l||v(e,r,a,i,t))}function y(e,t,n,r,a){var i=l.ensureSingle(t,"g",d.headerClassName,(function(e){e.style("pointer-events","all")})),s=a._dims,c=a.active,u=a.buttons[c]||d.blankHeaderOpts,f={y:a.pad.t,yPad:0,x:a.pad.l,xPad:0,index:0},p={width:s.headerWidth,height:s.headerHeight};i.call(g,a,u,e).call(C,a,f,p),l.ensureSingle(t,"text",d.headerArrowClassName,(function(e){e.attr("text-anchor","end").call(o.font,a.font).text(d.arrowSymbol[a.direction])})).attr({x:s.headerWidth-d.arrowOffsetX+a.pad.l,y:s.headerHeight/2+d.textOffsetY+a.pad.t}),i.on("click",(function(){n.call(I,String(h(n,a)?-1:a._index)),v(e,t,n,r,a)})),i.on("mouseover",(function(){i.call(w)})),i.on("mouseout",(function(){i.call(k,a)})),o.setTranslate(t,s.lx,s.ly)}function v(e,t,n,i,o){n||(n=t).attr("pointer-events","all");var s=-1==+n.attr(d.menuIndexAttrName)&&"buttons"!==o.type?[]:o.buttons,c="dropdown"===o.type?d.dropdownButtonClassName:d.buttonClassName,u=n.selectAll("g."+c).data(l.filterVisible(s)),f=u.enter().append("g").classed(c,!0),p=u.exit();"dropdown"===o.type?(f.attr("opacity","0").transition().attr("opacity","1"),p.transition().attr("opacity","0").remove()):p.remove();var h=0,y=0,v=o._dims,b=-1!==["up","down"].indexOf(o.direction);"dropdown"===o.type&&(b?y=v.headerHeight+d.gapButtonHeader:h=v.headerWidth+d.gapButtonHeader),"dropdown"===o.type&&"up"===o.direction&&(y=-d.gapButtonHeader+d.gapButton-v.openHeight),"dropdown"===o.type&&"left"===o.direction&&(h=-d.gapButtonHeader+d.gapButton-v.openWidth);var x={x:v.lx+h+o.pad.l,y:v.ly+y+o.pad.t,yPad:d.gapButton,xPad:d.gapButton,index:0},A={l:x.x+o.borderwidth,t:x.y+o.borderwidth};u.each((function(l,s){var c=r.select(this);c.call(g,o,l,e).call(C,o,x),c.on("click",(function(){r.event.defaultPrevented||(l.execute&&(l.args2&&o.active===s?(m(e,o,0,t,n,i,-1),a.executeAPICommand(e,l.method,l.args2)):(m(e,o,0,t,n,i,s),a.executeAPICommand(e,l.method,l.args))),e.emit("plotly_buttonclicked",{menu:o,button:l,active:o.active}))})),c.on("mouseover",(function(){c.call(w)})),c.on("mouseout",(function(){c.call(k,o),u.call(T,o)}))})),u.call(T,o),b?(A.w=Math.max(v.openWidth,v.headerWidth),A.h=x.y-A.t):(A.w=x.x-A.l,A.h=Math.max(v.openHeight,v.headerHeight)),A.direction=o.direction,i&&(u.size()?function(e,t,n,r,a,i){var o,l,s,c=a.direction,u="up"===c||"down"===c,f=a._dims,p=a.active;if(u)for(l=0,s=0;s0?[0]:[]);if(o.enter().append("g").classed(d.containerClassName,!0).style("cursor","pointer"),o.exit().each((function(){r.select(this).selectAll("g."+d.headerGroupClassName).each(i)})).remove(),0!==n.length){var s=o.selectAll("g."+d.headerGroupClassName).data(n,p);s.enter().append("g").classed(d.headerGroupClassName,!0);for(var c=l.ensureSingle(o,"g",d.dropdownButtonGroupClassName,(function(e){e.style("pointer-events","all")})),u=0;uw,S=l.barLength+2*l.barPad,C=l.barWidth+2*l.barPad,I=h,L=y+v;L+C>c&&(L=c-C);var P=this.container.selectAll("rect.scrollbar-horizontal").data(A?[0]:[]);P.exit().on(".drag",null).remove(),P.enter().append("rect").classed("scrollbar-horizontal",!0).call(a.fill,l.barColor),A?(this.hbar=P.attr({rx:l.barRadius,ry:l.barRadius,x:I,y:L,width:S,height:C}),this._hbarXMin=I+S/2,this._hbarTranslateMax=w-S):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var E=v>k,M=l.barWidth+2*l.barPad,Z=l.barLength+2*l.barPad,O=h+m,R=y;O+M>s&&(O=s-M);var N=this.container.selectAll("rect.scrollbar-vertical").data(E?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(a.fill,l.barColor),E?(this.vbar=N.attr({rx:l.barRadius,ry:l.barRadius,x:O,y:R,width:M,height:Z}),this._vbarYMin=R+Z/2,this._vbarTranslateMax=k-Z):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var X=this.id,H=u-.5,D=E?d+M+.5:d+.5,W=f-.5,G=A?p+C+.5:p+.5,V=o._topdefs.selectAll("#"+X).data(A||E?[0]:[]);if(V.exit().remove(),V.enter().append("clipPath").attr("id",X).append("rect"),A||E?(this._clipRect=V.select("rect").attr({x:Math.floor(H),y:Math.floor(W),width:Math.ceil(D)-Math.floor(H),height:Math.ceil(G)-Math.floor(W)}),this.container.call(i.setClipUrl,X,this.gd),this.bg.attr({x:h,y:y,width:m,height:v})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),A||E){var z=r.behavior.drag().on("dragstart",(function(){r.event.sourceEvent.preventDefault()})).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(z);var F=r.behavior.drag().on("dragstart",(function(){r.event.sourceEvent.preventDefault(),r.event.sourceEvent.stopPropagation()})).on("drag",this._onBarDrag.bind(this));A&&this.hbar.on(".drag",null).call(F),E&&this.vbar.on(".drag",null).call(F)}this.setTranslate(t,n)},l.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},l.prototype._onBoxDrag=function(){var e=this.translateX,t=this.translateY;this.hbar&&(e-=r.event.dx),this.vbar&&(t-=r.event.dy),this.setTranslate(e,t)},l.prototype._onBoxWheel=function(){var e=this.translateX,t=this.translateY;this.hbar&&(e+=r.event.deltaY),this.vbar&&(t+=r.event.deltaY),this.setTranslate(e,t)},l.prototype._onBarDrag=function(){var e=this.translateX,t=this.translateY;if(this.hbar){var n=e+this._hbarXMin,a=n+this._hbarTranslateMax;e=(o.constrain(r.event.x,n,a)-n)/(a-n)*(this.position.w-this._box.w)}if(this.vbar){var i=t+this._vbarYMin,l=i+this._vbarTranslateMax;t=(o.constrain(r.event.y,i,l)-i)/(l-i)*(this.position.h-this._box.h)}this.setTranslate(e,t)},l.prototype.setTranslate=function(e,t){var n=this.position.w-this._box.w,r=this.position.h-this._box.h;if(e=o.constrain(e||0,0,n),t=o.constrain(t||0,0,r),this.translateX=e,this.translateY=t,this.container.call(i.setTranslate,this._box.l-this.position.l-e,this._box.t-this.position.t-t),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+e-.5),y:Math.floor(this.position.t+t-.5)}),this.hbar){var a=e/n;this.hbar.call(i.setTranslate,e+a*this._hbarTranslateMax,t)}if(this.vbar){var l=t/r;this.vbar.call(i.setTranslate,e,t+l*this._vbarTranslateMax)}}},55862:function(e){e.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}},39413:function(e){e.exports={axisRefDescription:function(e,t,n){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+n+"). If set to a",e,"axis ID followed by","*domain* (separated by a space), the position behaves like for","*paper*, but refers to the distance in fractions of the domain","length from the",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",n,"of the domain of the","second",e,"axis."].join(" ")}}},26324:function(e){e.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}},31130:function(e){e.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}},41962:function(e){e.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}},30513:function(e){e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:"−"}},48320:function(e,t){t.xmlns="http://www.w3.org/2000/xmlns/",t.svg="http://www.w3.org/2000/svg",t.xlink="http://www.w3.org/1999/xlink",t.svgAttrs={xmlns:t.svg,"xmlns:xlink":t.xlink}},40138:function(e,t,n){t.version=n(76989).version,n(24683),n(6565);for(var r=n(94134),a=t.register=r.register,i=n(60922),o=Object.keys(i),l=0;l",""," ",""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}},97062:function(e,t){t.isLeftAnchor=function(e){return"left"===e.xanchor||"auto"===e.xanchor&&e.x<=1/3},t.isCenterAnchor=function(e){return"center"===e.xanchor||"auto"===e.xanchor&&e.x>1/3&&e.x<2/3},t.isRightAnchor=function(e){return"right"===e.xanchor||"auto"===e.xanchor&&e.x>=2/3},t.isTopAnchor=function(e){return"top"===e.yanchor||"auto"===e.yanchor&&e.y>=2/3},t.isMiddleAnchor=function(e){return"middle"===e.yanchor||"auto"===e.yanchor&&e.y>1/3&&e.y<2/3},t.isBottomAnchor=function(e){return"bottom"===e.yanchor||"auto"===e.yanchor&&e.y<=1/3}},35533:function(e,t,n){var r=n(9373),a=r.mod,i=r.modHalf,o=Math.PI,l=2*o;function s(e){return Math.abs(e[1]-e[0])>l-1e-14}function c(e,t){return i(t-e,l)}function u(e,t){if(s(t))return!0;var n,r;t[0](r=a(r,l))&&(r+=l);var i=a(e,l),o=i+l;return i>=n&&i<=r||o>=n&&o<=r}function d(e,t,n,r,a,i,c){a=a||0,i=i||0;var u,d,f,p,h,m=s([n,r]);function y(e,t){return[e*Math.cos(t)+a,i-e*Math.sin(t)]}m?(u=0,d=o,f=l):n=a&&e<=i);var a,i},pathArc:function(e,t,n,r,a){return d(null,e,t,n,r,a,0)},pathSector:function(e,t,n,r,a){return d(null,e,t,n,r,a,1)},pathAnnulus:function(e,t,n,r,a,i){return d(e,t,n,r,a,i,1)}}},68372:function(e,t,n){var r=n(14248).decode,a=n(30498),i=Array.isArray,o=ArrayBuffer,l=DataView;function s(e){return o.isView(e)&&!(e instanceof l)}function c(e){return i(e)||s(e)}t.isTypedArray=s,t.isArrayOrTypedArray=c,t.isArray1D=function(e){return!c(e[0])},t.ensureArray=function(e,t){return i(e)||(e=[]),e.length=t,e};var u={u1c:"undefined"==typeof Uint8ClampedArray?void 0:Uint8ClampedArray,i1:"undefined"==typeof Int8Array?void 0:Int8Array,u1:"undefined"==typeof Uint8Array?void 0:Uint8Array,i2:"undefined"==typeof Int16Array?void 0:Int16Array,u2:"undefined"==typeof Uint16Array?void 0:Uint16Array,i4:"undefined"==typeof Int32Array?void 0:Int32Array,u4:"undefined"==typeof Uint32Array?void 0:Uint32Array,f4:"undefined"==typeof Float32Array?void 0:Float32Array,f8:"undefined"==typeof Float64Array?void 0:Float64Array};function d(e){return e.constructor===ArrayBuffer}function f(e,t,n){if(c(e)){if(c(e[0])){for(var r=n,a=0;aa.max?t.set(n):t.set(+e)}},integer:{coerceFunction:function(e,t,n,a){e%1||!r(e)||void 0!==a.min&&ea.max?t.set(n):t.set(+e)}},string:{coerceFunction:function(e,t,n,r){if("string"!=typeof e){var a="number"==typeof e;!0!==r.strict&&a?t.set(String(e)):t.set(n)}else r.noBlank&&!e?t.set(n):t.set(e)}},color:{coerceFunction:function(e,t,n){a(e).isValid()?t.set(e):t.set(n)}},colorlist:{coerceFunction:function(e,t,n){Array.isArray(e)&&e.length&&e.every((function(e){return a(e).isValid()}))?t.set(e):t.set(n)}},colorscale:{coerceFunction:function(e,t,n){t.set(o.get(e,n))}},angle:{coerceFunction:function(e,t,n){"auto"===e?t.set("auto"):r(e)?t.set(d(+e,360)):t.set(n)}},subplotid:{coerceFunction:function(e,t,n,r){var a=r.regex||u(n);"string"==typeof e&&a.test(e)?t.set(e):t.set(n)},validateFunction:function(e,t){var n=t.dflt;return e===n||"string"==typeof e&&!!u(n).test(e)}},flaglist:{coerceFunction:function(e,t,n,r){if(-1===(r.extras||[]).indexOf(e))if("string"==typeof e){for(var a=e.split("+"),i=0;i=r&&e<=a?e:u}if("string"!=typeof e&&"number"!=typeof e)return u;e=String(e);var c=T(n),v=e.charAt(0);!c||"G"!==v&&"g"!==v||(e=e.substr(1),n="");var w=c&&"chinese"===n.substr(0,7),k=e.match(w?b:g);if(!k)return u;var A=k[1],S=k[3]||"1",C=Number(k[5]||1),I=Number(k[7]||0),L=Number(k[9]||0),P=Number(k[11]||0);if(c){if(2===A.length)return u;var E;A=Number(A);try{var M=y.getComponentMethod("calendars","getCal")(n);if(w){var Z="i"===S.charAt(S.length-1);S=parseInt(S,10),E=M.newDate(A,M.toMonthIndex(A,S,Z),C)}else E=M.newDate(A,Number(S),C)}catch(R){return u}return E?(E.toJD()-m)*d+I*f+L*p+P*h:u}A=2===A.length?(Number(A)+2e3-x)%100+x:Number(A),S-=1;var O=new Date(Date.UTC(2e3,S,C,I,L));return O.setUTCFullYear(A),O.getUTCMonth()!==S||O.getUTCDate()!==C?u:O.getTime()+P*h},r=t.MIN_MS=t.dateTime2ms("-9999"),a=t.MAX_MS=t.dateTime2ms("9999-12-31 23:59:59.9999"),t.isDateTime=function(e,n){return t.dateTime2ms(e,n)!==u};var k=90*d,A=3*f,S=5*p;function C(e,t,n,r,a){if((t||n||r||a)&&(e+=" "+w(t,2)+":"+w(n,2),(r||a)&&(e+=":"+w(r,2),a))){for(var i=4;a%10==0;)i-=1,a/=10;e+="."+w(a,i)}return e}t.ms2DateTime=function(e,t,n){if("number"!=typeof e||!(e>=r&&e<=a))return u;t||(t=0);var i,o,l,c,g,b,x=Math.floor(10*s(e+.05,1)),w=Math.round(e-x/10);if(T(n)){var I=Math.floor(w/d)+m,L=Math.floor(s(e,d));try{i=y.getComponentMethod("calendars","getCal")(n).fromJD(I).formatDate("yyyy-mm-dd")}catch(P){i=v("G%Y-%m-%d")(new Date(w))}if("-"===i.charAt(0))for(;i.length<11;)i="-0"+i.substr(1);else for(;i.length<10;)i="0"+i;o=t=r+d&&e<=a-d))return u;var t=Math.floor(10*s(e+.05,1)),n=new Date(Math.round(e-t/10));return C(i("%Y-%m-%d")(n),n.getHours(),n.getMinutes(),n.getSeconds(),10*n.getUTCMilliseconds()+t)},t.cleanDate=function(e,n,r){if(e===u)return n;if(t.isJSDate(e)||"number"==typeof e&&isFinite(e)){if(T(r))return l.error("JS Dates and milliseconds are incompatible with world calendars",e),n;if(!(e=t.ms2DateTimeLocal(+e))&&void 0!==n)return n}else if(!t.isDateTime(e,r))return l.error("unrecognized date",e),n;return e};var I=/%\d?f/g,L=/%h/g,P={1:"1",2:"1",3:"2",4:"2"};function E(e,t,n,r){e=e.replace(I,(function(e){var n=Math.min(+e.charAt(1)||6,6);return(t/1e3%1+2).toFixed(n).substr(2).replace(/0+$/,"")||"0"}));var a=new Date(Math.floor(t+.05));if(e=e.replace(L,(function(){return P[n("%q")(a)]})),T(r))try{e=y.getComponentMethod("calendars","worldCalFmt")(e,t,r)}catch(i){return"Invalid"}return n(e)(a)}var M=[59,59.9,59.99,59.999,59.9999];t.formatDate=function(e,t,n,r,a,i){if(a=T(a)&&a,!t)if("y"===n)t=i.year;else if("m"===n)t=i.month;else{if("d"!==n)return function(e,t){var n=s(e+.05,d),r=w(Math.floor(n/f),2)+":"+w(s(Math.floor(n/p),60),2);if("M"!==t){o(t)||(t=0);var a=(100+Math.min(s(e/h,60),M[t])).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),r+=":"+a}return r}(e,n)+"\n"+E(i.dayMonthYear,e,r,a);t=i.dayMonth+"\n"+i.year}return E(t,e,r,a)};var Z=3*d;t.incrementMonth=function(e,t,n){n=T(n)&&n;var r=s(e,d);if(e=Math.round(e-r),n)try{var a=Math.round(e/d)+m,i=y.getComponentMethod("calendars","getCal")(n),o=i.fromJD(a);return t%12?i.add(o,t,"m"):i.add(o,t/12,"y"),(o.toJD()-m)*d+r}catch(u){l.error("invalid ms "+e+" in calendar "+n)}var c=new Date(e+Z);return c.setUTCMonth(c.getUTCMonth()+t)+r-Z},t.findExactDates=function(e,t){for(var n,r,a=0,i=0,l=0,s=0,c=T(t)&&y.getComponentMethod("calendars","getCal")(t),u=0;u1||m<0||m>1?null:{x:e+s*m,y:t+d*m}}function s(e,t,n,r,a){var i=r*e+a*t;if(i<0)return r*r+a*a;if(i>n){var o=r-e,l=a-t;return o*o+l*l}var s=r*t-a*e;return s*s/n}t.segmentsIntersect=l,t.segmentDistance=function(e,t,n,r,a,i,o,c){if(l(e,t,n,r,a,i,o,c))return 0;var u=n-e,d=r-t,f=o-a,p=c-i,h=u*u+d*d,m=f*f+p*p,y=Math.min(s(u,d,h,a-e,i-t),s(u,d,h,o-e,c-t),s(f,p,m,e-a,t-i),s(f,p,m,n-a,r-i));return Math.sqrt(y)},t.getTextLocation=function(e,t,n,l){if(e===a&&l===i||(r={},a=e,i=l),r[n])return r[n];var s=e.getPointAtLength(o(n-l/2,t)),c=e.getPointAtLength(o(n+l/2,t)),u=Math.atan((c.y-s.y)/(c.x-s.x)),d=e.getPointAtLength(o(n,t)),f={x:(4*d.x+s.x+c.x)/6,y:(4*d.y+s.y+c.y)/6,theta:u};return r[n]=f,f},t.clearLocationCache=function(){a=null},t.getVisibleSegment=function(e,t,n){var r,a,i=t.left,o=t.right,l=t.top,s=t.bottom,c=0,u=e.getTotalLength(),d=u;function f(t){var n=e.getPointAtLength(t);0===t?r=n:t===u&&(a=n);var c=n.xo?n.x-o:0,d=n.ys?n.y-s:0;return Math.sqrt(c*c+d*d)}for(var p=f(c);p;){if((c+=p+n)>d)return;p=f(c)}for(p=f(d);p;){if(c>(d-=p+n))return;p=f(d)}return{min:c,max:d,len:d-c,total:u,isClosed:0===c&&d===u&&Math.abs(r.x-a.x)<.1&&Math.abs(r.y-a.y)<.1}},t.findPointOnPath=function(e,t,n,r){for(var a,i,o,l=(r=r||{}).pathLength||e.getTotalLength(),s=r.tolerance||.001,c=r.iterationLimit||30,u=e.getPointAtLength(0)[n]>e.getPointAtLength(l)[n]?-1:1,d=0,f=0,p=l;d0?p=a:f=a,d++}return i}},80330:function(e,t,n){var r=n(74668),a=n(70930),i=n(24373),o=n(10300),l=n(81449).defaultLine,s=n(68372).isArrayOrTypedArray,c=i(l);function u(e,t){var n=e;return n[3]*=t,n}function d(e){if(r(e))return c;var t=i(e);return t.length?t:c}function f(e){return r(e)?e:1}e.exports={formatColor:function(e,t,n){var r=e.color;r&&r._inputArray&&(r=r._inputArray);var a,l,p,h,m,y=s(r),v=s(t),g=o.extractOpts(e),b=[];if(a=void 0!==g.colorscale?o.makeColorScaleFuncFromTrace(e):d,l=y?function(e,t){return void 0===e[t]?c:i(a(e[t]))}:d,p=v?function(e,t){return void 0===e[t]?1:f(e[t])}:f,y||v)for(var x=0;x1?(n*e+n*t)/n:e+t,a=String(r).length;if(a>16){var i=String(t).length;if(a>=String(e).length+i){var o=parseFloat(r).toPrecision(12);-1===o.indexOf("e+")&&(r=+o)}}return r}},11005:function(e,t,n){var r=n(12583),a=n(11910).aL,i=n(29208).GP,o=n(74668),l=n(30513),s=l.FP_SAFE,c=-s,u=l.BADNUM,d=e.exports={};d.adjustFormat=function(e){return!e||/^\d[.]\df/.test(e)||/[.]\d%/.test(e)?e:"0.f"===e?"~f":/^\d%/.test(e)?"~%":/^\ds/.test(e)?"~s":!/^[~,.0$]/.test(e)&&/[&fps]/.test(e)?"~"+e:e};var f={};d.warnBadFormat=function(e){var t=String(e);f[t]||(f[t]=1,d.warn('encountered bad format: "'+t+'"'))},d.noFormat=function(e){return String(e)},d.numberFormat=function(e){var t;try{t=i(d.adjustFormat(e))}catch(n){return d.warnBadFormat(e),d.noFormat}return t},d.nestedProperty=n(82740),d.keyedContainer=n(70107),d.relativeAttr=n(43547),d.isPlainObject=n(30498),d.toLogRange=n(9991),d.relinkPrivateKeys=n(83944);var p=n(68372);d.isArrayBuffer=p.isArrayBuffer,d.isTypedArray=p.isTypedArray,d.isArrayOrTypedArray=p.isArrayOrTypedArray,d.isArray1D=p.isArray1D,d.ensureArray=p.ensureArray,d.concat=p.concat,d.maxRowLength=p.maxRowLength,d.minRowLength=p.minRowLength;var h=n(9373);d.mod=h.mod,d.modHalf=h.modHalf;var m=n(43288);d.valObjectMeta=m.valObjectMeta,d.coerce=m.coerce,d.coerce2=m.coerce2,d.coerceFont=m.coerceFont,d.coercePattern=m.coercePattern,d.coerceHoverinfo=m.coerceHoverinfo,d.coerceSelectionMarkerOpacity=m.coerceSelectionMarkerOpacity,d.validate=m.validate;var y=n(29032);d.dateTime2ms=y.dateTime2ms,d.isDateTime=y.isDateTime,d.ms2DateTime=y.ms2DateTime,d.ms2DateTimeLocal=y.ms2DateTimeLocal,d.cleanDate=y.cleanDate,d.isJSDate=y.isJSDate,d.formatDate=y.formatDate,d.incrementMonth=y.incrementMonth,d.dateTick0=y.dateTick0,d.dfltRange=y.dfltRange,d.findExactDates=y.findExactDates,d.MIN_MS=y.MIN_MS,d.MAX_MS=y.MAX_MS;var v=n(57033);d.findBin=v.findBin,d.sorterAsc=v.sorterAsc,d.sorterDes=v.sorterDes,d.distinctVals=v.distinctVals,d.roundUp=v.roundUp,d.sort=v.sort,d.findIndexOfMin=v.findIndexOfMin,d.sortObjectKeys=n(67606);var g=n(64134);d.aggNums=g.aggNums,d.len=g.len,d.mean=g.mean,d.median=g.median,d.midRange=g.midRange,d.variance=g.variance,d.stdev=g.stdev,d.interp=g.interp;var b=n(60680);d.init2dArray=b.init2dArray,d.transposeRagged=b.transposeRagged,d.dot=b.dot,d.translationMatrix=b.translationMatrix,d.rotationMatrix=b.rotationMatrix,d.rotationXYMatrix=b.rotationXYMatrix,d.apply3DTransform=b.apply3DTransform,d.apply2DTransform=b.apply2DTransform,d.apply2DTransform2=b.apply2DTransform2,d.convertCssMatrix=b.convertCssMatrix,d.inverseTransformMatrix=b.inverseTransformMatrix;var x=n(35533);d.deg2rad=x.deg2rad,d.rad2deg=x.rad2deg,d.angleDelta=x.angleDelta,d.angleDist=x.angleDist,d.isFullCircle=x.isFullCircle,d.isAngleInsideSector=x.isAngleInsideSector,d.isPtInsideSector=x.isPtInsideSector,d.pathArc=x.pathArc,d.pathSector=x.pathSector,d.pathAnnulus=x.pathAnnulus;var T=n(97062);d.isLeftAnchor=T.isLeftAnchor,d.isCenterAnchor=T.isCenterAnchor,d.isRightAnchor=T.isRightAnchor,d.isTopAnchor=T.isTopAnchor,d.isMiddleAnchor=T.isMiddleAnchor,d.isBottomAnchor=T.isBottomAnchor;var w=n(56291);d.segmentsIntersect=w.segmentsIntersect,d.segmentDistance=w.segmentDistance,d.getTextLocation=w.getTextLocation,d.clearLocationCache=w.clearLocationCache,d.getVisibleSegment=w.getVisibleSegment,d.findPointOnPath=w.findPointOnPath;var k=n(60821);d.extendFlat=k.extendFlat,d.extendDeep=k.extendDeep,d.extendDeepAll=k.extendDeepAll,d.extendDeepNoArrays=k.extendDeepNoArrays;var A=n(7488);d.log=A.log,d.warn=A.warn,d.error=A.error;var S=n(95306);d.counterRegex=S.counter;var C=n(22253);d.throttle=C.throttle,d.throttleDone=C.done,d.clearThrottle=C.clear;var I=n(1477);function L(e){var t={};for(var n in e)for(var r=e[n],a=0;as||e=t)&&o(e)&&e>=0&&e%1==0},d.noop=n(76101),d.identity=n(61763),d.repeat=function(e,t){for(var n=new Array(t),r=0;rn?Math.max(n,Math.min(t,e)):Math.max(t,Math.min(n,e))},d.bBoxIntersect=function(e,t,n){return n=n||0,e.left<=t.right+n&&t.left<=e.right+n&&e.top<=t.bottom+n&&t.top<=e.bottom+n},d.simpleMap=function(e,t,n,r,a){for(var i=e.length,o=new Array(i),l=0;l=Math.pow(2,n)?a>10?(d.warn("randstr failed uniqueness"),s):e(t,n,r,(a||0)+1):s},d.OptionControl=function(e,t){e||(e={}),t||(t="opt");var n={optionList:[],_newoption:function(r){r[t]=e,n[r.name]=r,n.optionList.push(r)}};return n["_"+t]=e,n},d.smooth=function(e,t){if((t=Math.round(t)||0)<2)return e;var n,r,a,i,o=e.length,l=2*o,s=2*t-1,c=new Array(s),u=new Array(o);for(n=0;n=l&&(a-=l*Math.floor(a/l)),a<0?a=-1-a:a>=o&&(a=l-1-a),i+=e[a]*c[r];u[n]=i}return u},d.syncOrAsync=function(e,t,n){var r;function a(){return d.syncOrAsync(e,t,n)}for(;e.length;)if((r=(0,e.splice(0,1)[0])(t))&&r.then)return r.then(a);return n&&n(t)},d.stripTrailingSlash=function(e){return"/"===e.substr(-1)?e.substr(0,e.length-1):e},d.noneOrAll=function(e,t,n){if(e){var r,a=!1,i=!0;for(r=0;r0?t:0}))},d.fillArray=function(e,t,n,r){if(r=r||d.identity,d.isArrayOrTypedArray(e))for(var a=0;a1?a+o[1]:"";if(i&&(o.length>1||l.length>4||n))for(;r.test(l);)l=l.replace(r,"$1"+i+"$2");return l+s},d.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var N=/^\w*$/;d.templateString=function(e,t){var n={};return e.replace(d.TEMPLATE_STRING_REGEX,(function(e,r){var a;return N.test(r)?a=t[r]:(n[r]=n[r]||d.nestedProperty(t,r).get,a=n[r]()),d.isValidTextValue(a)?a:""}))};var X={max:10,count:0,name:"hovertemplate"};d.hovertemplateString=function(){return V.apply(X,arguments)};var H={max:10,count:0,name:"texttemplate"};d.texttemplateString=function(){return V.apply(H,arguments)};var D=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/,W={max:10,count:0,name:"texttemplate",parseMultDiv:!0};d.texttemplateStringForShapes=function(){return V.apply(W,arguments)};var G=/^[:|\|]/;function V(e,t,n){var r=this,i=arguments;t||(t={});var o={};return e.replace(d.TEMPLATE_STRING_REGEX,(function(e,l,s){var c="_xother"===l||"_yother"===l,u="_xother_"===l||"_yother_"===l,f="xother_"===l||"yother_"===l,p="xother"===l||"yother"===l||c||f||u,h=l;(c||u)&&(h=h.substring(1)),(f||u)&&(h=h.substring(0,h.length-1));var m,y,v,g,b,x=null,T=null;if(r.parseMultDiv){var w=(b=(g=h).match(D))?{key:b[1],op:b[2],number:Number(b[3])}:{key:g,op:null,number:null};h=w.key,x=w.op,T=w.number}if(p){if(void 0===(m=t[h]))return""}else for(v=3;v=48&&o<=57,c=l>=48&&l<=57;if(s&&(r=10*r+o-48),c&&(a=10*a+l-48),!s||!c){if(r!==a)return r-a;if(o!==l)return o-l}}return a-r};var z=2e9;d.seedPseudoRandom=function(){z=2e9},d.pseudoRandom=function(){var e=z;return z=(69069*z+1)%4294967296,Math.abs(z-e)<429496729?d.pseudoRandom():z/4294967296},d.fillText=function(e,t,n){var r=Array.isArray(n)?function(e){n.push(e)}:function(e){n.text=e},a=d.extractOption(e,t,"htx","hovertext");if(d.isValidTextValue(a))return r(a);var i=d.extractOption(e,t,"tx","text");return d.isValidTextValue(i)?r(i):void 0},d.isValidTextValue=function(e){return e||0===e},d.formatPercent=function(e,t){t=t||0;for(var n=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",r=0;r1&&(c=1):c=0,d.strTranslate(a-c*(n+o),i-c*(r+l))+d.strScale(c)+(s?"rotate("+s+(t?"":" "+n+" "+r)+")":"")},d.setTransormAndDisplay=function(e,t){e.attr("transform",d.getTextTransform(t)),e.style("display",t.scale?null:"none")},d.ensureUniformFontSize=function(e,t){var n=d.extendFlat({},t);return n.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),n},d.join2=function(e,t,n){var r=e.length;return r>1?e.slice(0,-1).join(t)+n+e[r-1]:e.join(t)},d.bigFont=function(e){return Math.round(1.2*e)};var F=d.getFirefoxVersion(),Y=null!==F&&F<86;d.getPositionFromD3Event=function(){return Y?[r.event.layerX,r.event.layerY]:[r.event.offsetX,r.event.offsetY]}},30498:function(e){e.exports=function(e){return window&&window.process&&window.process.versions?"[object Object]"===Object.prototype.toString.call(e):"[object Object]"===Object.prototype.toString.call(e)&&Object.getPrototypeOf(e).hasOwnProperty("hasOwnProperty")}},70107:function(e,t,n){var r=n(82740),a=/^\w*$/;e.exports=function(e,t,n,i){var o,l,s;n=n||"name",i=i||"value";var c={};t&&t.length?(s=r(e,t),l=s.get()):l=e,t=t||"";var u={};if(l)for(o=0;o2)return c[t]=2|c[t],f.set(e,null);if(d){for(o=t;o1){var t=["LOG:"];for(e=0;e1){var n=[];for(e=0;e"),"long")}},i.warn=function(){var e;if(r.logging>0){var t=["WARN:"];for(e=0;e0){var n=[];for(e=0;e"),"stick")}},i.error=function(){var e;if(r.logging>0){var t=["ERROR:"];for(e=0;e0){var n=[];for(e=0;e"),"stick")}}},21116:function(e,t,n){var r=n(12583);e.exports=function(e,t,n){var a=e.selectAll("g."+n.replace(/\s/g,".")).data(t,(function(e){return e[0].trace.uid}));a.exit().remove(),a.enter().append("g").attr("class",n),a.order();var i=e.classed("rangeplot")?"nodeRangePlot3":"node3";return a.each((function(e){e[0][i]=r.select(this)})),a}},60680:function(e,t,n){var r=n(89700);t.init2dArray=function(e,t){for(var n=new Array(e),r=0;rt/2?e-Math.round(e/t)*t:e}}},82740:function(e,t,n){var r=n(74668),a=n(68372).isArrayOrTypedArray;function i(e,t){return function(){var n,r,o,l,s,c=e;for(l=0;l/g),s=0;si||c===a||cl||t&&s(e))}:function(e,t){var s=e[0],c=e[1];if(s===a||si||c===a||cl)return!1;var u,d,f,p,h,m=n.length,y=n[0][0],v=n[0][1],g=0;for(u=1;uMath.max(d,y)||c>Math.max(f,v)))if(cu||Math.abs(r(o,f))>a)return!0;return!1},i.filter=function(e,t){var n=[e[0]],r=0,a=0;function o(o){e.push(o);var l=n.length,s=r;n.splice(a+1);for(var c=s+1;c1&&o(e.pop()),{addPt:o,raw:e,filtered:n}}},91743:function(e,t,n){var r=n(85884),a=n(45271);e.exports=function(e,t,i){var o=e._fullLayout,l=!0;return o._glcanvas.each((function(r){if(r.regl)r.regl.preloadCachedCode(i);else if(!r.pick||o._has("parcoords")){try{r.regl=a({canvas:this,attributes:{antialias:!r.pick,preserveDrawingBuffer:!0},pixelRatio:e._context.plotGlPixelRatio||n.g.devicePixelRatio,extensions:t||[],cachedCode:i||{}})}catch(s){l=!1}r.regl||(l=!1),l&&this.addEventListener("webglcontextlost",(function(t){e&&e.emit&&e.emit("plotly_webglcontextlost",{event:t,layer:r.key})}),!1)}})),l||r({container:o._glcontainer.node()}),l}},67397:function(e,t,n){var r=n(74668),a=n(14488);e.exports=function(e){var t,n;if("string"!=typeof(t=e&&e.hasOwnProperty("userAgent")?e.userAgent:("undefined"!=typeof navigator&&(n=navigator.userAgent),n&&n.headers&&"string"==typeof n.headers["user-agent"]&&(n=n.headers["user-agent"]),n)))return!0;var i=a({ua:{headers:{"user-agent":t}},tablet:!0,featureDetect:!1});if(!i)for(var o=t.split(" "),l=1;l-1;s--){var c=o[s];if("Version/"===c.substr(0,8)){var u=c.substr(8).split(".")[0];if(r(u)&&(u=+u),u>=13)return!0}}return i}},2695:function(e){e.exports=function(e,t){if(t instanceof RegExp){for(var n=t.toString(),r=0;ra.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--))},startSequence:function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0},stopSequence:function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1},undo:function(e){var t,n;if(!(void 0===e.undoQueue||isNaN(e.undoQueue.index)||e.undoQueue.index<=0)){for(e.undoQueue.index--,t=e.undoQueue.queue[e.undoQueue.index],e.undoQueue.inSequence=!0,n=0;n=e.undoQueue.queue.length)){for(t=e.undoQueue.queue[e.undoQueue.index],e.undoQueue.inSequence=!0,n=0;nt}function d(e,t){return e>=t}t.findBin=function(e,t,n){if(r(t.start))return n?Math.ceil((e-t.start)/t.size-l)-1:Math.floor((e-t.start)/t.size+l);var i,o,f=0,p=t.length,h=0,m=p>1?(t[p-1]-t[0])/(p-1):1;for(o=m>=0?n?s:c:n?d:u,e+=m*l*(n?-1:1)*(m>=0?1:-1);f90&&a.log("Long binary search..."),f-1},t.sorterAsc=function(e,t){return e-t},t.sorterDes=function(e,t){return t-e},t.distinctVals=function(e){var n,r=e.slice();for(r.sort(t.sorterAsc),n=r.length-1;n>-1&&r[n]===o;n--);for(var a,i=r[n]-r[0]||1,l=i/(n||1)/1e4,s=[],c=0;c<=n;c++){var u=r[c],d=u-a;void 0===a?(s.push(u),a=u):d>l&&(i=Math.min(i,d),s.push(u),a=u)}return{vals:s,minDiff:i}},t.roundUp=function(e,t,n){for(var r,a=0,i=t.length-1,o=0,l=n?0:1,s=n?1:0,c=n?Math.ceil:Math.floor;a0&&(r=1),n&&r)return e.sort(t)}return r?e:e.reverse()},t.findIndexOfMin=function(e,t){t=t||i;for(var n,r=1/0,a=0;ai.length)&&(o=i.length),r(n)||(n=!1),a(i[0])){for(s=new Array(o),l=0;le.length-1)return e[e.length-1];var n=t%1;return n*e[Math.ceil(t)]+(1-n)*e[Math.floor(t)]}},59663:function(e,t,n){var r=n(12583),a=n(11005),i=a.strTranslate,o=n(48320),l=n(55862).LINE_SPACING,s=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;t.convertToTspans=function(e,n,y){var I=e.text(),L=!e.attr("data-notex")&&n&&n._context.typesetMath&&"undefined"!=typeof MathJax&&I.match(s),M=r.select(e.node().parentNode);if(!M.empty()){var Z=e.attr("class")?e.attr("class").split(" ")[0]:"text";return Z+="-math",M.selectAll("svg."+Z).remove(),M.selectAll("g."+Z+"-group").remove(),e.style("display",null).attr({"data-unformatted":I,"data-math":"N"}),L?(n&&n._promises||[]).push(new Promise((function(t){e.style("display","none");var n=parseInt(e.node().style.fontSize,10),o={fontSize:n};!function(e,t,n){var i,o,l,s,f=parseInt((MathJax.version||"").split(".")[0]);if(2===f||3===f){var p=function(){var n="math-output-"+a.randstr({},64),i=(s=r.select("body").append("div").attr({id:n}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(e.replace(c,"\\lt ").replace(u,"\\gt "))).node();return 2===f?MathJax.Hub.Typeset(i):MathJax.typeset([i])},h=function(){var t=s.select(2===f?".MathJax_SVG":".MathJax"),i=!t.empty()&&s.select("svg").node();if(i){var o,l=i.getBoundingClientRect();o=2===f?r.select("body").select("#MathJax_SVG_glyphs"):t.select("defs"),n(t,o,l)}else a.log("There was an error in the tex syntax.",e),n();s.remove()};2===f?MathJax.Hub.Queue((function(){return o=a.extendDeepAll({},MathJax.Hub.config),l=MathJax.Hub.processSectionDelay,void 0!==MathJax.Hub.processSectionDelay&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:d},displayAlign:"left"})}),(function(){if("SVG"!==(i=MathJax.Hub.config.menuSettings.renderer))return MathJax.Hub.setRenderer("SVG")}),p,h,(function(){if("SVG"!==i)return MathJax.Hub.setRenderer(i)}),(function(){return void 0!==l&&(MathJax.Hub.processSectionDelay=l),MathJax.Hub.Config(o)})):3===f&&(o=a.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=d,"svg"!==(i=MathJax.config.startup.output)&&(MathJax.config.startup.output="svg"),MathJax.startup.defaultReady(),MathJax.startup.promise.then((function(){p(),h(),"svg"!==i&&(MathJax.config.startup.output=i),MathJax.config=o})))}else a.warn("No MathJax version:",MathJax.version)}(L[2],o,(function(r,a,o){M.selectAll("svg."+Z).remove(),M.selectAll("g."+Z+"-group").remove();var l=r&&r.select("svg");if(!l||!l.node())return O(),void t();var s=M.append("g").classed(Z+"-group",!0).attr({"pointer-events":"none","data-unformatted":I,"data-math":"Y"});s.node().appendChild(l.node()),a&&a.node()&&l.node().insertBefore(a.node().cloneNode(!0),l.node().firstChild);var c=o.width,u=o.height;l.attr({class:Z,height:u,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var d=e.node().style.fill||"black",f=l.select("g");f.attr({fill:d,stroke:d});var p=f.node().getBoundingClientRect(),h=p.width,m=p.height;(h>c||m>u)&&(l.style("overflow","hidden"),h=(p=l.node().getBoundingClientRect()).width,m=p.height);var v=+e.attr("x"),g=+e.attr("y"),b=-(n||e.node().getBoundingClientRect().height)/4;if("y"===Z[0])s.attr({transform:"rotate("+[-90,v,g]+")"+i(-h/2,b-m/2)});else if("l"===Z[0])g=b-m/2;else if("a"===Z[0]&&0!==Z.indexOf("atitle"))v=0,g=b;else{var x=e.attr("text-anchor");v-=h*("middle"===x?.5:"end"===x?1:0),g=g+b-m/2}l.attr({x:v,y:g}),y&&y.call(e,s),t(s)}))}))):O(),e}function O(){M.empty()||(Z=e.attr("class")+"-math",M.select("svg."+Z).remove()),e.text("").style("white-space","pre"),function(e,t){t=t.replace(v," ");var n,i=!1,s=[],c=-1;function u(){c++;var t=document.createElementNS(o.svg,"tspan");r.select(t).attr({class:"line",dy:c*l+"em"}),e.appendChild(t),n=t;var a=s;if(s=[{node:t}],a.length>1)for(var i=1;i doesnt match end tag <"+e+">. Pretending it did match.",t),n=s[s.length-1].node}else a.log("Ignoring unexpected end tag .",t)}x.test(t)?u():(n=e,s=[{node:e}]);for(var L=t.split(g),M=0;M|>|>)/g,d=[["$","$"],["\\(","\\)"]],f={sup:"font-size:70%",sub:"font-size:70%",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},p={sub:"0.3em",sup:"-0.6em"},h={sub:"-0.21em",sup:"0.42em"},m="​",y=["http:","https:","mailto:","",void 0,":"],v=t.NEWLINES=/(\r\n?|\n)/g,g=/(<[^<>]*>)/,b=/<(\/?)([^ >]*)(\s+(.*))?>/i,x=//i;t.BR_TAG_ALL=//gi;var T=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,w=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,k=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,A=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function S(e,t){if(!e)return null;var n=e.match(t),r=n&&(n[3]||n[4]);return r&&P(r)}var C=/(^|;)\s*color:/;t.plainText=function(e,t){for(var n=void 0!==(t=t||{}).len&&-1!==t.len?t.len:1/0,r=void 0!==t.allowedTags?t.allowedTags:["br"],a=e.split(g),i=[],o="",l=0,s=0;s3?i.push(c.substr(0,p-3)+"..."):i.push(c.substr(0,p));break}o=""}}return i.join("")};var I={mu:"μ",amp:"&",lt:"<",gt:">",nbsp:" ",times:"×",plusmn:"±",deg:"°"},L=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function P(e){return e.replace(L,(function(e,t){return("#"===t.charAt(0)?function(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var n=String.fromCharCode;return e<=65535?n(e):n(55232+(e>>10),e%1024+56320)}}("x"===t.charAt(1)?parseInt(t.substr(2),16):parseInt(t.substr(1),10)):I[t])||e}))}function E(e){var t=encodeURI(decodeURI(e)),n=document.createElement("a"),r=document.createElement("a");n.href=e,r.href=t;var a=n.protocol,i=r.protocol;return-1!==y.indexOf(a)&&-1!==y.indexOf(i)?t:""}function M(e,t,n){var r,i,o,l=n.horizontalAlign,s=n.verticalAlign||"top",c=e.node().getBoundingClientRect(),u=t.node().getBoundingClientRect();return i="bottom"===s?function(){return c.bottom-r.height}:"middle"===s?function(){return c.top+(c.height-r.height)/2}:function(){return c.top},o="right"===l?function(){return c.right-r.width}:"center"===l?function(){return c.left+(c.width-r.width)/2}:function(){return c.left},function(){r=this.node().getBoundingClientRect();var e=o()-u.left,t=i()-u.top,l=n.gd||{};if(n.gd){l._fullLayout._calcInverseTransform(l);var s=a.apply3DTransform(l._fullLayout._invTransform)(e,t);e=s[0],t=s[1]}return this.style({top:t+"px",left:e+"px","z-index":1e3}),this}}t.convertEntities=P,t.sanitizeHTML=function(e){e=e.replace(v," ");for(var t=document.createElement("p"),n=t,a=[],i=e.split(g),o=0;oi.ts+t?s():i.timer=setTimeout((function(){s(),i.timer=null}),t)},t.done=function(e){var t=n[e];return t&&t.timer?new Promise((function(e){var n=t.onDone;t.onDone=function(){n&&n(),e(),t.onDone=null}})):Promise.resolve()},t.clear=function(e){if(e)r(n[e]),delete n[e];else for(var a in n)t.clear(a)}},9991:function(e,t,n){var r=n(74668);e.exports=function(e,t){if(e>0)return Math.log(e)/Math.LN10;var n=Math.log(Math.min(t[0],t[1]))/Math.LN10;return r(n)||(n=Math.log(Math.max(t[0],t[1]))/Math.LN10-6),n}},18012:function(e){e.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}},18791:function(e){e.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}},26937:function(e,t,n){var r=n(94134);e.exports=function(e){for(var t,n,a=r.layoutArrayContainers,i=r.layoutArrayRegexes,o=e.split("[")[0],l=0;l0&&o.log("Clearing previous rejected promises from queue."),e._promises=[]},t.cleanLayout=function(e){var n,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var i=(l.subplotsRegistry.cartesian||{}).attrRegex,s=(l.subplotsRegistry.polar||{}).attrRegex,d=(l.subplotsRegistry.ternary||{}).attrRegex,f=(l.subplotsRegistry.gl3d||{}).attrRegex,m=Object.keys(e);for(n=0;n3?(O.x=1.02,O.xanchor="left"):O.x<-2&&(O.x=-.02,O.xanchor="right"),O.y>3?(O.y=1.02,O.yanchor="bottom"):O.y<-2&&(O.y=-.02,O.yanchor="top")),h(e),"rotate"===e.dragmode&&(e.dragmode="orbit"),c.clean(e),e.template&&e.template.layout&&t.cleanLayout(e.template.layout),e},t.cleanData=function(e){for(var n=0;n0)return e.substr(0,t)}t.hasParent=function(e,t){for(var n=x(t);n;){if(n in e)return!0;n=x(n)}return!1};var T=["x","y","z"];t.clearAxisTypes=function(e,t,n){for(var r=0;r1&&i.warn("Full array edits are incompatible with other edits",d);var g=n[""][""];if(c(g))t.set(null);else{if(!Array.isArray(g))return i.warn("Unrecognized full array edit value",d,g),!0;t.set(g)}return!m&&(f(y,v),p(e),!0)}var b,x,T,w,k,A,S,C,I=Object.keys(n).map(Number).sort(o),L=t.get(),P=L||[],E=u(v,d).get(),M=[],Z=-1,O=P.length;for(b=0;bP.length-(S?0:1))i.warn("index out of range",d,T);else if(void 0!==A)k.length>1&&i.warn("Insertion & removal are incompatible with edits to the same index.",d,T),c(A)?M.push(T):S?("add"===A&&(A={}),P.splice(T,0,A),E&&E.splice(T,0,{})):i.warn("Unrecognized full object edit value",d,T,A),-1===Z&&(Z=T);else for(x=0;x=0;b--)P.splice(M[b],1),E&&E.splice(M[b],1);if(P.length?L||t.set(P):t.set(null),m)return!1;if(f(y,v),h!==a){var R;if(-1===Z)R=I;else{for(O=Math.max(P.length,O),R=[],b=0;b=Z);b++)R.push(T);for(b=Z;b=e.data.length||a<-e.data.length)throw new Error(n+" must be valid indices for gd.data.");if(t.indexOf(a,r+1)>-1||a>=0&&t.indexOf(-e.data.length+a)>-1||a<0&&t.indexOf(e.data.length+a)>-1)throw new Error("each index in "+n+" must be unique.")}}function R(e,t,n){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(void 0===t)throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),O(e,t,"currentIndices"),void 0===n||Array.isArray(n)||(n=[n]),void 0!==n&&O(e,n,"newIndices"),void 0!==n&&t.length!==n.length)throw new Error("current and new indices must be of equal length.")}function N(e,t,n,r,i){!function(e,t,n,r){var a=o.isPlainObject(r);if(!Array.isArray(e.data))throw new Error("gd.data must be an array");if(!o.isPlainObject(t))throw new Error("update must be a key:value object");if(void 0===n)throw new Error("indices must be an integer or array of integers");for(var i in O(e,n,"indices"),t){if(!Array.isArray(t[i])||t[i].length!==n.length)throw new Error("attribute "+i+" must be an array of length equal to indices array length");if(a&&(!(i in r)||!Array.isArray(r[i])||r[i].length!==t[i].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}(e,t,n,r);for(var s=function(e,t,n,r){var i,s,c,u,d,f=o.isPlainObject(r),p=[];for(var h in Array.isArray(n)||(n=[n]),n=Z(n,e.data.length-1),t)for(var m=0;m-1&&-1===n.indexOf("grouptitlefont")?s(n,n.replace("titlefont","title.font")):n.indexOf("titleposition")>-1?s(n,n.replace("titleposition","title.position")):n.indexOf("titleside")>-1?s(n,n.replace("titleside","title.side")):n.indexOf("titleoffset")>-1&&s(n,n.replace("titleoffset","title.offset")):s(n,n.replace("title","title.text"));function s(t,n){e[n]=e[t],delete e[t]}}function F(e,t,n){e=o.getGraphDiv(e),k.clearPromiseQueue(e);var r={};if("string"==typeof t)r[t]=n;else{if(!o.isPlainObject(t))return o.warn("Relayout fail.",t,n),Promise.reject();r=o.extendFlat({},t)}Object.keys(r).length&&(e.changed=!0);var a=J(e,r),i=a.flags;i.calc&&(e.calcdata=void 0);var l=[f.previousPromises];i.layoutReplot?l.push(A.layoutReplot):Object.keys(r).length&&(Y(e,i,a)||f.supplyDefaults(e),i.legend&&l.push(A.doLegend),i.layoutstyle&&l.push(A.layoutStyles),i.axrange&&_(l,a.rangesAltered),i.ticks&&l.push(A.doTicksRelayout),i.modebar&&l.push(A.doModeBar),i.camera&&l.push(A.doCamera),i.colorbars&&l.push(A.doColorBars),l.push(L)),l.push(f.rehover,f.redrag,f.reselect),c.add(e,F,[e,a.undoit],F,[e,a.redoit]);var s=o.syncOrAsync(l,e);return s&&s.then||(s=Promise.resolve(e)),s.then((function(){return e.emit("plotly_relayout",a.eventData),e}))}function Y(e,t,n){var r,a,i=e._fullLayout;if(!t.axrange)return!1;for(var l in t)if("axrange"!==l&&t[l])return!1;var s=function(e,t){return o.coerce(r,a,m,e,t)},c={};for(var u in n.rangesAltered){var d=p.id2name(u);if(r=e.layout[d],a=i[d],h(r,a,s,c),a._matchGroup)for(var f in a._matchGroup)if(f!==u){var y=i[p.id2name(f)];y.autorange=a.autorange,y.range=a.range.slice(),y._input.range=a.range.slice()}}return!0}function _(e,t){var n=t?function(e){var n=[];for(var r in t){var a=p.getFromId(e,r);if(n.push(r),-1!==(a.ticklabelposition||"").indexOf("inside")&&a._anchorAxis&&n.push(a._anchorAxis._id),a._matchGroup)for(var i in a._matchGroup)t[i]||n.push(i)}return p.draw(e,n,{skipTitle:!0})}:function(e){return p.draw(e,"redraw")};e.push(x,A.doAutoRangeAndConstraints,n,A.drawData,A.finalDraw)}var B=/^[xyz]axis[0-9]*\.range(\[[0|1]\])?$/,j=/^[xyz]axis[0-9]*\.autorange$/,K=/^[xyz]axis[0-9]*\.domain(\[[0|1]\])?$/;function J(e,t){var n,r,a,i=e.layout,s=e._fullLayout,c=s._guiEditing,f=W(s._preGUI,c),h=Object.keys(t),m=p.list(e),y=o.extendDeepAll({},t),v={};for(z(t),h=Object.keys(t),r=0;r0&&"string"!=typeof O.parts[N];)N--;var X=O.parts[N],H=O.parts[N-1]+"."+X,G=O.parts.slice(0,N).join("."),V=l(e.layout,G).get(),F=l(s,G).get(),Y=O.get();if(void 0!==R){A[Z]=R,I[Z]="reverse"===X?R:D(Y);var _=d.getLayoutValObject(s,O.parts);if(_&&_.impliedEdits&&null!==R)for(var J in _.impliedEdits)L(o.relativeAttr(Z,J),_.impliedEdits[J]);if(-1!==["width","height"].indexOf(Z))if(R){L("autosize",null);var Q="height"===Z?"width":"height";L(Q,s[Q])}else s[Z]=e._initialAutoSize[Z];else if("autosize"===Z)L("width",R?null:s.width),L("height",R?null:s.height);else if(H.match(B))M(H),l(s,G+"._inputRange").set(null);else if(H.match(j)){M(H),l(s,G+"._inputRange").set(null);var q=l(s,G).get();q._inputDomain&&(q._input.domain=q._inputDomain.slice())}else H.match(K)&&l(s,G+"._inputDomain").set(null);if("type"===X){P=V;var $="linear"===F.type&&"log"===R,ee="log"===F.type&&"linear"===R;if($||ee){if(P&&P.range)if(F.autorange)$&&(P.range=P.range[1]>P.range[0]?[1,2]:[2,1]);else{var te=P.range[0],ne=P.range[1];$?(te<=0&&ne<=0&&L(G+".autorange",!0),te<=0?te=ne/1e6:ne<=0&&(ne=te/1e6),L(G+".range[0]",Math.log(te)/Math.LN10),L(G+".range[1]",Math.log(ne)/Math.LN10)):(L(G+".range[0]",Math.pow(10,te)),L(G+".range[1]",Math.pow(10,ne)))}else L(G+".autorange",!0);Array.isArray(s._subplots.polar)&&s._subplots.polar.length&&s[O.parts[0]]&&"radialaxis"===O.parts[1]&&delete s[O.parts[0]]._subplot.viewInitial["radialaxis.range"],u.getComponentMethod("annotations","convertCoords")(e,F,R,L),u.getComponentMethod("images","convertCoords")(e,F,R,L)}else L(G+".autorange",!0),L(G+".range",null);l(s,G+"._inputRange").set(null)}else if(X.match(C)){var re=l(s,Z).get(),ae=(R||{}).type;ae&&"-"!==ae||(ae="linear"),u.getComponentMethod("annotations","convertCoords")(e,re,ae,L),u.getComponentMethod("images","convertCoords")(e,re,ae,L)}var ie=w.containerArrayMatch(Z);if(ie){n=ie.array,r=ie.index;var oe=ie.property,le=_||{editType:"calc"};""!==r&&""===oe&&(w.isAddVal(R)?I[Z]=null:w.isRemoveVal(R)?I[Z]=(l(i,n).get()||[])[r]:o.warn("unrecognized full object value",t)),S.update(T,le),v[n]||(v[n]={});var se=v[n][r];se||(se=v[n][r]={}),se[oe]=R,delete t[Z]}else"reverse"===X?(V.range?V.range.reverse():(L(G+".autorange",!0),V.range=[1,0]),F.autorange?T.calc=!0:T.plot=!0):("dragmode"===Z&&(!1===R&&!1!==Y||!1!==R&&!1===Y)||s._has("scatter-like")&&s._has("regl")&&"dragmode"===Z&&("lasso"===R||"select"===R)&&"lasso"!==Y&&"select"!==Y||s._has("gl2d")?T.plot=!0:_?S.update(T,_):T.calc=!0,O.set(R))}}for(n in v)w.applyContainerArrayChanges(e,f(i,n),v[n],T,f)||(T.plot=!0);for(var ce in E){var ue=(P=p.getFromId(e,ce))&&P._constraintGroup;if(ue)for(var de in T.calc=!0,ue)E[de]||(p.getFromId(e,de)._constraintShrinkable=!0)}(U(e)||t.height||t.width)&&(T.plot=!0);var fe=s.shapes;for(r=0;r1;)if(r.pop(),void 0!==(n=l(t,r.join(".")+".uirevision").get()))return n;return t.uirevision}function re(e,t){for(var n=0;n=a.length?a[0]:a[e]:a}function s(e){return Array.isArray(i)?e>=i.length?i[0]:i[e]:i}function c(e,t){var n=0;return function(){if(e&&++n===t)return e()}}return void 0===r._frameWaitingCnt&&(r._frameWaitingCnt=0),new Promise((function(i,u){function d(){e.emit("plotly_animating"),r._lastFrameAt=-1/0,r._timeToNext=0,r._runningTransitions=0,r._currentFrame=null;var t=function(){r._animationRaf=window.requestAnimationFrame(t),Date.now()-r._lastFrameAt>r._timeToNext&&function(){r._currentFrame&&r._currentFrame.onComplete&&r._currentFrame.onComplete();var t=r._currentFrame=r._frameQueue.shift();if(t){var n=t.name?t.name.toString():null;e._fullLayout._currentFrame=n,r._lastFrameAt=Date.now(),r._timeToNext=t.frameOpts.duration,f.transition(e,t.frame.data,t.frame.layout,k.coerceTraceIndices(e,t.frame.traces),t.frameOpts,t.transitionOpts).then((function(){t.onComplete&&t.onComplete()})),e.emit("plotly_animatingframe",{name:n,frame:t.frame,animation:{frame:t.frameOpts,transition:t.transitionOpts}})}else e.emit("plotly_animated"),window.cancelAnimationFrame(r._animationRaf),r._animationRaf=null}()};t()}var p,h,m=0;function y(e){return Array.isArray(a)?m>=a.length?e.transitionOpts=a[m]:e.transitionOpts=a[0]:e.transitionOpts=a,m++,e}var v=[],g=null==t,b=Array.isArray(t);if(g||b||!o.isPlainObject(t)){if(g||-1!==["string","number"].indexOf(typeof t))for(p=0;p0&&ww)&&A.push(h);v=A}}v.length>0?function(t){if(0!==t.length){for(var a=0;a=0;r--)if(o.isPlainObject(t[r])){var m=t[r].name,y=(u[m]||h[m]||{}).name,v=t[r].name,g=u[y]||h[y];y&&v&&"number"==typeof v&&g&&I<5&&(I++,o.warn('addFrames: overwriting frame "'+(u[y]||h[y]).name+'" with a frame whose name of type "number" also equates to "'+y+'". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===I&&o.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")),h[m]={name:m},p.push({frame:f.supplyFrameDefaults(t[r]),index:n&&void 0!==n[r]&&null!==n[r]?n[r]:d+r})}p.sort((function(e,t){return e.index>t.index?-1:e.index=0;r--){if("number"==typeof(a=p[r].frame).name&&o.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!a.name)for(;u[a.name="frame "+e._transitionData._counter++];);if(u[a.name]){for(i=0;i=0;n--)r=t[n],i.push({type:"delete",index:r}),l.unshift({type:"insert",index:r,value:a[r]});var s=f.modifyFrames,u=f.modifyFrames,d=[e,l],p=[e,i];return c&&c.add(e,s,d,u,p),f.modifyFrames(e,i)},t.addTraces=function e(n,r,a){n=o.getGraphDiv(n);var i,l,s=[],u=t.deleteTraces,d=e,f=[n,s],p=[n,r];for(function(e,t,n){var r,a;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(void 0===t)throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),r=0;r=0&&n=0&&n=i.length)return!1;if(2===e.dimensions){if(n++,t.length===n)return e;var o=t[n];if(!T(o))return!1;e=i[a][o]}else e=i[a]}else e=i}}return e}function T(e){return e===Math.round(e)&&e>=0}function w(){var e,t,n={};for(e in d(n,o),r.subplotsRegistry)if((t=r.subplotsRegistry[e]).layoutAttributes)if(Array.isArray(t.attr))for(var a=0;a=s.length)return!1;a=(n=(r.transformsRegistry[s[c].type]||{}).attributes)&&n[t[2]],l=3}else{var u=e._module;if(u||(u=(r.modules[e.type||i.type.dflt]||{})._module),!u)return!1;if(!(a=(n=u.attributes)&&n[o])){var d=u.basePlotModule;d&&d.attributes&&(a=d.attributes[o])}a||(a=i[o])}return x(a,t,l)},t.getLayoutValObject=function(e,t){return x(function(e,t){var n,a,i,l,s=e._basePlotModules;if(s){var c;for(n=0;n=a&&(n._input||{})._templateitemname;l&&(o=a);var s,c=t+"["+o+"]";function u(){s={},l&&(s[c]={},s[c][i]=l)}function d(e,t){l?r.nestedProperty(s[c],e).set(t):s[c+"."+e]=t}function f(){var e=s;return u(),e}return u(),{modifyBase:function(e,t){s[e]=t},modifyItem:d,getUpdateObj:f,applyUpdate:function(t,n){t&&d(t,n);var a=f();for(var i in a)r.nestedProperty(e,i).set(a[i])}}}},79637:function(e,t,n){var r=n(12583),a=n(94134),i=n(21086),o=n(11005),l=n(59663),s=n(66875),c=n(45354),u=n(65967),d=n(36644),f=n(21837),p=n(60638),h=n(55862),m=n(28699),y=m.enforce,v=m.clean,g=n(291).doAutoRange,b="start";function x(e,t,n){for(var r=0;r=e[1]||a[1]<=e[0])&&i[0]t[0])return!0}return!1}function T(e){var n,a,l,s,d,m,y=e._fullLayout,v=y._size,g=v.p,b=p.list(e,"",!0);if(y._paperdiv.style({width:e._context.responsive&&y.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":y.width+"px",height:e._context.responsive&&y.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":y.height+"px"}).selectAll(".main-svg").call(u.setSize,y.width,y.height),e._context.setBackground(e,y.paper_bgcolor),t.drawMainTitle(e),f.manage(e),!y._has("cartesian"))return i.previousPromises(e);function T(e,t,n){var r=e._lw/2;return"x"===e._id.charAt(0)?t?"top"===n?t._offset-g-r:t._offset+t._length+g+r:v.t+v.h*(1-(e.position||0))+r%1:t?"right"===n?t._offset+t._length+g+r:t._offset-g-r:v.l+v.w*(e.position||0)+r%1}for(n=0;n.5?"t":"b",f=e._fullLayout.margin[d],p=0;return"paper"===t.yref?p=n+t.pad.t+t.pad.b:"container"===t.yref&&(r=d,a=c,i=u,o=e._fullLayout.height,l=n,s=0,"middle"===i&&(s+=l/2),"t"===r?("top"===i&&(s+=l),s+=o-a*o):("bottom"===i&&(s+=l),s+=a*o),p=s+t.pad.t+t.pad.b),p>f?p:0}(e,s,g);if(x>0){!function(e,t,n,r){var a,l,s,c,u,d,f,p,h="title.automargin",m=e._fullLayout.title,y=m.y>.5?"t":"b",v={x:m.x,y:m.y,t:0,b:0},g={};"paper"===m.yref&&(a=e,s=y,c=t,u=r,d="paper"===(l=m).yref?a._fullLayout._size.h:a._fullLayout.height,f=o.isTopAnchor(l)?c:c-u,p="b"===s?d-f:f,!(o.isTopAnchor(l)&&"t"===s||o.isBottomAnchor(l)&&"b"===s)&&pk?u.push({code:"unused",traceType:g,templateCount:w,dataCount:k}):k>w&&u.push({code:"reused",traceType:g,templateCount:w,dataCount:k})}}else u.push({code:"data"});if(function e(t,n){for(var r in t)if("_"!==r.charAt(0)){var i=t[r],o=m(t,r,n);a(i)?(Array.isArray(t)&&!1===i._template&&i.templateitemname&&u.push({code:"missing",path:o,templateitemname:i.templateitemname}),e(i,o)):Array.isArray(i)&&y(i)&&e(i,o)}}({data:p,layout:f},""),u.length)return u.map(v)}},14687:function(e,t,n){var r=n(74668),a=n(49424),i=n(21086),o=n(11005),l=n(11975),s=n(1687),c=n(3342),u=n(76989).version,d={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};e.exports=function(e,t){var n,f,p,h;function m(e){return!(e in t)||o.validate(t[e],d[e])}if(t=t||{},o.isPlainObject(e)?(n=e.data||[],f=e.layout||{},p=e.config||{},h={}):(e=o.getGraphDiv(e),n=o.extendDeep([],e.data),f=o.extendDeep({},e.layout),p=e._context,h=e._fullLayout||{}),!m("width")&&null!==t.width||!m("height")&&null!==t.height)throw new Error("Height and width should be pixel values.");if(!m("format"))throw new Error("Export format is not "+o.join2(d.format.values,", "," or ")+".");var y={};function v(e,n){return o.coerce(t,y,d,e,n)}var g=v("format"),b=v("width"),x=v("height"),T=v("scale"),w=v("setBackground"),k=v("imageDataOnly"),A=document.createElement("div");A.style.position="absolute",A.style.left="-5000px",document.body.appendChild(A);var S=o.extendFlat({},f);b?S.width=b:null===t.width&&r(h.width)&&(S.width=h.width),x?S.height=x:null===t.height&&r(h.height)&&(S.height=h.height);var C=o.extendFlat({},p,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),I=l.getRedrawFunc(A);function L(){return new Promise((function(e){setTimeout(e,l.getDelay(A._fullLayout))}))}function P(){return new Promise((function(e,t){var n=s(A,g,T),r=A._fullLayout.width,d=A._fullLayout.height;function f(){a.purge(A),document.body.removeChild(A)}if("full-json"===g){var p=i.graphJson(A,!1,"keepdata","object",!0,!0);return p.version=u,p=JSON.stringify(p),f(),e(k?p:l.encodeJSON(p))}if(f(),"svg"===g)return e(k?n:l.encodeSVG(n));var h=document.createElement("canvas");h.id=o.randstr(),c({format:g,width:r,height:d,scale:T,canvas:h,svg:n,promise:!0}).then(e).catch(t)}))}return new Promise((function(e,t){a.newPlot(A,n,S,C).then(I).then(L).then(P).then((function(t){var n;e((n=t,k?n.replace(l.IMAGE_URL_PREFIX,""):n))})).catch((function(e){t(e)}))}))}},22574:function(e,t,n){var r=n(11005),a=n(21086),i=n(16941),o=n(31472).dfltConfig,l=r.isPlainObject,s=Array.isArray,c=r.isArrayOrTypedArray;function u(e,t,n,a,i,o){o=o||[];for(var d=Object.keys(e),f=0;fb.length&&a.push(p("unused",i,v.concat(b.length)));var S,C,I,L,P,E=b.length,M=Array.isArray(A);if(M&&(E=Math.min(E,A.length)),2===x.dimensions)for(C=0;Cb[C].length&&a.push(p("unused",i,v.concat(C,b[C].length)));var Z=b[C].length;for(S=0;S<(M?Math.min(Z,A[C].length):Z);S++)I=M?A[C][S]:A,L=g[C][S],P=b[C][S],r.validate(L,I)?P!==L&&P!==+L&&a.push(p("dynamic",i,v.concat(C,S),L,P)):a.push(p("value",i,v.concat(C,S),L))}else a.push(p("array",i,v.concat(C),g[C]));else for(C=0;C1&&f.push(p("object","layout"))),a.supplyDefaults(h);for(var m=h._fullData,y=n.length,v=0;v0&&Math.round(d)===d))return{vals:a};c=d}for(var f=t.calendar,p="start"===s,h="end"===s,m=e[n+"period0"],y=i(m,f)||0,v=[],g=[],b=[],x=a.length,T=0;TS;)A=o(A,-c,f);for(;A<=S;)A=o(A,c,f);k=o(A,-c,f)}else{for(A=y+(w=Math.round((S-y)/u))*u;A>S;)A-=u;for(;A<=S;)A+=u;k=A-u}v[T]=p?k:h?A:(k+A)/2,g[T]=k,b[T]=A}return{vals:v,starts:g,ends:b}}},61458:function(e){e.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}},291:function(e,t,n){var r=n(12583),a=n(74668),i=n(11005),o=n(30513).FP_SAFE,l=n(94134),s=n(65967),c=n(55483),u=c.getFromId,d=c.isLinked;function f(e,t){var n,r,a=[],o=e._fullLayout,l=h(o,t,0),s=h(o,t,1),c=y(e,t),u=c.min,d=c.max;if(0===u.length||0===d.length)return i.simpleMap(t.range,t.r2l);var f=u[0].val,m=d[0].val;for(n=1;n0&&((S=E-l(x)-s(T))>M?C/S>Z&&(w=x,k=T,Z=C/S):C/E>Z&&(w={val:x.val,nopad:1},k={val:T.val,nopad:1},Z=C/E));if(f===m){var O=f-1,R=f+1;if(L)if(0===f)a=[0,1];else{var N=(f>0?d:u).reduce((function(e,t){return Math.max(e,s(t))}),0),X=f/(1-Math.min(.5,N/E));a=f>0?[0,X]:[X,0]}else a=P?[Math.max(0,O),Math.max(1,R)]:[O,R]}else L?(w.val>=0&&(w={val:0,nopad:1}),k.val<=0&&(k={val:0,nopad:1})):P&&(w.val-Z*l(w)<0&&(w={val:0,nopad:1}),k.val<=0&&(k={val:1,nopad:1})),Z=(k.val-w.val-p(t,x.val,T.val))/(E-l(w)-s(k)),a=[w.val-Z*l(w),k.val+Z*s(k)];return a=A(a,t),t.limitRange&&t.limitRange(),g&&a.reverse(),i.simpleMap(a,t.l2r||Number)}function p(e,t,n){var r=0;if(e.rangebreaks)for(var a=e.locateBreaks(t,n),i=0;i0?n.ppadplus:n.ppadminus)||n.ppad||0),I=S((e._m>0?n.ppadminus:n.ppadplus)||n.ppad||0),L=S(n.vpadplus||n.vpad),P=S(n.vpadminus||n.vpad);if(!k){if(f=1/0,p=-1/0,w)for(r=0;r0&&(f=i),i>p&&i-o&&(f=i),i>p&&i=Z;r--)M(r);return{min:h,max:m,opts:n}},concatExtremes:y};var m=3;function y(e,t,n){var r,a,i,o=t._id,l=e._fullData,s=e._fullLayout,c=[],d=[];function f(e,t){for(r=0;r=n&&(c.extrapad||!o)){l=!1;break}a(t,c.val)&&c.pad<=n&&(o||!c.extrapad)&&(e.splice(s,1),s--)}if(l){var u=i&&0===t;e.push({val:t,pad:u?0:n,extrapad:!u&&o})}}function x(e){return a(e)&&Math.abs(e)=t}function k(e,t,n){return void 0===t||void 0===n||(t=e.d2l(t))=f&&(c=f,o=f),u<=f&&(u=f,l=f)}}return n=o,o=(a=(r=t).autorangeoptions)&&void 0!==a.minallowed&&k(r,a.minallowed,a.maxallowed)?a.minallowed:a&&void 0!==a.clipmin&&k(r,a.clipmin,a.clipmax)?Math.max(n,r.d2l(a.clipmin)):n,l=function(e,t){var n=t.autorangeoptions;return n&&void 0!==n.maxallowed&&k(t,n.minallowed,n.maxallowed)?n.maxallowed:n&&void 0!==n.clipmax&&k(t,n.clipmin,n.clipmax)?Math.min(e,t.d2l(n.clipmax)):e}(l,t),[o,l]}},28043:function(e){e.exports=function(e,t,n){var r,a;if(n){var i="reversed"===t||"min reversed"===t||"max reversed"===t;r=n[i?1:0],a=n[i?0:1]}var o=e("autorangeoptions.minallowed",null===a?r:void 0),l=e("autorangeoptions.maxallowed",null===r?a:void 0);void 0===o&&e("autorangeoptions.clipmin"),void 0===l&&e("autorangeoptions.clipmax"),e("autorangeoptions.include")}},60638:function(e,t,n){var r=n(12583),a=n(74668),i=n(21086),o=n(94134),l=n(11005),s=l.strTranslate,c=n(59663),u=n(36644),d=n(45354),f=n(65967),p=n(7489),h=n(74171),m=n(30513),y=m.ONEMAXYEAR,v=m.ONEAVGYEAR,g=m.ONEMINYEAR,b=m.ONEMAXQUARTER,x=m.ONEAVGQUARTER,T=m.ONEMINQUARTER,w=m.ONEMAXMONTH,k=m.ONEAVGMONTH,A=m.ONEMINMONTH,S=m.ONEWEEK,C=m.ONEDAY,I=C/2,L=m.ONEHOUR,P=m.ONEMIN,E=m.ONESEC,M=m.MINUS_SIGN,Z=m.BADNUM,O={K:"zeroline"},R={K:"gridline",L:"path"},N={K:"minor-gridline",L:"path"},X={K:"tick",L:"path"},H={K:"tick",L:"text"},D={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},W=n(55862),G=W.MID_SHIFT,V=W.CAP_SHIFT,z=W.LINE_SPACING,F=W.OPPOSITE_SIDE,Y=e.exports={};Y.setConvert=n(53647);var _=n(54942),B=n(55483),j=B.idSort,K=B.isLinked;Y.id2name=B.id2name,Y.name2id=B.name2id,Y.cleanId=B.cleanId,Y.list=B.list,Y.listIds=B.listIds,Y.getFromId=B.getFromId,Y.getFromTrace=B.getFromTrace;var J=n(291);Y.getAutoRange=J.getAutoRange,Y.findExtremes=J.findExtremes;var U=1e-4;function Q(e){var t=(e[1]-e[0])*U;return[e[0]-t,e[1]+t]}Y.coerceRef=function(e,t,n,r,a,i){var o=r.charAt(r.length-1),s=n._fullLayout._subplots[o+"axis"],c=r+"ref",u={};return a||(a=s[0]||("string"==typeof i?i:i[0])),i||(i=a),s=s.concat(s.map((function(e){return e+" domain"}))),u[c]={valType:"enumerated",values:s.concat(i?"string"==typeof i?[i]:i:[]),dflt:a},l.coerce(e,t,u,c)},Y.getRefType=function(e){return void 0===e?e:"paper"===e?"paper":"pixel"===e?"pixel":/( domain)$/.test(e)?"domain":"range"},Y.coercePosition=function(e,t,n,r,a,i){var o,s;if("range"!==Y.getRefType(r))o=l.ensureNumber,s=n(a,i);else{var c=Y.getFromId(t,r);s=n(a,i=c.fraction2r(i)),o=c.cleanPos}e[a]=o(s)},Y.cleanPosition=function(e,t,n){return("paper"===n||"pixel"===n?l.ensureNumber:Y.getFromId(t,n).cleanPos)(e)},Y.redrawComponents=function(e,t){t=t||Y.listIds(e);var n=e._fullLayout;function r(r,a,i,l){for(var s=o.getComponentMethod(r,a),c={},u=0;ur&&f2e-6||((n-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0)):e._minDtick=0},Y.saveRangeInitial=function(e,t){for(var n=Y.list(e,"",!0),r=!1,a=0;a.3*f||u(r)||u(i))){var p=n.dtick/2;e+=e+p.8){var o=Number(n.substr(1));i.exactYears>.8&&o%12==0?e=Y.tickIncrement(e,"M6","reverse")+1.5*C:i.exactMonths>.8?e=Y.tickIncrement(e,"M1","reverse")+15.5*C:e-=I;var s=Y.tickIncrement(e,n);if(s<=r)return s}return e}(g,e,v,c,i)),y=g;y<=u;)y=Y.tickIncrement(y,v,!1,i);return{start:t.c2r(g,0,i),end:t.c2r(y,0,i),size:v,_dataSpan:u-c}},Y.prepMinorTicks=function(e,t,n){if(!t.minor.dtick){delete e.dtick;var r,i=t.dtick&&a(t._tmin);if(i){var o=Y.tickIncrement(t._tmin,t.dtick,!0);r=[t._tmin,.99*o+.01*t._tmin]}else{var s=l.simpleMap(t.range,t.r2l);r=[s[0],.8*s[0]+.2*s[1]]}if(e.range=l.simpleMap(r,t.l2r),e._isMinor=!0,Y.prepTicks(e,n),i){var c=a(t.dtick),u=a(e.dtick),d=c?t.dtick:+t.dtick.substring(1),f=u?e.dtick:+e.dtick.substring(1);c&&u?te(d,f)?d===2*S&&f===2*C&&(e.dtick=S):d===2*S&&f===3*C?e.dtick=S:d!==S||(t._input.minor||{}).nticks?ne(d/f,2.5)?e.dtick=d/2:e.dtick=d:e.dtick=C:"M"===String(t.dtick).charAt(0)?u?e.dtick="M1":te(d,f)?d>=12&&2===f&&(e.dtick="M3"):e.dtick=t.dtick:"L"===String(e.dtick).charAt(0)?"L"===String(t.dtick).charAt(0)?te(d,f)||(e.dtick=ne(d/f,2.5)?t.dtick/2:t.dtick):e.dtick="D1":"D2"===e.dtick&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}void 0===t.minor._tick0Init&&(e.tick0=t.tick0)},Y.prepTicks=function(e,t){var n=l.simpleMap(e.range,e.r2l,void 0,void 0,t);if("auto"===e.tickmode||!e.dtick){var r,i=e.nticks;i||("category"===e.type||"multicategory"===e.type?(r=e.tickfont?l.bigFont(e.tickfont.size||12):15,i=e._length/r):(r="y"===e._id.charAt(0)?40:80,i=l.constrain(e._length/r,4,9)+1),"radialaxis"===e._name&&(i*=2)),e.minor&&"array"!==e.minor.tickmode||"array"===e.tickmode&&(i*=100),e._roughDTick=Math.abs(n[1]-n[0])/i,Y.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick<2*e._minDtick&&(e.dtick=e._minDtick,e.tick0=e.l2r(e._forceTick0))}"period"===e.ticklabelmode&&function(e){var t;function n(){return!(a(e.dtick)||"M"!==e.dtick.charAt(0))}var r=n(),i=Y.getTickFormat(e);if(i){var o=e._dtickInit!==e.dtick;/%[fLQsSMX]/.test(i)||(/%[HI]/.test(i)?(t=L,o&&!r&&e.dtick=(O?0:1);R--){var N=!R;R?(e._dtickInit=e.dtick,e._tick0Init=e.tick0):(e.minor._dtickInit=e.minor.dtick,e.minor._tick0Init=e.minor.tick0);var X=R?e:l.extendFlat({},e,e.minor);if(N?Y.prepMinorTicks(X,e,t):Y.prepTicks(X,t),"array"!==X.tickmode)if("sync"!==X.tickmode){var H=Q(u),D=H[0],W=H[1],G=a(X.dtick),V="log"===i&&!(G||"L"===X.dtick.charAt(0)),z=Y.tickFirst(X,t);if(R){if(e._tmin=z,z=W:j<=W;j=Y.tickIncrement(j,K,d,o)){if(R&&F++,X.rangebreaks&&!d){if(j=p)break}if(E.length>h||j===B)break;B=j;var J={value:j};R?(V&&j!==(0|j)&&(J.simpleLabel=!0),s>1&&F%s&&(J.skipLabel=!0),E.push(J)):(J.minor=!0,M.push(J))}}else E=[],m=ie(e);else R?(E=[],m=oe(e,!N)):(M=[],P=oe(e,!N))}if(O&&!("inside"===e.minor.ticks&&"outside"===e.ticks||"outside"===e.minor.ticks&&"inside"===e.ticks)){for(var U=E.map((function(e){return e.value})),q=[],$=0;$0?(i=r-1,o=r):(i=r,o=r);var l,s=e[i].value,c=e[o].value,u=Math.abs(c-s),d=n||u,f=0;d>=g?f=u>=g&&u<=y?u:v:n===x&&d>=T?f=u>=T&&u<=b?u:x:d>=A?f=u>=A&&u<=w?u:k:n===S&&d>=S?f=S:d>=C?f=C:n===I&&d>=I?f=I:n===L&&d>=L&&(f=L),f>=u&&(f=u,l=!0);var p=a+f;if(t.rangebreaks&&f>0){for(var h=0,m=0;m<84;m++){var P=(m+.5)/84;t.maskBreaks(a*(1-P)+P*p)!==Z&&h++}(f*=h/84)||(e[r].drop=!0),l&&u>S&&(f=u)}(f>0||0===r)&&(e[r].periodX=a+f/2)}}(E,e,e._definedDelta),e.rangebreaks){var ae="y"===e._id.charAt(0),le=1;"auto"===e.tickmode&&(le=e.tickfont?e.tickfont.size:12);var se=NaN;for(n=E.length-1;n>-1;n--)if(E[n].drop)E.splice(n,1);else{E[n].value=Ne(E[n].value,e);var ce=e.c2p(E[n].value);(ae?se>ce-le:sep||dep&&(ue.periodX=p),de10||"01-01"!==r.substr(5)?e._tickround="d":e._tickround=+t.substr(1)%12==0?"y":"m";else if(t>=C&&i<=10||t>=15*C)e._tickround="d";else if(t>=P&&i<=16||t>=L)e._tickround="M";else if(t>=E&&i<=19||t>=P)e._tickround="S";else{var o=e.l2r(n+t).replace(/^-/,"").length;e._tickround=Math.max(i,o)-20,e._tickround<0&&(e._tickround=4)}}else if(a(t)||"L"===t.charAt(0)){var l=e.range.map(e.r2d||Number);a(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(l[0]),Math.abs(l[1])),c=Math.floor(Math.log(s)/Math.LN10+.01),u=void 0===e.minexponent?3:e.minexponent;Math.abs(c)>u&&(ge(e.exponentformat)&&!be(c)?e._tickexponent=3*Math.round((c-1)/3):e._tickexponent=c)}else e._tickround=null}function ye(e,t,n){var r=e.tickfont||{};return{x:t,dx:0,dy:0,text:n||"",fontSize:r.size,font:r.family,fontColor:r.color}}Y.autoTicks=function(e,t,n){var r;function i(e){return Math.pow(e,Math.floor(Math.log(t)/Math.LN10))}if("date"===e.type){e.tick0=l.dateTick0(e.calendar,0);var o=2*t;if(o>v)t/=v,r=i(10),e.dtick="M"+12*he(t,r,le);else if(o>k)t/=k,e.dtick="M"+he(t,1,se);else if(o>C){if(e.dtick=he(t,C,e._hasDayOfWeekBreaks?[1,2,7,14]:ue),!n){var s=Y.getTickFormat(e),c="period"===e.ticklabelmode;c&&(e._rawTick0=e.tick0),/%[uVW]/.test(s)?e.tick0=l.dateTick0(e.calendar,2):e.tick0=l.dateTick0(e.calendar,1),c&&(e._dowTick0=e.tick0)}}else o>L?e.dtick=he(t,L,se):o>P?e.dtick=he(t,P,ce):o>E?e.dtick=he(t,E,ce):(r=i(10),e.dtick=he(t,r,le))}else if("log"===e.type){e.tick0=0;var u=l.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(u[1]-u[0])<1){var d=1.5*Math.abs((u[1]-u[0])/t);t=Math.abs(Math.pow(10,u[1])-Math.pow(10,u[0]))/d,r=i(10),e.dtick="L"+he(t,r,le)}else e.dtick=t>.3?"D2":"D1"}else"category"===e.type||"multicategory"===e.type?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):Re(e)?(e.tick0=0,r=1,e.dtick=he(t,r,pe)):(e.tick0=0,r=i(10),e.dtick=he(t,r,le));if(0===e.dtick&&(e.dtick=1),!a(e.dtick)&&"string"!=typeof e.dtick){var f=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(f)}},Y.tickIncrement=function(e,t,n,i){var o=n?-1:1;if(a(t))return l.increment(e,o*t);var s=t.charAt(0),c=o*Number(t.substr(1));if("M"===s)return l.incrementMonth(e,c,i);if("L"===s)return Math.log(Math.pow(10,e)+c)/Math.LN10;if("D"===s){var u="D2"===t?fe:de,d=e+.01*o,f=l.roundUp(l.mod(d,1),u,n);return Math.floor(d)+Math.log(r.round(Math.pow(10,f),1))/Math.LN10}throw"unrecognized dtick "+String(t)},Y.tickFirst=function(e,t){var n=e.r2l||Number,i=l.simpleMap(e.range,n,void 0,void 0,t),o=i[1] ")}else e._prevDateHead=s,c+="
"+s;t.text=c}(e,o,n,c):"log"===u?function(e,t,n,r,i){var o=e.dtick,s=t.x,c=e.tickformat,u="string"==typeof o&&o.charAt(0);if("never"===i&&(i=""),r&&"L"!==u&&(o="L3",u="L"),c||"L"===u)t.text=xe(Math.pow(10,s),e,i,r);else if(a(o)||"D"===u&&l.mod(s+.01,1)<.1){var d=Math.round(s),f=Math.abs(d),p=e.exponentformat;"power"===p||ge(p)&&be(d)?(t.text=0===d?1:1===d?"10":"10"+(d>1?"":M)+f+"",t.fontSize*=1.25):("e"===p||"E"===p)&&f>2?t.text="1"+p+(d>0?"+":M)+f:(t.text=xe(Math.pow(10,s),e,"","fakehover"),"D1"===o&&"y"===e._id.charAt(0)&&(t.dy-=t.fontSize/6))}else{if("D"!==u)throw"unrecognized dtick "+String(o);t.text=String(Math.round(Math.pow(10,l.mod(s,1)))),t.fontSize*=.75}if("D1"===e.dtick){var h=String(t.text).charAt(0);"0"!==h&&"1"!==h||("y"===e._id.charAt(0)?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(s<0?.5:.25)))}}(e,o,0,c,v):"category"===u?(m=o,void 0===(y=e._categories[Math.round(m.x)])&&(y=""),m.text=String(y)):"multicategory"===u?function(e,t,n){var r=Math.round(t.x),a=e._categories[r]||[],i=void 0===a[1]?"":String(a[1]),o=void 0===a[0]?"":String(a[0]);n?t.text=o+" - "+i:(t.text=i,t.text2=o)}(e,o,n):Re(e)?function(e,t,n,r,a){if("radians"!==e.thetaunit||n)t.text=xe(t.x,e,a,r);else{var i=t.x/180;if(0===i)t.text="0";else{var o=function(e){function t(e,t){return Math.abs(e-t)<=1e-6}var n=function(e){for(var n=1;!t(Math.round(e*n)/n,e);)n*=10;return n}(e),r=e*n,a=Math.abs(function e(n,r){return t(r,0)?n:e(r,n%r)}(r,n));return[Math.round(r/a),Math.round(n/a)]}(i);if(o[1]>=100)t.text=xe(l.deg2rad(t.x),e,a,r);else{var s=t.x<0;1===o[1]?1===o[0]?t.text="π":t.text=o[0]+"π":t.text=["",o[0],"","⁄","",o[1],"","π"].join(""),s&&(t.text=M+t.text)}}}}(e,o,n,c,v):function(e,t,n,r,a){"never"===a?a="":"all"===e.showexponent&&Math.abs(t.x/e.dtick)<1e-6&&(a="hide"),t.text=xe(t.x,e,a,r)}(e,o,0,c,v),r||(e.tickprefix&&!h(e.showtickprefix)&&(o.text=e.tickprefix+o.text),e.ticksuffix&&!h(e.showticksuffix)&&(o.text+=e.ticksuffix)),e.labelalias&&e.labelalias.hasOwnProperty(o.text)){var g=e.labelalias[o.text];"string"==typeof g&&(o.text=g)}if("boundaries"===e.tickson||e.showdividers){var b=function(t){var n=e.l2p(t);return n>=0&&n<=e._length?t:null};o.xbnd=[b(o.x-.5),b(o.x+e.dtick-.5)]}return o},Y.hoverLabelText=function(e,t,n){n&&(e=l.extendFlat({},e,{hoverformat:n}));var r=l.isArrayOrTypedArray(t)?t[0]:t,a=l.isArrayOrTypedArray(t)?t[1]:void 0;if(void 0!==a&&a!==r)return Y.hoverLabelText(e,r,n)+" - "+Y.hoverLabelText(e,a,n);var i="log"===e.type&&r<=0,o=Y.tickText(e,e.c2l(i?-r:r),"hover").text;return i?0===r?"0":M+o:o};var ve=["f","p","n","μ","m","","k","M","G","T"];function ge(e){return"SI"===e||"B"===e}function be(e){return e>14||e<-15}function xe(e,t,n,r){var i=e<0,o=t._tickround,s=n||t.exponentformat||"B",c=t._tickexponent,u=Y.getTickFormat(t),d=t.separatethousands;if(r){var f={exponentformat:s,minexponent:t.minexponent,dtick:"none"===t.showexponent?t.dtick:a(e)&&Math.abs(e)||1,range:"none"===t.showexponent?t.range.map(t.r2d):[0,e||1]};me(f),o=(Number(f._tickround)||0)+4,c=f._tickexponent,t.hoverformat&&(u=t.hoverformat)}if(u)return t._numFormat(u)(e).replace(/-/g,M);var p,h=Math.pow(10,-o)/2;if("none"===s&&(c=0),(e=Math.abs(e))"+p+"":"B"===s&&9===c?e+="B":ge(s)&&(e+=ve[c/3+5])),i?M+e:e}function Te(e,t){if(e){var n=Object.keys(D).reduce((function(e,n){return-1!==t.indexOf(n)&&D[n].forEach((function(t){e[t]=1})),e}),{});Object.keys(e).forEach((function(t){n[t]||(1===t.length?e[t]=0:delete e[t])}))}}function we(e,t){for(var n=[],r={},a=0;a1&&n=a.min&&e=0,i=u(e,t[1])<=0;return(n||a)&&(r||i)}if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":for(t=0;t=o(a)))){n=r;break}break;case"log":for(t=0;t=0&&a.unshift(a.splice(r,1).shift())}}));var o={false:{left:0,right:0}};return l.syncOrAsync(a.map((function(t){return function(){if(t){var r=Y.getFromId(e,t);n||(n={}),n.axShifts=o,n.overlayingShiftedAx=i;var a=Y.drawOne(e,r,n);return r._shiftPusher&&De(r,r._fullDepth||0,o,!0),r._r=r.range.slice(),r._rl=l.simpleMap(r._r,r.r2l),a}}})))},Y.drawOne=function(e,t,n){var r,a,s,c=(n=n||{}).axShifts||{},p=n.overlayingShiftedAx||[];t.setScale();var h,m,y=e._fullLayout,v=t._id,g=v.charAt(0),b=Y.counterLetter(v),x=y._plots[t._mainSubplot];if(x){if(t._shiftPusher=t.autoshift||-1!==p.indexOf(t._id)||-1!==p.indexOf(t.overlaying),t._shiftPusher&"free"===t.anchor){var T=t.linewidth/2||0;"inside"===t.ticks&&(T+=t.ticklen),De(t,T,c,!0),De(t,t.shift||0,c,!1)}!0===n.skipTitle&&void 0!==t._shift||(t._shift=(m=c,(h=t).autoshift?m[h.overlaying][h.side]:h.shift||0));var w=x[g+"axislayer"],k=t._mainLinePosition,A=k+=t._shift,S=t._mainMirrorPosition,C=t._vals=Y.calcTicks(t),I=[t.mirror,A,S].join("_");for(r=0;r0?n.bottom-u:0,d))));var f=0,p=0;if(t._shiftPusher&&(f=Math.max(d,n.height>0?"l"===s?u-n.left:n.right-u:0),t.title.text!==y._dfltTitle[g]&&(p=(t._titleStandoff||0)+(t._titleScoot||0),"l"===s&&(p+=Se(t))),t._fullDepth=Math.max(f,p)),t.automargin){r={x:0,y:0,r:0,l:0,t:0,b:0};var h=[0,1],m="number"==typeof t._shift?t._shift:0;if("x"===g){if("b"===s?r[s]=t._depth:(r[s]=t._depth=Math.max(n.width>0?u-n.top:0,d),h.reverse()),n.width>0){var v=n.right-(t._offset+t._length);v>0&&(r.xr=1,r.r=v);var x=t._offset-n.left;x>0&&(r.xl=0,r.l=x)}}else if("l"===s?(t._depth=Math.max(n.height>0?u-n.left:0,d),r[s]=t._depth-m):(t._depth=Math.max(n.height>0?n.right-u:0,d),r[s]=t._depth+m,h.reverse()),n.height>0){var T=n.bottom-(t._offset+t._length);T>0&&(r.yb=0,r.b=T);var w=t._offset-n.top;w>0&&(r.yt=1,r.t=w)}r[b]="free"===t.anchor?t.position:t._anchorAxis.domain[h[0]],t.title.text!==y._dfltTitle[g]&&(r[s]+=Se(t)+(t.title.standoff||0)),t.mirror&&"free"!==t.anchor&&((a={x:0,y:0,r:0,l:0,t:0,b:0})[c]=t.linewidth,t.mirror&&!0!==t.mirror&&(a[c]+=d),!0===t.mirror||"ticks"===t.mirror?a[b]=t._anchorAxis.domain[h[1]]:"all"!==t.mirror&&"allticks"!==t.mirror||(a[b]=[t._counterDomainMin,t._counterDomainMax][h[1]]))}ue&&(l=o.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),"string"==typeof t.automargin&&(Te(r,t.automargin),Te(a,t.automargin)),i.autoMargin(e,Le(t),r),i.autoMargin(e,Pe(t),a),i.autoMargin(e,Ee(t),l)})),l.syncOrAsync(se)}}function de(e){var n=v+(e||"tick");return L[n]||(L[n]=function(e,t){var n,r,a,i;return e._selections[t].size()?(n=1/0,r=-1/0,a=1/0,i=-1/0,e._selections[t].each((function(){var e=Ie(this),t=f.bBox(e.node().parentNode);n=Math.min(n,t.top),r=Math.max(r,t.bottom),a=Math.min(a,t.left),i=Math.max(i,t.right)}))):(n=0,r=0,a=0,i=0),{top:n,bottom:r,left:a,right:i,height:r-n,width:i-a}}(t,n)),L[n]}},Y.getTickSigns=function(e,t){var n=e._id.charAt(0),r={x:"top",y:"right"}[n],a=e.side===r?1:-1,i=[-1,1,a,-a];return"inside"!==(t?(e.minor||{}).ticks:e.ticks)==("x"===n)&&(i=i.map((function(e){return-e}))),e.side&&i.push({l:-1,t:-1,r:1,b:1}[e.side.charAt(0)]),i},Y.makeTransTickFn=function(e){return"x"===e._id.charAt(0)?function(t){return s(e._offset+e.l2p(t.x),0)}:function(t){return s(0,e._offset+e.l2p(t.x))}},Y.makeTransTickLabelFn=function(e){var t=function(e){var t=e.ticklabelposition||"",n=function(e){return-1!==t.indexOf(e)},r=n("top"),a=n("left"),i=n("right"),o=n("bottom"),l=n("inside"),s=o||a||r||i;if(!s&&!l)return[0,0];var c=e.side,u=s?(e.tickwidth||0)/2:0,d=3,f=e.tickfont?e.tickfont.size:12;return(o||r)&&(u+=f*V,d+=(e.linewidth||0)/2),(a||i)&&(u+=(e.linewidth||0)/2,d+=3),l&&"top"===c&&(d-=f*(1-V)),(a||r)&&(u=-u),"bottom"!==c&&"right"!==c||(d=-d),[s?u:0,l?d:0]}(e),n=t[0],r=t[1];return"x"===e._id.charAt(0)?function(t){return s(n+e._offset+e.l2p(ke(t)),r)}:function(t){return s(r,n+e._offset+e.l2p(ke(t)))}},Y.makeTickPath=function(e,t,n,r){r||(r={});var a=r.minor;if(a&&!e.minor)return"";var i=void 0!==r.len?r.len:a?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),l=(e.linewidth||1)/2;return"x"===o?"M0,"+(t+l*n)+"v"+i*n:"M"+(t+l*n)+",0h"+i*n},Y.makeLabelFns=function(e,t,n){var r=e.ticklabelposition||"",i=function(e){return-1!==r.indexOf(e)},o=i("top"),s=i("left"),c=i("right"),u=i("bottom")||s||o||c,d=i("inside"),f="inside"===r&&"inside"===e.ticks||!d&&"outside"===e.ticks&&"boundaries"!==e.tickson,p=0,h=0,m=f?e.ticklen:0;if(d?m*=-1:u&&(m=0),f&&(p+=m,n)){var y=l.deg2rad(n);p=m*Math.cos(y)+1,h=m*Math.sin(y)}e.showticklabels&&(f||e.showline)&&(p+=.2*e.tickfont.size);var v,g,b,x,T,w={labelStandoff:p+=(e.linewidth||1)/2*(d?-1:1),labelShift:h},k=0,A=e.side,S=e._id.charAt(0),C=e.tickangle;if("x"===S)x=(T=!d&&"bottom"===A||d&&"top"===A)?1:-1,d&&(x*=-1),v=h*x,g=t+p*x,b=T?1:-.2,90===Math.abs(C)&&(d?b+=G:b=-90===C&&"bottom"===A?V:90===C&&"top"===A?G:.5,k=G/2*(C/90)),w.xFn=function(e){return e.dx+v+k*e.fontSize},w.yFn=function(e){return e.dy+g+e.fontSize*b},w.anchorFn=function(e,t){if(u){if(s)return"end";if(c)return"start"}return a(t)&&0!==t&&180!==t?t*x<0!==d?"end":"start":"middle"},w.heightFn=function(t,n,r){return n<-60||n>60?-.5*r:"top"===e.side!==d?-r:0};else if("y"===S){if(x=(T=!d&&"left"===A||d&&"right"===A)?1:-1,d&&(x*=-1),v=p,g=h*x,b=0,d||90!==Math.abs(C)||(b=-90===C&&"left"===A||90===C&&"right"===A?V:.5),d){var I=a(C)?+C:0;if(0!==I){var L=l.deg2rad(I);k=Math.abs(Math.sin(L))*V*x,b=0}}w.xFn=function(e){return e.dx+t-(v+e.fontSize*b)*x+k*e.fontSize},w.yFn=function(e){return e.dy+g+e.fontSize*G},w.anchorFn=function(e,t){return a(t)&&90===Math.abs(t)?"middle":T?"end":"start"},w.heightFn=function(t,n,r){return"right"===e.side&&(n*=-1),n<-30?-r:n<30?-.5*r:0}}return w},Y.drawTicks=function(e,t,n){n=n||{};var a=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?n.vals.filter((function(e){return e.minor&&!e.noTick})):[]).concat(t.ticks?n.vals.filter((function(e){return!e.minor&&!e.noTick})):[]),o=n.layer.selectAll("path."+a).data(i,Ae);o.exit().remove(),o.enter().append("path").classed(a,1).classed("ticks",1).classed("crisp",!1!==n.crisp).each((function(e){return d.stroke(r.select(this),e.minor?t.minor.tickcolor:t.tickcolor)})).style("stroke-width",(function(n){return f.crispRound(e,n.minor?t.minor.tickwidth:t.tickwidth,1)+"px"})).attr("d",n.path).style("display",null),He(t,[X]),o.attr("transform",n.transFn)},Y.drawGrid=function(e,t,n){if(n=n||{},"sync"!==t.tickmode){var a=t._id+"grid",i=t.minor&&t.minor.showgrid,o=i?n.vals.filter((function(e){return e.minor})):[],l=t.showgrid?n.vals.filter((function(e){return!e.minor})):[],s=n.counterAxis;if(s&&Y.shouldShowZeroLine(e,t,s))for(var c="array"===t.tickmode,u=0;u=0;v--){var g=v?m:y;if(g){var b=g.selectAll("path."+a).data(v?l:o,Ae);b.exit().remove(),b.enter().append("path").classed(a,1).classed("crisp",!1!==n.crisp),b.attr("transform",n.transFn).attr("d",n.path).each((function(e){return d.stroke(r.select(this),e.minor?t.minor.gridcolor:t.gridcolor||"#ddd")})).style("stroke-dasharray",(function(e){return f.dashStyle(e.minor?t.minor.griddash:t.griddash,e.minor?t.minor.gridwidth:t.gridwidth)})).style("stroke-width",(function(e){return(e.minor?h:t._gw)+"px"})).style("display",null),"function"==typeof n.path&&b.attr("d",n.path)}}He(t,[R,N])}},Y.drawZeroLine=function(e,t,n){n=n||n;var r=t._id+"zl",a=Y.shouldShowZeroLine(e,t,n.counterAxis),i=n.layer.selectAll("path."+r).data(a?[{x:0,id:t._id}]:[]);i.exit().remove(),i.enter().append("path").classed(r,1).classed("zl",1).classed("crisp",!1!==n.crisp).each((function(){n.layer.selectAll("path").sort((function(e,t){return j(e.id,t.id)}))})),i.attr("transform",n.transFn).attr("d",n.path).call(d.stroke,t.zerolinecolor||d.defaultLine).style("stroke-width",f.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),He(t,[O])},Y.drawLabels=function(e,t,n){n=n||{};var i=e._fullLayout,o=t._id,u=n.cls||o+"tick",d=n.vals.filter((function(e){return e.text})),p=n.labelFns,h=n.secondary?0:t.tickangle,m=(t._prevTickAngles||{})[u],y=n.layer.selectAll("g."+u).data(t.showticklabels?d:[],Ae),v=[];function g(e,i){e.each((function(e){var o=r.select(this),l=o.select(".text-math-group"),u=p.anchorFn(e,i),d=n.transFn.call(o.node(),e)+(a(i)&&0!=+i?" rotate("+i+","+p.xFn(e)+","+(p.yFn(e)-e.fontSize/2)+")":""),h=c.lineCount(o),m=z*e.fontSize,y=p.heightFn(e,a(i)?+i:0,(h-1)*m);if(y&&(d+=s(0,y)),l.empty()){var v=o.select("text");v.attr({transform:d,"text-anchor":u}),v.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var g=f.bBox(l.node()).width*{end:-.5,start:.5}[u];l.attr("transform",d+s(g,0))}}))}y.enter().append("g").classed(u,1).append("text").attr("text-anchor","middle").each((function(t){var n=r.select(this),a=e._promises.length;n.call(c.positionText,p.xFn(t),p.yFn(t)).call(f.font,t.font,t.fontSize,t.fontColor).text(t.text).call(c.convertToTspans,e),e._promises[a]?v.push(e._promises.pop().then((function(){g(n,h)}))):g(n,h)})),He(t,[H]),y.exit().remove(),n.repositionOnUpdate&&y.each((function(e){r.select(this).select("text").call(c.positionText,p.xFn(e),p.yFn(e))})),t._adjustTickLabelsOverflow=function(){var n=t.ticklabeloverflow;if(n&&"allow"!==n){var a=-1!==n.indexOf("hide"),o="x"===t._id.charAt(0),s=0,c=o?e._fullLayout.width:e._fullLayout.height;if(-1!==n.indexOf("domain")){var u=l.simpleMap(t.range,t.r2l);s=t.l2p(u[0])+t._offset,c=t.l2p(u[1])+t._offset}var d=Math.min(s,c),p=Math.max(s,c),h=t.side,m=1/0,v=-1/0;for(var g in y.each((function(e){var n=r.select(this);if(n.select(".text-math-group").empty()){var i=f.bBox(n.node()),l=0;o?(i.right>p||i.leftp||i.top+(t.tickangle?0:e.fontSize/4)t["_visibleLabelMin_"+n._id]?s.style("display","none"):"tick"!==e.K||a||s.style("display",null)}))}))}))}))},g(y,m+1?m:h);var b=null;t._selections&&(t._selections[u]=y);var x=[function(){return v.length&&Promise.all(v)}];t.automargin&&i._redrawFromAutoMarginCount&&90===m?(b=m,x.push((function(){g(y,m)}))):x.push((function(){if(g(y,h),d.length&&t.autotickangles&&("log"!==t.type||"D"!==String(t.dtick).charAt(0))){b=t.autotickangles[0];var e,r=0,a=[],i=1;if(y.each((function(e){r=Math.max(r,e.fontSize);var n=t.l2p(e.x),o=Ie(this),l=f.bBox(o.node());i=Math.max(i,c.lineCount(o)),a.push({top:0,bottom:10,height:10,left:n-l.width/2,right:n+l.width/2+2,width:l.width+2})})),"boundaries"!==t.tickson&&!t.showdividers||n.secondary){var o=d.length,s=Math.abs((d[o-1].x-d[0].x)*t._m)/(o-1),u=t.ticklabelposition||"",p=function(e){return-1!==u.indexOf(e)},m=p("top"),v=p("left"),x=p("right"),T=p("bottom")||v||m||x?(t.tickwidth||0)+6:0,w=s,k=1.25*r*i,A=w/Math.sqrt(Math.pow(w,2)+Math.pow(k,2)),S=t.autotickangles.map((function(e){return e*Math.PI/180})),C=S.find((function(e){return Math.abs(Math.cos(e))<=A}));void 0===C&&(C=S.reduce((function(e,t){return Math.abs(Math.cos(e))G*W&&(M=W,L[I]=P[I]=Z[I])}var V=Math.abs(M-E);V-A>0?A*=1+A/(V-=A):A=0,"y"!==t._id.charAt(0)&&(A=-A),L[C]=w.p2d(w.d2p(P[C])+S*A),"min"===w.autorange||"max reversed"===w.autorange?(L[0]=null,w._rangeInitial0=void 0,w._rangeInitial1=void 0):"max"!==w.autorange&&"min reversed"!==w.autorange||(L[1]=null,w._rangeInitial0=void 0,w._rangeInitial1=void 0),i._insideTickLabelsUpdaterange[w._name+".range"]=L}var F=l.syncOrAsync(x);return F&&F.then&&e._promises.push(F),F},Y.getPxPosition=function(e,t){var n,r=e._fullLayout._size,a=t._id.charAt(0),i=t.side;return"free"!==t.anchor?n=t._anchorAxis:"x"===a?n={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:"y"===a&&(n={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),"top"===i||"left"===i?n._offset:"bottom"===i||"right"===i?n._offset+n._length:void 0},Y.shouldShowZeroLine=function(e,t,n){var r=l.simpleMap(t.range,t.r2l);return r[0]*r[1]<=0&&t.zeroline&&("linear"===t.type||"-"===t.type)&&!(t.rangebreaks&&t.maskBreaks(0)===Z)&&(Ce(t,0)||!function(e,t,n,r){var a=n._mainAxis;if(a){var i=e._fullLayout,o=t._id.charAt(0),l=Y.counterLetter(t._id),s=t._offset+(Math.abs(r[0])1)for(r=1;r2*o}(f,t))return"date";var v="strict"!==n.autotypenumbers;return function(e,t){for(var n=e.length,r=d(n),a=0,o=0,l={},u=0;u2*a}(f,v)?"category":function(e,t){for(var n=e.length,r=0;r=2){var l,c,u="";if(2===o.length)for(l=0;l<2;l++)if(c=T(o[l])){u=v;break}var d=a("pattern",u);if(d===v)for(l=0;l<2;l++)(c=T(o[l]))&&(t.bounds[l]=o[l]=c-1);if(d)for(l=0;l<2;l++)switch(c=o[l],d){case v:if(!r(c))return void(t.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(t.enabled=!1);t.bounds[l]=o[l]=c;break;case g:if(!r(c))return void(t.enabled=!1);if((c=+c)<0||c>24)return void(t.enabled=!1);t.bounds[l]=o[l]=c}if(!1===n.autorange){var f=n.range;if(f[0]f[1])return void(t.enabled=!1)}else if(o[0]>f[0]&&o[1]r?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)},t.ref2id=function(e){return!!/^[xyz]/.test(e)&&e.split(" ")[0]},t.isLinked=function(e,t){return i(t,e._axisMatchGroups)||i(t,e._axisConstraintGroups)}},90893:function(e,t,n){var r=n(68372).isTypedArraySpec;e.exports=function(e,t,n,a){if("category"===t.type){var i,o=e.categoryarray,l=Array.isArray(o)&&o.length>0||r(o);l&&(i="array");var s,c=n("categoryorder",i);"array"===c&&(s=n("categoryarray")),l||"array"!==c||(c=t.categoryorder="trace"),"trace"===c?t._initialCategories=[]:"array"===c?t._initialCategories=s.slice():(s=function(e,t){var n,r,a,i=t.dataAttr||e._id.charAt(0),o={};if(t.axData)n=t.axData;else for(n=[],r=0;rr?a.substr(r):i.substr(n))+o:a+i+e*t:o}function y(e,t){for(var n=t._size,r=n.h/n.w,a={},i=Object.keys(e),o=0;oc*b)||k)for(n=0;nO&&HM&&(M=H);f/=(M-E)/(2*Z),E=s.l2r(E),M=s.l2r(M),s.range=s._input.range=I=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function W(e,t,n,r,a){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",c(n,r)).attr("d",a+"Z")}function G(e,t,n){return e.append("path").attr("class","zoombox-corners").style({fill:d.background,stroke:d.defaultLine,"stroke-width":1,opacity:0}).attr("transform",c(t,n)).attr("d","M0,0Z")}function V(e,t,n,r,a,i){e.attr("d",r+"M"+n.l+","+n.t+"v"+n.h+"h"+n.w+"v-"+n.h+"h-"+n.w+"Z"),z(e,t,a,i)}function z(e,t,n,r){n||(e.transition().style("fill",r>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function F(e){r.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function Y(e){Z&&e.data&&e._context.showTips&&(a.notifier(a._(e,"Double-click to zoom back out"),"long"),Z=!1)}function _(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,M)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function B(e,t,n,r,i){for(var o,l,s,c,u=!1,d={},f={},p=(i||{}).xaHash,h=(i||{}).yaHash,m=0;m=0)a._fullLayout._deactivateShape(a);else{var o=a._fullLayout.clickmode;if(F(a),2!==e||ve||je(),ye)o.indexOf("select")>-1&&I(n,a,U,Q,t.id,Re),o.indexOf("event")>-1&&p.click(a,n,t.id);else if(1===e&&ve){var l=m?O:Z,c="s"===m||"w"===v?0:1,d=l._name+".range["+c+"]",f=function(e,t){var n,r=e.range[t],a=Math.abs(r-e.range[1-t]);return"date"===e.type?r:"log"===e.type?(n=Math.ceil(Math.max(0,-Math.log(a)/Math.LN10))+3,i("."+n+"g")(Math.pow(10,r))):(n=Math.floor(Math.log(Math.abs(r))/Math.LN10)-Math.floor(Math.log(a)/Math.LN10)+4,i("."+String(n)+"g")(r))}(l,c),h="left",y="middle";if(l.fixedrange)return;m?(y="n"===m?"top":"bottom","right"===l.side&&(h="right")):"e"===v&&(h="right"),a._context.showAxisRangeEntryBoxes&&r.select(ke).call(u.makeEditable,{gd:a,immediate:!0,background:a._fullLayout.paper_bgcolor,text:String(f),fill:l.tickfont?l.tickfont.color:"#444",horizontalAlign:h,verticalAlign:y}).on("edit",(function(e){var t=l.d2r(e);void 0!==t&&s.call("_guiRelayout",a,d,t)}))}}}function He(t,n){if(e._transitioningWithDuration)return!1;var r=Math.max(0,Math.min(ee,pe*t+Ae)),a=Math.max(0,Math.min(te,he*n+Se)),i=Math.abs(r-Ae),o=Math.abs(a-Se);function l(){Ee="",Ce.r=Ce.l,Ce.t=Ce.b,Ze.attr("d","M0,0Z")}if(Ce.l=Math.min(Ae,r),Ce.r=Math.max(Ae,r),Ce.t=Math.min(Se,a),Ce.b=Math.max(Se,a),ne.isSubplotConstrained)i>M||o>M?(Ee="xy",i/ee>o/te?(o=i*te/ee,Se>a?Ce.t=Se-o:Ce.b=Se+o):(i=o*ee/te,Ae>r?Ce.l=Ae-i:Ce.r=Ae+i),Ze.attr("d",_(Ce))):l();else if(re.isSubplotConstrained)if(i>M||o>M){Ee="xy";var s=Math.min(Ce.l/ee,(te-Ce.b)/te),c=Math.max(Ce.r/ee,(te-Ce.t)/te);Ce.l=s*ee,Ce.r=c*ee,Ce.b=(1-s)*te,Ce.t=(1-c)*te,Ze.attr("d",_(Ce))}else l();else!ie||o0){var u;if(re.isSubplotConstrained||!ae&&1===ie.length){for(u=0;u1&&(void 0!==i.maxallowed&&le===(i.range[0]1&&(void 0!==o.maxallowed&&se===(o.range[0]x[1]-1/4096&&(t.domain=l),a.noneOrAll(e.domain,t.domain,l),"sync"===t.tickmode&&(t.tickmode="auto")}return n("layer"),t}},18356:function(e,t,n){var r=n(155);e.exports=function(e,t,n,a,i){i||(i={});var o=i.tickSuffixDflt,l=r(e);n("tickprefix")&&n("showtickprefix",l),n("ticksuffix",o)&&n("showticksuffix",l)}},5815:function(e,t,n){var r=n(28043);e.exports=function(e,t,n,a){var i=t._template||{},o=t.type||i.type||"-";n("minallowed"),n("maxallowed");var l,s=n("range");s||a.noInsiderange||"log"===o||(!(l=n("insiderange"))||null!==l[0]&&null!==l[1]||(t.insiderange=!1,l=void 0),l&&(s=n("range",l)));var c,u=t.getAutorangeDflt(s,a),d=n("autorange",u);!s||(null!==s[0]||null!==s[1])&&(null!==s[0]&&null!==s[1]||"reversed"!==d&&!0!==d)&&(null===s[0]||"min"!==d&&"max reversed"!==d)&&(null===s[1]||"max"!==d&&"min reversed"!==d)||(s=void 0,delete t.range,t.autorange=!0,c=!0),c||(d=n("autorange",u=t.getAutorangeDflt(s,a))),d&&(r(n,d,s),"linear"!==o&&"-"!==o||n("rangemode")),t.cleanRange()}},36831:function(e,t,n){var r=n(55862).FROM_BL;e.exports=function(e,t,n){void 0===n&&(n=r[e.constraintoward||"center"]);var a=[e.r2l(e.range[0]),e.r2l(e.range[1])],i=a[0]+(a[1]-a[0])*n;e.range=e._input.range=[e.l2r(i+(a[0]-i)*t),e.l2r(i+(a[1]-i)*t)],e.setScale()}},53647:function(e,t,n){var r=n(12583),a=n(11910).aL,i=n(11005),o=i.numberFormat,l=n(74668),s=i.cleanNumber,c=i.ms2DateTime,u=i.dateTime2ms,d=i.ensureNumber,f=i.isArrayOrTypedArray,p=n(30513),h=p.FP_SAFE,m=p.BADNUM,y=p.LOG_CLIP,v=p.ONEWEEK,g=p.ONEDAY,b=p.ONEHOUR,x=p.ONEMIN,T=p.ONESEC,w=n(55483),k=n(13806),A=k.HOUR_PATTERN,S=k.WEEKDAY_PATTERN;function C(e){return Math.pow(10,e)}function I(e){return null!=e}e.exports=function(e,t){t=t||{};var n=e._id||"x",p=n.charAt(0);function L(t,n){if(t>0)return Math.log(t)/Math.LN10;if(t<=0&&n&&e.range&&2===e.range.length){var r=e.range[0],a=e.range[1];return.5*(r+a-2*y*Math.abs(r-a))}return m}function P(t,n,r,a){if((a||{}).msUTC&&l(t))return+t;var o=u(t,r||e.calendar);if(o===m){if(!l(t))return m;t=+t;var s=Math.floor(10*i.mod(t+.05,1)),c=Math.round(t-s/10);o=u(new Date(c))+s/10}return o}function E(t,n,r){return c(t,n,r||e.calendar)}function M(t){return e._categories[Math.round(t)]}function Z(t){if(I(t)){if(void 0===e._categoriesMap&&(e._categoriesMap={}),void 0!==e._categoriesMap[t])return e._categoriesMap[t];e._categories.push("number"==typeof t?String(t):t);var n=e._categories.length-1;return e._categoriesMap[t]=n,n}return m}function O(t){if(e._categoriesMap)return e._categoriesMap[t]}function R(e){var t=O(e);return void 0!==t?t:l(e)?+e:void 0}function N(e){return l(e)?+e:O(e)}function X(e,t,n){return r.round(n+t*e,2)}function H(e,t,n){return(e-n)/t}var D=function(t){return l(t)?X(t,e._m,e._b):m},W=function(t){return H(t,e._m,e._b)};if(e.rangebreaks){var G="y"===p;D=function(t){if(!l(t))return m;var n=e._rangebreaks.length;if(!n)return X(t,e._m,e._b);var r=G;e.range[0]>e.range[1]&&(r=!r);for(var a=r?-1:1,i=a*t,o=0,s=0;su)){o=i<(c+u)/2?s:s+1;break}o=s+1}var d=e._B[o]||0;return isFinite(d)?X(t,e._m2,d):0},W=function(t){var n=e._rangebreaks.length;if(!n)return H(t,e._m,e._b);for(var r=0,a=0;ae._rangebreaks[a].pmax&&(r=a+1);return H(t,e._m2,e._B[r])}}e.c2l="log"===e.type?L:d,e.l2c="log"===e.type?C:d,e.l2p=D,e.p2l=W,e.c2p="log"===e.type?function(e,t){return D(L(e,t))}:D,e.p2c="log"===e.type?function(e){return C(W(e))}:W,-1!==["linear","-"].indexOf(e.type)?(e.d2r=e.r2d=e.d2c=e.r2c=e.d2l=e.r2l=s,e.c2d=e.c2r=e.l2d=e.l2r=d,e.d2p=e.r2p=function(t){return e.l2p(s(t))},e.p2d=e.p2r=W,e.cleanPos=d):"log"===e.type?(e.d2r=e.d2l=function(e,t){return L(s(e),t)},e.r2d=e.r2c=function(e){return C(s(e))},e.d2c=e.r2l=s,e.c2d=e.l2r=d,e.c2r=L,e.l2d=C,e.d2p=function(t,n){return e.l2p(e.d2r(t,n))},e.p2d=function(e){return C(W(e))},e.r2p=function(t){return e.l2p(s(t))},e.p2r=W,e.cleanPos=d):"date"===e.type?(e.d2r=e.r2d=i.identity,e.d2c=e.r2c=e.d2l=e.r2l=P,e.c2d=e.c2r=e.l2d=e.l2r=E,e.d2p=e.r2p=function(t,n,r){return e.l2p(P(t,0,r))},e.p2d=e.p2r=function(e,t,n){return E(W(e),t,n)},e.cleanPos=function(t){return i.cleanDate(t,m,e.calendar)}):"category"===e.type?(e.d2c=e.d2l=Z,e.r2d=e.c2d=e.l2d=M,e.d2r=e.d2l_noadd=R,e.r2c=function(t){var n=N(t);return void 0!==n?n:e.fraction2r(.5)},e.l2r=e.c2r=d,e.r2l=N,e.d2p=function(t){return e.l2p(e.r2c(t))},e.p2d=function(e){return M(W(e))},e.r2p=e.d2p,e.p2r=W,e.cleanPos=function(e){return"string"==typeof e&&""!==e?e:d(e)}):"multicategory"===e.type&&(e.r2d=e.c2d=e.l2d=M,e.d2r=e.d2l_noadd=R,e.r2c=function(t){var n=R(t);return void 0!==n?n:e.fraction2r(.5)},e.r2c_just_indices=O,e.l2r=e.c2r=d,e.r2l=R,e.d2p=function(t){return e.l2p(e.r2c(t))},e.p2d=function(e){return M(W(e))},e.r2p=e.d2p,e.p2r=W,e.cleanPos=function(e){return Array.isArray(e)||"string"==typeof e&&""!==e?e:d(e)},e.setupMultiCategory=function(r){var a,o,l=e._traceIndices,s=e._matchGroup;if(s&&0===e._categories.length)for(var c in s)if(c!==n){var u=t[w.id2name(c)];l=l.concat(u._traceIndices)}var d=[[0,{}],[0,{}]],h=[];for(a=0;as[1]&&(a[l?0:1]=r),a[0]===a[1]){var c=e.l2r(n),u=e.l2r(r);if(void 0!==n){var d=c+1;void 0!==r&&(d=Math.min(d,u)),a[l?1:0]=d}if(void 0!==r){var f=u+1;void 0!==n&&(f=Math.max(f,c)),a[l?0:1]=f}}}},e.cleanRange=function(t,n){e._cleanRange(t,n),e.limitRange(t)},e._cleanRange=function(t,n){n||(n={}),t||(t="range");var r,a,o=i.nestedProperty(e,t).get();if(a=(a="date"===e.type?i.dfltRange(e.calendar):"y"===p?k.DFLTRANGEY:"realaxis"===e._name?[0,1]:n.dfltRange||k.DFLTRANGEX).slice(),"tozero"!==e.rangemode&&"nonnegative"!==e.rangemode||(a[0]=0),o&&2===o.length){var s=null===o[0],c=null===o[1];for("date"!==e.type||e.autorange||(o[0]=i.cleanDate(o[0],m,e.calendar),o[1]=i.cleanDate(o[1],m,e.calendar)),r=0;r<2;r++)if("date"===e.type){if(!i.isDateTime(o[r],e.calendar)){e[t]=a;break}if(e.r2l(o[0])===e.r2l(o[1])){var u=i.constrain(e.r2l(o[0]),i.MIN_MS+1e3,i.MAX_MS-1e3);o[0]=e.l2r(u-1e3),o[1]=e.l2r(u+1e3);break}}else{if(!l(o[r])){if(s||c||!l(o[1-r])){e[t]=a;break}o[r]=o[1-r]*(r?10:.1)}if(o[r]<-h?o[r]=-h:o[r]>h&&(o[r]=h),o[0]===o[1]){var d=Math.max(1,Math.abs(1e-6*o[0]));o[0]-=d,o[1]+=d}}}else i.nestedProperty(e,t).set(a)},e.setScale=function(n){var r=t._size;if(e.overlaying){var a=w.getFromId({_fullLayout:t},e.overlaying);e.domain=a.domain}var i=n&&e._r?"_r":"range",o=e.calendar;e.cleanRange(i);var l,s,c=e.r2l(e[i][0],o),u=e.r2l(e[i][1],o),d="y"===p;if(d?(e._offset=r.t+(1-e.domain[1])*r.h,e._length=r.h*(e.domain[1]-e.domain[0]),e._m=e._length/(c-u),e._b=-e._m*u):(e._offset=r.l+e.domain[0]*r.w,e._length=r.w*(e.domain[1]-e.domain[0]),e._m=e._length/(u-c),e._b=-e._m*c),e._rangebreaks=[],e._lBreaks=0,e._m2=0,e._B=[],e.rangebreaks&&(e._rangebreaks=e.locateBreaks(Math.min(c,u),Math.max(c,u)),e._rangebreaks.length)){for(l=0;lu&&(f=!f),f&&e._rangebreaks.reverse();var h=f?-1:1;for(e._m2=h*e._length/(Math.abs(u-c)-e._lBreaks),e._B.push(-e._m2*(d?u:c)),l=0;la&&(a+=7,oa&&(a+=24,o=r&&o=r&&t=l.min&&(el.max&&(l.max=r),a=!1)}a&&c.push({min:e,max:r})}};for(r=0;rn.duration?(function(){for(var n={},r=0;r rect").call(o.setTranslate,0,0).call(o.setScale,1,1),e.plot.call(o.setTranslate,t._offset,n._offset).call(o.setScale,1,1);var r=e.plot.selectAll(".scatterlayer .trace");r.selectAll(".point").call(o.setPointGroupScale,1,1),r.selectAll(".textpoint").call(o.setTextPointsScale,1,1),r.call(o.hideOutsideRangePoints,e)}function y(t,n){var r=t.plotinfo,a=r.xaxis,s=r.yaxis,c=a._length,u=s._length,d=!!t.xr1,f=!!t.yr1,p=[];if(d){var h=i.simpleMap(t.xr0,a.r2l),m=i.simpleMap(t.xr1,a.r2l),y=h[1]-h[0],v=m[1]-m[0];p[0]=(h[0]*(1-n)+n*m[0]-h[0])/(h[1]-h[0])*c,p[2]=c*(1-n+n*v/y),a.range[0]=a.l2r(h[0]*(1-n)+n*m[0]),a.range[1]=a.l2r(h[1]*(1-n)+n*m[1])}else p[0]=0,p[2]=c;if(f){var g=i.simpleMap(t.yr0,s.r2l),b=i.simpleMap(t.yr1,s.r2l),x=g[1]-g[0],T=b[1]-b[0];p[1]=(g[1]*(1-n)+n*b[1]-g[1])/(g[0]-g[1])*u,p[3]=u*(1-n+n*T/x),s.range[0]=a.l2r(g[0]*(1-n)+n*b[0]),s.range[1]=s.l2r(g[1]*(1-n)+n*b[1])}else p[1]=0,p[3]=u;l.drawOne(e,a,{skipTitle:!0}),l.drawOne(e,s,{skipTitle:!0}),l.redrawComponents(e,[a._id,s._id]);var w=d?c/p[2]:1,k=f?u/p[3]:1,A=d?p[0]:0,S=f?p[1]:0,C=d?p[0]/p[2]*c:0,I=f?p[1]/p[3]*u:0,L=a._offset-C,P=s._offset-I;r.clipRect.call(o.setTranslate,A,S).call(o.setScale,1/w,1/k),r.plot.call(o.setTranslate,L,P).call(o.setScale,w,k),o.setPointGroupScale(r.zoomScalePts,1/w,1/k),o.setTextPointsScale(r.zoomScaleTxt,1/w,1/k)}l.redrawComponents(e)}},81212:function(e,t,n){var r=n(94134).traceIs,a=n(54942);function i(e){return{v:"x",h:"y"}[e.orientation||"v"]}function o(e,t){var n=i(e),a=r(e,"box-violin"),o=r(e._fullInput||{},"candlestick");return a&&!o&&t===n&&void 0===e[n]&&void 0===e[n+"0"]}e.exports=function(e,t,n,l){n("autotypenumbers",l.autotypenumbersDflt),"-"===n("type",(l.splomStash||{}).type)&&(function(e,t){if("-"===e.type){var n,l=e._id,s=l.charAt(0);-1!==l.indexOf("scene")&&(l=s);var c=function(e,t,n){for(var r=0;r0&&(a["_"+n+"axes"]||{})[t])return a;if((a[n+"axis"]||n)===t){if(o(a,n))return a;if((a[n]||[]).length||a[n+"0"])return a}}}(t,l,s);if(c)if("histogram"!==c.type||s!=={v:"y",h:"x"}[c.orientation||"v"]){var u=s+"calendar",d=c[u],f={noMultiCategory:!r(c,"cartesian")||r(c,"noMultiCategory")};if("box"===c.type&&c._hasPreCompStats&&s==={h:"x",v:"y"}[c.orientation||"v"]&&(f.noMultiCategory=!0),f.autotypenumbers=e.autotypenumbers,o(c,s)){var p=i(c),h=[];for(n=0;n0?".":"")+i;a.isPlainObject(o)?s(o,t,l,r+1):t(l,i,o)}}))}t.manageCommandObserver=function(e,n,r,o){var l={},s=!0;n&&n._commandObserver&&(l=n._commandObserver),l.cache||(l.cache={}),l.lookupTable={};var c=t.hasSimpleAPICommandBindings(e,r,l.lookupTable);if(n&&n._commandObserver){if(c)return l;if(n._commandObserver.remove)return n._commandObserver.remove(),n._commandObserver=null,l}if(c){i(e,c,l.cache),l.check=function(){if(s){var t=i(e,c,l.cache);return t.changed&&o&&void 0!==l.lookupTable[t.value]&&(l.disable(),Promise.resolve(o({value:t.value,type:c.type,prop:c.prop,traces:c.traces,index:l.lookupTable[t.value]})).then(l.enable,l.enable)),t.changed}};for(var u=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],d=0;d=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),n.attr(i);var o=n.select(".js-link-to-tool"),l=n.select(".js-link-spacer"),s=n.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&function(e,t){t.text("");var n=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" "+String.fromCharCode(187));if(e._context.sendData)n.on("click",(function(){w.sendDataToCloud(e)}));else{var r=window.location.pathname.split("/"),a=window.location.search;n.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+r[2].split(".")[0]+"/"+r[1]+a})}}(e,o),l.text(o.text()&&s.text()?" - ":"")}},w.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var n=r.select(e).append("div").attr("id","hiddenform").style("display","none"),a=n.append("form").attr({action:t+"/external",method:"post",target:"_blank"});return a.append("input").attr({type:"text",name:"data"}).node().value=w.graphJson(e,!1,"keepdata"),a.node().submit(),n.remove(),e.emit("plotly_afterexport"),!1}};var S=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],C=["year","month","dayMonth","dayMonthYear"];function I(e,t){var n=e._context.locale;n||(n="en-US");var r=!1,a={};function i(e){for(var n=!0,i=0;i1&&X.length>1){for(s.getComponentMethod("grid","sizeDefaults")(f,u),c=0;c15&&X.length>15&&0===u.shapes.length&&0===u.images.length,w.linkSubplots(h,u,p,l),w.cleanPlot(h,u,p,l);var V=!(!l._has||!l._has("gl2d")),z=!(!u._has||!u._has("gl2d")),F=!(!l._has||!l._has("cartesian"))||V,Y=!(!u._has||!u._has("cartesian"))||z;F&&!Y?l._bgLayer.remove():Y&&!F&&(u._shouldCreateBgLayer=!0),l._zoomlayer&&!e._dragging&&m({_fullLayout:l}),function(e,t){var n,r=[];t.meta&&(n=t._meta={meta:t.meta,layout:{meta:t.meta}});for(var a=0;a0){var u=1-2*l;r=Math.round(u*r),a=Math.round(u*a)}}var f=w.layoutAttributes.width.min,p=w.layoutAttributes.height.min;r1,m=!t.height&&Math.abs(n.height-a)>1;(m||h)&&(h&&(n.width=r),m&&(n.height=a)),e._initialAutoSize||(e._initialAutoSize={width:r,height:a}),w.sanitizeMargins(n)},w.supplyLayoutModuleDefaults=function(e,t,n,r){var a,i,o,l=s.componentsRegistry,c=t._basePlotModules,u=s.subplotsRegistry.cartesian;for(a in l)(o=l[a]).includeBasePlot&&o.includeBasePlot(e,t);for(var f in c.length||c.push(u),t._has("cartesian")&&(s.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t)),t._subplots)t._subplots[f].sort(d.subplotSort);for(i=0;i1&&(n.l/=v,n.r/=v)}if(p){var g=(n.t+n.b)/p;g>1&&(n.t/=g,n.b/=g)}var b=void 0!==n.xl?n.xl:n.x,x=void 0!==n.xr?n.xr:n.x,T=void 0!==n.yt?n.yt:n.y,k=void 0!==n.yb?n.yb:n.y;h[t]={l:{val:b,size:n.l+y},r:{val:x,size:n.r+y},b:{val:k,size:n.b+y},t:{val:T,size:n.t+y}},m[t]=1}else delete h[t],delete m[t];if(!r._replotting)return w.doAutoMargin(e)}},w.doAutoMargin=function(e){var t=e._fullLayout,n=t.width,r=t.height;t._size||(t._size={}),Z(t);var a=t._size,i=t.margin,l={t:0,b:0,l:0,r:0},c=d.extendFlat({},a),u=i.l,f=i.r,p=i.t,m=i.b,y=t._pushmargin,v=t._pushmarginIds,g=t.minreducedwidth,b=t.minreducedheight;if(!1!==i.autoexpand){for(var x in y)v[x]||delete y[x];var T=e._fullLayout._reservedMargin;for(var k in T)for(var A in T[k]){var S=T[k][A];l[A]=Math.max(l[A],S)}for(var C in y.base={l:{val:0,size:u},r:{val:1,size:f},t:{val:1,size:p},b:{val:0,size:m}},l){var I=0;for(var L in y)"base"!==L&&o(y[L][C].size)&&(I=y[L][C].size>I?y[L][C].size:I);var P=Math.max(0,i[C]-I);l[C]=Math.max(0,l[C]-P)}for(var E in y){var M=y[E].l||{},O=y[E].b||{},R=M.val,N=M.size,X=O.val,H=O.size,D=n-l.r-l.l,W=r-l.t-l.b;for(var G in y){if(o(N)&&y[G].r){var V=y[G].r.val,z=y[G].r.size;if(V>R){var F=(N*V+(z-D)*R)/(V-R),Y=(z*(1-R)+(N-D)*(1-V))/(V-R);F+Y>u+f&&(u=F,f=Y)}}if(o(H)&&y[G].t){var _=y[G].t.val,B=y[G].t.size;if(_>X){var j=(H*_+(B-W)*X)/(_-X),K=(B*(1-X)+(H-W)*(1-_))/(_-X);j+K>m+p&&(m=j,p=K)}}}}}var J,U,Q=d.constrain(n-i.l-i.r,2,g),q=d.constrain(r-i.t-i.b,2,b),$=Math.max(0,n-Q),ee=Math.max(0,r-q);if($){var te=(u+f)/$;te>1&&(u/=te,f/=te)}if(ee){var ne=(m+p)/ee;ne>1&&(m/=ne,p/=ne)}if(a.l=Math.round(u)+l.l,a.r=Math.round(f)+l.r,a.t=Math.round(p)+l.t,a.b=Math.round(m)+l.b,a.p=Math.round(i.pad),a.w=Math.round(n)-a.l-a.r,a.h=Math.round(r)-a.t-a.b,!t._replotting&&(w.didMarginChange(c,a)||function(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=h.list(e,"",!0);for(var n in t)if(t[n].autoshift||t[n].shift)return!0;return!1}(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var re=3*(1+Object.keys(v).length);if(t._redrawFromAutoMarginCount0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push((function(){r=!0})),n.redraw&&e._transitionData._interruptCallbacks.push((function(){return s.call("redraw",e)})),e._transitionData._interruptCallbacks.push((function(){e.emit("plotly_transitioninterrupted",[])}));var i=0,o=0;function l(){return i++,function(){var t;o++,r||o!==i||(t=a,e._transitionData&&(function(e){if(e)for(;e.length;)e.shift()}(e._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(n.redraw)return s.call("redraw",e)})).then((function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])})).then(t)))}}n.runFn(l),setTimeout(l())}))}],i=d.syncOrAsync(a,e);return i&&i.then||(i=Promise.resolve()),i.then((function(){return e}))}w.didMarginChange=function(e,t){for(var n=0;n1)return!0}return!1},w.graphJson=function(e,t,n,r,a,i){(a&&t&&!e._fullData||a&&!t&&!e._fullLayout)&&w.supplyDefaults(e);var o=a?e._fullData:e.data,s=a?e._fullLayout:e.layout,c=(e._transitionData||{})._frames;function u(e,t){if("function"==typeof e)return t?"_function_":null;if(d.isPlainObject(e)){var r,a={};return Object.keys(e).sort().forEach((function(i){if(-1===["_","["].indexOf(i.charAt(0)))if("function"!=typeof e[i]){if("keepdata"===n){if("src"===i.substr(i.length-3))return}else if("keepstream"===n){if("string"==typeof(r=e[i+"src"])&&r.indexOf(":")>0&&!d.isPlainObject(e.stream))return}else if("keepall"!==n&&"string"==typeof(r=e[i+"src"])&&r.indexOf(":")>0)return;a[i]=u(e[i],t)}else t&&(a[i]="_function")})),a}var i=Array.isArray(e),o=d.isTypedArray(e);if((i||o)&&e.dtype&&e.shape){var s=e.bdata;return u({dtype:e.dtype,shape:e.shape,bdata:d.isArrayBuffer(s)?l.encode(s):s},t)}return i?e.map((function(e){return u(e,t)})):o?d.simpleMap(e,d.identity):d.isJSDate(e)?d.ms2DateTimeLocal(+e):e}var f={data:(o||[]).map((function(e){var n=u(e);return t&&delete n.fit,n}))};if(!t&&(f.layout=u(s),a)){var p=s._size;f.layout.computed={margin:{b:p.b,l:p.l,r:p.r,t:p.t}}}return c&&(f.frames=u(c)),i&&(f.config=u(e._context,!0)),"object"===r?f:JSON.stringify(f)},w.modifyFrames=function(e,t){var n,r,a,i=e._transitionData._frames,o=e._transitionData._frameHash;for(n=0;n=0;i--)if(s[i].enabled){n._indexToPoints=s[i]._indexToPoints;break}r&&r.calc&&(o=r.calc(e,n))}Array.isArray(o)&&o[0]||(o=[{x:p,y:p}]),o[0].t||(o[0].t={}),o[0].trace=n,f[t]=o}}for(X(o,l,u),a=0;a0){for(var r=[],a=0;a-1&&(d[p[n]].title={text:""});for(n=0;n")?"":k.html(e).text()})),k.remove(),S=A).replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(u,"'"),a.isIE()&&(S=(S=(S=S.replace(/"/gi,"'")).replace(/(\('#)([^']*)('\))/gi,'("#$2")')).replace(/(\\')/gi,'"')),S}},87026:function(e,t,n){var r=n(11005);e.exports=function(e,t){for(var n=0;nd+c||!r(u))}for(var p=0;p=0)return e}else if("string"==typeof e&&"%"===(e=e.trim()).slice(-1)&&r(e.slice(0,-1))&&(e=+e.slice(0,-1))>=0)return e+"%"}function h(e,t,n,r,i,o){var l=!(!1===(o=o||{}).moduleHasSelected),s=!(!1===o.moduleHasUnselected),c=!(!1===o.moduleHasConstrain),u=!(!1===o.moduleHasCliponaxis),d=!(!1===o.moduleHasTextangle),p=!(!1===o.moduleHasInsideanchor),h=!!o.hasPathbar,m=Array.isArray(i)||"auto"===i,y=m||"inside"===i,v=m||"outside"===i;if(y||v){var g=f(r,"textfont",n.font),b=a.extendFlat({},g),x=!(e.textfont&&e.textfont.color);if(x&&delete b.color,f(r,"insidetextfont",b),h){var T=a.extendFlat({},g);x&&delete T.color,f(r,"pathbar.textfont",T)}v&&f(r,"outsidetextfont",g),l&&r("selected.textfont.color"),s&&r("unselected.textfont.color"),c&&r("constraintext"),u&&r("cliponaxis"),d&&r("textangle"),r("texttemplate")}y&&p&&r("insidetextanchor")}e.exports={supplyDefaults:function(e,t,n,r){function u(n,r){return a.coerce(e,t,d,n,r)}if(l(e,t,r,u)){s(e,t,r,u),u("xhoverformat"),u("yhoverformat"),u("orientation",t.x&&!t.y?"h":"v"),u("base"),u("offset"),u("width"),u("text"),u("hovertext"),u("hovertemplate");var f=u("textposition");h(e,0,r,u,f,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),c(e,t,u,n,r);var p=(t.marker.line||{}).color,m=o.getComponentMethod("errorbars","supplyDefaults");m(e,t,p||i.defaultLine,{axis:"y"}),m(e,t,p||i.defaultLine,{axis:"x",inherit:"y"}),a.coerceSelectionMarkerOpacity(t,u)}else t.visible=!1},crossTraceDefaults:function(e,t){var n,r;function i(e,t){return a.coerce(r._input,r,d,e,t)}for(var o=0;oi))return t}return void 0!==n?n:e.dflt},t.coerceColor=function(e,t,n){return a(t).isValid()?t:void 0!==n?n:e.dflt},t.coerceEnumerated=function(e,t,n){return e.coerceNumber&&(t=+t),-1!==e.values.indexOf(t)?t:void 0!==n?n:e.dflt},t.getValue=function(e,t){var n;return i(e)?t0?t+=n:u<0&&(t-=n)}return t}function R(e){var t=u,n=e.b,a=O(e);return r.inbox(n-t,a-t,T+(a-t)/(a-n)-1)}var N=e[d+"a"],X=e[f+"a"];m=Math.abs(N.r2c(N.range[1])-N.r2c(N.range[0]));var H,D,W,G,V=r.getDistanceFunction(a,p,h,(function(e){return(p(e)+h(e))/2}));if(r.getClosest(y,V,e),!1!==e.index&&y[e.index].p!==c){A||(P=function(e){return Math.min(S(e),e.p-g.bargroupwidth/2)},E=function(e){return Math.max(C(e),e.p+g.bargroupwidth/2)});var z=y[e.index],F=v.base?z.b+z.s:z.s;e[f+"0"]=e[f+"1"]=X.c2p(z[f],!0),e[f+"LabelVal"]=F;var Y=g.extents[g.extents.round(z.p)];e[d+"0"]=N.c2p(b?P(z):Y[0],!0),e[d+"1"]=N.c2p(b?E(z):Y[1],!0);var _=void 0!==z.orig_p;return e[d+"LabelVal"]=_?z.orig_p:z.p,e.labelLabel=s(N,e[d+"LabelVal"],v[d+"hoverformat"]),e.valueLabel=s(X,e[f+"LabelVal"],v[f+"hoverformat"]),e.baseLabel=s(X,z.b,v[f+"hoverformat"]),e.spikeDistance=(D=u,W=(H=z).b,G=O(H),(r.inbox(W-D,G-D,w+(G-D)/(G-W)-1)+function(e){return M(S(e),C(e),w)}(z))/2),e[d+"Spike"]=N.c2p(z.p,!0),o(z,v,e),e.hovertemplate=v.hovertemplate,e}}function d(e,t){var n=t.mcc||e.marker.color,r=t.mlcc||e.marker.line.color,a=l(e,t);return i.opacity(n)?n:i.opacity(r)&&a?r:void 0}e.exports={hoverPoints:function(e,t,n,r,i){var o=u(e,t,n,r,i);if(o){var l=o.cd,s=l[0].trace,c=l[o.index];return o.color=d(s,c),a.getComponentMethod("errorbars","hoverInfo")(c,s,o),[o]}},hoverOnBars:u,getTraceColor:d}},62758:function(e,t,n){e.exports={attributes:n(14717),layoutAttributes:n(11896),supplyDefaults:n(60093).supplyDefaults,crossTraceDefaults:n(60093).crossTraceDefaults,supplyLayoutDefaults:n(67887),calc:n(56593),crossTraceCalc:n(41626).crossTraceCalc,colorbar:n(74518),arraysToCalcdata:n(87026),plot:n(78951).plot,style:n(16319).style,styleOnSelect:n(16319).styleOnSelect,hoverPoints:n(57132).hoverPoints,eventData:n(73841),selectPoints:n(11340),moduleType:"trace",name:"bar",basePlotModule:n(35243),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}},11896:function(e){e.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}},67887:function(e,t,n){var r=n(94134),a=n(60638),i=n(11005),o=n(11896),l=n(60093).validateCornerradius;e.exports=function(e,t,n){function s(n,r){return i.coerce(e,t,o,n,r)}for(var c=!1,u=!1,d=!1,f={},p=s("barmode"),h=0;h0)-(e<0)}function S(e,t){return e0}function L(e,t,n,r,a){return!(e<0||t<0)&&(n<=e&&r<=t||n<=t&&r<=e||(a?e>=n*(t/r):t>=r*(e/n)))}function P(e){return"auto"===e?0:e}function E(e,t){var n=Math.PI/180*t,r=Math.abs(Math.sin(n)),a=Math.abs(Math.cos(n));return{x:e.width*a+e.height*r,y:e.width*r+e.height*a}}function M(e,t,n,r,a,i){var o=!!i.isHorizontal,l=!!i.constrained,s=i.angle||0,c=i.anchor,u="end"===c,d="start"===c,f=((i.leftToRight||0)+1)/2,p=1-f,h=i.hasB,m=i.r,y=i.overhead,v=a.width,g=a.height,b=Math.abs(t-e),x=Math.abs(r-n),w=b>2*T&&x>2*T?T:0;b-=2*w,x-=2*w;var k=P(s);"auto"!==s||v<=b&&g<=x||!(v>b||g>x)||(v>x||g>b)&&vT){var J=(I=e,L=t,M=n,Z=r,O=K,R=m,N=y,X=o,H=h,z=Math.max(0,Math.abs(L-I)-2*T),F=Math.max(0,Math.abs(Z-M)-2*T),Y=R-T,_=N?Y-Math.sqrt(Y*Y-(Y-N)*(Y-N)):Y,B=H?2*Y:X?Y-N:2*_,j=H?2*Y:X?2*_:Y-N,O.y/O.x>=F/(z-B)?V=F/O.y:O.y/O.x<=(F-j)/z?V=z/O.x:!H&&X?(D=O.x*O.x+O.y*O.y/4,G=(z-Y)*(z-Y)+(F/2-Y)*(F/2-Y)-Y*Y,V=(-(W=-2*O.x*(z-Y)-O.y*(F/2-Y))+Math.sqrt(W*W-4*D*G))/(2*D)):H?(D=(O.x*O.x+O.y*O.y)/4,G=(z/2-Y)*(z/2-Y)+(F/2-Y)*(F/2-Y)-Y*Y,V=(-(W=-O.x*(z/2-Y)-O.y*(F/2-Y))+Math.sqrt(W*W-4*D*G))/(2*D)):(D=O.x*O.x/4+O.y*O.y,G=(z/2-Y)*(z/2-Y)+(F-Y)*(F-Y)-Y*Y,V=(-(W=-O.x*(z/2-Y)-2*O.y*(F-Y))+Math.sqrt(W*W-4*D*G))/(2*D)),{scale:V=Math.min(1,V),pad:X?Math.max(0,Y-Math.sqrt(Math.max(0,Y*Y-(Y-(F-O.y*V)/2)*(Y-(F-O.y*V)/2)))-N):Math.max(0,Y-Math.sqrt(Math.max(0,Y*Y-(Y-(z-O.x*V)/2)*(Y-(z-O.x*V)/2)))-N)});A=J.scale,C=J.pad}else A=1,l&&(A=Math.min(1,b/K.x,x/K.y)),C=0;var U=a.left*p+a.right*f,Q=(a.top+a.bottom)/2,q=(e+T)*p+(t-T)*f,$=(n+r)/2,ee=0,te=0;if(d||u){var ne=(o?K.x:K.y)/2;m&&(u||h)&&(w+=C);var re=o?S(e,t):S(n,r);o?d?(q=e+re*w,ee=-re*ne):(q=t-re*w,ee=re*ne):d?($=n+re*w,te=-re*ne):($=r-re*w,te=re*ne)}return{textX:U,textY:Q,targetX:q,targetY:$,anchorX:ee,anchorY:te,scale:A,rotate:k}}e.exports={plot:function(e,t,n,d,y,v){var w=t.xaxis,Z=t.yaxis,O=e._fullLayout,R=e._context.staticPlot;y||(y={mode:O.barmode,norm:O.barmode,gap:O.bargap,groupgap:O.bargroupgap},p("bar",O));var N=i.makeTraceGroups(d,n,"trace bars").each((function(n){var c=r.select(this),d=n[0].trace,p=n[0].t,N="waterfall"===d.type,X="funnel"===d.type,H="histogram"===d.type,D="bar"===d.type,W=D||X,G=0;N&&d.connector.visible&&"between"===d.connector.mode&&(G=d.connector.line.width/2);var V="h"===d.orientation,z=I(y),F=i.ensureSingle(c,"g","points"),Y=k(d),_=F.selectAll("g.point").data(i.identity,Y);_.enter().append("g").classed("point",!0),_.exit().remove(),_.each((function(c,k){var I,N,X,F,Y,_,B,j,K,J,U=r.select(this),Q=(X=c,F=w,Y=Z,j=[],K=(_=V)?F:Y,J=_?Y:F,(B=[])[0]=K.c2p(X.s0,!0),j[0]=J.c2p(X.p0,!0),B[1]=K.c2p(X.s1,!0),j[1]=J.c2p(X.p1,!0),_?[B,j]:[j,B]),q=Q[0][0],$=Q[0][1],ee=Q[1][0],te=Q[1][1],ne=0==(V?$-q:te-ee);if(ne&&W&&m.getLineWidth(d,c)&&(ne=!1),ne||(ne=!(a(q)&&a($)&&a(ee)&&a(te))),c.isBlank=ne,ne&&(V?$=q:te=ee),G&&!ne&&(V?(q-=S(q,$)*G,$+=S(q,$)*G):(ee-=S(ee,te)*G,te+=S(ee,te)*G)),"waterfall"===d.type){if(!ne){var re=d[c.dir].marker;I=re.line.width,N=re.color}}else I=m.getLineWidth(d,c),N=c.mc||d.marker.color;function ae(e){var t=r.round(I/2%1,2);return 0===y.gap&&0===y.groupgap?r.round(Math.round(e)-t,2):e}var ie=l.opacity(N)<1||I>.01?ae:function(e,t,n){return n&&e===t?e:Math.abs(e-t)>=2?ae(e):e>t?Math.ceil(e):Math.floor(e)};e._context.staticPlot||(q=ie(q,$,V),$=ie($,q,V),ee=ie(ee,te,!V),te=ie(te,ee,!V));var oe,le=V?w.c2p:Z.c2p;oe=c.s0>0?c._sMax:c.s0<0?c._sMin:c.s1>0?c._sMax:c._sMin;var se,ce,ue=D||H?function(e,t){if(!e)return 0;var n,r=V?Math.abs(te-ee):Math.abs($-q),a=V?Math.abs($-q):Math.abs(te-ee),i=ie(Math.abs(le(oe,!0)-le(0,!0))),o=c.hasB?Math.min(r/2,a/2):Math.min(r/2,i);return n="%"===t?r*(Math.min(50,e)/100):e,ie(Math.max(Math.min(n,o),0))}(p.cornerradiusvalue,p.cornerradiusform):0,de="M"+q+","+ee+"V"+te+"H"+$+"V"+ee+"Z",fe=0;if(ue&&c.s){var pe=0===A(c.s0)||A(c.s)===A(c.s0)?c.s1:c.s0;if((fe=ie(c.hasB?0:Math.abs(le(oe,!0)-le(pe,!0))))0?Math.sqrt(fe*(2*ue-fe)):0,be=he>0?Math.max:Math.min;se="M"+q+","+ee+"V"+(te-ve*me)+"H"+be($-(ue-fe)*he,q)+"A "+ue+","+ue+" 0 0 "+ye+" "+$+","+(te-ue*me-ge)+"V"+(ee+ue*me+ge)+"A "+ue+","+ue+" 0 0 "+ye+" "+be($-(ue-fe)*he,q)+","+(ee+ve*me)+"Z"}else if(c.hasB)se="M"+(q+ue*he)+","+ee+"A "+ue+","+ue+" 0 0 "+ye+" "+q+","+(ee+ue*me)+"V"+(te-ue*me)+"A "+ue+","+ue+" 0 0 "+ye+" "+(q+ue*he)+","+te+"H"+($-ue*he)+"A "+ue+","+ue+" 0 0 "+ye+" "+$+","+(te-ue*me)+"V"+(ee+ue*me)+"A "+ue+","+ue+" 0 0 "+ye+" "+($-ue*he)+","+ee+"Z";else{var xe=(ce=Math.abs(te-ee)+fe)0?Math.sqrt(fe*(2*ue-fe)):0,we=me>0?Math.max:Math.min;se="M"+(q+xe*he)+","+ee+"V"+we(te-(ue-fe)*me,ee)+"A "+ue+","+ue+" 0 0 "+ye+" "+(q+ue*he-Te)+","+te+"H"+($-ue*he+Te)+"A "+ue+","+ue+" 0 0 "+ye+" "+($-xe*he)+","+we(te-(ue-fe)*me,ee)+"V"+ee+"Z"}}else se=de}else se=de;var ke=C(i.ensureSingle(U,"path"),O,y,v);if(ke.style("vector-effect",R?"none":"non-scaling-stroke").attr("d",isNaN(($-q)*(te-ee))||ne&&e._context.staticPlot?"M0,0Z":se).call(s.setClipUrl,t.layerClipId,e),!O.uniformtext.mode&&z){var Ae=s.makePointStyleFns(d);s.singlePointStyle(c,ke,d,Ae,e)}!function(e,t,n,r,a,l,c,d,p,y,v,w,k){var A,I=t.xaxis,Z=t.yaxis,O=e._fullLayout;function R(t,n,r){return i.ensureSingle(t,"text").text(n).attr({class:"bartext bartext-"+A,"text-anchor":"middle","data-notex":1}).call(s.font,r).call(o.convertToTspans,e)}var N,X,H,D=r[0].trace,W="h"===D.orientation,G=function(e,t,n,r,a){var o,l=t[0].trace;return o=l.texttemplate?function(e,t,n,r,a){var o=t[0].trace,l=i.castOption(o,n,"texttemplate");if(!l)return"";var s,c,d,f,p="histogram"===o.type,h="waterfall"===o.type,m="funnel"===o.type,y="h"===o.orientation;function v(e){return u(f,f.c2l(e),!0).text}y?(s="y",c=a,d="x",f=r):(s="x",c=r,d="y",f=a);var g,b=t[n],T={};T.label=b.p,T.labelLabel=T[s+"Label"]=(g=b.p,u(c,c.c2l(g),!0).text);var w=i.castOption(o,b.i,"text");(0===w||w)&&(T.text=w),T.value=b.s,T.valueLabel=T[d+"Label"]=v(b.s);var k={};x(k,o,b.i),(p||void 0===k.x)&&(k.x=y?T.value:T.label),(p||void 0===k.y)&&(k.y=y?T.label:T.value),(p||void 0===k.xLabel)&&(k.xLabel=y?T.valueLabel:T.labelLabel),(p||void 0===k.yLabel)&&(k.yLabel=y?T.labelLabel:T.valueLabel),h&&(T.delta=+b.rawS||b.s,T.deltaLabel=v(T.delta),T.final=b.v,T.finalLabel=v(T.final),T.initial=T.final-T.delta,T.initialLabel=v(T.initial)),m&&(T.value=b.s,T.valueLabel=v(T.value),T.percentInitial=b.begR,T.percentInitialLabel=i.formatPercent(b.begR),T.percentPrevious=b.difR,T.percentPreviousLabel=i.formatPercent(b.difR),T.percentTotal=b.sumR,T.percenTotalLabel=i.formatPercent(b.sumR));var A=i.castOption(o,b.i,"customdata");return A&&(T.customdata=A),i.texttemplateString(l,T,e._d3locale,k,T,o._meta||{})}(e,t,n,r,a):l.textinfo?function(e,t,n,r){var a=e[0].trace,o="h"===a.orientation,l="waterfall"===a.type,s="funnel"===a.type;function c(e){return u(o?n:r,+e,!0).text}var d,f,p=a.textinfo,h=e[t],m=p.split("+"),y=[],v=function(e){return-1!==m.indexOf(e)};if(v("label")&&y.push((f=e[t].p,u(o?r:n,f,!0).text)),v("text")&&(0===(d=i.castOption(a,h.i,"text"))||d)&&y.push(d),l){var g=+h.rawS||h.s,b=h.v,x=b-g;v("initial")&&y.push(c(x)),v("delta")&&y.push(c(g)),v("final")&&y.push(c(b))}if(s){v("value")&&y.push(c(h.s));var T=0;v("percent initial")&&T++,v("percent previous")&&T++,v("percent total")&&T++;var w=T>1;v("percent initial")&&(d=i.formatPercent(h.begR),w&&(d+=" of initial"),y.push(d)),v("percent previous")&&(d=i.formatPercent(h.difR),w&&(d+=" of previous"),y.push(d)),v("percent total")&&(d=i.formatPercent(h.sumR),w&&(d+=" of total"),y.push(d))}return y.join("
")}(t,n,r,a):m.getValue(l.text,n),m.coerceString(g,o)}(O,r,a,I,Z);N=D,X=a,H=m.getValue(N.textposition,X),A=m.coerceEnumerated(b,H);var V="stack"===w.mode||"relative"===w.mode,z=r[a],F=!V||z._outmost,Y=z.hasB,_=y&&y-v>T;if(G&&"none"!==A&&(!z.isBlank&&l!==c&&d!==p||"auto"!==A&&"inside"!==A)){var B=O.font,j=h.getBarColor(r[a],D),K=h.getInsideTextFont(D,a,B,j),J=h.getOutsideTextFont(D,a,B),U=D.insidetextanchor||"end",Q=n.datum();W?"log"===I.type&&Q.s0<=0&&(l=I.range[0]0&&te>0;le=_?Y?L(ie-2*y,oe,ee,te,W)||L(ie,oe-2*y,ee,te,W):W?L(ie-(y-v),oe,ee,te,W)||L(ie,oe-2*(y-v),ee,te,W):L(ie,oe-(y-v),ee,te,W)||L(ie-2*(y-v),oe,ee,te,W):L(ie,oe,ee,te,W),se&&le?A="inside":(A="outside",q.remove(),q=null)}else A="inside";if(!q){var ce=(q=R(n,G,ne=i.ensureUniformFontSize(e,"outside"===A?J:K))).attr("transform");if(q.attr("transform",""),ee=($=s.bBox(q.node())).width,te=$.height,q.attr("transform",ce),ee<=0||te<=0)return void q.remove()}var ue,de=D.textangle;ue="outside"===A?function(e,t,n,r,a,i){var o,l=!!i.isHorizontal,s=!!i.constrained,c=i.angle||0,u=a.width,d=a.height,f=Math.abs(t-e),p=Math.abs(r-n);o=l?p>2*T?T:0:f>2*T?T:0;var h=1;s&&(h=l?Math.min(1,p/d):Math.min(1,f/u));var m=P(c),y=E(a,m),v=(l?y.x:y.y)/2,g=(a.left+a.right)/2,b=(a.top+a.bottom)/2,x=(e+t)/2,w=(n+r)/2,k=0,A=0,C=l?S(t,e):S(n,r);return l?(x=t-C*o,k=C*v):(w=r+C*o,A=-C*v),{textX:g,textY:b,targetX:x,targetY:w,anchorX:k,anchorY:A,scale:h,rotate:m}}(l,c,d,p,$,{isHorizontal:W,constrained:"both"===D.constraintext||"outside"===D.constraintext,angle:de}):M(l,c,d,p,$,{isHorizontal:W,constrained:"both"===D.constraintext||"inside"===D.constraintext,angle:de,anchor:U,hasB:Y,r:y,overhead:v}),ue.fontSize=ne.size,f("histogram"===D.type?"bar":D.type,ue,O),z.transform=ue;var fe=C(q,O,w,k);i.setTransormAndDisplay(fe,ue)}else n.select("text").remove()}(e,t,U,n,k,q,$,ee,te,ue,fe,y,v),t.layerClipId&&s.hideOutsideRangePoint(c,U.select("text"),w,Z,d.xcalendar,d.ycalendar)}));var B=!1===d.cliponaxis;s.setClipUrl(c,B?null:t.layerClipId,e)}));c.getComponentMethod("errorbars","plot")(e,N,t,y)},toMoveInsideBar:M}},11340:function(e){function t(e,t,n,r,a){var i=t.c2p(r?e.s0:e.p0,!0),o=t.c2p(r?e.s1:e.p1,!0),l=n.c2p(r?e.p0:e.s0,!0),s=n.c2p(r?e.p1:e.s1,!0);return a?[(i+o)/2,(l+s)/2]:r?[o,(l+s)/2]:[(i+o)/2,s]}e.exports=function(e,n){var r,a=e.cd,i=e.xaxis,o=e.yaxis,l=a[0].trace,s="funnel"===l.type,c="h"===l.orientation,u=[];if(!1===n)for(r=0;r1||0===a.bargap&&0===a.bargroupgap&&!e[0].trace.marker.line.width)&&r.select(this).attr("shape-rendering","crispEdges")})),t.selectAll("g.points").each((function(t){h(r.select(this),t[0].trace,e)})),l.getComponentMethod("errorbars","style")(t)},styleTextPoints:m,styleOnSelect:function(e,t,n){var a,s,c,u,d,f,p=t[0].trace;p.selectedpoints?(a=n,s=p,c=e,i.selectedPointStyle(a.selectAll("path"),s),u=a.selectAll("text"),d=s,f=c,u.each((function(e){var t,n=r.select(this);if(e.selected){t=o.ensureUniformFontSize(f,y(n,e,d,f));var a=d.selected.textfont&&d.selected.textfont.color;a&&(t.color=a),i.font(n,t)}else i.selectedTextStyle(n,d)}))):(h(n,p,e),l.getComponentMethod("errorbars","style")(n))},getInsideTextFont:g,getOutsideTextFont:b,getBarColor:T,resizeText:s}},86604:function(e,t,n){var r=n(45354),a=n(47161).hasColorscale,i=n(44432),o=n(11005).coercePattern;e.exports=function(e,t,n,l,s){var c=n("marker.color",l),u=a(e,"marker");u&&i(e,t,s,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",r.defaultLine),a(e,"marker.line")&&i(e,t,s,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),o(n,"marker.pattern",c,u),n("selected.marker.color"),n("unselected.marker.color")}},22026:function(e,t,n){var r=n(12583),a=n(11005);function i(e){return"_"+e+"Text_minsize"}e.exports={recordMinTextSize:function(e,t,n){if(n.uniformtext.mode){var r=i(e),a=n.uniformtext.minsize,o=t.scale*t.fontSize;t.hide=oL.uf};if(t._hasPreCompStats){var V=t[b],z=function(e){return g.d2c((t[e]||[])[n])},F=1/0,Y=-1/0;for(n=0;n=L.q1&&L.q3>=L.med){var B=z("lowerfence");L.lf=B!==l&&B<=L.q1?B:p(L,E,M);var j=z("upperfence");L.uf=j!==l&&j>=L.q3?j:h(L,E,M);var K=z("mean");L.mean=K!==l?K:M?o.mean(E,M):(L.q1+L.q3)/2;var J=z("sd");L.sd=K!==l&&J>=0?J:M?o.stdev(E,M,L.mean):L.q3-L.q1,L.lo=m(L),L.uo=y(L);var U=z("notchspan");U=U!==l&&U>0?U:v(L,M),L.ln=L.med-U,L.un=L.med+U;var Q=L.lf,q=L.uf;t.boxpoints&&E.length&&(Q=Math.min(Q,E[0]),q=Math.max(q,E[M-1])),t.notched&&(Q=Math.min(Q,L.ln),q=Math.max(q,L.un)),L.min=Q,L.max=q}else{var $;o.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join("\n")),$=L.med!==l?L.med:L.q1!==l?L.q3!==l?(L.q1+L.q3)/2:L.q1:L.q3!==l?L.q3:0,L.med=$,L.q1=L.q3=$,L.lf=L.uf=$,L.mean=L.sd=$,L.ln=L.un=$,L.min=L.max=$}F=Math.min(F,L.min),Y=Math.max(Y,L.max),L.pts2=P.filter(G),C.push(L)}}t._extremes[g._id]=a.findExtremes(g,[F,Y],{padded:!0})}else{var ee=g.makeCalcdata(t,b),te=function(e,t){for(var n=e.length,r=new Array(n+1),a=0;a=0&&ae0){var ue,de;(L={}).pos=L[T]=D[n],P=L.pts=re[n].sort(d),M=(E=L[b]=P.map(f)).length,L.min=E[0],L.max=E[M-1],L.mean=o.mean(E,M),L.sd=o.stdev(E,M,L.mean)*t.sdmultiple,L.med=o.interp(E,.5),M%2&&(se||ce)?(se?(ue=E.slice(0,M/2),de=E.slice(M/2+1)):ce&&(ue=E.slice(0,M/2+1),de=E.slice(M/2)),L.q1=o.interp(ue,.5),L.q3=o.interp(de,.5)):(L.q1=o.interp(E,.25),L.q3=o.interp(E,.75)),L.lf=p(L,E,M),L.uf=h(L,E,M),L.lo=m(L),L.uo=y(L);var fe=v(L,M);L.ln=L.med-fe,L.un=L.med+fe,ie=Math.min(ie,L.ln),oe=Math.max(oe,L.un),L.pts2=P.filter(G),C.push(L)}t.notched&&o.isTypedArray(ee)&&(ee=Array.from(ee)),t._extremes[g._id]=a.findExtremes(g,t.notched?ee.concat([ie,oe]):ee,{padded:!0})}return function(e,t){if(o.isArrayOrTypedArray(t.selectedpoints))for(var n=0;n0?(C[0].t={num:k[I],dPos:W,posLetter:T,valLetter:b,labels:{med:s(e,"median:"),min:s(e,"min:"),q1:s(e,"q1:"),q3:s(e,"q3:"),max:s(e,"max:"),mean:"sd"===t.boxmean||"sd"===t.sizemode?s(e,"mean ± σ:").replace("σ",1===t.sdmultiple?"σ":t.sdmultiple+"σ"):s(e,"mean:"),lf:s(e,"lower fence:"),uf:s(e,"upper fence:")}},k[I]++,C):[{t:{empty:!0}}]};var c={text:"tx",hovertext:"htx"};function u(e,t,n){for(var r in c)o.isArrayOrTypedArray(t[r])&&(Array.isArray(n)?o.isArrayOrTypedArray(t[r][n[0]])&&(e[c[r]]=t[r][n[0]][n[1]]):e[c[r]]=t[r][n])}function d(e,t){return e.v-t.v}function f(e){return e.v}function p(e,t,n){return 0===n?e.q1:Math.min(e.q1,t[Math.min(o.findBin(2.5*e.q1-1.5*e.q3,t,!0)+1,n-1)])}function h(e,t,n){return 0===n?e.q3:Math.max(e.q3,t[Math.max(o.findBin(2.5*e.q3-1.5*e.q1,t),0)])}function m(e){return 4*e.q1-3*e.q3}function y(e){return 4*e.q3-3*e.q1}function v(e,t){return 0===t?0:1.57*(e.q3-e.q1)/Math.sqrt(t)}},38106:function(e,t,n){var r=n(60638),a=n(11005),i=n(28699).getAxisGroup,o=["v","h"];function l(e,t,n,o){var l,s,c,u=t.calcdata,d=t._fullLayout,f=o._id,p=f.charAt(0),h=[],m=0;for(l=0;l1,x=1-d[e+"gap"],T=1-d[e+"groupgap"];for(l=0;l0){var Y=L.pointpos,_=L.jitter,B=L.marker.size/2,j=0;Y+_>=0&&((j=z*(Y+_))>C?(F=!0,G=B,D=j):j>X&&(G=B,D=C)),j<=C&&(D=C);var K=0;Y-_<=0&&((K=-z*(Y-_))>I?(F=!0,V=B,W=K):K>H&&(V=B,W=I)),K<=I&&(W=I)}else D=C,W=I;var J=new Array(c.length);for(s=0;s0?(y="v",v=b>0?Math.min(T,x):Math.min(x)):b>0?(y="h",v=Math.min(T)):v=0;if(v){t._length=v;var I=n("orientation",y);t._hasPreCompStats?"v"===I&&0===b?(n("x0",0),n("dx",1)):"h"===I&&0===g&&(n("y0",0),n("dy",1)):"v"===I&&0===b?n("x0"):"h"===I&&0===g&&n("y0"),a.getComponentMethod("calendars","handleTraceDefaults")(e,t,["x","y"],i)}else t.visible=!1}function d(e,t,n,a){var i=a.prefix,o=r.coerce2(e,t,c,"marker.outliercolor"),l=n("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(o||l)&&(s="suspectedoutliers");var u=n(i+"points",s);u?(n("jitter","all"===u?.3:0),n("pointpos","all"===u?-1.5:0),n("marker.symbol"),n("marker.opacity"),n("marker.size"),n("marker.angle"),n("marker.color",t.line.color),n("marker.line.color"),n("marker.line.width"),"suspectedoutliers"===u&&(n("marker.line.outliercolor",t.marker.color),n("marker.line.outlierwidth")),n("selected.marker.color"),n("unselected.marker.color"),n("selected.marker.size"),n("unselected.marker.size"),n("text"),n("hovertext")):delete t.marker;var d=n("hoveron");"all"!==d&&-1===d.indexOf("points")||n("hovertemplate"),r.coerceSelectionMarkerOpacity(t,n)}e.exports={supplyDefaults:function(e,t,n,a){function l(n,a){return r.coerce(e,t,c,n,a)}if(u(e,t,l,a),!1!==t.visible){o(e,t,a,l),l("xhoverformat"),l("yhoverformat");var s=t._hasPreCompStats;s&&(l("lowerfence"),l("upperfence")),l("line.color",(e.marker||{}).color||n),l("line.width"),l("fillcolor",i.addOpacity(t.line.color,.5));var f=!1;if(s){var p=l("mean"),h=l("sd");p&&p.length&&(f=!0,h&&h.length&&(f="sd"))}l("whiskerwidth");var m,y=l("sizemode");"quartiles"===y&&(m=l("boxmean",f)),l("showwhiskers","quartiles"===y),"sd"!==y&&"sd"!==m||l("sdmultiple"),l("width"),l("quartilemethod");var v=!1;if(s){var g=l("notchspan");g&&g.length&&(v=!0)}else r.validate(e.notchwidth,c.notchwidth)&&(v=!0);l("notched",v)&&l("notchwidth"),d(e,t,l,{prefix:"box"})}},crossTraceDefaults:function(e,t){var n,a;function i(e){return r.coerce(a._input,a,c,e)}for(var o=0;oe.lo&&(b.so=!0)}return i}));f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(i.translatePoints,o,l)}function s(e,t,n,i){var o,l,s=t.val,c=t.pos,u=!!c.rangebreaks,d=i.bPos,f=i.bPosPxOffset||0,p=n.boxmean||(n.meanline||{}).visible;Array.isArray(i.bdPos)?(o=i.bdPos[0],l=i.bdPos[1]):(o=i.bdPos,l=i.bdPos);var h=e.selectAll("path.mean").data("box"===n.type&&n.boxmean||"violin"===n.type&&n.box.visible&&n.meanline.visible?a.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each((function(e){var t=c.c2l(e.pos+d,!0),a=c.l2p(t-o)+f,i=c.l2p(t+l)+f,h=u?(a+i)/2:c.l2p(t)+f,m=s.c2p(e.mean,!0),y=s.c2p(e.mean-e.sd,!0),v=s.c2p(e.mean+e.sd,!0);"h"===n.orientation?r.select(this).attr("d","M"+m+","+a+"V"+i+("sd"===p?"m0,0L"+y+","+h+"L"+m+","+a+"L"+v+","+h+"Z":"")):r.select(this).attr("d","M"+a+","+m+"H"+i+("sd"===p?"m0,0L"+h+","+y+"L"+a+","+m+"L"+h+","+v+"Z":""))}))}e.exports={plot:function(e,t,n,i){var c=e._context.staticPlot,u=t.xaxis,d=t.yaxis;a.makeTraceGroups(i,n,"trace boxes").each((function(e){var t,n,a=r.select(this),i=e[0],f=i.t,p=i.trace;f.wdPos=f.bdPos*p.whiskerwidth,!0!==p.visible||f.empty?a.remove():("h"===p.orientation?(t=d,n=u):(t=u,n=d),o(a,{pos:t,val:n},p,f,c),l(a,{x:u,y:d},p,f),s(a,{pos:t,val:n},p,f))}))},plotBoxAndWhiskers:o,plotPoints:l,plotBoxMean:s}},54028:function(e){e.exports=function(e,t){var n,r,a=e.cd,i=e.xaxis,o=e.yaxis,l=[];if(!1===t)for(n=0;ns&&E[v].gap;)v--;for(b=E[v].s,m=E.length-1;m>v;m--)E[m].s=b;for(;sI[d]&&d=0;d--){var f=e[d];if("scatter"===f.type&&f.xaxis===c.xaxis&&f.yaxis===c.yaxis){f.opacity=void 0;break}}}}}},24923:function(e,t,n){var r=n(11005),a=n(94134),i=n(78508),o=n(46760),l=n(56466),s=n(35151),c=n(52753),u=n(91810),d=n(77060),f=n(23636),p=n(26254),h=n(76435),m=n(8062),y=n(11005).coercePattern;e.exports=function(e,t,n,v){function g(n,a){return r.coerce(e,t,i,n,a)}var b=s(e,t,v,g);if(b||(t.visible=!1),t.visible){c(e,t,v,g),g("xhoverformat"),g("yhoverformat");var x=u(e,t,v,g);"group"===v.scattermode&&void 0===t.orientation&&g("orientation","v");var T=!x&&b=Math.min(t,n)&&h<=Math.max(t,n)?0:1/0}var r=Math.max(3,e.mrc||0),a=1-1/r,i=Math.abs(f.c2p(e.x)-h);return i=Math.min(t,n)&&m<=Math.max(t,n)?0:1/0}var r=Math.max(3,e.mrc||0),a=1-1/r,i=Math.abs(p.c2p(e.y)-m);return in!=(c=a[r][1])>=n&&(o=a[r-1][0],l=a[r][0],c-s&&(i=o+(l-o)*(n-s)/(c-s),d=Math.min(d,i),h=Math.max(h,i)));return{x0:d=Math.max(d,0),x1:h=Math.min(h,f._length),y0:n,y1:n}}(d._polygons);null===Z&&(Z={x0:y[0],x1:y[0],y0:y[1],y1:y[1]});var O=l.defaultLine;return l.opacity(d.fillcolor)?O=d.fillcolor:l.opacity((d.line||{}).color)&&(O=d.line.color),r.extendFlat(e,{distance:e.maxHoverDistance,x0:Z.x0,x1:Z.x1,y0:Z.y0,y1:Z.y1,color:O,hovertemplate:!1}),delete e.index,d.text&&!r.isArrayOrTypedArray(d.text)?e.text=String(d.text):e.text=d.name,[e]}}},12097:function(e,t,n){var r=n(56466);e.exports={hasLines:r.hasLines,hasMarkers:r.hasMarkers,hasText:r.hasText,isBubble:r.isBubble,attributes:n(78508),layoutAttributes:n(40519),supplyDefaults:n(24923),crossTraceDefaults:n(29216),supplyLayoutDefaults:n(87872),calc:n(24844).calc,crossTraceCalc:n(27111),arraysToCalcdata:n(19599),plot:n(65054),colorbar:n(74518),formatLabels:n(88442),style:n(33412).style,styleOnSelect:n(33412).styleOnSelect,hoverPoints:n(26779),selectPoints:n(72013),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:n(35243),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}},40519:function(e){e.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}},87872:function(e,t,n){var r=n(11005),a=n(40519);e.exports=function(e,t){var n,i="group"===t.barmode;"group"===t.scattermode&&(n=i?t.bargap:.2,r.coerce(e,t,a,"scattergap",n))}},23636:function(e,t,n){var r=n(11005).isArrayOrTypedArray,a=n(47161).hasColorscale,i=n(44432);e.exports=function(e,t,n,o,l,s){s||(s={});var c=(e.marker||{}).color;c&&c._inputArray&&(c=c._inputArray),l("line.color",n),a(e,"line")?i(e,t,o,l,{prefix:"line.",cLetter:"c"}):l("line.color",!r(c)&&c||n),l("line.width"),s.noDash||l("line.dash"),s.backoff&&l("line.backoff")}},37401:function(e,t,n){var r=n(65967),a=n(30513),i=a.BADNUM,o=a.LOG_CLIP,l=o+.5,s=o-.5,c=n(11005),u=c.segmentsIntersect,d=c.constrain,f=n(46760);e.exports=function(e,t){var n,a,o,p,h,m,y,v,g,b,x,T,w,k,A,S,C,I,L=t.trace||{},P=t.xaxis,E=t.yaxis,M="log"===P.type,Z="log"===E.type,O=P._length,R=E._length,N=t.backoff,X=L.marker,H=t.connectGaps,D=t.baseTolerance,W=t.shape,G="linear"===W,V=L.fill&&"none"!==L.fill,z=[],F=f.minTolerance,Y=e.length,_=new Array(Y),B=0;function j(n){var r=e[n];if(!r)return!1;var a=t.linearized?P.l2p(r.x):P.c2p(r.x),o=t.linearized?E.l2p(r.y):E.c2p(r.y);if(a===i){if(M&&(a=P.c2p(r.x,!0)),a===i)return!1;Z&&o===i&&(a*=Math.abs(P._m*R*(P._m>0?l:s)/(E._m*O*(E._m>0?l:s)))),a*=1e3}if(o===i){if(Z&&(o=E.c2p(r.y,!0)),o===i)return!1;o*=1e3}return[a,o]}function K(e,t,n,r){var a=n-e,i=r-t,o=.5-e,l=.5-t,s=a*a+i*i,c=a*o+i*l;if(c>0&&coe||e[1]se)return[d(e[0],ie,oe),d(e[1],le,se)]}function de(e,t){return e[0]===t[0]&&(e[0]===ie||e[0]===oe)||e[1]===t[1]&&(e[1]===le||e[1]===se)||void 0}function fe(e,t,n){return function(r,a){var i=ue(r),o=ue(a),l=[];if(i&&o&&de(i,o))return l;i&&l.push(i),o&&l.push(o);var s=2*c.constrain((r[e]+a[e])/2,t,n)-((i||r)[e]+(o||a)[e]);return s&&((i&&o?s>0==i[e]>o[e]?i:o:i||o)[e]+=s),l}}function pe(e){var t=e[0],n=e[1],r=t===_[B-1][0],a=n===_[B-1][1];if(!r||!a)if(B>1){var i=t===_[B-2][0],o=n===_[B-2][1];r&&(t===ie||t===oe)&&i?o?B--:_[B-1]=e:a&&(n===le||n===se)&&o?i?B--:_[B-1]=e:_[B++]=e}else _[B++]=e}function he(e){_[B-1][0]!==e[0]&&_[B-1][1]!==e[1]&&pe([$,ee]),pe(e),te=null,$=ee=0}"linear"===W||"spline"===W?re=function(e,t){for(var n=[],r=0,a=0;a<4;a++){var i=ce[a],o=u(e[0],e[1],t[0],t[1],i[0],i[1],i[2],i[3]);o&&(!r||Math.abs(o.x-n[0][0])>1||Math.abs(o.y-n[0][1])>1)&&(o=[o.x,o.y],r&&U(o,e)oe?oe:0,q=t[1]se?se:0,Q||q){if(B)if(te){var r=re(te,t);r.length>1&&(he(r[0]),_[B++]=r[1])}else ne=re(_[B-1],t)[0],_[B++]=ne;else _[B++]=[Q||t[0],q||t[1]];var a=_[B-1];Q&&q&&(a[0]!==Q||a[1]!==q)?(te&&($!==Q&&ee!==q?pe($&&ee?(i=te,l=(o=t)[0]-i[0],s=(o[1]-i[1])/l,(i[1]*o[0]-o[1]*i[0])/l>0?[s>0?ie:oe,se]:[s>0?oe:ie,le]):[$||Q,ee||q]):$&&ee&&pe([$,ee])),pe([Q,q])):$-Q&&ee-q&&pe([Q||$,q||ee]),te=t,$=Q,ee=q}else te&&he(re(te,t)[0]),_[B++]=t;var i,o,l,s}for(n=0;nJ(m,ve))break;o=m,(w=g[0]*v[0]+g[1]*v[1])>x?(x=w,p=m,y=!1):w=e.length||!m)break;ye(m),a=m}}else ye(p)}te&&pe([$||te[0],ee||te[1]]),z.push(_.slice(0,B))}var ge=W.slice(W.length-1);if(N&&"h"!==ge&&"v"!==ge){for(var be=!1,xe=-1,Te=[],we=0;we=0?s=p:(s=p=f,f++),s0?Math.max(n,i):0}}},74518:function(e){e.exports={container:"marker",min:"cmin",max:"cmax"}},77060:function(e,t,n){var r=n(45354),a=n(47161).hasColorscale,i=n(44432),o=n(56466);e.exports=function(e,t,n,l,s,c){var u=o.isBubble(e),d=(e.line||{}).color;c=c||{},d&&(n=d),s("marker.symbol"),s("marker.opacity",u?.7:1),s("marker.size"),c.noAngle||(s("marker.angle"),c.noAngleRef||s("marker.angleref"),c.noStandOff||s("marker.standoff")),s("marker.color",n),a(e,"marker")&&i(e,t,l,s,{prefix:"marker.",cLetter:"c"}),c.noSelect||(s("selected.marker.color"),s("unselected.marker.color"),s("selected.marker.size"),s("unselected.marker.size")),c.noLine||(s("marker.line.color",d&&!Array.isArray(d)&&t.marker.color!==d?d:u?r.background:r.defaultLine),a(e,"marker.line")&&i(e,t,l,s,{prefix:"marker.line.",cLetter:"c"}),s("marker.line.width",u?1:0)),u&&(s("marker.sizeref"),s("marker.sizemin"),s("marker.sizemode")),c.gradient&&"none"!==s("marker.gradient.type")&&s("marker.gradient.color")}},52753:function(e,t,n){var r=n(11005).dateTick0,a=n(30513).ONEWEEK;function i(e,t){return r(t,e%a==0?1:0)}e.exports=function(e,t,n,r,a){if(a||(a={x:!0,y:!0}),a.x){var o=r("xperiod");o&&(r("xperiod0",i(o,t.xcalendar)),r("xperiodalignment"))}if(a.y){var l=r("yperiod");l&&(r("yperiod0",i(l,t.ycalendar)),r("yperiodalignment"))}}},65054:function(e,t,n){var r=n(12583),a=n(94134),i=n(11005),o=i.ensureSingle,l=i.identity,s=n(65967),c=n(56466),u=n(37401),d=n(38206),f=n(84679).tester;function p(e,t,n,d,p,h,m){var y,v=e._context.staticPlot;!function(e,t,n,a,o){var l=n.xaxis,s=n.yaxis,u=r.extent(i.simpleMap(l.range,l.r2c)),d=r.extent(i.simpleMap(s.range,s.r2c)),f=a[0].trace;if(c.hasMarkers(f)){var p=f.marker.maxdisplayed;if(0!==p){var h=a.filter((function(e){return e.x>=u[0]&&e.x<=u[1]&&e.y>=d[0]&&e.y<=d[1]})),m=Math.ceil(h.length/p),y=0;o.forEach((function(e,n){var r=e[0].trace;c.hasMarkers(r)&&r.marker.maxdisplayed>0&&n0;function b(e){return g?e.transition():e}var x=n.xaxis,T=n.yaxis,w=d[0].trace,k=w.line,A=r.select(h),S=o(A,"g","errorbars"),C=o(A,"g","lines"),I=o(A,"g","points"),L=o(A,"g","text");if(a.getComponentMethod("errorbars","plot")(e,S,n,m),!0===w.visible){var P,E;b(A).style("opacity",w.opacity);var M,Z,O=w.fill.charAt(w.fill.length-1);"x"!==O&&"y"!==O&&(O=""),"y"===O?(M=1,Z=T.c2p(0,!0)):"x"===O&&(M=0,Z=x.c2p(0,!0)),d[0][n.isRangePlot?"nodeRangePlot3":"node3"]=A;var R,N,X="",H=[],D=w._prevtrace,W=null,G=null;D&&(X=D._prevRevpath||"",E=D._nextFill,H=D._ownPolygons,W=D._fillsegments,G=D._fillElement);var V,z,F,Y,_,B,j="",K="",J=[];w._polygons=[];var U=[],Q=[],q=i.noop;if(P=w._ownFill,c.hasLines(w)||"none"!==w.fill){E&&E.datum(d),-1!==["hv","vh","hvh","vhv"].indexOf(k.shape)?(V=s.steps(k.shape),z=s.steps(k.shape.split("").reverse().join(""))):V=z="spline"===k.shape?function(e){var t=e[e.length-1];return e.length>1&&e[0][0]===t[0]&&e[0][1]===t[1]?s.smoothclosed(e.slice(1),k.smoothing):s.smoothopen(e,k.smoothing)}:function(e){return"M"+e.join("L")},F=function(e){return z(e.reverse())},Q=u(d,{xaxis:x,yaxis:T,trace:w,connectGaps:w.connectgaps,baseTolerance:Math.max(k.width||1,3)/4,shape:k.shape,backoff:k.backoff,simplify:k.simplify,fill:w.fill}),U=new Array(Q.length);var $=0;for(y=0;y0,g=d(e,t,n);(u=a.selectAll("g.trace").data(g,(function(e){return e[0].trace.uid}))).enter().append("g").attr("class",(function(e){return"trace scatter trace"+e[0].trace.uid})).style("stroke-miterlimit",2),u.order(),h=e,m=t,u.each((function(e){var t=o(r.select(this),"g","fills");s.setClipUrl(t,m.layerClipId,h);var n=e[0].trace,a=[];n._ownfill&&a.push("_ownFill"),n._nexttrace&&a.push("_nextFill");var i=t.selectAll("g").data(a,l);i.enter().append("g"),i.exit().each((function(e){n[e]=null})).remove(),i.order().each((function(e){n[e]=o(r.select(this),"path","js-fill")}))})),v?(c&&(f=c()),r.transition().duration(i.duration).ease(i.easing).each("end",(function(){f&&f()})).each("interrupt",(function(){f&&f()})).each((function(){a.selectAll("g.trace").each((function(n,r){p(e,r,t,n,g,this,i)}))}))):u.each((function(n,r){p(e,r,t,n,g,this,i)})),y&&u.exit().remove(),a.selectAll("path:not([d])").remove()}},72013:function(e,t,n){var r=n(56466);e.exports=function(e,t){var n,a,i,o,l=e.cd,s=e.xaxis,c=e.yaxis,u=[],d=l[0].trace;if(!r.hasMarkers(d)&&!r.hasText(d))return[];if(!1===t)for(n=0;n=y,w=2*x,k={},A=s.makeCalcdata(t,"x"),S=g.makeCalcdata(t,"y"),C=l(t,s,"x",A),I=l(t,g,"y",S),L=C.vals,P=I.vals;t._x=L,t._y=P,t.xperiodalignment&&(t._origX=A,t._xStarts=C.starts,t._xEnds=C.ends),t.yperiodalignment&&(t._origY=S,t._yStarts=I.starts,t._yEnds=I.ends);var E=new Array(w),M=new Array(x);for(n=0;n1&&a.extendFlat(l.line,p.linePositions(e,n,r)),l.errorX||l.errorY){var s=p.errorBarPositions(e,n,r,i,o);l.errorX&&a.extendFlat(l.errorX,s.x),l.errorY&&a.extendFlat(l.errorY,s.y)}return l.text&&(a.extendFlat(l.text,{positions:r},p.textPosition(e,n,l.text,l.marker)),a.extendFlat(l.textSel,{positions:r},p.textPosition(e,n,l.text,l.markerSel)),a.extendFlat(l.textUnsel,{positions:r},p.textPosition(e,n,l.text,l.markerUnsel))),l}(e,0,t,E,L,P),R=h(e,b);return d(o,t),T?O.marker&&(Z=O.marker.sizeAvg||Math.max(O.marker.size,3)):Z=c(t,x),u(e,t,s,g,L,P,Z),O.errorX&&v(t,s,O.errorX),O.errorY&&v(t,g,O.errorY),O.fill&&!R.fill2d&&(R.fill2d=!0),O.marker&&!R.scatter2d&&(R.scatter2d=!0),O.line&&!R.line2d&&(R.line2d=!0),!O.errorX&&!O.errorY||R.error2d||(R.error2d=!0),O.text&&!R.glText&&(R.glText=!0),O.marker&&(O.marker.snap=x),R.lineOptions.push(O.line),R.errorXOptions.push(O.errorX),R.errorYOptions.push(O.errorY),R.fillOptions.push(O.fill),R.markerOptions.push(O.marker),R.markerSelectedOptions.push(O.markerSel),R.markerUnselectedOptions.push(O.markerUnsel),R.textOptions.push(O.text),R.textSelectedOptions.push(O.textSel),R.textUnselectedOptions.push(O.textUnsel),R.selectBatch.push([]),R.unselectBatch.push([]),k._scene=R,k.index=R.count,k.x=L,k.y=P,k.positions=E,R.count++,[{x:!1,y:!1,t:k,trace:t}]}},65343:function(e){e.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:20,SYMBOL_STROKE:1,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}},75141:function(e,t,n){var r=n(74668),a=n(16300),i=n(24373),o=n(94134),l=n(11005),s=l.isArrayOrTypedArray,c=n(65967),u=n(55483),d=n(80330).formatColor,f=n(56466),p=n(13707),h=n(19663),m=n(65343),y=n(41962).DESELECTDIM,v={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},g=n(25452).appendArrayPointValue;function b(e,t){var n,a=e._fullLayout,i=t._length,o=t.textfont,c=t.textposition,u=s(c)?c:[c],d=o.color,f=o.size,p=o.family,h={},m=e._context.plotGlPixelRatio,y=t.texttemplate;if(y){h.text=[];var v=a._d3locale,b=Array.isArray(y),x=b?Math.min(y.length,i):i,T=b?function(e){return y[e]}:function(){return y};for(n=0;nm.TOO_MANY_POINTS||f.hasMarkers(t)?"rect":"round";if(c&&t.connectgaps){var d=r[0],p=r[1];for(a=0;a1?c[a]:c[0]:c,m=s(u)?u.length>1?u[a]:u[0]:u,y=v[h],g=v[m],b=d?d/.8+1:0,x=-g*b-.5*g;o.offset[a]=[y*b/p,x/p]}}return o}}},12674:function(e,t,n){var r=n(11005),a=n(94134),i=n(19663),o=n(57141),l=n(46760),s=n(56466),c=n(35151),u=n(52753),d=n(77060),f=n(23636),p=n(8062),h=n(76435);e.exports=function(e,t,n,m){function y(n,a){return r.coerce(e,t,o,n,a)}var v=!!e.marker&&i.isOpenSymbol(e.marker.symbol),g=s.isBubble(e),b=c(e,t,m,y);if(b){u(e,t,m,y),y("xhoverformat"),y("yhoverformat");var x=b100},t.isDotSymbol=function(e){return"string"==typeof e?r.DOT_RE.test(e):e>200}},65540:function(e,t,n){var r=n(94134),a=n(11005),i=n(2607);function o(e,t,n,o){var l=e.xa,s=e.ya,c=e.distance,u=e.dxy,d=e.index,f={pointNumber:d,x:t[d],y:n[d]};f.tx=a.isArrayOrTypedArray(o.text)?o.text[d]:o.text,f.htx=Array.isArray(o.hovertext)?o.hovertext[d]:o.hovertext,f.data=Array.isArray(o.customdata)?o.customdata[d]:o.customdata,f.tp=Array.isArray(o.textposition)?o.textposition[d]:o.textposition;var p=o.textfont;p&&(f.ts=a.isArrayOrTypedArray(p.size)?p.size[d]:p.size,f.tc=Array.isArray(p.color)?p.color[d]:p.color,f.tf=Array.isArray(p.family)?p.family[d]:p.family);var h=o.marker;h&&(f.ms=a.isArrayOrTypedArray(h.size)?h.size[d]:h.size,f.mo=a.isArrayOrTypedArray(h.opacity)?h.opacity[d]:h.opacity,f.mx=a.isArrayOrTypedArray(h.symbol)?h.symbol[d]:h.symbol,f.ma=a.isArrayOrTypedArray(h.angle)?h.angle[d]:h.angle,f.mc=a.isArrayOrTypedArray(h.color)?h.color[d]:h.color);var m=h&&h.line;m&&(f.mlc=Array.isArray(m.color)?m.color[d]:m.color,f.mlw=a.isArrayOrTypedArray(m.width)?m.width[d]:m.width);var y=h&&h.gradient;y&&"none"!==y.type&&(f.mgt=Array.isArray(y.type)?y.type[d]:y.type,f.mgc=Array.isArray(y.color)?y.color[d]:y.color);var v=l.c2p(f.x,!0),g=s.c2p(f.y,!0),b=f.mrc||1,x=o.hoverlabel;x&&(f.hbg=Array.isArray(x.bgcolor)?x.bgcolor[d]:x.bgcolor,f.hbc=Array.isArray(x.bordercolor)?x.bordercolor[d]:x.bordercolor,f.hts=a.isArrayOrTypedArray(x.font.size)?x.font.size[d]:x.font.size,f.htc=Array.isArray(x.font.color)?x.font.color[d]:x.font.color,f.htf=Array.isArray(x.font.family)?x.font.family[d]:x.font.family,f.hnl=a.isArrayOrTypedArray(x.namelength)?x.namelength[d]:x.namelength);var T=o.hoverinfo;T&&(f.hi=Array.isArray(T)?T[d]:T);var w=o.hovertemplate;w&&(f.ht=Array.isArray(w)?w[d]:w);var k={};k[e.index]=f;var A=o._origX,S=o._origY,C=a.extendFlat({},e,{color:i(o,f),x0:v-b,x1:v+b,xLabelVal:A?A[d]:f.x,y0:g-b,y1:g+b,yLabelVal:S?S[d]:f.y,cd:k,distance:c,spikeDistance:u,hovertemplate:f.ht});return f.htx?C.text=f.htx:f.tx?C.text=f.tx:o.text&&(C.text=o.text),a.fillText(f,o,C),r.getComponentMethod("errorbars","hoverInfo")(f,o,C),C}e.exports={hoverPoints:function(e,t,n,r){var a,i,l,s,c,u,d,f,p,h,m=e.cd,y=m[0].t,v=m[0].trace,g=e.xa,b=e.ya,x=y.x,T=y.y,w=g.c2p(t),k=b.c2p(n),A=e.distance;if(y.tree){var S=g.p2c(w-A),C=g.p2c(w+A),I=b.p2c(k-A),L=b.p2c(k+A);a="x"===r?y.tree.range(Math.min(S,C),Math.min(b._rl[0],b._rl[1]),Math.max(S,C),Math.max(b._rl[0],b._rl[1])):y.tree.range(Math.min(S,C),Math.min(I,L),Math.max(S,C),Math.max(I,L))}else a=y.ids;var P=A;if("x"===r){var E=!!v.xperiodalignment,M=!!v.yperiodalignment;for(u=0;u=Math.min(Z,O)&&w<=Math.max(Z,O)?0:1/0}if(d=Math.min(R,N)&&k<=Math.max(R,N)?0:1/0}h=Math.sqrt(d*d+f*f),l=a[u]}}}else for(u=a.length-1;u>-1;u--)s=x[i=a[u]],c=T[i],d=g.c2p(s)-w,f=b.c2p(c)-k,(p=Math.sqrt(d*d+f*f))g.glText.length){var k=T-g.glText.length;for(m=0;mn&&(isNaN(t[r])||isNaN(t[r+1]));)r-=2;e.positions=t.slice(n,r+2)}return e})),g.line2d.update(g.lineOptions)),g.error2d){var S=(g.errorXOptions||[]).concat(g.errorYOptions||[]);g.error2d.update(S)}g.scatter2d&&g.scatter2d.update(g.markerOptions),g.fillOrder=l.repeat(null,T),g.fill2d&&(g.fillOptions=g.fillOptions.map((function(e,t){var r=n[t];if(e&&r&&r[0]&&r[0].trace){var a,i,o=r[0],l=o.trace,s=o.t,c=g.lineOptions[t],u=[];l._ownfill&&u.push(t),l._nexttrace&&u.push(t+1),u.length&&(g.fillOrder[t]=u);var d,f,p=[],h=c&&c.positions||s.positions;if("tozeroy"===l.fill){for(d=0;dd&&isNaN(h[f+1]);)f-=2;0!==h[d+1]&&(p=[h[d],0]),p=p.concat(h.slice(d,f+2)),0!==h[f+1]&&(p=p.concat([h[f],0]))}else if("tozerox"===l.fill){for(d=0;dd&&isNaN(h[f]);)f-=2;0!==h[d]&&(p=[0,h[d+1]]),p=p.concat(h.slice(d,f+2)),0!==h[f]&&(p=p.concat([0,h[f+1]]))}else if("toself"===l.fill||"tonext"===l.fill){for(p=[],a=0,e.splitNull=!0,i=0;i-1;for(m=0;m0){var x,T,w,k,A,S=e.xa,C=e.ya;"h"===h.orientation?(A=t,x="y",w=C,T="x",k=S):(A=n,x="x",w=S,T="y",k=C);var I=p[e.index];if(A>=I.span[0]&&A<=I.span[1]){var L=a.extendFlat({},e),P=k.c2p(A,!0),E=l.getKdeValue(I,h,A),M=l.getPositionOnKdePath(I,h,P),Z=w._offset,O=w._length;L[x+"0"]=M[0],L[x+"1"]=M[1],L[T+"0"]=L[T+"1"]=P,L[T+"Label"]=T+": "+i.hoverLabelText(k,A,h[T+"hoverformat"])+", "+p[0].t.labels.kde+" "+E.toFixed(3);for(var R=0,N=0;Na&&(a=u,o=c)}}return a?i(o):l};case"rms":return function(e,t){for(var n=0,a=0,o=0;o":return function(e){return p(e)>d};case">=":return function(e){return p(e)>=d};case"[]":return function(e){var t=p(e);return t>=d[0]&&t<=d[1]};case"()":return function(e){var t=p(e);return t>d[0]&&t=d[0]&&td[0]&&t<=d[1]};case"][":return function(e){var t=p(e);return t<=d[0]||t>=d[1]};case")(":return function(e){var t=p(e);return td[1]};case"](":return function(e){var t=p(e);return t<=d[0]||t>d[1]};case")[":return function(e){var t=p(e);return t=d[1]};case"{}":return function(e){return-1!==d.indexOf(p(e))};case"}{":return function(e){return-1===d.indexOf(p(e))}}}(n,i.getDataToCoordFunc(e,t,l,a),f),b={},x={},T=0;h?(y=function(e){b[e.astr]=r.extendDeep([],e.get()),e.set(new Array(d))},v=function(e,t){var n=b[e.astr][t];e.get()[t]=n}):(y=function(e){b[e.astr]=r.extendDeep([],e.get()),e.set([])},v=function(e,t){var n=b[e.astr][t];e.get().push(n)}),A(y);for(var w=o(t.transforms,n),k=0;k1?"%{group} (%{trace})":"%{group}");var s=e.styles,c=o.styles=[];if(s)for(i=0;i1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}if(e=k(e,360),t=k(t,100),n=k(n,100),0===t)r=a=i=n;else{var l=n<.5?n*(1+t):n+t-n*t,s=2*n-l;r=o(s,l,e+1/3),a=o(s,l,e),i=o(s,l,e-1/3)}return{r:255*r,g:255*a,b:255*i}}(o.h,f,h),m=!0,y="hsl"),o.hasOwnProperty("a")&&(d=o.a)),d=w(d),{ok:m,format:o.format||y,r:Math.min(255,Math.max(u.r,0)),g:Math.min(255,Math.max(u.g,0)),b:Math.min(255,Math.max(u.b,0)),a:d});this._originalInput=a,this._r=v.r,this._g=v.g,this._b=v.b,this._a=v.a,this._roundA=Math.round(100*this._a)/100,this._format=i.format||v.format,this._gradientType=i.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=v.ok}function a(e,t,n){e=k(e,255),t=k(t,255),n=k(n,255);var r,a,i=Math.max(e,t,n),o=Math.min(e,t,n),l=(i+o)/2;if(i==o)r=a=0;else{var s=i-o;switch(a=l>.5?s/(2-i-o):s/(i+o),i){case e:r=(t-n)/s+(t>1)+720)%360;--t;)a.h=(a.h+i)%360,o.push(r(a));return o}function b(e,t){t=t||6;for(var n=r(e).toHsv(),a=n.h,i=n.s,o=n.v,l=[],s=1/t;t--;)l.push(r({h:a,s:i,v:o})),o=(o+s)%1;return l}r.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,n,r=this.toRgb();return e=r.r/255,t=r.g/255,n=r.b/255,.2126*(e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},setAlpha:function(e){return this._a=w(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=i(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=i(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),r=Math.round(100*e.v);return 1==this._a?"hsv("+t+", "+n+"%, "+r+"%)":"hsva("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=a(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=a(this._r,this._g,this._b),t=Math.round(360*e.h),n=Math.round(100*e.s),r=Math.round(100*e.l);return 1==this._a?"hsl("+t+", "+n+"%, "+r+"%)":"hsla("+t+", "+n+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return o(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return t=this._r,n=this._g,r=this._b,a=this._a,i=e,o=[C(Math.round(t).toString(16)),C(Math.round(n).toString(16)),C(Math.round(r).toString(16)),C(L(a))],i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join("");var t,n,r,a,i,o},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(100*k(this._r,255))+"%",g:Math.round(100*k(this._g,255))+"%",b:Math.round(100*k(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+Math.round(100*k(this._r,255))+"%, "+Math.round(100*k(this._g,255))+"%, "+Math.round(100*k(this._b,255))+"%)":"rgba("+Math.round(100*k(this._r,255))+"%, "+Math.round(100*k(this._g,255))+"%, "+Math.round(100*k(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(T[o(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+l(this._r,this._g,this._b,this._a),n=t,a=this._gradientType?"GradientType = 1, ":"";if(e){var i=r(e);n="#"+l(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+a+"startColorstr="+t+",endColorstr="+n+")"},toString:function(e){var t=!!e;e=e||this._format;var n=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(n=this.toRgbString()),"prgb"===e&&(n=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(n=this.toHexString()),"hex3"===e&&(n=this.toHexString(!0)),"hex4"===e&&(n=this.toHex8String(!0)),"hex8"===e&&(n=this.toHex8String()),"name"===e&&(n=this.toName()),"hsl"===e&&(n=this.toHslString()),"hsv"===e&&(n=this.toHsvString()),n||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return r(this.toString())},_applyModification:function(e,t){var n=e.apply(null,[this].concat([].slice.call(t)));return this._r=n._r,this._g=n._g,this._b=n._b,this.setAlpha(n._a),this},lighten:function(){return this._applyModification(d,arguments)},brighten:function(){return this._applyModification(f,arguments)},darken:function(){return this._applyModification(p,arguments)},desaturate:function(){return this._applyModification(s,arguments)},saturate:function(){return this._applyModification(c,arguments)},greyscale:function(){return this._applyModification(u,arguments)},spin:function(){return this._applyModification(h,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(g,arguments)},complement:function(){return this._applyCombination(m,arguments)},monochromatic:function(){return this._applyCombination(b,arguments)},splitcomplement:function(){return this._applyCombination(v,arguments)},triad:function(){return this._applyCombination(y,[3])},tetrad:function(){return this._applyCombination(y,[4])}},r.fromRatio=function(t,n){if("object"==e(t)){var a={};for(var i in t)t.hasOwnProperty(i)&&(a[i]="a"===i?t[i]:I(t[i]));t=a}return r(t,n)},r.equals=function(e,t){return!(!e||!t)&&r(e).toRgbString()==r(t).toRgbString()},r.random=function(){return r.fromRatio({r:Math.random(),g:Math.random(),b:Math.random()})},r.mix=function(e,t,n){n=0===n?0:n||50;var a=r(e).toRgb(),i=r(t).toRgb(),o=n/100;return r({r:(i.r-a.r)*o+a.r,g:(i.g-a.g)*o+a.g,b:(i.b-a.b)*o+a.b,a:(i.a-a.a)*o+a.a})},r.readability=function(e,t){var n=r(e),a=r(t);return(Math.max(n.getLuminance(),a.getLuminance())+.05)/(Math.min(n.getLuminance(),a.getLuminance())+.05)},r.isReadable=function(e,t,n){var a,i,o,l,s,c=r.readability(e,t);switch(i=!1,(o=n,"AA"!==(l=((o=o||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==l&&(l="AA"),"small"!==(s=(o.size||"small").toLowerCase())&&"large"!==s&&(s="small"),a={level:l,size:s}).level+a.size){case"AAsmall":case"AAAlarge":i=c>=4.5;break;case"AAlarge":i=c>=3;break;case"AAAsmall":i=c>=7}return i},r.mostReadable=function(e,t,n){var a,i,o,l,s=null,c=0;i=(n=n||{}).includeFallbackColors,o=n.level,l=n.size;for(var u=0;uc&&(c=a,s=r(t[u]));return r.isReadable(e,s,{level:o,size:l})||!i?s:(n.includeFallbackColors=!1,r.mostReadable(e,["#fff","#000"],n))};var x=r.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},T=r.hexNames=function(e){var t={};for(var n in e)e.hasOwnProperty(n)&&(t[e[n]]=n);return t}(x);function w(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function k(e,t){var n;"string"==typeof(n=e)&&-1!=n.indexOf(".")&&1===parseFloat(n)&&(e="100%");var r=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(e*t,10)/100),Math.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function A(e){return Math.min(1,Math.max(0,e))}function S(e){return parseInt(e,16)}function C(e){return 1==e.length?"0"+e:""+e}function I(e){return e<=1&&(e=100*e+"%"),e}function L(e){return Math.round(255*parseFloat(e)).toString(16)}function P(e){return S(e)/255}var E,M,Z,O=(M="[\\s|\\(]+("+(E="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+E+")[,|\\s]+("+E+")\\s*\\)?",Z="[\\s|\\(]+("+E+")[,|\\s]+("+E+")[,|\\s]+("+E+")[,|\\s]+("+E+")\\s*\\)?",{CSS_UNIT:new RegExp(E),rgb:new RegExp("rgb"+M),rgba:new RegExp("rgba"+Z),hsl:new RegExp("hsl"+M),hsla:new RegExp("hsla"+Z),hsv:new RegExp("hsv"+M),hsva:new RegExp("hsva"+Z),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function R(e){return!!O.CSS_UNIT.exec(e)}return r}()},23648:function(e){e.exports=JSON.parse('["xx-small","x-small","small","medium","large","x-large","xx-large","larger","smaller"]')},2362:function(e){e.exports=JSON.parse('["normal","condensed","semi-condensed","extra-condensed","ultra-condensed","expanded","semi-expanded","extra-expanded","ultra-expanded"]')},87486:function(e){e.exports=JSON.parse('["normal","italic","oblique"]')},99803:function(e){e.exports=JSON.parse('["normal","bold","bolder","lighter","100","200","300","400","500","600","700","800","900"]')},54324:function(e){e.exports=JSON.parse('["inherit","initial","unset"]')},94316:function(e){e.exports=JSON.parse('["caption","icon","menu","message-box","small-caption","status-bar"]')}},t={};function n(r){var a=t[r];if(void 0!==a)return a.exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n(75884)}()}(zj);const Fj=i(zj.exports);var Yj=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===_j}(e)}(e)},_j="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function Bj(e,t){return!1!==t.clone&&t.isMergeableObject(e)?Qj((n=e,Array.isArray(n)?[]:{}),e,t):e;var n}function jj(e,t,n){return e.concat(t).map((function(e){return Bj(e,n)}))}function Kj(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return Object.propertyIsEnumerable.call(e,t)})):[]}(e))}function Jj(e,t){try{return t in e}catch(n){return!1}}function Uj(e,t,n){var r={};return n.isMergeableObject(e)&&Kj(e).forEach((function(t){r[t]=Bj(e[t],n)})),Kj(t).forEach((function(a){(function(e,t){return Jj(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))})(e,a)||(Jj(e,a)&&n.isMergeableObject(t[a])?r[a]=function(e,t){if(!t.customMerge)return Qj;var n=t.customMerge(e);return"function"==typeof n?n:Qj}(a,n)(e[a],t[a],n):r[a]=Bj(t[a],n))})),r}function Qj(e,t,n){(n=n||{}).arrayMerge=n.arrayMerge||jj,n.isMergeableObject=n.isMergeableObject||Yj,n.cloneUnlessOtherwiseSpecified=Bj;var r=Array.isArray(t);return r===Array.isArray(e)?r?n.arrayMerge(e,t,n):Uj(e,t,n):Bj(t,n)}Qj.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce((function(e,n){return Qj(e,n,t)}),{})};const qj=i(Qj);var $j={};!function(e){function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(e){var n=function(n){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&l(e,t)}(v,n);var a,i,p,h,m,y=(a=v,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,n=c(a);if(i){var r=c(this).constructor;e=Reflect.construct(n,arguments,r)}else e=n.apply(this,arguments);return function(e,n){if(n&&("object"===t(n)||"function"==typeof n))return n;if(void 0!==n)throw new TypeError("Derived constructors may only return object or undefined");return s(e)}(this,e)});function v(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,v),(t=y.call(this,e)).p=Promise.resolve(),t.resizeHandler=null,t.handlers={},t.syncWindowResize=t.syncWindowResize.bind(s(t)),t.syncEventHandlers=t.syncEventHandlers.bind(s(t)),t.attachUpdateEvents=t.attachUpdateEvents.bind(s(t)),t.getRef=t.getRef.bind(s(t)),t.handleUpdate=t.handleUpdate.bind(s(t)),t.figureCallback=t.figureCallback.bind(s(t)),t.updatePlotly=t.updatePlotly.bind(s(t)),t}return p=v,h=[{key:"updatePlotly",value:function(t,n,r){var a=this;this.p=this.p.then((function(){if(!a.unmounting){if(!a.el)throw new Error("Missing element reference");return e.react(a.el,{data:a.props.data,layout:a.props.layout,config:a.props.config,frames:a.props.frames})}})).then((function(){a.unmounting||(a.syncWindowResize(t),a.syncEventHandlers(),a.figureCallback(n),r&&a.attachUpdateEvents())})).catch((function(e){a.props.onError&&a.props.onError(e)}))}},{key:"componentDidMount",value:function(){this.unmounting=!1,this.updatePlotly(!0,this.props.onInitialized,!0)}},{key:"componentDidUpdate",value:function(e){this.unmounting=!1;var t=e.frames&&e.frames.length?e.frames.length:0,n=this.props.frames&&this.props.frames.length?this.props.frames.length:0,r=!(e.layout===this.props.layout&&e.data===this.props.data&&e.config===this.props.config&&n===t),a=void 0!==e.revision,i=e.revision!==this.props.revision;(r||a&&(!a||i))&&this.updatePlotly(!1,this.props.onUpdate,!1)}},{key:"componentWillUnmount",value:function(){this.unmounting=!0,this.figureCallback(this.props.onPurge),this.resizeHandler&&f&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null),this.removeUpdateEvents(),e.purge(this.el)}},{key:"attachUpdateEvents",value:function(){var e=this;this.el&&this.el.removeListener&&d.forEach((function(t){e.el.on(t,e.handleUpdate)}))}},{key:"removeUpdateEvents",value:function(){var e=this;this.el&&this.el.removeListener&&d.forEach((function(t){e.el.removeListener(t,e.handleUpdate)}))}},{key:"handleUpdate",value:function(){this.figureCallback(this.props.onUpdate)}},{key:"figureCallback",value:function(e){if("function"==typeof e){var t=this.el;e({data:t.data,layout:t.layout,frames:this.el._transitionData?this.el._transitionData._frames:null},this.el)}}},{key:"syncWindowResize",value:function(t){var n=this;f&&(this.props.useResizeHandler&&!this.resizeHandler?(this.resizeHandler=function(){return e.Plots.resize(n.el)},window.addEventListener("resize",this.resizeHandler),t&&this.resizeHandler()):!this.props.useResizeHandler&&this.resizeHandler&&(window.removeEventListener("resize",this.resizeHandler),this.resizeHandler=null))}},{key:"getRef",value:function(e){this.el=e,this.props.debug&&f&&(window.gd=this.el)}},{key:"syncEventHandlers",value:function(){var e=this;u.forEach((function(t){var n=e.props["on"+t],r=e.handlers[t],a=Boolean(r);n&&!a?e.addEventHandler(t,n):!n&&a?e.removeEventHandler(t):n&&a&&n!==r&&(e.removeEventHandler(t),e.addEventHandler(t,n))}))}},{key:"addEventHandler",value:function(e,t){this.handlers[e]=t,this.el.on(this.getPlotlyEventName(e),this.handlers[e])}},{key:"removeEventHandler",value:function(e){this.el.removeListener(this.getPlotlyEventName(e),this.handlers[e]),delete this.handlers[e]}},{key:"getPlotlyEventName",value:function(e){return"plotly_"+e.toLowerCase()}},{key:"render",value:function(){return r.default.createElement("div",{id:this.props.divId,style:this.props.style,ref:this.getRef,className:this.props.className})}}],h&&o(p.prototype,h),m&&o(p,m),Object.defineProperty(p,"prototype",{writable:!1}),v}(r.Component);return n.propTypes={data:a.default.arrayOf(a.default.object),config:a.default.object,layout:a.default.object,frames:a.default.arrayOf(a.default.object),revision:a.default.number,onInitialized:a.default.func,onPurge:a.default.func,onError:a.default.func,onUpdate:a.default.func,debug:a.default.bool,style:a.default.object,className:a.default.string,useResizeHandler:a.default.bool,divId:a.default.string},u.forEach((function(e){n.propTypes["on"+e]=a.default.func})),n.defaultProps={debug:!1,useResizeHandler:!1,data:[],style:{position:"relative",display:"inline-block"}},n};var n,r=function(e,n){if(!n&&e&&e.__esModule)return e;if(null===e||"object"!==t(e)&&"function"!=typeof e)return{default:e};var r=i(n);if(r&&r.has(e))return r.get(e);var a={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var s=o?Object.getOwnPropertyDescriptor(e,l):null;s&&(s.get||s.set)?Object.defineProperty(a,l,s):a[l]=e[l]}return a.default=e,r&&r.set(e,a),a}(Y),a=(n=Rp)&&n.__esModule?n:{default:n};function i(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(i=function(e){return e?n:t})(e)}function o(e,t){for(var n=0;n{let n="",r="",a="";for(let i in e){let o=e[i];"@"==i[0]?"i"==i[1]?n=i+" "+o+";":r+="f"==i[1]?yK(o,i):i+"{"+yK(o,"k"==i[1]?"":t)+"}":"object"==typeof o?r+=yK(o,t?t.replace(/([^,])+/g,(e=>i.replace(/(^:.*)|([^,])+/g,(t=>/&/.test(t)?t.replace(/&/g,e):e?e+" "+t:t)))):i):null!=o&&(i=/^--/.test(i)?i:i.replace(/[A-Z]/g,"-$&").toLowerCase(),a+=yK.p?yK.p(i,o):i+":"+o+";")}return n+(t&&a?t+"{"+a+"}":a)+r},vK={},gK=e=>{if("object"==typeof e){let t="";for(let n in e)t+=n+gK(e[n]);return t}return e};function bK(e){let t=this||{},n=e.call?e(t.p):e;return((e,t,n,r,a)=>{let i=gK(e),o=vK[i]||(vK[i]=(e=>{let t=0,n=11;for(;t>>0;return"go"+n})(i));if(!vK[o]){let t=i!==e?e:(e=>{let t,n,r=[{}];for(;t=pK.exec(e.replace(hK,""));)t[4]?r.shift():t[3]?(n=t[3].replace(mK," ").trim(),r.unshift(r[0][n]=r[0][n]||{})):r[0][t[1]]=t[2].replace(mK," ").trim();return r[0]})(e);vK[o]=yK(a?{["@keyframes "+o]:t}:t,n?"":"."+o)}let l=n&&vK.g?vK.g:null;return n&&(vK.g=vK[o]),s=vK[o],c=t,u=r,(d=l)?c.data=c.data.replace(d,s):-1===c.data.indexOf(s)&&(c.data=u?s+c.data:c.data+s),o;var s,c,u,d})(n.unshift?n.raw?((e,t,n)=>e.reduce(((e,r,a)=>{let i=t[a];if(i&&i.call){let e=i(n),t=e&&e.props&&e.props.className||/^go/.test(e)&&e;i=t?"."+t:e&&"object"==typeof e?e.props?"":yK(e,""):!1===e?"":e}return e+r+(null==i?"":i)}),""))(n,[].slice.call(arguments,1),t.p):n.reduce(((e,n)=>Object.assign(e,n&&n.call?n(t.p):n)),{}):n,(r=t.target,"object"==typeof window?((r?r.querySelector("#_goober"):window._goober)||Object.assign((r||document.head).appendChild(document.createElement("style")),{innerHTML:" ",id:"_goober"})).firstChild:r||fK),t.g,t.o,t.k);var r}function xK(e,t){for(var n=0;n=0||(a[n]=e[n]);return a}function SK(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}bK.bind({g:1}),bK.bind({k:1});var CK=function(){return""},IK=_.createContext({enqueueSnackbar:CK,closeSnackbar:CK}),LK="@media (max-width:599.95px)",PK="@media (min-width:600px)",EK=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},MK=function(e){return""+EK(e.vertical)+EK(e.horizontal)},ZK=function(e){return!!e||0===e},OK="unmounted",RK="exited",NK="entering",XK="entered",HK="exiting",DK=function(e){function t(t){var n;n=e.call(this,t)||this;var r,a=t.appear;return n.appearStatus=null,t.in?a?(r=RK,n.appearStatus=NK):r=XK:r=t.unmountOnExit||t.mountOnEnter?OK:RK,n.state={status:r},n.nextCallback=null,n}kK(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===OK?{status:RK}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==NK&&n!==XK&&(t=NK):n!==NK&&n!==XK||(t=HK)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e=this.props.timeout,t=e,n=e;return null!=e&&"number"!=typeof e&&"string"!=typeof e&&(n=e.exit,t=e.enter),{exit:n,enter:t}},n.updateStatus=function(e,t){void 0===e&&(e=!1),null!==t?(this.cancelNextCallback(),t===NK?this.performEnter(e):this.performExit()):this.props.unmountOnExit&&this.state.status===RK&&this.setState({status:OK})},n.performEnter=function(e){var t=this,n=this.props.enter,r=e,a=this.getTimeouts();e||n?(this.props.onEnter&&this.props.onEnter(this.node,r),this.safeSetState({status:NK},(function(){t.props.onEntering&&t.props.onEntering(t.node,r),t.onTransitionEnd(a.enter,(function(){t.safeSetState({status:XK},(function(){t.props.onEntered&&t.props.onEntered(t.node,r)}))}))}))):this.safeSetState({status:XK},(function(){t.props.onEntered&&t.props.onEntered(t.node,r)}))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts();t?(this.props.onExit&&this.props.onExit(this.node),this.safeSetState({status:HK},(function(){e.props.onExiting&&e.props.onExiting(e.node),e.onTransitionEnd(n.exit,(function(){e.safeSetState({status:RK},(function(){e.props.onExited&&e.props.onExited(e.node)}))}))}))):this.safeSetState({status:RK},(function(){e.props.onExited&&e.props.onExited(e.node)}))},n.cancelNextCallback=function(){null!==this.nextCallback&&this.nextCallback.cancel&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(){n&&(n=!1,t.nextCallback=null,e())},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=null==e&&!this.props.addEndListener;this.node&&!n?(this.props.addEndListener&&this.props.addEndListener(this.node,this.nextCallback),null!=e&&setTimeout(this.nextCallback,e)):setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===OK)return null;var t=this.props;return(0,t.children)(e,AK(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]))},TK(t,[{key:"node",get:function(){var e,t=null===(e=this.props.nodeRef)||void 0===e?void 0:e.current;if(!t)throw new Error("notistack - Custom snackbar is not refForwarding");return t}}]),t}(_.Component);function WK(){}function GK(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function VK(e,t){return Y.useMemo((function(){return null==e&&null==t?null:function(n){GK(e,n),GK(t,n)}}),[e,t])}function zK(e){var t=e.timeout,n=e.style,r=void 0===n?{}:n,a=e.mode;return{duration:"object"==typeof t?t[a]||0:t,easing:r.transitionTimingFunction,delay:r.transitionDelay}}DK.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:WK,onEntering:WK,onEntered:WK,onExit:WK,onExiting:WK,onExited:WK};var FK="cubic-bezier(0.4, 0, 0.2, 1)",YK="cubic-bezier(0.0, 0, 0.2, 1)",_K="cubic-bezier(0.4, 0, 0.6, 1)",BK=function(e){e.scrollTop=e.scrollTop},jK=function(e){return Math.round(e)+"ms"};function KK(e,t){void 0===e&&(e=["all"]);var n=t||{},r=n.duration,a=void 0===r?300:r,i=n.easing,o=void 0===i?FK:i,l=n.delay,s=void 0===l?0:l;return(Array.isArray(e)?e:[e]).map((function(e){var t="string"==typeof a?a:jK(a),n="string"==typeof s?s:jK(s);return e+" "+t+" "+o+" "+n})).join(",")}function JK(e){var t=function(e){return e&&e.ownerDocument||document}(e);return t.defaultView||window}function UK(e,t){if(t){var n=function(e,t){var n,r=t.getBoundingClientRect(),a=JK(t);if(t.fakeTransform)n=t.fakeTransform;else{var i=a.getComputedStyle(t);n=i.getPropertyValue("-webkit-transform")||i.getPropertyValue("transform")}var o=0,l=0;if(n&&"none"!==n&&"string"==typeof n){var s=n.split("(")[1].split(")")[0].split(",");o=parseInt(s[4],10),l=parseInt(s[5],10)}switch(e){case"left":return"translateX("+(a.innerWidth+o-r.left)+"px)";case"right":return"translateX(-"+(r.left+r.width-o)+"px)";case"up":return"translateY("+(a.innerHeight+l-r.top)+"px)";default:return"translateY(-"+(r.top+r.height-l)+"px)"}}(e,t);n&&(t.style.webkitTransform=n,t.style.transform=n)}}var QK=Y.forwardRef((function(e,t){var n=e.children,r=e.direction,a=void 0===r?"down":r,i=e.in,o=e.style,l=e.timeout,s=void 0===l?0:l,c=e.onEnter,u=e.onEntered,d=e.onExit,f=e.onExited,p=AK(e,["children","direction","in","style","timeout","onEnter","onEntered","onExit","onExited"]),h=Y.useRef(null),m=VK(n.ref,h),y=VK(m,t),v=Y.useCallback((function(){h.current&&UK(a,h.current)}),[a]);return Y.useEffect((function(){if(!i&&"down"!==a&&"right"!==a){var e=function(e,t){var n;function r(){for(var r=this,a=arguments.length,i=new Array(a),o=0;o-1,i=e.snacks.findIndex(t)>-1;if(r||i)return e}return n.handleDisplaySnack(wK({},e,{queue:[].concat(e.queue,[d])}))})),c},n.handleDisplaySnack=function(e){return e.snacks.length>=n.maxSnack?n.handleDismissOldest(e):n.processQueue(e)},n.processQueue=function(e){var t=e.queue,n=e.snacks;return t.length>0?wK({},e,{snacks:[].concat(n,[t[0]]),queue:t.slice(1,t.length)}):e},n.handleDismissOldest=function(e){if(e.snacks.some((function(e){return!e.open||e.requestClose})))return e;var t=!1,r=!1;e.snacks.reduce((function(e,t){return e+(t.open&&t.persist?1:0)}),0)===n.maxSnack&&(r=!0);var a=e.snacks.map((function(e){return t||e.persist&&!r?wK({},e):(t=!0,e.entered?(e.onClose&&e.onClose(null,"maxsnack",e.id),n.props.onClose&&n.props.onClose(null,"maxsnack",e.id),wK({},e,{open:!1})):wK({},e,{requestClose:!0}))}));return wK({},e,{snacks:a})},n.handleEnteredSnack=function(e,t,r){if(!ZK(r))throw new Error("handleEnteredSnack Cannot be called with undefined key");n.setState((function(e){return{snacks:e.snacks.map((function(e){return e.id===r?wK({},e,{entered:!0}):wK({},e)}))}}))},n.handleCloseSnack=function(e,t,r){n.props.onClose&&n.props.onClose(e,t,r);var a=void 0===r;n.setState((function(e){var t=e.snacks,n=e.queue;return{snacks:t.map((function(e){return a||e.id===r?e.entered?wK({},e,{open:!1}):wK({},e,{requestClose:!0}):wK({},e)})),queue:n.filter((function(e){return e.id!==r}))}}))},n.closeSnackbar=function(e){var t=n.state.snacks.find((function(t){return t.id===e}));ZK(e)&&t&&t.onClose&&t.onClose(null,"instructed",e),n.handleCloseSnack(null,"instructed",e)},n.handleExitedSnack=function(e,t){if(!ZK(t))throw new Error("handleExitedSnack Cannot be called with undefined key");n.setState((function(e){var r=n.processQueue(wK({},e,{snacks:e.snacks.filter((function(e){return e.id!==t}))}));return 0===r.queue.length?r:n.handleDismissOldest(r)}))},n.enqueueSnackbar,n.closeSnackbar,n.state={snacks:[],queue:[],contextValue:{enqueueSnackbar:n.enqueueSnackbar.bind(SK(n)),closeSnackbar:n.closeSnackbar.bind(SK(n))}},n}return kK(t,e),t.prototype.render=function(){var e=this,t=this.state.contextValue,n=this.props,r=n.domRoot,a=n.children,i=n.dense,o=void 0!==i&&i,l=n.Components,s=void 0===l?{}:l,c=n.classes,u=this.state.snacks.reduce((function(e,t){var n,r=MK(t.anchorOrigin),a=e[r]||[];return wK({},e,((n={})[r]=[].concat(a,[t]),n))}),{}),d=Object.keys(u).map((function(t){var n=u[t],r=n[0];return _.createElement(GJ,{key:t,dense:o,anchorOrigin:r.anchorOrigin,classes:c},n.map((function(t){return _.createElement(RJ,{key:t.id,snack:t,classes:c,Component:s[t.variant],onClose:e.handleCloseSnack,onEnter:e.props.onEnter,onExit:e.props.onExit,onExited:vJ([e.handleExitedSnack,e.props.onExited],t.id),onEntered:vJ([e.handleEnteredSnack,e.props.onEntered],t.id)})})))}));return _.createElement(IK.Provider,{value:t},a,r?ld.createPortal(d,r):d)},TK(t,[{key:"maxSnack",get:function(){return this.props.maxSnack||rJ.maxSnack}}]),t}(Y.Component);const FJ=eK(Fj);function YJ(e){const t=gg(),n=_.useRef(null),{minHeight:r=450,data:a,layout:i,config:o,modebarComponents:l}=e,[s,c]=_.useState(!1),u=qj(i,{autosize:!0}),d=qj(o,{displayModeBar:!0,modeBarButtonsToAdd:["resetViews"],logging:2,autosizable:!0,frameMargins:0}),f={display:"inline-block",width:"100%",height:"100%",margin:t.spacing(0)};return ee.jsx(aS,{sx:{width:"100%",height:"100%",minHeight:r,position:"relative"},onMouseEnter:()=>c(!0),onMouseLeave:e=>{var t;(null==(t=e.relatedTarget)?void 0:t.className)&&c(!1)},children:ee.jsxs(aS,{sx:{position:"absolute",top:0,width:"100%",height:"100%"},children:[ee.jsx(_J,{visible:s,plot:n,filename:null==e?void 0:e.filename,permanentComponents:l}),ee.jsx(FJ,{ref:n,data:a,layout:u,config:d,revision:null==e?void 0:e.revision,useResizeHandler:!0,onError:e=>console.error(e.message),style:f,onRelayout:null==e?void 0:e.onRelayout})]})})}function _J(e){const{visible:t,plot:n,permanentComponents:r}=e,[a,i]=_.useState("zoom"),{enqueueSnackbar:o}=Y.useContext(IK);return ee.jsxs(aS,{sx:{position:"absolute",justifyContent:"flex-end",top:0,zIndex:1,width:"100%",display:"flex"},children:[ee.jsx(aS,{sx:{display:t?"flex":"none"},children:ee.jsx(QA,{in:t,children:ee.jsxs(jL,{variant:"dense",children:[ee.jsx(NP,{size:"small",children:ee.jsx(EP,{value:"download",onClick:()=>{if(null===(null==n?void 0:n.current))return void console.warn("Cannot download image, invalid reference to plot");const t=n.current.el,r={...t._context.toImageButtonOptions,format:"svg",filename:(null==e?void 0:e.filename)??"figure"};Fj.downloadImage(t,r).then((e=>{o(`Snapshot succeeded - ${e}`,{variant:"success"})})).catch((()=>{o("Sorry, there was a problem downloading your snapshot!",{variant:"error"})}))},children:ee.jsx(PL,{title:"Download plot as a svg",children:ee.jsx(nK,{})})})}),ee.jsx(RS,{flexItem:!0,orientation:"vertical",sx:{mx:.5,my:1}}),ee.jsxs(NP,{size:"small",value:void 0,onChange:(e,t)=>{switch(t){case"zoom-in":(r=null==n?void 0:n.current)&&r.el.querySelector('a[data-attr="zoom"][data-val="in"]').click();break;case"zoom-out":!function(e){e&&e.el.querySelector('a[data-attr="zoom"][data-val="out"]').click()}(null==n?void 0:n.current)}var r},exclusive:!0,children:[ee.jsx(EP,{value:"zoom-in",children:ee.jsx(PL,{title:"Zoom in",children:ee.jsx(sK,{})})}),ee.jsx(EP,{value:"zoom-out",children:ee.jsx(PL,{title:"Zoom out",children:ee.jsx(cK,{})})})]}),ee.jsx(RS,{flexItem:!0,orientation:"vertical",sx:{mx:.5,my:1}}),ee.jsxs(NP,{size:"small",value:a,exclusive:!0,onChange:(e,t)=>{switch(t){case"zoom":(r=null==n?void 0:n.current)&&r.el.querySelector('a[data-attr="dragmode"][data-val="zoom"]').click();break;case"pan":!function(e){e&&e.el.querySelector('a[data-attr="dragmode"][data-val="pan"]').click()}(null==n?void 0:n.current);break;case"box":!function(e){e&&e.el.querySelector('a[data-attr="dragmode"][data-val="select"]').click()}(null==n?void 0:n.current);break;case"lasso":!function(e){e&&e.el.querySelector('a[data-attr="dragmode"][data-val="lasso"]').click()}(null==n?void 0:n.current)}var r;i(t)},children:[ee.jsx(EP,{value:"zoom",children:ee.jsx(PL,{title:"Zoom",children:ee.jsx(iK,{})})}),ee.jsx(EP,{value:"pan",children:ee.jsx(PL,{title:"Pan",children:ee.jsx(aK,{})})})]}),ee.jsx(RS,{flexItem:!0,orientation:"vertical",sx:{mx:.5,my:1}}),ee.jsxs(NP,{size:"small",children:[ee.jsx(EP,{value:"auto-scale",onClick:()=>{var e;(e=null==n?void 0:n.current)&&e.el.querySelector('a[data-attr="zoom"][data-val="auto"]').click()},children:ee.jsx(PL,{title:"Auto scale",children:ee.jsx(rK,{})})}),ee.jsx(EP,{value:"reset-axis",onClick:async()=>{var e;(e=null==n?void 0:n.current)&&e.el.querySelector('a[data-attr="zoom"][data-val="reset"]').click(),await Fj.redraw(n.current.el)},children:ee.jsx(PL,{title:"Reset axis",children:ee.jsx(lK,{})})})]})]})})}),r&&ee.jsx(aS,{sx:{alignItems:"start"},children:ee.jsx(jL,{variant:"dense",style:{paddingLeft:0},sx:{alignItems:"center",height:48},children:r})})]})}const BJ={data:{barpolar:[{marker:{line:{color:"white",width:.5},pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"barpolar"}],bar:[{error_x:{color:"#2a3f5f"},error_y:{color:"#2a3f5f"},marker:{line:{color:"white",width:.5},pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"bar"}],carpet:[{aaxis:{endlinecolor:"#2a3f5f",gridcolor:"#C8D4E3",linecolor:"#C8D4E3",minorgridcolor:"#C8D4E3",startlinecolor:"#2a3f5f"},baxis:{endlinecolor:"#2a3f5f",gridcolor:"#C8D4E3",linecolor:"#C8D4E3",minorgridcolor:"#C8D4E3",startlinecolor:"#2a3f5f"},type:"carpet"}],choropleth:[{colorbar:{outlinewidth:0,ticks:""},type:"choropleth"}],contourcarpet:[{colorbar:{outlinewidth:0,ticks:""},type:"contourcarpet"}],contour:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"contour"}],heatmapgl:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"heatmapgl"}],heatmap:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"heatmap"}],histogram2dcontour:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"histogram2dcontour"}],histogram2d:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"histogram2d"}],histogram:[{marker:{pattern:{fillmode:"overlay",size:10,solidity:.2}},type:"histogram"}],mesh3d:[{colorbar:{outlinewidth:0,ticks:""},type:"mesh3d"}],parcoords:[{line:{colorbar:{outlinewidth:0,ticks:""}},type:"parcoords"}],pie:[{automargin:!0,type:"pie"}],scatter3d:[{line:{colorbar:{outlinewidth:0,ticks:""}},marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatter3d"}],scattercarpet:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattercarpet"}],scattergeo:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattergeo"}],scattergl:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattergl"}],scattermapbox:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scattermapbox"}],scatterpolargl:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterpolargl"}],scatterpolar:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterpolar"}],scatter:[{fillpattern:{fillmode:"overlay",size:10,solidity:.2},type:"scatter"}],scatterternary:[{marker:{colorbar:{outlinewidth:0,ticks:""}},type:"scatterternary"}],surface:[{colorbar:{outlinewidth:0,ticks:""},colorscale:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]],type:"surface"}],table:[{cells:{fill:{color:"#EBF0F8"},line:{color:"white"}},header:{fill:{color:"#C8D4E3"},line:{color:"white"}},type:"table"}]},layout:{annotationdefaults:{arrowcolor:"#2a3f5f",arrowhead:0,arrowwidth:1},autotypenumbers:"strict",coloraxis:{colorbar:{outlinewidth:0,ticks:""}},colorscale:{diverging:[[0,"#8e0152"],[.1,"#c51b7d"],[.2,"#de77ae"],[.3,"#f1b6da"],[.4,"#fde0ef"],[.5,"#f7f7f7"],[.6,"#e6f5d0"],[.7,"#b8e186"],[.8,"#7fbc41"],[.9,"#4d9221"],[1,"#276419"]],sequential:[[0,"#440154"],[.1111111111111111,"#482878"],[.2222222222222222,"#3e4989"],[.3333333333333333,"#31688e"],[.4444444444444444,"#26828e"],[.5555555555555556,"#1f9e89"],[.6666666666666666,"#35b779"],[.7777777777777778,"#6ece58"],[.8888888888888888,"#b5de2b"],[1,"#fde725"]],sequentialminus:[[0,"#0d0887"],[.1111111111111111,"#46039f"],[.2222222222222222,"#7201a8"],[.3333333333333333,"#9c179e"],[.4444444444444444,"#bd3786"],[.5555555555555556,"#d8576b"],[.6666666666666666,"#ed7953"],[.7777777777777778,"#fb9f3a"],[.8888888888888888,"#fdca26"],[1,"#f0f921"]]},colorway:["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],font:{color:"#2a3f5f"},geo:{bgcolor:"white",lakecolor:"white",landcolor:"white",showlakes:!0,showland:!0,subunitcolor:"#C8D4E3"},hoverlabel:{align:"left"},hovermode:"closest",mapbox:{style:"light"},paper_bgcolor:"white",plot_bgcolor:"white",polar:{angularaxis:{gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:""},bgcolor:"white",radialaxis:{gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:""}},scene:{xaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"},yaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"},zaxis:{backgroundcolor:"white",gridcolor:"#DFE8F3",gridwidth:2,linecolor:"#EBF0F8",showbackground:!0,ticks:"",zerolinecolor:"#EBF0F8"}},shapedefaults:{line:{color:"#2a3f5f"}},ternary:{aaxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""},baxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""},bgcolor:"white",caxis:{gridcolor:"#DFE8F3",linecolor:"#A2B1C6",ticks:""}},title:{x:.05},xaxis:{automargin:!0,gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:"",title:{standoff:15},zerolinecolor:"#EBF0F8",zerolinewidth:2},yaxis:{automargin:!0,gridcolor:"#EBF0F8",linecolor:"#EBF0F8",ticks:"",title:{standoff:15},zerolinecolor:"#EBF0F8",zerolinewidth:2}}},jJ={load:IM("rankedCellSizeData/load",(async e=>{var t,n;const r=zM("ranked-component-size",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(a)return{datasetId:e,...await mO.use((async({remote:e})=>await e.loadRankedComponentSizeData(a))).catch((e=>console.log(e)))};console.warn(`No ranked component size data found for dataset with id ${e}`)}),{condition:(e,{getState:t})=>{var n;return!(null==(n=t().rankedCellSizeData)?void 0:n.status[e])}})},KJ=OM({name:"rankedCellSizeData",initialState:{status:{},data:{}},reducers:{},extraReducers:e=>{e.addCase(jJ.load.pending,((e,t)=>{e.status[t.meta.arg]="pending"})),e.addCase(jJ.load.fulfilled,((e,t)=>{e.status[t.meta.arg]="fulfilled",e.data[t.meta.arg]=t.payload})),e.addCase(jJ.load.rejected,((e,t)=>{e.status[t.meta.arg]="rejected"}))}}),JJ=_.memo((function(e){const t=gg(),n=function(e){const t=KO((t=>t.rankedCellSizeData.status[e])),n=KO((t=>t.rankedCellSizeData.data[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(jJ.load(e))}),[n,e,r,t]),n}(e.datasetId),[r,a]=_.useState(void 0),{scale:i,component:o}=function(e="log"){const t=gg(),[n,r]=Y.useState(e),[a,i]=Y.useState(e),o=Y.useMemo((()=>ee.jsxs(NP,{color:"primary",value:n,exclusive:!0,onChange:(e,t)=>t&&r(t),children:[ee.jsx(EP,{size:"small",value:"linear",children:"linear"}),ee.jsx(EP,{size:"small",value:"log",children:"log10"})]})),[n]),l=Y.useMemo((()=>ee.jsxs(NP,{color:"primary",value:a,exclusive:!0,onChange:(e,t)=>t&&i(t),children:[ee.jsx(EP,{size:"small",value:"linear",children:"linear"}),ee.jsx(EP,{size:"small",value:"log",children:"log10"})]})),[a]),s=Y.useMemo((()=>ee.jsxs(aS,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(240px, 1fr))",gap:t.spacing(2),justifyItems:"center"},children:[ee.jsx(US,{sx:{flexGrow:0},labelPlacement:"start",control:o,label:ee.jsx(YT,{marginRight:t.spacing(2),variant:"label",children:"X-axis scale"})}),ee.jsx(US,{sx:{flexGrow:0},labelPlacement:"start",control:l,label:ee.jsx(YT,{marginRight:t.spacing(2),variant:"label",children:"Y-axis scale"})})]})),[t,o,l]);return{scale:{XScale:n,YScale:a},component:s}}("log"),l=_.useCallback((async()=>{if(n)return[{name:"Cells",type:"scattergl",x:n.component_rank.filter(((e,t)=>n.is_cell[t])),y:n.component_size.filter(((e,t)=>n.is_cell[t])),xaxis:"x",yaxis:"y",marker:{type:"circle",color:t.palette.orange.main},mode:"markers"},{name:"Non-cell components",type:"scattergl",x:n.component_rank.filter(((e,t)=>!n.is_cell[t])),y:n.component_size.filter(((e,t)=>!n.is_cell[t])),xaxis:"x",yaxis:"y",marker:{type:"circle",color:t.palette.grey.A200},mode:"markers"}]}),[t,n]);_.useEffect((()=>{(async function(){const e=await l();await a(e)})().catch(console.error)}),[l]);const s=_.useMemo((()=>{if(n)return{template:BJ,xaxis:{anchor:"y",type:i.XScale,autorange:!0,title:{text:"Component size rank"}},yaxis:{anchor:"x",type:i.YScale,autorange:!0,title:{text:"Component size"}},legend:{traceorder:"normal",xanchor:"left",yanchor:"bottom",x:.01,y:-.3},margin:{t:60,l:40,r:40,b:40}}}),[n,i]);return ee.jsxs(aS,{width:"100%",height:"100%",sx:{display:"flex",flexDirection:"column"},children:[ee.jsx(aS,{sx:{flexGrow:1},children:r&&s?ee.jsx(YJ,{minHeight:500,filename:`${e.datasetId}-sequencing-saturation`,data:r,layout:s}):ee.jsx(gL,{height:500})}),o]})})),UJ=[{metricId:"number_of_cells"},{metricId:"average_reads_per_cell"},{metricId:"average_reads_usable_per_cell"},{metricId:"average_antibody_molecules_per_cell"},{metricId:"average_umis_per_upia"},{metricId:"average_upias_per_cell"},{metricId:"fraction_reads_in_cells"},{metricId:"fraction_discarded_umis"},{metricId:"total_unique_antibodies_detected"},{metricId:"fraction_outlier_cells"}];function QJ({index:e}){const t=rD("0"),[n,r]=Y.useState(0);return ee.jsxs(CD,{children:[ee.jsx(CD.Header,{index:e,title:"Cells"}),ee.jsx(CD.LeftPanel,{children:ee.jsx(Gj,{data:UJ,sourceData:null==t?void 0:t.metrics})}),ee.jsxs(CD.RightPanel,{children:[ee.jsx(yP,{value:n,onChange:async(e,t)=>{r(t)},children:ee.jsx(FL,{label:"Cell size distribution",value:0})}),ee.jsx(Vj,{index:0,value:n,sx:{width:"100%",height:"100%"},children:ee.jsx(OD,{sx:{marginTop:0},children:ee.jsx(JJ,{datasetId:"0"})})})]}),ee.jsx(CD.Footer,{})]})}const qJ={load:IM("readsPerUmiFrequencyData/load",(async e=>{var t,n;const r=zM("reads-per-molecule-frequency",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(a)return{datasetId:e,...await mO.use((async({remote:e})=>await e.loadReadsPerUmiFrequencyData(a))).catch((e=>console.log(e)))};console.warn(`No reads per umi frequency data found for dataset with id ${e}`)}),{condition:(e,{getState:t})=>{var n;return!(null==(n=t().readsPerUmiFrequencyData)?void 0:n.status[e])}})},$J=OM({name:"readsPerUmiFrequencyData",initialState:{status:{},data:{}},reducers:{},extraReducers:e=>{e.addCase(qJ.load.pending,((e,t)=>{e.status[t.meta.arg]="pending"})),e.addCase(qJ.load.fulfilled,((e,t)=>{e.status[t.meta.arg]="fulfilled",e.data[t.meta.arg]=t.payload})),e.addCase(qJ.load.rejected,((e,t)=>{e.status[t.meta.arg]="rejected"}))}}),eU=_.memo((function(e){const t=function(e){const t=KO((t=>t.readsPerUmiFrequencyData.status[e])),n=KO((t=>t.readsPerUmiFrequencyData.data[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(qJ.load(e))}),[n,r,e,t]),n}(e.datasetId??"0"),n=gg(),[r,a]=_.useState("values"),i=_.useMemo((()=>ee.jsxs(NP,{color:"primary",value:r,exclusive:!0,onChange:(e,t)=>t&&a(t),children:[ee.jsx(EP,{size:"small",value:"values",children:"values"}),ee.jsx(EP,{size:"small",value:"fractions",children:"fractions"})]})),[r]),o=ee.jsx(aS,{sx:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(240px, 1fr))",gap:n.spacing(2),justifyItems:"center"},children:ee.jsx(US,{sx:{flexGrow:0},labelPlacement:"start",control:i,label:ee.jsx(YT,{marginRight:n.spacing(2),variant:"label",children:"Y-axis data"})})}),l=_.useMemo((()=>t?[{type:"bar",x:t.reads_per_molecule,y:"values"===r?t.count:t.frequency,xaxis:"x",yaxis:"y",marker:{color:n.palette.orange.main},hovertemplate:"values"===r?"%{label}:\n%{value}":"%{label}:\n%{value:.2%}"}]:[]),[t,r,n.palette.orange.main]),s=_.useMemo((()=>t?{template:BJ,xaxis:{anchor:"y",autorange:!0,title:{text:"Number of Reads per Molecule"}},yaxis:{type:"linear",autorange:!0,anchor:"x",tickformat:"fractions"===r?",.0%":void 0,title:{text:"fractions"===r?"Frequency (%)":"Frequency"}},margin:{t:60,l:40,r:40,b:40}}:{}),[t,r]);return ee.jsxs(aS,{width:"100%",height:"100%",children:[l&&s?ee.jsx(YJ,{minHeight:500,filename:`${e.datasetId}-reads-per-molecule-frequency`,data:l,layout:s}):ee.jsx(gL,{height:500}),o]})})),tU=[{metricId:"number_of_reads"},{metricId:"number_of_short_reads_skipped"},{metricId:"fraction_valid_pbs"},{metricId:"fraction_valid_umis"},{metricId:"sequencing_saturation"},{metricId:"average_reads_per_molecule"},{metricId:"fraction_q30_bases_in_antibody_barcode"},{metricId:"fraction_q30_bases_in_umi"},{metricId:"fraction_q30_bases_in_upia"},{metricId:"fraction_q30_bases_in_upib"},{metricId:"fraction_q30_bases_in_pbs1"},{metricId:"fraction_q30_bases_in_pbs2"},{metricId:"fraction_q30_bases_in_read"}];function nU({index:e}){var t;const n=null==(t=rD("0"))?void 0:t.metrics,[r,a]=Y.useState(0);return ee.jsxs(CD,{children:[ee.jsx(CD.Header,{index:e,title:"Sequencing"}),ee.jsx(CD.LeftPanel,{children:ee.jsx(Gj,{data:tU,sourceData:n})}),ee.jsxs(CD.RightPanel,{children:[ee.jsx(yP,{value:r,onChange:async(e,t)=>{a(t)},children:ee.jsx(FL,{label:"Reads per Molecule",value:0})}),ee.jsx(OD,{sx:{marginTop:0},children:ee.jsx(Vj,{index:0,value:r,sx:{width:"100%",height:"100%"},children:ee.jsx(eU,{datasetId:"0"})})})]}),ee.jsx(CD.Footer,{})]})}const rU={load:dM("antibodiesPerCell/load")};var aU={},iU=function(e){return e&&e.Math===Math&&e},oU=iU("object"==typeof globalThis&&globalThis)||iU("object"==typeof window&&window)||iU("object"==typeof self&&self)||iU("object"==typeof r&&r)||iU("object"==typeof r&&r)||function(){return this}()||Function("return this")(),lU={},sU=function(e){try{return!!e()}catch(t){return!0}},cU=!sU((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]})),uU=!sU((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),dU=uU,fU=Function.prototype.call,pU=dU?fU.bind(fU):function(){return fU.apply(fU,arguments)},hU={},mU={}.propertyIsEnumerable,yU=Object.getOwnPropertyDescriptor,vU=yU&&!mU.call({1:2},1);hU.f=vU?function(e){var t=yU(this,e);return!!t&&t.enumerable}:mU;var gU,bU,xU=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},TU=uU,wU=Function.prototype,kU=wU.call,AU=TU&&wU.bind.bind(kU,kU),SU=TU?AU:function(e){return function(){return kU.apply(e,arguments)}},CU=SU,IU=CU({}.toString),LU=CU("".slice),PU=function(e){return LU(IU(e),8,-1)},EU=sU,MU=PU,ZU=Object,OU=SU("".split),RU=EU((function(){return!ZU("z").propertyIsEnumerable(0)}))?function(e){return"String"===MU(e)?OU(e,""):ZU(e)}:ZU,NU=function(e){return null==e},XU=NU,HU=TypeError,DU=function(e){if(XU(e))throw new HU("Can't call method on "+e);return e},WU=RU,GU=DU,VU=function(e){return WU(GU(e))},zU="object"==typeof document&&document.all,FU=void 0===zU&&void 0!==zU?function(e){return"function"==typeof e||e===zU}:function(e){return"function"==typeof e},YU=FU,_U=function(e){return"object"==typeof e?null!==e:YU(e)},BU=oU,jU=FU,KU=function(e,t){return arguments.length<2?(n=BU[e],jU(n)?n:void 0):BU[e]&&BU[e][t];var n},JU=SU({}.isPrototypeOf),UU="undefined"!=typeof navigator&&String(navigator.userAgent)||"",QU=oU,qU=UU,$U=QU.process,eQ=QU.Deno,tQ=$U&&$U.versions||eQ&&eQ.version,nQ=tQ&&tQ.v8;nQ&&(bU=(gU=nQ.split("."))[0]>0&&gU[0]<4?1:+(gU[0]+gU[1])),!bU&&qU&&(!(gU=qU.match(/Edge\/(\d+)/))||gU[1]>=74)&&(gU=qU.match(/Chrome\/(\d+)/))&&(bU=+gU[1]);var rQ=bU,aQ=rQ,iQ=sU,oQ=oU.String,lQ=!!Object.getOwnPropertySymbols&&!iQ((function(){var e=Symbol("symbol detection");return!oQ(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&aQ&&aQ<41})),sQ=lQ&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,cQ=KU,uQ=FU,dQ=JU,fQ=Object,pQ=sQ?function(e){return"symbol"==typeof e}:function(e){var t=cQ("Symbol");return uQ(t)&&dQ(t.prototype,fQ(e))},hQ=String,mQ=function(e){try{return hQ(e)}catch(t){return"Object"}},yQ=FU,vQ=mQ,gQ=TypeError,bQ=function(e){if(yQ(e))return e;throw new gQ(vQ(e)+" is not a function")},xQ=bQ,TQ=NU,wQ=function(e,t){var n=e[t];return TQ(n)?void 0:xQ(n)},kQ=pU,AQ=FU,SQ=_U,CQ=TypeError,IQ={exports:{}},LQ=oU,PQ=Object.defineProperty,EQ=function(e,t){try{PQ(LQ,e,{value:t,configurable:!0,writable:!0})}catch(n){LQ[e]=t}return t},MQ=oU,ZQ=EQ,OQ="__core-js_shared__",RQ=IQ.exports=MQ[OQ]||ZQ(OQ,{});(RQ.versions||(RQ.versions=[])).push({version:"3.36.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.1/LICENSE",source:"https://github.com/zloirock/core-js"});var NQ=IQ.exports,XQ=NQ,HQ=function(e,t){return XQ[e]||(XQ[e]=t||{})},DQ=DU,WQ=Object,GQ=function(e){return WQ(DQ(e))},VQ=GQ,zQ=SU({}.hasOwnProperty),FQ=Object.hasOwn||function(e,t){return zQ(VQ(e),t)},YQ=SU,_Q=0,BQ=Math.random(),jQ=YQ(1..toString),KQ=function(e){return"Symbol("+(void 0===e?"":e)+")_"+jQ(++_Q+BQ,36)},JQ=HQ,UQ=FQ,QQ=KQ,qQ=lQ,$Q=sQ,eq=oU.Symbol,tq=JQ("wks"),nq=$Q?eq.for||eq:eq&&eq.withoutSetter||QQ,rq=function(e){return UQ(tq,e)||(tq[e]=qQ&&UQ(eq,e)?eq[e]:nq("Symbol."+e)),tq[e]},aq=pU,iq=_U,oq=pQ,lq=wQ,sq=function(e,t){var n,r;if("string"===t&&AQ(n=e.toString)&&!SQ(r=kQ(n,e)))return r;if(AQ(n=e.valueOf)&&!SQ(r=kQ(n,e)))return r;if("string"!==t&&AQ(n=e.toString)&&!SQ(r=kQ(n,e)))return r;throw new CQ("Can't convert object to primitive value")},cq=TypeError,uq=rq("toPrimitive"),dq=function(e,t){if(!iq(e)||oq(e))return e;var n,r=lq(e,uq);if(r){if(void 0===t&&(t="default"),n=aq(r,e,t),!iq(n)||oq(n))return n;throw new cq("Can't convert object to primitive value")}return void 0===t&&(t="number"),sq(e,t)},fq=dq,pq=pQ,hq=function(e){var t=fq(e,"string");return pq(t)?t:t+""},mq=_U,yq=oU.document,vq=mq(yq)&&mq(yq.createElement),gq=function(e){return vq?yq.createElement(e):{}},bq=gq,xq=!cU&&!sU((function(){return 7!==Object.defineProperty(bq("div"),"a",{get:function(){return 7}}).a})),Tq=cU,wq=pU,kq=hU,Aq=xU,Sq=VU,Cq=hq,Iq=FQ,Lq=xq,Pq=Object.getOwnPropertyDescriptor;lU.f=Tq?Pq:function(e,t){if(e=Sq(e),t=Cq(t),Lq)try{return Pq(e,t)}catch(n){}if(Iq(e,t))return Aq(!wq(kq.f,e,t),e[t])};var Eq={},Mq=cU&&sU((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Zq=_U,Oq=String,Rq=TypeError,Nq=function(e){if(Zq(e))return e;throw new Rq(Oq(e)+" is not an object")},Xq=cU,Hq=xq,Dq=Mq,Wq=Nq,Gq=hq,Vq=TypeError,zq=Object.defineProperty,Fq=Object.getOwnPropertyDescriptor,Yq="enumerable",_q="configurable",Bq="writable";Eq.f=Xq?Dq?function(e,t,n){if(Wq(e),t=Gq(t),Wq(n),"function"==typeof e&&"prototype"===t&&"value"in n&&Bq in n&&!n[Bq]){var r=Fq(e,t);r&&r[Bq]&&(e[t]=n.value,n={configurable:_q in n?n[_q]:r[_q],enumerable:Yq in n?n[Yq]:r[Yq],writable:!1})}return zq(e,t,n)}:zq:function(e,t,n){if(Wq(e),t=Gq(t),Wq(n),Hq)try{return zq(e,t,n)}catch(r){}if("get"in n||"set"in n)throw new Vq("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var jq=Eq,Kq=xU,Jq=cU?function(e,t,n){return jq.f(e,t,Kq(1,n))}:function(e,t,n){return e[t]=n,e},Uq={exports:{}},Qq=cU,qq=FQ,$q=Function.prototype,e$=Qq&&Object.getOwnPropertyDescriptor,t$=qq($q,"name"),n$={EXISTS:t$,PROPER:t$&&"something"===function(){}.name,CONFIGURABLE:t$&&(!Qq||Qq&&e$($q,"name").configurable)},r$=FU,a$=NQ,i$=SU(Function.toString);r$(a$.inspectSource)||(a$.inspectSource=function(e){return i$(e)});var o$,l$,s$,c$=a$.inspectSource,u$=FU,d$=oU.WeakMap,f$=u$(d$)&&/native code/.test(String(d$)),p$=KQ,h$=HQ("keys"),m$=function(e){return h$[e]||(h$[e]=p$(e))},y$={},v$=f$,g$=oU,b$=_U,x$=Jq,T$=FQ,w$=NQ,k$=m$,A$=y$,S$="Object already initialized",C$=g$.TypeError,I$=g$.WeakMap;if(v$||w$.state){var L$=w$.state||(w$.state=new I$);L$.get=L$.get,L$.has=L$.has,L$.set=L$.set,o$=function(e,t){if(L$.has(e))throw new C$(S$);return t.facade=e,L$.set(e,t),t},l$=function(e){return L$.get(e)||{}},s$=function(e){return L$.has(e)}}else{var P$=k$("state");A$[P$]=!0,o$=function(e,t){if(T$(e,P$))throw new C$(S$);return t.facade=e,x$(e,P$,t),t},l$=function(e){return T$(e,P$)?e[P$]:{}},s$=function(e){return T$(e,P$)}}var E$={set:o$,get:l$,has:s$,enforce:function(e){return s$(e)?l$(e):o$(e,{})},getterFor:function(e){return function(t){var n;if(!b$(t)||(n=l$(t)).type!==e)throw new C$("Incompatible receiver, "+e+" required");return n}}},M$=SU,Z$=sU,O$=FU,R$=FQ,N$=cU,X$=n$.CONFIGURABLE,H$=c$,D$=E$.enforce,W$=E$.get,G$=String,V$=Object.defineProperty,z$=M$("".slice),F$=M$("".replace),Y$=M$([].join),_$=N$&&!Z$((function(){return 8!==V$((function(){}),"length",{value:8}).length})),B$=String(String).split("String"),j$=Uq.exports=function(e,t,n){"Symbol("===z$(G$(t),0,7)&&(t="["+F$(G$(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(t="get "+t),n&&n.setter&&(t="set "+t),(!R$(e,"name")||X$&&e.name!==t)&&(N$?V$(e,"name",{value:t,configurable:!0}):e.name=t),_$&&n&&R$(n,"arity")&&e.length!==n.arity&&V$(e,"length",{value:n.arity});try{n&&R$(n,"constructor")&&n.constructor?N$&&V$(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(a){}var r=D$(e);return R$(r,"source")||(r.source=Y$(B$,"string"==typeof t?t:"")),e};Function.prototype.toString=j$((function(){return O$(this)&&W$(this).source||H$(this)}),"toString");var K$=Uq.exports,J$=FU,U$=Eq,Q$=K$,q$=EQ,$$=function(e,t,n,r){r||(r={});var a=r.enumerable,i=void 0!==r.name?r.name:t;if(J$(n)&&Q$(n,i,r),r.global)a?e[t]=n:q$(t,n);else{try{r.unsafe?e[t]&&(a=!0):delete e[t]}catch(o){}a?e[t]=n:U$.f(e,t,{value:n,enumerable:!1,configurable:!r.nonConfigurable,writable:!r.nonWritable})}return e},e0={},t0=Math.ceil,n0=Math.floor,r0=Math.trunc||function(e){var t=+e;return(t>0?n0:t0)(t)},a0=function(e){var t=+e;return t!=t||0===t?0:r0(t)},i0=a0,o0=Math.max,l0=Math.min,s0=function(e,t){var n=i0(e);return n<0?o0(n+t,0):l0(n,t)},c0=a0,u0=Math.min,d0=function(e){var t=c0(e);return t>0?u0(t,9007199254740991):0},f0=d0,p0=function(e){return f0(e.length)},h0=VU,m0=s0,y0=p0,v0=function(e){return function(t,n,r){var a=h0(t),i=y0(a);if(0===i)return!e&&-1;var o,l=m0(r,i);if(e&&n!=n){for(;i>l;)if((o=a[l++])!=o)return!0}else for(;i>l;l++)if((e||l in a)&&a[l]===n)return e||l||0;return!e&&-1}},g0={includes:v0(!0),indexOf:v0(!1)},b0=FQ,x0=VU,T0=g0.indexOf,w0=y$,k0=SU([].push),A0=function(e,t){var n,r=x0(e),a=0,i=[];for(n in r)!b0(w0,n)&&b0(r,n)&&k0(i,n);for(;t.length>a;)b0(r,n=t[a++])&&(~T0(i,n)||k0(i,n));return i},S0=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],C0=A0,I0=S0.concat("length","prototype");e0.f=Object.getOwnPropertyNames||function(e){return C0(e,I0)};var L0={};L0.f=Object.getOwnPropertySymbols;var P0=KU,E0=e0,M0=L0,Z0=Nq,O0=SU([].concat),R0=P0("Reflect","ownKeys")||function(e){var t=E0.f(Z0(e)),n=M0.f;return n?O0(t,n(e)):t},N0=FQ,X0=R0,H0=lU,D0=Eq,W0=function(e,t,n){for(var r=X0(t),a=D0.f,i=H0.f,o=0;oo;)I1.f(e,n=a[o++],r[n]);return e};var M1,Z1=KU("document","documentElement"),O1=Nq,R1=T1,N1=S0,X1=y$,H1=Z1,D1=gq,W1="prototype",G1="script",V1=m$("IE_PROTO"),z1=function(){},F1=function(e){return"<"+G1+">"+e+""},Y1=function(e){e.write(F1("")),e.close();var t=e.parentWindow.Object;return e=null,t},_1=function(){try{M1=new ActiveXObject("htmlfile")}catch(a){}var e,t,n;_1="undefined"!=typeof document?document.domain&&M1?Y1(M1):(t=D1("iframe"),n="java"+G1+":",t.style.display="none",H1.appendChild(t),t.src=String(n),(e=t.contentWindow.document).open(),e.write(F1("document.F=Object")),e.close(),e.F):Y1(M1);for(var r=N1.length;r--;)delete _1[W1][N1[r]];return _1()};X1[V1]=!0;var B1=Object.create||function(e,t){var n;return null!==e?(z1[W1]=O1(e),n=new z1,z1[W1]=null,n[V1]=e):n=_1(),void 0===t?n:R1.f(n,t)},j1={},K1=SU([].slice),J1=PU,U1=VU,Q1=e0.f,q1=K1,$1="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];j1.f=function(e){return $1&&"Window"===J1(e)?function(e){try{return Q1(e)}catch(t){return q1($1)}}(e):Q1(U1(e))};var e2=K$,t2=Eq,n2=function(e,t,n){return n.get&&e2(n.get,t,{getter:!0}),n.set&&e2(n.set,t,{setter:!0}),t2.f(e,t,n)},r2={},a2=rq;r2.f=a2;var i2=oU,o2=i2,l2=FQ,s2=r2,c2=Eq.f,u2=function(e){var t=o2.Symbol||(o2.Symbol={});l2(t,e)||c2(t,e,{value:s2.f(e)})},d2=pU,f2=KU,p2=rq,h2=$$,m2=Eq.f,y2=FQ,v2=rq("toStringTag"),g2=function(e,t,n){e&&!n&&(e=e.prototype),e&&!y2(e,v2)&&m2(e,v2,{configurable:!0,value:t})},b2=PU,x2=SU,T2=function(e){if("Function"===b2(e))return x2(e)},w2=bQ,k2=uU,A2=T2(T2.bind),S2=function(e,t){return w2(e),void 0===t?e:k2?A2(e,t):function(){return e.apply(t,arguments)}},C2=PU,I2=Array.isArray||function(e){return"Array"===C2(e)},L2=SU,P2=sU,E2=FU,M2=v1,Z2=c$,O2=function(){},R2=KU("Reflect","construct"),N2=/^\s*(?:class|function)\b/,X2=L2(N2.exec),H2=!N2.test(O2),D2=function(e){if(!E2(e))return!1;try{return R2(O2,[],e),!0}catch(t){return!1}},W2=function(e){if(!E2(e))return!1;switch(M2(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return H2||!!X2(N2,Z2(e))}catch(t){return!0}};W2.sham=!0;var G2=!R2||P2((function(){var e;return D2(D2.call)||!D2(Object)||!D2((function(){e=!0}))||e}))?W2:D2,V2=I2,z2=G2,F2=_U,Y2=rq("species"),_2=Array,B2=function(e){var t;return V2(e)&&(t=e.constructor,(z2(t)&&(t===_2||V2(t.prototype))||F2(t)&&null===(t=t[Y2]))&&(t=void 0)),void 0===t?_2:t},j2=function(e,t){return new(B2(e))(0===t?0:t)},K2=S2,J2=RU,U2=GQ,Q2=p0,q2=j2,$2=SU([].push),e3=function(e){var t=1===e,n=2===e,r=3===e,a=4===e,i=6===e,o=7===e,l=5===e||i;return function(s,c,u,d){for(var f,p,h=U2(s),m=J2(h),y=Q2(m),v=K2(c,u),g=0,b=d||q2,x=t?b(s,y):n||o?b(s,0):void 0;y>g;g++)if((l||g in m)&&(p=v(f=m[g],g,h),e))if(t)x[g]=p;else if(p)switch(e){case 3:return!0;case 5:return f;case 6:return g;case 2:$2(x,f)}else switch(e){case 4:return!1;case 7:$2(x,f)}return i?-1:r||a?a:x}},t3={forEach:e3(0),map:e3(1),filter:e3(2),some:e3(3),every:e3(4),find:e3(5),findIndex:e3(6),filterReject:e3(7)},n3=n1,r3=oU,a3=pU,i3=SU,o3=cU,l3=lQ,s3=sU,c3=FQ,u3=JU,d3=Nq,f3=VU,p3=hq,h3=x1,m3=xU,y3=B1,v3=A1,g3=e0,b3=j1,x3=L0,T3=lU,w3=Eq,k3=T1,A3=hU,S3=$$,C3=n2,I3=HQ,L3=y$,P3=KQ,E3=rq,M3=r2,Z3=u2,O3=function(){var e=f2("Symbol"),t=e&&e.prototype,n=t&&t.valueOf,r=p2("toPrimitive");t&&!t[r]&&h2(t,r,(function(e){return d2(n,this)}),{arity:1})},R3=g2,N3=E$,X3=t3.forEach,H3=m$("hidden"),D3="Symbol",W3="prototype",G3=N3.set,V3=N3.getterFor(D3),z3=Object[W3],F3=r3.Symbol,Y3=F3&&F3[W3],_3=r3.RangeError,B3=r3.TypeError,j3=r3.QObject,K3=T3.f,J3=w3.f,U3=b3.f,Q3=A3.f,q3=i3([].push),$3=I3("symbols"),e5=I3("op-symbols"),t5=I3("wks"),n5=!j3||!j3[W3]||!j3[W3].findChild,r5=function(e,t,n){var r=K3(z3,t);r&&delete z3[t],J3(e,t,n),r&&e!==z3&&J3(z3,t,r)},a5=o3&&s3((function(){return 7!==y3(J3({},"a",{get:function(){return J3(this,"a",{value:7}).a}})).a}))?r5:J3,i5=function(e,t){var n=$3[e]=y3(Y3);return G3(n,{type:D3,tag:e,description:t}),o3||(n.description=t),n},o5=function(e,t,n){e===z3&&o5(e5,t,n),d3(e);var r=p3(t);return d3(n),c3($3,r)?(n.enumerable?(c3(e,H3)&&e[H3][r]&&(e[H3][r]=!1),n=y3(n,{enumerable:m3(0,!1)})):(c3(e,H3)||J3(e,H3,m3(1,y3(null))),e[H3][r]=!0),a5(e,r,n)):J3(e,r,n)},l5=function(e,t){d3(e);var n=f3(t),r=v3(n).concat(d5(n));return X3(r,(function(t){o3&&!a3(s5,n,t)||o5(e,t,n[t])})),e},s5=function(e){var t=p3(e),n=a3(Q3,this,t);return!(this===z3&&c3($3,t)&&!c3(e5,t))&&(!(n||!c3(this,t)||!c3($3,t)||c3(this,H3)&&this[H3][t])||n)},c5=function(e,t){var n=f3(e),r=p3(t);if(n!==z3||!c3($3,r)||c3(e5,r)){var a=K3(n,r);return!a||!c3($3,r)||c3(n,H3)&&n[H3][r]||(a.enumerable=!0),a}},u5=function(e){var t=U3(f3(e)),n=[];return X3(t,(function(e){c3($3,e)||c3(L3,e)||q3(n,e)})),n},d5=function(e){var t=e===z3,n=U3(t?e5:f3(e)),r=[];return X3(n,(function(e){!c3($3,e)||t&&!c3(z3,e)||q3(r,$3[e])})),r};l3||(F3=function(){if(u3(Y3,this))throw new B3("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?h3(arguments[0]):void 0,t=P3(e),n=function(e){var r=void 0===this?r3:this;r===z3&&a3(n,e5,e),c3(r,H3)&&c3(r[H3],t)&&(r[H3][t]=!1);var a=m3(1,e);try{a5(r,t,a)}catch(i){if(!(i instanceof _3))throw i;r5(r,t,a)}};return o3&&n5&&a5(z3,t,{configurable:!0,set:n}),i5(t,e)},S3(Y3=F3[W3],"toString",(function(){return V3(this).tag})),S3(F3,"withoutSetter",(function(e){return i5(P3(e),e)})),A3.f=s5,w3.f=o5,k3.f=l5,T3.f=c5,g3.f=b3.f=u5,x3.f=d5,M3.f=function(e){return i5(E3(e),e)},o3&&(C3(Y3,"description",{configurable:!0,get:function(){return V3(this).description}}),S3(z3,"propertyIsEnumerable",s5,{unsafe:!0}))),n3({global:!0,constructor:!0,wrap:!0,forced:!l3,sham:!l3},{Symbol:F3}),X3(v3(t5),(function(e){Z3(e)})),n3({target:D3,stat:!0,forced:!l3},{useSetter:function(){n5=!0},useSimple:function(){n5=!1}}),n3({target:"Object",stat:!0,forced:!l3,sham:!o3},{create:function(e,t){return void 0===t?y3(e):l5(y3(e),t)},defineProperty:o5,defineProperties:l5,getOwnPropertyDescriptor:c5}),n3({target:"Object",stat:!0,forced:!l3},{getOwnPropertyNames:u5}),O3(),R3(F3,D3),L3[H3]=!0;var f5=lQ&&!!Symbol.for&&!!Symbol.keyFor,p5=n1,h5=KU,m5=FQ,y5=x1,v5=HQ,g5=f5,b5=v5("string-to-symbol-registry"),x5=v5("symbol-to-string-registry");p5({target:"Symbol",stat:!0,forced:!g5},{for:function(e){var t=y5(e);if(m5(b5,t))return b5[t];var n=h5("Symbol")(t);return b5[t]=n,x5[n]=t,n}});var T5=n1,w5=FQ,k5=pQ,A5=mQ,S5=f5,C5=HQ("symbol-to-string-registry");T5({target:"Symbol",stat:!0,forced:!S5},{keyFor:function(e){if(!k5(e))throw new TypeError(A5(e)+" is not a symbol");if(w5(C5,e))return C5[e]}});var I5=uU,L5=Function.prototype,P5=L5.apply,E5=L5.call,M5="object"==typeof Reflect&&Reflect.apply||(I5?E5.bind(P5):function(){return E5.apply(P5,arguments)}),Z5=I2,O5=FU,R5=PU,N5=x1,X5=SU([].push),H5=n1,D5=KU,W5=M5,G5=pU,V5=SU,z5=sU,F5=FU,Y5=pQ,_5=K1,B5=function(e){if(O5(e))return e;if(Z5(e)){for(var t=e.length,n=[],r=0;r=51||!R9((function(){var t=[];return(t.constructor={})[X9]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},D9=n1,W9=sU,G9=I2,V9=_U,z9=GQ,F9=p0,Y9=function(e){if(e>9007199254740991)throw P9("Maximum allowed index exceeded");return e},_9=O9,B9=j2,j9=H9,K9=rQ,J9=rq("isConcatSpreadable"),U9=K9>=51||!W9((function(){var e=[];return e[J9]=!1,e.concat()[0]!==e})),Q9=function(e){if(!V9(e))return!1;var t=e[J9];return void 0!==t?!!t:G9(e)};D9({target:"Array",proto:!0,arity:1,forced:!U9||!j9("concat")},{concat:function(e){var t,n,r,a,i,o=z9(this),l=B9(o,0),s=0;for(t=-1,r=arguments.length;t1?arguments[1]:void 0)}});var $9=sU,e4=function(e,t){var n=[][e];return!!n&&$9((function(){n.call(null,t||function(){return 1},1)}))},t4=t3.forEach,n4=e4("forEach")?[].forEach:function(e){return t4(this,e,arguments.length>1?arguments[1]:void 0)};n1({target:"Array",proto:!0,forced:[].forEach!==n4},{forEach:n4});var r4=pU,a4=Nq,i4=wQ,o4=function(e,t,n){var r,a;a4(e);try{if(!(r=i4(e,"return"))){if("throw"===t)throw n;return n}r=r4(r,e)}catch(i){a=!0,r=i}if("throw"===t)throw n;if(a)throw r;return a4(r),n},l4=Nq,s4=o4,c4={},u4=c4,d4=rq("iterator"),f4=Array.prototype,p4=function(e){return void 0!==e&&(u4.Array===e||f4[d4]===e)},h4=v1,m4=wQ,y4=NU,v4=c4,g4=rq("iterator"),b4=function(e){if(!y4(e))return m4(e,g4)||m4(e,"@@iterator")||v4[h4(e)]},x4=pU,T4=bQ,w4=Nq,k4=mQ,A4=b4,S4=TypeError,C4=function(e,t){var n=arguments.length<2?A4(e):t;if(T4(n))return w4(x4(n,e));throw new S4(k4(e)+" is not iterable")},I4=S2,L4=pU,P4=GQ,E4=function(e,t,n,r){try{return r?t(l4(n)[0],n[1]):t(n)}catch(a){s4(e,"throw",a)}},M4=p4,Z4=G2,O4=p0,R4=O9,N4=C4,X4=b4,H4=Array,D4=rq("iterator"),W4=!1;try{var G4=0,V4={next:function(){return{done:!!G4++}},return:function(){W4=!0}};V4[D4]=function(){return this},Array.from(V4,(function(){throw 2}))}catch(gwe){}var z4=function(e,t){try{if(!t&&!W4)return!1}catch(gwe){return!1}var n=!1;try{var r={};r[D4]=function(){return{next:function(){return{done:n=!0}}}},e(r)}catch(gwe){}return n},F4=function(e){var t=P4(e),n=Z4(this),r=arguments.length,a=r>1?arguments[1]:void 0,i=void 0!==a;i&&(a=I4(a,r>2?arguments[2]:void 0));var o,l,s,c,u,d,f=X4(t),p=0;if(!f||this===H4&&M4(f))for(o=O4(t),l=n?new this(o):H4(o);o>p;p++)d=i?a(t[p],p):t[p],R4(l,p,d);else for(l=n?new this:[],u=(c=N4(t,f)).next;!(s=L4(u,c)).done;p++)d=i?E4(c,a,[s.value,p],!0):s.value,R4(l,p,d);return l.length=p,l};n1({target:"Array",stat:!0,forced:!z4((function(e){Array.from(e)}))},{from:F4});var Y4=rq,_4=B1,B4=Eq.f,j4=Y4("unscopables"),K4=Array.prototype;void 0===K4[j4]&&B4(K4,j4,{configurable:!0,value:_4(null)});var J4=function(e){K4[j4][e]=!0},U4=g0.includes,Q4=J4;n1({target:"Array",proto:!0,forced:sU((function(){return!Array(1).includes()}))},{includes:function(e){return U4(this,e,arguments.length>1?arguments[1]:void 0)}}),Q4("includes");var q4,$4,e8,t8=!sU((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),n8=FQ,r8=FU,a8=GQ,i8=t8,o8=m$("IE_PROTO"),l8=Object,s8=l8.prototype,c8=i8?l8.getPrototypeOf:function(e){var t=a8(e);if(n8(t,o8))return t[o8];var n=t.constructor;return r8(n)&&t instanceof n?n.prototype:t instanceof l8?s8:null},u8=sU,d8=FU,f8=_U,p8=c8,h8=$$,m8=rq("iterator"),y8=!1;[].keys&&("next"in(e8=[].keys())?($4=p8(p8(e8)))!==Object.prototype&&(q4=$4):y8=!0),(!f8(q4)||u8((function(){var e={};return q4[m8].call(e)!==e})))&&(q4={}),d8(q4[m8])||h8(q4,m8,(function(){return this}));var v8={IteratorPrototype:q4,BUGGY_SAFARI_ITERATORS:y8},g8=v8.IteratorPrototype,b8=B1,x8=xU,T8=g2,w8=c4,k8=function(){return this},A8=SU,S8=bQ,C8=function(e,t,n){try{return A8(S8(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(gwe){}},I8=_U,L8=function(e){return I8(e)||null===e},P8=String,E8=TypeError,M8=C8,Z8=_U,O8=DU,R8=function(e){if(L8(e))return e;throw new E8("Can't set "+P8(e)+" as a prototype")},N8=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=M8(Object.prototype,"__proto__","set"))(n,[]),t=n instanceof Array}catch(gwe){}return function(n,r){return O8(n),R8(r),Z8(n)?(t?e(n,r):n.__proto__=r,n):n}}():void 0),X8=n1,H8=pU,D8=FU,W8=function(e,t,n,r){var a=t+" Iterator";return e.prototype=b8(g8,{next:x8(+!r,n)}),T8(e,a,!1),w8[a]=k8,e},G8=c8,V8=N8,z8=g2,F8=Jq,Y8=$$,_8=c4,B8=n$.PROPER,j8=n$.CONFIGURABLE,K8=v8.IteratorPrototype,J8=v8.BUGGY_SAFARI_ITERATORS,U8=rq("iterator"),Q8="keys",q8="values",$8="entries",e6=function(){return this},t6=function(e,t,n,r,a,i,o){W8(n,t,r);var l,s,c,u=function(e){if(e===a&&m)return m;if(!J8&&e&&e in p)return p[e];switch(e){case Q8:case q8:case $8:return function(){return new n(this,e)}}return function(){return new n(this)}},d=t+" Iterator",f=!1,p=e.prototype,h=p[U8]||p["@@iterator"]||a&&p[a],m=!J8&&h||u(a),y="Array"===t&&p.entries||h;if(y&&(l=G8(y.call(new e)))!==Object.prototype&&l.next&&(G8(l)!==K8&&(V8?V8(l,K8):D8(l[U8])||Y8(l,U8,e6)),z8(l,d,!0)),B8&&a===q8&&h&&h.name!==q8&&(j8?F8(p,"name",q8):(f=!0,m=function(){return H8(h,this)})),a)if(s={values:u(q8),keys:i?m:u(Q8),entries:u($8)},o)for(c in s)(J8||f||!(c in p))&&Y8(p,c,s[c]);else X8({target:t,proto:!0,forced:J8||f},s);return p[U8]!==m&&Y8(p,U8,m,{name:a}),_8[t]=m,s},n6=function(e,t){return{value:e,done:t}},r6=VU,a6=J4,i6=c4,o6=E$,l6=Eq.f,s6=t6,c6=n6,u6=cU,d6="Array Iterator",f6=o6.set,p6=o6.getterFor(d6),h6=s6(Array,"Array",(function(e,t){f6(this,{type:d6,target:r6(e),index:0,kind:t})}),(function(){var e=p6(this),t=e.target,n=e.index++;if(!t||n>=t.length)return e.target=void 0,c6(void 0,!0);switch(e.kind){case"keys":return c6(n,!1);case"values":return c6(t[n],!1)}return c6([n,t[n]],!1)}),"values"),m6=i6.Arguments=i6.Array;if(a6("keys"),a6("values"),a6("entries"),u6&&"values"!==m6.name)try{l6(m6,"name",{value:"values"})}catch(gwe){}var y6=n1,v6=RU,g6=VU,b6=e4,x6=SU([].join);y6({target:"Array",proto:!0,forced:v6!==Object||!b6("join",",")},{join:function(e){return x6(g6(this),void 0===e?",":e)}});var T6=t3.map;n1({target:"Array",proto:!0,forced:!H9("map")},{map:function(e){return T6(this,e,arguments.length>1?arguments[1]:void 0)}});var w6=bQ,k6=GQ,A6=RU,S6=p0,C6=TypeError,I6="Reduce of empty array with no initial value",L6=function(e){return function(t,n,r,a){var i=k6(t),o=A6(i),l=S6(i);if(w6(n),0===l&&r<2)throw new C6(I6);var s=e?l-1:0,c=e?-1:1;if(r<2)for(;;){if(s in o){a=o[s],s+=c;break}if(s+=c,e?s<0:l<=s)throw new C6(I6)}for(;e?s>=0:l>s;s+=c)s in o&&(a=n(a,o[s],s,i));return a}},P6={left:L6(!1),right:L6(!0)},E6="process"===PU(oU.process),M6=P6.left;n1({target:"Array",proto:!0,forced:!E6&&rQ>79&&rQ<83||!e4("reduce")},{reduce:function(e){var t=arguments.length;return M6(this,e,t,t>1?arguments[1]:void 0)}});var Z6=P6.right;n1({target:"Array",proto:!0,forced:!E6&&rQ>79&&rQ<83||!e4("reduceRight")},{reduceRight:function(e){return Z6(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}});var O6=n1,R6=I2,N6=G2,X6=_U,H6=s0,D6=p0,W6=VU,G6=O9,V6=rq,z6=K1,F6=H9("slice"),Y6=V6("species"),_6=Array,B6=Math.max;O6({target:"Array",proto:!0,forced:!F6},{slice:function(e,t){var n,r,a,i=W6(this),o=D6(i),l=H6(e,o),s=H6(void 0===t?o:t,o);if(R6(i)&&(n=i.constructor,(N6(n)&&(n===_6||R6(n.prototype))||X6(n)&&null===(n=n[Y6]))&&(n=void 0),n===_6||void 0===n))return z6(i,l,s);for(r=new(void 0===n?_6:n)(B6(s-l,0)),a=0;l0;)e[a]=e[--a];a!==i++&&(e[a]=r)}else for(var o=U6(n/2),l=Q6(J6(e,0,o),t),s=Q6(J6(e,o),t),c=l.length,u=s.length,d=0,f=0;d3)){if(m7)return!0;if(v7)return v7<603;var e,t,n,r,a="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(r=0;r<47;r++)g7.push({k:t+r,v:n})}for(g7.sort((function(e,t){return t.v-e.v})),r=0;ru7(n)?1:-1}}(e)),n=s7(a),r=0;ra;)for(var l,s=U7(arguments[a++]),c=i?$7(B7(s),i(s)):B7(s),u=c.length,d=0;u>d;)l=c[d++],z7&&!Y7(o,s,l)||(n[l]=s[l]);return n}:Q7,tee=eee;n1({target:"Object",stat:!0,arity:2,forced:Object.assign!==tee},{assign:tee});var nee=cU,ree=sU,aee=SU,iee=c8,oee=A1,lee=VU,see=aee(hU.f),cee=aee([].push),uee=nee&&ree((function(){var e=Object.create(null);return e[2]=2,!see(e,2)})),dee=function(e){return function(t){for(var n,r=lee(t),a=oee(r),i=uee&&null===iee(r),o=a.length,l=0,s=[];o>l;)n=a[l++],nee&&!(i?n in r:see(r,n))||cee(s,e?[n,r[n]]:r[n]);return s}},fee={entries:dee(!0),values:dee(!1)},pee=fee.entries;n1({target:"Object",stat:!0},{entries:function(e){return pee(e)}}),n1({target:"Object",stat:!0},{is:Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}});var hee=GQ,mee=A1;n1({target:"Object",stat:!0,forced:sU((function(){mee(1)}))},{keys:function(e){return mee(hee(e))}});var yee=v1,vee=u1?{}.toString:function(){return"[object "+yee(this)+"]"};u1||$$(Object.prototype,"toString",vee,{unsafe:!0});var gee=fee.values;n1({target:"Object",stat:!0},{values:function(e){return gee(e)}});var bee,xee,Tee=Nq,wee=function(){var e=Tee(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t},kee=sU,Aee=oU.RegExp,See=kee((function(){var e=Aee("a","y");return e.lastIndex=2,null!==e.exec("abcd")})),Cee=See||kee((function(){return!Aee("a","y").sticky})),Iee={BROKEN_CARET:See||kee((function(){var e=Aee("^r","gy");return e.lastIndex=2,null!==e.exec("str")})),MISSED_STICKY:Cee,UNSUPPORTED_Y:See},Lee=sU,Pee=oU.RegExp,Eee=Lee((function(){var e=Pee(".","s");return!(e.dotAll&&e.test("\n")&&"s"===e.flags)})),Mee=sU,Zee=oU.RegExp,Oee=Mee((function(){var e=Zee("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")})),Ree=pU,Nee=SU,Xee=x1,Hee=wee,Dee=Iee,Wee=B1,Gee=E$.get,Vee=Eee,zee=Oee,Fee=HQ("native-string-replace",String.prototype.replace),Yee=RegExp.prototype.exec,_ee=Yee,Bee=Nee("".charAt),jee=Nee("".indexOf),Kee=Nee("".replace),Jee=Nee("".slice),Uee=(xee=/b*/g,Ree(Yee,bee=/a/,"a"),Ree(Yee,xee,"a"),0!==bee.lastIndex||0!==xee.lastIndex),Qee=Dee.BROKEN_CARET,qee=void 0!==/()??/.exec("")[1];(Uee||qee||Qee||Vee||zee)&&(_ee=function(e){var t,n,r,a,i,o,l,s=this,c=Gee(s),u=Xee(e),d=c.raw;if(d)return d.lastIndex=s.lastIndex,t=Ree(_ee,d,u),s.lastIndex=d.lastIndex,t;var f=c.groups,p=Qee&&s.sticky,h=Ree(Hee,s),m=s.source,y=0,v=u;if(p&&(h=Kee(h,"y",""),-1===jee(h,"g")&&(h+="g"),v=Jee(u,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==Bee(u,s.lastIndex-1))&&(m="(?: "+m+")",v=" "+v,y++),n=new RegExp("^(?:"+m+")",h)),qee&&(n=new RegExp("^"+m+"$(?!\\s)",h)),Uee&&(r=s.lastIndex),a=Ree(Yee,p?n:s,v),p?a?(a.input=Jee(a.input,y),a[0]=Jee(a[0],y),a.index=s.lastIndex,s.lastIndex+=a[0].length):s.lastIndex=0:Uee&&a&&(s.lastIndex=s.global?a.index+a[0].length:r),qee&&a&&a.length>1&&Ree(Fee,a[0],n,(function(){for(i=1;ii;i++)if((l=v(e[i]))&&Kte(ene,l))return l;return new $te(!1)}r=Jte(e,a)}for(s=f?e.next:r.next;!(c=Fte(s,r)).done;){try{l=v(c.value)}catch(gwe){Qte(r,"throw",gwe)}if("object"==typeof l&&l&&Kte(ene,l))return l}return new $te(!1)},nne=JU,rne=TypeError,ane=function(e,t){if(nne(t,e))return e;throw new rne("Incorrect invocation")},ine=FU,one=_U,lne=N8,sne=function(e,t,n){var r,a;return lne&&ine(r=t.constructor)&&r!==n&&one(a=r.prototype)&&a!==n.prototype&&lne(e,a),e},cne=n1,une=oU,dne=SU,fne=K0,pne=$$,hne=Vte,mne=tne,yne=ane,vne=FU,gne=NU,bne=_U,xne=sU,Tne=z4,wne=g2,kne=sne,Ane=function(e,t,n){var r=-1!==e.indexOf("Map"),a=-1!==e.indexOf("Weak"),i=r?"set":"add",o=une[e],l=o&&o.prototype,s=o,c={},u=function(e){var t=dne(l[e]);pne(l,e,"add"===e?function(e){return t(this,0===e?0:e),this}:"delete"===e?function(e){return!(a&&!bne(e))&&t(this,0===e?0:e)}:"get"===e?function(e){return a&&!bne(e)?void 0:t(this,0===e?0:e)}:"has"===e?function(e){return!(a&&!bne(e))&&t(this,0===e?0:e)}:function(e,n){return t(this,0===e?0:e,n),this})};if(fne(e,!vne(o)||!(a||l.forEach&&!xne((function(){(new o).entries().next()})))))s=n.getConstructor(t,e,r,i),hne.enable();else if(fne(e,!0)){var d=new s,f=d[i](a?{}:-0,1)!==d,p=xne((function(){d.has(1)})),h=Tne((function(e){new o(e)})),m=!a&&xne((function(){for(var e=new o,t=5;t--;)e[i](t,t);return!e.has(-0)}));h||((s=t((function(e,t){yne(e,l);var n=kne(new o,e,s);return gne(t)||mne(t,n[i],{that:n,AS_ENTRIES:r}),n}))).prototype=l,l.constructor=s),(p||m)&&(u("delete"),u("has"),r&&u("get")),(m||f)&&u(i),a&&l.clear&&delete l.clear}return c[e]=s,cne({global:!0,constructor:!0,forced:s!==o},c),wne(s,e),a||n.setStrong(s,e,r),s},Sne=$$,Cne=KU,Ine=n2,Lne=cU,Pne=rq("species"),Ene=function(e){var t=Cne(e);Lne&&t&&!t[Pne]&&Ine(t,Pne,{configurable:!0,get:function(){return this}})},Mne=B1,Zne=n2,One=function(e,t,n){for(var r in t)Sne(e,r,t[r],n);return e},Rne=S2,Nne=ane,Xne=NU,Hne=tne,Dne=t6,Wne=n6,Gne=Ene,Vne=cU,zne=Vte.fastKey,Fne=E$.set,Yne=E$.getterFor,_ne={getConstructor:function(e,t,n,r){var a=e((function(e,a){Nne(e,i),Fne(e,{type:t,index:Mne(null),first:void 0,last:void 0,size:0}),Vne||(e.size=0),Xne(a)||Hne(a,e[r],{that:e,AS_ENTRIES:n})})),i=a.prototype,o=Yne(t),l=function(e,t,n){var r,a,i=o(e),l=s(e,t);return l?l.value=n:(i.last=l={index:a=zne(t,!0),key:t,value:n,previous:r=i.last,next:void 0,removed:!1},i.first||(i.first=l),r&&(r.next=l),Vne?i.size++:e.size++,"F"!==a&&(i.index[a]=l)),e},s=function(e,t){var n,r=o(e),a=zne(t);if("F"!==a)return r.index[a];for(n=r.first;n;n=n.next)if(n.key===t)return n};return One(i,{clear:function(){for(var e=o(this),t=e.first;t;)t.removed=!0,t.previous&&(t.previous=t.previous.next=void 0),t=t.next;e.first=e.last=void 0,e.index=Mne(null),Vne?e.size=0:this.size=0},delete:function(e){var t=this,n=o(t),r=s(t,e);if(r){var a=r.next,i=r.previous;delete n.index[r.index],r.removed=!0,i&&(i.next=a),a&&(a.previous=i),n.first===r&&(n.first=a),n.last===r&&(n.last=i),Vne?n.size--:t.size--}return!!r},forEach:function(e){for(var t,n=o(this),r=Rne(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!s(this,e)}}),One(i,n?{get:function(e){var t=s(this,e);return t&&t.value},set:function(e,t){return l(this,0===e?0:e,t)}}:{add:function(e){return l(this,e=0===e?0:e,e)}}),Vne&&Zne(i,"size",{configurable:!0,get:function(){return o(this).size}}),a},setStrong:function(e,t,n){var r=t+" Iterator",a=Yne(t),i=Yne(r);Dne(e,t,(function(e,t){Fne(this,{type:r,target:e,state:a(e),kind:t,last:void 0})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?Wne("keys"===t?n.key:"values"===t?n.value:[n.key,n.value],!1):(e.target=void 0,Wne(void 0,!0))}),n?"entries":"values",!n,!0),Gne(t)}};Ane("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),_ne);var Bne=_U,jne=PU,Kne=rq("match"),Jne=function(e){var t;return Bne(e)&&(void 0!==(t=e[Kne])?!!t:"RegExp"===jne(e))},Une=Jne,Qne=TypeError,qne=rq("match"),$ne=n1,ere=function(e){if(Une(e))throw new Qne("The method doesn't accept regular expressions");return e},tre=DU,nre=x1,rre=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[qne]=!1,"/./"[e](t)}catch(r){}}return!1},are=SU("".indexOf);$ne({target:"String",proto:!0,forced:!rre("includes")},{includes:function(e){return!!~are(nre(tre(this)),nre(ere(e)),arguments.length>1?arguments[1]:void 0)}});var ire=SU,ore=a0,lre=x1,sre=DU,cre=ire("".charAt),ure=ire("".charCodeAt),dre=ire("".slice),fre=function(e){return function(t,n){var r,a,i=lre(sre(t)),o=ore(n),l=i.length;return o<0||o>=l?e?"":void 0:(r=ure(i,o))<55296||r>56319||o+1===l||(a=ure(i,o+1))<56320||a>57343?e?cre(i,o):r:e?dre(i,o,o+2):a-56320+(r-55296<<10)+65536}},pre={codeAt:fre(!1),charAt:fre(!0)},hre=pre.charAt,mre=x1,yre=E$,vre=t6,gre=n6,bre="String Iterator",xre=yre.set,Tre=yre.getterFor(bre);vre(String,"String",(function(e){xre(this,{type:bre,string:mre(e),index:0})}),(function(){var e,t=Tre(this),n=t.string,r=t.index;return r>=n.length?gre(void 0,!0):(e=hre(n,r),t.index+=e.length,gre(e,!1))}));var wre=pU,kre=$$,Are=$ee,Sre=sU,Cre=rq,Ire=Jq,Lre=Cre("species"),Pre=RegExp.prototype,Ere=function(e,t,n,r){var a=Cre(e),i=!Sre((function(){var t={};return t[a]=function(){return 7},7!==""[e](t)})),o=i&&!Sre((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Lre]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!i||!o||n){var l=/./[a],s=t(a,""[e],(function(e,t,n,r,a){var o=t.exec;return o===Are||o===Pre.exec?i&&!a?{done:!0,value:wre(l,t,n,r)}:{done:!0,value:wre(e,n,t,r)}:{done:!1}}));kre(String.prototype,e,s[0]),kre(Pre,a,s[1])}r&&Ire(Pre[a],"sham",!0)},Mre=pre.charAt,Zre=function(e,t,n){return t+(n?Mre(e,t).length:1)},Ore=SU,Rre=GQ,Nre=Math.floor,Xre=Ore("".charAt),Hre=Ore("".replace),Dre=Ore("".slice),Wre=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Gre=/\$([$&'`]|\d{1,2})/g,Vre=pU,zre=Nq,Fre=FU,Yre=PU,_re=$ee,Bre=TypeError,jre=function(e,t){var n=e.exec;if(Fre(n)){var r=Vre(n,e,t);return null!==r&&zre(r),r}if("RegExp"===Yre(e))return Vre(_re,e,t);throw new Bre("RegExp#exec called on incompatible receiver")},Kre=M5,Jre=pU,Ure=SU,Qre=Ere,qre=sU,$re=Nq,eae=FU,tae=NU,nae=a0,rae=d0,aae=x1,iae=DU,oae=Zre,lae=wQ,sae=function(e,t,n,r,a,i){var o=n+e.length,l=r.length,s=Gre;return void 0!==a&&(a=Rre(a),s=Wre),Hre(i,s,(function(i,s){var c;switch(Xre(s,0)){case"$":return"$";case"&":return e;case"`":return Dre(t,0,n);case"'":return Dre(t,o);case"<":c=a[Dre(s,1,-1)];break;default:var u=+s;if(0===u)return i;if(u>l){var d=Nre(u/10);return 0===d?i:d<=l?void 0===r[d-1]?Xre(s,1):r[d-1]+Xre(s,1):i}c=r[u-1]}return void 0===c?"":c}))},cae=jre,uae=rq("replace"),dae=Math.max,fae=Math.min,pae=Ure([].concat),hae=Ure([].push),mae=Ure("".indexOf),yae=Ure("".slice),vae="$0"==="a".replace(/./,"$0"),gae=!!/./[uae]&&""===/./[uae]("a","$0");Qre("replace",(function(e,t,n){var r=gae?"$":"$0";return[function(e,n){var r=iae(this),a=tae(e)?void 0:lae(e,uae);return a?Jre(a,e,r,n):Jre(t,aae(r),e,n)},function(e,a){var i=$re(this),o=aae(e);if("string"==typeof a&&-1===mae(a,r)&&-1===mae(a,"$<")){var l=n(t,i,o,a);if(l.done)return l.value}var s=eae(a);s||(a=aae(a));var c,u=i.global;u&&(c=i.unicode,i.lastIndex=0);for(var d,f=[];null!==(d=cae(i,o))&&(hae(f,d),u);)""===aae(d[0])&&(i.lastIndex=oae(o,rae(i.lastIndex),c));for(var p,h="",m=0,y=0;y=m&&(h+=yae(o,m,b)+v,m=b+g.length)}return h+yae(o,m)}]}),!!qre((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!vae||gae);var bae=SU,xae=Set.prototype,Tae={Set:Set,add:bae(xae.add),has:bae(xae.has),remove:bae(xae.delete),proto:xae},wae=Tae.has,kae=function(e){return wae(e),e},Aae=kae,Sae=Tae.add;n1({target:"Set",proto:!0,real:!0,forced:!0},{addAll:function(){for(var e=Aae(this),t=0,n=arguments.length;t1?arguments[1]:void 0);return!1!==Aie(t,(function(e){if(!n(e,e,t))return!1}),!0)}});var Sie=S2,Cie=kae,Iie=Kae,Lie=Tae.Set,Pie=Tae.add;n1({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(e){var t=Cie(this),n=Sie(e,arguments.length>1?arguments[1]:void 0),r=new Lie;return Iie(t,(function(e){n(e,e,t)&&Pie(r,e)})),r}});var Eie=S2,Mie=kae,Zie=Kae;n1({target:"Set",proto:!0,real:!0,forced:!0},{find:function(e){var t=Mie(this),n=Eie(e,arguments.length>1?arguments[1]:void 0),r=Zie(t,(function(e){if(n(e,e,t))return{value:e}}),!0);return r&&r.value}});var Oie=kae,Rie=$ae,Nie=uie,Xie=Kae,Hie=Gae,Die=Tae.Set,Wie=Tae.add,Gie=Tae.has,Vie=pU,zie=Dae,Fie=function(e){var t=Oie(this),n=Nie(e),r=new Die;return Rie(t)>n.size?Hie(n.getIterator(),(function(e){Gie(t,e)&&Wie(r,e)})):Xie(t,(function(e){n.includes(e)&&Wie(r,e)})),r};n1({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(e){return Vie(Fie,this,zie(e))}});var Yie=kae,_ie=Tae.has,Bie=$ae,jie=uie,Kie=Kae,Jie=Gae,Uie=o4,Qie=pU,qie=Dae,$ie=function(e){var t=Yie(this),n=jie(e);if(Bie(t)<=n.size)return!1!==Kie(t,(function(e){if(n.includes(e))return!1}),!0);var r=n.getIterator();return!1!==Jie(r,(function(e){if(_ie(t,e))return Uie(r,"normal",!1)}))};n1({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(e){return Qie($ie,this,qie(e))}});var eoe=kae,toe=$ae,noe=Kae,roe=uie,aoe=pU,ioe=Dae,ooe=function(e){var t=eoe(this),n=roe(e);return!(toe(t)>n.size)&&!1!==noe(t,(function(e){if(!n.includes(e))return!1}),!0)};n1({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(e){return aoe(ooe,this,ioe(e))}});var loe=kae,soe=Tae.has,coe=$ae,uoe=uie,doe=Gae,foe=o4,poe=pU,hoe=Dae,moe=function(e){var t=loe(this),n=uoe(e);if(coe(t)1?arguments[1]:void 0),r=new Coe;return Soe(t,(function(e){Ioe(r,n(e,e,t))})),r}});var Loe=bQ,Poe=kae,Eoe=Kae,Moe=TypeError;n1({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(e){var t=Poe(this),n=arguments.length<2,r=n?void 0:arguments[1];if(Loe(e),Eoe(t,(function(a){n?(n=!1,r=a):r=e(r,a,a,t)})),n)throw new Moe("Reduce of empty set with no initial value");return r}});var Zoe=S2,Ooe=kae,Roe=Kae;n1({target:"Set",proto:!0,real:!0,forced:!0},{some:function(e){var t=Ooe(this),n=Zoe(e,arguments.length>1?arguments[1]:void 0);return!0===Roe(t,(function(e){if(n(e,e,t))return!0}),!0)}});var Noe=kae,Xoe=qae,Hoe=uie,Doe=Gae,Woe=Tae.add,Goe=Tae.has,Voe=Tae.remove,zoe=pU,Foe=Dae,Yoe=function(e){var t=Noe(this),n=Hoe(e).getIterator(),r=Xoe(t);return Doe(n,(function(e){Goe(t,e)?Voe(r,e):Woe(r,e)})),r};n1({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(e){return zoe(Yoe,this,Foe(e))}});var _oe=kae,Boe=Tae.add,joe=qae,Koe=uie,Joe=Gae,Uoe=pU,Qoe=Dae,qoe=function(e){var t=_oe(this),n=Koe(e).getIterator(),r=joe(t);return Joe(n,(function(e){Boe(r,e)})),r};n1({target:"Set",proto:!0,real:!0,forced:!0},{union:function(e){return Uoe(qoe,this,Qoe(e))}});var $oe={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ele=gq("span").classList,tle=ele&&ele.constructor&&ele.constructor.prototype,nle=tle===Object.prototype?void 0:tle,rle=oU,ale=$oe,ile=nle,ole=n4,lle=Jq,sle=function(e){if(e&&e.forEach!==ole)try{lle(e,"forEach",ole)}catch(gwe){e.forEach=ole}};for(var cle in ale)ale[cle]&&sle(rle[cle]&&rle[cle].prototype);sle(ile);var ule=oU,dle=$oe,fle=nle,ple=h6,hle=Jq,mle=g2,yle=rq("iterator"),vle=ple.values,gle=function(e,t){if(e){if(e[yle]!==vle)try{hle(e,yle,vle)}catch(gwe){e[yle]=vle}if(mle(e,t,!0),dle[t])for(var n in ple)if(e[n]!==ple[n])try{hle(e,n,ple[n])}catch(gwe){e[n]=ple[n]}}};for(var ble in dle)gle(ule[ble]&&ule[ble].prototype,ble);gle(fle,"DOMTokenList");var xle=pU;n1({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return xle(URL.prototype.toString,this)}}),function(e){var t=function(e){var t,n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",l=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(O){c=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof v?t:v,o=Object.create(i.prototype),l=new E(r||[]);return a(o,"_invoke",{value:C(e,n,l)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(O){return{type:"throw",arg:O}}}e.wrap=u;var f="suspendedStart",p="suspendedYield",h="executing",m="completed",y={};function v(){}function g(){}function b(){}var x={};c(x,o,(function(){return this}));var T=Object.getPrototypeOf,w=T&&T(T(M([])));w&&w!==n&&r.call(w,o)&&(x=w);var k=b.prototype=v.prototype=Object.create(x);function A(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function n(a,i,o,l){var s=d(e[a],e,i);if("throw"!==s.type){var c=s.arg,u=c.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,l)}),(function(e){n("throw",e,o,l)})):t.resolve(u).then((function(e){c.value=e,o(c)}),(function(e){return n("throw",e,o,l)}))}l(s.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function C(e,t,n){var r=f;return function(a,i){if(r===h)throw new Error("Generator is already running");if(r===m){if("throw"===a)throw i;return Z()}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var l=I(o,n);if(l){if(l===y)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(r===f)throw r=m,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r=h;var s=d(e,t,n);if("normal"===s.type){if(r=n.done?m:p,s.arg===y)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r=m,n.method="throw",n.arg=s.arg)}}}function I(e,n){var r=n.method,a=e.iterator[r];if(a===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,I(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var i=d(a,e.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,y;var o=i.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,y):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function L(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(L,this),this.reset(!0)}function M(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function n(){for(;++a=0;--i){var o=this.tryEntries[i],l=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),P(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;P(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:M(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),y}},e}(e.exports);try{regeneratorRuntime=t}catch(n){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}({exports:{}});var Tle={},wle="\t\n\v\f\r                 \u2028\u2029\ufeff",kle=DU,Ale=x1,Sle=wle,Cle=SU("".replace),Ile=RegExp("^["+Sle+"]+"),Lle=RegExp("(^|[^"+Sle+"])["+Sle+"]+$"),Ple=function(e){return function(t){var n=Ale(kle(t));return 1&e&&(n=Cle(n,Ile,"")),2&e&&(n=Cle(n,Lle,"$1")),n}},Ele={start:Ple(1),end:Ple(2),trim:Ple(3)},Mle=oU,Zle=sU,Ole=x1,Rle=Ele.trim,Nle=wle,Xle=SU("".charAt),Hle=Mle.parseFloat,Dle=Mle.Symbol,Wle=Dle&&Dle.iterator,Gle=1/Hle(Nle+"-0")!=-1/0||Wle&&!Zle((function(){Hle(Object(Wle))}))?function(e){var t=Rle(Ole(e)),n=Hle(t);return 0===n&&"-"===Xle(t,0)?-0:n}:Hle;n1({global:!0,forced:parseFloat!==Gle},{parseFloat:Gle});var Vle=G2,zle=mQ,Fle=TypeError,Yle=function(e){if(Vle(e))return e;throw new Fle(zle(e)+" is not a constructor")},_le=Nq,Ble=Yle,jle=NU,Kle=rq("species"),Jle=function(e,t){var n,r=_le(e).constructor;return void 0===r||jle(n=_le(r)[Kle])?t:Ble(n)},Ule=pU,Qle=SU,qle=Ere,$le=Nq,ese=NU,tse=DU,nse=Jle,rse=Zre,ase=d0,ise=x1,ose=wQ,lse=jre,sse=sU,cse=Iee.UNSUPPORTED_Y,use=Math.min,dse=Qle([].push),fse=Qle("".slice),pse=!sse((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),hse="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;qle("split",(function(e,t,n){var r="0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:Ule(t,this,e,n)}:t;return[function(t,n){var a=tse(this),i=ese(t)?void 0:ose(t,e);return i?Ule(i,t,a,n):Ule(r,ise(a),t,n)},function(e,a){var i=$le(this),o=ise(e);if(!hse){var l=n(r,i,o,a,r!==t);if(l.done)return l.value}var s=nse(i,RegExp),c=i.unicode,u=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(cse?"g":"y"),d=new s(cse?"^(?:"+i.source+")":i,u),f=void 0===a?4294967295:a>>>0;if(0===f)return[];if(0===o.length)return null===lse(d,o)?[o]:[];for(var p=0,h=0,m=[];h2&&void 0!==arguments[2]?arguments[2]:0;return!!(e instanceof Array&&e.hasOwnProperty(n)&&(t===String?"string"==typeof e[n]:e[n]instanceof t))},Tle.isNumber=function(e){return!isNaN(parseFloat(e))&&isFinite(e)},Tle.arrayEqual=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return n?Object.keys(e).map((function(n){return e[n]===t[n]})).reduce((function(e,t){return e?t:e}),!0):0===vse(new Set(e.filter((function(e){return!new Set(t).has(e)})))).length},Tle.transpose=function(e){var t=e.map((function(e){return e.length})).reduce((function(e,t){return Math.max(e,t)}),0);return vse(Array(t).keys()).map((function(t){return e.map((function(e){return e[t]}))}))},Tle.makeGenerator=gse,Tle.iter=xse,Tle.chain=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r2&&void 0!==d[2]?d[2]:function(){return!1},r=0,a=!0,i=!1,o=void 0,f.prev=5,l=e[Symbol.iterator]();case 7:if(a=(s=l.next()).done){f.next=18;break}if(c=s.value,!n()){f.next=11;break}return f.abrupt("return");case 11:if(!(u=t(c,r++))){f.next=15;break}return f.next=15,u;case 15:a=!0,f.next=7;break;case 18:f.next=24;break;case 20:f.prev=20,f.t0=f.catch(5),i=!0,o=f.t0;case 24:f.prev=24,f.prev=25,a||null==l.return||l.return();case 27:if(f.prev=27,!i){f.next=30;break}throw o;case 30:return f.finish(27);case 31:return f.finish(24);case 32:case"end":return f.stop()}}),yse,null,[[5,20,24,32],[25,,27,31]])}function xse(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!1};return Array.from(bse(e,t,n))}var Tse={},wse=n1,kse=g0.indexOf,Ase=e4,Sse=T2([].indexOf),Cse=!!Sse&&1/Sse([1],1,-0)<0;wse({target:"Array",proto:!0,forced:Cse||!Ase("indexOf")},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return Cse?Sse(this,e,t)||0:kse(this,e,t)}}),Ane("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),_ne);var Ise=GQ,Lse=c8,Pse=t8;n1({target:"Object",stat:!0,forced:sU((function(){Lse(1)})),sham:!Pse},{getPrototypeOf:function(e){return Lse(Ise(e))}}),n1({target:"Object",stat:!0},{setPrototypeOf:N8});var Ese=SU,Mse=bQ,Zse=_U,Ose=FQ,Rse=K1,Nse=uU,Xse=Function,Hse=Ese([].concat),Dse=Ese([].join),Wse={},Gse=Nse?Xse.bind:function(e){var t=Mse(this),n=t.prototype,r=Rse(arguments,1),a=function(){var n=Hse(r,Rse(arguments));return this instanceof a?function(e,t,n){if(!Ose(Wse,t)){for(var r=[],a=0;a1?arguments[1]:void 0);return!1!==gce(t,(function(e,r){if(!n(e,r,t))return!1}),!0)}});var bce=S2,xce=ice,Tce=mce,wce=rce.Map,kce=rce.set;n1({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(e){var t=xce(this),n=bce(e,arguments.length>1?arguments[1]:void 0),r=new wce;return Tce(t,(function(e,a){n(e,a,t)&&kce(r,a,e)})),r}});var Ace=S2,Sce=ice,Cce=mce;n1({target:"Map",proto:!0,real:!0,forced:!0},{find:function(e){var t=Sce(this),n=Ace(e,arguments.length>1?arguments[1]:void 0),r=Cce(t,(function(e,r){if(n(e,r,t))return{value:e}}),!0);return r&&r.value}});var Ice=S2,Lce=ice,Pce=mce;n1({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(e){var t=Lce(this),n=Ice(e,arguments.length>1?arguments[1]:void 0),r=Pce(t,(function(e,r){if(n(e,r,t))return{key:r}}),!0);return r&&r.key}});var Ece=function(e,t){return e===t||e!=e&&t!=t},Mce=ice,Zce=mce;n1({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(e){return!0===Zce(Mce(this),(function(t){if(Ece(t,e))return!0}),!0)}});var Oce=ice,Rce=mce;n1({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(e){var t=Rce(Oce(this),(function(t,n){if(t===e)return{key:n}}),!0);return t&&t.key}});var Nce=S2,Xce=ice,Hce=mce,Dce=rce.Map,Wce=rce.set;n1({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(e){var t=Xce(this),n=Nce(e,arguments.length>1?arguments[1]:void 0),r=new Dce;return Hce(t,(function(e,a){Wce(r,n(e,a,t),e)})),r}});var Gce=S2,Vce=ice,zce=mce,Fce=rce.Map,Yce=rce.set;n1({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(e){var t=Vce(this),n=Gce(e,arguments.length>1?arguments[1]:void 0),r=new Fce;return zce(t,(function(e,a){Yce(r,a,n(e,a,t))})),r}});var _ce=ice,Bce=tne,jce=rce.set;n1({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(e){for(var t=_ce(this),n=arguments.length,r=0;r1?arguments[1]:void 0);return!0===eue(t,(function(e,r){if(n(e,r,t))return!0}),!0)}});var tue=bQ,nue=ice,rue=TypeError,aue=rce.get,iue=rce.has,oue=rce.set;function lue(e){return(lue="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function sue(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function cue(e,t){return!t||"object"!==lue(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function uue(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&pue(e,t)}function due(e){var t="function"==typeof Map?new Map:void 0;return due=function(e){if(null===e||!function(e){return-1!==Function.toString.call(e).indexOf("[native code]")}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return fue(e,arguments,hue(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),pue(n,e)},due(e)}function fue(e,t,n){return fue=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&pue(a,n.prototype),a},fue.apply(null,arguments)}function pue(e,t){return(pue=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function hue(e){return(hue=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}n1({target:"Map",proto:!0,real:!0,forced:!0},{update:function(e,t){var n=nue(this),r=arguments.length;tue(t);var a=iue(n,e);if(!a&&r<3)throw new rue("Updating absent value");var i=a?aue(n,e):tue(r>2?arguments[2]:void 0)(e,n);return oue(n,e,t(i,e,n)),n}}),Object.defineProperty(Tse,"__esModule",{value:!0}),Tse.WrongTableNameError=Tse.TableAlreadyExistsError=Tse.SQLParseError=Tse.ArgumentTypeError=Tse.WrongSchemaError=Tse.NoSuchColumnError=Tse.MixedTypeError=Tse.FileNotFoundError=void 0;var mue=function(e){function t(e){var n;return sue(this,t),(n=cue(this,hue(t).call(this,Error))).message="".concat(e," not found. You maybe use a wrong path or url. Be sure you use absolute path, relative one being not supported."),n.name="FileNotFoundError",n}return uue(t,e),t}(due(Error));Tse.FileNotFoundError=mue;var yue=function(e){function t(){var e;sue(this,t),e=cue(this,hue(t).call(this,TypeError));for(var n=arguments.length,r=new Array(n),a=0;al;)void 0!==(n=a(r,t=i[l++]))&&Fue(o,t,n);return o}});var Yue={};Object.defineProperty(Yue,"__esModule",{value:!0}),Yue.__hashes__=Yue.__groups__=Yue.__rows__=Yue.__columns__=void 0;var _ue=Symbol("columns");Yue.__columns__=_ue;var Bue=Symbol("rows");Yue.__rows__=Bue;var jue=Symbol("groups");Yue.__groups__=jue;var Kue=Symbol("hashes");Yue.__hashes__=Kue,Object.defineProperty(Wue,"__esModule",{value:!0}),Wue.groupBy=function(e,t){var n={},r=[],a=!0,i=!1,o=void 0;try{for(var l,s=e.toCollection(!0)[Symbol.iterator]();!(a=(l=s.next()).done);a=!0){var c=l.value,u=c.select.apply(c,tde(t)).hash();n[u]||(r.push(u),n[u]=[]),n[u].push(c)}}catch(f){i=!0,o=f}finally{try{a||null==s.return||s.return()}finally{if(i)throw o}}var d=r.reduce((function(r,a){var i;return r[a]={groupKey:(i=n[a][0]).select.apply(i,tde(t)).toDict(),hash:a,group:new e.constructor(n[a],e.listColumns())},r}),{});return new rde(e,t,d,r)},Wue.GroupedDataFrame=void 0;var Jue=Yue;function Uue(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(s){a=!0,i=s}finally{try{r||null==l.return||l.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function Que(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function que(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function $ue(e){for(var t=1;t0?n:t.listColumns()}var t,n,r;return t=e,n=[{key:Symbol.iterator,value:regeneratorRuntime.mark((function e(){var t,n,r,a,i,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=!0,n=!1,r=void 0,e.prev=3,a=this[Jue.__hashes__][Symbol.iterator]();case 5:if(t=(i=a.next()).done){e.next=12;break}return o=i.value,e.next=9,this[Jue.__groups__][o];case 9:t=!0,e.next=5;break;case 12:e.next=18;break;case 14:e.prev=14,e.t0=e.catch(3),n=!0,r=e.t0;case 18:e.prev=18,e.prev=19,t||null==a.return||a.return();case 21:if(e.prev=21,!n){e.next=24;break}throw r;case 24:return e.finish(21);case 25:return e.finish(18);case 26:case"end":return e.stop()}}),e,this,[[3,14,18,26],[19,,21,25]])}))},{key:"get",value:function(e){return this[Jue.__groups__][e]}},{key:"toCollection",value:function(){return tde(this)}},{key:"show",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return tde(this).map((function(t){var n=t.group,r=t.groupKey,a="--\n[".concat(JSON.stringify(r),"]\n--");return e||console.log(a),a+"\n"+n.show(10,e)})).reduce((function(e,t){return e+"\n"+t}))}},{key:"listGroups",value:function(){return tde(this).map((function(e){return e.groupKey}))}},{key:"listHashs",value:function(){return this[Jue.__hashes__]}},{key:"map",value:function(e){var t,n=tde(this).map((function(t){return t.group.map(e)}));return this.df.__newInstance__((t=[]).concat.apply(t,tde(n.map((function(e){return e.toCollection()})))),n[0].listColumns())}},{key:"filter",value:function(e){var t,n=tde(this).map((function(t){return t.group.filter(e)})).filter((function(e){return e.listColumns().length>0}));return 0===n.length?this.df.__newInstance__([],this.df.listColumns()):this.df.__newInstance__((t=[]).concat.apply(t,tde(n.map((function(e){return e.toCollection()})))),this.df.listColumns())}},{key:"chain",value:function(){for(var e,t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:"aggregation";return this.df.__newInstance__(tde(this).map((function(n){var r=n.group,a=n.groupKey;return $ue({},a,ede({},t,e(r,a)))})),[].concat(tde(this.on),[t]))}},{key:"pivot",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e.count()},n=[].concat(tde(this.on),tde(this.df.distinct(e).toArray(e)));return this.df.__newInstance__(this.aggregate((function(n){return n.groupBy(e).aggregate((function(n,r){return ede({},r[e],t(n,r))})).toArray("aggregation").reduce((function(e,t){return $ue({},e,{},t)}),{})})).toCollection().map((function(e){var t=e.aggregation;return $ue({},Que(e,["aggregation"]),{},t)})),n)}},{key:"melt",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"variable",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"value",r=[].concat(tde(this.on),[t,n]);return this.df.__newInstance__(this.aggregate((function(r){return Object.entries(r.toDict()).reduce((function(r,a){var i=Uue(a,2),o=i[0],l=i[1];return[].concat(tde(r),tde(l.reduce((function(r,a){var i;return e.on.includes(o)?r:[].concat(tde(r),[(i={},ede(i,t,o),ede(i,n,a),i)])}),[])))}),[])})).toCollection().reduce((function(e,t){var n=t.aggregation,r=Que(t,["aggregation"]);return[].concat(tde(e),tde(n.map((function(e){return $ue({},r,{},e)}))))}),[]),r)}}],n&&nde(t.prototype,n),r&&nde(t,r),e}();Wue.GroupedDataFrame=rde;var ade,ide,ode,lde,sde={},cde=TypeError,ude=/(?:ipad|iphone|ipod).*applewebkit/i.test(UU),dde=oU,fde=M5,pde=S2,hde=FU,mde=FQ,yde=sU,vde=Z1,gde=K1,bde=gq,xde=function(e,t){if(e=200&&r<300||304===r){if(a)try{t=a.call(n,s)}catch(i){return void o.call("error",n,i)}else t=s;o.call("load",n,t)}else o.call("error",n,e)}if("undefined"!=typeof XDomainRequest&&!("withCredentials"in s)&&/^(http(s)?:)?\/\//.test(e)&&(s=new XDomainRequest),"onload"in s?s.onload=s.onerror=s.ontimeout=f:s.onreadystatechange=function(e){s.readyState>3&&f(e)},s.onprogress=function(e){o.call("progress",n,e)},n={header:function(e,t){return e=(e+"").toLowerCase(),arguments.length<2?l.get(e):(null==t?l.remove(e):l.set(e,t+""),n)},mimeType:function(e){return arguments.length?(r=null==e?null:e+"",n):r},responseType:function(e){return arguments.length?(i=e,n):i},timeout:function(e){return arguments.length?(d=+e,n):d},user:function(e){return arguments.length<1?c:(c=null==e?null:e+"",n)},password:function(e){return arguments.length<1?u:(u=null==e?null:e+"",n)},response:function(e){return a=e,n},get:function(e,t){return n.send("GET",e,t)},post:function(e,t){return n.send("POST",e,t)},send:function(t,a,f){return s.open(t,e,!0,c,u),null==r||l.has("accept")||l.set("accept",r+",*/*"),s.setRequestHeader&&l.each((function(e,t){s.setRequestHeader(t,e)})),null!=r&&s.overrideMimeType&&s.overrideMimeType(r),null!=i&&(s.responseType=i),d>0&&(s.timeout=d),null==f&&"function"==typeof a&&(f=a,a=null),null!=f&&1===f.length&&(f=function(e){return function(t,n){e(null==t?n:null)}}(f)),null!=f&&n.on("error",f).on("load",(function(e){f(null,e)})),o.call("beforesend",n,s),s.send(null==a?null:a),n},abort:function(){return s.abort(),n},on:function(){var e=o.on.apply(o,arguments);return e===o?n:e}},null!=t){if("function"!=typeof t)throw new Error("invalid callback: "+t);return n.get(t)}return n}function khe(e,t){return function(n,r){var a=whe(n).mimeType(e).response(t);if(null!=r){if("function"!=typeof r)throw new Error("invalid callback: "+r);return a.get(r)}return a}}bhe.prototype=ghe.prototype={constructor:bhe,on:function(e,t){var n,r,a=this._,i=(r=a,(e+"").trim().split(/^|\s+/).map((function(e){var t="",n=e.indexOf(".");if(n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),e&&!r.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:t}}))),o=-1,l=i.length;if(!(arguments.length<2)){if(null!=t&&"function"!=typeof t)throw new Error("invalid callback: "+t);for(;++o0)for(var n,r,a=new Array(n),i=0;i9999?"+"+Zhe(t,6):Zhe(t,4))+"-"+Zhe(e.getUTCMonth()+1,2)+"-"+Zhe(e.getUTCDate(),2)+(i?"T"+Zhe(n,2)+":"+Zhe(r,2)+":"+Zhe(a,2)+"."+Zhe(i,3)+"Z":a?"T"+Zhe(n,2)+":"+Zhe(r,2)+":"+Zhe(a,2)+"Z":r||n?"T"+Zhe(n,2)+":"+Zhe(r,2)+"Z":"")}function Rhe(e){var t=new RegExp('["'+e+"\n\r]"),n=e.charCodeAt(0);function r(e,t){var r,a=[],i=e.length,o=0,l=0,s=i<=0,c=!1;function u(){if(s)return Phe;if(c)return c=!1,Lhe;var t,r,a=o;if(34===e.charCodeAt(a)){for(;o++=i?s=!0:10===(r=e.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===e.charCodeAt(o)&&++o),e.slice(a+1,t-1).replace(/""/g,'"')}for(;o=i?s=!0:10===(r=e.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===e.charCodeAt(o)&&++o),e.slice(a+1,t-1).replace(/""/g,'"')}for(;o1&&void 0!==arguments[1]?arguments[1]:";",n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0,a=(0,ame.dsvFormat)(t),i=n?a.format(e.toCollection(),e[ime.__columns__]):a.formatRows(e.toArray());return r&&sme(e._cleanSavePath(r),i),i},sde.toCSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e.toDSV(",",t,n)},sde.toTSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e.toDSV("\t",t,n)},sde.toPSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;return e.toDSV("|",t,n)},sde.toText=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:";",n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return e.toDSV(t,n,r)},sde.toJSON=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,r=JSON.stringify(t?e.toCollection():e.toDict());return n&&sme(e._cleanSavePath(n),r),r},sde.fromDSV=dme,sde.fromCSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return dme(e,",",t)},sde.fromTSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return dme(e,"\t",t)},sde.fromPSV=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return dme(e,"|",t)},sde.fromText=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:";",n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return dme(e,t,n)},sde.fromJSON=function(e){return new Promise((function(t){return"string"==typeof e?(0,rme.json)(ume(e),t):cme(e,(function(e){return t(JSON.parse(e))}))})).then((function(t){if(null===t)throw new ome.FileNotFoundError(e);return t}))};var rme=Ghe,ame=tme,ime=Yue,ome=Tse,lme=/^(?:[/]|[./]|(?:[a-zA-z]:\/)).*$/;function sme(e,t){try{nme.writeFileSync(e,t)}catch(n){console.warn("File system module is not available.")}}function cme(e,t){if(FileReader&&File){var n=new FileReader;n.onload=function(e){return t(e.target.result)},n.readAsText(e)}}function ume(e){return String(e).match(lme)?"file://".concat(e):e}function dme(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:";",n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(0,ame.dsvFormat)(t);return new Promise((function(t){var a=function(e){if(e.includes("Error: ENOENT"))return t(null);var a=n?r.parse(e):r.parseRows(e);return t(a)};return"string"==typeof e?(0,rme.text)(ume(e),a):cme(e,a)})).then((function(t){if(null===t)throw new ome.FileNotFoundError(e);return t}))}Object.defineProperty(s1,"__esModule",{value:!0}),s1.default=void 0;var fme,pme=Tle,hme=Tse,mme=(fme=kue)&&fme.__esModule?fme:{default:fme},yme=Wue,vme=Yue,gme=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(sde);function bme(e){return(bme="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function xme(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Tme(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);var a=wme(this._build(t,n),2);this[vme.__rows__]=a[0],this[vme.__columns__]=a[1],this.options=r,this.options.modules=[].concat(Tme(e.defaultModules),Tme(this.options.modules||[])),Object.assign.apply(Object,[this].concat(Tme(this.__instanciateModules__(this.options.modules))))}return Ame(e,null,[{key:"setDefaultModules",value:function(){for(var t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:this[vme.__columns__],n=0,r=Object.keys(e);n1&&void 0!==arguments[1]?arguments[1]:void 0;return e.map((function(e){var r=new e(n||t);return xme({},r.name,r)}))}},{key:"_build",value:function(t,n){if(t instanceof e)return this._fromArray(Array.from(t[vme.__rows__]),n||t[vme.__columns__]);if(t instanceof Array&&t.length>0)return this._fromArray(t,n||Array.from(new Set(t.slice(0,10).concat(t.slice(-10,-1)).map((function(e){return Object.keys(e)})).reduce((function(e,t){return e.concat(t)})))));if(t instanceof Array&&0===t.length)return this._fromArray(t,n||[]);if(t instanceof Object)return this._fromDict(t,n||Object.keys(t));throw new hme.ArgumentTypeError(t,"DataFrame | Array | Object")}},{key:"_fromDict",value:function(e,t){return[(0,pme.transpose)(Object.values(e)).map((function(e){return new mme.default(e,t)})),t]}},{key:"_fromArray",value:function(e,t){return[e.map((function(e){return new mme.default(e,t)})),t]}},{key:"_joinByType",value:function(e,t,n,r){var a=this,i=t.listHashs();return e.toCollection().map((function(e){var o=e.group,l=e.hash,s=i.includes(l),c=o;if(t.get(l)){var u=t.get(l).group.toCollection(),d=o.toCollection().map((function(e){return u.map((function(t){return Object.assign({},t,e)}))})).reduce((function(e,t){return[].concat(Tme(e),Tme(t))}),[]);c=a.__newInstance__(d,r)}var f=function(e){return!!e&&c};return"full"===n?c:f("out"===n?!s:s)})).filter((function(e){return e}))}},{key:"_join",value:function(t,n,r){if(!(t instanceof e))throw new hme.ArgumentTypeError(t,"DataFrame");var a=Tme(new Set([].concat(Tme(this.listColumns()),Tme(t.listColumns())))),i=Array.isArray(n)?n:[n],o=this.groupBy.apply(this,Tme(i)),l=t.groupBy.apply(t,Tme(i));return[this.__newInstance__([],a)].concat(Tme((0,pme.iter)([].concat(Tme(r[0]?this._joinByType(o,l,r[0],a):[]),Tme(r[1]?this._joinByType(l,o,r[1],a):[])),(function(e){return e.restructure(a)})))).reduce((function(e,t){return e.union(t)})).dropDuplicates()}},{key:"_cleanSavePath",value:function(e){return e.replace("file://","/")}},{key:"toDSV",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:10,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=function(e){return"| ".concat(e.map((function(e){var t=String(e);return t.length>9?t.substring(0,6)+"...":t+Array(10-t.length).join(" ")})).join(" | ")," |")},r=n(this[vme.__columns__]),a=0,i=[r,Array(r.length).join("-")].concat(Tme((0,pme.iter)(this[vme.__rows__],(function(e){return a++,n(e.toArray())}),(function(){return a>=e})))).join("\n");return t||console.log(i),i}},{key:"dim",value:function(){return[this.count(),this[vme.__columns__].length]}},{key:"transpose",value:function(e){var t=[].concat(Tme(e?["rowNames"]:[]),Tme(Tme(Array(this.count()).keys()).reverse())),n=(0,pme.transpose)((e?this.push(this[vme.__columns__]):this).toArray());return this.__newInstance__(n,t.reverse()).restructure(t)}},{key:"count",value:function(){return this[vme.__rows__].length}},{key:"countValue",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this[vme.__columns__][0];return this.filter((function(n){return n.get(t)===e})).count()}},{key:"push",value:function(){for(var t=arguments.length,n=new Array(t),r=0;r0?n:this[vme.__columns__],i=Array.isArray(e)?e:[e];return this.map((function(e){return(a.length>0?a:r[vme.__columns__]).reduce((function(e,n){return i.includes(e.get(n))?e.set(n,t):e}),e)}))}},{key:"distinct",value:function(e){return this.__newInstance__(xme({},e,Tme(new Set(this.toArray(e)))),[e])}},{key:"unique",value:function(e){return this.distinct(e)}},{key:"listColumns",value:function(){return Tme(this[vme.__columns__])}},{key:"select",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n1&&void 0!==arguments[1]?arguments[1]:function(){};return this.__newInstance__(this[vme.__rows__].map((function(n,r){return n.set(e,t(n,r))})),this[vme.__columns__].includes(e)?this[vme.__columns__]:[].concat(Tme(this[vme.__columns__]),[e]))}},{key:"restructure",value:function(e){return this.__newInstance__(this[vme.__rows__],e)}},{key:"renameAll",value:function(e){if(e.length!==this[vme.__columns__].length)throw new hme.WrongSchemaError(e,this[vme.__columns__]);return this.__newInstance__(this.toArray(),e)}},{key:"rename",value:function(e,t){var n=this[vme.__columns__].map((function(n){return n===e?t:n}));return this.renameAll(n)}},{key:"castAll",value:function(e){var t=this;if(e.length!==this[vme.__columns__].length)throw new hme.WrongSchemaError(e,this[vme.__columns__]);return this.map((function(n){return new mme.default(n.toArray().map((function(t,n){return e[n](t)})),t[vme.__columns__])}))}},{key:"cast",value:function(e,t){return this.withColumn(e,(function(n){return t(n.get(e))}))}},{key:"drop",value:function(e){return this.__newInstance__(this[vme.__rows__].map((function(t){return t.delete(e)})),this[vme.__columns__].filter((function(t){return t!==e})))}},{key:"chain",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n0?t:this[vme.__columns__];return this.groupBy.apply(this,Tme(r)).filter((function(e,t){return 0===t}))}},{key:"dropMissingValues",value:function(e){var t=e&&e.length>0?e:this[vme.__columns__];return this.filter((function(e){var n=!0,r=!1,a=void 0;try{for(var i,o=t[Symbol.iterator]();!(n=(i=o.next()).done);n=!0){var l=i.value;if([NaN,void 0,null].includes(e.get(l)))return!1}}catch(s){r=!0,a=s}finally{try{n||null==o.return||o.return()}finally{if(r)throw a}}return!0}))}},{key:"fillMissingValues",value:function(e,t){return this.replace([NaN,void 0,null],e,t)}},{key:"shuffle",value:function(){return this.count()<2?this:this.__newInstance__(this.reduce((function(e,t){var n=Math.floor(Math.random()*(e.length-1)+1);return Array.isArray(e)?[].concat(Tme(e.slice(n,e.length+1)),[t],Tme(e.slice(0,n))):[e,t]})),this[vme.__columns__])}},{key:"sample",value:function(e){var t=this.count()*e,n=0;return this.__newInstance__((0,pme.iter)(this.shuffle()[vme.__rows__],(function(e){return n++,e}),(function(){return n>=t})),this[vme.__columns__])}},{key:"bisect",value:function(e){var t=this.count()*e,n=0,r=[];return[this.__newInstance__((0,pme.iter)(this.shuffle()[vme.__rows__],(function(e){if(n1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"first";Array.isArray(e)||(e=[e]);var r=e,a=["first","last"].includes(n)?n:"first",i=function(e){return[NaN,null,void 0].includes(e)},o=this[vme.__rows__].sort((function(e,n){return r.map((function(r){var o=[e.get(r),n.get(r)],l=o[0],s=o[1];if(i(l))return"last"===a?1:-1;if(i(s))return"last"===a?-1:1;if(bme(l)!==bme(s))throw new hme.MixedTypeError([bme(l),bme(s)]);return l>s?t?-1:1:l1){var l=[],s=[];return o.forEach((function(e){var t=!0,n=!1,a=void 0;try{for(var o,c=r[Symbol.iterator]();!(t=(o=c.next()).done);t=!0){var u=o.value;if(i(e.get(u)))return void l.push(e)}}catch(d){n=!0,a=d}finally{try{t||null==c.return||c.return()}finally{if(n)throw a}}s.push(e)})),this.__newInstance__("last"===n?s.concat(l):l.concat(s),this[vme.__columns__])}return this.__newInstance__(o,this[vme.__columns__])}},{key:"union",value:function(t){if(!(t instanceof e))throw new hme.ArgumentTypeError(t,"DataFrame");if(!(0,pme.arrayEqual)(this[vme.__columns__],t[vme.__columns__]))throw new hme.WrongSchemaError(t[vme.__columns__],this[vme.__columns__]);return this.__newInstance__([].concat(Tme(this),Tme(t.restructure(this[vme.__columns__]))),this[vme.__columns__])}},{key:"join",value:function(e,t){var n=this;return{inner:function(){return n.innerJoin(e,t)},full:function(){return n.fullJoin(e,t)},outer:function(){return n.outerJoin(e,t)},left:function(){return n.leftJoin(e,t)},right:function(){return n.rightJoin(e,t)}}[arguments.length>2&&void 0!==arguments[2]?arguments[2]:"inner"]()}},{key:"innerJoin",value:function(e,t){return this._join(e,t,["in"])}},{key:"fullJoin",value:function(e,t){return this._join(e,t,["full","full"])}},{key:"outerJoin",value:function(e,t){return this.fullJoin(e,t)}},{key:"leftJoin",value:function(e,t){return this._join(e,t,["full","in"])}},{key:"rightJoin",value:function(e,t){return this._join(e,t,["in","full"])}},{key:"diff",value:function(e,t){return this._join(e,t,["out","out"])}},{key:"head",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return this.slice(0,e)}},{key:"tail",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:10;return this.slice(-e)}},{key:"slice",value:function(e,t){return this.__newInstance__(this[vme.__rows__].slice(e||void 0,t||void 0),this[vme.__columns__])}},{key:"getRow",value:function(e){return this[vme.__rows__][e]}},{key:"setRow",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e},n=Array.from(this[vme.__rows__]);return n[e]=t(n[e]),this.__newInstance__(n,this[vme.__columns__])}}]),e}();Sme.defaultModules=[];var Cme=Sme;s1.default=Cme;var Ime={},Lme=SU(1..valueOf),Pme=n1,Eme=cU,Mme=oU,Zme=i2,Ome=SU,Rme=K0,Nme=FQ,Xme=sne,Hme=JU,Dme=pQ,Wme=dq,Gme=sU,Vme=e0.f,zme=lU.f,Fme=Eq.f,Yme=Lme,_me=Ele.trim,Bme="Number",jme=Mme[Bme];Zme[Bme];var Kme=jme.prototype,Jme=Mme.TypeError,Ume=Ome("".slice),Qme=Ome("".charCodeAt),qme=function(e){var t,n,r,a,i,o,l,s,c=Wme(e,"number");if(Dme(c))throw new Jme("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=_me(c),43===(t=Qme(c,0))||45===t){if(88===(n=Qme(c,2))||120===n)return NaN}else if(48===t){switch(Qme(c,1)){case 66:case 98:r=2,a=49;break;case 79:case 111:r=8,a=55;break;default:return+c}for(o=(i=Ume(c,2)).length,l=0;la)return NaN;return parseInt(i,r)}return+c},$me=Rme(Bme,!jme(" 0o1")||!jme("0b1")||jme("+0x1")),eye=function(e){var t,n=arguments.length<1?0:jme(function(e){var t=Wme(e,"number");return"bigint"==typeof t?t:qme(t)}(e));return Hme(Kme,t=this)&&Gme((function(){Yme(t)}))?Xme(Object(n),this,eye):n};eye.prototype=Kme,$me&&(Kme.constructor=eye),Pme({global:!0,constructor:!0,wrap:!0,forced:$me},{Number:eye}),$me&&function(e,t){for(var n,r=Eme?Vme(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),a=0;r.length>a;a++)Nme(t,n=r[a])&&!Nme(e,n)&&Fme(e,n,zme(t,n))}(Zme[Bme],jme),n1({target:"Number",stat:!0},{isNaN:function(e){return e!=e}}),Object.defineProperty(Ime,"__esModule",{value:!0}),Ime.default=void 0;var tye=Tle;function nye(e,t){for(var n=0;nt.get(e)?n:t})).get(e)}},{key:"min",value:function(e){return this._castAsNumber(e).reduce((function(t,n){return t.get(e)>n.get(e)?n:t})).get(e)}},{key:"mean",value:function(e){var t=this.df.filter((function(t){return(0,tye.isNumber)(t.get(e))}));return Number(t.reduce((function(t,n){return(0,tye.isNumber)(n.get(e))?t+Number(n.get(e)):t}),0))/t.count()}},{key:"average",value:function(e){return this.mean(e)}},{key:"var",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.df.filter((function(t){return(0,tye.isNumber)(t.get(e))})),r=this.mean(e);return Number(n.reduce((function(t,n){return t+Math.pow(n.get(e)-r,2)}),0))/(n.count()-(t?0:1))}},{key:"sd",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return Math.sqrt(this.var(e,t))}},{key:"stats",value:function(e){return{sum:this.sum(e),mean:this.mean(e),min:this.min(e),max:this.max(e),var:this.var(e),varpop:this.var(e,!0),sd:this.sd(e),sdpop:this.sd(e,!0)}}}],n&&nye(t.prototype,n),r&&nye(t,r),e}(),aye=rye;Ime.default=aye;var iye={};Object.defineProperty(iye,"__esModule",{value:!0}),iye.default=void 0;var oye=function(e){return e&&e.__esModule?e:{default:e}}(s1),lye=Tse,sye=Tle;function cye(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t1&&void 0!==arguments[1]&&arguments[1];if(!(e instanceof oye.default))throw new lye.ArgumentTypeError(e,"DataFrame");return(0,sye.arrayEqual)(this.df.dim(),t?e.dim().reverse():e.dim(),!0)}},{key:"add",value:function(e){var t=this;if(!this.isCommutative(e))throw new lye.WrongSchemaError(this.df.dim(),e.dim());var n=cye(Array(this.df.dim()[1]).keys());return this.df.__newInstance__(cye((0,sye.iter)(Object.keys(cye(this.df)),(function(r){var a=cye(t.df)[r].toArray(),i=cye(e)[r].toArray();return n.map((function(e){return a[e]+i[e]}))}))),this.df.listColumns())}},{key:"product",value:function(e){if("number"!=typeof e)throw new lye.ArgumentTypeError(e,"Number");return this.df.map((function(t){return t.toArray().map((function(t){return t*e}))}))}},{key:"dot",value:function(e){var t=this;if(!this.isCommutative(e,!0))throw new lye.WrongSchemaError(this.df.dim(),e.dim().reverse());var n=cye(Array(this.df.dim()[0]).keys());return this.df.__newInstance__(cye((0,sye.iter)(Object.keys(cye(this.df)),(function(r){var a=cye(t.df)[r].toArray();return cye((0,sye.iter)(n,(function(t){var n=cye(e.transpose())[t].toArray();return Object.keys(n).reduce((function(e,t){return e+n[t]*a[t]}),0)})))}))),n)}}],n&&uye(t.prototype,n),r&&uye(t,r),e}(),fye=dye;iye.default=fye;var pye={},hye=Eq.f,mye=cU,yye=oU,vye=SU,gye=K0,bye=sne,xye=Jq,Tye=B1,wye=e0.f,kye=JU,Aye=Jne,Sye=x1,Cye=ite,Iye=Iee,Lye=function(e,t,n){n in e||hye(e,n,{configurable:!0,get:function(){return t[n]},set:function(e){t[n]=e}})},Pye=$$,Eye=sU,Mye=FQ,Zye=E$.enforce,Oye=Ene,Rye=Eee,Nye=Oee,Xye=rq("match"),Hye=yye.RegExp,Dye=Hye.prototype,Wye=yye.SyntaxError,Gye=vye(Dye.exec),Vye=vye("".charAt),zye=vye("".replace),Fye=vye("".indexOf),Yye=vye("".slice),_ye=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,Bye=/a/g,jye=/a/g,Kye=new Hye(Bye)!==Bye,Jye=Iye.MISSED_STICKY,Uye=Iye.UNSUPPORTED_Y,Qye=mye&&(!Kye||Jye||Rye||Nye||Eye((function(){return jye[Xye]=!1,Hye(Bye)!==Bye||Hye(jye)===jye||"/a/i"!==String(Hye(Bye,"i"))})));if(gye("RegExp",Qye)){for(var qye=function(e,t){var n,r,a,i,o,l,s=kye(Dye,this),c=Aye(e),u=void 0===t,d=[],f=e;if(!s&&c&&u&&e.constructor===qye)return e;if((c||kye(Dye,e))&&(e=e.source,u&&(t=Cye(f))),e=void 0===e?"":Sye(e),t=void 0===t?"":Sye(t),f=e,Rye&&"dotAll"in Bye&&(r=!!t&&Fye(t,"s")>-1)&&(t=zye(t,/s/g,"")),n=t,Jye&&"sticky"in Bye&&(a=!!t&&Fye(t,"y")>-1)&&Uye&&(t=zye(t,/y/g,"")),Nye&&(i=function(e){for(var t,n=e.length,r=0,a="",i=[],o=Tye(null),l=!1,s=!1,c=0,u="";r<=n;r++){if("\\"===(t=Vye(e,r)))t+=Vye(e,++r);else if("]"===t)l=!1;else if(!l)switch(!0){case"["===t:l=!0;break;case"("===t:Gye(_ye,Yye(e,r+1))&&(r+=2,s=!0),a+=t,c++;continue;case">"===t&&s:if(""===u||Mye(o,u))throw new Wye("Invalid capture group name");o[u]=!0,i[i.length]=[u,c],s=!1,u="";continue}s?u+=t:a+=t}return[a,i]}(e),e=i[0],d=i[1]),o=bye(Hye(e,t),s?this:Dye,qye),(r||a||d.length)&&(l=Zye(o),r&&(l.dotAll=!0,l.raw=qye(function(e){for(var t,n=e.length,r=0,a="",i=!1;r<=n;r++)"\\"!==(t=Vye(e,r))?i||"."!==t?("["===t?i=!0:"]"===t&&(i=!1),a+=t):a+="[\\s\\S]":a+=t+Vye(e,++r);return a}(e),n)),a&&(l.sticky=!0),d.length&&(l.groups=d)),e!==f)try{xye(o,"source",""===f?"(?:)":f)}catch(gwe){}return o},$ye=wye(Hye),eve=0;$ye.length>eve;)Lye(qye,Hye,$ye[eve++]);Dye.constructor=qye,qye.prototype=Dye,Pye(yye,"RegExp",qye,{constructor:!0})}Oye("RegExp");var tve={},nve=n1,rve=t3.find,ave=J4,ive="find",ove=!0;ive in[]&&Array(1)[ive]((function(){ove=!1})),nve({target:"Array",proto:!0,forced:ove},{find:function(e){return rve(this,e,arguments.length>1?arguments[1]:void 0)}}),ave(ive);var lve=n1,sve=t3.findIndex,cve=J4,uve="findIndex",dve=!0;uve in[]&&Array(1)[uve]((function(){dve=!1})),lve({target:"Array",proto:!0,forced:dve},{findIndex:function(e){return sve(this,e,arguments.length>1?arguments[1]:void 0)}}),cve(uve);var fve,pve=n$.PROPER,hve=sU,mve=wle,yve=Ele.trim;n1({target:"String",proto:!0,forced:(fve="trim",hve((function(){return!!mve[fve]()||"​…᠎"!=="​…᠎"[fve]()||pve&&mve[fve].name!==fve})))},{trim:function(){return yve(this)}}),Object.defineProperty(tve,"__esModule",{value:!0}),tve.default=Pve;var vve=Tle,gve=Tse;function bve(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=[],r=!0,a=!1,i=void 0;try{for(var o,l=e[Symbol.iterator]();!(r=(o=l.next()).done)&&(n.push(o.value),!t||n.length!==t);r=!0);}catch(s){a=!0,i=s}finally{try{r||null==l.return||l.return()}finally{if(a)throw i}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function xve(e){return function(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t=":function(e,t){return e>=t},"<=":function(e,t){return e<=t},"!=":function(e,t){return e!==t},"<":function(e,t){return e":function(e,t){return e>t},"=":function(e,t){return e===t},AND:function(e,t){return e&&t},OR:function(e,t){return e||t}},kve={COUNT:function(e){return e.count()},SUM:function(e,t){return e.stat.sum(t)},MAX:function(e,t){return e.stat.max(t)},MIN:function(e,t){return e.stat.min(t)},AVG:function(e,t){return e.stat.mean(t)}};function Ave(e){return(0,vve.xReplace)(e.join(" "),[" ",""]).split(",")}function Sve(e,t,n){var r=e.findIndex((function(e){return"ON"===e.toUpperCase()}))+1;return function(a){return a.join(t[e[0]],Ave(e.filter((function(e,t){return t>=r}))),n)}}var Cve={WHERE:function(e){var t=(0,vve.xSplit)(e.join(" ")," AND "," OR ");return function(n){return n.filter((function(n){var r=e.filter((function(e){return["AND","OR"].includes(e.toUpperCase())}));return t.map((function(e){var t=vve.xContains.apply(void 0,[e].concat(xve(Object.keys(wve))))[0],r=e.split(t).map((function(e){return e.trim()}));if(!n.has(r[0])&&n.has(r[1]))return wve[t]((0,vve.xReplace)(r[0].trim(),['"',""],["'",""],["`",""]),String(n.get(r[1])));var a=Number(r[1]);return wve[t](String(n.get(r[0])),Number.isNaN(a)?(0,vve.xReplace)(r[1].trim(),['"',""],["'",""],["`",""]):a)})).reduce((function(e,t){return wve[r.shift()](e,t)}))}))}},JOIN:function(e,t){return Sve(e,t,"inner")},INNERJOIN:function(e,t){return Sve(e,t,"inner")},LEFTJOIN:function(e,t){return Sve(e,t,"left")},RIGHTJOIN:function(e,t){return Sve(e,t,"right")},FULLJOIN:function(e,t){return Sve(e,t,"full")},UNION:function(e,t){return function(n){return n.union(e[0].toUpperCase().includes("SELECT")?Pve(e.join(" "),t):t[e[0]])}},GROUPBY:function(e){return function(t){return t.groupBy.apply(t,xve(Ave(e)))}}};function Ive(e){var t=function(e){var t=e;return Tve.forEach((function(e){var n=bve(e,2),r=n[0],a=n[1];t=t.replace(r,a).replace(r.toLowerCase(),a)})),t}(e).split(" "),n=t.findIndex((function(e){return"FROM"===e.toUpperCase()}));if(-1===n)throw new gve.SQLParseError("Your query should contains FROM keyword");return{selections:t.slice(0,n),table:t[n+1],operations:t.slice(n+2,t.length)}}function Lve(e){if("SELECT"!==e[0].toUpperCase())throw new gve.SQLParseError("Your query should begin with SELECT keyword");return e.shift(),function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r2&&void 0!==arguments[2]&&arguments[2];e.registerTable(e.tables[t],n,r),e.dropTable(t)}},{key:"listTables",value:function(){return Object.keys(e.tables)}},{key:"registerTable",value:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!(t instanceof Mve.default))throw new Zve.ArgumentTypeError(t,"DataFrame");if(!new RegExp("^[a-zA-Z_][a-zA-Z0-9_]*$").test(n))throw new Zve.WrongTableNameError(n);if(e.listTables().includes(n)&&!r)throw new Zve.TableAlreadyExistsError(n);e.tables[n]=t}}]),Nve(e,[{key:"register",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e.registerTable(this.df,t,n),this.df}}]),e}();Xve.tables={};var Hve=Xve;pye.default=Hve,function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DataFrame",{enumerable:!0,get:function(){return t.default}}),Object.defineProperty(e,"Row",{enumerable:!0,get:function(){return n.default}}),e.Errors=e.default=void 0;var t=l(s1),n=l(kue),r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(Tse);e.Errors=r;var a=l(Ime),i=l(iye),o=l(pye);function l(e){return e&&e.__esModule?e:{default:e}}t.default.setDefaultModules(a.default,i.default,o.default),t.default.sql=o.default;var s=t.default;e.default=s}(aU);const Dve=i(aU);var Wve={},Gve={};function Vve(e){return new Function("d","return {"+e.map((function(e,t){return JSON.stringify(e)+": d["+t+'] || ""'})).join(",")+"}")}function zve(e){var t=Object.create(null),n=[];return e.forEach((function(e){for(var r in e)r in t||n.push(t[r]=r)})),n}function Fve(e,t){var n=e+"",r=n.length;return r9999?"+"+Fve(t,6):Fve(t,4))+"-"+Fve(e.getUTCMonth()+1,2)+"-"+Fve(e.getUTCDate(),2)+(i?"T"+Fve(n,2)+":"+Fve(r,2)+":"+Fve(a,2)+"."+Fve(i,3)+"Z":a?"T"+Fve(n,2)+":"+Fve(r,2)+":"+Fve(a,2)+"Z":r||n?"T"+Fve(n,2)+":"+Fve(r,2)+"Z":"")}var _ve=function(e){var t=new RegExp('["'+e+"\n\r]"),n=e.charCodeAt(0);function r(e,t){var r,a=[],i=e.length,o=0,l=0,s=i<=0,c=!1;function u(){if(s)return Gve;if(c)return c=!1,Wve;var t,r,a=o;if(34===e.charCodeAt(a)){for(;o++=i?s=!0:10===(r=e.charCodeAt(o++))?c=!0:13===r&&(c=!0,10===e.charCodeAt(o)&&++o),e.slice(a+1,t-1).replace(/""/g,'"')}for(;o{e.addCase(rU.load,((e,t)=>{e[t.payload.datasetId]=function(e){var t,n;const r=zM("antibodies-per-component",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(!a)return void console.warn(`No sequencing saturation data found for dataset with id ${e}`);const i=_ve(a),o=new Dve(i);return{datasetId:e,x:o.toArray("reads"),y:o.toArray("antibodies")}}(t.payload.datasetId)}))})),jve=Jg((e=>ee.jsx(DL,{focusVisibleClassName:".Mui-focusVisible",disableRipple:!0,...e})))((({theme:e})=>({width:40,height:24,padding:0,margin:e.spacing(1),"& .MuiSwitch-switchBase":{padding:0,margin:3,transitionDuration:"300ms","&.Mui-checked":{transform:"translateX(16px)",color:"#fff","& + .MuiSwitch-track":{backgroundColor:"dark"===e.palette.mode?e.palette.success.dark:e.palette.success.main,opacity:1,border:0},"&.Mui-disabled + .MuiSwitch-track":{opacity:.5},"& .MuiSwitch-thumb:before":{backgroundImage:`url('data:image/svg+xml;utf8,')`}},"&.Mui-focusVisible .MuiSwitch-thumb":{color:e.palette.success.light,border:"6px solid #fff"},"&.Mui-disabled .MuiSwitch-thumb":{color:"light"===e.palette.mode?e.palette.grey[700]:e.palette.grey[900]},"&.Mui-disabled + .MuiSwitch-track":{opacity:"light"===e.palette.mode?.7:.3}},"& .MuiSwitch-thumb":{boxSizing:"border-box",width:18,height:18,"&:before":{content:"''",position:"absolute",width:"100%",height:"100%",left:0,top:0}},"& .MuiSwitch-track":{borderRadius:12,backgroundColor:"light"===e.palette.mode?e.palette.grey[500]:"#39393D",opacity:1,transition:e.transitions.create(["background-color"],{duration:500})}})));function Kve(e){return ee.jsx(US,{control:ee.jsx(jve,{value:e.value,onChange:e.onChange}),componentsProps:{typography:{variant:"label"}},label:e.label})}const Jve={visible:!0,type:"rect",layer:"above",opacity:.3,line:{width:0},fillcolor:"#000",xsizemode:"scaled",ysizemode:"scaled",xref:"paper",yref:"y",x0:0,x1:1,y0:0,y1:.5},Uve=_.memo((function(e){const t=gg(),n=function(e){const t=KO((e=>{var t;return null==(t=e.antibodiesPerCell)?void 0:t.status})),n=KO((t=>t.antibodiesPerCell[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(rU.load({datasetId:e}))}),[n,r,e,t]),n}(e.datasetId),[r,a]=_.useState(!1),i=_.useMemo((()=>n?[{type:"scatter",mode:"lines",x:n.x,y:n.y,xaxis:"x",yaxis:"y",line:{color:t.palette.blue.main,width:2,dash:"solid",shape:"linear",simplify:!0}}]:[]),[n,t]),o=_.useMemo((()=>n?{template:BJ,shapes:[{...Jve,visible:r,fillcolor:t.palette.guides.excellent,fillrule:"even",y0:25,y1:Math.max(...n.y)}],xaxis:{anchor:"y",type:"linear",title:{text:"Mean Reads per Cell"}},yaxis:{anchor:"x",type:"linear",title:{text:"Median Antibodies per Cell"}}}:{}),[n,r,t]),l=ee.jsx(Kve,{value:r,onChange:()=>a(!r),label:"Show guides"},`${e.datasetId}-median-antibodies-per-cell-guide`);return void 0===n?ee.jsx(ee.Fragment,{}):ee.jsx(aS,{width:"100%",height:"100%",sx:{display:"flex"},children:ee.jsx(aS,{sx:{flexGrow:1},children:i&&o?ee.jsx(YJ,{filename:`${e.datasetId}-median-antibodies-per-cell`,data:i,layout:o,modebarComponents:[l]}):ee.jsx(gL,{height:450})})})})),Qve=IM("antibodyPercentages/load",(async(e,t)=>{var n,r;const a=zM("antibody-percentages",e),i=null==(r=null==(n=document.querySelectorAll(a))?void 0:n.item(0))?void 0:r.innerHTML;return i?{datasetId:e,...await mO.use((async({remote:e})=>await e.loadAntibodyPercentages(i))).catch((e=>console.error(e)))}:(console.warn(`No antibody percentages data found for dataset with id ${e}`),t.rejectWithValue(`No antibody percentages data found for dataset with id ${e}`))}),{condition:(e,{getState:t})=>{var n;const r=t();if(null==(n=null==r?void 0:r.antibodyPercentages)?void 0:n.status[e])return!1}}),qve={load:Qve},$ve=OM({name:"antibodyPercentages",initialState:{status:{},data:{}},reducers:{},extraReducers:e=>{e.addCase(Qve.pending,((e,t)=>{e.status[t.meta.arg]="pending"})),e.addCase(Qve.fulfilled,((e,t)=>{e.status[t.meta.arg]="fulfilled",e.data[t.meta.arg]=t.payload})),e.addCase(Qve.rejected,((e,t)=>{e.status[t.meta.arg]="rejected"}))}});function ege(e){const t=KO((t=>t.antibodyPercentages.status[e])),n=KO((t=>t.antibodyPercentages.data[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(qve.load(e))}),[n,r,e,t]),n}const tge=_.memo((function(e){const t=gg(),n=ege(e.datasetId),r=_.useMemo((()=>{if(!n)return[];const e=[],r=[];return n.percentages.forEach(((t,a)=>{t>.001&&(e.push(t),r.push(n.antibodies[a]))})),[{type:"bar",x:r,y:e,xaxis:"x",yaxis:"y",marker:{color:t.palette.orange.main},hovertemplate:"%{label}: %{value:.2%}"}]}),[n,t.palette.orange.main]),a=_.useMemo((()=>n?{template:BJ,xaxis:{anchor:"y",type:"category",categoryorder:"total descending",title:{text:"Marker"}},yaxis:{type:"linear",autorange:!0,anchor:"x",tickformat:",.0%",range:[0,1],title:{text:"Proportion of Reads (%)"}}}:{}),[n]);return ee.jsx(aS,{width:"100%",height:"100%",sx:{display:"flex",flexDirection:"column"},children:ee.jsx(aS,{sx:{flexGrow:1},children:r&&a?ee.jsx(YJ,{filename:`${e.datasetId}-sequencing-saturation`,data:r,layout:a}):ee.jsx(gL,{height:450})})})})),nge=[{metricId:"antibody_reads"},{metricId:"antibody_reads_usable_per_cell"},{metricId:"antibody_reads_in_outliers"},{metricId:"unrecognized_antibodies"}],rge=[{metricId:"fraction_antibody_reads"},{metricId:"fraction_antibody_reads_usable_per_cell"},{metricId:"fraction_antibody_reads_in_outliers"},{metricId:"fraction_unrecognized_antibodies"}];function age({index:e}){var t;const n=null==(t=rD("0"))?void 0:t.metrics,r=gg(),a=Y.useRef(null),[i,o]=Y.useState(!1),[l,s]=Y.useState("percentages"),c=Y.useMemo((()=>ee.jsx(aS,{sx:{display:"flex",justifyContent:"end",marginRight:r.spacing(4)},children:ee.jsxs(NP,{color:"primary",value:l,exclusive:!0,onChange:(e,t)=>s(t),children:[ee.jsx(EP,{value:"values",children:"Values"}),ee.jsx(EP,{value:"percentages",children:"Fractions"})]})})),[r,l]);return ee.jsxs(CD,{children:[ee.jsx(CD.Header,{index:e,title:"Antibodies"}),ee.jsx(CD.LeftPanel,{children:ee.jsx(Gj,{header:()=>c,data:"values"===l?nge:rge,sourceData:n})}),ee.jsx(CD.RightPanel,{children:ee.jsx(OD,{children:ee.jsx(Uve,{datasetId:"0"})})}),ee.jsx(CD.Content,{padding:!0,children:ee.jsx(hS,{variant:"contained",endIcon:i?ee.jsx(oK,{}):ee.jsx(tK,{}),onClick:function(){o(!i)},children:"View Barplots of Antibodies"})}),ee.jsx(tT,{in:i,children:ee.jsx(CD.Content,{children:ee.jsx(aS,{ref:a,sx:{display:"flex",flexDirection:"column",flexGrow:1},children:ee.jsx(OD,{title:"Barplot of Antibodies Detected",description:"Antibody proportions detected in all cells sorted in descending order",details:"Antibodies with a proportion smaller than 0.1% are hidden.",children:ee.jsx(tge,{datasetId:"0"})})})})}),ee.jsx(CD.Footer,{})]})}const ige={load:IM("componentData/load",(async e=>{var t,n;const r=zM("component-data",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(a)return{datasetId:e,...await mO.use((async({remote:e})=>await e.loadComponentData(a))).catch((e=>console.error(e)))};console.warn(`No antibody counts data found for dataset with id ${e}`)}),{condition:(e,{getState:t})=>{var n;return!(null==(n=t().componentData)?void 0:n.status[e])}})},oge=OM({name:"componentData",initialState:{status:{},data:{}},reducers:{},extraReducers:e=>{e.addCase(ige.load.pending,((e,t)=>{e.status[t.meta.arg]="pending"})),e.addCase(ige.load.fulfilled,((e,t)=>{e.status[t.meta.arg]="fulfilled",e.data[t.meta.arg]=t.payload})),e.addCase(ige.load.rejected,((e,t)=>{e.status[t.meta.arg]="rejected"}))}});function lge(e){const t=KO((t=>t.componentData.status[e])),n=KO((t=>t.componentData.data[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(ige.load(e))}),[n,e,r,t]),n}const sge=[{label:"All cells",value:"all"},{label:"B cells",value:"predict_B-cells"},{label:"CD4+T cells",value:"predict_CD4+_T-cells"},{label:"CD8+T cells",value:"predict_CD8+_T-cells"},{label:"NK cells",value:"predict_NK-cells"},{label:"Monocytes",value:"predict_Monocytes"},{label:"Unknown cells",value:"unknown"}];function cge(e){const t=gg(),{icon:n,children:r}=e,a=void 0===n,i=_.useCallback((()=>{if(void 0===n)return ee.jsx(ee.Fragment,{});const e={display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",color:t.palette.action.disabled,marginRight:t.spacing(1)};return ee.jsx(aS,{sx:e,children:n})}),[n,t]);return ee.jsxs(aS,{style:{flexGrow:1,display:"flex",flexDirection:"row",alignItems:"center",marginTop:t.spacing(4),marginBottom:t.spacing(4),marginRight:t.spacing(4),marginLeft:a?t.spacing(4):0},children:[i(),ee.jsx(YT,{variant:"regularLight",children:r})]})}const uge=OM({name:"umaps",initialState:{0:{xaxis:{autorange:!0,range:void 0},yaxis:{autorange:!0,range:void 0}}},reducers:{update:(e,t)=>{const{datasetId:n,...r}=t.payload,a=[r["xaxis.range[0]"],r["xaxis.range[1]"]],i=[r["yaxis.range[0]"],r["yaxis.range[1]"]],o=r["xaxis.autorange"],l=r["yaxis.autorange"],s=null!=a[0]&&null!=a[1],c=null!=i[0]&&null!=i[1];e[n]={xaxis:{range:s?a:void 0,autorange:o},yaxis:{range:c?i:void 0,autorange:l}}}}}),{actions:dge}=uge;function fge(e){const t=jO();return[KO((t=>t.umaps[e])),_.useCallback((n=>{t(dge.update({datasetId:e,...n}))}),[e,t])]}function pge(e){const t=e.datasetId??"0",n=gg(),[r,a]=fge(t),i=lge(t),o="Molecule counts",[l,s]=Y.useState(void 0),[c,u]=Y.useReducer((e=>e+1),0);Y.useEffect((()=>{if(!i||l)return;const e=i.annotatedData.map((({components:e,cluster_cell_class:t,x:r,y:a,molecules:i})=>({name:t,x:r,y:a,xaxis:"x",yaxis:"y",type:"scattergl",marker:{color:n.palette.grey[300],symbol:"circle",coloraxis:"coloraxis"},mode:"markers",orientation:"v",text:e,customdata:i,hovertemplate:`%{text}
%{xaxis.title.text}: %{x:.3f}
%{yaxis.title.text}: %{y:.3f}
${o}: %{customdata:d}
`})));s(e)}),[l,i,n.palette.grey]),Y.useEffect((()=>{if(!l||!i)return;const e=l;for(const t of e)t.marker=qj(t.marker,{color:t.customdata});s(e),u()}),["all",i,l,e,n.palette.grey,u]);const d=Y.useMemo((()=>({xaxis:{type:"linear",anchor:"y",domain:[0,1],...null==r?void 0:r.xaxis,title:{text:"UMAP1"}},yaxis:{type:"linear",anchor:"x",scaleanchor:"x",scaleratio:1,domain:[0,1],...null==r?void 0:r.yaxis,title:{text:"UMAP2"}},showlegend:!1,coloraxis:{colorscale:n.palette.colorscale.parula,cmin:0,colorbar:{title:{text:o}}},legend:{tracegroupgap:0},margin:{l:40,r:40,t:80,b:40}})),[n,r]),f=qj({template:BJ,datarevision:c},d),p={responsive:!0};return i&&0===i.annotatedData.length?ee.jsx(cge,{children:"No data available to create figure"}):ee.jsxs(aS,{width:"100%",height:"100%",sx:{display:"flex",flexDirection:"column"},children:[ee.jsx(aS,{sx:{flexGrow:1},children:l&&f&&p?ee.jsx(YJ,{filename:"annotation-umi-intensity",data:l,layout:f,config:p,onRelayout:a}):ee.jsx(gL,{height:450})}),ee.jsx(aS,{sx:{display:"flex",flexDirection:"row",marginTop:n.spacing(1),marginLeft:n.spacing(4)}})]})}const hge=IM("antibodyDistribution/load",(async e=>{var t,n;const r=zM("antibody-counts",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(a)return{datasetId:e,...await mO.use((async({remote:e})=>await e.loadAntibodyCounts(a))).catch((e=>console.error(e)))};console.warn(`No antibody counts data found for dataset with id ${e}`)}),{condition:(e,{getState:t})=>{var n;const r=t();if(null==(n=null==r?void 0:r.antibodyDistribution)?void 0:n.status[e])return!1}}),mge={load:hge},yge=OM({name:"antibodyDistribution",initialState:{status:{},data:{}},reducers:{},extraReducers:e=>{e.addCase(hge.pending,((e,t)=>{e.status[t.meta.arg]="pending"})),e.addCase(hge.fulfilled,((e,t)=>{e.status[t.meta.arg]="fulfilled",e.data[t.meta.arg]=t.payload})),e.addCase(hge.rejected,((e,t)=>{e.status[t.meta.arg]="rejected"}))}});function vge(e){const t=KO((t=>t.antibodyDistribution.status[e])),n=KO((t=>t.antibodyDistribution.data[e])),r=jO();return _.useEffect((()=>{void 0===n&&r(mge.load(e))}),[n,r,e,t]),n}const gge="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement;function bge(e){const t=Object.prototype.toString.call(e);return"[object Window]"===t||"[object global]"===t}function xge(e){return"nodeType"in e}function Tge(e){var t,n;return e?bge(e)?e:xge(e)&&null!=(t=null==(n=e.ownerDocument)?void 0:n.defaultView)?t:window:window}function wge(e){const{Document:t}=Tge(e);return e instanceof t}function kge(e){return!bge(e)&&e instanceof Tge(e).HTMLElement}function Age(e){return e instanceof Tge(e).SVGElement}function Sge(e){return e?bge(e)?e.document:xge(e)?wge(e)?e:kge(e)||Age(e)?e.ownerDocument:document:document:document}const Cge=gge?Y.useLayoutEffect:Y.useEffect;function Ige(e){const t=Y.useRef(e);return Cge((()=>{t.current=e})),Y.useCallback((function(){for(var e=arguments.length,n=new Array(e),r=0;r{n.current!==e&&(n.current=e)}),t),n}function Pge(e,t){const n=Y.useRef();return Y.useMemo((()=>{const t=e(n.current);return n.current=t,t}),[...t])}function Ege(e){const t=Ige(e),n=Y.useRef(null),r=Y.useCallback((e=>{e!==n.current&&(null==t||t(e,n.current)),n.current=e}),[]);return[n,r]}function Mge(e){const t=Y.useRef();return Y.useEffect((()=>{t.current=e}),[e]),t.current}let Zge={};function Oge(e,t){return Y.useMemo((()=>{if(t)return t;const n=null==Zge[e]?0:Zge[e]+1;return Zge[e]=n,e+"-"+n}),[e,t])}function Rge(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a{const r=Object.entries(n);for(const[a,i]of r){const n=t[a];null!=n&&(t[a]=n+e*i)}return t}),{...t})}}const Nge=Rge(1),Xge=Rge(-1);function Hge(e){if(!e)return!1;const{KeyboardEvent:t}=Tge(e.target);return t&&e instanceof t}function Dge(e){if(function(e){if(!e)return!1;const{TouchEvent:t}=Tge(e.target);return t&&e instanceof t}(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return function(e){return"clientX"in e&&"clientY"in e}(e)?{x:e.clientX,y:e.clientY}:null}const Wge=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[Wge.Translate.toString(e),Wge.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),Gge="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Vge(e){return e.matches(Gge)?e:e.querySelector(Gge)}const zge={display:"none"};function Fge(e){let{id:t,value:n}=e;return _.createElement("div",{id:t,style:zge},n)}function Yge(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;return _.createElement("div",{id:t,style:{position:"fixed",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"},role:"status","aria-live":r,"aria-atomic":!0},n)}const _ge=Y.createContext(null),Bge={draggable:"\n To pick up a draggable item, press the space bar.\n While dragging, use the arrow keys to move the item.\n Press space again to drop the item in its new position, or press escape to cancel.\n "},jge={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Kge(e){let{announcements:t=jge,container:n,hiddenTextDescribedById:r,screenReaderInstructions:a=Bge}=e;const{announce:i,announcement:o}=function(){const[e,t]=Y.useState("");return{announce:Y.useCallback((e=>{null!=e&&t(e)}),[]),announcement:e}}(),l=Oge("DndLiveRegion"),[s,c]=Y.useState(!1);if(Y.useEffect((()=>{c(!0)}),[]),function(e){const t=Y.useContext(_ge);Y.useEffect((()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)}),[e,t])}(Y.useMemo((()=>({onDragStart(e){let{active:n}=e;i(t.onDragStart({active:n}))},onDragMove(e){let{active:n,over:r}=e;t.onDragMove&&i(t.onDragMove({active:n,over:r}))},onDragOver(e){let{active:n,over:r}=e;i(t.onDragOver({active:n,over:r}))},onDragEnd(e){let{active:n,over:r}=e;i(t.onDragEnd({active:n,over:r}))},onDragCancel(e){let{active:n,over:r}=e;i(t.onDragCancel({active:n,over:r}))}})),[i,t])),!s)return null;const u=_.createElement(_.Fragment,null,_.createElement(Fge,{id:r,value:a.draggable}),_.createElement(Yge,{id:l,announcement:o}));return n?ld.createPortal(u,n):u}var Jge,Uge;function Qge(){}function qge(e,t){return Y.useMemo((()=>({sensor:e,options:null!=t?t:{}})),[e,t])}(Uge=Jge||(Jge={})).DragStart="dragStart",Uge.DragMove="dragMove",Uge.DragEnd="dragEnd",Uge.DragCancel="dragCancel",Uge.DragOver="dragOver",Uge.RegisterDroppable="registerDroppable",Uge.SetDroppableDisabled="setDroppableDisabled",Uge.UnregisterDroppable="unregisterDroppable";const $ge=Object.freeze({x:0,y:0});function ebe(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function tbe(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function nbe(e,t,n){return void 0===t&&(t=e.left),void 0===n&&(n=e.top),{x:t+.5*e.width,y:n+.5*e.height}}const rbe=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const a=nbe(t,t.left,t.top),i=[];for(const s of r){const{id:e}=s,t=n.get(e);if(t){const n=(o=nbe(t),l=a,Math.sqrt(Math.pow(o.x-l.x,2)+Math.pow(o.y-l.y,2)));i.push({id:e,data:{droppableContainer:s,value:n}})}}var o,l;return i.sort(ebe)};function abe(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),a=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),o=a-r,l=i-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const a=[];for(const i of r){const{id:e}=i,r=n.get(e);if(r){const n=abe(r,t);n>0&&a.push({id:e,data:{droppableContainer:i,value:n}})}}return a.sort(tbe)};function obe(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:$ge}function lbe(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),a=1;a({...t,top:t.top+e*n.y,bottom:t.bottom+e*n.y,left:t.left+e*n.x,right:t.right+e*n.x})),{...t})}}const sbe=lbe(1),cbe={ignoreTransform:!1};function ube(e,t){void 0===t&&(t=cbe);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:t,transformOrigin:r}=Tge(e).getComputedStyle(e);t&&(n=function(e,t,n){const r=function(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}(t);if(!r)return e;const{scaleX:a,scaleY:i,x:o,y:l}=r,s=e.left-o-(1-a)*parseFloat(n),c=e.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),u=a?e.width/a:e.width,d=i?e.height/i:e.height;return{width:u,height:d,top:c,right:s+u,bottom:c+d,left:s}}(n,t,r))}const{top:r,left:a,width:i,height:o,bottom:l,right:s}=n;return{top:r,left:a,width:i,height:o,bottom:l,right:s}}function dbe(e){return ube(e,{ignoreTransform:!0})}function fbe(e,t){const n=[];return e?function r(a){if(null!=t&&n.length>=t)return n;if(!a)return n;if(wge(a)&&null!=a.scrollingElement&&!n.includes(a.scrollingElement))return n.push(a.scrollingElement),n;if(!kge(a)||Age(a))return n;if(n.includes(a))return n;const i=Tge(e).getComputedStyle(a);return a!==e&&function(e,t){void 0===t&&(t=Tge(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some((e=>{const r=t[e];return"string"==typeof r&&n.test(r)}))}(a,i)&&n.push(a),function(e,t){return void 0===t&&(t=Tge(e).getComputedStyle(e)),"fixed"===t.position}(a,i)?n:r(a.parentNode)}(e):n}function pbe(e){const[t]=fbe(e,1);return null!=t?t:null}function hbe(e){return gge&&e?bge(e)?e:xge(e)?wge(e)||e===Sge(e).scrollingElement?window:kge(e)?e:null:null:null}function mbe(e){return bge(e)?e.scrollX:e.scrollLeft}function ybe(e){return bge(e)?e.scrollY:e.scrollTop}function vbe(e){return{x:mbe(e),y:ybe(e)}}var gbe,bbe;function xbe(e){return!(!gge||!e)&&e===document.scrollingElement}function Tbe(e){const t={x:0,y:0},n=xbe(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height};return{isTop:e.scrollTop<=t.y,isLeft:e.scrollLeft<=t.x,isBottom:e.scrollTop>=r.y,isRight:e.scrollLeft>=r.x,maxScroll:r,minScroll:t}}(bbe=gbe||(gbe={}))[bbe.Forward=1]="Forward",bbe[bbe.Backward=-1]="Backward";const wbe={x:.2,y:.2};function kbe(e,t,n,r,a){let{top:i,left:o,right:l,bottom:s}=n;void 0===r&&(r=10),void 0===a&&(a=wbe);const{isTop:c,isBottom:u,isLeft:d,isRight:f}=Tbe(e),p={x:0,y:0},h={x:0,y:0},m=t.height*a.y,y=t.width*a.x;return!c&&i<=t.top+m?(p.y=gbe.Backward,h.y=r*Math.abs((t.top+m-i)/m)):!u&&s>=t.bottom-m&&(p.y=gbe.Forward,h.y=r*Math.abs((t.bottom-m-s)/m)),!f&&l>=t.right-y?(p.x=gbe.Forward,h.x=r*Math.abs((t.right-y-l)/y)):!d&&o<=t.left+y&&(p.x=gbe.Backward,h.x=r*Math.abs((t.left+y-o)/y)),{direction:p,speed:h}}function Abe(e){if(e===document.scrollingElement){const{innerWidth:e,innerHeight:t}=window;return{top:0,left:0,right:e,bottom:t,width:e,height:t}}const{top:t,left:n,right:r,bottom:a}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:a,width:e.clientWidth,height:e.clientHeight}}function Sbe(e){return e.reduce(((e,t)=>Nge(e,vbe(t))),$ge)}const Cbe=[["x",["left","right"],function(e){return e.reduce(((e,t)=>e+mbe(t)),0)}],["y",["top","bottom"],function(e){return e.reduce(((e,t)=>e+ybe(t)),0)}]];class Ibe{constructor(e,t){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const n=fbe(t),r=Sbe(n);this.rect={...e},this.width=e.width,this.height=e.height;for(const[a,i,o]of Cbe)for(const e of i)Object.defineProperty(this,e,{get:()=>{const t=o(n),i=r[a]-t;return this.rect[e]+i},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Lbe{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach((e=>{var t;return null==(t=this.target)?void 0:t.removeEventListener(...e)}))},this.target=e}add(e,t,n){var r;null==(r=this.target)||r.addEventListener(e,t,n),this.listeners.push([e,t,n])}}function Pbe(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return"number"==typeof t?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t&&r>t.y}var Ebe,Mbe,Zbe,Obe;function Rbe(e){e.preventDefault()}function Nbe(e){e.stopPropagation()}(Mbe=Ebe||(Ebe={})).Click="click",Mbe.DragStart="dragstart",Mbe.Keydown="keydown",Mbe.ContextMenu="contextmenu",Mbe.Resize="resize",Mbe.SelectionChange="selectionchange",Mbe.VisibilityChange="visibilitychange",(Obe=Zbe||(Zbe={})).Space="Space",Obe.Down="ArrowDown",Obe.Right="ArrowRight",Obe.Left="ArrowLeft",Obe.Up="ArrowUp",Obe.Esc="Escape",Obe.Enter="Enter";const Xbe={start:[Zbe.Space,Zbe.Enter],cancel:[Zbe.Esc],end:[Zbe.Space,Zbe.Enter]},Hbe=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case Zbe.Right:return{...n,x:n.x+25};case Zbe.Left:return{...n,x:n.x-25};case Zbe.Down:return{...n,y:n.y+25};case Zbe.Up:return{...n,y:n.y-25}}};class Dbe{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:t}}=e;this.props=e,this.listeners=new Lbe(Sge(t)),this.windowListeners=new Lbe(Tge(t)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Ebe.Resize,this.handleCancel),this.windowListeners.add(Ebe.VisibilityChange,this.handleCancel),setTimeout((()=>this.listeners.add(Ebe.Keydown,this.handleKeyDown)))}handleStart(){const{activeNode:e,onStart:t}=this.props,n=e.node.current;n&&function(e,t){if(void 0===t&&(t=ube),!e)return;const{top:n,left:r,bottom:a,right:i}=t(e);pbe(e)&&(a<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}(n),t($ge)}handleKeyDown(e){if(Hge(e)){const{active:t,context:n,options:r}=this.props,{keyboardCodes:a=Xbe,coordinateGetter:i=Hbe,scrollBehavior:o="smooth"}=r,{code:l}=e;if(a.end.includes(l))return void this.handleEnd(e);if(a.cancel.includes(l))return void this.handleCancel(e);const{collisionRect:s}=n.current,c=s?{x:s.left,y:s.top}:$ge;this.referenceCoordinates||(this.referenceCoordinates=c);const u=i(e,{active:t,context:n.current,currentCoordinates:c});if(u){const t=Xge(u,c),r={x:0,y:0},{scrollableAncestors:a}=n.current;for(const n of a){const a=e.code,{isTop:i,isRight:l,isLeft:s,isBottom:c,maxScroll:d,minScroll:f}=Tbe(n),p=Abe(n),h={x:Math.min(a===Zbe.Right?p.right-p.width/2:p.right,Math.max(a===Zbe.Right?p.left:p.left+p.width/2,u.x)),y:Math.min(a===Zbe.Down?p.bottom-p.height/2:p.bottom,Math.max(a===Zbe.Down?p.top:p.top+p.height/2,u.y))},m=a===Zbe.Right&&!l||a===Zbe.Left&&!s,y=a===Zbe.Down&&!c||a===Zbe.Up&&!i;if(m&&h.x!==u.x){const e=n.scrollLeft+t.x,i=a===Zbe.Right&&e<=d.x||a===Zbe.Left&&e>=f.x;if(i&&!t.y)return void n.scrollTo({left:e,behavior:o});r.x=i?n.scrollLeft-e:a===Zbe.Right?n.scrollLeft-d.x:n.scrollLeft-f.x,r.x&&n.scrollBy({left:-r.x,behavior:o});break}if(y&&h.y!==u.y){const e=n.scrollTop+t.y,i=a===Zbe.Down&&e<=d.y||a===Zbe.Up&&e>=f.y;if(i&&!t.x)return void n.scrollTo({top:e,behavior:o});r.y=i?n.scrollTop-e:a===Zbe.Down?n.scrollTop-d.y:n.scrollTop-f.y,r.y&&n.scrollBy({top:-r.y,behavior:o});break}}this.handleMove(e,Nge(Xge(u,this.referenceCoordinates),r))}}}handleMove(e,t){const{onMove:n}=this.props;e.preventDefault(),n(t)}handleEnd(e){const{onEnd:t}=this.props;e.preventDefault(),this.detach(),t()}handleCancel(e){const{onCancel:t}=this.props;e.preventDefault(),this.detach(),t()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}function Wbe(e){return Boolean(e&&"distance"in e)}function Gbe(e){return Boolean(e&&"delay"in e)}Dbe.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=Xbe,onActivation:a}=t,{active:i}=n;const{code:o}=e.nativeEvent;if(r.start.includes(o)){const t=i.activatorNode.current;return!(t&&e.target!==t||(e.preventDefault(),null==a||a({event:e.nativeEvent}),0))}return!1}}];class Vbe{constructor(e,t,n){var r;void 0===n&&(n=function(e){const{EventTarget:t}=Tge(e);return e instanceof t?e:Sge(e)}(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=t;const{event:a}=e,{target:i}=a;this.props=e,this.events=t,this.document=Sge(i),this.documentListeners=new Lbe(this.document),this.listeners=new Lbe(n),this.windowListeners=new Lbe(Tge(i)),this.initialCoordinates=null!=(r=Dge(a))?r:$ge,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:t,bypassActivationConstraint:n}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),this.windowListeners.add(Ebe.Resize,this.handleCancel),this.windowListeners.add(Ebe.DragStart,Rbe),this.windowListeners.add(Ebe.VisibilityChange,this.handleCancel),this.windowListeners.add(Ebe.ContextMenu,Rbe),this.documentListeners.add(Ebe.Keydown,this.handleKeydown),t){if(null!=n&&n({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Gbe(t))return void(this.timeoutId=setTimeout(this.handleStart,t.delay));if(Wbe(t))return}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),null!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handleStart(){const{initialCoordinates:e}=this,{onStart:t}=this.props;e&&(this.activated=!0,this.documentListeners.add(Ebe.Click,Nbe,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Ebe.SelectionChange,this.removeTextSelection),t(e))}handleMove(e){var t;const{activated:n,initialCoordinates:r,props:a}=this,{onMove:i,options:{activationConstraint:o}}=a;if(!r)return;const l=null!=(t=Dge(e))?t:$ge,s=Xge(r,l);if(!n&&o){if(Wbe(o)){if(null!=o.tolerance&&Pbe(s,o.tolerance))return this.handleCancel();if(Pbe(s,o.distance))return this.handleStart()}return Gbe(o)&&Pbe(s,o.tolerance)?this.handleCancel():void 0}e.cancelable&&e.preventDefault(),i(l)}handleEnd(){const{onEnd:e}=this.props;this.detach(),e()}handleCancel(){const{onCancel:e}=this.props;this.detach(),e()}handleKeydown(e){e.code===Zbe.Esc&&this.handleCancel()}removeTextSelection(){var e;null==(e=this.document.getSelection())||e.removeAllRanges()}}const zbe={move:{name:"pointermove"},end:{name:"pointerup"}};class Fbe extends Vbe{constructor(e){const{event:t}=e,n=Sge(t.target);super(e,zbe,n)}}Fbe.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!(!n.isPrimary||0!==n.button||(null==r||r({event:n}),0))}}];const Ybe={move:{name:"mousemove"},end:{name:"mouseup"}};var _be,Bbe;(Bbe=_be||(_be={}))[Bbe.RightClick=2]="RightClick";class jbe extends Vbe{constructor(e){super(e,Ybe,Sge(e.event.target))}}jbe.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button!==_be.RightClick&&(null==r||r({event:n}),!0)}}];const Kbe={move:{name:"touchmove"},end:{name:"touchend"}};class Jbe extends Vbe{constructor(e){super(e,Kbe)}static setup(){return window.addEventListener(Kbe.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(Kbe.move.name,e)};function e(){}}}var Ube,Qbe,qbe,$be;function exe(e){let{acceleration:t,activator:n=Ube.Pointer,canScroll:r,draggingRect:a,enabled:i,interval:o=5,order:l=qbe.TreeOrder,pointerCoordinates:s,scrollableAncestors:c,scrollableAncestorRects:u,delta:d,threshold:f}=e;const p=function(e){let{delta:t,disabled:n}=e;const r=Mge(t);return Pge((e=>{if(n||!r||!e)return txe;const a={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[gbe.Backward]:e.x[gbe.Backward]||-1===a.x,[gbe.Forward]:e.x[gbe.Forward]||1===a.x},y:{[gbe.Backward]:e.y[gbe.Backward]||-1===a.y,[gbe.Forward]:e.y[gbe.Forward]||1===a.y}}}),[n,t,r])}({delta:d,disabled:!i}),[h,m]=function(){const e=Y.useRef(null);return[Y.useCallback(((t,n)=>{e.current=setInterval(t,n)}),[]),Y.useCallback((()=>{null!==e.current&&(clearInterval(e.current),e.current=null)}),[])]}(),y=Y.useRef({x:0,y:0}),v=Y.useRef({x:0,y:0}),g=Y.useMemo((()=>{switch(n){case Ube.Pointer:return s?{top:s.y,bottom:s.y,left:s.x,right:s.x}:null;case Ube.DraggableRect:return a}}),[n,a,s]),b=Y.useRef(null),x=Y.useCallback((()=>{const e=b.current;if(!e)return;const t=y.current.x*v.current.x,n=y.current.y*v.current.y;e.scrollBy(t,n)}),[]),T=Y.useMemo((()=>l===qbe.TreeOrder?[...c].reverse():c),[l,c]);Y.useEffect((()=>{if(i&&c.length&&g){for(const e of T){if(!1===(null==r?void 0:r(e)))continue;const n=c.indexOf(e),a=u[n];if(!a)continue;const{direction:i,speed:l}=kbe(e,a,g,t,f);for(const e of["x","y"])p[e][i[e]]||(l[e]=0,i[e]=0);if(l.x>0||l.y>0)return m(),b.current=e,h(x,o),y.current=l,void(v.current=i)}y.current={x:0,y:0},v.current={x:0,y:0},m()}else m()}),[t,x,r,m,i,o,JSON.stringify(g),JSON.stringify(p),h,c,T,u,JSON.stringify(f)])}Jbe.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:a}=n;return!(a.length>1||(null==r||r({event:n}),0))}}],(Qbe=Ube||(Ube={}))[Qbe.Pointer=0]="Pointer",Qbe[Qbe.DraggableRect=1]="DraggableRect",($be=qbe||(qbe={}))[$be.TreeOrder=0]="TreeOrder",$be[$be.ReversedTreeOrder=1]="ReversedTreeOrder";const txe={x:{[gbe.Backward]:!1,[gbe.Forward]:!1},y:{[gbe.Backward]:!1,[gbe.Forward]:!1}};var nxe,rxe,axe;(rxe=nxe||(nxe={}))[rxe.Always=0]="Always",rxe[rxe.BeforeDragging=1]="BeforeDragging",rxe[rxe.WhileDragging=2]="WhileDragging",(axe||(axe={})).Optimized="optimized";const ixe=new Map;function oxe(e,t){return Pge((n=>e?n||("function"==typeof t?t(e):e):null),[t,e])}function lxe(e){let{callback:t,disabled:n}=e;const r=Ige(t),a=Y.useMemo((()=>{if(n||"undefined"==typeof window||void 0===window.ResizeObserver)return;const{ResizeObserver:e}=window;return new e(r)}),[n]);return Y.useEffect((()=>()=>null==a?void 0:a.disconnect()),[a]),a}function sxe(e){return new Ibe(ube(e),e)}function cxe(e,t,n){void 0===t&&(t=sxe);const[r,a]=Y.useReducer((function(r){if(!e)return null;var a;if(!1===e.isConnected)return null!=(a=null!=r?r:n)?a:null;const i=t(e);return JSON.stringify(r)===JSON.stringify(i)?r:i}),null),i=function(e){let{callback:t,disabled:n}=e;const r=Ige(t),a=Y.useMemo((()=>{if(n||"undefined"==typeof window||void 0===window.MutationObserver)return;const{MutationObserver:e}=window;return new e(r)}),[r,n]);return Y.useEffect((()=>()=>null==a?void 0:a.disconnect()),[a]),a}({callback(t){if(e)for(const n of t){const{type:t,target:r}=n;if("childList"===t&&r instanceof HTMLElement&&r.contains(e)){a();break}}}}),o=lxe({callback:a});return Cge((()=>{a(),e?(null==o||o.observe(e),null==i||i.observe(document.body,{childList:!0,subtree:!0})):(null==o||o.disconnect(),null==i||i.disconnect())}),[e]),r}const uxe=[];function dxe(e,t){void 0===t&&(t=[]);const n=Y.useRef(null);return Y.useEffect((()=>{n.current=null}),t),Y.useEffect((()=>{const t=e!==$ge;t&&!n.current&&(n.current=e),!t&&n.current&&(n.current=null)}),[e]),n.current?Xge(e,n.current):$ge}function fxe(e){return Y.useMemo((()=>e?function(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}(e):null),[e])}const pxe=[];function hxe(e){let{measure:t}=e;const[n,r]=Y.useState(null),a=lxe({callback:Y.useCallback((e=>{for(const{target:n}of e)if(kge(n)){r((e=>{const r=t(n);return e?{...e,width:r.width,height:r.height}:r}));break}}),[t])}),i=Y.useCallback((e=>{const n=function(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return kge(t)?t:e}(e);null==a||a.disconnect(),n&&(null==a||a.observe(n)),r(n?t(n):null)}),[t,a]),[o,l]=Ege(i);return Y.useMemo((()=>({nodeRef:o,rect:n,setRef:l})),[n,o,l])}const mxe=[{sensor:Fbe,options:{}},{sensor:Dbe,options:{}}],yxe={current:{}},vxe={draggable:{measure:dbe},droppable:{measure:dbe,strategy:nxe.WhileDragging,frequency:axe.Optimized},dragOverlay:{measure:ube}};class gxe extends Map{get(e){var t;return null!=e&&null!=(t=super.get(e))?t:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter((e=>{let{disabled:t}=e;return!t}))}getNodeFor(e){var t,n;return null!=(t=null==(n=this.get(e))?void 0:n.node.current)?t:void 0}}const bxe={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new gxe,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:Qge},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:vxe,measureDroppableContainers:Qge,windowRect:null,measuringScheduled:!1},xxe={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:Qge,draggableNodes:new Map,over:null,measureDroppableContainers:Qge},Txe=Y.createContext(xxe),wxe=Y.createContext(bxe);function kxe(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new gxe}}}function Axe(e,t){switch(t.type){case Jge.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case Jge.DragMove:return e.draggable.active?{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}}:e;case Jge.DragEnd:case Jge.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Jge.RegisterDroppable:{const{element:n}=t,{id:r}=n,a=new gxe(e.droppable.containers);return a.set(r,n),{...e,droppable:{...e.droppable,containers:a}}}case Jge.SetDroppableDisabled:{const{id:n,key:r,disabled:a}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const o=new gxe(e.droppable.containers);return o.set(n,{...i,disabled:a}),{...e,droppable:{...e.droppable,containers:o}}}case Jge.UnregisterDroppable:{const{id:n,key:r}=t,a=e.droppable.containers.get(n);if(!a||r!==a.key)return e;const i=new gxe(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function Sxe(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:a}=Y.useContext(Txe),i=Mge(r),o=Mge(null==n?void 0:n.id);return Y.useEffect((()=>{if(!t&&!r&&i&&null!=o){if(!Hge(i))return;if(document.activeElement===i.target)return;const e=a.get(o);if(!e)return;const{activatorNode:t,node:n}=e;if(!t.current&&!n.current)return;requestAnimationFrame((()=>{for(const e of[t.current,n.current]){if(!e)continue;const t=Vge(e);if(t){t.focus();break}}}))}}),[r,t,a,o,i]),null}const Cxe=Y.createContext({...$ge,scaleX:1,scaleY:1});var Ixe,Lxe;(Lxe=Ixe||(Ixe={}))[Lxe.Uninitialized=0]="Uninitialized",Lxe[Lxe.Initializing=1]="Initializing",Lxe[Lxe.Initialized=2]="Initialized";const Pxe=Y.memo((function(e){var t,n,r,a;let{id:i,accessibility:o,autoScroll:l=!0,children:s,sensors:c=mxe,collisionDetection:u=ibe,measuring:d,modifiers:f,...p}=e;const h=Y.useReducer(Axe,void 0,kxe),[m,y]=h,[v,g]=function(){const[e]=Y.useState((()=>new Set)),t=Y.useCallback((t=>(e.add(t),()=>e.delete(t))),[e]);return[Y.useCallback((t=>{let{type:n,event:r}=t;e.forEach((e=>{var t;return null==(t=e[n])?void 0:t.call(e,r)}))}),[e]),t]}(),[b,x]=Y.useState(Ixe.Uninitialized),T=b===Ixe.Initialized,{draggable:{active:w,nodes:k,translate:A},droppable:{containers:S}}=m,C=w?k.get(w):null,I=Y.useRef({initial:null,translated:null}),L=Y.useMemo((()=>{var e;return null!=w?{id:w,data:null!=(e=null==C?void 0:C.data)?e:yxe,rect:I}:null}),[w,C]),P=Y.useRef(null),[E,M]=Y.useState(null),[Z,O]=Y.useState(null),R=Lge(p,Object.values(p)),N=Oge("DndDescribedBy",i),X=Y.useMemo((()=>S.getEnabled()),[S]),H=(D=d,Y.useMemo((()=>({draggable:{...vxe.draggable,...null==D?void 0:D.draggable},droppable:{...vxe.droppable,...null==D?void 0:D.droppable},dragOverlay:{...vxe.dragOverlay,...null==D?void 0:D.dragOverlay}})),[null==D?void 0:D.draggable,null==D?void 0:D.droppable,null==D?void 0:D.dragOverlay]));var D;const{droppableRects:W,measureDroppableContainers:G,measuringScheduled:V}=function(e,t){let{dragging:n,dependencies:r,config:a}=t;const[i,o]=Y.useState(null),{frequency:l,measure:s,strategy:c}=a,u=Y.useRef(e),d=function(){switch(c){case nxe.Always:return!1;case nxe.BeforeDragging:return n;default:return!n}}(),f=Lge(d),p=Y.useCallback((function(e){void 0===e&&(e=[]),f.current||o((t=>null===t?e:t.concat(e.filter((e=>!t.includes(e))))))}),[f]),h=Y.useRef(null),m=Pge((t=>{if(d&&!n)return ixe;if(!t||t===ixe||u.current!==e||null!=i){const t=new Map;for(let n of e){if(!n)continue;if(i&&i.length>0&&!i.includes(n.id)&&n.rect.current){t.set(n.id,n.rect.current);continue}const e=n.node.current,r=e?new Ibe(s(e),e):null;n.rect.current=r,r&&t.set(n.id,r)}return t}return t}),[e,i,n,d,s]);return Y.useEffect((()=>{u.current=e}),[e]),Y.useEffect((()=>{d||p()}),[n,d]),Y.useEffect((()=>{i&&i.length>0&&o(null)}),[JSON.stringify(i)]),Y.useEffect((()=>{d||"number"!=typeof l||null!==h.current||(h.current=setTimeout((()=>{p(),h.current=null}),l))}),[l,d,p,...r]),{droppableRects:m,measureDroppableContainers:p,measuringScheduled:null!=i}}(X,{dragging:T,dependencies:[A.x,A.y],config:H.droppable}),z=function(e,t){const n=null!==t?e.get(t):void 0,r=n?n.node.current:null;return Pge((e=>{var n;return null===t?null:null!=(n=null!=r?r:e)?n:null}),[r,t])}(k,w),F=Y.useMemo((()=>Z?Dge(Z):null),[Z]),B=function(){const e=!1===(null==E?void 0:E.autoScrollEnabled),t="object"==typeof l?!1===l.enabled:!1===l,n=T&&!e&&!t;return"object"==typeof l?{...l,enabled:n}:{enabled:n}}(),j=function(e,t){return oxe(e,t)}(z,H.draggable.measure);!function(e){let{activeNode:t,measure:n,initialRect:r,config:a=!0}=e;const i=Y.useRef(!1),{x:o,y:l}="boolean"==typeof a?{x:a,y:a}:a;Cge((()=>{if(!o&&!l||!t)return void(i.current=!1);if(i.current||!r)return;const e=null==t?void 0:t.node.current;if(!e||!1===e.isConnected)return;const a=obe(n(e),r);if(o||(a.x=0),l||(a.y=0),i.current=!0,Math.abs(a.x)>0||Math.abs(a.y)>0){const t=pbe(e);t&&t.scrollBy({top:a.y,left:a.x})}}),[t,o,l,r,n])}({activeNode:w?k.get(w):null,config:B.layoutShiftCompensation,initialRect:j,measure:H.draggable.measure});const K=cxe(z,H.draggable.measure,j),J=cxe(z?z.parentElement:null),U=Y.useRef({activatorEvent:null,active:null,activeNode:z,collisionRect:null,collisions:null,droppableRects:W,draggableNodes:k,draggingNode:null,draggingNodeRect:null,droppableContainers:S,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Q=S.getNodeFor(null==(t=U.current.over)?void 0:t.id),q=hxe({measure:H.dragOverlay.measure}),$=null!=(n=q.nodeRef.current)?n:z,ee=T?null!=(r=q.rect)?r:K:null,te=Boolean(q.nodeRef.current&&q.rect),ne=obe(re=te?null:K,oxe(re));var re;const ae=fxe($?Tge($):null),ie=function(e){const t=Y.useRef(e),n=Pge((n=>e?n&&n!==uxe&&e&&t.current&&e.parentNode===t.current.parentNode?n:fbe(e):uxe),[e]);return Y.useEffect((()=>{t.current=e}),[e]),n}(T?null!=Q?Q:z:null),oe=function(e,t){void 0===t&&(t=ube);const[n]=e,r=fxe(n?Tge(n):null),[a,i]=Y.useReducer((function(){return e.length?e.map((e=>xbe(e)?r:new Ibe(t(e),e))):pxe}),pxe),o=lxe({callback:i});return e.length>0&&a===pxe&&i(),Cge((()=>{e.length?e.forEach((e=>null==o?void 0:o.observe(e))):(null==o||o.disconnect(),i())}),[e]),a}(ie),le=function(e,t){let{transform:n,...r}=t;return null!=e&&e.length?e.reduce(((e,t)=>t({transform:e,...r})),n):n}(f,{transform:{x:A.x-ne.x,y:A.y-ne.y,scaleX:1,scaleY:1},activatorEvent:Z,active:L,activeNodeRect:K,containerNodeRect:J,draggingNodeRect:ee,over:U.current.over,overlayNodeRect:q.rect,scrollableAncestors:ie,scrollableAncestorRects:oe,windowRect:ae}),se=F?Nge(F,A):null,ce=function(e){const[t,n]=Y.useState(null),r=Y.useRef(e),a=Y.useCallback((e=>{const t=hbe(e.target);t&&n((e=>e?(e.set(t,vbe(t)),new Map(e)):null))}),[]);return Y.useEffect((()=>{const t=r.current;if(e!==t){i(t);const o=e.map((e=>{const t=hbe(e);return t?(t.addEventListener("scroll",a,{passive:!0}),[t,vbe(t)]):null})).filter((e=>null!=e));n(o.length?new Map(o):null),r.current=e}return()=>{i(e),i(t)};function i(e){e.forEach((e=>{const t=hbe(e);null==t||t.removeEventListener("scroll",a)}))}}),[a,e]),Y.useMemo((()=>e.length?t?Array.from(t.values()).reduce(((e,t)=>Nge(e,t)),$ge):Sbe(e):$ge),[e,t])}(ie),ue=dxe(ce),de=dxe(ce,[K]),fe=Nge(le,ue),pe=ee?sbe(ee,le):null,he=L&&pe?u({active:L,collisionRect:pe,droppableRects:W,droppableContainers:X,pointerCoordinates:se}):null,me=function(e,t){if(!e||0===e.length)return null;const[n]=e;return t?n[t]:n}(he,"id"),[ye,ve]=Y.useState(null),ge=function(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}(te?le:Nge(le,de),null!=(a=null==ye?void 0:ye.rect)?a:null,K),be=Y.useCallback(((e,t)=>{let{sensor:n,options:r}=t;if(null==P.current)return;const a=k.get(P.current);if(!a)return;const i=e.nativeEvent,o=new n({active:P.current,activeNode:a,event:i,options:r,context:U,onStart(e){const t=P.current;if(null==t)return;const n=k.get(t);if(!n)return;const{onDragStart:r}=R.current,a={active:{id:t,data:n.data,rect:I}};ld.unstable_batchedUpdates((()=>{null==r||r(a),x(Ixe.Initializing),y({type:Jge.DragStart,initialCoordinates:e,active:t}),v({type:"onDragStart",event:a})}))},onMove(e){y({type:Jge.DragMove,coordinates:e})},onEnd:l(Jge.DragEnd),onCancel:l(Jge.DragCancel)});function l(e){return async function(){const{active:t,collisions:n,over:r,scrollAdjustedTranslate:a}=U.current;let o=null;if(t&&a){const{cancelDrop:l}=R.current;o={activatorEvent:i,active:t,collisions:n,delta:a,over:r},e===Jge.DragEnd&&"function"==typeof l&&await Promise.resolve(l(o))&&(e=Jge.DragCancel)}P.current=null,ld.unstable_batchedUpdates((()=>{y({type:e}),x(Ixe.Uninitialized),ve(null),M(null),O(null);const t=e===Jge.DragEnd?"onDragEnd":"onDragCancel";if(o){const e=R.current[t];null==e||e(o),v({type:t,event:o})}}))}}ld.unstable_batchedUpdates((()=>{M(o),O(e.nativeEvent)}))}),[k]),xe=function(e,t){return Y.useMemo((()=>e.reduce(((e,n)=>{const{sensor:r}=n;return[...e,...r.activators.map((e=>({eventName:e.eventName,handler:t(e.handler,n)})))]}),[])),[e,t])}(c,Y.useCallback(((e,t)=>(n,r)=>{const a=n.nativeEvent,i=k.get(r);if(null!==P.current||!i||a.dndKit||a.defaultPrevented)return;const o={active:i};!0===e(n,t.options,o)&&(a.dndKit={capturedBy:t.sensor},P.current=r,be(n,t))}),[k,be]));!function(e){Y.useEffect((()=>{if(!gge)return;const t=e.map((e=>{let{sensor:t}=e;return null==t.setup?void 0:t.setup()}));return()=>{for(const e of t)null==e||e()}}),e.map((e=>{let{sensor:t}=e;return t})))}(c),Cge((()=>{K&&b===Ixe.Initializing&&x(Ixe.Initialized)}),[K,b]),Y.useEffect((()=>{const{onDragMove:e}=R.current,{active:t,activatorEvent:n,collisions:r,over:a}=U.current;if(!t||!n)return;const i={active:t,activatorEvent:n,collisions:r,delta:{x:fe.x,y:fe.y},over:a};ld.unstable_batchedUpdates((()=>{null==e||e(i),v({type:"onDragMove",event:i})}))}),[fe.x,fe.y]),Y.useEffect((()=>{const{active:e,activatorEvent:t,collisions:n,droppableContainers:r,scrollAdjustedTranslate:a}=U.current;if(!e||null==P.current||!t||!a)return;const{onDragOver:i}=R.current,o=r.get(me),l=o&&o.rect.current?{id:o.id,rect:o.rect.current,data:o.data,disabled:o.disabled}:null,s={active:e,activatorEvent:t,collisions:n,delta:{x:a.x,y:a.y},over:l};ld.unstable_batchedUpdates((()=>{ve(l),null==i||i(s),v({type:"onDragOver",event:s})}))}),[me]),Cge((()=>{U.current={activatorEvent:Z,active:L,activeNode:z,collisionRect:pe,collisions:he,droppableRects:W,draggableNodes:k,draggingNode:$,draggingNodeRect:ee,droppableContainers:S,over:ye,scrollableAncestors:ie,scrollAdjustedTranslate:fe},I.current={initial:ee,translated:pe}}),[L,z,he,pe,k,$,ee,W,S,ye,ie,fe]),exe({...B,delta:A,draggingRect:pe,pointerCoordinates:se,scrollableAncestors:ie,scrollableAncestorRects:oe});const Te=Y.useMemo((()=>({active:L,activeNode:z,activeNodeRect:K,activatorEvent:Z,collisions:he,containerNodeRect:J,dragOverlay:q,draggableNodes:k,droppableContainers:S,droppableRects:W,over:ye,measureDroppableContainers:G,scrollableAncestors:ie,scrollableAncestorRects:oe,measuringConfiguration:H,measuringScheduled:V,windowRect:ae})),[L,z,K,Z,he,J,q,k,S,W,ye,G,ie,oe,H,V,ae]),we=Y.useMemo((()=>({activatorEvent:Z,activators:xe,active:L,activeNodeRect:K,ariaDescribedById:{draggable:N},dispatch:y,draggableNodes:k,over:ye,measureDroppableContainers:G})),[Z,xe,L,K,y,N,k,ye,G]);return _.createElement(_ge.Provider,{value:g},_.createElement(Txe.Provider,{value:we},_.createElement(wxe.Provider,{value:Te},_.createElement(Cxe.Provider,{value:ge},s)),_.createElement(Sxe,{disabled:!1===(null==o?void 0:o.restoreFocus)})),_.createElement(Kge,{...o,hiddenTextDescribedById:N}))})),Exe=Y.createContext(null),Mxe="button";function Zxe(e){let{id:t,data:n,disabled:r=!1,attributes:a}=e;const i=Oge("Droppable"),{activators:o,activatorEvent:l,active:s,activeNodeRect:c,ariaDescribedById:u,draggableNodes:d,over:f}=Y.useContext(Txe),{role:p=Mxe,roleDescription:h="draggable",tabIndex:m=0}=null!=a?a:{},y=(null==s?void 0:s.id)===t,v=Y.useContext(y?Cxe:Exe),[g,b]=Ege(),[x,T]=Ege(),w=function(e,t){return Y.useMemo((()=>e.reduce(((e,n)=>{let{eventName:r,handler:a}=n;return e[r]=e=>{a(e,t)},e}),{})),[e,t])}(o,t),k=Lge(n);return Cge((()=>(d.set(t,{id:t,key:i,node:g,activatorNode:x,data:k}),()=>{const e=d.get(t);e&&e.key===i&&d.delete(t)})),[d,t]),{active:s,activatorEvent:l,activeNodeRect:c,attributes:Y.useMemo((()=>({role:p,tabIndex:m,"aria-disabled":r,"aria-pressed":!(!y||p!==Mxe)||void 0,"aria-roledescription":h,"aria-describedby":u.draggable})),[r,p,m,y,h,u.draggable]),isDragging:y,listeners:r?void 0:w,node:g,over:f,setNodeRef:b,setActivatorNodeRef:T,transform:v}}const Oxe={timeout:25};function Rxe(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Nxe(e,t){return e.reduce(((e,n,r)=>{const a=t.get(n);return a&&(e[r]=a),e}),Array(e.length))}function Xxe(e){return null!==e&&e>=0}const Hxe=e=>{let{rects:t,activeIndex:n,overIndex:r,index:a}=e;const i=Rxe(t,r,n),o=t[a],l=i[a];return l&&o?{x:l.left-o.left,y:l.top-o.top,scaleX:l.width/o.width,scaleY:l.height/o.height}:null},Dxe="Sortable",Wxe=_.createContext({activeIndex:-1,containerId:Dxe,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:Hxe,disabled:{draggable:!1,droppable:!1}});function Gxe(e){let{children:t,id:n,items:r,strategy:a=Hxe,disabled:i=!1}=e;const{active:o,dragOverlay:l,droppableRects:s,over:c,measureDroppableContainers:u}=Y.useContext(wxe),d=Oge(Dxe,n),f=Boolean(null!==l.rect),p=Y.useMemo((()=>r.map((e=>"object"==typeof e&&"id"in e?e.id:e))),[r]),h=null!=o,m=o?p.indexOf(o.id):-1,y=c?p.indexOf(c.id):-1,v=Y.useRef(p),g=!function(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{g&&h&&u(p)}),[g,p,h,u]),Y.useEffect((()=>{v.current=p}),[p]);const T=Y.useMemo((()=>({activeIndex:m,containerId:d,disabled:x,disableTransforms:b,items:p,overIndex:y,useDragOverlay:f,sortedRects:Nxe(p,s),strategy:a})),[m,d,x.draggable,x.droppable,b,p,y,s,f,a]);return _.createElement(Wxe.Provider,{value:T},t)}const Vxe=e=>{let{id:t,items:n,activeIndex:r,overIndex:a}=e;return Rxe(n,r,a).indexOf(t)},zxe=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:a,items:i,newIndex:o,previousItems:l,previousContainerId:s,transition:c}=e;return!(!c||!r||l!==i&&a===o||!n&&(o===a||t!==s))},Fxe={duration:200,easing:"ease"},Yxe="transform",_xe=Wge.Transition.toString({property:Yxe,duration:0,easing:"linear"}),Bxe={roleDescription:"sortable"};function jxe(e){let{animateLayoutChanges:t=zxe,attributes:n,disabled:r,data:a,getNewIndex:i=Vxe,id:o,strategy:l,resizeObserverConfig:s,transition:c=Fxe}=e;const{items:u,containerId:d,activeIndex:f,disabled:p,disableTransforms:h,sortedRects:m,overIndex:y,useDragOverlay:v,strategy:g}=Y.useContext(Wxe),b=function(e,t){var n,r;return"boolean"==typeof e?{draggable:e,droppable:!1}:{draggable:null!=(n=null==e?void 0:e.draggable)?n:t.draggable,droppable:null!=(r=null==e?void 0:e.droppable)?r:t.droppable}}(r,p),x=u.indexOf(o),T=Y.useMemo((()=>({sortable:{containerId:d,index:x,items:u},...a})),[d,a,x,u]),w=Y.useMemo((()=>u.slice(u.indexOf(o))),[u,o]),{rect:k,node:A,isOver:S,setNodeRef:C}=function(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:a}=e;const i=Oge("Droppable"),{active:o,dispatch:l,over:s,measureDroppableContainers:c}=Y.useContext(Txe),u=Y.useRef({disabled:n}),d=Y.useRef(!1),f=Y.useRef(null),p=Y.useRef(null),{disabled:h,updateMeasurementsFor:m,timeout:y}={...Oxe,...a},v=Lge(null!=m?m:r),g=lxe({callback:Y.useCallback((()=>{d.current?(null!=p.current&&clearTimeout(p.current),p.current=setTimeout((()=>{c(Array.isArray(v.current)?v.current:[v.current]),p.current=null}),y)):d.current=!0}),[y]),disabled:h||!o}),b=Y.useCallback(((e,t)=>{g&&(t&&(g.unobserve(t),d.current=!1),e&&g.observe(e))}),[g]),[x,T]=Ege(b),w=Lge(t);return Y.useEffect((()=>{g&&x.current&&(g.disconnect(),d.current=!1,g.observe(x.current))}),[x,g]),Cge((()=>(l({type:Jge.RegisterDroppable,element:{id:r,key:i,disabled:n,node:x,rect:f,data:w}}),()=>l({type:Jge.UnregisterDroppable,key:i,id:r}))),[r]),Y.useEffect((()=>{n!==u.current.disabled&&(l({type:Jge.SetDroppableDisabled,id:r,key:i,disabled:n}),u.current.disabled=n)}),[r,i,n,l]),{active:o,rect:f,isOver:(null==s?void 0:s.id)===r,node:x,over:s,setNodeRef:T}}({id:o,data:T,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:w,...s}}),{active:I,activatorEvent:L,activeNodeRect:P,attributes:E,setNodeRef:M,listeners:Z,isDragging:O,over:R,setActivatorNodeRef:N,transform:X}=Zxe({id:o,data:T,attributes:{...Bxe,...n},disabled:b.draggable}),H=function(){for(var e=arguments.length,t=new Array(e),n=0;ne=>{t.forEach((t=>t(e)))}),t)}(C,M),D=Boolean(I),W=D&&!h&&Xxe(f)&&Xxe(y),G=!v&&O,V=G&&W?X:null,z=W?null!=V?V:(null!=l?l:g)({rects:m,activeNodeRect:P,activeIndex:f,overIndex:y,index:x}):null,F=Xxe(f)&&Xxe(y)?i({id:o,items:u,activeIndex:f,overIndex:y}):x,_=null==I?void 0:I.id,B=Y.useRef({activeId:_,items:u,newIndex:F,containerId:d}),j=u!==B.current.items,K=t({active:I,containerId:d,isDragging:O,isSorting:D,id:o,index:x,items:u,newIndex:B.current.newIndex,previousItems:B.current.items,previousContainerId:B.current.containerId,transition:c,wasDragging:null!=B.current.activeId}),J=function(e){let{disabled:t,index:n,node:r,rect:a}=e;const[i,o]=Y.useState(null),l=Y.useRef(n);return Cge((()=>{if(!t&&n!==l.current&&r.current){const e=a.current;if(e){const t=ube(r.current,{ignoreTransform:!0}),n={x:e.left-t.left,y:e.top-t.top,scaleX:e.width/t.width,scaleY:e.height/t.height};(n.x||n.y)&&o(n)}}n!==l.current&&(l.current=n)}),[t,n,r,a]),Y.useEffect((()=>{i&&o(null)}),[i]),i}({disabled:!K,index:x,node:A,rect:k});return Y.useEffect((()=>{D&&B.current.newIndex!==F&&(B.current.newIndex=F),d!==B.current.containerId&&(B.current.containerId=d),u!==B.current.items&&(B.current.items=u)}),[D,F,d,u]),Y.useEffect((()=>{if(_===B.current.activeId)return;if(_&&!B.current.activeId)return void(B.current.activeId=_);const e=setTimeout((()=>{B.current.activeId=_}),50);return()=>clearTimeout(e)}),[_]),{active:I,activeIndex:f,attributes:E,data:T,rect:k,index:x,newIndex:F,items:u,isOver:S,isSorting:D,isDragging:O,listeners:Z,node:A,overIndex:y,over:R,setNodeRef:H,setActivatorNodeRef:N,setDroppableNodeRef:C,setDraggableNodeRef:M,transform:null!=J?J:z,transition:J||j&&B.current.newIndex===x?_xe:G&&!Hge(L)||!c?void 0:D||K?Wge.Transition.toString({...c,property:Yxe}):void 0}}Zbe.Down,Zbe.Right,Zbe.Up,Zbe.Left;var Kxe={},Jxe=wv;Object.defineProperty(Kxe,"__esModule",{value:!0});var Uxe=Kxe.default=void 0,Qxe=Jxe(mD()),qxe=ee;Uxe=Kxe.default=(0,Qxe.default)((0,qxe.jsx)("path",{d:"m6 14 3 3v5h6v-5l3-3V9H6zm5-12h2v3h-2zM3.5 5.88l1.41-1.41 2.12 2.12L5.62 8zm13.46.71 2.12-2.12 1.41 1.41L18.38 8z"}),"Highlight");var $xe={},eTe=wv;Object.defineProperty($xe,"__esModule",{value:!0});var tTe=$xe.default=void 0,nTe=eTe(mD()),rTe=ee;tTe=$xe.default=(0,nTe.default)((0,rTe.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear");const aTe=_.forwardRef(((e,t)=>{const{item:n,onDelete:r,onHighlight:a,isDragging:i,containerStyle:o,...l}=e,s=gg(),c={display:"flex",flexDirection:"row",alignItems:"center",borderWidth:1,borderRadius:4,borderStyle:"solid",borderColor:s.palette.divider,backgroundColor:s.palette.background.paper,padding:s.spacing(.5),margin:s.spacing(1),opacity:e.isDragging?.5:1,...o};return ee.jsxs(aS,{ref:t,sx:c,...l,children:[ee.jsx(YT,{sx:{paddingLeft:s.spacing(1)},children:n.id}),ee.jsxs(NP,{size:"small",children:[a&&ee.jsx(EP,{value:"check",selected:n.highlighted,onClick:()=>a(n.id),children:ee.jsx(Uxe,{fontSize:"extraSmall"})}),r&&ee.jsx(EP,{value:"check",selected:!1,onClick:()=>r(n.id),children:ee.jsx(tTe,{fontSize:"extraSmall"})})]})]})}));function iTe(e){const{attributes:t,isDragging:n,listeners:r,setNodeRef:a,transform:i,transition:o}=jxe({id:e.item.id}),l={transform:Wge.Transform.toString(i),transition:o};return ee.jsx(aTe,{ref:a,containerStyle:l,isDragging:n,...e,...t,...r})}var oTe={},lTe=wv;Object.defineProperty(oTe,"__esModule",{value:!0});var sTe=oTe.default=void 0,cTe=lTe(mD()),uTe=ee;sTe=oTe.default=(0,cTe.default)((0,uTe.jsx)("path",{d:"M5 13h14v-2H5zm-2 4h14v-2H3zM7 7v2h14V7z"}),"ClearAll");var dTe={},fTe=wv;Object.defineProperty(dTe,"__esModule",{value:!0});var pTe=dTe.default=void 0,hTe=fTe(mD()),mTe=ee;pTe=dTe.default=(0,hTe.default)((0,mTe.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff");var yTe={},vTe=wv;Object.defineProperty(yTe,"__esModule",{value:!0});var gTe=yTe.default=void 0,bTe=vTe(mD()),xTe=ee;function TTe(e){const{antibodies:t,onAntibodiesChange:n,antibodyOptions:r,cellType:a,onCellTypeChange:i,filterEmpty:o,onFilterEmtpyChange:l}=e,s=gg(),c=ty(s.breakpoints.down("sm")),u=lge("0"),d=_.useMemo((()=>u?["all",...(null==u?void 0:u.uniqueCellTypes)?u.uniqueCellTypes:[]]:void 0),[u]),f=_.useCallback((()=>{const e=[];for(const t of sge){const n=d&&!d.includes(t.value);e.push(ee.jsx(SI,{value:t.value,disabled:n,children:t.label},t.value))}return e}),[d]),p=_.useCallback((async e=>{const r=t.findIndex((t=>t.id===e));-1===r&&console.warn("Could not find item to delete");const a=t.filter(((e,t)=>t!==r));n(a)}),[n,t]),h=_.useCallback((async e=>{const r=t.findIndex((t=>t.id===e)),a=[...t];a[r].highlighted=!a[r].highlighted,n(a)}),[n,t]);return ee.jsxs(aS,{sx:{display:"flex",flexDirection:"column",marginTop:s.spacing(1),width:"100%"},children:[ee.jsxs(aS,{sx:{display:"flex",flexDirection:c?"column":"row",gap:s.spacing(2)},children:[ee.jsx(TP,{select:!0,onChange:e=>i(e.target.value),value:a,label:"Filter cell type",sx:{minWidth:160,flexGrow:0},children:f()}),ee.jsxs(aS,{sx:{flexGrow:1,display:"flex",maxWidth:400,gap:s.spacing(2)},children:[ee.jsx(jA,{options:r,sx:{flexGrow:1},clearOnBlur:!0,clearOnEscape:!0,blurOnSelect:!0,getOptionDisabled:e=>-1!==t.findIndex((t=>t.id===e)),onChange:(e,r)=>{if(!r)return;const a=[...t],i=t.findIndex((e=>e.id===r));-1===i||a.splice(i,1),a.push({id:r,highlighted:!1}),n(a)},renderInput:e=>ee.jsx(TP,{...e,label:"Filter antibodies",InputProps:{...e.InputProps,type:"text"}})}),ee.jsxs(NP,{children:[ee.jsx(PL,{title:"Reset antibodies filter",children:ee.jsx(EP,{selected:!1,value:"check",onChange:()=>n([]),children:ee.jsx(sTe,{})})}),ee.jsx(PL,{title:"Toggle visibility of antibodies with no component",children:ee.jsx(EP,{selected:o,onChange:()=>l(!o),value:"check",children:o?ee.jsx(pTe,{}):ee.jsx(gTe,{})})})]})]})]}),ee.jsx(wTe,{items:t,onDragEnd:e=>{const{active:r,over:a}=e;if(void 0!==(null==a?void 0:a.id)&&r.id!==a.id){const e=t.findIndex((e=>e.id===r.id)),i=t.findIndex((e=>e.id===a.id)),o=function(e,t,n){const r=Array.from(e),[a]=r.splice(t,1);return r.splice(n,0,a),r}(t,e,i);n(o)}},onDelete:p,onHighlight:h},"violinplot-antibody-selection")]})}gTe=yTe.default=(0,bTe.default)((0,xTe.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility");const wTe=_.memo((e=>{const{items:t,onDragEnd:n,onDelete:r,onHighlight:a}=e,i=gg(),o=function(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter((e=>null!=e))),[...t])}(qge(jbe,{activationConstraint:{distance:8}}),qge(Jbe)),l={display:"flex",flexDirection:"row",flexWrap:"wrap",height:"100%",maxHeight:"30rem",marginTop:i.spacing(2),marginBottom:i.spacing(2)};return ee.jsx(Pxe,{autoScroll:!1,sensors:o,collisionDetection:rbe,onDragEnd:n,children:ee.jsx(Gxe,{items:t,strategy:Hxe,children:ee.jsx(aS,{sx:l,children:t.map(((e,t)=>ee.jsx(iTe,{item:e,index:t,onDelete:r,onHighlight:a},e.id)))})})})}));var kTe={};Object.defineProperty(kTe,"__esModule",{value:!0});var ATe=kTe.default=function(e){void 0===e&&(e={});var t=/^0/,n=/\s+/g,r=/^\s+|\s+$/g,a=/[^\x00-\x80]/,i=/^0x[0-9a-f]+$/i,o=/(0x[\da-fA-F]+|(^[\+\-]?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?(?=\D|\s|$))|\d+)/g,l=/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,s=String.prototype.toLocaleLowerCase||String.prototype.toLowerCase,c=e.desc?-1:1,u=-c,d=e.insensitive?function(e){return s.call(""+e).replace(r,"")}:function(e){return(""+e).replace(r,"")};function f(e){return e.replace(o,"\0$1\0").replace(/\0$/,"").replace(/^\0/,"").split("\0")}function p(e,a){return(!e.match(t)||1===a)&&parseFloat(e)||e.replace(n," ").replace(r,"")||0}return function(e,t){var n=d(e),r=d(t);if(!n&&!r)return 0;if(!n&&r)return u;if(n&&!r)return c;var o=f(n),s=f(r),h=n.match(i),m=r.match(i),y=h&&m?parseInt(h[0],16):1!==o.length&&Date.parse(n),v=h&&m?parseInt(m[0],16):y&&r.match(l)&&Date.parse(r)||null;if(v){if(y===v)return 0;if(yv)return c}for(var g=o.length,b=s.length,x=0,T=Math.max(g,b);x0)return c;if(A<0)return u;if(x===T-1)return 0}if(wk)return c;if(""+w<""+k)return u;if(""+w>""+k)return c}return 0}};const STe=_.memo((function(e){const t=gg(),n=vge(e.datasetId),r=ege(e.datasetId),a=lge(e.datasetId),[i,o]=_.useState(sge[0].value),[l,s]=_.useState([]),[c,u]=_.useState(!0),d=_.useMemo((()=>n?Object.keys(n.data):[]),[n]),f=_.useMemo((()=>{if(r)return new Set(d.map((e=>function(e,t){let n=!1;const r=t.antibodies.findIndex((t=>t===e));if(r)return n=(null==t?void 0:t.percentages[r])<1e-6,n;console.warn(`Could not find antibody with key ${e} in antibody counts data`)}(e,r)?e:void 0)).filter((e=>void 0!==e)))}),[d,r]),p=_.useMemo((()=>a&&n?function(e,t,n){const r=new Dve({component:n.components,...n.data});if("all"===e)return r;const a=e?new Set(t.cellTypeComponentsMapping[e]):new Set;return r.filter((e=>a.has(e.get("component"))))}(i,a,n):void 0),[i,a,n]),h=_.useMemo((()=>{var e;if(!p)return;const n=[],r=void 0!==l.find((e=>e.highlighted)),a=p.listColumns().slice(1);for(const i of a){const a=p.toArray(i),o=0===l.length||l.find((e=>e.id===i)),s=o&&(null==(e=l.find((e=>e.id===i)))?void 0:e.highlighted);if(o){if(c&&(null==f?void 0:f.has(i)))continue;const e={name:i,type:"violin",y:a.map((e=>Math.log(e+1))),points:"outliers",box:{visible:!0},opacity:1,meanline:{visible:!0},x0:i};r&&!s&&(e.line={color:t.palette.action.disabled},e.opacity=t.palette.action.disabledOpacity),n.push(e)}}return n}),[p,l,f,c,t]),m=_.useMemo((()=>{let e=l.map((e=>e.id));return 0===l.length&&(e=[...d].sort(ATe())),c&&(e=e.filter((e=>!(null==f?void 0:f.has(e))))),{template:BJ,colorway:t.palette.colorway.default,yaxis:{anchor:"x",type:"linear",title:"Log10 (1 + count)"},xaxis:{anchor:"y",type:"category",categoryorder:"array",categoryarray:e},showlegend:!1,margin:{l:40,r:40,t:40,b:40}}}),[c,l,d,t.palette.colorway.default,f]);return ee.jsxs(aS,{width:"100%",height:"100%",sx:{display:"flex",flexDirection:"column"},children:[ee.jsx(aS,{sx:{flexGrow:1},children:h&&m?ee.jsx(YJ,{filename:`${e.datasetId}-antibody-distribution`,data:h,layout:m}):ee.jsx(gL,{variant:"rectangular",height:450})}),ee.jsx(aS,{sx:{display:"flex",flexDirection:"row",marginTop:t.spacing(1),marginLeft:t.spacing(4)},children:ee.jsx(TTe,{antibodies:l,antibodyOptions:void 0!==p?d:[],onAntibodiesChange:e=>{s(e)},cellType:i,onCellTypeChange:o,filterEmpty:c,onFilterEmtpyChange:u})})]})}));function CTe(){const e=gg(),[t,n]=fge("0"),r=lge("0"),a=vge("0"),i="Molecule counts",[o,l]=Y.useState(void 0),s=Y.useMemo((()=>a?Object.keys(a.data):[]),[a]),[c,u]=Y.useState(void 0),[d,f]=Y.useState(null);Y.useEffect((()=>{if(void 0===r||void 0===a)return;const e=new aU.DataFrame({...null==r?void 0:r.rawData,...null==a?void 0:a.data});l(e)}),[r,a]),Y.useEffect((()=>{if(!o)return;const t=null!==d,n=t?o.toArray(d):[],r=[{name:"cells",x:o.toArray("x"),y:o.toArray("y"),xaxis:"x",yaxis:"y",type:"scattergl",marker:{color:t?n:e.palette.grey[300],showscale:null!==d,coloraxis:"coloraxis"},mode:"markers",orientation:"v",text:d??"",hovertemplate:`${d??""}
%{xaxis.title.text}: %{x:.3f}
%{yaxis.title.text}: %{y:.3f}
${null!==d?`${i}: %{marker.color:d}
`:""}`}];u(r)}),[o,d,e.palette.grey]);const p=Y.useMemo((()=>({xaxis:{type:"linear",anchor:"y",domain:[0,1],...null==t?void 0:t.xaxis,title:{text:"UMAP1"}},yaxis:{type:"linear",anchor:"x",scaleanchor:"x",scaleratio:1,domain:[0,1],...null==t?void 0:t.yaxis,title:{text:"UMAP2"}},showlegend:!1,coloraxis:{colorscale:"Reds",autocolorscale:!1,visible:null!==d,cmin:0,colorbar:{title:{text:i}}},legend:{tracegroupgap:0},margin:{l:40,r:40,t:80,b:40}})),[d,t]),h=qj({template:BJ},p),m={responsive:!0};return o&&0===o.dim()[0]?ee.jsx(cge,{children:"No data available to create figure"}):ee.jsxs(aS,{width:"100%",height:"100%",sx:{display:"flex",flexDirection:"column"},children:[ee.jsx(aS,{sx:{flexGrow:1},children:c&&h&&m?ee.jsx(YJ,{filename:"annotation-umi-intensity",data:c,layout:h,config:m,onRelayout:n}):ee.jsx(gL,{height:450})}),ee.jsx(aS,{sx:{display:"flex",flexDirection:"row",marginTop:e.spacing(1),marginLeft:e.spacing(4)},children:s&&ee.jsx(ITe,{options:s,onValueChange:e=>f(e)})})]})}const ITe=Y.memo((e=>ee.jsx(jA,{options:e.options,sx:{flexGrow:0,minWidth:280},clearOnBlur:!0,clearOnEscape:!0,onChange:(t,n)=>{e.onValueChange(n)},renderInput:e=>ee.jsx(TP,{...e,label:"Select antibody",InputProps:{...e.InputProps,type:"text"}})}))),LTe=function(){const e=lge("0"),t=gg(),[n,r]=fge("0"),[a,i]=Y.useState(void 0),[o,l]=Y.useReducer((e=>e+1),0);Y.useEffect((()=>{if(!e)return;const t=[];e.clusteredData.forEach((({components:e,x:n,y:r,cluster:a})=>{if(void 0!==a)return t.push({name:a,x:n,y:r,xaxis:"x",yaxis:"y",type:"scattergl",marker:{color:a},mode:"markers",orientation:"v",text:e,hovertemplate:`%{text}
%{xaxis.title.text}: %{x:.3f}
%{yaxis.title.text}: %{y:.3f}
Cluster: ${a}
`})})),t.sort(((e,t)=>e.name<=t.name?-1:e.name===t.name?0:1)),i(t),l()}),[e]);const s=Y.useMemo((()=>({colorway:t.palette.colorway.default,xaxis:{type:"linear",anchor:"y",domain:[0,1],...null==n?void 0:n.xaxis,title:{text:"UMAP1"}},yaxis:{type:"linear",anchor:"x",scaleanchor:"x",scaleratio:1,...null==n?void 0:n.yaxis,domain:[0,1],title:{text:"UMAP2"}},showlegend:!0,legend:{title:{text:"Clusters"},tracegroupgap:0},margin:{t:60,l:40,r:40,b:40}})),[t,n]),c=qj({template:BJ,datarevision:o},s);return e&&0===e.clusteredData.length?ee.jsx(cge,{children:"No data available to create figure"}):ee.jsx(aS,{width:"100%",height:"100%",children:a&&c?ee.jsx(YJ,{filename:"cells-umap-clusters-0",data:a,layout:c,config:{responsive:!0},onRelayout:r}):ee.jsx(gL,{height:450})})},PTe=["predicted_cell_type_b_cells","predicted_cell_type_cd4p_cells","predicted_cell_type_cd8p_cells","predicted_cell_type_nk_cells","predicted_cell_type_monocytes","predicted_cell_type_unknown","predicted_cell_type_multiclass","predicted_cell_type_dead"],ETe=["fraction_predicted_cell_type_b_cells","fraction_predicted_cell_type_cd4p_cells","fraction_predicted_cell_type_cd8p_cells","fraction_predicted_cell_type_nk_cells","fraction_predicted_cell_type_monocytes","fraction_predicted_cell_type_unknown","fraction_predicted_cell_type_multiclass","fraction_predicted_cell_type_dead"];function MTe({index:e}){var t;const n=null==(t=rD("0"))?void 0:t.metrics,r=gg(),a=Y.useMemo((()=>PTe.reduce(((e,t)=>n?(t in n&&e.push({metricId:t}),e):e),[])),[n]),i=Y.useMemo((()=>ETe.reduce(((e,t)=>n?(t in n&&e.push({metricId:t}),e):e),[])),[n]),[o,l]=Y.useState("percentages"),s=Y.useCallback((()=>ee.jsx(aS,{sx:{display:"flex",justifyContent:"end",marginRight:r.spacing(4)},children:ee.jsxs(NP,{color:"primary",value:o,exclusive:!0,onChange:(e,t)=>l(t),children:[ee.jsx(EP,{value:"values",children:"Values"}),ee.jsx(EP,{value:"percentages",children:"Fractions"})]})})),[r,o]),c=Y.useCallback((()=>ee.jsxs(aS,{sx:{display:"flex",flexDirection:"row"},children:[ee.jsx(cge,{icon:ee.jsx(zD,{}),children:"No annotation data available"}),ee.jsx(aS,{sx:{display:"flex",alignItems:"center"},children:s()})]})),[s]),u=void 0!==n&&a.every((e=>null===n[e.metricId]))&&i.every((e=>null===n[e.metricId])),d=0===a.length&&0===i.length,f=u||d,p=Y.useCallback((()=>f?ee.jsx(CD.Content,{children:ee.jsx(OD,{title:"Projection of Cell Clusters",description:"Cells clustered with leiden",children:ee.jsx(LTe,{})})}):ee.jsxs(ee.Fragment,{children:[ee.jsx(CD.LeftPanel,{children:ee.jsx(Gj,{header:f?c:s,data:"values"===o?a:i,sourceData:n,usePlaceholders:!0})}),ee.jsx(CD.RightPanel,{children:ee.jsx(OD,{title:"Projection of Cell Clusters",description:"Cells clustered with leiden",children:ee.jsx(LTe,{})})})]})),[i,a,n,f,c,o,s]);return ee.jsxs(CD,{children:[ee.jsx(CD.Header,{index:e,title:"Cell annotations"}),p(),ee.jsx(CD.Content,{children:ee.jsxs(aS,{sx:{display:"flex",flexDirection:"column",width:"100%"},children:[ee.jsxs(CD.TwoPanel,{children:[ee.jsx(CD.LeftPanel,{children:ee.jsx(OD,{title:"Annotation of Cells",description:"Grouped by Major PBMC Cell Types",children:ee.jsx(pge,{})})}),ee.jsx(CD.RightPanel,{children:ee.jsx(OD,{title:"Projection of Cells",description:"Colored by selected molecule counts",children:ee.jsx(CTe,{})})})]}),ee.jsx(OD,{children:ee.jsx(STe,{datasetId:"0"})})]})}),ee.jsx(CD.Footer,{})]})}var ZTe={},OTe=wv;Object.defineProperty(ZTe,"__esModule",{value:!0});var RTe=ZTe.default=void 0,NTe=OTe(mD()),XTe=ee;function HTe({index:e}){const t=rD("0"),n=Y.useMemo((()=>{var e;return(null==(e=null==t?void 0:t.info)?void 0:e.parameters)?t.info.parameters:[]}),[t]),r=gg(),[a,i]=Y.useState(!1);return ee.jsxs(CD,{collapsible:!0,defaultExpanded:!1,children:[ee.jsx(CD.Header,{index:e,title:"Parameters"}),ee.jsx(CD.Content,{padding:!0,children:ee.jsxs(aS,{width:"100%",children:[ee.jsx(aS,{sx:{width:"100%",display:"flex",flexDirection:"row",justifyContent:"flex-end"},children:ee.jsx(Kve,{value:a,onChange:()=>{i(!a)},label:"Show all parameters"})}),n.map(((e,t)=>ee.jsxs(Y.Fragment,{children:[ee.jsx(DTe,{data:e,showAll:a},e.command),t(r?e:e.filter((e=>void 0!==(null==e?void 0:e.default_value)&&(null==e?void 0:e.default_value)!==(null==e?void 0:e.value)))).map((e=>ee.jsx(WTe,{name:e.name,value:e.value,defaultValue:e.default_value,description:e.description,showModifiedBadges:r},`${n.command}-${e.name}`)))),[r,n.command])(n.options);return ee.jsx(aS,{sx:{display:"flex",flexDirection:"column",width:"100%"},children:a.length>0&&ee.jsxs(Y.Fragment,{children:[ee.jsx(YT,{variant:"subsection",sx:{overflowWrap:"break-word",marginBottom:t.spacing(2)},children:n.command}),ee.jsx(bC,{container:!0,spacing:1,columns:12,justifyContent:"stretch",children:a})]})},n.command)}function WTe(e){const{name:t,value:n,description:r,defaultValue:a,showModifiedBadges:i=!1}=e,o=gg(),l=void 0!==a&&n!==a,s=ty(o.breakpoints.down("md"));return ee.jsxs(Y.Fragment,{children:[ee.jsx(bC,{xs:12,md:4,sx:{marginTop:s?o.spacing(1):0},children:ee.jsxs(YT,{variant:"regular",sx:{width:"80%"},children:[t,r&&ee.jsx(Dj,{value:r,title:t})]})}),ee.jsx(bC,{xs:12,md:8,sx:{marginBottom:s?o.spacing(1):0},children:ee.jsxs(YT,{variant:"regularEmphasis",sx:{width:"20%",overflowWrap:"break-word"},children:[GP(n),i&&l&&ee.jsx(GTe,{value:`This value was modified from the default (${a})`})]})})]})}function GTe(e){const t=gg(),n={tooltip:{sx:{padding:t.spacing(2),color:t.palette.primary.contrastText,backgroundColor:t.palette.primary.main,alignSelf:"flex-start"}}},r={marginLeft:t.spacing(1),fontSize:"14px",color:t.palette.orange.main,"&:hover":{color:t.palette.orange.dark}},a=ee.jsxs(aS,{sx:{display:"flex",flexDirection:"column",alignSelf:"start"},children:[(null==e?void 0:e.title)&&ee.jsx(YT,{variant:"tooltipTitle",children:e.title}),"string"==typeof e.value?ee.jsx(Hj,{children:e.value}):ee.jsx(YT,{variant:"tooltip",children:e.value})]});return ee.jsx(PL,{id:null==e?void 0:e.id,componentsProps:n,placement:"right",title:a,children:ee.jsx(RTe,{color:"warning",sx:r})})}RTe=ZTe.default=(0,NTe.default)((0,XTe.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit");var VTe={},zTe=wv;Object.defineProperty(VTe,"__esModule",{value:!0});var FTe=VTe.default=void 0;!function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=BTe(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}r.default=e,n&&n.set(e,r)}(Y);var YTe=zTe(mD()),_Te=ee;function BTe(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(BTe=function(e){return e?n:t})(e)}FTe=VTe.default=(0,YTe.default)((0,_Te.jsx)("path",{d:"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77z"}),"LinkedIn");var jTe={},KTe=wv;Object.defineProperty(jTe,"__esModule",{value:!0});var JTe=jTe.default=void 0;!function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=qTe(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var o=a?Object.getOwnPropertyDescriptor(e,i):null;o&&(o.get||o.set)?Object.defineProperty(r,i,o):r[i]=e[i]}r.default=e,n&&n.set(e,r)}(Y);var UTe=KTe(mD()),QTe=ee;function qTe(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(qTe=function(e){return e?n:t})(e)}function $Te(){const e=gg(),t={borderRadius:3,borderWidth:1,borderStyle:"solid",borderColor:"#ADACA8"};return ee.jsxs(jL,{sx:{justifyContent:"space-between",marginBottom:e.spacing(2),marginTop:e.spacing(2)},children:[ee.jsx(YT,{variant:"regularLight",sx:{marginLeft:e.spacing(12)},children:"© 2023 Pixelgen Technologies"}),ee.jsxs(aS,{sx:{display:"flex",gap:e.spacing(2)},children:[ee.jsx(XT,{onClick:()=>{window.open("https://www.linkedin.com/company/pixelgen-technologies","_blank","noopener,noreferrer")},sx:t,children:ee.jsx(FTe,{})}),ee.jsx(XT,{onClick:()=>{window.open("https://twitter.com/PixelgenTech","_blank","noopener,noreferrer")},sx:t,children:ee.jsx(JTe,{})})]}),ee.jsx(VC,{variant:"regularLight",underline:"hover",sx:{marginRight:e.spacing(12)},href:"https://pixelgen.com/privacy-policy",target:"_blank",rel:"noopener,noreferrer",children:"Data & Privacy"})]})}function ewe(e){const{children:t}=e,n=_.Children.toArray(t).filter((e=>null!=e&&"string"!=typeof e&&"number"!=typeof e)).filter((e=>_.isValidElement(e)));return ee.jsx(ee.Fragment,{children:n.map(((e,t)=>_.cloneElement(e,{index:t+1})))})}JTe=jTe.default=(0,UTe.default)((0,QTe.jsx)("path",{d:"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"}),"Twitter");const twe={parula:[[0,"rgba(0.2422,0.1504,0.6603,1)"],[.00392156862745098,"rgba(0.2444,0.1534,0.6728,1)"],[.00784313725490196,"rgba(0.2464,0.1569,0.6847,1)"],[.011764705882352941,"rgba(0.2484,0.1607,0.6961,1)"],[.01568627450980392,"rgba(0.2503,0.1648,0.7071,1)"],[.0196078431372549,"rgba(0.2522,0.1689,0.7179,1)"],[.023529411764705882,"rgba(0.254,0.1732,0.7286,1)"],[.027450980392156862,"rgba(0.2558,0.1773,0.7393,1)"],[.03137254901960784,"rgba(0.2576,0.1814,0.7501,1)"],[.03529411764705882,"rgba(0.2594,0.1854,0.761,1)"],[.0392156862745098,"rgba(0.2611,0.1893,0.7719,1)"],[.043137254901960784,"rgba(0.2628,0.1932,0.7828,1)"],[.047058823529411764,"rgba(0.2645,0.1972,0.7937,1)"],[.050980392156862744,"rgba(0.2661,0.2011,0.8043,1)"],[.054901960784313725,"rgba(0.2676,0.2052,0.8148,1)"],[.058823529411764705,"rgba(0.2691,0.2094,0.8249,1)"],[.06274509803921569,"rgba(0.2704,0.2138,0.8346,1)"],[.06666666666666667,"rgba(0.2717,0.2184,0.8439,1)"],[.07058823529411765,"rgba(0.2729,0.2231,0.8528,1)"],[.07450980392156863,"rgba(0.274,0.228,0.8612,1)"],[.0784313725490196,"rgba(0.2749,0.233,0.8692,1)"],[.08235294117647059,"rgba(0.2758,0.2382,0.8767,1)"],[.08627450980392157,"rgba(0.2766,0.2435,0.884,1)"],[.09019607843137255,"rgba(0.2774,0.2489,0.8908,1)"],[.09411764705882353,"rgba(0.2781,0.2543,0.8973,1)"],[.09803921568627451,"rgba(0.2788,0.2598,0.9035,1)"],[.10196078431372549,"rgba(0.2794,0.2653,0.9094,1)"],[.10588235294117647,"rgba(0.2798,0.2708,0.915,1)"],[.10980392156862745,"rgba(0.2802,0.2764,0.9204,1)"],[.11372549019607843,"rgba(0.2806,0.2819,0.9255,1)"],[.11764705882352941,"rgba(0.2809,0.2875,0.9305,1)"],[.12156862745098039,"rgba(0.2811,0.293,0.9352,1)"],[.12549019607843137,"rgba(0.2813,0.2985,0.9397,1)"],[.12941176470588237,"rgba(0.2814,0.304,0.9441,1)"],[.13333333333333333,"rgba(0.2814,0.3095,0.9483,1)"],[.13725490196078433,"rgba(0.2813,0.315,0.9524,1)"],[.1411764705882353,"rgba(0.2811,0.3204,0.9563,1)"],[.1450980392156863,"rgba(0.2809,0.3259,0.96,1)"],[.14901960784313725,"rgba(0.2807,0.3313,0.9636,1)"],[.15294117647058825,"rgba(0.2803,0.3367,0.967,1)"],[.1568627450980392,"rgba(0.2798,0.3421,0.9702,1)"],[.1607843137254902,"rgba(0.2791,0.3475,0.9733,1)"],[.16470588235294117,"rgba(0.2784,0.3529,0.9763,1)"],[.16862745098039217,"rgba(0.2776,0.3583,0.9791,1)"],[.17254901960784313,"rgba(0.2766,0.3638,0.9817,1)"],[.17647058823529413,"rgba(0.2754,0.3693,0.984,1)"],[.1803921568627451,"rgba(0.2741,0.3748,0.9862,1)"],[.1843137254901961,"rgba(0.2726,0.3804,0.9881,1)"],[.18823529411764706,"rgba(0.271,0.386,0.9898,1)"],[.19215686274509805,"rgba(0.2691,0.3916,0.9912,1)"],[.19607843137254902,"rgba(0.267,0.3973,0.9924,1)"],[.2,"rgba(0.2647,0.403,0.9935,1)"],[.20392156862745098,"rgba(0.2621,0.4088,0.9946,1)"],[.20784313725490197,"rgba(0.2591,0.4145,0.9955,1)"],[.21176470588235294,"rgba(0.2556,0.4203,0.9965,1)"],[.21568627450980393,"rgba(0.2517,0.4261,0.9974,1)"],[.2196078431372549,"rgba(0.2473,0.4319,0.9983,1)"],[.2235294117647059,"rgba(0.2424,0.4378,0.9991,1)"],[.22745098039215686,"rgba(0.2369,0.4437,0.9996,1)"],[.23137254901960785,"rgba(0.2311,0.4497,0.9995,1)"],[.23529411764705882,"rgba(0.225,0.4559,0.9985,1)"],[.23921568627450981,"rgba(0.2189,0.462,0.9968,1)"],[.24313725490196078,"rgba(0.2128,0.4682,0.9948,1)"],[.24705882352941178,"rgba(0.2066,0.4743,0.9926,1)"],[.25098039215686274,"rgba(0.2006,0.4803,0.9906,1)"],[.2549019607843137,"rgba(0.195,0.4861,0.9887,1)"],[.25882352941176473,"rgba(0.1903,0.4919,0.9867,1)"],[.2627450980392157,"rgba(0.1869,0.4975,0.9844,1)"],[.26666666666666666,"rgba(0.1847,0.503,0.9819,1)"],[.27058823529411763,"rgba(0.1831,0.5084,0.9793,1)"],[.27450980392156865,"rgba(0.1818,0.5138,0.9766,1)"],[.2784313725490196,"rgba(0.1806,0.5191,0.9738,1)"],[.2823529411764706,"rgba(0.1795,0.5244,0.9709,1)"],[.28627450980392155,"rgba(0.1785,0.5296,0.9677,1)"],[.2901960784313726,"rgba(0.1778,0.5349,0.9641,1)"],[.29411764705882354,"rgba(0.1773,0.5401,0.9602,1)"],[.2980392156862745,"rgba(0.1768,0.5452,0.956,1)"],[.30196078431372547,"rgba(0.1764,0.5504,0.9516,1)"],[.3058823529411765,"rgba(0.1755,0.5554,0.9473,1)"],[.30980392156862746,"rgba(0.174,0.5605,0.9432,1)"],[.3137254901960784,"rgba(0.1716,0.5655,0.9393,1)"],[.3176470588235294,"rgba(0.1686,0.5705,0.9357,1)"],[.3215686274509804,"rgba(0.1649,0.5755,0.9323,1)"],[.3254901960784314,"rgba(0.161,0.5805,0.9289,1)"],[.32941176470588235,"rgba(0.1573,0.5854,0.9254,1)"],[.3333333333333333,"rgba(0.154,0.5902,0.9218,1)"],[.33725490196078434,"rgba(0.1513,0.595,0.9182,1)"],[.3411764705882353,"rgba(0.1492,0.5997,0.9147,1)"],[.34509803921568627,"rgba(0.1475,0.6043,0.9113,1)"],[.34901960784313724,"rgba(0.1461,0.6089,0.908,1)"],[.35294117647058826,"rgba(0.1446,0.6135,0.905,1)"],[.3568627450980392,"rgba(0.1429,0.618,0.9022,1)"],[.3607843137254902,"rgba(0.1408,0.6226,0.8998,1)"],[.36470588235294116,"rgba(0.1383,0.6272,0.8975,1)"],[.3686274509803922,"rgba(0.1354,0.6317,0.8953,1)"],[.37254901960784315,"rgba(0.1321,0.6363,0.8932,1)"],[.3764705882352941,"rgba(0.1288,0.6408,0.891,1)"],[.3803921568627451,"rgba(0.1253,0.6453,0.8887,1)"],[.3843137254901961,"rgba(0.1219,0.6497,0.8862,1)"],[.38823529411764707,"rgba(0.1185,0.6541,0.8834,1)"],[.39215686274509803,"rgba(0.1152,0.6584,0.8804,1)"],[.396078431372549,"rgba(0.1119,0.6627,0.877,1)"],[.4,"rgba(0.1085,0.6669,0.8734,1)"],[.403921568627451,"rgba(0.1048,0.671,0.8695,1)"],[.40784313725490196,"rgba(0.1009,0.675,0.8653,1)"],[.4117647058823529,"rgba(0.0964,0.6789,0.8609,1)"],[.41568627450980394,"rgba(0.0914,0.6828,0.8562,1)"],[.4196078431372549,"rgba(0.0855,0.6865,0.8513,1)"],[.4235294117647059,"rgba(0.0789,0.6902,0.8462,1)"],[.42745098039215684,"rgba(0.0713,0.6938,0.8409,1)"],[.43137254901960786,"rgba(0.0628,0.6972,0.8355,1)"],[.43529411764705883,"rgba(0.0535,0.7006,0.8299,1)"],[.4392156862745098,"rgba(0.0433,0.7039,0.8242,1)"],[.44313725490196076,"rgba(0.0328,0.7071,0.8183,1)"],[.4470588235294118,"rgba(0.0234,0.7103,0.8124,1)"],[.45098039215686275,"rgba(0.0155,0.7133,0.8064,1)"],[.4549019607843137,"rgba(0.0091,0.7163,0.8003,1)"],[.4588235294117647,"rgba(0.0046,0.7192,0.7941,1)"],[.4627450980392157,"rgba(0.0019,0.722,0.7878,1)"],[.4666666666666667,"rgba(0.0009,0.7248,0.7815,1)"],[.47058823529411764,"rgba(0.0018,0.7275,0.7752,1)"],[.4745098039215686,"rgba(0.0046,0.7301,0.7688,1)"],[.47843137254901963,"rgba(0.0094,0.7327,0.7623,1)"],[.4823529411764706,"rgba(0.0162,0.7352,0.7558,1)"],[.48627450980392156,"rgba(0.0253,0.7376,0.7492,1)"],[.49019607843137253,"rgba(0.0369,0.74,0.7426,1)"],[.49411764705882355,"rgba(0.0504,0.7423,0.7359,1)"],[.4980392156862745,"rgba(0.0638,0.7446,0.7292,1)"],[.5019607843137255,"rgba(0.077,0.7468,0.7224,1)"],[.5058823529411764,"rgba(0.0899,0.7489,0.7156,1)"],[.5098039215686274,"rgba(0.1023,0.751,0.7088,1)"],[.5137254901960784,"rgba(0.1141,0.7531,0.7019,1)"],[.5176470588235295,"rgba(0.1252,0.7552,0.695,1)"],[.5215686274509804,"rgba(0.1354,0.7572,0.6881,1)"],[.5254901960784314,"rgba(0.1448,0.7593,0.6812,1)"],[.5294117647058824,"rgba(0.1532,0.7614,0.6741,1)"],[.5333333333333333,"rgba(0.1609,0.7635,0.6671,1)"],[.5372549019607843,"rgba(0.1678,0.7656,0.6599,1)"],[.5411764705882353,"rgba(0.1741,0.7678,0.6527,1)"],[.5450980392156862,"rgba(0.1799,0.7699,0.6454,1)"],[.5490196078431373,"rgba(0.1853,0.7721,0.6379,1)"],[.5529411764705883,"rgba(0.1905,0.7743,0.6303,1)"],[.5568627450980392,"rgba(0.1954,0.7765,0.6225,1)"],[.5607843137254902,"rgba(0.2003,0.7787,0.6146,1)"],[.5647058823529412,"rgba(0.2061,0.7808,0.6065,1)"],[.5686274509803921,"rgba(0.2118,0.7828,0.5983,1)"],[.5725490196078431,"rgba(0.2178,0.7849,0.5899,1)"],[.5764705882352941,"rgba(0.2244,0.7869,0.5813,1)"],[.5803921568627451,"rgba(0.2318,0.7887,0.5725,1)"],[.5843137254901961,"rgba(0.2401,0.7905,0.5636,1)"],[.5882352941176471,"rgba(0.2491,0.7922,0.5546,1)"],[.592156862745098,"rgba(0.2589,0.7937,0.5454,1)"],[.596078431372549,"rgba(0.2695,0.7951,0.536,1)"],[.6,"rgba(0.2809,0.7964,0.5266,1)"],[.6039215686274509,"rgba(0.2929,0.7975,0.517,1)"],[.6078431372549019,"rgba(0.3052,0.7985,0.5074,1)"],[.611764705882353,"rgba(0.3176,0.7994,0.4975,1)"],[.615686274509804,"rgba(0.3301,0.8002,0.4876,1)"],[.6196078431372549,"rgba(0.3424,0.8009,0.4774,1)"],[.6235294117647059,"rgba(0.3548,0.8016,0.4669,1)"],[.6274509803921569,"rgba(0.3671,0.8021,0.4563,1)"],[.6313725490196078,"rgba(0.3795,0.8026,0.4454,1)"],[.6352941176470588,"rgba(0.3921,0.8029,0.4344,1)"],[.6392156862745098,"rgba(0.405,0.8031,0.4233,1)"],[.6431372549019608,"rgba(0.4184,0.803,0.4122,1)"],[.6470588235294118,"rgba(0.4322,0.8028,0.4013,1)"],[.6509803921568628,"rgba(0.4463,0.8024,0.3904,1)"],[.6549019607843137,"rgba(0.4608,0.8018,0.3797,1)"],[.6588235294117647,"rgba(0.4753,0.8011,0.3691,1)"],[.6627450980392157,"rgba(0.4899,0.8002,0.3586,1)"],[.6666666666666666,"rgba(0.5044,0.7993,0.348,1)"],[.6705882352941176,"rgba(0.5187,0.7982,0.3374,1)"],[.6745098039215687,"rgba(0.5329,0.797,0.3267,1)"],[.6784313725490196,"rgba(0.547,0.7957,0.3159,1)"],[.6823529411764706,"rgba(0.5609,0.7943,0.305,1)"],[.6862745098039216,"rgba(0.5748,0.7929,0.2941,1)"],[.6901960784313725,"rgba(0.5886,0.7913,0.2833,1)"],[.6941176470588235,"rgba(0.6024,0.7896,0.2726,1)"],[.6980392156862745,"rgba(0.6161,0.7878,0.2622,1)"],[.7019607843137254,"rgba(0.6297,0.7859,0.2521,1)"],[.7058823529411765,"rgba(0.6433,0.7839,0.2423,1)"],[.7098039215686275,"rgba(0.6567,0.7818,0.2329,1)"],[.7137254901960784,"rgba(0.6701,0.7796,0.2239,1)"],[.7176470588235294,"rgba(0.6833,0.7773,0.2155,1)"],[.7215686274509804,"rgba(0.6963,0.775,0.2075,1)"],[.7254901960784313,"rgba(0.7091,0.7727,0.1998,1)"],[.7294117647058823,"rgba(0.7218,0.7703,0.1924,1)"],[.7333333333333333,"rgba(0.7344,0.7679,0.1852,1)"],[.7372549019607844,"rgba(0.7468,0.7654,0.1782,1)"],[.7411764705882353,"rgba(0.759,0.7629,0.1717,1)"],[.7450980392156863,"rgba(0.771,0.7604,0.1658,1)"],[.7490196078431373,"rgba(0.7829,0.7579,0.1608,1)"],[.7529411764705882,"rgba(0.7945,0.7554,0.157,1)"],[.7568627450980392,"rgba(0.806,0.7529,0.1546,1)"],[.7607843137254902,"rgba(0.8172,0.7505,0.1535,1)"],[.7647058823529411,"rgba(0.8281,0.7481,0.1536,1)"],[.7686274509803922,"rgba(0.8389,0.7457,0.1546,1)"],[.7725490196078432,"rgba(0.8495,0.7435,0.1564,1)"],[.7764705882352941,"rgba(0.86,0.7413,0.1587,1)"],[.7803921568627451,"rgba(0.8703,0.7392,0.1615,1)"],[.7843137254901961,"rgba(0.8804,0.7372,0.165,1)"],[.788235294117647,"rgba(0.8903,0.7353,0.1695,1)"],[.792156862745098,"rgba(0.9,0.7336,0.1749,1)"],[.796078431372549,"rgba(0.9093,0.7321,0.1815,1)"],[.8,"rgba(0.9184,0.7308,0.189,1)"],[.803921568627451,"rgba(0.9272,0.7298,0.1973,1)"],[.807843137254902,"rgba(0.9357,0.729,0.2061,1)"],[.8117647058823529,"rgba(0.944,0.7285,0.2151,1)"],[.8156862745098039,"rgba(0.9523,0.7284,0.2237,1)"],[.8196078431372549,"rgba(0.9606,0.7285,0.2312,1)"],[.8235294117647058,"rgba(0.9689,0.7292,0.2373,1)"],[.8274509803921568,"rgba(0.977,0.7304,0.2418,1)"],[.8313725490196079,"rgba(0.9842,0.733,0.2446,1)"],[.8352941176470589,"rgba(0.99,0.7365,0.2429,1)"],[.8392156862745098,"rgba(0.9946,0.7407,0.2394,1)"],[.8431372549019608,"rgba(0.9966,0.7458,0.2351,1)"],[.8470588235294118,"rgba(0.9971,0.7513,0.2309,1)"],[.8509803921568627,"rgba(0.9972,0.7569,0.2267,1)"],[.8549019607843137,"rgba(0.9971,0.7626,0.2224,1)"],[.8588235294117647,"rgba(0.9969,0.7683,0.2181,1)"],[.8627450980392157,"rgba(0.9966,0.774,0.2138,1)"],[.8666666666666667,"rgba(0.9962,0.7798,0.2095,1)"],[.8705882352941177,"rgba(0.9957,0.7856,0.2053,1)"],[.8745098039215686,"rgba(0.9949,0.7915,0.2012,1)"],[.8784313725490196,"rgba(0.9938,0.7974,0.1974,1)"],[.8823529411764706,"rgba(0.9923,0.8034,0.1939,1)"],[.8862745098039215,"rgba(0.9906,0.8095,0.1906,1)"],[.8901960784313725,"rgba(0.9885,0.8156,0.1875,1)"],[.8941176470588236,"rgba(0.9861,0.8218,0.1846,1)"],[.8980392156862745,"rgba(0.9835,0.828,0.1817,1)"],[.9019607843137255,"rgba(0.9807,0.8342,0.1787,1)"],[.9058823529411765,"rgba(0.9778,0.8404,0.1757,1)"],[.9098039215686274,"rgba(0.9748,0.8467,0.1726,1)"],[.9137254901960784,"rgba(0.972,0.8529,0.1695,1)"],[.9176470588235294,"rgba(0.9694,0.8591,0.1665,1)"],[.9215686274509803,"rgba(0.9671,0.8654,0.1636,1)"],[.9254901960784314,"rgba(0.9651,0.8716,0.1608,1)"],[.9294117647058824,"rgba(0.9634,0.8778,0.1582,1)"],[.9333333333333333,"rgba(0.9619,0.884,0.1557,1)"],[.9372549019607843,"rgba(0.9608,0.8902,0.1532,1)"],[.9411764705882353,"rgba(0.9601,0.8963,0.1507,1)"],[.9450980392156862,"rgba(0.9596,0.9023,0.148,1)"],[.9490196078431372,"rgba(0.9595,0.9084,0.145,1)"],[.9529411764705882,"rgba(0.9597,0.9143,0.1418,1)"],[.9568627450980393,"rgba(0.9601,0.9203,0.1382,1)"],[.9607843137254902,"rgba(0.9608,0.9262,0.1344,1)"],[.9647058823529412,"rgba(0.9618,0.932,0.1304,1)"],[.9686274509803922,"rgba(0.9629,0.9379,0.1261,1)"],[.9725490196078431,"rgba(0.9642,0.9437,0.1216,1)"],[.9764705882352941,"rgba(0.9657,0.9494,0.1168,1)"],[.9803921568627451,"rgba(0.9674,0.9552,0.1116,1)"],[.984313725490196,"rgba(0.9692,0.9609,0.1061,1)"],[.9882352941176471,"rgba(0.9711,0.9667,0.1001,1)"],[.9921568627450981,"rgba(0.973,0.9724,0.0938,1)"],[.996078431372549,"rgba(0.9749,0.9782,0.0872,1)"],[1,"rgba(0.9769,0.9839,0.0805,1)"]]},nwe={default:["#cc4a74","#71b445","#9c4dde","#c5993d","#6f6fc6","#d25031","#61b293","#c855b7","#6d7c4d","#af81a3","#b87d65","#6697b4"]},rwe=yg(),awe=tg({primary:{main:"#242222"},background:{default:"#FFFFFF",paper:"#F7F7F7"},divider:"rgba(0, 0, 0, 0.15)",beige:rwe.palette.augmentColor({color:{main:"#C7B19C",light:"#D8CDC2",dark:"#886A4D"}}),orange:rwe.palette.augmentColor({color:{main:"#D3A969",light:"#E3C2A0",dark:"#936A2B"}}),blue:rwe.palette.augmentColor({color:{main:"#789ACB",light:"#BECCE0",dark:"#36598C"}}),green:rwe.palette.augmentColor({color:{main:"#CACE9B",light:"#EBEBDA",dark:"#8C9147"}}),red:rwe.palette.augmentColor({color:{main:"#CACE9B",light:"#EBEBDA",dark:"#8C9147"}}),success:rwe.palette.augmentColor({color:{main:"#81A791"}}),guides:{excellent:"#A5D695",good:"#EEEFAC",bad:"#EFC8AC"},colorscale:twe,colorway:nwe}),iwe={fontFamily:['"Inter"',"sans-serif"].join(","),fontSize:14,fontWeightLight:300,fontWeightRegular:400,fontWeightMedium:500,fontWeightBold:800,allVariants:{fontFamily:['"Inter"',"sans-serif"].join(",")},headline:{fontWeight:800,fontSize:"4rem"},highlight:{fontSize:"3rem",fontWeight:500},section:{fontSize:"1.75rem",fontWeight:500},subsection:{fontSize:"1.2rem",fontWeight:700},label:{fontSize:"0.8rem",fontWeight:400},regular:{fontSize:"1rem",fontWeight:400},regularEmphasis:{fontSize:"1rem",fontWeight:600},regularLight:{fontSize:"1rem",fontWeight:400,opacity:.5},figureTitle:{fontSize:"1.5rem",fontWeight:500},tooltip:{color:awe.common.white,fontSize:"0.9rem",fontWeight:400},tooltipTitle:{color:awe.common.white,fontSize:"0.9rem",fontWeight:800}},owe=e=>8*e+"px",lwe=yg({palette:awe,typography:iwe,spacing:owe,components:{MuiCssBaseline:{styleOverrides:"\n.modebar-container {\n display: none\n}"},MuiTabs:{styleOverrides:{indicator:{display:"none"},root:{gap:owe(2),paddingLeft:owe(3),paddingRight:owe(3),paddingTop:owe(2),paddingBottom:owe(2)}}},MuiTab:{styleOverrides:{root:{minHeight:32,textTransform:"none",fontWeight:iwe.fontWeightMedium,marginRight:owe(1),color:awe.primary.main,borderRadius:4,borderWidth:1,borderStyle:"solid",borderColor:awe.grey[500],transition:[rwe.transitions.create(["background-color","transform"]),rwe.transitions.create(["border-color","transform"])],"&:hover":{backgroundColor:awe.action.hover,borderColor:awe.grey[800]},"&.Mui-selected":{color:awe.primary.contrastText,backgroundColor:awe.primary.main,textTransform:"none","&:hover":{backgroundColor:awe.primary.dark}}}}},MuiSvgIcon:{variants:[{props:{fontSize:"extraSmall"},style:{fontSize:"1rem"}}]},MuiToggleButtonGroup:{styleOverrides:{root:{"& .MuiToggleButtonGroup-grouped":{margin:owe(.5),border:0,"&.Mui-disabled":{border:0},"&:not(:first-of-type)":{borderRadius:rwe.shape.borderRadius},"&:first-of-type":{borderRadius:rwe.shape.borderRadius}}}}},MuiButton:{variants:[{props:{variant:"contained",color:"primary"},style:{textTransform:"none",borderRadius:25,paddingLeft:"1.5rem",paddingRight:"1.5rem"}},{props:{variant:"outlined",color:"primary"},style:{textTransform:"none",borderRadius:25,borderWidth:1,borderStyle:"solid",borderColor:awe.grey[500],"&:hover":{borderColor:awe.grey[800]}}}]}}}),swe={load:dM("sequencingSaturation/load")},cwe=xM({},(e=>{e.addCase(swe.load,((e,t)=>{e[t.payload.datasetId]=function(e){var t,n;const r=zM("sequencing-saturation",e),a=null==(n=null==(t=document.querySelectorAll(r))?void 0:t.item(0))?void 0:n.innerHTML;if(!a)return void console.warn(`No sequencing saturation data found for dataset with id ${e}`);const i=_ve(a),o=new Dve(i);return{datasetId:e,x:o.toArray("reads"),y:o.toArray("saturation")}}(t.payload.datasetId)}))})),uwe=sE({statisticsData:nD.reducer,componentData:oge.reducer,rankedCellSizeData:KJ.reducer,sequencingSaturation:cwe,antibodiesPerCell:Bve,antibodyPercentages:$ve.reducer,antibodyDistribution:yge.reducer,metricsDescription:vO.reducer,umaps:uge.reducer,readsPerUmiFrequencyData:$J.reducer}),dwe=dM("store/clear"),fwe={statisticsData:nD.getInitialState(),componentData:oge.getInitialState(),rankedCellSizeData:KJ.getInitialState(),sequencingSaturation:{},antibodiesPerCell:{},antibodyPercentages:$ve.getInitialState(),antibodyDistribution:yge.getInitialState(),metricsDescription:vO.getInitialState(),umaps:uge.getInitialState(),readsPerUmiFrequencyData:$J.getInitialState()},pwe=gM({reducer:xM(fwe,(e=>{e.addCase(dwe,(()=>fwe)).addDefaultCase(uwe)})),preloadedState:hwe});var hwe;function mwe(){var e;return e=pwe.dispatch,Y.useEffect((()=>{}),[e]),ee.jsx(VO,{store:pwe,children:ee.jsx(cW,{children:ee.jsxs(Qg,{theme:lwe,children:[ee.jsx(wS,{}),ee.jsx(zJ,{maxSnack:3,children:ee.jsx(ywe,{})})]})})})}function ywe(){return ee.jsxs(ee.Fragment,{children:[ee.jsxs(bx,{children:[ee.jsx("link",{rel:"icon",type:"image/png",href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAVHAAAFRwET8xj+AAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAArVJREFUOI19k11o1XUcxj/P73/0LOyFVSfMvSbDIAfVkggp3RjJ2IVBTIsSJmgoQlEWZhEeBgVdhERG0IhMM6wdupCIUpgeNiOGU3ozerO5c441ysXI5mrt/3u6sANeqJ/75/P9PhePbFNlbaGQtEwuvCfIz764acVqgMrQnjcRdeADTnS4YXnvKS5CVUHfG8Wr55KkC2JbZsI7NraX7nPwVolCjHQKhhB3SOlbdfeWv4Z8BAjVy3OZ0GvcCfyYz7fPSUxhnyRVGTHpYAPrcdJdPtrcW/0gAKzKLnmASA6Y98StvxXODL/zvuUupMedsEqwWVa9cL/tL2X6SsO7bwMIxS9ON2dCaI6Bc/Nms1unmZ4zaotiwtCPGMLaLzhn9CTSSuCgCOvKn729SEeOjff89c+/yeffVHpe2rRyDZegMrynLNhpuEbSCdv7sR+Sw0yIgdoFNUn3/Otzj14q/D+7oglA3jEuAz2FwnqSWK/B0bHtQi2Siu1tjfuuIKFS3NfikD4sqdHEciCkOnz89PO+YG8SlGKaftB59+Ifriga3rsOuZ3onwJRFeD2ACPgTEiS74rHx58+MlradjnBnxNjA5isxFQg4YzMbsOrWCOIF6KcIm+5nODkxMx752dnP8b6Q4dOlBYljlsUnSMwhfWMYFtErdgDkrtkfWWx/exV00tnBws1Wf5+rHFhzg11130Y7r+z4RfF+C5StwlHZb1mtEB4TZBWgDZYvgk4liM3P8vMK0bX4rmfb16+YTwAdCy75XvLO3BcankjdgXR7xg/NX5dkU867mp65PfBnT0Aln8d1+hHAJlqr8lTzXtvbBlrJVW9g41DraQm4dY0UFvs68v4BpbgcKjmfHpw9ZqBFC5aY5XB0dLigNsRDyJVOtoaNwMUdj13gKCXvz2bHcnnLywR4D9ZRUCuJUB9bgAAAABJRU5ErkJggg==",sizes:"16x16"}),ee.jsx("link",{rel:"icon",type:"image/png",href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAqOAAAKjgHCOAxRAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAACDZJREFUWIWll3twVtUVxX/rnPvlAYT3wwgBrA8EqQgZsCiBIGCnU61Ox7Ra8QGlEUV0UMcqxSKFUWsprQ9AYEbxVWZEhxmlnXbkEQwUeUQUQYTKyxARCAgIJPm+e8/uHyQxWKWC+6+7zz5nr7XX3nPuvTIzvos9MuedXxu6fNodRaVN1/esfPFZjOsE+8zsMUPHcn2yuv2Vo7/8Lnmj0wWnzK1olrETv5XC54YeAw4KZNDI2mL3HD5cBhQgPYu4vzb4vVXl8+dE3v+x0xW37D8dhr5Ngd/NXTHUwcUB9fGJm5f2tZ88UTr8CEDVypeuCXCRIOWlBXGwvpiZ87Y/kt8Rh3C9mf0K1FJpjeg87NZDNCF9WgUEmjivrI/MFcpYiuzq4GzcE6XDRzdWbeEBoSEAAftCUIQYaUFkCK8i1mKUGSyznDh7z8qXXkk5TfgmNdzXFyY9985Ql9AaGJc4XSN0tWSfnUpSexueg9EXsa5JuAhUiTRZoswl/i6MpzKJTa9c9fy5p1VgyqyyFuY1wXArBdU+2OJjNanpMyYMrGm6zxPuyTi7P8qJD+fvaFNHhw763O9cUGdR+4g4P51ONqeysj4A6xPET5zxH3OW9sGfB5xaTMMMlK2p6rLm48prj9akR0EYjVTqxJappUNmU1YW7YkqC7FkAHJtzfSuCPOAtsDeIG50xnrgsGBTjP+FJxRYCCanWzGbi7QROJjyrlfTVjS2IETx5CO1de/jeE/ODxcab4E8gKpoxyVYeBf0NGalwr4ACoDmQKeU3IH6NK0NBkUKeWCr5DQHbGOX0H2LYD7QLh1sZOWK+f1PIbC8Ytflkt726DoZdxDCbkIYOG3skCcBYstqOjydiKhq4ueFWjveVFYXB1ff3r6gOZ/kVjUL0jrDbiJQJacXPvpoYdZXCojWmE020zozfhm83zztzuJ3GxJWNztRjfE+aB5o7NFWuQck9Ujw52YnzfI6D7v1oHPJxcANhv0+kDoG1NYfP5FTYx1lNlO4n+f6+B+gFnmHasYARAsX4tv/QPcAK2RuEy5ZQQivA3c3ECgsLM2crOYU29bUCYlfijiCKHd5xw+FL5tfaD65XrKfyWU6BhxgJZmgJ2T2IGgQCxd61/6Cnb1l9qbJtvXt0bYTEJy5f3KmJrKAXjJdm9RkDTYffwzWJyGMtZD1KbARIPbuiGG9LISXqzrWDHAKvtic+0KmGa1b5V6SSsJFU8cOWnym+HZSEQPtIrgenBzQMd40LlGmZ5zYEKRHFexCpEkOF5mzEc6wjEJoA+xzYsPwPvk64+qBgqLbBkWETs64G4UTNM6Aljmn5yOvlRiLZHQHfPChJ+JwhGhtsBQxzkzT0zk5G4G7zobEOUWjDgAHgA17yxYsCj79GyzUINcF6OIUuoXAUsRqcDkWLOXMGGhohAU1B64U1nvZB3s6nw2BppZffFN156LbHs8EvWfYi8B2C3YcaZmk2wUFiAu0fP3u2WZ2KITkReejJYRwC04vmLHKRTa++LLuh78vGYDd5a/ke5I3gIGY3WxO5zljgDNjJ6LKOz9fclfJ0QY4T2JkCOq3bP2uR8srdud/XwLdikbuldkGsBVyZIRbErD1kbmQdqa0iYFm8fCIaFVCsgloqeBaoDA5hoeXVey6NzKtCcqqLC7Mrz4bEtk+PFSHu8SC3pTCJKFjTqY8ZJuAWGJnQlIib0U4jUbJsPqzWZiiRMwy0vuXV+wuPxsC/161FQv0B9qZcTAY3kn2dn38D2b+E+ARS1SutN/qQzIdYyZwBIVtQHdAwEVnCv76zInX1OW6bUeP1W4G3QvK92ipO7C9+zrM3SbTFney/wC9k6y4IHGpeXJsiaBnbjpVDiwy7ENQ3RmXH2wEwJbtn34GXAr203ND1w+jkhKSsvdsk8GTGZ/9wyipfUViJIn2IRtsxo9j+HOSG19sMfuRmxocmwGWVOxolRWsZSZK5aXz0tuzj0SjZBqAKKze0a1fSQlJA755nlFsqwPqbdggye6juDiOAA7kHJ/Xvqb52Ky4bihO/yJYWTpJV+dEqZz689nEvoUUJoOhAEvXVrX33lcnDlwwcg/mFlgUz0IIoFWP7e3g/P0AC59+aBBy55hYYLLHMU2xYAeh/nVc0qtXGmyMmbU0s5dNDO0YHakxbNxJyTEjzjRVNKXaZsCxBj9xIZ+Tt+DJeF2qA8Drz058EKlc0MWMWaC/O8LggiG3r2skADC0sPua2jizGNgH3Hzc2vcW6im5UZiKYh99CZQ1gMQu6lC/9yiwy0XWEjTTsDu90U/Hu26t7/0hw/6qoGUSA5tn+UtjRdMacP/nv2DZut1XyHG7yVZjGi/oa7DBkXU1lrks8XxGxu/zJzofKS4mBli1amteJqdl9tfvh4V/uS8Xn90L8bzgJYPB+JybS+6a3Kjc/3yWR8SViBwn/6Gwt4Ag6GsWX2GyuS7YZufj6tBy191lFZ/OXl6x29I5OUeN9FNN87z2zMSpRNkHDK4FywOtBc1oCv6NBAb3P79SiT0YLNwfOz+HYFeBJqPQBbHyK+nUHwvvN/pwynUtC/lgbwveMjTHzE6UjH9sxdfxvvXXbAq4H63e0zqVlSwRnDDs1TiVvJGKUwWC/ABCyUYX/I2GZSRtK+7XdTHA32Y/3CY7Cecn5scAFYJt3wR+WgINtnRtVTvvkwcMu1NinBl/AtLAnuBUOqxv148aSU+Z4nq1rd0FNDMxCeigTN30kgkzar4l/f8n0GCrV+/JrcnJ9FfiOiAeBjoBi4YWdrun6b7Xnpn4nMPKbxj/+KvfJe9/ASFY9QI0ei2sAAAAAElFTkSuQmCC",sizes:"32x32"}),ee.jsx("link",{rel:"icon",type:"image/png",href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAACXBIWXMAABUcAAAVHAFXDVvrAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAGL9JREFUeJzNm3t4lNW1/z9rvzOZCYEgd4HcoCgaxQIDRYSEcBGL2tZWo7WVAFqFWrH++Fkt3ihVwerxtIq9SC0k0Fo13nq0VRFISKIUyUAFpC0iZMJE7nIJIWFm3r3OHzMJSUi4VGzP93l4yOy91tprrXdf115bVJWzjblzMW6fVQHXmoGPTs/5/clow2VLfojoHOAIwiGUKlGtRs3LfccUlFBa6iEvL3bWlUxAzrYDHni2fBHoVUBP4ONHpueefzL6fe8t6tRgnR1A51ZVBx1jvuxaOxWlr3XM0oxRk98DzqrC5mwIefC3pRPuf7bslfgvvZK48QC9TsXbfdTNtShFbVSd41r7VMzVxzHkGmvLw+VFm2oqCidTXOycDb3hczrgwWfLznvw2bIKteZdgasSxfuJf6UtIvqX609HWa88DtwrwpOKFgHLgE+AK71JXCDoQwnKbFVZEu59dNOOsiU3wNzP/QH/pSEwd8Ga1Kg3UoDoXuAFIAqUeXfZr7q9zYXOMV9ozswRhz+vcpSWenZHdvh6TdxWHy7v9xvQbwLdm+pV7krLLXjq8zRxxg6479lVIw3yIshHatzZYs3AmETe3tblwJGLuMiZk58daYsvXF44E5F8VHqC9myqUH08LXfqY+GKJXNE9WsKB1XYb1TDVmWboNvTckNvwxxLcbGzo2fdZRj5lsBNQFLk2LEMv98//GDX5LLs7Pw22z4ZzqgL3f+b8isM8i6wzOu4tz56a97frErYo76fn/9Zr13Rz/Zd2h6vQBZKDuhAoEvjPxEZCaBotUIAGC/K9YrMEuEZRP5cXZE1ZGdp4QU7etf90nGML93N/FHDkcNpqnKb3+e7GMv+zvuPvr+ztPCCM3WA53SI5s7FNPQo7W88ppsRZ4SKezTqSs6DC8vrjehrzUh7tyfDquwUObFcYSgAMbMWx7bJK6pX9t6bMi987tFrLTo97IT2+Tt2XmzF/U2f0dO2AdSUF251HQnWlBVN65s75aXTsQtOowcISOTcsqcd43TFRFdYN3aXumwBuRErsVa0555Ezs52qtK2r3iuV/pe/9+BI23zmjzy811EliWKuoP+yKj5OFxe9GZ49e+6Rl1mAItUWBouK7rlVHY14pQOuH9h2a2ovOH1u1vE9T6FyPdo7DlOrCFOpR8BjyCxN9uTI9i2HFALHEjyOheRn+8C77fNrYMT/69pQ/+rJOYdF6uvrcd1nnKwIzHcVVNeOONUtsEphsC9i97r5BNdb5F5bsTzAGpTOd6Nj1pxN6rxDJx36+gtp2ooamVdkkcuj1qp8TdQ3Wvi5LrWNGk5U66Auaa64rzOxka6i0gGKgMwet7WNX9I9bm6XsyJ40ghd8CkmS+HK4recNUsd0zsatf13F5d8XyXjNHfOfCvOkCcqE23yCuIpseUHzpCqgobVOWJfdLhxWe/F4gCu09lPEBW3tSDwPLmZTuDCztE6zv6fEfdSK+Jk+t2lS/uETXp3iNdvfuys79zAPgYWNFIv/WtBR/4OqbeLsKNKKNo7MGqwwGwlCHc4bqeySj/P8PtU3sqvdpzgKxcGxppYCqQDmA0esga751JXbptiny279vdte4F4NqTCd+9bGlKJIULHVfdPrkF68MVS+agdhJIBtALfMYQJZrMy0B+VJzJYvXJ1P1HCZcXHUTZCrJBxG6M4XlxwKSZO4FfA7/+tGxxukVuEWSGCtmAgK4CuQ3ojPBc2KnKP7y5+OsnWx7bdEBpsPpOY/Qd0CsVwgamPzxjXM39C8snRT/b9z8CfYGjrfl2lv6xu2siVyDkAbkkM0AsxoUlwBQsGYiMONHd8S2zKHualZ6DMAx0mCI4YkPAa+GKoucEeb2v7fc2eXk/2frWgvm+jp1u3Pfeoo5gNrYSfEXq/vrB4dVLatJGFtS0ZesJk2Dp2qrBik5eFazaB/KXJLFDVHTwQ7997yJR/Tpx4wE6zC0sPac5rzXRaxF+D3wPOL9RvoikAajYqraUQOMOUGRvm/WAqvUlaK9R1TfCTqgmXLFkvie5U5f0nKmF3UfdXNtQV7sFYVNLTjtCXW4Ir17Stw2xJzhA1MivEcrm3Ja3D3GXRFVKUXnUtbE+KJ81o13WUO9pMSMpth0DNA3ACFXt2NcLwEOsXQcYNb64gjQuvT1R/bHHkapw+ZKFmzcXJw2YNPPY4a4dAsBPiW/PAbnEwBZxdTFwwgzawgEr14WuUWVrqu67d+5zpWmoKQO5CECQrgh7EV4BO/yR6blXzP/+6BYzrCrtGdAXwBVnezv1natKC/3WTdrTTv3xNoTWuyUf6K09D9T6di9bmtJpb92ItJwpc9TqKKAapa+j7hpVLg9XFM1s1wHFxTiiMshjeegQ3R5OFDd5TBHv4UjdA4/clnvdI9PzKttSztO+A1KqK57v4kRNVXuG+ZLcXvX1n7XbA6zYY4k/O7ZH4/pjXcVIaU154ZOustGDHabCP87NmbYXqEV5ePuK51oc0ZsmwXP7h3oqzmuu475nYNP++vq9qUkpCvxd1Nz7yIzR7W5ymhTwuXuItZhXYwofI2xM0mOec/OqP62pyLzedTnoeKh1kVovpjaqTm3aZVMOAOx4b+lwYzXLqmaKyEDQEcBFokTix9+slDbbrvPaqJ+ODtYoMstjGKfG+Ub6qMmzEiQ7gGxvUtLDwG2NfE2nwdK1VeeqkfeBfiiVY4dlDn9g4ap8784xr0R6rxqDNfmPzsi5/RQ+kHB50RsC7wmURVwNZuVNbTiV41rLoFXUZ/eypSlOStQciZqox5EPiU+wzRFNy5niC5cvGd58tyjKbhX5elpOwQfh8iUvgeYDrhVvj8YN0vHP5ci1KP0AVGQTgDem5dHe5YWichOi0bm/Kr1nzu15be7XE9C0nClXn6HBLbCjvOgjQTqAhhA2ikqpk+yu6j7q5r2JQMDAT8uWDLHCjaJaoPEldB+goOktlBF6KfYK4AOvI3fEXB2ukGVjkc7AAUjMAW+t2Zpqj5/k/rB/W8b3AKLGmYnqZOJfJSniccZ8HuNOBwIOaCaQi/IDRYtjmBqYa3aWFl4QLisc1Ce3YH1aTsE99XWHMxWdBqwE0MQHbCFP5VOAqPhrEfca4JiD03FvaXHHJgf4vEljUPwor5YFMgt69K++ozRYPVpw320mq8ZB9n3RDgA5MUKj7IE51jVcg8iGcHnRhh1lRXefk5qSlJ4ztTAtZ8pNACLSQOugqSOf7l62NIXY0ef7jr55A/CQeEg55q3PATArPth2vljtAbLGH3Vuyq2svlvRXyg60dOt5/vAEZBiG4t++ae3jW59GjvrUPTEoIDwaeKPxi88SIQnGqxTtaOs6IGta/6QCpCWU/CMYiaBhBpZHeQj16/nA9fsKCu6P21Xhye9hu1qNe4Ax/FMEqN14wIZxQ0++zVEHwMQZcKc/OyIUXIfmZ5z/bwfjN//hVreZOsJ6zwqxPcPhvNaVXUV4eHkBjcQDC70wlyTnjP5nZhrBwNvAp/1HjW52qLZACI8VNO3blCvyybvEWTMtuULOxsVzVFrfCs/DPdFtYjE2p+YXPjpjNz1X6C9J0BFFonwLolJCsBA/LitXNQGS0STkv/auz7pq+HyrL/uLF88NCtv6sG0nKpvKHoLgKCXJWi9auXpRkavz59nUNLEmPfNgbTdQOOpybViptLG1vGLRvrogv/uO3rKxLScKd0cbECQ+7G2ZFf54h4cv29ogsLatJH59Vbl68BwF/NBuLxoLsXZkp4z9XUAFRnTjMEDoKrPGzTboFRGPN6deXnEgD/HqeTx8UPTy0uCod+WrKsOfPFmtwntnTNtXd+cgnl9c6etjHk6HgG9E+VvzYkEliXuBxqXXwd4qKb30beqSgv9ibLmO8yq8OolfdV4n0c1TVaurboWw6ik+oY5EZ9/IsLj/ohzcYPXvRLhZWDDvuS64fnZbYe7/xPYsapwuBi5F/imWr0UkWQRVrUi25qWM+V8QKsrnu9iiL6PcoHALCt6COUzQc43jsY+QLkl6ku+ok6S3rIqM44lx3wIv0oIuqTb0Q73/XtNPDnSx0xdm5Yz5Tpj3Oz0MaGgiFzXBtlSQGvKi2Ybx9tgheuAo8aJvSpWRggyHdWtxnU8w4FUsAVXB3ofHT8s411iZg7NxpsRxv2bbDsj9Bl18z9hjjXqvgA0D4ZExPUs2lG69GKFR4kdXZIxaspmRK/qfdktIYQJwHgxZpOsqNz+mCD3AtZxGbC7Y11N9/qU3UBjsMNaay51HDmAtVl5wzKWt1bk/wKCwYXeXvX++1B9UEWfSx89dcaOiqIXRbkeQEV+kD664FfV5YuzDeYjABG9XlYGQ9ej+iKAYgaMC6R/sjJY9X1BfhUvk8JxgYxpK4PViwUtUGH+fn/dT/8vzQnNEa4ozHOMu11dT5qFco6vZAd2dzjWq3tdcpojditgFJ0ny9eFso3VD4EtYwOZF61cFxo3bmhmSWkw9KLCt6zrZmM8MSP6T44fnjYLMj0vkFHxnzDydBAuK1qN0HRVpzA/PWfKfQDh8qI3gKtF5GvGce0lICuAFaXrwgNEeaNkbXU2tVoA3DP+K/23iNGbaRlAzVb0m6WleFYGQ0P/rZadLoy83fS3UuN3O8yrqVhydXh1cbIoS4HPojG7yaiR/oL9jYh8gNprgQ4YfdXt4E0ZG8j877lgRLnpxBb0JTpVXyoQLAlWv1Oyvno8/4GNU3s43DV5PrABUBy5Vby1olZ/g1v/1Xqf522Q33mNGWNAMjxJZhWuXW7RYQn+840T+xPAxNVhnwibW8mvHhvI+kDhyvhPnYjV5SXB0MellaH7l23Y3WbU5t+J7Oz8iBVuBn6ZNqrgrQbreRShL3DdgBHfPex0aPiJik4wqhqOHNPv5g3P2iVKVjMZnQBGjkyrXzU082qFByERkVXeIB6AmNiq3S+p8HCSrfeuqKy+vLQydH/JuurA3LOUinOmyBg9JZiWM+XOHeVLrwC9AwDVqygt9dhjSecLXGgMukkMNwIgNAtfaSlAybrq6wHGBTIfsWIDoqzG6BtvrdmaCgw+sVkJ5w3OOugI41R4BNXK3GBof0llaHlJMDTrRPovHoJ9juPD01tFVXdiZoSKhEwMWyKqLoAV+wMS8XQR3gcE1d/mVob+/M7qcNfxQ/ttWDUsc/S+T7KW+72ekcT33S0bE01cTOjAZsXnIIwHCr4wK9tA8YJ7vwIoyq5EkSp6S1be1F3WaASlxEwI9D+kKuUrPwz3rRjab5MgDwKo6D9K14W/BKQifDUpyf2wpDJ05Ryw+fm4cphVitwJtL5y+gTA0mI4xVtH/y1D4fVfzD2n+JnZz4JZVfzzWcmgKwBVZabfTXmzpmzJFBS/FfcvJq4YFRKJDcgJhmblBTIeV+GFOuv/WG2s+fk7DeHPKytDdwDk5WU1jAtkLJBaHYDIdKAi0ch2AIE+rRUT2soRObt4ccG9l0adhr+j3Ab4SfKOFpF3RZiRbjOfPWaOvqTGDgH5NGP0tG0GwHToUG5xjgo8XBYMX3wsNTr16kDvoyptpLwY9QCsDFYvLgmGvrO351E7dmjGwrGBzBw1tp/j8lppKR6gaxv6feE9wMGk0jxTxZrL++ZMWbEr+djisBN6AWESlgbXtasgsbnJy+5xZMX66josfhf3T8mHUr4CHJM2cn7ENn5hvRKY2r0+5cmSytBSccxL44b0a7oxqtgovWIRO0ZhLMjFQJYSn2u+SBzp5C9LqW2oB/zA7z3e2H8B9Kr3F4JeCyDCrkS+QrPdXcTdj8e4QD8rkQXAjWJ5TY1Max5vd5DquWByoVui6FyEH6m1PyoJhrZJcocvE6nzxFxrJwT6vw683ky/Mx4Cy4PbOot6vmJEc0C+MjaQ8dWT0U+dOqfhpQU/ftZgXtVzt77v7uyfD7yA6oUJBaqssU1JVC3yBEuCoYXArcCGsYHML0P8xgiRV1UYGfeec15MI3sdnINtKZDKvqTD0uObqP5R4Z+CfIDoFpQqa9g+fkjm6uJinM4DP+nmiSZ1EtFzrGqqUdNJjO20amjmH8esqemj3ugvURkELWP9Ua+/48RLep2QXtMaLy2YPUHgSWBQR+qSBw0e9hdUByJypYvZm5lz005olSAhVh9SI98mMYGVrKv6WczjPNXV7hlzmG4PgNznqFuHY6SdztwQCASiKyurfSIYgQtBL2yM1BuLFm/e7O/ar2OaiXo+AQvamERgUYXL1u8owbgx4jG+E5Bk63sA7Tqg+OezktXju1Hgd41lRxx/F4QP1OE2cfW2zJxPZjfWtZiU8oZn7VLRh4Buy4PbOqtKf4+1lQel56VjA1lzxJiRnohz0OO0kakURy2AEfW1Uy/doqk93CRfu3lFTsxmrRqetYem+/2WcKNOj7bKX376x5cVL5j9pjpJPxHR5veRrhPxSkPtoZ+Iyy8UsxLmNIXeT5iVy4dmPQ2UeNQzHLQG6G3UlpQGQ0/4GuSjkSPT6muTI0eB54HWefynnOVNJNYj0YXbzgk0ZM2J3w182ia/sS0iw39YMDe1eMHsEhV5D7jKiHTXeMI2oOuM2Eu/dde8Xb6OqfNBOqTnTH7npArPAeviTrPChaKyIVHsKNxdnxT78M3gzg6TBgw4NjaQ+V01doCiT3E8hh8fUvErqjbhimn8gm33AmnaQIXbrBZt0QPssSMukNf4W9Guap0aFWZ5vO4kV81df3zqvp4Cl4rw/dby2vxiEwL9q10jr6DS4ipMkPM6ELmgYmN1l9J1oe/u99XvHBfIuquhc7S3ItejiTO4pV0HmEYDpB0HNB7IVBodEAU+BH0a4VpMi1WFyXc/UQccSvysQs2rN9z56CagOhb1bBAYlzPkvFQVfa7v6IIT8hnbzRO8fEj6p3NhV04w9LJAU9RVVC5eMSjjb7nB0MLu9SlPlARDv/Z5/IvGBdKKgeK48rZChdsN5hJFBwFfAnoAjiA94nLY3ewWM0K8y4cFiW+ljTvPq95HU9j9j0Ag0OZ8cNxp8mcVffNoJ/9rKYfrh736ywcyRXkZQGCRwXTsM7pgUVusp0yXLy7G6d4/dAOwAOiKsnjssMybSypDa+NpbEB8zJapyPOddW9hewqXr9/awxVPNG9w1sFlG3anJHmM5GX3OFm+wWnhrQV3+molZZqo3gNmC2J/RHz4VlnXXnnDXT/7e3u8p8wW75qxvbuKyXbFDPKqna0wKVG1BpocYIA8Uc07TLcNpZv3fqT1dY+KyBbXyhZsLBRzk/ZdMXJAIpEBWq/lyzbsTvHHGjJi0NuqG5wQ6H+IU6D4V7MHxKKm1uOk/FqUbyaSSyoVkyro29byUCRmq08m45QOGD+i3+6VwdBBj9o3UDMFYs8Ub96c1J2UEuAHrelFGZyX3WNNSfDot1XpaUTBcUhyXEqCIVBWjB2WOWFlcPtEwbyQcF5nL+ASN8GxJg9OuOmJG/3Mg/1Qd2ri9cggj9hJQNOyK1AbUd/GJOqfEYeBk3/4xNqT2Xdah5Nxgcz/AilSsUER870+BxyfeHRFPGWu5VKoNGaCyt/aEAXCqGAw6HWNZxPxRxOtX4shbR3CmhqIXUX8DdEgADXSeP8XUZEFjpF7fFp/sSA519/x2Emf7MEZnM7GBjKeFtHpCndE/P5n8wZnHRw7NPM6iXn6CTxC47otTAJEsSXtiPIfovugy4ekfwpNgYqWNp7k4QVICx6DesXqUgf7JYnJophyjbGy67qZj81uT0JL/jNA3tCsQit2hKIXl6ytvqi0sioPb3RCxOt/rCyQma7GjgGKV1RW91PRv7TbaGN2N6xrm0LadYAKO4E9qP4O1Zzr7phfrMa7JoZ5DMe+p5ad37pr/jY4vcdQp/VkpjnGD+23YfXq8IgGv70sZm2lo86fvNGGp3Irq16wOC/v73Dk7sStkZSsr54grmZZQz8smSJ0QeiiSE8AhdVC/JCVwB5B91ik3YlLem396+bNF/XOTj10jjhJE1956v5LMHaeoNnWSt4NP5x30jF/grzP+3J0ZWXoDhEWNCs6BPJ6WSDj5jGb93ZgT4+GRO7B58Ifn7y7u/H7Mg55923scqzrSuKOc1T1BjDJ4vG9kn/7nDNeUs/G01kpqdzxNRX7E4Ehx0vlBlXdKvBXoJr4BmenovtEZU/Mkd8n5oF2UfzzWcl4fX9AGQpkApvyZ84fVLxgdgTwAsst7owbZj7+yb+q/BkPgTagY4el/w/wRmmw6huo3KPCSFR/mhxxhtQnue8IXA36JUhERETxqJ4LnDRMnv//ft5QvODHVwFJiaL4iqFSLNhfXnfnY+28MTp9nPXH0wAlldsHgilQ4YDFfcnB+RvxJa85DiU1NKSPGjXwpM9aihfMrib+aqUK5U/5d86/62zqejZ6wAkYO6zfP4H7G3+XrK/Ox+q3iHfjLJBU0I7HfP4pwDMnlyazsO7G/B/+7J9fhK7/C//Rr+gyTJtzAAAAAElFTkSuQmCC",sizes:"64x64"}),ee.jsx("link",{rel:"apple-touch-icon",href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAL8AAADACAYAAABVnrISAAAACXBIWXMAAD73AAA+9wFvpl7qAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAIABJREFUeJzsXXl8VNX1/577ZhLCqiyyZLKwWBUVhYAKZMKASItrF+NOElGBWtFqa6uCRgq41NYNrQIuSRD1Z9S2toobyZAJRiSJO24ImWTCLipClpl59/z+mCUz773ZkgHB5vv5oJn77r3vTnLefeee5XuImdGNHw+N61flCinfBNAGRgsI7WDsA9FegPeCsZeJ9xDRTkh2CfAOAE3D5PDtsNm8P/b6j2RQt/CHY9Hj7xzjhtdGwNgl8/JuPRT3dDlKNwA4LcFhHgBOgL8mxteSlFcyrLPeOAjL+8nif174//zU+j4pHvUsJkwF81SARgMgAPLL/jtTXsjPVw/2Gpqqyi4m4ue7OE0rKTwpfVLRB8F51z81LA34YeDk2T90ce6fJP4nhf/Wx6qPFkKeR6BzAT4bQC+jfmZVDi2+1rbjoC/Ibje5FOcWABldnGmLJPP4zNzLvgWABnvJUSYT1YDxOTM9b+rV9p+hOXNaur7gnwb+p4T/1sft2QqJFQBsAMyx+guIU/8yN/fDg74wAM2OstsYvDQJUz1nsRZeFvjgcpSdBrADQAqAAwBeEcTPDdve6zUcgrfa4QzxYy/gUMJMpn4AzkIcgg8AKtRjDu6KOqBAXQmgLQlTXbqtuuS8wAeLteA9Ai3yf+wF4FLJ9IprSEtDk6PkdqfjmaFJuOcRiZ+s8C96sqb/whXrbrv98epzA21uom8Tm0UMTva6ImGI9crdDP6/ZMwlJT22ecPqvoHPO3q23QfgI003C4H+okB1uhxlLzSvK5uajHsfSfjJCf/tT1QNX/h41UMer8cJpqUgOTJwLc3r2ZvIXAQekvwVRoFQHknKPIT0NI/35sDHnJw5HoCuAWCk5pgBzmfBFS5H6XtNjpJfwnfg/8njJyP8ty+vOvb2FeueYxVfgXA9gN4AAMbRgT7F19r2w2cijAtMPCzpC42CjMmzasF4NxlzMePGUJXGYi14D0ylMYZNINA/XY7Sj5urSwtgt5uSsZbDFUe88N/26NoBCx+veoiBT5npEgBK6HVJOEozJG7Vh5gOqfD7kZzdH+ilQL0ttEFAvRNAaxxjT2RGqUtxft5UVXYxfqJvgiNW+K9ftiZ1wQrHzcJk3uzf6Q0PsQIdO78f38UxPQPYQuAtXV1notg3sGc5iGcCNIvANxJjKUArAfyLgGoQPgewJ87prmysfjb4/YflXdkEUCIP10gift7lKH23aV2JNZHvcSTgiH2t9UnpmUfMf43VT7vzE7CbgZ+FNLUDeB9APTE+Uok/Us2mT+6dPflHcQyNHp3vBvB6zI7l5cr29H0W6RUjmWgkSIwAYySDRxIwEkA/AL0Eu68GcF9gmFeV95sUuh5AagLLOo0EVbkcJf8mEn9Kzy34MsGvdVjiiBL+RSX2o9paTXT3b3MTUF3ChV8CtQS4QPSuZLlhv7ul/uH5M9uTv9qDjPx8dSjghO9fhfbydvtzA1WTdySp3DO0PdtWtKPZUfosA1cmflO6gJlPc9U8eZJl4lUJGQ8ORxwxwn/749XnMokVZhOdhQT0dqZwNWfp3LzfJ31xhyGG2i7dgwjqkQr5N8HiBBAmQHNGimdqqOZlAC7v6hp/bBz2wn/Lirf7mTjlryDMAQBFiO0xhuwBqBLEb3uhvH7PnMmNh2CZRxQyrVduAjCxeW3ZAKTKaSxpOgjnAojvgM98WeO6kpLMKUVvHdSFHmQc1uENty+vOpuBFQDS/U3tS+fmpTHAC5avO4tAb/rbGwC8CKZy805rbXEx5KFY3843V/Vq7yWzFYlsycgWwFAQ+gPcn0FHg9GfCMQ+/bvDuEBwE+OABNoI+MxiLbxGO7eruuQXAJ0LyfsBfAfCAWKxD8R7mMQer1fdmeZWdg+eMetAcr7NItFUlZ1LwG9A+DUAS/T+9KHFunUcUCwBYM/6p/oMnDx7P3zGgiMCh6XwX1Rerhz77TH3EdONmks7l8zNGwIAC5fbxwPiYjCVL51n3ciH+JfeVF16KTGeTcJUHph69rNMzA8zQbqqSs4G0atxjG8BoZEZLgG4mNnJAo1Q8VWKWfli8KRZuzqxJmpeV3YGK/JiMF0KwDjMg+jXltyCfwI+4W9l5Qlmucj/ZjnscdgJv0/NSX0e4F/or9LXS+ZaRyUy3x2PV41VvMrO4usmb0vWGgFgW3XZdMmclNe+AHKHWQvXh7a5ap7sD69pD7puY/8ejK8YWJyRV/hKooPr6laYh7am/EIyFQA4D+FWovcs1sLTg2t2lF0B8EoQ3WnxZv79cE+2Oazs/LcvrzrWxCnvGgi+G8DjUDlm/MncFXXm21fapy9cUbXs9uVVTkmod5vU3GSv1ctq0h4mleh0bZtl4lV7QfgiCdP3A2E8EXSqVXPV09O2OUonA4siykFOzhzPsNyi/1ishfkweYcRcBOAgKnztG1VZWODa7ZufRaMT8B8j0txrm9cX3piEtZ/0HDYHHgXrrDnAuLfAPqHNKtgfhqqumTJ76Y5o42/Y+W6CZJp3iDGr5nFUUCHHkQi+TE6UqVtIlE7SUSwTvh9N6F3QHx8km4yfbe9vPcgW/7+4F2F0o+ZX3Y5sneDy/7DhFfIlPamVgULwG/efADAg43rSqYLot9KIQvh85MAKJbMJTcRURWA04REbXN16Q3puYUrkvQdkorDRviJxTUcIvjEWEckbvjLvMjx9ItK7D08bjqPmG5g0OTIcyPpwp9tK/rO5ShtAdAzZucYINbv/L4LqAEwu6vz+9HDrbT+AsCLgQYlre0NtSW1BcAgEM8mYDa8LT+4HGX/gsBzFk/mWxFUF/Zbet7a8vaKfqEXMqYUOVyOkn8DdAGAHsxY3uQomUSmXr+N9FD9WDhs1B7JOAEAQOQkUP7ieXm2aIkkCx5zjPG0ix1geoGBiIIPAAwcrJj1JKk+nNVgL9E9oFJwTXLm99+FwtVJf1bXm5pufQCeBcmvuRTnNpej7GGXo2xMpDlHTJ/zvbZNEi0O/UygQnhba1z2ZxI6rx1s/GjCv2CFY+jty6uODXwmQiYxLzaj5+jFc60vhvZdtMhuWrCi6rIFy6teCvaH2hM+E2IcEAcrNDlper9ZoRxtW+bkhs8QXyxSXCDGmdo2Bv87ypBBAM8H+EOXo3SDy1F29W57ee9Y98nMLawDY43mTqdAUTe6qktsia77YOFHEf7bljtGE1DjlWIP4DukqlJMWjxvyh3Fc3KCOaY3r3qz18IV6673DBFfEWM1kf/tAECQSCAk4eDE5RM4lsMtbjDzyfrWYgmgLmn3ALKb3ikdGdpGJhGvxeo0gFe2Ky3NTY7S+51Vq4ZH60wcvvv7cRSYXm+uKr0o3jUfTBxy4b9tuWO0AFeA+UAgRmf5nBzP3b/NDUZQLlpR13Ph8qqFqS09nGB6CEA2AIA70vxYJpTyd1CEnwnJS24XwkD4ASJ8YNTeWZAXttDPlokFzQx8lsAUfQm4USH5lctR+qLPWqRH+pSCGia+ihg7NZdSmfBcs6PkRw8zOaTCf9vK6p8J8FoAgwFar71OAC1YUXWZhw98DmAxgAGaLsHd3pvQzo9BF5WXJ802E4RMovCDDfVqZkqq8MPArErA2k7MpAD4jQSqXY6Sd43UmYzcoqdaU00/A+g++MzVAQgGPeCqKrmnE/dNGg6Z8N/26NoBQsr/AhgCkN3MysLQ6wuX28cvWO6oIsZqRKbwCFoLFHInIvzKsd8OSXoyelJ3fsZxmzaVp+ia1SQLvwE5FoHWdW1KOh1MC42ujDr98n0Wa8GfFJVPAcERPoz+7Kouu7tr9+48DonwX79sTapQzK8AGEXgu7/sv2N68bxJQbf7on/YhwDiPYBjOaOCZjepcrxqD4NQR15OulmXkin8gLnf3h9O0DZmIONzJIfVwQ8+ceebq8J4ioSg95Iw8USjhzeAobaizy25hVOIMBehh3jmW1xVJXcm4f4J45AIf9+UXveDMIZAFy2eO+U2LQuaqpgGIw43PjGCv9xUUqLt/C1gepuA35sVmblkTt74JdfmNXX+G0RYD2TSDrwAwGzS6/02mxeMT5J4G5MnjcM8r0Mnz2oE0NXv0rPf7tYwi9We9U/12fnOqtA3LqfnFq5goZ4IcAe1IlFxs6P0kFBDhuKgO7kWrliXD9B5zHLiknm2TwCfN1ZVacbSeXlLAUAFD4wngEUSegQ/7Eab5hj7PcD/ZIEXfmhrqTgUCSoer9hpiu8k4QGw3//PQ8C3DKikzzfuazSYiNYwuD+AHgDSAPRBF/52DDkaQNhuT8BGBs7v7JwAwAryAAR9EwO39WlxDWn5sMlR8nSakA8GaBMzJs/eBmBmU1XptUT4K4CeDNzV5FhVfyj5Rg+q8C96ZP0wMtN8kyInFV9tc11UXq4cu3fInwi0SBA/GOzIGBRP+BaBg8JfXGzzLlxe9QOA14jo+e/b96851BlZ2bt77XYNadkHwEnAVglsIcJWSHYxY7eJsVuqYnf6mQXfdOU+6daCOwDcEdq2aVN5Sp9vfxhI0jRQSjlYEAYBYhCEHA6mLABZ8FnJtDnMIIjRupsQPgJ3TfjByANwb/Bzfr4KR1ktAX9pk8r1TVWl95p6tf/D71zjjLzCR7etf+ptKZUXAIwB5O0AfhrC7zHJX3vJfd7iq6d/f8uK9ZnHycFlTDwFABi0L9BPkBzEcQUvUljeqVmVw/x0JD8O8vNVS9yOtuTCn+u7DTEcbY3Vzx5tYs9oCR4NwonMdCIx69bMkj8DdTWAlCejvFwJo0FkfgOEfAADiXCf2pJ6g6uq5M+WvKLnAPCwybO/cNWUnwG1ZRkxrmpeVzYxfUpBUj3bkXDQhP+mB2rSvKb9Kx+eP7P9tscdk03E/2LCwGAH4qDwS6a+cfzefyDwf0IbflTBP0LgJ61d7/8XEWTCJu46c2e/bYNbxwwLBroBXslrTUrYH9cCotUuR+l1AP3eYi14zx/zc3Vzdck6FnQlQlSng4mDduC9/8aJrQ/Pn9l++3LHhYL4LSBE8AEwU/DET6G6vA70NQO3qFJkLZ475U8Ha73/6xCp7i/hE7ouZcGxxpSabStqAGBEATMR4HddjtKVAXqV9NyiVYriSQZZb1w4qNaeBcsdtzL4BfgOaWEg5iA1CIGNaDTWsuCzzTusP1s6N+/eRBgbupE4hubMabFYCyeZIIcQoRDAfxFiWo4XLKTOXAsDdgk/CMDVivR81lxdWgAAQyddFTV0PZlIutqzZvPm1JmjRrXfvtz+C4K4K1I/UjqEXwI9Ql6MlSB5x5I5tupkr+3Hxp71T/U5IFN6Kyp6SZPaT4D7CIiwv0F7u/vj4WdeHRYSsGlTeUrfva2LAHxHEt9Jkt+TEN8zaLeU1JxlvWIHkpTGOcR65W4AZQDKmtY/NQyqcikJFIFxUjzjmUmXwMKECmJcHXEMYTAYpS5Hab5X5WuybUUHvyYCkiz8FbXOmft7un2uchazop1hiU0hOz+lAqiSgu646xqrobfxjpXrT5RSvRYCq5dck/dOMtedDDgdzwwlwSMVliNY8ggiymJgEANDiTEYhGMAxaxABRRAMAAQpEZmTSnmawE8Fto2enS+2+Uo/T2AHkwAgQDJIDAUAC5HqQfADoCaQGhgyZ8JwV8A8kuPV3yRbSvqlJPMb5L8O4C/b3c8PU5lUQjCZdCosKEgQCf8qpcrTQoxYvtyzjUp9LGrqmSuJa/o5c6sOREkTfjttQ02gjg5f/ToNTc9UJPWsyd+Ga2/N0TtMXuURUY5tnNX1JkHygO/EsC1TPBZiRjrAfwowr95w+q+plaPWytMTY6SEgVUCOnffok6ssiC/4kPgoNMFVrsApAZ4ZoZQAbAGWBMIgKYCYACkwLpcpR9BXAtgWtVodSmeXp8EJrRFQ+GWq+sB1DfYC/5s9lEFzHztYBhEs7Qxupnjw5UhwF8RFkuR9mXAB8Xx60GguilZkfp06ZWMT957BR6JEX4HXXOoUz0tMfsOR0AevX0TOXoGU4tRB3EU1rB93P1zB8EXAvCUM37/KAXU9htL+/tUVpOkaCxBB7NoOMAPr4HMAwmzISGTlAQNSWLB0ASG1OGMHaBIgp/NAi/0B3HoMuFlGhXWlRX9arJltxZGxKdzP/glwEoa6wuzVEYv2PgMoQktpvYMxo66xJ/AiAe4ff1Bq509+A3ACSlZoERuiz85Zs2pQxEr5eZUT1jzMhdAMCEmVE00H/D671h6e+m6dzpi0rsR7nd4gYTp9wAA+cMcBCYk8vLlW2DW8dIkrkgcQYzjyUFx8EnNP6vEfJlWOiEUwJbkkVjTCBj4SddaHBXoJD06uqQNb9TcqpgZa8/3CEmMnML6wDMdjqeWaCQvB7M8wAcxYQToRF+Am1i8G8SWaSAzMPhLPwD23o/DPAZpIRE9TFbte96BlyCxW8Xz8v9r3aO2x5dO0BRzPOZxA0EHaW4Fl3b+cvLFdfQtvEs5VlCII+H4AwAfQACOA5XG0udcBJ4a9JYvMlY7SFgVzJJZlhRdBY2qeI8hlzU5Ch9h0DPe9zucu3h2whZ1iu2A7h184bVd6e2e+fAwHQtITdRgr8jJpoS+LnBXpItTCwyc69MGnN2l4S/srbpfBDPBbCbvs9cBwCLlm3oixTSWAbo6ZRU9abiojzDlDyhpFzKxMVx3rZTwt/sKD2HQYUYwmf6mdTQKVVF6HdmRahbVTVJxyc2Zkpjop2dW3CE20ipE37yRY8SAZMBnmxOMT/ocpS+RaAnvx+Q9orfqxwRo06/fB+AvxldI4hNnTBIjd5uf27gUNule7JtRU5XVelLKC/PT1YhvU7b+de+1zwAJAOUFK/YbD6bsCe1dQw6ArZ2EHDOkrnW2cVFtqDg37Gi6uSFjzuCzhAO8fbGRueqpTDwS4DzEU6N0pmJdDvz0Oa+LiRQ8SUGejfYS3RvP2KZTLUHgKFjUWsVUgD8gsHlfb9paXI5Su/bbi/pFJWKV5VfwrgsUjSQV/EGIkWZBTxNg1uSFv3ZaeEXivdhAIMBgKiDuYyhHO/7P142kzx58dy81wLXblnxdr8Fy6selIx6EjIY/hrq8IoDnRX+3Z0ZpwMZ7My+nShphLgKFN09mNEZ2sGIECyMHIvRTKLHAPijqtAml6P0Ddf6splIQNfLthW1EUV0dkUEEZ8a/MCwE+GOpnUlExKdxwidEv7K2oYL4DvhAwDcJrUy8DNJ2Z/As5fOzftN8RzbHsCXnrhwRVWhiVO+IOAGACYJEWQBCHV4xYHet6x4O+FgMpEs4Y+klgBbkzI/ACj6twsRJXfnF3qvOlFcSTMEYAYkv+aqLt3U7CiZ56op13nwjZCe2/ALBq5FAowUxB3CL1nYAZhJiFXb61Z0mS8pYeGvqXGlgeihkKaGgJUHAJbOm3Lf4rlTng58XrDSfurC5VUOMErgf1MAgJCyT+BnVpUE1B5AcGokW3hEMCg5wg8cZUTfQWwYv9IpCNLX/2XmpO78bKD2sKTE4noYxzPoMfK0bG2qKv2jNkNMj2KZYS18TIUymgkvxLnOYG5zVt6szwHsAPg42ZJqeLZIBAkLf1uK9xb4YsUDiwvLMQ2wJV+/bE3qwscdS0mKjUakUlIgKEAqU7w1pn5g8LJUUhMWhCQKPzzmH/QPH+HrZM3PUujOJR6PN6nCDzaIp6LOxTQzYTAR7vOkyYZmR9ltWhY3LbKsV2zPyC28mED5iF1fbEQIlygzYyMAMDCv2VF6TmfWG0BCwl/x/tYsgG4OadphYvxF22/BY44xfVN61YD4NkSwKBF3qD3e3i2xXulbApGdS+dOuT6gTiUCE7xJE36vVxg5m5Im/CDWCf/eo+ReJJGGnZkM1B7ZVXvtQAYvTUntkR9P53RrwYtelU8G6LUo3Xq4aoYHLXxEwXBpAuPJHY6nB3V2sQkJv5DiPnREaG5VFDUvb3zW+6F9Fi6vupgE1wIYq5sgBAwO0pLcN2vGAfhS/MJAgINYnGfekXdsVyM7pZqStJ1TEOmEnxROnvAbWKR8haShowY8HEGQcdt9s21FOyzWgnP9ZwHDM4eUFCTIYlB98GfCYBXiic6uM27ht9c15jIQeKI/JMmT8k4d8ZW2HzNGIUJZ0FCQzmoTdqD7BMQXLZ6bl7d4Xu5/k1FpxQNPwm+LyGAdtUqrYk5e2VKiSObYLqVDht+C9SmfUiQlxJ01kaqAj+e/qbp0weY1y4ysTJxhLXxMgZwMgzeoUGVQzTYJCttsGTjf5SjR0a/Hg7i/LAO3AwCBHSrUKbYJ2YGw0/BXJcUZA04U7qxi3gnwFwwUmnfknbJkzpTyeNcWD/wxKQkdrCOBiLK0bX4HT3J2ZtarPf4LyXuAiYzynaMkFSUwNVi3+Vm+SUshxpIevfvWNa8vOcNo3FDrlfXu9vYcMP6pmTEYReoPvdBYB+n+7etXJRz3FJfwr93YNAHgGQDqWr3ec6fnjPgeAKo/bjzaXu98tXzTpiClCIHjc/YwD6HQB0fBzV/233Xi0rl5ZQexplZS9H6GXu3xozkZ8yOiI04kb+dn1ntribtsPgQAyfoKj54+7sCOfyJLqm5ylN5vZCIdMX3O95a8wt8w+A50BMlqmPtI+5btrUr14UTXGZfwC8ELAGyWXnnOzNNH7QOAqg+2HOt283pmzAxfV9zZP6l3PlkTDF5bck3eO1o+n6SDk+XoiuhldiVl/gjCz5y8nV8a6NeSul5rAAAEsU4GvO1KKKGVQsCN7G2pa36n5FRtXwCcYS1aDJ+afQAsw4Wf2UDFpAuaHGUXJLTOWB3stU0nARjHQk4/8/ThOwGg4v2teaqqbCTAIGWN4nGUqCA8BTUliUxksZE0Ly93+CtCQcnb+bUcpYEbJHHnh27nF0lSeyST7u2falZ0bG4EnMAq1bgcJfNh4C22WAtfUiDzmCjcGEK02ei+BH44tq+hAzFP5UxyDiTNnJYz3AkAlXXOcwiiHCF5uYN29RTwM8GQFNs4mq+E6W1m/GHpb60fxbvIZIEEdiXJWHjU5jXLUkfNnK/Rm8nlf1P/AJ8X81vf//lbAn0rge8I+BaE7yBxgATvA0QrAW0q0Xck2S1J3Z8qTIaJJizEyyTZC2CIP8ZpKHy8pn2M+kcDkdAJv2T0TkZsqhD6OCeGJy1CveseAD3scpSc2ZZiLvCfnYIYar2yHuXlYUVKmNkZwSOR6U3jGwBETJ8NRVThX7th62DFpLxgm5D5KQBU1Dt/Rb746rADjbePTIX/NUqEpgjy9a4UdEukNMVDA9qdBFP5LgY+MqX1SUMIazQAeFR5Vzay/3KwqhBmTp5VDUCX29xgLxmiCPoZAceC8DOATgL4VESJgyKS+gMvo38yIrOlwXmCIQzzM0JWdEEPt/qes2rVr7LyZoVTpmvUYQHsjvRXZPAfG+wl/8i2FcUMoYgq/EeZ9u7NycmpBoCKuq0zCOI5GJgxyUs94Ld0eL3tLmEK7UJfg+XNS+ZN+ad23KEGA7sT+Nu6AXzKjI8BfMzMH0rGx9GSqzubK9tV+Ne0A0BVaPvWtU8MNqeaxhKLcQyeBCAXfpItVRpae2IIaJxgoau9xRwzTwMAH6cQb3BVlxUG6vsad6PdoIib2NFmRdwEDcOdEaIKf05OjgcA7PUNZxDEPxFegzUIM4ngQemu3535zcLlVS0AvGBeus9z4CEjGsFb/2EfZVJo9uK5U26LtchkQUDujpKuspkAB5jWqQrXZnqyvjjc68jGgj8R5XUE0y4XiebqjJOZRR4ZBeJRF8O9A9MIqTP5MujoODeePmB+samq9E8ZeYV/N+ogmXZTlDc4g29oXlv2UCyayJg6/1vvNw0zMb2IKDm5XiEHIeSXSYz7pMnz2NKrz9SFLSxatqGvN6VtoaKIGxgwLXqy5m/FV03cG2sdyUDIgZcBbCLmdZLggJBVfqaCnziKZXouPgRgWOiPkrTzkyoM/B10dAIqpyDC35qrSkak7+x1vVbtMcG0Q4VbRYRDBIC+MgW5AKLVG4su/DU1rjRTinwViMgoAAAghDusFs/Lu1PbZ9EiCPeQqisoBfcCFORX9no9NgAHnaYCAJjkR2DxK5OaWj3UdmkSPb6HBnV1K8zDfujT72CtXVG8Z6uq+TwQ/9pPOtupajZeIp2+LcBaIoKYYKJrXUNaUiwIL6A91HbpHpej7PcAL4s0loCYMT9Rhb/FxCcJwMgOq1lk9NTCBY/bT8IQ8QQBOqoLCUzDIRJ+/+7+r0Nxr4OBYT+kjFQV92cuR6kbjN3+4hjNDPqCSX4uVPEZp3i+8BeLThh+trRHADyy3f7cQFW4L4DA5WBMQSJxYAbCHykPIp5lGTVarAWPNDtKhjPoJsNRLCNyCwUQVfhJ4SGx3lQM/sok1VeNri1aZDe5h4g/EIlFiHBeIMK0WIvshg+qCBobUkBIZ98bOQdgEBNYMOA1weUo3QKid8HyXZZ4d1dv9wf+wLi44X+7PAngye3rV2V6Wc4iRgGAn8UYKvf0bNmji/8gpHfG0MYc2beRbnXe7HJkjYSv4HX47Sj2zh/1aRZSxkoZ/AIm09S8CSN1VU/uWLlugmeIqCfgHkQQfAAA44SFj1cknJzyvwgpKGLZHw1GgPkygB4mQe8Nbkn9rslR+parquyGbVVPR6p3FhFDJ89qzMgtXGqxFh4nCeMBWoXIOcu7jB40jlxnLSqEiOaYLJY9hJwFYJP2imSKufNHf5WJqMWbP/cKMW3aKRadV3PRIggp6Q0AhuU1tSAy/SJ2r25oeT0TQE8CpoP4QUmisam69MrOriEzt7DOYi0oUKFkASiGvpyRUXkjAndO+MEUVYUbOHn2DxIyH5qQeKJOCP/bdVv6rdm8ORUAmNnQjQ/gI5Pw5J01NsPQQlJcDMnayntRIMHdwh8HmBJmPzCEYNLlTG+renrS5g2rDcsiGSHLesV2i7XwL2379w0HeA6AQHi7TiYlFJ7pAAAgAElEQVSa7avTAcQddhAKCRnTCpdpvXITGPPCGomDEQhb1z5hKMc64VfIdPHMUaN8dnmCUfnOeqmaplnHjgp7HS3SzEWS4q3sDQLNmLuiLmYOwP88PMmpykis6gRKkljZw+3d5XKUveqqKr0q3gypUTPnt1usRSst1objCZRvWNNXuGOdEyJCMOtYMZqrS3SZYpa8wtUAVgcbmIPyaDabpxvOHfrhjRpXfwDjOsbrTF2fmFNo+pmnpYcdQirqG67Mq3NeEtomFXrT6IYR0HcwWsfF7va/DRJqUmqOuSVphZ/gq9+VCvDZIDzhhdjW7Cj997bqkvNgt8ehbhXLdGvBi+nWwgd0l4g6LfzSJHR8/cx0V3NV2Vxte1uK6VoE/U0h0T9EU4zKpIYJf0qqvJAhP4+wju0s5Lm5J2eGpRLa6xpvIKYnoUlSv+ua3C8RH53HtyDMXTwnNxm1YH/SUJSo5VfjBXtbfwjTyxvsJYOhd2KaGDhfMr3iUpzOJkfpXZ1JGPGBOus8k+3f7wsPEy8vVwBkMvGy5qqnwyyFo06/fB+xvBoAU6hsM/NRew/8XDt5uKrCfAlL8WnIxYBxaj+Izps2dnjYU1hR13APgx+Eb+cwKCBNb0f/blQuU+i4JXPyVnAC7r//VYj4eHVi4RttNKqZxPBInf0YRsCtqpSbXY6yMldVSVyGjADSrYV3g/lyIFHiLWrSrnV7+j4LgBQAZiZR3mAvyQ67V96VFQA9IUNCpJnwDTMu184eFP633m8axsAU6HMoVSK6dOq4zLrQxoq6hnsI9OeQppPsHzSEBy+RjKT3b2HwjCVzrRfddaU1aawKP3UcaGlNxs6v0/eZZCzhD8AM8CwQfehylL0aKR3RCJa8omdh8p4ApqcQ70bHrDNhqlIJXWt/k0IvaPOCvar8E/kC/fzz4BsGnbdn/VNhod9B4Tep6sUAhFt1h7nOmfF727jMMGZle51zsUbwAUCwlyaFLVRV3oaWn5FolVmVpyydOyXuA3E3fBCmlIMj/ILiFf4ACOCzWdI7rqrSl+Pl77RMvGqvJa/gKgg6B/FUfCd8qm1ifQ3hCT1697svtCHbVvQdK+iQT+JvAPRsZ+VXof2Cwu8nEPLOPH1UR60sxspp47MeCR1QWe+8mYGFMIYt9IOfaiTwxtgP5oIlc6wF3SVEO4dsW1E7uqoesu6wCwISFf6OoYRfqQp97HKUrdhufy6mbR0ALJML1pCbTgbwYtSlgnXCL5gNaoPx/ObqsnNDWzImFYZoMOJbAGDmX4fNBfhs+0w4Db6ElOAvd9r4rDWhne31DReDcU/ExRLO1bYR4S2APxVCOWPJvCmrIo3tRlxgdLFUKIQBoS4nvPNrYQL4GlbccVdeST+z4BuLtTCfmOYhAl+PCazL9mMyLozHzCua15YZpn8S2G+tIluo5UoAgAIlF74Ivoi/WHttg42ZShHFK0zACRV1TSPDvoBb+cc+d0vOX66ZrHuKu9EpdCrSMgCCNEj+5lFdmdOPtpb9+2oTHZSeV7A8Al9P67aeno81bQSOGDUwFCnyUcMrHdSM/baJrUFqfOGbMaiuGHoQ7R80ZDPRi4gWoxNcnnpe6Mfi6yZvM0pm6UYn4DPzdQnE4bQffvqQzkZchoA36Cwz9ucGuhxlYyKNCCDI1xNGW0jva2OEXFUloxClcg+DLtaqPwDAooOaUQrlrMDPwjcIU/2fdQkrNTWuNFbpRURiFNCAmM6L3asbncGmE7u26wOAKtRw34vnwCgkoRg5EenCWVThvgDg+uaqkkddNU9GzRIbMX3O95YdaecT+H4AYLDO70OCJsZaBzM/rKUvFyGkvMQc9PaKt+u29ENHzH6q3d4QRl/RlqIuAZCD+KHL3+xGcjD6U6jwBZO9BGAzEtf/WzImz9ZaWY5Nxtqk1MdyEeF8AAoTXQuv6cum6pLZiFbQIj9fTbcW/YEJs8kgUR+MeEyrw2VrasTqLQzkBPR+E5F5DFgGdxR3f7UvQg4gDN6dQCGx3SZN1k03koj8fNWCDlbs3fby3u1KWw5BTgJwBgMTESWDiYDPoLEWMeHEJBA2eNMUtSa0wa9OhcbUDCCmJ5urSy8RwnuNP3HGEBm5hU8btTNjYjyiyIww06tJUV72qPJ++Oh20hqVrT/LhG2TiSRnh0z4yYwxI8OcTiyVtSTi3GCYr7GOz45tv+1GUuAvJL3O/w8AqMm+6kShqNMZNB0+p2WQCl76auGGgZjGdpmuhPHBwMmzwyJFSW0906gWMzPOUlXTx81VZTen5xUsj/cWzWvLBiAFMc8PvuWEc/4PnjRrV5OjtJTgi/wk0BgAm4QAZ4aMegCanaF6QkYdYhcQAIiWTx2fHTVhuBsHHZxhm/VJurXoQYu18Nx9A3oOYMbPifkfAJrApBd+ik4lH9dNDcLXmXF+lCF9mPhxV3XZS43Vz8YX95MqpyFeek3Syysx3w+/mkgkTgEAwR3Cv5v287PaQcWABDhWIbEvPKbUP2gb12zYHHd8eDeSj9Gj890ZeYVvpucV/c5iLcwic88wU6Cr5sn+7Ivm7BoYdk0LAayzuujH8a8Fez5oXL/KIC5M01WSYViy8bT6Ek6WvKKvAPgijSX7hB8k/OmW/JjNlm3obGAK8L4YwsssC2aMGXwgtLGy3vnrNJMpqgevG4cUbJmYH2aMEB7RCz6iq654jT3tqSZ7aEPTupLxiL9ecqaQsqKpuuzaqL2IdOQHkSAlDCOTCfSk/4fgzn8MANUrlOVh/UIgVKxBpF8QoXja+OFhZqmqjV9ngPEEg86y1zdcHO+iu3FoMSzvyiaLtXCKV+URzLgdwJeJzkHABi2/plAomspjBDMxP+pylK40irv33+kGaOghI4GFKajeNa0rsQZ+/n5A2ivwcTcNc9U82V8Q0AuE6kBKYk2NK62itvGK0Mn8hSjqocenfXlPWFBReTkUKZTV8BMgMdP93erP4Y1sW1FDRl7hEou18HgQTyXw/wF6FmcjMKALUIyh70fD1X2/OaBLUgEAi3XWOjCuQuy31DdZ1iuCRhcS+EOABt1XQZ6eBwCWKSMEgJ7M9FKgc3uq92Ih+FLtjASs0TQxC3ltgNIwgIHDG//AIGtI07A0JWVRjAV34/AAW3KL7OnWoks8bk8mgRYgRvQlCQ7L2HNWrRoOxGeVMYRq0spZEJa8wtUMLo66HtJu0nQae8X8kM8vAYBQ5QgBIE14lSApKDPNZcYUrbNLJRleJojwzLSxw8OIUe11DceDWCfoTHydfWNDTPKrbhw+GH7m1TvTrQV37RvQM5sIhQC0cTYgxs70yc4wlddEakIFIjTYaLFdYci9H0CGtWgxE0c0kTIjmEDlzzwbCuLLd76z6hgAsFi3OADsYPAIAcInttPTXQCwtn7rGABnAOip9hahuzfOHDf8IwYHfgHfSY8MLUmK8nIo/kQFowIHJilQFmCF6MaRg9Gj893puYVlFmvhKWA+B+ANgWtM+A9QHOYEYkpY3+8Yy/EVpt6V5p4PsCHVPSkdbyJVygn+H1M9qlro+7FYAvgvSIwQxBR8zQgp5gR/Jv6lbmIWz/gXeXugSksAA0Y2zGdCxNgLAp3c43tzXEUDunFYgi15Ra9ZrEVngHgmgBoiCvPrNK1/apif47Mz8EJRdab2pqrSPG1AX07OHA9M4nJoqlMSY2f6pKJQEt7TQq4WhvR7i8HDhYB4DfAddEG4LGRgvt0eTmfIZrEajNpvtmY9Ftpu39gwhJjujOML3mivb+jm6DnCYcktet1iLZyUnrs1vHi0qlyKTodc86tapuy6uhVmIqx2DWl9DBoLpGViQTODrw6bgvAywg/EIcKPE5vWrxoPACaTsBMwXOTlWD4BgDazzEc4RfUg2dcZ9hRPO8XSbCKcn58fHvrMAg/BX/QgBoiZVlZ/3JicIgjd+JERrvIQcEWknrFAoJXatsEtPS4GYAH4muaq0sXa6xnWon+F6v9SckdMkC94LSwgk1i9AvCFOwDsEgg+Kawn+2Qq0LZZc7LCTv9raxvPAuiiWF8uBBaPmyOlQXbjyAUB/AYic3hGQ2P6jp56RypzMGqACQtcjjLdw2VKc9/EvoC9TzOmFG0MtLuUpsnQ1ipj8Uv43yAMrBcAUL5pUwoIZ0EHvkjHyBCC8nIognzx1wlAVRjPJDimG4c/2JJXdAurYhwD6xMayHhYW4DCVVVyNkhLj88rm9aVTAhtGZozp0UofBmgtQBJg/AKztrueHosABCUNwUADGrpnQfjin5pUsUlBu0AgAEjG2cDxjmVkUBMy/LGZ70fu2c3jkRk2GZ9kmEttPr5O+OpE/Bde6pJp/KAyMie34MEvaxNlE+fVPSBxVoURrQAg3xyAFAhLgCAfQN61PgyuQSfHWllBLoOBgkI9k27exPrbfoxsK1VdUd1UnTjJwG2WItWmhVxAhDjLc+8XBse0ewoPQfhh9VQWLzC/RT0Mhk86Lrsz4yCJqY/BGcBPhNuIEQ0GgPXiRW1Tr2Fpq3VhviDl/zLo1sDFdwDsNc13l1R39BpyuxuHL4YPGnWLou1cBb7rIg6ZmgArSqZHtK0ETPujDYvEc5zOUqui3hd8UaLKJ2w5e0V/YBAfDTjsyidQUQ3aNts4zJfBXShrBHBwPtV4zPDdgH7Bw3ZDL6RmJ6qrHeW2Tft7h1pfDeOXGTkFj4H5hwAGnWXHgmNwwGApurSS0AYH3tWutdVVWKYgskQ0fLITeaU1ClAQPgpuhATeJ9BMxMp1wBoib1QgATdXKzJOZWqKEaAEYIxi1tbNvq9zN34icGSV/SVV+VJ/sQaANhHbtwb2mfzmmWpguOrng4gDYSVMMwJ5qglZIXwOeIEALjbFTuiJEMz03+N2m3jLJsB3Gx0LXwCvD51bGYYb7u9ruF4As/S9DxesHi3sr5xDrrxk0O2ragtPa/od34e/zu1dXJ79O5zfWLJNTRlW3XZmdpWhohqgZTSV1dMAMDPJ1r2QvdKCkIlMr8W4Rqm5mT9g4Co1dUZUnfIZdAfYewNTAPz8sr6hn+/Xbelk5TY3TicYcTj32AvGQJQggXJ6YvtaW26GJ8M66w3ADKsNQwARKgFAPHfuu3+JOOIxSTeteUMDc2J1L1m2t3K1YABDZ4Pr2mTXRx1zqGI5Q1kOl+B8qm9zvkHbZhFN356MCl0P6IQUhlBkLw5UpVJ1tn9OyAJrwKA6MnuKQDArBrWp2WwhqG58U9V9c4TQtt+PtGyV2H8Egb6v5TiTm2bCroe8bC/Ab0Z+Bv3cW6srGuIO42tG0cWmqpK84DI/iRj8LphuUX/iXTV097+LIzPozsycwvrAUCA+OcAMG388I0AXNqegpWg8C/ypT3+VmU8r433zxuf9T6IrkRoYBHh7TMnZGwM7VdT40pjsGG2ThScCtA7lbXOR2J37caRBiK6ENHIrPTwEkmdBTIUI6bP+Z7B5dp2f1IWA4AgUODAwNDr7tts4zOC+ZBTahunAcgCMIb70N+1E08dl/kCA3d03Ih1fQwC6OKFIIKWm70bPwF4VXkHIqvNehA/mp47O0ynb3qndKS2m0JC52CTDL+Gs0gIAEPe/OjrYwBAShFGIc5AmK7OxLNDPl5bUe8MI/sHgGk5WUuI8AiAT23jst8wWHinGd0kcdj63vxoZy/tG6gbRx6ybUXfseQrEIEoWYMd7rbwKIHtdSt6korXfYfmDgzbnlaJ8FJIO3b1al8DAE1V2bmCiLeavWYbAPhVlGApGAohCy3ftCkFCI+XIMYTRhaZdeOybiDflwlLNl77fuNoGNbuigut7R7vS6ENKe62S7gPfV1Z13h9TY0rLdLAbhz+yJhS5ACg0xS0YPCNI6bP+T60TT2QcgeAUWZFc27Iz1eBjoQbYjwZOCAL8MVCgr4G84zgAEJJ8GchgsI/8EDPidAHv/U3saLT/4sBaZuQ/YF24UJ2Pt6bgVe1oRGS8EsAwwB+qC1F/bqytuHGbi/xkYt9A3reHs1ECfC/M6xFz4e2OKtWnQCiG32fSCdfBA4Iv/RC+Hh7yssVJnGOIIktAC4ImBPd7cqT8J2SmUgGi9CxQgYhzwATJqIPlWmLUEdYvK54cLwQmpQ5+6bdvSmcCHUoiO7n1pbmyrqGh6o2ft25cvfd+NEwenS+m8hbCMDIQ7tXhem3mjZShHwUvuqMYCDHWbUqzBJpahV2AO0Av5WVN2srADQNbpkMcF9BwBYAA9G7IRfwmS0ZeBbAF7ZTs78L3oURkS6Ogfy8euffon0x+/tN4wF0tgKIt71dhDvaWg9Mh3GyfF+ArleFaXNFrXNVxUbnJIM+3ThMkZ47+0MGlmnbifj32jggV1XJpeBgbQkAgCD1wtDPg2fMOsCAAySCdn8CfgNGiwD4a/+o3wQnYPEQQMEs/fJyKIjFxcK4saK+4feRLkspbVHHR0e13wsdcjvjN1EIUohwBQmsr6xzflhR1/DbbvKsIwNpQi0Go7mjhcrTc4vCjB1b3l7RD6S3OBKTPjyf6QmLNzPgEyAQfg1Ci4Bq3gwAzLgkQC1iG5/xiSQ1GB8xcPjWUfBxm0cFMf3dXtt4odE18UPWg8T0YKw5DMH8iq4JHEv4QzGGQP/oYTJvr6xzrrbXN/zC/0B34zDEwMmzfyDgJv/HRkkmnV/I3CPlXgBDtO0gTNAmu2TkFfwfbDYvADSuXzUZgAWgFuHn7NkLYGCPfSnBPN4zxw3/qGM+Jd6K24LJOD/XZoPXNj7zRjAVIkL1vUhQTDLMy1z1nnM4gTpTUaQngMuYac3AEc4m+4bmJNSi6sbBQHpe4QsAXiVJRZm5l30bes21vmwmMUUKflRUxRORIYRY+tnbeGfgkOqzzPi4EA3AcZeYZLA92vWp4zPLGJiMOElRGfgs79QRX4W2eU3x01VHQf8+ph1h3ENvfrSzFxLzNHbjIMKr8oXpUwoqQ9u2rn1iMCSXIurfyTgzcVvV0xnE8NXiJTSFCz/4LL8tPgySOGKpGy0IFLOy+rScrPoebuVUgB+OPaNe5SHmKfGuJxKI+CMtz2iKt/2PlXXOHZX1zrKKusZ8/8PQjR8J2bYirYZA5hTzE4hSesmPs4BFOuujJGU+EAiSJJ/wM1PAJk8k+UbdVExxVWIE4KG0noY0clpMnGhpnZqTfQMAHfNWKASEUS5BZx1lQYR85yCkr7r3MWDMIvALZk/brsq6xtcr6px/tG9sODU+c243DhZcjrLfAcaJ6RoMbH4nK8xA46vQyEHNhsGNAgBMJIKCQMAs+8aGsIMEAXGVlSdGrW30oP3a5mhjpuZkPUuSTwLjZYPLe3ZvyQwrdOb3KGfFs55oYLCOcp30ucw9Af45AfexoPfz6px7Kuucr1bWOW+vfL/xTH8ly24cAjQ6nh4N8F/j7c9qOBWPty1tNID+Hdd9pFXohZ2fo4P4P5UVEU42SgiLzIx4Q0KNts1e65xdUdc436h/ALYJ2Tumjs/6DfvIr0JMXPyalh3ORIoVSQDJ8Lxlv6Urlh/iaABnA/gLJL+tQPmuss65paLO+c+K2oY7k7GubhhDgShDHBbHAFjjAyJVDQ2JkIpX1AsA8Ou+QQEnyWEC18Ot3A19eXiDG9K7BouYTOCHK2sbltfV1ZmjjZ+Wk1lOaT2PJ9A9ANqJhS5eW8P932l4TUrYITplr8hC53gmhxPwS6JEs5C6kQiYE2KCW5uhZt8d2mA2KUHhZ+CD9DMLvgnqsMzckWMrKKz8y8SJllYQ/y7WHU3SoxN+EHxJKERz9tHAtxzvb456WLGNHrTflpN5K5FyEnqmGVHYJUP49581NiPMW6iYxIguzhk1abobXQPDl30VB7aSmy4O2PUDUNgTrEcmCJVAyAFOkAiS+kPq7fBTx2W/waCSKDfdlTdhZFNog18n7iAPYkzxSvP79rrGmAdW2zjLZu35wV63fSCAEyIMiRsMfAVNxKlkDO/itPGE43YjDqz62829Xnr4T2F+HAUUj/B/JwXO0ybGA8C+Vm/HRi991UWDDX2wewP8xEJSGBf+ave6bwDQYHhb1lfuUIRpPPQWknQGV1bWO29GgjZ1Zu+kRMdEgE6FE6Cu7vzdwp8EvPToLSf2SDW9K0m5PrR9WF7BB+EhDzq4Cbgwc3Lhp0YXTT16B+TQ20ORDiBEMHNycjzsr+RNzIY0JjNPH7UPkotgQHNCIJ3wM8tInmETGH+trGt8veJDV3qULxR+j/3qm/6qfLtjdo42D2Orto1Di3F3Dt3hEl3Ei8tuKZCS3oOP/1UbvsIQEUviSgYXplsLQ+lxqKm6JJh8pba3BKo8vhOoFh+2KwvilwCAiIJphhW1W8M4E6dOyF7HzDqudBiUtgfTiREWG+gwg7zqR/GWK7XZstum5mQ+3Ob1jAKwGMCBWGMMQfq3FyVKvahHd8mlTqL8gZv6ly+75Z8MKoUvBAUAjnv50YVhJm3y1QzWggn8O22cf3NV6WJiChZbEebU/gDAQLBfmPC3erwvA2iVkEG7PpF4SBsN6Rif/RdQR+Ev36SkK/wbZ85tf2Z6vqLOWe6nNImJmaeP2jc1J+sOkjwKjPsAGDHKRQQb7vw0LJE5DGDuDpZLHC8su+U8mFI/BEhXBkuqatjuz17lHU0XJvC16daix0Mbm6pLZjNhQWibGd6jAXhMakowqT1M+GeePmofAf8VYR5dSu9hMoeZjYoB6TF5LwcoeMD1KqQTKDBi7PwhdwEu9AKb7LUNcxGnXu/3D/xJhZpJoFsQo2xmACZheG7pqvAjbcT27t0/Trz84IKh5Q/f+iKBXgFgHGBI4WHrFtsVm4kRiMeSxPRbneBXlc4gprA2AFCFyALw5lDbpUEOKp27nplXMxAi/CwBzKusbZwc2m/GmJG7SMrzAewH0KY1Ha59r3kA4itVFIqjmOjxynrnHxMZND1nxPe2nMx72/p5hhPRLPgIdCMVK2Zzu9IQ2uAvk9TlHGCzW+1Opo8JovKHb52jKvJzEH4TrSeDzyovv0gJb8M7ALzENDs9ryCMmKpxfemJRPg/AHp/EvNJTFgd2qQT/j09W9aAOfSGDEAwyae1+bG2CdkfgPkK+LLBwoSNFG/nQxCin+ojYuaoUe22cZnPTM3Jmkqk/Aygu6HnIto5caKlNbSh3dtlfR8A0DNF7d75Y6D8kT+fBMJyAPEkFh0tt40cF9rAhLcg6Pz0vILS0Pbt61dlConXEYH1jUBZKS0iLEhSJ/z5o0e7QRQanMb+wcdyW4uWSx1Tx2f/m4XU5lZCdMV6QvSFtqmyvnFOIimJtnGWzVNzMm+bmpOVKQUmEfA3AFuMLD2K2nWVBwBUhbuFPwbyr7v3E1D8mxuJ8KSlDGvhY5bJBWFV2hvsJdmqlHbo1aeA+ZnAtHHwjFlhBhLDKEWP2Rt6mOWQn2YbZWppK7H7p+7szs8pra36WH/JF5HA+sp65/qKeuevEoiw5DPHZtXYcrJunpqTNVIxeNVyEvR9AGBvt/DHBjMkRzJZ6kAx0lWdVauGmxRhBwydlLsAoLH62aNSZdqT2ouGAjRjzMhQop8wLysTP7H2vS0/i7VoCdlZVWL75MnH6ap4MPkFlDGJGC9b6xo+r6hv+H2iZU211SQBgIVUkITwBKko3daeOEAkIrJ+G2D8ihVzDWPCGuwl2QrJtQBH2GhpOwBk5l727SBbvjbaOI7dk3UOpX5CUV6JnQwedw5A+CiG07AdSA//TMcS0wMeN2+31zlfsNc2djq7a9q47Kc95h5HMdH5YF4BdO7MAY+3O74nDrQj9W3EV7K0BqDT58xZruvrqio51qSQA8Y7PgCAmXdGugYgNvU3C+wmvd3kuDST+QkAFyOCVYUY/TsTiMAC27Rtb360s5c58gEplYF8EOdX1jk3EeNZmHi17dTshkTuO2PM4AMA/uP/h8rarceRoIksMRFEkwCMRqzNQpi6hT8OXD6/eF/5sltrAUyM0KWVgUU05Ou/5ee/oAsbaXQ8PdofixZVuyBgR7TrMYVfAHuMpJuB/Mpa51dTx2ctMLgMCAyIaGyMBmbdrqu42wfH+SCNZsISqLS4ss65HsBz5DW94k/STwhTxw//AsAXgI/BrqbGldZu8h4HwvFMOAHA8QClw/cHGAogjal7548bhAqwgfAzvQWhzL3ousV6v5EfCmgGx+GRJ+qi8DPT7ogmc8Jt9jrnVltO1hO6S0w1jE7k2rLQCb8QODrBB4ngS3XMZZP3EXt9Qy2D/kVSvBLKOp0I/ObRDxDMdw7Hmg2b+6a1joqrPtlhBqrc2Dgagqe43crzWn6kg3ZTKSqZZOjG2UTghRdef88qgKP+tSWwI469cFNriilqElbsiieEHdEEj4HH1mzY/IKWR9OWk3lrRX3DTmL6OxLLfdU9rQzu14VQTmKmCQAmMMnrkCTLjhba73+4wm6HSe3VNFaQmgsSUwDOhfA5NdPMag3iKxzdZbDa+g5MqW0AvAy+u6VP2v1FRcVtwD1h/cofuX04w3vNRdfd3ZEsxLQthiawB6pygba+rxYxhd/dLl5MSVH/isjeWlOKkjIQBvE108ZlP1hR73QS4xl0BCxFBQt8q22jBMvVRIFu7qpa51gp6HwJdrRwyrvn5gw9EnfviHjzo6+PUdzmUxTwaUxkRR+eJIA+vpdj+K6mCj7mUK0r/8b7W19cdtutXlJfuOS6e3XnvPIHbuoPU8oCgH5HvhTboPAzyT0UeT89QILPS7desTnWGmIK/88nWvZW1DY8SMbl4AOrGQCfl1eHaeOy/ml/v2kKS/kSgJiOL8F6AfXt/Emh09Htal6BbGK+kwD0gttTWeesA/AOEepZpQ/2NGR+rs0jPhxRvmlTyqADPUcziTFEfDLApzBojBmmwSD2i3l03ZEg4qaoSQYunH+XjsGvfNGiFBzdVgRT6hJ0UJSkrl62qO/l84v3AQCzqZjh5w8AABumSURBVBVkGHXfRsAF6ZOL3gV8pU1HzZxvmJsCxKP2AJAkH1CgXI8IFVWEovY3ag/ANjaj1vH+5vGqNP8fI5xYVAuWBjs/U5K490mX4SMkpzIFHywzgDMAnMG+oA4MHOFsqazDxwA+IdBXTPyVwspXZjc2a8MkDhbs9oYeSh86er/Xc0CrXlXUNY0E1H8ORK/jWcAMBAQ98c2CpTykwh8OohcfueVCDMA9YOgSi1LQbkGgdgSREeNfOwEXBmL6XVUlZ5vS+rwDGCdmAXEK//ScEd/ba51/Z8ISw2WDwqhNysuhaHdL69hRu+12zOA+znv8PIyGfx1OEd/p2ohTiJOw8zPrdn6GSImxI/YEcDqA0xkMMKBChZoCVNY5dzN4hyByscQOApfZxmfbtRNU1blOloJTofJREOghGWmCuS8TUgnUB+DezDgahKMA3/+ZcbRf3TsafaiHF0CaYl4IYGno3EKqB1hQvHSS0UGHducP4MWHF5zJ9Oe/AhgXqQ+Bg8JPJNoQzrGwjyT9MsDu1rh+Va4gmpJtK4zqTIu7xOd+SnmgF9xXw6BIMGt4dAaNcP6+sp4/maopS2SzwQtk/bGi1rmWfEUwdDomt+ufapIiBQbOhoRBrPccC6R2YepBBBrEjJN9j7LYCeir2atQN0AiLaBmE4DAsxzYp8O2AjbeGZigy3pbNyF7V16d0wOjSMYEwYifmS8ZePaxW482e7EahJmx31Qc5JKSXjcLxdefGDtVgXMypxTUAYDLUTZGYX6RICfEun/cVphzc4a2MONaw2UZJX8zvWqva/yzUf9p47PWmITnJBhk5Cu9U/SvKUpOzAxB6A+zMnnxOAyO5NVOjgWFWCf8xb6U0rjyGGJODzqkwi9UmQZgZjx9JYT+78T4wCP5jMzcwjoAaKx+egTAr0vB/xqWd2WTrr/2/oksdtr4rDWhNY4CII3wS+K9ABQG31NR51zpr+cVBuvYUbun5mSdx+BrEWIpak35XufK5vAQ686D9KwUgpKYfsiIJPwR6RgTm58M852pkyHg+nkOrrVn1d9u7vXCI7f8PPB5yDc9d8EgH9wIBKnVUp6BueekbFtRA+AjsBUs3gAwUErl3njmTJh7UoX3emiC3UDhBxSSHTsdAVcPaullj1AmiKflZD+mSO9JAF4DgJmjRrl1vYiS4jllsG7n52QKv+bsE4Jk2c4NhV8mECIcDUwxCWA7hRUr5prLH751To9U01fE9KdAu6242Is4yQiIO1T0bFvRdxZr4SzLxPxWAGiwlwwxp5jfAjCKgGcC5YdiIWHhn54zopGJbtI0Z4UyGvu8wh1gwkRVmOorap2Gr7i8CSObpuZkncPMl8Hg9ClAibB1RQRL6KwzLFn3Vuo0KILaQ0na+YFjAgVEwqEPCekkkir8ixYtEi8+cmv+0e0DPvMnsAwFMDisE3FcKhtDGJ5pfCHNVA0fz2q7VMINAtHQKdbhaeMyVzIQyp4sFLWtgxU3RTGKzBxIhP9W1jqXRqItnDY++zmjdgYnRfiJ9K9YQQa6ZOdhLPyctJ1f/H975x4dV13t8c/+zUwehNInUKDJpAUUuxCaTrDAhZqk1HX1iiAwRUQQ8Apom1JAIAGlBqFpRaQ0UCQKKtzLo1NEEeWKtDO0VF6ZBIsUUUozaaFAS3m1NI+Zs+8fZyaZzCOZmUzS8vislbWS35xz5iTZ5zf7t39772/xe86k9ZWI5Mv4R6d+uLLj0ab5hStvvfr8qeM616uyAjReILq/a6UyYP5NlA9EkruDdKz99VSHWGuAQwEUvan0+G8P2lYzRs4tt12m5wLiBH7F0mmx72uOnvQ6qdVXDMLV7zOhZVXrpoE1vvqRN7cnDyGjARlPirCFpNhfyBXV5OZaamnWiXvpKNxVlFFH7lTcd8s1B65oqr9qp5RsVNW7IGUDg/GBhoY+/11lsInhSRxMP6O28bH4wS1r7/6Cwaylr3rr9aJISWPy6enJ2fhPrDhsG3HRH1Gmxb2skDovP8pRRs3TgWDHJWSwG6NO86Agv2CADYucSbEIHgKuR595JVGrGJXk/YWcEUnuJO3Im9uDsyeS9aLXd/Nl41Y01f/WaawOgcVo6rVJFLNjdHeve6VCUvg5yk4R5nprF8/0fr8xKVVB0EuJazmOcmWqgpWBGJLYQnWl+0GEewBUJDGuOlhuRbGiSwPB9idSqcHEU3P0pNeqPGXfU6fjUEVvwdYJzoWkmd9SK68PVLGrKNl4rLz5/IB1aOKIRhx5m/nDkv0ub8TlKhI4l6ge7mD0mD730IiVwvh1ZcThmHrGvMblsQzP/21q6FfPoUhF30/yt0kzv31vtvc9ZKURMTofZLPA0YHn2/sS0JQBlLT7UOREY2lbIBj6SaKSeyI1R096rcZTvsAKW1MErif7toXJnzL5nfmxIskzp+Rx5tcUPUW7x3S/xmCJOxlictjldRy46U2yKAN1EIkzZImfrf+pMNtbu9j7je9fvxkg0NDg9DXVXeui89rYQVueunMcaKyRbZdG5CJy+P2HbPxV08rfxXA+IJZletuHqyTL/gxAgcIPdZRkJIIxa8bkN6s87h8VdTvcAt8FUjYnTUQ0hWi15tmVciREM4CIkQHL6bJBUpTtffmww7oYYv/SGFYOu7zRaquMN9oU6TV+teQDYKeIXMWOoqPn1Db2Nk94cNmVh28b3/kkSAOqfeHLsLOaqO2qcn1p1Tk51WjkRWOquqJsFWgTcUJxTkc4G+OPceRfntoyYJJcPMcdN2l3lcf9q2qP+/MqzALuY6B1gUmRIJfnmR/VJON3hcN5c0uwjT/pE0xzrTtOQKwcd3klufw0HYr2Gr/lkABhxxFnzFv0U+/ChdE9HpEVt9ZfbImjDbX1HQyO3naYKrF2JvL3t0q6MtrQSkXeBNaKup11aN+s5582ZSMp8ucHo8Bl5dJ/X2umu1dXe9zftCLOQ1T0UiBpNhBN7somKnmd+QWT5PZYuw7dSv7EK/ZZ9cympPcwOuSIz4uislSFB3M8P2PjF2N6gwJnzr2h1Xvp9b0P7v1L68t9TXWPiXI7ENs7Uo3sbgPA53OIyilAj4PIBR7PhTmHwTNObBuM446btHtNS+jnj61/s+RLRx24ayFYAdUnVeTkbK6jhqnAuvgxf7C9HjFvy/vW3VVV5QPO1LO+cMjbwFJg6arWTUc51HGWot8Ayq1ULQmFzvx4yzGSZ/6qKsL+IG+QridlthSYKUA/V0pFsjX+f6GsAwmEHfL47IrSjI03FWqxVQZPvO1QoVF6OpMWpw0NDeZzY3d/z+GQRiAxYvZv76U/3wHw2oE7vwhmIioLDpp5fpKoYDbkzfgBZla62/oN2J3fsjJ+QVPP/Kp36Ci5LtASaurqcdyeSa1pVEV+PXD1qrbQsWJZSWHIvPv8kuzzA4iyWSU/xm8sJkOC+J+wZYCH+B2UVhHaLOFvYWd4XUJvpiEjA8/8ttG/XXTXnF7Xpg/fsnrP1HHcDkkRQwA0rjW5ijlfhRWlJ56b1D0wW/Jq/EkY8wRWRnlLfVjJskMi5gW1I14HqnB9QUGkLtAa+o2B5TOnu19KvkgSOqvCnaQUCSDIe4ruou8jdkikSw5T0c0g6Vp1ZPkeKbJoLdmC6C7sjhMvK2wQYYMYbc22jUtO92TkdU3eQ/ynoEt1R/GvUxk9gG95/WEIzzCAuIdBHgXYGrhvAg6O7nI5h6zDDMNs/FUVpUF/S/tliDSSqXiDJGnhgrH+QaTfZ+q+qsyLwFx/MORHWS473X+w6wWyvEdP2ZM+H6MnlHccgeBBtBLBg3IkmTVT7YciKWd+yNotSYdlSXJF3X6y7T6Px3MPeQp5ZotaujW6DI+A/lGR2+bULl6V2InB11w3mm7KvPMW20o+EWscmIGydruiTa6IOLu/aQlnDVaYninDO/ODVleW3+xv27Qay9wLGYlVHLLm+VcPnzltSq9UaNW08pA/GHqfZGMUoAahRkeFXg8E5W4jeneGnwa92FVnZS9ih0zvjo3/tW3zwQ61jkD1M8ARIkyOphUfgp2glcrLTWn8Kro5g2q0LuwgwVsoryP6FsIbgnRYFq8K1qudYyLt0dBmP6JysnsMY6TdsljscJhfnDb3+ujufl+2wT0/u6KkqMhRi5orQBeDreGmmP0G/qvoo2fXLnx/wwZfwX4qT5edcG5GYe1MGG7jB6C6YvLfn3pqS2VnQWQJMJdBokxW2NRgKybGUFFeVEnb4QvgYEXrIkqdP9jxLOhvrYjzgegCOCeii8DXgdWJr/k2bCgYu7tootO4DiCiY4AxiI7B7nKR1BpBw657xBlZGz8mlnQZy9pliuXd8NtlH+TyybW3cPq8Rf8E6hPHf/ObhqKSnbsvKip01tvRQEXpi7CJMmrABBeVuwGmTvX2AM/m855HxPiht+nT/NXPhe4Xw53ES5QmoEINcEfC2D9I394u8QpfAL5gHOFl/mDoaUF8kXDk/lkzJudts8k7dWo30BH9GpToQ5jHNIe9G19z3Wjpkv8ugQUg/Rf6or3+v4iO0tTWHxFh/hm1jQ9Ff867O5e3OP9ABALtRY+t33gAQM0x7r/JB1qh6BLSxr6lmiSXQnLZxXMA/6HoUuM0WwLB9seSr/sp+cR3648mr2yqX0wX7WprIiRFuETjNhY1ZT+onWLkVDu3Z/gYEeOvqirvdPW4mgMt7VWxn2s85XVYMo0ULgWwv7+tf8qzZUnKaE0WOBWZvbpt01AlRz8lDSuX1d+Dhv+tcBVI+kZjcTO/JUkx/c0WesIZcxc94muuG+1raMhfsVECI2L8AAj3qsjj/mDoRzFhiepjyl6s9rhnKTKHBPdBVfr199nRXtpKlqqLqTAqSaHUQLDjdn8w9PTqYOiXq1vbF6xq6ZidjT7wJxXfzZcVQ9/WlgozyUCPWMT0/h9NXJ4PwkNOIxVn1i7+u29ZXZl2mTneNCHSfDBiPv/2jWUPTpgSageu+2Kw/cRVYT0n5oPXeMp8jwS3/mlfemoVvQoYa1RmYu/UAnZExh9kLfBfQ7kPtfcR+imDKPo6cLHADFQQUQhH8AdDu4FNwCYRNqG0I/KmpZG3VHijQM22yAfubcOxUF237uVRkRLXxHCPY38R3V+MTLKUyQamqJ3fc0C1xz3iD2hz80WuMZ3jZyN6pjgLT/XdfOlE76W95aEZ5UlFrEivIqKd5KYfolzqrW1sBnhg2TVHGpHlXV09GXV2yJURM36vl8jqoN4kyHJFZhunrPe3tF9YXVn+B7BbowBLnnyho7m727oK5CwSoiYKARmq8YtJqiATlZc0dfOeYuzw7NTeaLUqgkE0umAZFcIf5ENgN/Ae8CHCX6unuxPrnPEHQ5cB30TYSZ84gwtlX4V9xN4LGQ2UUFRURATEAAiqySGkdeteHpVKxSbfNDdf5BrXOWGmGmvOWB13enytsrPYMQp6jT/D3XKNy0DVDUbEc3rton8CrLilbqYxstLC+to5P7gxN5HxDBkx4wdY6ym/Y2ZL6BiE84EDEPm9vyX0685Iz4JYG74TPl/2DlD317bNywKB9sL4XB5jTECz3TFOQOxIUD8iDjaYoV12n+iXbRR2Al2S8SOyE1VPqrhFLqvwSIlrIqSthBoSD9129fiIao0qJ49l7Mkq1phU962dzn3pK2fNyEUJU9Jr/N7axltj3/uW1V8oRppU5Zoz5y95emi/weCMnM+P3WBpTaX7v9Xu2mwjnF/kdL3kbwn1E4qbXVH6emIS27ZXStuApHaGWfK5fkU3wI5Xyl4G8jnLTEkl2yRY6/P4HvRYromDH5Ud991yzYG+pvp1YUvftIvPOWegxWsEE/97ZjLz7z679sf9Htjm5otcK5fV3x7t8PDQnPmNN+V299kxosYP9gPw9ib3eaAr4oYPRlgZCIZWrA2G0ipueL1EFJ4c4i2IqvEkXhdoS3N8Tu9R7CxILtAvKvkHeYxXi2rejd9ZHOkEjieDhSuAODQuWiODRWYeB6mMT3m476YfTBjbNfYvKlwMPFdcWHRBYkrEcDHixg+2se3H299KeABQ8IbhpdXB0A9SdXkDcCrXiuofybDTVyrE0qoUw3ndPUT06MShqqn774RkHeAhkHfj9164+D1I7m+UHo1LE0/b+vEFuzyxcba3dtGG+BecBa7l0X2dF8PdPV/56oULR0wfYY8YP9i5KGs85WeBLkt4abTAjRN2l7ywurUjKR16ZqW7raqy/GuoNTXa0SH7P5YyK3lI8upjqpJk/Pb7kD/XR5JrB/KDZtJLxz5S+9lQovGHBL2YiRsr4ssT+yEcj/BS2DKzzrr8Z9tTHjNM7DHjB9sFqvaUX4JwJcnuwGdE9eFAa/uxqc6trpz8cpWn7Hvd3Y5S0KvJooxPhWMSfXKX6Q6kuIecEdFpKcejCV15eY8MRNlyvHLmxh+NR0WJ1Ui/gMq57xTuOPyM2sV3xCsq3r/8h6UP/eKKAwB+d9sP3ShvOcJm1lmX3JC31JNMGdFoTzqqp7tv9AdDrwF3kTB7qJ0sdUq6c6NFLY2BADfqvpu/omJ9V+zOvwP5rM5ip7MG+H1s4MSKw7b5g6H1kHrGzhZVOTIYDLoSsy0VeUHy9IwNn/Hr1kzjT8bRbwJ9BvT73tolf07023+/tGFM2NFZ54D5nT0Fdj1CT8RBQdHM02oXZtVvJ1/sFcYPUO1x37u6ZdMrIsZHvHyRysmrWjcdFa3KSou90VT6MPBw4JnXJqkzcgHo2UBKtXjFnEqc8UdZRZ6MHyh+1zpgGtCvI4UqwQzK/TJCdXjE9VTljQzv8UO1+kKt3trGOfZ3faJyzc0XucZ0jf+eOPRa7FDwe7FZ/rQFjSmlrEaKPer2JFJTOflZocADEt+aTgSTlCobaN2S3LksStWMQ7ZUe8quq/a4PyvGHINwM0lldnpyIND/4Re1K4byhcPo8YljsyrLXiVPbUYYJmVJzMD6tQgvKdQ5jZR5axc9ke6wlcuumTW2a1yr2I3GYhtjG9IdP9LsVcYPUOU5aPsaT9mXQa8jGtERZY6/bVPCjBy5xB8MBQMtoe88EtyaVumxqqK0pXq6+7I1HncpKieg3Kjov4FxOrqjn07wKNn2BDl0nEiHYiUZf5R8RZYmpIuKDYmUzWNlB6p3GkuO9c5rnDqntnHJ1+cuSpmi/eCtV1X6mur/rGI9DhwZ99J2tbQu7/ebI3uN2xPPQrDwlC9c1br5caPWXcBhWGYRcakNxuKuiDBPhV+V0H2jPxj6NWo1R5XTU1+zsmwddmeIK1e1dUx1IP0eGo/H0+NvDT2Cck5+fhNJZ/zPMMQ0jdgbjO8qPoiB+6LmgPVG1Of/l4g+rGoeYeIrT8YvXFPxYFN9hQU/BnMyyYuGFxDnKXMuSa+sPtJIiqLjvYpHglv3KaGrEWSeGqu6pmJybyW/Pxh6GlssrhdRnrJE7zYO7q+aVp71bvCq1s0nGsu6GuFwbK2xIU0QESLukzxT+mWsrg5u+pJg/pLunGywDMenK87PFd/Nl40zDuf40+f/9N+DHx13XlN9B5BKhOThwt3Wt7525ZJhz0PKhr3e+GOsbts0k4j57tpK97ejOlT4W9pPQSRx0RqjE/RhRB4o6nI8motsqG/DhoIJHxZPFuM43LK0XIyWojIJe0Feit1rfkCZVFE9q6qy/P74scDz7WM0IjvIQ2GNoF+v8pSn+xsMCw0NDebIMV3HWMKpWPKAd8ENz0NK47cEWfzijsIfLVy4cGjZU8PAR8b4AYLBoGsrB7viVNLFHww9B3gGOg/YicqfBFbuFNef86my/tj6N0sKrN37W2E9QMTsj0gJMEZURylSokServFMfizxPH8wdC92JMpB6i4RYeyktfcUdojI21j6tsJWY6TdqAntCneGEnV5hwvfzZcV4yj8ooqcKujJRBfbIlSfMa8xAOBrqn+TXvEJ2aiWdcGcSxavSXPJPc5HyvhTsaotdJyxWEfms2gnwpOi8njE8MdZFWV7TfRhb+N3S+unRAwnIZwE/CfJndQSjb8LcCH8ElN0uff7eyZ+nykfeeMH8LeG7kS5IMfT/2UZ+fqnD0F/fLfWPx1rEjsQMeN/tGl+4U72eUlELog9DHs7e2W0J1s6e3ouLXK6akghkJ0BnzGqlwPfiR/0t3XM0kjkA7UKNg6l/cneim/5lRMlbGYo5lhEj1Vlw5z5jXNzvd6zO8b3eA7iyJFMTBsqHwvj//KMw95/bP3GGa5u57UIF5KtGrlyduC59muqjinvi29beryIuU4cYfzB0LvAqwIbQTZawqugGxFro3lv8mt7d78dkd8trZscMRyN6OdROQqhEhxuu4eWRo9KyOTU7PY7ogvaj4zhw8fE+AGijVfnrXn+1VvCEccigdPJfB1QqEauAC6PDfS4wne4epzXYOcajQGmK0wHpbfiUQ1qlzHuwN613a6wTWCbCm+BbjeY7WBt37ax/K/RuoERw9dU/3uoq8ER89VlgL9I/778KvKuDOwSd6Dywxd3FK45Ix83uwf42Bh/jGibQ68/2D4DlRuQ5PTlNMwNPN/eFGvq+qWjDn3LHwz9DwnuUBrGRb8+G7Mt+wERFAWE8YeGTgP3Q+kuMEyMJ8UiNTX9FVmMpe+m6a74DtC4a1RR03nnLcyvsMcIs9elN+SLak/5M9WV7pNUrRkgf2DwdOVCKyw/iR+IELmODDsSDIZRavNxnWwQJJue+/0UcSyT6Pbou6gsJtx1mLe28caPuuHDx9j4Y9RUTn622lN2KpZ8PqocmdY/F+Fs/3Ptvfk+J3mmdCjclo/7UKjyP9eRSpd22LCwsjH+Uc3NF/WulQwS3R3XTYguwFFc6p2/qD4mEvFx4GNv/DGqjyl7sXq6+1x1OspF5MdAqpbhgpHmeFXInm7HIuLEtoeAiGFeHq6TxRuSVYHI2F0lfS6SJUER5jDx1cO98xbfsrfH7HPhYxHnzwWfD8eEye1fBbkY4UvETQSKLqnxlPdmH/pbO+ag+kAe3naXOHRSLjlHubDy1qvPjyqhZ4gc4K1dlK90672eT8zMn4jXS6S6svwP1ZXuLzuscDlwuYg+ByDIFataOmbHjq2eXrZCkwtfcqHEsjgvD9fJCMvKeObfDvwGR2HW+U8fZT6xM386VrV0TDFGv4HKTLGs82Kx/7Vtr+wftgqCoKmyFrPhlTUe92cXDqH7RKb4ltV7EFrSvBxC+IuqPvJu4Tv/d+GFd+xRcYs9wafGPwANYOKN1B9snwHyBJlKLKVDzSnVlaUPD/X+BuN3TVdNimA2R398E1vYbY2lJnDm/BtyEm7+OPGp8WdJoLXjq6r6FZBDQQ/FTm/ObkdZeKJ6urtqOO4vnkeb5hfu1JJvW5a19swFS7KSavok8KnxD5FAAKcp2XhQGGepCAchcggwEXQCwjiUsdgx9P2AAmzVx2Ix5sSqitJ0LsmnjAD/D71/PAbWJlpEAAAAAElFTkSuQmCC"})]}),ee.jsx(vwe,{})]})}function vwe(){const e=gg();return ee.jsxs("div",{className:"App",style:{flex:1,flexDirection:"row"},children:[ee.jsx(HP,{}),ee.jsxs(aS,{sx:{margin:e.spacing(2)},children:[ee.jsx(sD,{}),ee.jsx(aS,{sx:{flex:1,paddingLeft:e.spacing(4),paddingRight:e.spacing(4)},children:ee.jsxs(ewe,{children:[ee.jsx(HTe,{}),ee.jsx(QJ,{}),ee.jsx(MTe,{}),ee.jsx(age,{}),ee.jsx(nU,{})]})})]}),ee.jsx($Te,{})]})}cd(document.getElementById("root")).render(ee.jsx(_.StrictMode,{children:ee.jsx(mwe,{})}))}},function(){return t||(0,e[r(e)[0]])((t={exports:{}}).exports,t),t.exports});export default i(); +
\ No newline at end of file diff --git a/src/pixelator/report/qcreport/types.py b/src/pixelator/report/qcreport/types.py index 49327966..65890366 100644 --- a/src/pixelator/report/qcreport/types.py +++ b/src/pixelator/report/qcreport/types.py @@ -45,14 +45,14 @@ class SampleInfo: # --- START AUTOGENERATED: metrics --- -# using metrics.json from pixelator-qc-report (0.3.0) +# using metrics.json from pixelator-qc-report (0.4.0) class Metrics(TypedDict, total=False): """A typed dictionary containing all metrics that can be used in the qc report. Values defined here will be used in the dynamic qc report to populate the different data tables. Missing values will be left blank. - Note: This class is autogenerated from the metrics.json file (0.3.0) + Note: This class is autogenerated from the metrics.json file (0.4.0) """ #: Number of library reads that contain an Antibody DNA-barcode from a Pixelgen @@ -94,56 +94,6 @@ class Metrics(TypedDict, total=False): #: identifiers. fraction_antibody_reads_in_cells: float - #: Number of predicted B-cells. - predicted_cell_type_b_cells: int - - #: Fraction of predicted B-cells. - fraction_predicted_cell_type_b_cells: float - - #: Number of predicted CD4+ cells. - predicted_cell_type_cd4p_cells: int - - #: Fraction of predicted CD4+ cells. - fraction_predicted_cell_type_cd4p_cells: float - - #: Number of predicted CD8+-cells. - predicted_cell_type_cd8p_cells: int - - #: Fraction of predicted CD8+-cells. - fraction_predicted_cell_type_cd8p_cells: float - - #: Number of predicted Monocytes. - predicted_cell_type_monocytes: int - - #: Fraction of predicted Monocytes. - fraction_predicted_cell_type_monocytes: float - - #: Number of predicted NK-cells - predicted_cell_type_nk_cells: int - - #: Fraction of predicted NK-cells - fraction_predicted_cell_type_nk_cells: float - - #: Number of predicted cells with unknown cell type. - predicted_cell_type_unknown: int - - #: Fraction of predicted cells with unknown cell type. - fraction_predicted_cell_type_unknown: float - - #: Number of cells in clusters predicted to contain multiple different cell - #: types. - predicted_cell_type_multiclass: int - - #: Fraction of cells in clusters predicted to contain multiple different cell - #: types. - fraction_predicted_cell_type_multiclass: float - - #: Number of cells in clusters predicted to be dead. - predicted_cell_type_dead: int - - #: Fraction of cells in clusters predicted to be dead. - fraction_predicted_cell_type_dead: float - #: The number of cells annotated by the pipeline. number_of_cells: int @@ -176,6 +126,12 @@ class Metrics(TypedDict, total=False): #: (UMI+UPI) in any cell. total_unique_antibodies_detected: int + #: The fraction of cells that are outliers as determined by the [tau-metric + #: outlier + #: detection](https://software.pixelgen.com/pixelator/algorithms#antibody-count- + #: distribution-outliers). + fraction_outlier_cells: float + #: Total number of read pairs that were input to this library. number_of_reads: int diff --git a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.3.0.csv b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.3.0.csv similarity index 96% rename from src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.3.0.csv rename to src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.3.0.csv index 170189d2..56cf48e1 100644 --- a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.3.0.csv +++ b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.3.0.csv @@ -1,5 +1,7 @@ # --- -# name: human-sc-immunology-spatial-proteomics +# name: human-sc-immunology-spatial-proteomics-1 +# aliases: +# - human-sc-immunology-spatial-proteomics # description: >- # Single Cell Spatial Proteomics Immunology Panel I # version: 0.3.0 diff --git a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.4.0.csv b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.4.0.csv similarity index 96% rename from src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.4.0.csv rename to src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.4.0.csv index 48ba5ff6..061696fd 100644 --- a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.4.0.csv +++ b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.4.0.csv @@ -1,5 +1,7 @@ # --- -# name: human-sc-immunology-spatial-proteomics +# name: human-sc-immunology-spatial-proteomics-1 +# aliases: +# - human-sc-immunology-spatial-proteomics # description: >- # Single Cell Spatial Proteomics Immunology Panel I # version: 0.4.0 diff --git a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.5.0.csv b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.5.0.csv similarity index 96% rename from src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.5.0.csv rename to src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.5.0.csv index 4be1f413..e8640f25 100644 --- a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-v0.5.0.csv +++ b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.5.0.csv @@ -1,5 +1,7 @@ # --- -# name: human-sc-immunology-spatial-proteomics +# name: human-sc-immunology-spatial-proteomics-1 +# aliases: +# - human-sc-immunology-spatial-proteomics # description: >- # Single Cell Spatial Proteomics Immunology Panel I # version: 0.5.0 diff --git a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.6.0.csv b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.6.0.csv new file mode 100644 index 00000000..86870a11 --- /dev/null +++ b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-1-v0.6.0.csv @@ -0,0 +1,87 @@ +# --- +# name: human-sc-immunology-spatial-proteomics-1 +# description: >- +# Single Cell Spatial Proteomics Immunology Panel I, Human +# version: 0.6.0 +# --- +marker_id,control,nuclear,full_name,alt_id,sequence,conj_id +B2M,False,False,,,CTGTAGGA,IMM001P01C001 +CD102,False,False,,ICAM2,TTTCTGGT,IMM001P01C002 +CD11a,False,False,,LFA1,ACATTGAC,IMM001P01C003 +CD11b,False,False,,MAC1,ACTGTGTC,IMM001P01C004 +CD11c,False,False,,,AAGTCGTG,IMM001P01C005 +CD127,False,False,,IL7R,TGATAGAA,IMM001P01C006 +CD137,False,False,,4-1BB,CCTAAGAA,IMM001P01C007 +CD14,False,False,,LPSR,AGAGGCTC,IMM001P01C008 +CD150,False,False,,SLAMF1,CTTGCACC,IMM001P01C009 +CD152,False,False,,CTLA4,AACGGCTA,IMM001P01C010 +CD154,False,False,,CD40L,TGGGGCTT,IMM001P01C011 +CD158,False,False,,KIR2D,ACTCGGAA,IMM001P01C012 +CD16,False,False,,FcγRIII,GTGCATTC,IMM001P01C013 +CD161,False,False,,KLRB1,GTGAGTAG,IMM001P01C014 +CD162,False,False,,PSGL-1,GCTATTGA,IMM001P01C015 +CD163,False,False,,GHI/61,CATGGGCA,IMM001P01C016 +CD18,False,False,,ITGB2,CACACGGT,IMM001P01C017 +CD19,False,False,,B4,CTACGACG,IMM001P01C018 +CD197,False,False,,CCR7,AGGATGTT,IMM001P01C019 +CD1d,False,False,,,TACTCTTG,IMM001P01C020 +CD2,False,False,,LFA2,CCGATATC,IMM001P01C021 +CD20,False,False,,B1,GAATCCCG,IMM001P01C022 +CD200,False,False,,OX2,AGGGCAGT,IMM001P01C023 +CD22,False,False,,Siglec-2,CTCAAGAG,IMM001P01C024 +CD229,False,False,,,GTTCAGAC,IMM001P01C025 +CD244,False,False,,,AGCCCGAA,IMM001P01C026 +CD25,False,False,,IL2R,GCCGGACG,IMM001P01C027 +CD26,False,False,,DPP4,GTCTTTGT,IMM001P01C028 +CD268,False,False,,BAFFR:TNFRSF13c,CACGTTTC,IMM001P01C029 +CD27,False,False,,TNFRSF7,GTTGTCCG,IMM001P01C030 +CD274,False,False,,PDL1,TCCCTTGC,IMM001P01C031 +CD278,False,False,,ICOS,AAAGCAAC,IMM001P01C032 +CD279,False,False,,PD1,TTCTGGGT,IMM001P01C033 +CD29,False,False,,ITGB1,ATTCGCCT,IMM001P01C034 +CD314,False,False,,KLRK1,CTTCTTGA,IMM001P01C035 +CD32,False,False,,,CAATCGGC,IMM001P01C036 +CD33,False,False,,Siglec-3,TCCGTAAC,IMM001P01C037 +CD337,False,False,,Nkp30,TCCCAGTG,IMM001P01C038 +CD35,False,False,,,CCAGACAC,IMM001P01C039 +CD36,False,False,,,ATTTCGAG,IMM001P01C040 +CD37,False,False,,,TTGTCCAA,IMM001P01C041 +CD38,False,False,,T10,TCAACGCT,IMM001P01C042 +CD3E,False,False,,,AGCTACTA,IMM001P01C043 +CD4,False,False,,T4/Leu-3,CTGACCAT,IMM001P01C044 +CD40,False,False,,TNFRSF5,TCAGGGTG,IMM001P01C045 +CD41,False,False,,,AACAAGAC,IMM001P01C046 +CD43,False,False,,LY48,GTAGGACC,IMM001P01C047 +CD44,False,False,,HUTCH,TATCCCTT,IMM001P01C048 +CD45,False,False,,PTPRC,ATAGGGGA,IMM001P01C049 +CD45RA,False,False,,,GGAGCCAA,IMM001P01C050 +CD45RB,False,False,,,GCATTCTG,IMM001P01C051 +CD47,False,False,,,GATAGGGT,IMM001P01C052 +CD48,False,False,,SLAMF2,GACCACTC,IMM001P01C053 +CD49D,False,False,,ITGA4,ACCTTGTG,IMM001P01C054 +CD5,False,False,,Leu1,CAGATCCG,IMM001P01C055 +CD50,False,False,,ICAM3,ACTCTCAC,IMM001P01C056 +CD52,False,False,,,GACTGGGA,IMM001P01C057 +CD53,False,False,,,TGCATGTC,IMM001P01C058 +CD54,False,False,,ICAM1,GAAAGTCA,IMM001P01C059 +CD55,False,False,,DAF,CAGTCAGT,IMM001P01C060 +CD59,False,False,,,GAGGTTAG,IMM001P01C061 +CD62P,False,False,,SELP,ATGACTGC,IMM001P01C062 +CD64,False,False,,,GCTGAACC,IMM001P01C063 +CD69,False,False,,,AAGCATAG,IMM001P01C064 +CD7,False,False,,gp40,GATTGTGC,IMM001P01C065 +CD71,False,False,,Tranferin R,GCACTTAG,IMM001P01C066 +CD72,False,False,,,GGTTTACC,IMM001P01C067 +CD8,False,False,,,CTCAGATG,IMM001P01C068 +CD82,False,False,,,AACCTTCC,IMM001P01C069 +CD84,False,False,,,AGTTATCG,IMM001P01C070 +CD86,False,False,,B7-2,TCTGCTCC,IMM001P01C071 +CD9,False,False,,,ACCAGTAC,IMM001P01C072 +HLA-ABC,False,False,,,ATTGGCAC,IMM001P01C073 +HLA-DR,False,False,,,CCAGCATG,IMM001P01C074 +CD328,False,False,,Siglec-7:AIRM-1:p75,AAGTAGCT,IMM001P01C075 +TCRVb5,False,False,,,GCGCAACT,IMM001P01C076 +ACTB,False,True,,Actin Beta,TCGTAACG,IMM001P01C077 +mIgG1,True,False,,,TTTGGAAG,IMM001P01C078 +mIgG2a,True,False,,,CTACTCGC,IMM001P01C079 +mIgG2b,True,False,,,GTATCGGT,IMM001P01C080 diff --git a/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-2-v0.1.0.csv b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-2-v0.1.0.csv new file mode 100644 index 00000000..4064b8d6 --- /dev/null +++ b/src/pixelator/resources/panels/human-sc-immunology-spatial-proteomics-2-v0.1.0.csv @@ -0,0 +1,91 @@ +# --- +# name: human-sc-immunology-spatial-proteomics-2 +# description: >- +# Single Cell Spatial Proteomics Immunology Panel II, Human +# version: 0.1.0 +# --- +marker_id,control,nuclear,full_name,alt_id,sequence,conj_id +B2M,,,,,TAGCGCAG,IMM002P02C001 +CD102,,,,ICAM2,CTGGAATG,IMM002P02C002 +CD11a,,,,LFA1,TCATACTC,IMM002P02C003 +CD11b,,,,MAC1,CCGCCCTT,IMM002P02C004 +CD11c,,,,,GTCACTTT,IMM002P02C005 +CD123,,,,,CTCAAAGC,IMM002P02C006 +CD14,,,,LPSR,CAGCCGCT,IMM002P02C007 +CD150,,,,SLAMF1,GGTTTCAT,IMM002P02C008 +CD152,,,,CTLA4,TTCAGTCT,IMM002P02C009 +CD154,,,,CD40L,GGCGTGAG,IMM002P02C010 +CD158,,,,KIR2D,CAAATCTA,IMM002P02C011 +CD16,,,,FcγRIII,TAGGTGGC,IMM002P02C012 +CD161,,,,KLRB1,TCGATACA,IMM002P02C013 +CD162,,,,PSGL-1,CATCCTGT,IMM002P02C014 +CD18,,,,ITGB2,CACAGCCT,IMM002P02C015 +CD180,,,,RP105,GACTTCTT,IMM002P02C016 +CD19,,,,B4,ACCAACTT,IMM002P02C017 +CD191,,,,CCR1,ATCTCGTA,IMM002P02C018 +CD192,,,,CCR2,CAAAGTAT,IMM002P02C019 +CD1d,,,,,TTAGGATA,IMM002P02C020 +CD2,,,,LFA2,TGACAGTC,IMM002P02C021 +CD20,,,,B1,CGCTAATG,IMM002P02C022 +CD200,,,,OX2,GCAGATCT,IMM002P02C023 +CD22,,,,Siglec-2,AGGACCCG,IMM002P02C024 +CD229,,,,,TTAAGCCG,IMM002P02C025 +CD24,,,,,TGGATGGA,IMM002P02C026 +CD244,,,,,TCTGAAGG,IMM002P02C027 +CD25,,,,IL2R,ATGTCTAT,IMM002P02C028 +CD26,,,,DPP4,TGACAAGA,IMM002P02C029 +CD268,,,,BAFFR:TNFRSF13c,TAGGCACA,IMM002P02C030 +CD27,,,,TNFRSF7,TCATGTCT,IMM002P02C031 +CD274,,,,PDL1,CGTATAGG,IMM002P02C032 +CD278,,,,ICOS,CCTGATTA,IMM002P02C033 +CD279,,,,PD1,GTGCCAGC,IMM002P02C034 +CD29,,,,ITGB1,GCCGCATA,IMM002P02C035 +CD32,,,,,GGGTCTTA,IMM002P02C036 +CD328,,,,Siglec-7:AIRM-1:p75,CGGCGAAA,IMM002P02C037 +CD33,,,,Siglec-3,ACACGATC,IMM002P02C038 +CD335,,,,NKp46,TAACAGCA,IMM002P02C039 +CD337,,,,Nkp30,TACAATGC,IMM002P02C040 +CD35,,,,,ACCGGAAT,IMM002P02C041 +CD36,,,,,TTCCTTAA,IMM002P02C042 +CD37,,,,,GTCGCTAG,IMM002P02C043 +CD38,,,,T10,TTGTGGTG,IMM002P02C044 +CD39,,,,,CGACCTTC,IMM002P02C045 +CD3E,,,,,CGCTTAGA,IMM002P02C046 +CD4,,,,T4/Leu-3,CATCGCGC,IMM002P02C047 +CD40,,,,TNFRSF5,GGACTATA,IMM002P02C048 +CD41,,,,,CACGTCAT,IMM002P02C049 +CD43,,,,LY48,TCGTTCAT,IMM002P02C050 +CD44,,,,HUTCH,CGGCTCAT,IMM002P02C051 +CD45,,,,PTPRC,CCGACACG,IMM002P02C052 +CD45RA,,,,,TGAGTAGG,IMM002P02C053 +CD45RB,,,,,TGGATTTG,IMM002P02C054 +CD47,,,,,TGCTATCT,IMM002P02C055 +CD48,,,,SLAMF2,GCCCTGCT,IMM002P02C056 +CD49D,,,,ITGA4,GGACGTAT,IMM002P02C057 +CD5,,,,Leu1,CCGATCAA,IMM002P02C058 +CD50,,,,ICAM3,GATGTGAC,IMM002P02C059 +CD52,,,,,TGTGACAA,IMM002P02C060 +CD53,,,,,GAGTCCGC,IMM002P02C061 +CD54,,,,ICAM1,TTGTTACC,IMM002P02C062 +CD55,,,,DAF,ATACCGAC,IMM002P02C063 +CD58,,,,LFA-3,CATTCCTC,IMM002P02C064 +CD59,,,,,CCTTTAAC,IMM002P02C065 +CD62P,,,,SELP,ATGTTTGA,IMM002P02C066 +CD64,,,,,GTGGTGCC,IMM002P02C067 +CD69,,,,,AGCCTACG,IMM002P02C068 +CD7,,,,gp40,CCACAAAT,IMM002P02C069 +CD71,,,,Tranferin R,GCTGCCTT,IMM002P02C070 +CD72,,,,,GATCCGTG,IMM002P02C071 +CD8,,,,,GCCTTAGC,IMM002P02C072 +CD82,,,,,GCCGAGAC,IMM002P02C073 +CD84,,,,,TGATTCCA,IMM002P02C074 +CD86,,,,B7-2,CTCGCGAT,IMM002P02C075 +CD9,,,,,AGTGATTC,IMM002P02C076 +CD94,,,,,CGCAACAC,IMM002P02C077 +HLA-ABC,,,,,AGCCATTT,IMM002P02C078 +HLA-DR,,,,,TGCCAACC,IMM002P02C079 +TCRVB5,,,,TCRVb5,GCTAACCG,IMM002P02C080 +ACTB,,yes,,Actin Beta,CCTGGCCT,IMM002P02C081 +mIgG1,yes,,,,GTGCCCAG,IMM002P02C082 +mIgG2a,yes,,,,AGGCAGGG,IMM002P02C083 +mIgG2b,yes,,,,GGCAAGTG,IMM002P02C084 diff --git a/tests/Taskfile.yml b/tests/Taskfile.yml index e10dc0b6..4feb5115 100644 --- a/tests/Taskfile.yml +++ b/tests/Taskfile.yml @@ -56,7 +56,7 @@ tasks: requires: vars: ["PIPELINE_SOURCE_DIR"] cmds: - - nf_options=(); + - nf_options=(' --save_all "); [[ {{ .RESUME }} == 'true' ]] && nf_options+=('-resume '); cd "{{ .PIPELINE_SOURCE_DIR }}"; nextflow run . -profile test --outdir {{ .PIPELINE_RESULTS_DIR }} ${nf_options[@]}; @@ -185,15 +185,15 @@ tasks: --compute-colocalization --use-full-bipartite --polarization-n-permutations - 0 + 5 --colocalization-min-region-count 0 + --colocalization-min-marker-count + 0 --colocalization-n-permutations 10 --colocalization-neighbourhood-size 1 - requires: - vars: [ R1, R2 ] cmds: - rm -r "{{ .RESULTS_DIR }}" - pixelator single-cell amplicon {{ .R1 }} {{ .R2 }} --design {{ .DESIGN }} --output {{ .RESULTS_DIR }} diff --git a/tests/analysis/colocalization/test_colocalization.py b/tests/analysis/colocalization/test_colocalization.py index 45a26f16..968f74a5 100644 --- a/tests/analysis/colocalization/test_colocalization.py +++ b/tests/analysis/colocalization/test_colocalization.py @@ -58,6 +58,7 @@ def test_colocalization_from_component_edgelist( neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, ) expected = pd.DataFrame.from_dict( @@ -94,6 +95,7 @@ def test_colocalization_scores(enable_backend, full_graph_edgelist: pd.DataFrame neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, ) expected = pd.DataFrame.from_dict( @@ -131,6 +133,7 @@ def test_colocalization_scores_log1p(enable_backend, full_graph_edgelist: pd.Dat neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, random_seed=1477, ) @@ -171,6 +174,7 @@ def test_colocalization_scores_ratediff( neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, random_seed=1477, ) @@ -200,6 +204,43 @@ def test_colocalization_scores_ratediff( assert_frame_equal(result, expected) +@pytest.mark.parametrize("enable_backend", ["networkx"], indirect=True) +def test_colocalization_scores_low_marker_removed( + enable_backend, full_random_graph_edgelist: pd.DataFrame +): + component_edges = full_random_graph_edgelist.loc[ + full_random_graph_edgelist["component"] == "PXLCMP0000000", : + ] + marker_counts = component_edges.groupby("marker").count()["count"] + second_highest_marker_count = marker_counts.sort_values()[-2] + result2 = colocalization_scores( + edgelist=component_edges, + use_full_bipartite=True, + transformation="rate-diff", + neighbourhood_size=0, + n_permutations=50, + min_region_count=0, + min_marker_count=2 * second_highest_marker_count - 1, + random_seed=1477, + ) + + assert result2.shape[0] == 1 + + third_highest_marker_count = marker_counts.sort_values()[-3] + result3 = colocalization_scores( + edgelist=component_edges, + use_full_bipartite=True, + transformation="rate-diff", + neighbourhood_size=0, + n_permutations=50, + min_region_count=0, + min_marker_count=2 * third_highest_marker_count - 1, + random_seed=1477, + ) + + assert result3.shape[0] == 3 + + @pytest.mark.parametrize("enable_backend", ["networkx"], indirect=True) def test_colocalization_scores_should_not_fail_when_one_component_has_single_node( enable_backend, @@ -216,6 +257,7 @@ def test_colocalization_scores_should_not_fail_when_one_component_has_single_nod neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, random_seed=1477, ) @@ -234,6 +276,7 @@ def test_colocalization_scores_should_warn_when_no_data( neighbourhood_size=1, n_permutations=50, min_region_count=0, + min_marker_count=0, random_seed=1477, ) assert ( @@ -247,6 +290,7 @@ class TestColocalizationAnalysis: transformation_type="raw", n_permutations=50, min_region_count=0, + min_marker_count=0, neighbourhood_size=1, ) diff --git a/tests/analysis/normalization/__init__.py b/tests/analysis/normalization/__init__.py new file mode 100644 index 00000000..f6b4c8e1 --- /dev/null +++ b/tests/analysis/normalization/__init__.py @@ -0,0 +1,5 @@ +""" +Tests for the normalization modules + +Copyright © 2024 Pixelgen Technologies AB. +""" diff --git a/tests/analysis/normalization/test_normalization.py b/tests/analysis/normalization/test_normalization.py new file mode 100644 index 00000000..d0a17ac9 --- /dev/null +++ b/tests/analysis/normalization/test_normalization.py @@ -0,0 +1,26 @@ +""" +Tests for the normalization modules + +Copyright © 2024 Pixelgen Technologies AB. +""" + +from pathlib import Path + +import pandas as pd +from pandas.testing import assert_frame_equal +from pixelator.analysis.normalization import dsb_normalize + +DATA_ROOT = Path(__file__).parents[2] / "data" + + +def test_dsb_normalize(): + input_data = pd.read_csv( + str(DATA_ROOT / "dsb_normalization_test_input.csv") + ).astype(float) + output_data = pd.read_csv( + str(DATA_ROOT / "dsb_normalization_test_output.csv") + ).astype(float) + output_data = output_data - output_data.iloc[0, :] + result = dsb_normalize(input_data, isotype_controls=["mIgG1", "mIgG2a", "mIgG2b"]) + result = result - result.iloc[0, :] + assert_frame_equal(result, output_data, atol=0.08) diff --git a/tests/analysis/test_analysis_engine.py b/tests/analysis/test_analysis_engine.py index 95eb8793..94d22847 100644 --- a/tests/analysis/test_analysis_engine.py +++ b/tests/analysis/test_analysis_engine.py @@ -36,7 +36,7 @@ def post_process_data(self, data: pd.DataFrame) -> pd.DataFrame: def add_to_pixel_dataset( self, data: pd.DataFrame, pxl_dataset: PixelDataset ) -> PixelDataset: - pxl_dataset.data_slots[self.ANALYSIS_NAME] = data + pxl_dataset.data_slots[self.ANALYSIS_NAME] = data # type: ignore return pxl_dataset def concatenate_data(self, data: Iterable[pd.DataFrame]) -> pd.DataFrame: @@ -124,9 +124,13 @@ def test_run_analysis(setup_basic_pixel_dataset): dataset.colocalization = None analysis_functions = [ - PolarizationAnalysis("raw", n_permutations=5, min_marker_count=1), + PolarizationAnalysis("log1p", n_permutations=5, min_marker_count=1), ColocalizationAnalysis( - "log1p", neighbourhood_size=3, n_permutations=5, min_region_count=3 + "rate-diff", + neighbourhood_size=3, + n_permutations=5, + min_region_count=3, + min_marker_count=1, ), ] diff --git a/tests/config/test_config.py b/tests/config/test_config.py index c4d543d6..38ab1585 100644 --- a/tests/config/test_config.py +++ b/tests/config/test_config.py @@ -14,6 +14,7 @@ get_position_in_parent, load_assays_package, ) +from pixelator.config.config_class import PanelException from pixelator.config.panel import load_antibody_panel @@ -27,6 +28,17 @@ def test_config_creation(): assert assay.name == "D21" +def test_load_assays_dir(data_root): + config = Config() + config.load_assays(data_root / "assays") + + a1 = config.get_assay("test1_D21") + assert a1.name == "test1_D21" + + a2 = config.get_assay("test1_D21") + assert a2.name == "test1_D21" + + def test_parsing_recursion_protection(data_root): cfg = Config() @@ -85,36 +97,42 @@ def test_get_position_in_amplicon_D21(): @pytest.fixture() def config_with_multiple_versions(data_root): - new_config = copy.copy(config) + new_config = copy.deepcopy(config) new_config.load_panel_file(data_root / "UNO_D21_Beta_old.csv") return new_config def test_loading_panel_from_config(config_with_multiple_versions): panel = config_with_multiple_versions.get_panel( - "human-sc-immunology-spatial-proteomics" + "human-sc-immunology-spatial-proteomics-1" ) - assert panel.name == "human-sc-immunology-spatial-proteomics" - assert panel.version == "0.5.0" + assert panel.name == "human-sc-immunology-spatial-proteomics-1" + assert panel.version == "0.6.0" -def test_loading_panel_from_config_specific_version(config_with_multiple_versions): - panel = config_with_multiple_versions.get_panel( - "human-sc-immunology-spatial-proteomics", version="0.2.0" - ) - assert panel.name == "human-sc-immunology-spatial-proteomics" - assert panel.version == "0.2.0" +def test_loading_panel_from_config_alias(): + panel = config.get_panel("human-sc-immunology-spatial-proteomics") + assert panel.name == "human-sc-immunology-spatial-proteomics-1" + assert panel.version == "0.6.0" - panel = config_with_multiple_versions.get_panel( - "human-sc-immunology-spatial-proteomics", version="0.3.0" + +def test_loading_panel_from_config_specific_version(): + panel = config.get_panel( + "human-sc-immunology-spatial-proteomics-1", version="0.3.0" ) - assert panel.name == "human-sc-immunology-spatial-proteomics" + assert panel.name == "human-sc-immunology-spatial-proteomics-1" assert panel.version == "0.3.0" + panel = config.get_panel( + "human-sc-immunology-spatial-proteomics-1", version="0.4.0" + ) + assert panel.name == "human-sc-immunology-spatial-proteomics-1" + assert panel.version == "0.4.0" + def test_load_antibody_panel_util(data_root): cgf_panel = load_antibody_panel(config, "human-sc-immunology-spatial-proteomics") - assert cgf_panel.name == "human-sc-immunology-spatial-proteomics" + assert cgf_panel.name == "human-sc-immunology-spatial-proteomics-1" path_panel = load_antibody_panel(config, data_root / "UNO_D21_Beta.csv") assert path_panel.name == "human-sc-immunology-spatial-proteomics" @@ -122,3 +140,25 @@ def test_load_antibody_panel_util(data_root): with pytest.raises(AssertionError): load_antibody_panel(config, "human-qwdqwdqwdqdw-proteomics") + + +def test_list_panel_names(data_root): + assert config.list_panel_names(include_aliases=True) == [ + "human-sc-immunology-spatial-proteomics-1", + "human-sc-immunology-spatial-proteomics-2", + "human-sc-immunology-spatial-proteomics", + ] + + assert config.list_panel_names(include_aliases=False) == [ + "human-sc-immunology-spatial-proteomics-1", + "human-sc-immunology-spatial-proteomics-2", + ] + + +def test_loading_duplicate_aliases(data_root): + this_config = copy.deepcopy(config) + with pytest.raises(PanelException): + this_config.load_panel_file( + data_root + / "human-sc-immunology-spatial-proteomics-2-v0.1.0-duplicate-alias.csv" + ) diff --git a/tests/conftest.py b/tests/conftest.py index f58bef3a..5ee68e71 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -138,6 +138,16 @@ def random_graph_edgelist_fixture(): return edgelist +@pytest.fixture(name="full_random_graph_edgelist", scope="module") +def full_random_graph_edgelist_fixture(): + """Create an edgelist based on a random graph.""" + g = create_random_graph(n_nodes=500, prob=0.005) + edgelist = create_simple_edge_list_from_graph(g, random_markers=True) + edgelist = update_edgelist_membership(edgelist, prefix="PXLCMP") + edgelist = enforce_edgelist_types_for_tests(edgelist) + return edgelist + + @pytest.fixture(name="layout_df") def layout_df_fixture() -> pd.DataFrame: nbr_of_rows = 300 diff --git a/tests/data/Sample01_PBMC_1085_500k_r1_R1_001.fastq.gz b/tests/data/Sample01_PBMC_1085_500k_r1_R1_001.fastq.gz new file mode 100644 index 00000000..a3609594 Binary files /dev/null and b/tests/data/Sample01_PBMC_1085_500k_r1_R1_001.fastq.gz differ diff --git a/tests/data/Sample01_PBMC_1085_500k_r1_R2_001.fastq.gz b/tests/data/Sample01_PBMC_1085_500k_r1_R2_001.fastq.gz new file mode 100644 index 00000000..99fd1d64 Binary files /dev/null and b/tests/data/Sample01_PBMC_1085_500k_r1_R2_001.fastq.gz differ diff --git a/tests/data/assays/test1_D21.yaml b/tests/data/assays/test1_D21.yaml new file mode 100644 index 00000000..f02801ef --- /dev/null +++ b/tests/data/assays/test1_D21.yaml @@ -0,0 +1,58 @@ +name: test1_D21 +assay_spec: + - region_id: amplicon + region_type: amplicon + name: amplicon + sequence_type: joined + regions: + + - region_id: upi-b + region_type: upi + name: Unique pixel identifier B + sequence_type: random + sequence: NNNNNNNNNNNNNNNNNNNNNNNNN + min_len: 25 + max_len: 25 + + - region_id: pbs-2 + region_type: pbs + name: Pixel binding site 2 + sequence_type: fixed + sequence: CTGCCTGTGTATCCTGATGTTGGTTAGGCGAATTGGACGAGG + min_len: 42 + max_len: 42 + + - region_id: upi-a + region_type: upi + name: Unique pixel identifier A + sequence_type: fixed + sequence: NNNNNNNNNNNNNNNNNNNNNNNNN + min_len: 25 + max_len: 25 + + - region_id: pbs-1 + region_type: pbs + name: Pixel binding site 1 + sequence_type: fixed + sequence: GGAACTCGAGGAATGTAAGACC + min_len: 22 + max_len: 22 + + - region_id: umi-b + region_type: umi + name: Pixel binding site 1 + sequence_type: random + sequence: NNNNNNNNNN + min_len: 10 + max_len: 10 + + - region_id: bc + region_type: barcode + name: barcode + sequence_type: random + sequence: NNNNNNNN + min_len: 8 + max_len: 8 + data: + anchored: true + reverse_complement: false diff --git a/tests/data/assays/test2_D21.yaml b/tests/data/assays/test2_D21.yaml new file mode 100644 index 00000000..24ef8a87 --- /dev/null +++ b/tests/data/assays/test2_D21.yaml @@ -0,0 +1,58 @@ +name: test2_D21 +assay_spec: + - region_id: amplicon + region_type: amplicon + name: amplicon + sequence_type: joined + regions: + + - region_id: upi-b + region_type: upi + name: Unique pixel identifier B + sequence_type: random + sequence: NNNNNNNNNNNNNNNNNNNNNNNNN + min_len: 25 + max_len: 25 + + - region_id: pbs-2 + region_type: pbs + name: Pixel binding site 2 + sequence_type: fixed + sequence: CTGCCTGTGTATCCTGATGTTGGTTAGGCGAATTGGACGAGG + min_len: 42 + max_len: 42 + + - region_id: upi-a + region_type: upi + name: Unique pixel identifier A + sequence_type: fixed + sequence: NNNNNNNNNNNNNNNNNNNNNNNNN + min_len: 25 + max_len: 25 + + - region_id: pbs-1 + region_type: pbs + name: Pixel binding site 1 + sequence_type: fixed + sequence: GGAACTCGAGGAATGTAAGACC + min_len: 22 + max_len: 22 + + - region_id: umi-b + region_type: umi + name: Pixel binding site 1 + sequence_type: random + sequence: NNNNNNNNNN + min_len: 10 + max_len: 10 + + - region_id: bc + region_type: barcode + name: barcode + sequence_type: random + sequence: NNNNNNNN + min_len: 8 + max_len: 8 + data: + anchored: true + reverse_complement: false diff --git a/tests/data/datasets.md b/tests/data/datasets.md index eae6563d..b98e7508 100644 --- a/tests/data/datasets.md +++ b/tests/data/datasets.md @@ -15,3 +15,12 @@ The matching panel is `UNO_D21_conjV21.csv` seqkit sample Uropod_control_S1_R1_001.fastq.gz -2 -n 300000 -o uropod_control_300k_S1_R1_001.fastq.gz seqkit sample Uropod_control_S1_R2_001.fastq.gz -2 -n 300000 -o uropod_control_300k_S1_R2_001.fastq.gz ``` +## Sample01_PBMC_1085_r1 + +This dataset is a subsample of 500k reads from the first sample of the public `5-donors-pbmcs-v2.0` dataset. +This dataset uses the v2 panel. + +```bash +seqkit sample Sample01_PBMC_1085_r1_R1_001.fastq.gz -2 -n 500000 -o Sample01_PBMC_1085_500k_r1_R1_001.fastq.gz +seqkit sample Sample01_PBMC_1085_r1_R2_001.fastq.gz -2 -n 500000 -o Sample01_PBMC_1085_500k_r1_R2_001.fastq.gz +``` diff --git a/tests/data/dsb_normalization_test_input.csv b/tests/data/dsb_normalization_test_input.csv new file mode 100644 index 00000000..a1b29b3a --- /dev/null +++ b/tests/data/dsb_normalization_test_input.csv @@ -0,0 +1,101 @@ +CD274,CD44,CD25,CD279,CD41,HLA-ABC,CD54,CD26,CD27,CD38,CD16,CD52,CD53,CD11c,CD11a,CD127,CD29,CD82,CD45RB,CD40,CD19,CD8,CD59,TCRb,mIgG2a,CD11b,CD86,CD197,HLA-DR,CD3E,CD2,CD20,CD45RA,CD14,CD4,mIgG2b,mIgG1,CD9,CD69,B2M,CD36,CD45,CD152,CD337,CD1d,CD84,CD161,CD163,CD200,CD137,CD229,CD244,CD154,CD18,CD71,ACTB,CD48,CD43,CD150,CD22,CD62P,CD50,CD33,CD37,CD162,CD328,CD7,CD102,CD47,CD72,CD5,CD55,CD278,CD32,CD268,CD64,CD49D,CD158,CD314,CD35 +72.0,1335.0,4.0,4.0,38.0,3414.0,153.0,353.0,44.0,4.0,32.0,8.0,16.0,7.0,99.0,16.0,1.0,92.0,69.0,13.0,0.0,4.0,229.0,13.0,37.0,9.0,22.0,64.0,59.0,126.0,14.0,20.0,11.0,9.0,8.0,3.0,7.0,11.0,23.0,1028.0,17.0,912.0,22.0,5.0,5.0,28.0,48.0,4.0,3.0,2.0,41.0,3.0,2.0,99.0,16.0,7.0,47.0,15.0,6.0,29.0,4.0,24.0,6.0,27.0,9.0,9.0,172.0,23.0,90.0,7.0,19.0,33.0,1.0,35.0,5.0,3.0,35.0,0.0,9.0,2.0 +79.0,582.0,14.0,13.0,57.0,11121.0,516.0,220.0,58.0,13.0,29.0,10.0,40.0,12.0,66.0,14.0,8.0,822.0,449.0,50.0,31.0,55.0,32.0,43.0,47.0,11.0,70.0,83.0,1017.0,7.0,64.0,406.0,494.0,9.0,31.0,30.0,18.0,16.0,66.0,4075.0,41.0,1444.0,35.0,13.0,20.0,80.0,13.0,8.0,10.0,9.0,41.0,12.0,4.0,95.0,22.0,8.0,46.0,6.0,23.0,1285.0,9.0,34.0,5.0,990.0,27.0,20.0,71.0,20.0,80.0,565.0,9.0,35.0,13.0,1520.0,15.0,4.0,40.0,3.0,23.0,39.0 +38.0,901.0,4.0,3.0,16.0,1035.0,37.0,59.0,122.0,30.0,5.0,2.0,4.0,3.0,40.0,7.0,2.0,13.0,282.0,4.0,2.0,1.0,99.0,8.0,13.0,2.0,10.0,31.0,13.0,122.0,56.0,2.0,151.0,1.0,309.0,9.0,4.0,6.0,7.0,265.0,9.0,742.0,10.0,3.0,8.0,10.0,1.0,1.0,2.0,3.0,16.0,4.0,0.0,42.0,11.0,3.0,40.0,13.0,2.0,15.0,3.0,9.0,2.0,21.0,10.0,4.0,410.0,11.0,73.0,5.0,31.0,43.0,2.0,10.0,1.0,1.0,13.0,3.0,2.0,11.0 +58.0,1162.0,1.0,6.0,18.0,1528.0,62.0,114.0,116.0,26.0,21.0,3.0,3.0,4.0,69.0,5.0,2.0,119.0,444.0,6.0,3.0,3.0,160.0,10.0,19.0,3.0,12.0,60.0,31.0,139.0,93.0,6.0,101.0,3.0,423.0,7.0,4.0,2.0,15.0,457.0,9.0,1471.0,9.0,2.0,7.0,16.0,4.0,1.0,2.0,5.0,22.0,3.0,1.0,58.0,6.0,7.0,59.0,21.0,9.0,13.0,3.0,12.0,0.0,13.0,12.0,7.0,418.0,5.0,95.0,6.0,35.0,27.0,5.0,10.0,7.0,1.0,15.0,3.0,7.0,4.0 +44.0,855.0,5.0,3.0,15.0,1894.0,115.0,46.0,162.0,4.0,12.0,8.0,9.0,0.0,69.0,6.0,3.0,28.0,314.0,25.0,1.0,904.0,123.0,12.0,21.0,6.0,14.0,57.0,38.0,43.0,121.0,7.0,200.0,3.0,11.0,13.0,5.0,3.0,17.0,703.0,9.0,1004.0,3.0,9.0,8.0,16.0,4.0,3.0,2.0,1.0,35.0,2.0,3.0,72.0,9.0,1.0,59.0,19.0,5.0,29.0,1.0,16.0,2.0,23.0,13.0,5.0,331.0,18.0,35.0,8.0,18.0,66.0,1.0,5.0,5.0,4.0,24.0,0.0,3.0,6.0 +66.0,1417.0,10.0,9.0,27.0,3137.0,153.0,28.0,29.0,10.0,12.0,8.0,33.0,4.0,45.0,6.0,6.0,389.0,533.0,59.0,23.0,8.0,33.0,22.0,31.0,5.0,30.0,48.0,495.0,3.0,18.0,231.0,172.0,5.0,14.0,6.0,4.0,5.0,9.0,881.0,19.0,785.0,12.0,10.0,12.0,33.0,4.0,3.0,4.0,0.0,21.0,4.0,3.0,39.0,13.0,2.0,48.0,4.0,6.0,328.0,6.0,35.0,4.0,680.0,12.0,8.0,42.0,13.0,44.0,581.0,7.0,64.0,5.0,754.0,20.0,2.0,29.0,1.0,13.0,637.0 +44.0,1193.0,3.0,7.0,25.0,2227.0,105.0,71.0,164.0,24.0,8.0,8.0,6.0,1.0,54.0,11.0,2.0,40.0,397.0,7.0,0.0,1.0,169.0,11.0,25.0,7.0,19.0,68.0,34.0,70.0,81.0,7.0,28.0,4.0,449.0,8.0,3.0,10.0,8.0,609.0,14.0,1123.0,9.0,6.0,8.0,9.0,3.0,1.0,2.0,2.0,49.0,6.0,1.0,86.0,8.0,1.0,41.0,38.0,2.0,12.0,2.0,10.0,3.0,14.0,14.0,4.0,755.0,18.0,67.0,9.0,78.0,43.0,5.0,17.0,2.0,1.0,19.0,1.0,2.0,3.0 +33.0,827.0,5.0,1.0,34.0,3501.0,144.0,445.0,50.0,6.0,46.0,4.0,4.0,3.0,195.0,34.0,3.0,22.0,189.0,10.0,3.0,176.0,140.0,22.0,19.0,5.0,14.0,39.0,53.0,61.0,133.0,3.0,11.0,2.0,4.0,4.0,4.0,5.0,15.0,1321.0,12.0,1253.0,8.0,5.0,5.0,18.0,82.0,4.0,2.0,4.0,54.0,16.0,1.0,126.0,5.0,1.0,61.0,9.0,10.0,20.0,3.0,16.0,1.0,9.0,10.0,43.0,299.0,29.0,48.0,12.0,4.0,22.0,3.0,11.0,2.0,1.0,22.0,2.0,8.0,9.0 +141.0,2382.0,20.0,31.0,316.0,3113.0,203.0,117.0,118.0,72.0,35.0,32.0,51.0,86.0,237.0,52.0,20.0,160.0,24.0,45.0,15.0,25.0,93.0,46.0,88.0,26.0,182.0,86.0,265.0,53.0,36.0,58.0,54.0,48.0,85.0,55.0,15.0,52.0,34.0,903.0,1290.0,623.0,47.0,45.0,105.0,66.0,22.0,34.0,23.0,22.0,13.0,40.0,15.0,253.0,31.0,20.0,88.0,26.0,56.0,117.0,24.0,80.0,65.0,80.0,41.0,143.0,112.0,57.0,90.0,69.0,30.0,286.0,16.0,220.0,29.0,38.0,81.0,17.0,20.0,175.0 +27.0,878.0,4.0,5.0,29.0,1793.0,69.0,70.0,122.0,28.0,10.0,3.0,3.0,0.0,83.0,8.0,2.0,61.0,261.0,4.0,2.0,3.0,151.0,14.0,15.0,2.0,18.0,60.0,34.0,123.0,103.0,4.0,14.0,2.0,302.0,6.0,5.0,2.0,10.0,546.0,3.0,1133.0,11.0,4.0,4.0,18.0,4.0,1.0,3.0,2.0,42.0,2.0,4.0,85.0,4.0,1.0,33.0,16.0,4.0,21.0,4.0,4.0,0.0,11.0,7.0,5.0,587.0,8.0,68.0,7.0,32.0,11.0,1.0,14.0,1.0,2.0,13.0,0.0,1.0,4.0 +61.0,1678.0,4.0,8.0,58.0,2013.0,99.0,120.0,190.0,11.0,16.0,8.0,11.0,2.0,76.0,18.0,2.0,55.0,311.0,9.0,6.0,10.0,210.0,434.0,37.0,2.0,33.0,104.0,55.0,94.0,97.0,13.0,29.0,2.0,457.0,9.0,6.0,3.0,9.0,580.0,14.0,1225.0,27.0,4.0,11.0,28.0,5.0,2.0,4.0,5.0,23.0,8.0,0.0,80.0,6.0,3.0,52.0,59.0,17.0,37.0,1.0,12.0,4.0,28.0,12.0,4.0,797.0,25.0,58.0,15.0,38.0,49.0,6.0,17.0,2.0,3.0,12.0,1.0,3.0,2.0 +76.0,2032.0,2.0,3.0,23.0,2561.0,114.0,20.0,68.0,3.0,7.0,2.0,2.0,4.0,83.0,9.0,5.0,141.0,16.0,5.0,2.0,5.0,122.0,15.0,24.0,3.0,13.0,38.0,39.0,93.0,111.0,12.0,4.0,3.0,236.0,3.0,8.0,6.0,11.0,896.0,9.0,796.0,8.0,6.0,3.0,19.0,6.0,3.0,1.0,4.0,20.0,2.0,2.0,70.0,3.0,2.0,46.0,39.0,2.0,13.0,1.0,9.0,1.0,10.0,5.0,5.0,62.0,8.0,58.0,5.0,9.0,13.0,3.0,8.0,0.0,0.0,85.0,1.0,8.0,2.0 +20.0,345.0,2.0,6.0,12.0,2680.0,124.0,19.0,12.0,51.0,35.0,5.0,9.0,1.0,200.0,16.0,2.0,12.0,8.0,8.0,4.0,57.0,45.0,19.0,12.0,1.0,10.0,23.0,30.0,7.0,5.0,8.0,61.0,1.0,10.0,5.0,8.0,3.0,15.0,730.0,9.0,881.0,8.0,5.0,5.0,8.0,9.0,2.0,1.0,0.0,10.0,23.0,5.0,225.0,3.0,0.0,11.0,44.0,3.0,9.0,1.0,21.0,2.0,25.0,7.0,33.0,134.0,24.0,48.0,5.0,1.0,5.0,0.0,33.0,0.0,0.0,29.0,4.0,4.0,3.0 +60.0,1760.0,8.0,6.0,63.0,2823.0,136.0,205.0,72.0,5.0,18.0,6.0,9.0,2.0,134.0,30.0,4.0,70.0,277.0,22.0,5.0,498.0,99.0,23.0,42.0,0.0,24.0,61.0,55.0,62.0,144.0,10.0,11.0,7.0,4.0,10.0,2.0,8.0,19.0,1034.0,21.0,1141.0,25.0,5.0,6.0,20.0,42.0,3.0,2.0,1.0,74.0,13.0,4.0,131.0,6.0,3.0,78.0,39.0,10.0,19.0,5.0,29.0,1.0,12.0,15.0,32.0,311.0,37.0,64.0,9.0,2.0,10.0,2.0,12.0,4.0,3.0,34.0,2.0,3.0,10.0 +50.0,1345.0,2.0,3.0,25.0,2833.0,124.0,71.0,223.0,5.0,11.0,5.0,9.0,0.0,137.0,15.0,3.0,73.0,11.0,6.0,3.0,1.0,157.0,12.0,31.0,3.0,11.0,50.0,43.0,71.0,108.0,8.0,9.0,3.0,284.0,4.0,6.0,5.0,13.0,884.0,11.0,961.0,7.0,2.0,6.0,31.0,4.0,0.0,0.0,1.0,37.0,4.0,3.0,107.0,9.0,4.0,56.0,33.0,6.0,34.0,3.0,3.0,3.0,12.0,8.0,5.0,296.0,20.0,79.0,8.0,59.0,21.0,3.0,11.0,0.0,3.0,37.0,4.0,6.0,1.0 +113.0,3389.0,8.0,9.0,284.0,5178.0,310.0,45.0,29.0,54.0,5.0,0.0,14.0,35.0,221.0,11.0,3.0,81.0,7.0,39.0,6.0,15.0,36.0,29.0,40.0,4.0,99.0,39.0,1151.0,8.0,27.0,13.0,14.0,11.0,42.0,6.0,7.0,6.0,21.0,1563.0,978.0,678.0,29.0,3.0,38.0,36.0,9.0,27.0,5.0,5.0,3.0,27.0,0.0,195.0,14.0,4.0,60.0,7.0,8.0,8.0,25.0,4.0,31.0,38.0,23.0,55.0,53.0,38.0,70.0,6.0,3.0,77.0,4.0,53.0,2.0,58.0,85.0,2.0,6.0,33.0 +13.0,178.0,4.0,2.0,7.0,2340.0,99.0,9.0,9.0,115.0,53.0,4.0,14.0,3.0,88.0,10.0,4.0,8.0,3.0,7.0,1.0,19.0,9.0,8.0,11.0,6.0,11.0,14.0,24.0,3.0,78.0,4.0,71.0,2.0,7.0,5.0,2.0,0.0,9.0,583.0,5.0,710.0,4.0,7.0,0.0,9.0,17.0,1.0,0.0,2.0,7.0,18.0,1.0,94.0,4.0,2.0,13.0,18.0,2.0,6.0,1.0,11.0,0.0,30.0,4.0,225.0,239.0,13.0,50.0,6.0,1.0,2.0,0.0,14.0,3.0,1.0,27.0,0.0,4.0,1.0 +64.0,1896.0,6.0,12.0,35.0,2964.0,138.0,67.0,153.0,84.0,10.0,5.0,11.0,1.0,51.0,9.0,6.0,255.0,9.0,9.0,3.0,5.0,1757.0,17.0,28.0,2.0,23.0,56.0,61.0,108.0,172.0,12.0,17.0,3.0,468.0,6.0,2.0,3.0,12.0,1064.0,17.0,1263.0,18.0,6.0,6.0,25.0,18.0,4.0,2.0,7.0,20.0,5.0,0.0,61.0,10.0,4.0,41.0,17.0,9.0,30.0,2.0,20.0,1.0,16.0,22.0,4.0,111.0,24.0,71.0,11.0,217.0,35.0,3.0,19.0,6.0,1.0,66.0,1.0,5.0,3.0 +31.0,897.0,7.0,6.0,31.0,2828.0,119.0,50.0,32.0,2.0,5.0,7.0,6.0,4.0,34.0,17.0,4.0,55.0,119.0,6.0,1.0,3.0,163.0,9.0,19.0,4.0,20.0,37.0,47.0,69.0,201.0,3.0,7.0,3.0,199.0,10.0,5.0,2.0,23.0,1163.0,9.0,1315.0,19.0,1.0,12.0,16.0,8.0,0.0,2.0,2.0,58.0,2.0,0.0,36.0,6.0,1.0,101.0,63.0,6.0,18.0,1.0,7.0,0.0,8.0,11.0,8.0,286.0,22.0,51.0,5.0,34.0,61.0,6.0,8.0,3.0,0.0,29.0,0.0,4.0,0.0 +60.0,1079.0,7.0,10.0,54.0,8048.0,327.0,61.0,100.0,4.0,10.0,13.0,32.0,26.0,75.0,11.0,5.0,649.0,13.0,184.0,23.0,9.0,37.0,51.0,55.0,6.0,65.0,91.0,1471.0,8.0,13.0,212.0,87.0,6.0,24.0,17.0,8.0,4.0,37.0,2613.0,24.0,584.0,27.0,8.0,17.0,27.0,3.0,2.0,6.0,3.0,45.0,7.0,2.0,70.0,23.0,4.0,21.0,10.0,12.0,588.0,8.0,32.0,6.0,722.0,14.0,7.0,78.0,45.0,55.0,29.0,3.0,46.0,4.0,383.0,28.0,4.0,51.0,2.0,9.0,324.0 +32.0,856.0,5.0,23.0,26.0,2905.0,127.0,24.0,192.0,9.0,7.0,4.0,7.0,2.0,147.0,11.0,4.0,180.0,30.0,5.0,5.0,2.0,72.0,17.0,15.0,5.0,22.0,39.0,463.0,98.0,103.0,8.0,16.0,3.0,400.0,4.0,4.0,3.0,14.0,809.0,8.0,1057.0,20.0,7.0,5.0,32.0,4.0,2.0,6.0,4.0,35.0,2.0,2.0,122.0,2.0,0.0,15.0,12.0,5.0,32.0,2.0,8.0,4.0,8.0,6.0,3.0,80.0,6.0,74.0,6.0,25.0,7.0,2.0,8.0,3.0,1.0,78.0,2.0,4.0,1.0 +114.0,3376.0,8.0,3.0,190.0,4494.0,256.0,28.0,38.0,28.0,8.0,4.0,19.0,25.0,180.0,22.0,2.0,85.0,2.0,18.0,2.0,8.0,78.0,22.0,36.0,7.0,126.0,33.0,749.0,1.0,24.0,7.0,13.0,19.0,33.0,1.0,4.0,9.0,23.0,1188.0,741.0,353.0,30.0,10.0,46.0,42.0,2.0,15.0,2.0,1.0,6.0,22.0,2.0,185.0,15.0,3.0,25.0,5.0,6.0,17.0,20.0,26.0,40.0,35.0,10.0,79.0,38.0,25.0,50.0,1.0,1.0,73.0,1.0,269.0,1.0,36.0,32.0,4.0,1.0,19.0 +20.0,512.0,4.0,2.0,22.0,2298.0,86.0,33.0,18.0,23.0,24.0,1.0,3.0,4.0,95.0,4.0,2.0,19.0,43.0,11.0,0.0,56.0,30.0,14.0,25.0,4.0,15.0,44.0,33.0,6.0,64.0,6.0,83.0,3.0,11.0,10.0,4.0,6.0,9.0,646.0,4.0,874.0,10.0,7.0,3.0,9.0,8.0,2.0,2.0,2.0,4.0,29.0,4.0,66.0,3.0,1.0,19.0,43.0,4.0,17.0,0.0,19.0,3.0,33.0,6.0,7.0,171.0,19.0,30.0,4.0,0.0,1.0,2.0,17.0,1.0,1.0,14.0,7.0,8.0,4.0 +117.0,3103.0,5.0,8.0,116.0,4098.0,171.0,24.0,41.0,22.0,9.0,4.0,14.0,39.0,135.0,6.0,3.0,137.0,7.0,23.0,3.0,8.0,69.0,20.0,29.0,9.0,64.0,35.0,722.0,8.0,32.0,6.0,9.0,18.0,29.0,5.0,6.0,6.0,23.0,1150.0,733.0,371.0,18.0,7.0,56.0,34.0,5.0,39.0,0.0,4.0,7.0,25.0,1.0,144.0,9.0,1.0,36.0,5.0,6.0,12.0,6.0,26.0,30.0,29.0,13.0,45.0,30.0,26.0,48.0,8.0,6.0,107.0,2.0,152.0,3.0,42.0,37.0,2.0,5.0,43.0 +65.0,2038.0,7.0,11.0,43.0,2824.0,138.0,152.0,71.0,5.0,17.0,6.0,15.0,2.0,84.0,15.0,2.0,281.0,7.0,4.0,2.0,3.0,272.0,25.0,33.0,4.0,21.0,40.0,36.0,63.0,195.0,6.0,22.0,5.0,522.0,14.0,3.0,7.0,10.0,802.0,26.0,1147.0,14.0,5.0,3.0,34.0,6.0,2.0,4.0,5.0,80.0,6.0,3.0,64.0,7.0,1.0,31.0,20.0,7.0,38.0,1.0,24.0,2.0,37.0,19.0,3.0,45.0,25.0,77.0,9.0,5.0,22.0,3.0,20.0,0.0,3.0,78.0,3.0,5.0,3.0 +61.0,1517.0,2.0,10.0,27.0,2932.0,154.0,114.0,107.0,5.0,13.0,6.0,2.0,3.0,94.0,14.0,2.0,90.0,27.0,4.0,4.0,2.0,287.0,15.0,36.0,0.0,17.0,25.0,45.0,44.0,127.0,0.0,8.0,5.0,351.0,5.0,6.0,7.0,13.0,996.0,10.0,1165.0,15.0,2.0,6.0,19.0,9.0,1.0,1.0,0.0,11.0,5.0,3.0,85.0,7.0,0.0,17.0,5.0,3.0,19.0,3.0,6.0,1.0,13.0,7.0,4.0,153.0,33.0,59.0,5.0,13.0,3.0,1.0,12.0,0.0,0.0,25.0,6.0,4.0,1.0 +134.0,4514.0,8.0,9.0,355.0,5020.0,313.0,47.0,49.0,54.0,10.0,7.0,16.0,44.0,136.0,21.0,5.0,144.0,2.0,38.0,2.0,12.0,218.0,30.0,46.0,8.0,105.0,60.0,1011.0,13.0,23.0,8.0,17.0,16.0,33.0,6.0,4.0,17.0,22.0,1500.0,1136.0,667.0,37.0,5.0,68.0,46.0,2.0,54.0,2.0,3.0,2.0,26.0,6.0,202.0,20.0,5.0,57.0,6.0,8.0,27.0,8.0,13.0,31.0,57.0,33.0,70.0,52.0,36.0,46.0,6.0,8.0,141.0,5.0,223.0,2.0,53.0,108.0,5.0,10.0,61.0 +34.0,520.0,8.0,4.0,23.0,1976.0,107.0,19.0,16.0,26.0,7.0,4.0,32.0,5.0,10.0,3.0,0.0,171.0,5.0,156.0,31.0,8.0,22.0,15.0,19.0,1.0,57.0,45.0,3085.0,5.0,15.0,284.0,82.0,3.0,13.0,9.0,2.0,4.0,11.0,519.0,21.0,745.0,14.0,7.0,27.0,20.0,2.0,3.0,11.0,4.0,9.0,6.0,0.0,18.0,9.0,3.0,18.0,1.0,8.0,632.0,3.0,37.0,2.0,1187.0,8.0,5.0,26.0,48.0,70.0,341.0,1.0,34.0,1.0,308.0,40.0,0.0,24.0,4.0,6.0,286.0 +140.0,3311.0,9.0,9.0,198.0,4026.0,249.0,31.0,40.0,18.0,23.0,5.0,17.0,79.0,384.0,27.0,4.0,61.0,13.0,40.0,2.0,10.0,25.0,35.0,31.0,8.0,203.0,49.0,1264.0,6.0,23.0,10.0,20.0,7.0,29.0,9.0,4.0,11.0,12.0,996.0,425.0,1179.0,17.0,9.0,19.0,25.0,5.0,5.0,4.0,3.0,7.0,17.0,3.0,347.0,13.0,2.0,85.0,15.0,6.0,24.0,19.0,15.0,38.0,59.0,27.0,86.0,42.0,82.0,84.0,7.0,3.0,123.0,0.0,135.0,2.0,13.0,196.0,4.0,5.0,50.0 +34.0,428.0,3.0,5.0,31.0,2221.0,114.0,38.0,41.0,14.0,8.0,2.0,40.0,2.0,9.0,5.0,3.0,136.0,6.0,101.0,27.0,6.0,42.0,14.0,27.0,2.0,38.0,59.0,974.0,3.0,10.0,205.0,39.0,4.0,12.0,11.0,4.0,6.0,9.0,543.0,8.0,605.0,13.0,7.0,26.0,21.0,8.0,1.0,14.0,1.0,10.0,3.0,0.0,8.0,19.0,3.0,13.0,1.0,7.0,303.0,3.0,28.0,2.0,1258.0,4.0,4.0,32.0,28.0,88.0,380.0,2.0,30.0,2.0,250.0,47.0,1.0,23.0,2.0,6.0,119.0 +36.0,929.0,10.0,4.0,24.0,2104.0,83.0,14.0,18.0,2.0,5.0,1.0,5.0,0.0,139.0,16.0,1.0,14.0,59.0,18.0,0.0,730.0,44.0,7.0,13.0,3.0,8.0,30.0,25.0,51.0,128.0,7.0,20.0,3.0,2.0,6.0,2.0,6.0,15.0,719.0,12.0,1126.0,13.0,3.0,5.0,25.0,1.0,4.0,2.0,0.0,17.0,21.0,3.0,140.0,5.0,1.0,30.0,104.0,5.0,16.0,4.0,27.0,1.0,16.0,12.0,3.0,60.0,23.0,21.0,6.0,9.0,1.0,3.0,8.0,3.0,0.0,31.0,1.0,6.0,4.0 +75.0,2154.0,3.0,9.0,150.0,3324.0,211.0,24.0,36.0,51.0,8.0,3.0,16.0,24.0,169.0,14.0,2.0,106.0,1.0,34.0,6.0,18.0,28.0,12.0,34.0,8.0,57.0,31.0,156.0,3.0,42.0,7.0,11.0,21.0,37.0,7.0,4.0,4.0,22.0,993.0,1057.0,521.0,15.0,7.0,50.0,42.0,3.0,30.0,1.0,4.0,7.0,21.0,1.0,192.0,12.0,1.0,51.0,4.0,1.0,5.0,8.0,21.0,31.0,23.0,15.0,54.0,35.0,50.0,46.0,9.0,6.0,120.0,4.0,100.0,3.0,38.0,47.0,1.0,4.0,243.0 +19.0,368.0,2.0,2.0,11.0,1958.0,92.0,5.0,9.0,13.0,66.0,1.0,5.0,3.0,154.0,8.0,0.0,13.0,21.0,7.0,1.0,5.0,28.0,8.0,11.0,2.0,4.0,17.0,25.0,5.0,90.0,5.0,28.0,3.0,4.0,4.0,0.0,2.0,7.0,452.0,5.0,749.0,5.0,3.0,5.0,10.0,3.0,1.0,0.0,2.0,6.0,12.0,0.0,142.0,2.0,3.0,23.0,50.0,2.0,9.0,0.0,6.0,0.0,21.0,19.0,152.0,188.0,20.0,34.0,6.0,2.0,1.0,0.0,17.0,2.0,0.0,22.0,1.0,6.0,1.0 +79.0,1324.0,10.0,8.0,28.0,3332.0,169.0,20.0,64.0,10.0,9.0,10.0,8.0,4.0,16.0,5.0,4.0,81.0,290.0,57.0,19.0,4.0,36.0,25.0,27.0,4.0,29.0,49.0,312.0,4.0,20.0,86.0,231.0,7.0,16.0,10.0,6.0,5.0,16.0,1020.0,16.0,613.0,22.0,7.0,13.0,19.0,4.0,4.0,6.0,3.0,23.0,5.0,5.0,20.0,10.0,4.0,20.0,5.0,9.0,232.0,6.0,27.0,8.0,259.0,8.0,7.0,23.0,10.0,40.0,407.0,3.0,19.0,4.0,513.0,19.0,3.0,31.0,4.0,8.0,144.0 +44.0,1040.0,2.0,6.0,19.0,3961.0,182.0,22.0,27.0,3.0,27.0,11.0,11.0,4.0,166.0,13.0,1.0,11.0,24.0,9.0,3.0,46.0,74.0,13.0,18.0,3.0,11.0,43.0,46.0,7.0,167.0,9.0,47.0,3.0,9.0,9.0,2.0,5.0,22.0,1177.0,9.0,1292.0,11.0,6.0,4.0,17.0,32.0,2.0,3.0,0.0,15.0,20.0,1.0,185.0,3.0,3.0,62.0,22.0,6.0,14.0,1.0,26.0,1.0,40.0,16.0,61.0,48.0,13.0,62.0,7.0,1.0,3.0,4.0,13.0,3.0,1.0,30.0,2.0,14.0,2.0 +117.0,2690.0,3.0,6.0,42.0,2987.0,121.0,53.0,146.0,3.0,13.0,4.0,5.0,4.0,89.0,10.0,1.0,158.0,137.0,5.0,3.0,3.0,104.0,15.0,17.0,3.0,18.0,37.0,39.0,55.0,154.0,4.0,15.0,4.0,303.0,11.0,5.0,7.0,15.0,1251.0,9.0,1103.0,19.0,3.0,8.0,17.0,5.0,2.0,7.0,4.0,36.0,4.0,3.0,70.0,8.0,1.0,35.0,37.0,3.0,21.0,3.0,5.0,0.0,10.0,4.0,4.0,190.0,16.0,67.0,3.0,46.0,20.0,1.0,13.0,1.0,0.0,15.0,0.0,7.0,4.0 +13.0,65.0,3.0,3.0,11.0,3138.0,143.0,20.0,23.0,78.0,103.0,6.0,17.0,11.0,201.0,19.0,0.0,14.0,52.0,11.0,2.0,2.0,24.0,9.0,14.0,2.0,15.0,24.0,49.0,5.0,72.0,8.0,153.0,1.0,8.0,10.0,3.0,8.0,8.0,866.0,12.0,936.0,13.0,13.0,9.0,8.0,12.0,5.0,7.0,0.0,7.0,24.0,3.0,203.0,2.0,3.0,42.0,69.0,9.0,9.0,6.0,13.0,5.0,16.0,9.0,494.0,346.0,25.0,60.0,13.0,2.0,4.0,5.0,17.0,0.0,3.0,15.0,6.0,11.0,3.0 +25.0,306.0,6.0,1.0,19.0,1597.0,83.0,24.0,25.0,29.0,7.0,3.0,24.0,3.0,22.0,4.0,4.0,80.0,6.0,95.0,25.0,1.0,41.0,13.0,21.0,5.0,27.0,41.0,931.0,6.0,12.0,296.0,68.0,7.0,8.0,4.0,4.0,8.0,5.0,342.0,16.0,384.0,15.0,8.0,16.0,14.0,2.0,2.0,9.0,1.0,10.0,3.0,1.0,13.0,17.0,2.0,17.0,3.0,4.0,703.0,1.0,36.0,2.0,1415.0,3.0,4.0,31.0,24.0,51.0,330.0,2.0,41.0,5.0,195.0,41.0,0.0,21.0,1.0,3.0,93.0 +43.0,996.0,4.0,5.0,39.0,1397.0,50.0,72.0,109.0,6.0,8.0,6.0,3.0,2.0,59.0,7.0,3.0,114.0,299.0,8.0,3.0,2.0,71.0,9.0,22.0,3.0,13.0,59.0,25.0,84.0,99.0,6.0,12.0,5.0,349.0,5.0,4.0,4.0,5.0,394.0,11.0,1182.0,13.0,9.0,7.0,14.0,4.0,2.0,2.0,2.0,29.0,3.0,1.0,53.0,10.0,2.0,24.0,28.0,5.0,7.0,4.0,11.0,1.0,26.0,11.0,8.0,561.0,14.0,56.0,10.0,32.0,17.0,3.0,19.0,3.0,1.0,19.0,2.0,1.0,2.0 +26.0,720.0,4.0,0.0,10.0,1328.0,56.0,15.0,102.0,14.0,5.0,1.0,5.0,3.0,59.0,7.0,3.0,64.0,178.0,2.0,0.0,2.0,498.0,15.0,8.0,0.0,3.0,23.0,23.0,61.0,41.0,4.0,24.0,3.0,334.0,4.0,2.0,3.0,8.0,424.0,9.0,580.0,8.0,3.0,3.0,13.0,1.0,0.0,3.0,1.0,17.0,2.0,0.0,36.0,8.0,1.0,20.0,30.0,6.0,9.0,0.0,8.0,0.0,8.0,7.0,1.0,181.0,3.0,45.0,3.0,32.0,54.0,1.0,5.0,3.0,1.0,17.0,2.0,0.0,3.0 +66.0,1552.0,10.0,7.0,20.0,3597.0,173.0,32.0,101.0,8.0,4.0,7.0,4.0,4.0,118.0,18.0,1.0,101.0,10.0,3.0,1.0,5.0,99.0,18.0,29.0,1.0,8.0,60.0,59.0,40.0,66.0,7.0,14.0,1.0,337.0,5.0,7.0,5.0,20.0,1223.0,11.0,1014.0,15.0,3.0,3.0,17.0,2.0,1.0,3.0,4.0,35.0,4.0,2.0,98.0,6.0,0.0,58.0,36.0,4.0,41.0,4.0,9.0,2.0,13.0,4.0,8.0,235.0,16.0,63.0,7.0,83.0,16.0,3.0,13.0,1.0,4.0,2.0,2.0,4.0,2.0 +33.0,376.0,7.0,6.0,87.0,13372.0,641.0,44.0,47.0,5.0,15.0,7.0,20.0,40.0,86.0,11.0,6.0,424.0,12.0,84.0,24.0,19.0,41.0,33.0,36.0,6.0,58.0,57.0,679.0,8.0,35.0,378.0,61.0,4.0,24.0,23.0,12.0,13.0,62.0,4539.0,38.0,616.0,24.0,6.0,28.0,74.0,5.0,4.0,4.0,2.0,4.0,6.0,3.0,75.0,25.0,5.0,48.0,6.0,11.0,588.0,40.0,58.0,3.0,899.0,19.0,10.0,58.0,38.0,60.0,423.0,6.0,14.0,5.0,803.0,14.0,3.0,63.0,3.0,5.0,8.0 +42.0,1098.0,6.0,5.0,27.0,1994.0,93.0,75.0,198.0,53.0,15.0,8.0,6.0,5.0,63.0,4.0,5.0,49.0,451.0,3.0,3.0,2.0,187.0,17.0,23.0,4.0,18.0,58.0,39.0,84.0,131.0,6.0,130.0,2.0,499.0,11.0,9.0,3.0,3.0,643.0,15.0,1379.0,7.0,5.0,8.0,11.0,3.0,1.0,3.0,2.0,37.0,5.0,2.0,67.0,7.0,4.0,44.0,30.0,9.0,22.0,6.0,7.0,4.0,20.0,10.0,7.0,641.0,18.0,62.0,16.0,40.0,25.0,2.0,13.0,4.0,2.0,12.0,2.0,7.0,1.0 +31.0,839.0,3.0,5.0,23.0,1776.0,72.0,34.0,81.0,9.0,6.0,8.0,5.0,0.0,52.0,4.0,5.0,40.0,96.0,8.0,1.0,6.0,230.0,13.0,15.0,2.0,13.0,36.0,27.0,76.0,92.0,5.0,21.0,1.0,341.0,4.0,1.0,7.0,14.0,484.0,13.0,1076.0,7.0,4.0,1.0,15.0,2.0,1.0,0.0,1.0,24.0,2.0,1.0,60.0,6.0,0.0,45.0,2.0,4.0,11.0,2.0,16.0,2.0,17.0,12.0,6.0,244.0,21.0,71.0,5.0,45.0,28.0,3.0,9.0,4.0,2.0,19.0,0.0,2.0,1.0 +66.0,1881.0,3.0,8.0,28.0,2002.0,83.0,64.0,35.0,3.0,7.0,7.0,6.0,1.0,148.0,15.0,3.0,95.0,88.0,14.0,1.0,364.0,106.0,17.0,16.0,0.0,16.0,54.0,39.0,31.0,132.0,7.0,5.0,3.0,11.0,8.0,2.0,3.0,8.0,832.0,11.0,738.0,19.0,7.0,6.0,15.0,4.0,2.0,2.0,3.0,12.0,8.0,1.0,129.0,6.0,3.0,51.0,59.0,6.0,15.0,1.0,12.0,3.0,8.0,20.0,7.0,417.0,19.0,26.0,3.0,15.0,33.0,4.0,9.0,1.0,6.0,75.0,1.0,11.0,4.0 +49.0,1093.0,8.0,7.0,37.0,3844.0,203.0,29.0,26.0,9.0,4.0,8.0,34.0,4.0,66.0,9.0,6.0,106.0,42.0,90.0,29.0,6.0,30.0,24.0,32.0,2.0,41.0,54.0,881.0,3.0,25.0,299.0,112.0,2.0,26.0,18.0,7.0,11.0,23.0,1145.0,23.0,1071.0,18.0,10.0,17.0,23.0,2.0,3.0,12.0,4.0,21.0,4.0,1.0,73.0,15.0,2.0,31.0,2.0,6.0,1452.0,6.0,61.0,5.0,765.0,12.0,6.0,35.0,42.0,54.0,731.0,3.0,58.0,1.0,493.0,46.0,2.0,32.0,3.0,3.0,742.0 +39.0,976.0,4.0,4.0,19.0,1569.0,75.0,71.0,86.0,19.0,11.0,8.0,7.0,2.0,59.0,10.0,5.0,31.0,419.0,4.0,1.0,4.0,123.0,19.0,16.0,6.0,12.0,56.0,35.0,79.0,68.0,7.0,122.0,4.0,458.0,8.0,3.0,9.0,7.0,439.0,12.0,850.0,10.0,2.0,9.0,13.0,1.0,2.0,2.0,3.0,25.0,2.0,0.0,52.0,9.0,1.0,34.0,19.0,3.0,20.0,4.0,11.0,1.0,25.0,18.0,3.0,363.0,25.0,56.0,7.0,16.0,19.0,4.0,10.0,3.0,5.0,16.0,2.0,5.0,6.0 +86.0,2135.0,1.0,8.0,35.0,2060.0,105.0,70.0,92.0,6.0,9.0,3.0,13.0,4.0,158.0,19.0,2.0,222.0,7.0,5.0,0.0,3.0,111.0,18.0,17.0,2.0,17.0,58.0,32.0,40.0,107.0,7.0,9.0,1.0,352.0,6.0,8.0,4.0,8.0,650.0,13.0,778.0,14.0,5.0,8.0,30.0,4.0,3.0,2.0,3.0,56.0,4.0,0.0,121.0,3.0,1.0,47.0,48.0,8.0,20.0,1.0,15.0,1.0,14.0,6.0,5.0,48.0,13.0,54.0,5.0,54.0,19.0,1.0,13.0,2.0,2.0,52.0,0.0,3.0,3.0 +35.0,1034.0,2.0,4.0,14.0,1424.0,53.0,95.0,102.0,17.0,9.0,6.0,8.0,5.0,72.0,6.0,2.0,84.0,262.0,6.0,2.0,1.0,141.0,8.0,18.0,0.0,10.0,32.0,28.0,100.0,72.0,3.0,18.0,2.0,351.0,2.0,2.0,3.0,11.0,390.0,4.0,736.0,7.0,2.0,8.0,13.0,3.0,0.0,1.0,1.0,24.0,3.0,2.0,54.0,3.0,0.0,68.0,22.0,4.0,10.0,0.0,13.0,5.0,5.0,6.0,2.0,307.0,4.0,83.0,6.0,13.0,69.0,0.0,8.0,2.0,1.0,12.0,3.0,3.0,2.0 +50.0,1536.0,6.0,8.0,28.0,2232.0,97.0,27.0,87.0,2.0,5.0,2.0,5.0,3.0,83.0,13.0,3.0,35.0,5.0,6.0,4.0,4.0,217.0,11.0,25.0,3.0,11.0,35.0,41.0,46.0,64.0,6.0,9.0,1.0,227.0,5.0,4.0,4.0,17.0,801.0,12.0,918.0,12.0,4.0,8.0,11.0,5.0,1.0,4.0,2.0,17.0,2.0,2.0,58.0,9.0,1.0,12.0,11.0,5.0,31.0,0.0,7.0,2.0,7.0,10.0,8.0,58.0,11.0,63.0,7.0,8.0,5.0,1.0,9.0,2.0,4.0,8.0,0.0,3.0,1.0 +47.0,915.0,3.0,3.0,21.0,1801.0,85.0,27.0,127.0,7.0,12.0,8.0,7.0,3.0,68.0,15.0,1.0,118.0,15.0,8.0,1.0,6.0,353.0,11.0,13.0,3.0,7.0,32.0,37.0,56.0,73.0,7.0,8.0,2.0,308.0,6.0,1.0,4.0,12.0,502.0,12.0,955.0,10.0,4.0,9.0,10.0,12.0,1.0,1.0,1.0,29.0,1.0,3.0,68.0,12.0,3.0,62.0,25.0,4.0,19.0,1.0,8.0,4.0,10.0,4.0,1.0,270.0,13.0,79.0,5.0,106.0,17.0,3.0,8.0,3.0,1.0,4.0,0.0,1.0,1.0 +45.0,634.0,5.0,6.0,35.0,813.0,36.0,27.0,22.0,5.0,8.0,5.0,7.0,4.0,79.0,12.0,6.0,32.0,15.0,8.0,2.0,400.0,8.0,10.0,14.0,2.0,39.0,31.0,19.0,18.0,123.0,18.0,11.0,5.0,11.0,7.0,4.0,2.0,13.0,491.0,6.0,579.0,1.0,4.0,6.0,8.0,3.0,3.0,2.0,1.0,28.0,2.0,3.0,78.0,3.0,1.0,11.0,28.0,3.0,30.0,2.0,4.0,4.0,17.0,10.0,3.0,163.0,9.0,9.0,7.0,5.0,8.0,1.0,13.0,2.0,0.0,31.0,3.0,2.0,7.0 +40.0,1085.0,6.0,8.0,20.0,1704.0,51.0,67.0,149.0,9.0,16.0,4.0,6.0,1.0,49.0,6.0,1.0,86.0,404.0,7.0,1.0,3.0,185.0,5.0,14.0,0.0,13.0,52.0,32.0,135.0,80.0,7.0,78.0,2.0,293.0,7.0,8.0,6.0,13.0,554.0,9.0,1167.0,15.0,1.0,5.0,9.0,3.0,0.0,2.0,3.0,29.0,3.0,3.0,52.0,4.0,3.0,53.0,70.0,6.0,16.0,0.0,16.0,3.0,13.0,12.0,4.0,409.0,8.0,69.0,10.0,47.0,47.0,1.0,5.0,3.0,0.0,16.0,0.0,6.0,15.0 +57.0,1455.0,3.0,5.0,38.0,4423.0,192.0,167.0,95.0,95.0,22.0,11.0,14.0,4.0,287.0,19.0,7.0,57.0,64.0,8.0,0.0,9.0,49.0,35.0,24.0,0.0,22.0,48.0,271.0,419.0,275.0,9.0,7.0,2.0,12.0,6.0,10.0,9.0,23.0,1532.0,36.0,1847.0,20.0,7.0,9.0,13.0,21.0,2.0,2.0,4.0,44.0,23.0,2.0,242.0,10.0,1.0,35.0,45.0,8.0,14.0,6.0,41.0,0.0,26.0,9.0,10.0,299.0,13.0,38.0,13.0,16.0,10.0,6.0,14.0,1.0,2.0,79.0,0.0,6.0,9.0 +43.0,667.0,2.0,9.0,52.0,1141.0,58.0,30.0,50.0,4.0,11.0,8.0,3.0,2.0,13.0,2.0,5.0,159.0,334.0,17.0,7.0,1.0,43.0,16.0,28.0,3.0,15.0,45.0,136.0,2.0,20.0,72.0,271.0,5.0,16.0,10.0,9.0,7.0,10.0,309.0,15.0,209.0,15.0,8.0,17.0,16.0,4.0,3.0,7.0,5.0,7.0,3.0,3.0,32.0,7.0,3.0,7.0,7.0,9.0,243.0,6.0,18.0,3.0,245.0,5.0,4.0,28.0,10.0,17.0,245.0,2.0,23.0,3.0,144.0,5.0,1.0,19.0,2.0,7.0,311.0 +46.0,962.0,11.0,7.0,22.0,3182.0,162.0,51.0,203.0,6.0,13.0,5.0,2.0,1.0,161.0,21.0,4.0,38.0,223.0,18.0,2.0,713.0,59.0,23.0,20.0,6.0,21.0,58.0,64.0,30.0,104.0,9.0,11.0,5.0,11.0,7.0,10.0,8.0,16.0,1340.0,11.0,1084.0,27.0,7.0,5.0,22.0,2.0,1.0,2.0,1.0,44.0,11.0,0.0,146.0,7.0,5.0,79.0,65.0,6.0,15.0,5.0,22.0,2.0,13.0,9.0,6.0,922.0,28.0,63.0,3.0,22.0,11.0,3.0,11.0,6.0,2.0,36.0,5.0,14.0,5.0 +39.0,882.0,3.0,3.0,23.0,1467.0,70.0,75.0,89.0,9.0,7.0,1.0,4.0,1.0,37.0,6.0,2.0,45.0,351.0,1.0,2.0,4.0,152.0,10.0,7.0,0.0,9.0,47.0,28.0,96.0,60.0,1.0,49.0,4.0,424.0,4.0,9.0,5.0,8.0,420.0,4.0,927.0,14.0,8.0,6.0,10.0,0.0,1.0,5.0,0.0,21.0,2.0,2.0,37.0,6.0,2.0,35.0,14.0,4.0,15.0,3.0,1.0,1.0,13.0,6.0,5.0,515.0,5.0,67.0,10.0,23.0,16.0,3.0,14.0,1.0,2.0,9.0,0.0,7.0,2.0 +13.0,97.0,5.0,1.0,21.0,2746.0,109.0,8.0,18.0,80.0,37.0,1.0,6.0,10.0,116.0,8.0,1.0,8.0,63.0,3.0,0.0,2.0,31.0,9.0,11.0,3.0,10.0,27.0,33.0,3.0,17.0,0.0,119.0,4.0,4.0,8.0,4.0,8.0,12.0,670.0,8.0,792.0,8.0,14.0,6.0,7.0,12.0,2.0,2.0,1.0,9.0,31.0,1.0,123.0,5.0,3.0,20.0,59.0,3.0,10.0,4.0,11.0,3.0,21.0,5.0,124.0,489.0,31.0,46.0,6.0,1.0,4.0,2.0,19.0,4.0,0.0,12.0,4.0,6.0,2.0 +55.0,1455.0,2.0,5.0,34.0,2592.0,111.0,448.0,76.0,0.0,42.0,6.0,5.0,2.0,208.0,26.0,2.0,32.0,123.0,12.0,1.0,172.0,104.0,14.0,26.0,3.0,8.0,57.0,45.0,46.0,199.0,12.0,7.0,7.0,7.0,5.0,5.0,8.0,39.0,811.0,10.0,1351.0,20.0,3.0,3.0,28.0,92.0,2.0,1.0,1.0,57.0,18.0,0.0,194.0,8.0,1.0,49.0,24.0,4.0,10.0,0.0,16.0,0.0,18.0,11.0,32.0,402.0,14.0,63.0,15.0,19.0,9.0,3.0,14.0,3.0,2.0,32.0,0.0,5.0,2.0 +81.0,2285.0,3.0,4.0,159.0,2829.0,123.0,19.0,29.0,24.0,5.0,3.0,15.0,24.0,163.0,4.0,3.0,65.0,1.0,12.0,2.0,4.0,40.0,14.0,24.0,4.0,57.0,30.0,232.0,3.0,19.0,4.0,8.0,19.0,18.0,4.0,3.0,4.0,2.0,786.0,776.0,312.0,18.0,5.0,70.0,22.0,4.0,18.0,3.0,3.0,2.0,17.0,2.0,144.0,14.0,4.0,42.0,9.0,3.0,14.0,14.0,14.0,20.0,18.0,12.0,40.0,29.0,30.0,44.0,6.0,1.0,149.0,4.0,85.0,0.0,49.0,25.0,0.0,3.0,41.0 +36.0,563.0,1.0,4.0,15.0,1725.0,65.0,49.0,99.0,12.0,6.0,7.0,6.0,2.0,44.0,8.0,1.0,27.0,262.0,4.0,0.0,4.0,85.0,15.0,13.0,0.0,11.0,45.0,35.0,76.0,43.0,4.0,73.0,3.0,255.0,7.0,2.0,2.0,10.0,530.0,6.0,794.0,6.0,3.0,3.0,12.0,3.0,3.0,0.0,2.0,9.0,2.0,3.0,58.0,7.0,1.0,22.0,17.0,5.0,9.0,1.0,8.0,2.0,8.0,10.0,5.0,484.0,10.0,59.0,8.0,25.0,19.0,1.0,7.0,2.0,1.0,8.0,1.0,1.0,1.0 +40.0,835.0,5.0,4.0,19.0,4379.0,182.0,16.0,21.0,20.0,60.0,6.0,11.0,10.0,206.0,21.0,4.0,19.0,15.0,10.0,5.0,4.0,33.0,17.0,23.0,4.0,16.0,42.0,48.0,5.0,82.0,8.0,95.0,6.0,8.0,3.0,11.0,6.0,23.0,1280.0,9.0,1516.0,10.0,2.0,11.0,23.0,15.0,2.0,3.0,2.0,18.0,45.0,3.0,228.0,5.0,3.0,52.0,29.0,9.0,26.0,4.0,12.0,1.0,28.0,9.0,9.0,274.0,20.0,46.0,6.0,2.0,5.0,2.0,29.0,1.0,2.0,68.0,2.0,10.0,1.0 +39.0,855.0,5.0,4.0,26.0,2279.0,85.0,72.0,123.0,13.0,12.0,2.0,10.0,2.0,49.0,11.0,2.0,80.0,299.0,10.0,2.0,3.0,117.0,21.0,16.0,5.0,15.0,65.0,45.0,124.0,96.0,9.0,60.0,2.0,368.0,4.0,3.0,6.0,10.0,593.0,9.0,880.0,14.0,1.0,9.0,23.0,2.0,3.0,0.0,3.0,24.0,7.0,1.0,40.0,6.0,2.0,55.0,23.0,6.0,14.0,4.0,9.0,1.0,15.0,11.0,4.0,371.0,20.0,69.0,5.0,54.0,60.0,1.0,8.0,4.0,5.0,27.0,1.0,8.0,1.0 +28.0,898.0,1.0,2.0,22.0,1589.0,77.0,59.0,136.0,6.0,9.0,4.0,9.0,2.0,130.0,14.0,3.0,95.0,82.0,7.0,3.0,2.0,128.0,15.0,11.0,7.0,14.0,35.0,29.0,112.0,104.0,4.0,4.0,0.0,321.0,10.0,0.0,2.0,5.0,407.0,6.0,1181.0,9.0,3.0,10.0,17.0,1.0,1.0,3.0,3.0,37.0,2.0,2.0,122.0,7.0,1.0,36.0,38.0,4.0,14.0,0.0,3.0,1.0,15.0,5.0,5.0,359.0,5.0,77.0,4.0,54.0,4.0,5.0,10.0,0.0,0.0,14.0,1.0,2.0,3.0 +103.0,2405.0,5.0,6.0,31.0,4595.0,235.0,67.0,97.0,8.0,13.0,6.0,3.0,1.0,127.0,18.0,5.0,186.0,185.0,7.0,5.0,10.0,105.0,23.0,27.0,5.0,30.0,56.0,94.0,50.0,199.0,6.0,9.0,3.0,317.0,9.0,7.0,8.0,30.0,2135.0,13.0,1463.0,14.0,4.0,8.0,32.0,10.0,7.0,4.0,1.0,42.0,6.0,4.0,112.0,13.0,2.0,32.0,70.0,8.0,31.0,2.0,3.0,1.0,13.0,9.0,8.0,53.0,31.0,61.0,3.0,84.0,31.0,1.0,12.0,1.0,2.0,7.0,3.0,6.0,4.0 +90.0,2181.0,4.0,8.0,39.0,3812.0,177.0,67.0,42.0,5.0,10.0,4.0,10.0,6.0,191.0,22.0,2.0,241.0,2.0,7.0,3.0,2.0,247.0,25.0,25.0,6.0,26.0,52.0,59.0,54.0,136.0,8.0,8.0,3.0,403.0,7.0,9.0,10.0,17.0,1269.0,15.0,1150.0,11.0,3.0,1.0,32.0,5.0,0.0,2.0,2.0,60.0,4.0,3.0,170.0,7.0,3.0,57.0,54.0,8.0,18.0,4.0,9.0,0.0,13.0,11.0,6.0,171.0,26.0,64.0,8.0,61.0,16.0,2.0,15.0,2.0,2.0,22.0,1.0,5.0,3.0 +12.0,305.0,7.0,2.0,11.0,3248.0,145.0,10.0,17.0,64.0,89.0,3.0,12.0,13.0,188.0,12.0,3.0,15.0,1.0,13.0,1.0,131.0,33.0,9.0,9.0,2.0,8.0,22.0,38.0,3.0,119.0,0.0,39.0,2.0,12.0,2.0,2.0,3.0,19.0,923.0,7.0,828.0,12.0,13.0,4.0,6.0,9.0,1.0,1.0,1.0,2.0,33.0,2.0,166.0,2.0,0.0,29.0,11.0,3.0,10.0,1.0,14.0,2.0,16.0,12.0,184.0,374.0,27.0,45.0,6.0,2.0,4.0,6.0,20.0,4.0,1.0,19.0,3.0,2.0,2.0 +84.0,2293.0,3.0,8.0,24.0,2991.0,162.0,21.0,35.0,9.0,20.0,8.0,10.0,1.0,133.0,13.0,1.0,20.0,42.0,5.0,0.0,5.0,51.0,21.0,23.0,2.0,17.0,39.0,39.0,4.0,82.0,8.0,59.0,3.0,9.0,7.0,3.0,5.0,13.0,915.0,12.0,927.0,16.0,19.0,6.0,10.0,10.0,3.0,0.0,4.0,10.0,23.0,0.0,144.0,6.0,3.0,33.0,66.0,5.0,13.0,3.0,42.0,1.0,27.0,9.0,11.0,704.0,14.0,53.0,1.0,3.0,5.0,2.0,25.0,2.0,3.0,45.0,2.0,9.0,1.0 +78.0,1863.0,14.0,4.0,21.0,2218.0,119.0,19.0,18.0,20.0,24.0,8.0,4.0,3.0,97.0,6.0,4.0,14.0,85.0,6.0,2.0,2.0,49.0,12.0,17.0,0.0,15.0,45.0,49.0,6.0,46.0,9.0,105.0,3.0,9.0,6.0,6.0,4.0,11.0,722.0,12.0,1293.0,11.0,17.0,12.0,25.0,15.0,0.0,3.0,5.0,11.0,36.0,5.0,123.0,6.0,3.0,26.0,81.0,4.0,23.0,3.0,35.0,3.0,28.0,19.0,100.0,842.0,27.0,18.0,5.0,1.0,4.0,4.0,12.0,3.0,3.0,44.0,2.0,10.0,4.0 +74.0,1942.0,5.0,8.0,52.0,2025.0,101.0,135.0,193.0,16.0,16.0,15.0,19.0,7.0,77.0,9.0,5.0,108.0,47.0,20.0,4.0,4.0,589.0,27.0,46.0,6.0,48.0,96.0,63.0,80.0,75.0,26.0,17.0,10.0,325.0,13.0,4.0,11.0,17.0,586.0,17.0,1216.0,30.0,11.0,11.0,34.0,4.0,3.0,2.0,4.0,15.0,7.0,4.0,66.0,12.0,7.0,51.0,14.0,16.0,49.0,4.0,18.0,3.0,36.0,12.0,8.0,244.0,12.0,83.0,16.0,21.0,8.0,4.0,29.0,10.0,6.0,17.0,4.0,10.0,3.0 +100.0,2693.0,7.0,7.0,39.0,5588.0,252.0,514.0,128.0,12.0,45.0,10.0,12.0,4.0,382.0,47.0,3.0,111.0,28.0,10.0,4.0,5.0,216.0,26.0,40.0,0.0,32.0,67.0,82.0,129.0,367.0,16.0,14.0,7.0,603.0,15.0,6.0,9.0,23.0,1837.0,22.0,2009.0,30.0,8.0,10.0,29.0,12.0,1.0,5.0,2.0,75.0,11.0,1.0,282.0,13.0,3.0,175.0,35.0,15.0,23.0,1.0,38.0,3.0,20.0,19.0,8.0,234.0,41.0,156.0,16.0,52.0,27.0,7.0,17.0,1.0,0.0,44.0,5.0,5.0,6.0 +41.0,1042.0,2.0,4.0,31.0,2167.0,100.0,92.0,128.0,24.0,12.0,4.0,8.0,5.0,70.0,8.0,3.0,27.0,336.0,8.0,2.0,4.0,229.0,12.0,11.0,4.0,15.0,66.0,39.0,161.0,114.0,3.0,52.0,5.0,428.0,4.0,5.0,6.0,14.0,611.0,7.0,844.0,13.0,3.0,4.0,13.0,3.0,2.0,2.0,0.0,26.0,2.0,1.0,66.0,10.0,3.0,49.0,26.0,4.0,10.0,1.0,6.0,2.0,26.0,4.0,4.0,1193.0,13.0,104.0,4.0,28.0,37.0,3.0,8.0,1.0,0.0,13.0,0.0,6.0,5.0 +40.0,984.0,8.0,5.0,26.0,2274.0,104.0,28.0,132.0,11.0,1.0,4.0,7.0,4.0,149.0,18.0,2.0,83.0,110.0,5.0,0.0,8.0,348.0,15.0,37.0,4.0,24.0,66.0,38.0,104.0,105.0,9.0,13.0,3.0,426.0,6.0,5.0,6.0,12.0,650.0,6.0,1129.0,10.0,3.0,12.0,28.0,23.0,3.0,2.0,7.0,37.0,0.0,4.0,117.0,7.0,2.0,50.0,45.0,13.0,36.0,0.0,14.0,0.0,13.0,5.0,1.0,227.0,9.0,41.0,8.0,22.0,18.0,5.0,5.0,6.0,1.0,35.0,0.0,6.0,3.0 +64.0,1200.0,11.0,9.0,60.0,1778.0,96.0,121.0,144.0,37.0,15.0,4.0,8.0,7.0,50.0,14.0,8.0,64.0,394.0,10.0,1.0,9.0,215.0,12.0,35.0,1.0,22.0,72.0,43.0,121.0,111.0,8.0,133.0,4.0,502.0,6.0,2.0,5.0,7.0,550.0,11.0,1076.0,17.0,6.0,6.0,25.0,5.0,3.0,7.0,2.0,27.0,6.0,2.0,44.0,10.0,5.0,52.0,39.0,2.0,23.0,4.0,14.0,2.0,20.0,10.0,1.0,524.0,7.0,95.0,17.0,29.0,36.0,4.0,21.0,6.0,1.0,16.0,2.0,5.0,6.0 +50.0,598.0,5.0,6.0,16.0,2082.0,125.0,24.0,28.0,26.0,9.0,4.0,22.0,9.0,37.0,3.0,3.0,173.0,14.0,163.0,27.0,7.0,48.0,16.0,22.0,2.0,42.0,37.0,877.0,6.0,13.0,294.0,51.0,3.0,16.0,11.0,1.0,6.0,12.0,531.0,12.0,925.0,10.0,10.0,36.0,17.0,3.0,4.0,10.0,3.0,14.0,4.0,0.0,39.0,19.0,6.0,25.0,4.0,6.0,945.0,4.0,36.0,2.0,1150.0,0.0,4.0,27.0,22.0,68.0,688.0,1.0,42.0,4.0,811.0,33.0,1.0,20.0,3.0,4.0,152.0 +10.0,60.0,2.0,2.0,21.0,2074.0,97.0,15.0,13.0,99.0,67.0,2.0,4.0,3.0,95.0,16.0,3.0,13.0,11.0,6.0,1.0,28.0,29.0,9.0,7.0,2.0,10.0,22.0,23.0,3.0,3.0,10.0,69.0,1.0,8.0,6.0,2.0,3.0,14.0,562.0,4.0,537.0,1.0,11.0,7.0,7.0,4.0,3.0,2.0,0.0,5.0,17.0,0.0,87.0,3.0,2.0,19.0,53.0,3.0,7.0,2.0,15.0,2.0,22.0,6.0,142.0,405.0,31.0,43.0,8.0,0.0,3.0,3.0,17.0,2.0,0.0,17.0,0.0,11.0,2.0 +89.0,2814.0,2.0,9.0,42.0,3573.0,136.0,288.0,95.0,11.0,34.0,9.0,9.0,2.0,328.0,29.0,5.0,50.0,51.0,20.0,0.0,636.0,164.0,24.0,36.0,7.0,19.0,59.0,77.0,130.0,182.0,10.0,8.0,8.0,6.0,9.0,4.0,7.0,27.0,1584.0,27.0,1428.0,21.0,10.0,6.0,33.0,88.0,3.0,3.0,5.0,78.0,28.0,1.0,326.0,17.0,2.0,58.0,34.0,13.0,14.0,1.0,55.0,4.0,13.0,15.0,52.0,246.0,28.0,71.0,16.0,9.0,10.0,5.0,13.0,5.0,1.0,50.0,1.0,2.0,5.0 +59.0,1365.0,4.0,10.0,11.0,1850.0,63.0,49.0,119.0,5.0,9.0,7.0,4.0,5.0,75.0,6.0,3.0,46.0,12.0,6.0,2.0,5.0,167.0,5.0,24.0,3.0,14.0,27.0,44.0,36.0,72.0,4.0,14.0,4.0,289.0,7.0,0.0,5.0,10.0,600.0,14.0,1018.0,6.0,2.0,2.0,13.0,2.0,2.0,0.0,0.0,18.0,2.0,0.0,58.0,4.0,3.0,31.0,1.0,6.0,12.0,0.0,11.0,2.0,11.0,21.0,5.0,127.0,5.0,64.0,10.0,21.0,4.0,2.0,6.0,1.0,0.0,14.0,2.0,2.0,4.0 +63.0,1446.0,4.0,11.0,26.0,3491.0,156.0,37.0,234.0,4.0,12.0,12.0,2.0,5.0,160.0,16.0,2.0,237.0,32.0,7.0,1.0,2.0,88.0,17.0,24.0,4.0,10.0,69.0,67.0,146.0,127.0,6.0,15.0,7.0,467.0,5.0,5.0,7.0,12.0,1144.0,12.0,1582.0,17.0,2.0,10.0,22.0,2.0,4.0,1.0,1.0,33.0,3.0,1.0,133.0,18.0,3.0,35.0,34.0,6.0,24.0,2.0,17.0,4.0,9.0,10.0,6.0,37.0,11.0,74.0,7.0,62.0,30.0,2.0,16.0,1.0,4.0,23.0,0.0,2.0,3.0 +60.0,1217.0,9.0,5.0,26.0,2914.0,160.0,86.0,47.0,2.0,6.0,4.0,18.0,3.0,141.0,42.0,6.0,146.0,7.0,8.0,2.0,1.0,262.0,16.0,32.0,4.0,15.0,41.0,60.0,79.0,219.0,8.0,12.0,5.0,436.0,9.0,2.0,3.0,13.0,896.0,18.0,1068.0,11.0,3.0,9.0,16.0,27.0,1.0,3.0,2.0,48.0,7.0,1.0,130.0,8.0,4.0,47.0,41.0,13.0,21.0,4.0,9.0,4.0,25.0,14.0,14.0,258.0,32.0,66.0,6.0,44.0,20.0,1.0,15.0,1.0,0.0,86.0,4.0,5.0,8.0 +40.0,959.0,5.0,5.0,19.0,1856.0,78.0,19.0,132.0,18.0,4.0,0.0,5.0,2.0,110.0,12.0,0.0,40.0,235.0,3.0,2.0,1.0,491.0,12.0,10.0,2.0,9.0,34.0,27.0,62.0,67.0,4.0,6.0,4.0,289.0,3.0,4.0,4.0,11.0,503.0,7.0,949.0,15.0,2.0,3.0,18.0,11.0,2.0,4.0,4.0,24.0,2.0,1.0,82.0,9.0,1.0,35.0,19.0,3.0,13.0,0.0,10.0,0.0,7.0,6.0,1.0,165.0,9.0,27.0,9.0,17.0,14.0,3.0,3.0,1.0,1.0,14.0,0.0,7.0,2.0 +44.0,1149.0,8.0,4.0,41.0,1823.0,82.0,175.0,140.0,12.0,13.0,6.0,3.0,2.0,74.0,6.0,2.0,113.0,295.0,8.0,1.0,5.0,207.0,16.0,24.0,0.0,14.0,61.0,40.0,57.0,116.0,6.0,11.0,3.0,343.0,9.0,3.0,11.0,9.0,530.0,12.0,1019.0,9.0,4.0,9.0,24.0,1.0,0.0,3.0,2.0,39.0,4.0,2.0,68.0,6.0,6.0,58.0,21.0,9.0,21.0,1.0,6.0,3.0,16.0,9.0,5.0,477.0,16.0,92.0,5.0,42.0,44.0,4.0,12.0,3.0,1.0,29.0,2.0,1.0,0.0 +85.0,2379.0,5.0,8.0,35.0,2544.0,94.0,29.0,44.0,2.0,7.0,2.0,7.0,2.0,271.0,22.0,6.0,298.0,4.0,8.0,1.0,7.0,224.0,13.0,14.0,4.0,11.0,52.0,50.0,41.0,155.0,7.0,16.0,4.0,264.0,1.0,11.0,3.0,18.0,911.0,22.0,1438.0,11.0,7.0,3.0,32.0,3.0,0.0,3.0,2.0,93.0,1.0,1.0,230.0,8.0,1.0,62.0,38.0,5.0,25.0,5.0,9.0,2.0,10.0,7.0,5.0,283.0,12.0,64.0,3.0,155.0,8.0,3.0,10.0,1.0,2.0,3.0,0.0,7.0,2.0 +133.0,3539.0,3.0,12.0,255.0,5625.0,374.0,32.0,51.0,38.0,11.0,13.0,12.0,57.0,236.0,29.0,4.0,80.0,5.0,21.0,1.0,11.0,47.0,37.0,36.0,10.0,117.0,66.0,1426.0,7.0,23.0,8.0,17.0,23.0,21.0,8.0,9.0,12.0,25.0,1971.0,1235.0,726.0,27.0,7.0,59.0,53.0,5.0,51.0,2.0,4.0,6.0,16.0,3.0,317.0,15.0,4.0,70.0,7.0,6.0,19.0,13.0,22.0,20.0,41.0,20.0,69.0,37.0,41.0,45.0,11.0,5.0,135.0,8.0,103.0,1.0,48.0,89.0,2.0,7.0,28.0 +76.0,2512.0,3.0,8.0,32.0,1712.0,100.0,184.0,71.0,3.0,21.0,4.0,8.0,1.0,89.0,28.0,1.0,83.0,12.0,8.0,5.0,2.0,100.0,260.0,23.0,2.0,14.0,31.0,34.0,67.0,163.0,11.0,7.0,3.0,428.0,10.0,7.0,5.0,13.0,885.0,17.0,1068.0,10.0,3.0,5.0,12.0,4.0,1.0,0.0,1.0,31.0,5.0,3.0,77.0,7.0,3.0,90.0,84.0,4.0,21.0,1.0,22.0,2.0,17.0,18.0,7.0,175.0,39.0,58.0,14.0,41.0,52.0,1.0,8.0,2.0,2.0,13.0,2.0,6.0,1.0 +43.0,947.0,0.0,6.0,24.0,1639.0,100.0,24.0,142.0,13.0,6.0,1.0,7.0,4.0,60.0,11.0,1.0,123.0,76.0,3.0,1.0,0.0,155.0,12.0,11.0,0.0,21.0,49.0,14.0,97.0,75.0,5.0,7.0,1.0,344.0,5.0,7.0,2.0,4.0,402.0,6.0,1038.0,8.0,2.0,3.0,16.0,1.0,0.0,2.0,3.0,47.0,3.0,2.0,64.0,8.0,3.0,33.0,28.0,4.0,14.0,3.0,13.0,0.0,12.0,9.0,2.0,405.0,14.0,81.0,4.0,16.0,11.0,2.0,12.0,0.0,1.0,17.0,3.0,3.0,2.0 +20.0,430.0,6.0,3.0,16.0,2701.0,117.0,11.0,9.0,33.0,63.0,10.0,6.0,6.0,147.0,16.0,2.0,14.0,17.0,9.0,0.0,143.0,70.0,6.0,12.0,4.0,10.0,32.0,50.0,5.0,148.0,5.0,62.0,4.0,8.0,6.0,3.0,2.0,12.0,813.0,8.0,1202.0,10.0,5.0,4.0,8.0,2.0,2.0,2.0,2.0,4.0,22.0,1.0,160.0,3.0,5.0,18.0,36.0,3.0,18.0,3.0,25.0,3.0,25.0,7.0,8.0,322.0,18.0,39.0,6.0,1.0,3.0,4.0,26.0,2.0,0.0,29.0,2.0,7.0,2.0 +61.0,1357.0,9.0,9.0,23.0,3180.0,147.0,24.0,29.0,4.0,2.0,8.0,11.0,3.0,304.0,14.0,1.0,17.0,10.0,33.0,7.0,1111.0,40.0,10.0,29.0,4.0,16.0,46.0,154.0,59.0,202.0,10.0,159.0,4.0,12.0,16.0,8.0,9.0,13.0,1037.0,13.0,1489.0,11.0,12.0,9.0,24.0,13.0,3.0,2.0,5.0,13.0,31.0,1.0,241.0,6.0,5.0,25.0,30.0,11.0,27.0,5.0,30.0,3.0,35.0,17.0,9.0,90.0,13.0,27.0,13.0,12.0,6.0,6.0,34.0,1.0,5.0,57.0,2.0,7.0,4.0 +42.0,979.0,3.0,6.0,13.0,1482.0,76.0,50.0,95.0,8.0,6.0,11.0,2.0,1.0,62.0,2.0,0.0,45.0,300.0,8.0,3.0,3.0,113.0,13.0,11.0,3.0,12.0,52.0,26.0,146.0,86.0,4.0,58.0,1.0,432.0,5.0,5.0,4.0,8.0,408.0,5.0,770.0,14.0,1.0,5.0,7.0,4.0,2.0,0.0,3.0,21.0,4.0,2.0,58.0,3.0,1.0,62.0,22.0,4.0,12.0,3.0,11.0,0.0,20.0,13.0,3.0,345.0,17.0,84.0,8.0,27.0,24.0,4.0,7.0,2.0,0.0,15.0,0.0,2.0,6.0 +49.0,1327.0,11.0,3.0,29.0,3800.0,195.0,23.0,28.0,12.0,69.0,10.0,10.0,1.0,213.0,25.0,5.0,34.0,184.0,8.0,2.0,156.0,179.0,17.0,31.0,9.0,22.0,57.0,84.0,5.0,138.0,8.0,281.0,6.0,21.0,12.0,7.0,11.0,19.0,1064.0,13.0,1236.0,16.0,19.0,12.0,17.0,8.0,3.0,6.0,6.0,18.0,28.0,3.0,233.0,11.0,5.0,43.0,73.0,8.0,21.0,2.0,36.0,3.0,40.0,19.0,205.0,238.0,29.0,63.0,17.0,4.0,5.0,8.0,25.0,3.0,2.0,68.0,5.0,10.0,3.0 +82.0,2517.0,7.0,14.0,55.0,4523.0,179.0,48.0,156.0,4.0,6.0,8.0,5.0,5.0,266.0,24.0,5.0,263.0,4.0,4.0,1.0,5.0,241.0,27.0,40.0,2.0,28.0,68.0,59.0,140.0,124.0,9.0,18.0,8.0,465.0,4.0,6.0,9.0,17.0,1487.0,19.0,1491.0,16.0,6.0,5.0,33.0,6.0,2.0,5.0,4.0,39.0,5.0,2.0,208.0,12.0,3.0,48.0,33.0,6.0,34.0,3.0,15.0,4.0,14.0,17.0,10.0,30.0,16.0,70.0,7.0,17.0,9.0,5.0,19.0,1.0,2.0,39.0,2.0,7.0,7.0 +44.0,1100.0,4.0,4.0,17.0,1585.0,84.0,47.0,124.0,3.0,8.0,3.0,6.0,2.0,49.0,9.0,1.0,9.0,320.0,15.0,1.0,612.0,65.0,14.0,13.0,3.0,17.0,31.0,41.0,58.0,86.0,7.0,131.0,5.0,10.0,10.0,3.0,4.0,12.0,527.0,12.0,693.0,12.0,2.0,8.0,9.0,6.0,7.0,1.0,3.0,23.0,2.0,3.0,54.0,7.0,5.0,37.0,26.0,6.0,15.0,3.0,10.0,3.0,12.0,9.0,3.0,247.0,10.0,22.0,6.0,15.0,47.0,3.0,13.0,3.0,3.0,17.0,0.0,9.0,11.0 +94.0,2112.0,3.0,6.0,33.0,3484.0,169.0,65.0,29.0,2.0,9.0,5.0,10.0,2.0,103.0,15.0,4.0,247.0,7.0,3.0,1.0,4.0,132.0,15.0,23.0,6.0,17.0,38.0,49.0,28.0,108.0,10.0,13.0,4.0,260.0,7.0,7.0,10.0,13.0,1072.0,13.0,1123.0,13.0,6.0,2.0,39.0,1.0,3.0,1.0,3.0,45.0,2.0,7.0,108.0,11.0,1.0,38.0,28.0,8.0,27.0,2.0,13.0,4.0,31.0,15.0,11.0,250.0,40.0,67.0,14.0,58.0,18.0,4.0,8.0,2.0,2.0,4.0,3.0,5.0,2.0 +123.0,3062.0,17.0,26.0,361.0,4248.0,232.0,78.0,96.0,94.0,18.0,25.0,27.0,61.0,207.0,34.0,11.0,150.0,16.0,70.0,11.0,11.0,90.0,30.0,63.0,15.0,89.0,91.0,445.0,18.0,30.0,37.0,36.0,31.0,47.0,19.0,15.0,26.0,29.0,1303.0,980.0,437.0,56.0,16.0,78.0,56.0,11.0,24.0,6.0,6.0,10.0,24.0,10.0,205.0,35.0,11.0,58.0,16.0,30.0,60.0,39.0,55.0,65.0,48.0,17.0,97.0,104.0,36.0,63.0,37.0,12.0,258.0,13.0,220.0,15.0,70.0,35.0,9.0,10.0,104.0 +51.0,743.0,6.0,2.0,40.0,1525.0,79.0,47.0,23.0,55.0,7.0,6.0,7.0,1.0,38.0,6.0,3.0,255.0,3.0,27.0,10.0,7.0,9.0,8.0,22.0,3.0,43.0,42.0,290.0,8.0,13.0,311.0,66.0,4.0,22.0,19.0,6.0,2.0,14.0,476.0,15.0,483.0,10.0,3.0,26.0,11.0,4.0,2.0,4.0,3.0,14.0,5.0,1.0,39.0,9.0,5.0,16.0,5.0,10.0,322.0,6.0,58.0,1.0,545.0,8.0,5.0,39.0,18.0,43.0,485.0,3.0,20.0,5.0,155.0,12.0,2.0,29.0,1.0,6.0,149.0 +53.0,1397.0,4.0,7.0,27.0,3092.0,147.0,43.0,112.0,6.0,9.0,4.0,2.0,4.0,92.0,7.0,0.0,71.0,4.0,5.0,0.0,6.0,198.0,19.0,22.0,3.0,18.0,37.0,125.0,56.0,108.0,4.0,12.0,4.0,321.0,3.0,2.0,3.0,18.0,1364.0,12.0,959.0,11.0,2.0,8.0,14.0,3.0,1.0,3.0,5.0,46.0,4.0,0.0,83.0,8.0,1.0,31.0,18.0,3.0,16.0,4.0,29.0,2.0,8.0,7.0,3.0,70.0,14.0,45.0,7.0,22.0,11.0,0.0,13.0,3.0,1.0,36.0,2.0,3.0,1.0 +44.0,1609.0,5.0,10.0,30.0,3511.0,158.0,29.0,24.0,3.0,10.0,8.0,18.0,2.0,212.0,25.0,2.0,20.0,116.0,32.0,4.0,1234.0,66.0,10.0,27.0,2.0,13.0,45.0,62.0,85.0,159.0,4.0,16.0,3.0,6.0,7.0,4.0,9.0,16.0,1242.0,18.0,1677.0,13.0,6.0,5.0,16.0,5.0,1.0,4.0,2.0,28.0,21.0,5.0,221.0,5.0,1.0,40.0,95.0,13.0,22.0,3.0,13.0,2.0,31.0,27.0,4.0,234.0,22.0,29.0,5.0,56.0,10.0,6.0,5.0,0.0,0.0,49.0,0.0,7.0,1.0 +65.0,1587.0,8.0,10.0,30.0,3294.0,203.0,15.0,15.0,5.0,31.0,8.0,8.0,4.0,166.0,14.0,2.0,12.0,89.0,10.0,5.0,8.0,46.0,15.0,19.0,4.0,18.0,28.0,88.0,9.0,161.0,10.0,133.0,3.0,10.0,6.0,5.0,4.0,15.0,978.0,17.0,1192.0,9.0,5.0,3.0,23.0,17.0,2.0,2.0,3.0,9.0,30.0,3.0,214.0,13.0,2.0,40.0,74.0,5.0,19.0,0.0,33.0,1.0,25.0,12.0,8.0,369.0,23.0,36.0,6.0,3.0,6.0,7.0,26.0,0.0,2.0,35.0,5.0,13.0,7.0 +31.0,748.0,4.0,2.0,16.0,1335.0,58.0,49.0,112.0,86.0,10.0,0.0,3.0,2.0,34.0,3.0,4.0,29.0,359.0,6.0,0.0,4.0,137.0,11.0,11.0,1.0,18.0,45.0,21.0,53.0,59.0,5.0,60.0,4.0,259.0,2.0,6.0,5.0,7.0,380.0,6.0,931.0,6.0,2.0,1.0,3.0,0.0,2.0,0.0,1.0,29.0,1.0,1.0,42.0,4.0,0.0,38.0,25.0,1.0,10.0,4.0,10.0,1.0,12.0,2.0,2.0,342.0,13.0,65.0,7.0,51.0,31.0,0.0,13.0,3.0,1.0,9.0,1.0,5.0,2.0 +40.0,1160.0,1.0,5.0,22.0,1592.0,74.0,70.0,127.0,13.0,7.0,4.0,1.0,3.0,49.0,9.0,2.0,66.0,68.0,3.0,2.0,1.0,368.0,10.0,20.0,3.0,8.0,41.0,32.0,79.0,122.0,4.0,9.0,1.0,357.0,9.0,8.0,5.0,10.0,499.0,9.0,1089.0,11.0,3.0,4.0,18.0,4.0,1.0,3.0,1.0,31.0,4.0,2.0,42.0,7.0,0.0,54.0,3.0,7.0,26.0,4.0,12.0,1.0,20.0,9.0,4.0,212.0,15.0,84.0,5.0,41.0,75.0,1.0,8.0,5.0,0.0,13.0,2.0,4.0,1.0 diff --git a/tests/data/dsb_normalization_test_output.csv b/tests/data/dsb_normalization_test_output.csv new file mode 100644 index 00000000..2502d563 --- /dev/null +++ b/tests/data/dsb_normalization_test_output.csv @@ -0,0 +1,101 @@ +CD274,CD44,CD25,CD279,CD41,HLA-ABC,CD54,CD26,CD27,CD38,CD16,CD52,CD53,CD11c,CD11a,CD127,CD29,CD82,CD45RB,CD40,CD19,CD8,CD59,TCRb,mIgG2a,CD11b,CD86,CD197,HLA-DR,CD3E,CD2,CD20,CD45RA,CD14,CD4,mIgG2b,mIgG1,CD9,CD69,B2M,CD36,CD45,CD152,CD337,CD1d,CD84,CD161,CD163,CD200,CD137,CD229,CD244,CD154,CD18,CD71,ACTB,CD48,CD43,CD150,CD22,CD62P,CD50,CD33,CD37,CD162,CD328,CD7,CD102,CD47,CD72,CD5,CD55,CD278,CD32,CD268,CD64,CD49D,CD158,CD314,CD35 +0.4145775259275868,0.7944083634977932,-0.02559166400343489,-0.304371816428335,0.13858980267672316,0.3812236715382944,0.26814718938697135,2.0972155176366227,0.3546950757947451,-0.39016730125313304,1.1893613991457321,0.529099047437539,0.8512124686912179,0.5628501707582128,0.2877605285779199,0.7211954566212335,-0.6180836223220725,1.6264157801973904,1.9786143010820931,0.38096085250057576,-1.0904745105879126,-0.17588450689621823,1.7215615198728467,-0.3005533939115807,0.7596114900286557,2.1660372018733067,0.15371635733612105,0.5040756463301588,0.06405339219634609,3.0709121357239315,-0.3529286101277525,0.749171504905618,-0.11697175589184193,0.688330231964634,-0.3840859517762445,-0.7965861648240466,0.4501485285585228,0.5188432746413509,0.39969960792368353,0.5319475986739446,0.0358938998363042,0.3198511224697921,0.37442102941419036,0.22700640921041992,-0.39915856749575446,0.5211141595132479,2.2750777479008533,0.32248998841362475,0.16240305903846686,0.017390571828950513,1.4898166594817062,-0.2320176123523523,0.5752077169324922,0.3444528152085416,0.7116401734021862,1.3350521873286698,0.8473782882056329,0.9521942183259962,-0.03613505200313921,0.2086284014692677,0.44682383100249523,0.5858310872953312,0.7161817939618909,0.12336222030445454,0.004022350100257158,0.41143879087193114,1.4981508177292906,0.5270401448545774,1.0874928392233245,-0.2834443842593533,1.7124755256310602,1.3713228766905503,-0.01952182449493514,0.6559279790655812,0.6253093845173344,0.3061046798514644,0.5058747982857617,-0.12657794151658852,1.0370638142596662,-0.564698464051645 +-0.3255038567272973,-0.8627165762962493,0.4027315226288707,-0.12661765813128345,-0.7431107306520941,0.8718869699532387,0.6510699381108134,0.7280830314665976,0.33109561920271335,0.6261341969171634,1.0168894084820033,-0.16936582152940072,0.8891783364046886,-0.03682938203515507,-0.48343749709896056,-0.008819792012668692,0.17493989421064038,2.5964230515507385,4.1502754622023454,0.46637274447148114,1.2727704133442452,1.588913394205012,-0.1020872604203267,-0.0009621997578846964,-0.012752201575895183,1.5958312391288794,0.009407948169548819,0.17056147425550883,1.1669931360634052,0.5082026493240606,1.2256149403223016,2.077199651464183,3.221347553757679,-0.23564875396240348,1.187611370711576,0.33402395803161733,0.45328136818858766,-0.041515507402793306,0.7199384113125721,1.1223015246761268,-0.9832393947604627,0.7429861825572611,-0.061630938859622786,0.4232019190580619,-0.3254328949530447,0.5983139090219769,0.36035550688752815,-0.0822834649041948,0.3447275741441448,0.4805362281529604,1.3254756134145071,0.26626566100013416,0.4882943473129683,-0.14619036042824363,0.1331514891982195,0.668695791534687,0.4343340148522446,0.38319193267439,0.2187755589287308,2.450923182593063,-0.015306431084362915,0.051355553905065854,-0.6262131450779966,2.2770858107153265,0.38005241085234454,0.5546186309924163,1.3992109596340474,-0.3218023364666792,0.8094689515900391,2.5283173150555367,0.9954999615693072,0.31266175673415986,1.1741239137463992,2.587942838888255,0.7666936274581022,-0.7722171399061286,-0.16812242869477345,0.5621341751911414,1.317895046036622,0.20831410064538813 +0.13566383630358195,0.7479934106851104,0.25487530270388703,-0.17107205921056332,-0.15676548599628637,-0.522836852721346,-0.7846917139147963,0.6980097683146568,1.4834329455043316,1.4399545658800461,-0.48310011858081153,-0.1932907670053632,-0.020083162674778027,0.32377453730972944,-0.44871819172018473,0.22051002379993417,0.08490553078649898,0.23931633516343775,3.2454733540709646,-0.14346820825364676,0.4694496205762673,-0.8197308643973347,0.8393102596345482,-0.38858903137903156,0.18201110648025676,1.2769421273622896,-0.05185530981132369,0.04227257178635532,-0.6680621348587581,2.9543720903849557,0.9351222504031835,-0.5120824158292259,2.5815615855627163,-0.5344900513044006,3.0284006025275705,0.5034366135056165,0.34077219988963237,0.3600568192741014,-0.403335950260858,-0.49194220077053596,0.2290721693430937,0.12887200080100072,0.0067435232461371675,0.0939800155572666,0.4996474184907759,-0.05080030259508861,-0.6466138273824434,-0.1784869262042008,0.22171250830820177,0.6150546243300472,0.6541250937303208,0.2758117451321194,-0.2732945194487042,-0.311299989065573,0.7318711220864997,0.9700100097391309,0.853768851872279,0.710844144870698,-0.4745323436988266,0.21427107402667173,0.7070793966669671,0.03396829923485567,0.3660772522137144,0.473347959974111,0.3728118744338331,-0.031172164944305247,2.0380478839347074,0.13319833967602773,0.9483218708150644,0.03450075178575002,2.1924495906514383,2.0960408539246256,0.7007109216697964,0.22832202360541193,-0.12205656137550067,0.15752557266537187,-0.10215054219561753,1.5516035702744666,0.08190331640423773,1.5819840401231424 +0.5067849046140438,0.9594766741906922,-0.6959553285390874,0.34464723655709817,-0.11142498902839162,-0.16915001455920278,-0.32181849857324785,1.302323614739546,1.418248301624643,1.3011179569809272,0.8122067287241528,0.04805898134927217,-0.2866350945669851,0.49099854227736184,0.06710181260256162,-0.09833998917146766,0.04826502836026483,2.3253816189508814,3.7141218246254417,0.13078912913027632,0.7003204941745078,-0.1601355897353329,1.3216209918774673,-0.23148894562552066,0.486848123277566,1.5258465668223073,0.049678871421975246,0.6570108205513177,0.06955683095240983,3.0942410461535,1.4411477484232997,0.2508990720951128,2.1630039059718094,0.11104462728304651,3.3571848903527917,0.23303592376698898,0.29636044324746225,-0.5340644401754261,0.253410542380211,0.010919205608321741,0.1328952449739247,0.8106985073449122,-0.13412299910028444,-0.22725326576563346,0.32110876345970246,0.3355667999061154,0.23556624001934506,-0.22963340389076323,0.17898001691073345,0.9823450178800309,0.9479374955414743,0.017608738466387996,0.38905125822754594,-0.01814188051033698,0.1474886949802239,1.6227506001111123,1.214342115505937,1.1761072900139016,0.6790837834744796,0.0026307424482721053,0.6475481190572108,0.2514527525278434,-0.7937650892989504,-0.0514378420179889,0.5061865951762269,0.40797757768339615,2.0973996154540147,-0.596808716638941,1.2002770472225748,0.114067593515845,2.3090047531919167,1.5865577128424324,1.3550940271920557,0.13497108200476077,1.2209813211809657,0.09046125249025116,-0.010051746748514667,1.515657259271809,1.032090985745316,0.612872439045591 +-0.010461056558201953,0.40773526560214235,0.204087749762735,-0.46732863194853547,-0.6620476249969663,-0.15897853555047523,0.04329720055788132,0.1415123725289945,1.662588252685923,-0.38922635188998755,0.26325489947448316,0.5926255665612086,0.3801017007825763,-1.4399197555948269,-0.042721946432927205,-0.12337319380310902,0.12530156428308292,0.5466267931762762,3.460725093592488,1.0853032712074109,-0.31943316476138217,5.068615737745916,1.0954321790459285,-0.31492144960692614,0.2841430671489857,1.862530496131666,-0.18389293671377724,0.43181260979930386,-0.24461937809198164,1.9966402533489565,1.7351145221717048,-0.1003027223149251,2.728368693348464,-0.16267872145308482,-0.11782484385968742,0.5209713410995358,0.22335967401933987,-0.5155691791613369,0.1619267304508717,0.2079287297695238,-0.4200240245212369,0.4184011181786546,-1.312316259096063,0.7838342906551857,0.08960892380355265,0.0541486316341518,0.039464692732795945,0.16947367021751225,-0.06668824584742414,-0.33573296305409045,1.3472771482243626,-0.4716294616013409,0.905121772075758,0.061523233293449386,0.24324083003892596,0.004159537094595156,1.098217123872089,1.1571321972490545,-0.12124139881930872,0.3157240220942801,-0.38784321979744263,0.26170357668829297,-0.0471631847434594,0.06902897396719573,0.3866725585344095,-0.0570828894490808,2.0950484618270395,0.34396408376566384,0.17157073327008093,-0.0633990142710717,1.6628657752162974,2.1284908375533407,0.033627824312443474,-1.007837471032928,0.6846185939349398,0.621200510727303,0.19804015973605638,-0.07729174537093893,0.16278593602418395,0.41099367158630584 +0.37362920754528967,0.8985909529825078,0.7989883511002668,0.4346833679134521,-0.12386307643082275,0.33382127568419756,0.3127780948011862,-0.3563914001724699,-0.03490046582934951,0.39900777716565433,0.26196153434737574,0.5775545026421214,1.5897571742315735,0.15132854356736855,-0.4687897067307894,-0.1335115590362586,0.6729988619451617,3.125190156765745,3.9937596621688165,1.9013139181256205,2.1469938333811176,0.44699154548962394,-0.19651226948463554,0.24145068049645224,0.6419745799488559,1.6957661562552289,0.5207316315214304,0.25330142272352096,2.2694254289988502,-0.3978685464076964,-0.12258676910024018,3.239566522375525,2.5719636006086635,0.22729890411328763,0.11040062804724954,-0.1875477286912246,0.026591779033722326,-0.12533487274353486,-0.43770041741890214,0.4201647842064844,0.2418385485221542,0.17201177425225644,-0.14847991396069385,0.8682308712970968,0.4375710038942282,0.7313729507057386,0.02836911281956539,0.15283664953117368,0.4302372742258882,-1.0412976852420566,0.8520460235507435,0.027791957802630066,0.8951026348815085,-0.547596533103499,0.5649498487397691,0.3964811149494891,0.8891224163223803,-0.22484306455647773,0.016529168097384736,2.685176971333176,0.845555304812909,0.9974105832541442,0.44374541439293275,3.3908567107463954,0.30160930070712855,0.3383460094588354,0.06414896179474001,0.026592585779751834,0.3920053627882649,4.081586087574389,0.7974689328957041,2.0794824268275414,1.1196308630877068,3.79675544236364,1.9233110152249249,0.08856008108345131,0.36688444482904,0.6041627527835101,1.4055817536139739,4.892961482284277 +0.09961874488644021,0.8501097361822748,-0.1126556393694978,0.33857429814474727,-0.0073024107927588434,0.09424883084851095,0.06276514115549513,0.6868929604159867,1.7137611487707929,1.221974365077615,-0.09425648395685592,0.7116381726535008,0.13492870714535685,-0.603133526662281,-0.23481419696890496,0.49568356507661526,-0.06826302610295906,1.0531089503132924,3.653451523344798,0.06645802842948484,-0.8666509329177773,-0.9599881389154749,1.3953403701147076,-0.2830454933346823,0.584351853712876,2.095668961148323,0.2720883654885833,0.6835630354364617,-0.12406792282553294,2.4483883245643154,1.3229606975660801,0.11627849649063393,0.8428339747294669,0.18276579474344815,3.466385371276077,0.2005267408277611,-0.06802613843253366,0.6163057497847101,-0.43771897317701924,0.1686700613972575,0.23248818597524262,0.5350715699650349,-0.2790061642691621,0.513341442760816,0.24567026407589737,-0.35074057058912766,-0.09605970384433854,-0.39229491622839213,0.04307756592938029,0.1677905169344166,1.6975339485484708,0.46572468736772615,0.29109333420614675,0.29651175457635115,0.2544619338636086,0.1079508684228047,0.7934274085386165,1.790854670130508,-0.6850387248475251,-0.3198876523192279,0.1705382945217654,-0.05833291971031351,0.397798892590447,-0.21397349329196094,0.5421767145262709,-0.1601508899830643,2.8150177862883092,0.4386450642544818,0.8289512109121531,0.2335430185516983,3.091028653465307,1.855681476823539,1.2318123594173862,0.33056289340208156,0.1025831770200575,-0.12282388926343266,0.08132341655946594,0.7081897662460991,-0.04618791709043013,0.09191581199503364 +-0.08056271919912888,0.5837250177626961,0.37350422693192054,-0.9451657160968989,0.4438750183112468,0.6295566094429348,0.4757612135792877,2.618654001360431,0.5750924902194376,-0.049387993225029694,1.5679558957863928,0.23209663173474113,-0.10012954627634545,0.22065718075133697,1.0805975682152489,1.638941906461472,0.3050213942825111,0.6207426362235389,2.8765939020362232,0.5302629719636212,0.6523701019310413,3.6014009452781033,1.194105314366468,0.4693350681255364,0.4430953247153054,1.8985821647326355,0.1374789093655973,0.20935812175506863,0.5176359377528181,2.2885201174475776,1.8005729373807293,-0.3798823172310406,0.006352564106252449,-0.21682385544252195,-1.0699242520493228,-0.2768541780313918,0.2588755600873046,0.11956235714108598,0.22268724664160394,1.0367581210400527,0.31408323889375606,0.6488494650938365,-0.2779344634821956,0.43757566666580233,-0.017852912992717573,0.40547631777280474,3.016178489586959,0.6434881339435877,0.142912485061395,0.7678028325165902,1.8126288166810731,1.4349364670396136,0.36305393059272895,0.7289437905566981,-0.04496909710419897,0.2023518390166889,1.2300831678152495,0.3988569864835406,0.7318913850851788,0.3421695132120176,0.5973018970138853,0.4818368035982256,-0.15229794912248013,-0.44935608133017324,0.3107060955966143,2.086684044407383,1.7971348758787016,0.9815183314556252,0.5207201326928835,0.6701557576921804,0.33388736464418994,1.3413173305103847,0.9169108522146444,0.14319140447734224,0.20364227509948785,0.03385691174699887,0.3178833656354958,1.1976353991185462,1.1240115860787565,1.2269821738736422 +-0.16098810176634593,0.1377832891897517,0.40932998753242655,0.28082687844142984,0.3261111380638102,-0.7407458160845466,-0.6864244571710667,-0.3413328257513595,0.8877600454163541,2.270982073625054,1.1612368172502054,0.4867489850479656,0.7122776679482377,1.3300690025159698,0.6016954663720496,0.9557520868893059,0.6723021452346325,0.36921401004462506,1.412913301114287,-0.23099572053906003,0.03704711692748841,0.5012203146552874,1.0027341635833216,-0.3511259237855491,0.10960433951435578,2.0364151518807683,0.33046550836980204,-0.08468006852377741,-1.0256707257824922,2.5171744846242747,0.7173664947682759,-0.659340735023703,0.8364556552719444,0.8988626131119364,2.3254316772546915,0.4740585105667958,-0.14272396561663303,0.6483755619675793,-0.2770514042864267,-0.7706458363239943,1.5237243729526058,-0.1144418455046791,-0.20903532625981458,1.2923547160598658,0.7132364045407595,-0.058949509257646415,0.5310180351135998,0.7873648987982931,0.7167689000349458,0.9488572282019838,0.1459850879534076,1.080052572150985,1.357275946173813,0.6054222672135949,0.0299342781175449,1.1300899709289467,0.8799097481179443,1.8599305709160308,0.6028408765463897,-0.6836645657896403,0.3324300363257491,0.46183140912708054,1.1869036876147105,-0.9224634220067895,0.46386230256963157,2.185239035292132,2.232660182482201,0.34208749907714964,0.8463433741624637,-0.27409546618466774,2.1151752544148374,1.8394894490315847,0.9980631101449937,-0.23256717040777497,0.9821807087724048,0.6414079053705759,0.1293221773720894,1.7229058470964533,0.8917207980028699,0.7955812168679723 +-0.20477922490587708,0.7131190707591292,0.24755226163247593,0.22508625238372404,0.39724979138079636,0.018704459144063074,-0.1828305256560922,0.8565342742953536,1.480215754298795,1.3731176904809326,0.12219267693767745,0.08456807149097584,-0.25243002261538994,-1.0743757105404026,0.26447634604805137,0.3316849305182664,0.07713712644694623,1.714170083508439,3.1717677005720053,-0.15665881594776382,0.45740468847967447,-0.13369725363361662,1.2593089262426873,0.11299888844938366,0.30455198446951826,1.2687206153069552,0.48079707224544965,0.6809652814927334,0.22934645854607694,2.964676584532712,1.537687759724663,-0.019133284752017032,0.2615651404144277,-0.13911959644736882,3.008873477567359,0.136742359380017,0.5136777154128437,-0.4971683912415744,-0.09259977876260933,0.2204211783548835,-0.7076096922143529,0.5512892025147739,0.084096187454449,0.310010144856689,-0.10102046216848942,0.4853649729946373,0.26244486845602577,-0.1893308418959422,0.5003345720365675,0.3192788686971475,1.5803164069208364,-0.24244707433426937,1.3296129762066489,0.37693280608350627,-0.1532201969474694,0.2682959507310898,0.6622747320290855,0.907815323739961,0.025616815406082766,0.5161643930288949,0.9176013133228149,-0.6686941580489345,-0.7455168401069598,-0.14822281493620793,0.0472175502690583,0.14460784763425155,2.4046779865895163,-0.16229864796004048,0.8765976223508126,0.30636979294242334,2.222960919513457,0.784567320597823,0.28702717602117345,0.5186849782240704,-0.13122766421347043,0.5487719140705846,-0.11093495142581297,0.15768798510214538,-0.3300583241146668,0.68666143667165 +0.09373575111284588,0.866124338710278,-0.15254641744705674,0.12206902981083673,0.3103983787379209,-0.2775350571874612,-0.3204926239740736,0.8536256007884874,1.7445316831207067,0.48277898255158824,0.5114525048099945,0.3588000920348751,0.34335405729664953,-0.6235168038114889,-0.043819795284419205,0.7178603004054113,-0.3472942381325553,0.8899241876252253,3.5320093039614697,-0.18418828641410995,0.6466205615538081,0.48924956594619246,1.6576753058268776,2.9755873015157652,0.5690761561240985,0.8195334427513421,0.3037578999528025,0.8719116315364454,-0.332286712562221,2.818868172407331,1.5452409094511512,0.03379338393711895,0.7270935960683439,-0.6906469458311678,3.602982986357961,-0.053993633198240354,0.15337741267080057,-0.7518729631400548,-0.6095633918446273,-0.1885482175118935,-0.49993527983382724,0.6078100519285801,0.40368456379949713,-0.07863587311563103,0.07067543558020317,0.34119012143292854,0.049639860108934786,-0.3763294796560637,0.22847918952820429,0.5702228828299658,0.8990741876709821,0.45004817196472874,-0.6366181183954336,0.04853431168437111,-0.3424834002872222,0.4933866616504037,0.8722249530129749,2.322754715064103,0.723235701074437,0.15792019118546008,-0.6882798913331525,-0.23305548324929665,0.15465255357772478,-0.10913242065806605,0.14259484270869147,-0.3951148454087875,3.1742637941830316,0.4716008006415955,0.6235606913118182,0.13556265838657633,2.3757917313608816,1.5456458125652155,1.0907600227808925,-0.38033965034371153,-0.2268311825669594,0.05960326009392414,-0.6649843161269868,0.43444508309778745,0.008146966759333324,-0.9088919010054015 +0.7445767496535511,1.4896393511680426,-0.31344131071514664,-0.2441369153085476,0.07841047131741788,0.32339537126792056,0.25162196377104684,-0.428834061227462,0.8800978956358307,-0.608880561227744,-0.20203624841854245,-0.27041001789915864,-0.6031611903061336,0.4538410930575844,0.23672968438700784,0.3917751452789434,0.7170653088246361,2.4522738622646254,0.4599065860883479,-0.0647021392775019,0.37488848678169884,0.22303493050363116,1.0564387335248913,0.11425268243147632,0.6755463818228037,1.5000795850978068,0.08025014409156347,0.18949858567364886,0.23352200807172113,2.70281123843663,1.6201938529058317,0.8139116935049541,-0.8655880185049243,0.07940704722642758,2.785892841846415,-0.4915127046944512,0.8546363610136016,0.2821201836670361,-0.05845907809865426,0.6561868016073548,0.0689875522824851,0.1959434429132459,-0.2697548169277565,0.5977504699131161,-0.4124093426392217,0.46555876424289405,0.5493726045834181,0.42952793859334715,-0.2548799992908368,0.7746571069156813,0.851338583947727,-0.29336965909903456,0.7740494341389533,0.1515984127005518,-0.44228515690062276,0.6150719550505269,0.9567231588932565,1.7827672773305572,-0.5583500518580161,-0.04927112590383087,-0.08515643578941595,-0.040733272194536735,-0.1413040860766204,-0.3409745313549367,-0.28938257429970904,0.09979369861578716,0.22929183160987066,-0.21583627792988017,0.7079325578171589,-0.08964259381412529,1.027255009963626,0.855204219837186,0.9238709463557627,-0.12772949565004005,-0.887203307856645,-0.6472488623954027,1.6441756735587454,0.7986244552942241,1.1295132859586923,0.03982295652293716 +-0.4304633723288319,-0.15751030814194072,-0.2133044994601518,0.4427419750471328,-0.34368222205513554,0.47189111708555853,0.4587263883182271,-0.34346915193200883,-0.7450666990372631,1.9580584062964503,1.3135686186189282,0.5570621398003965,0.7266596011956981,-0.3003297380554485,1.1646010073928872,1.012764347995701,0.1301449309709028,0.2422144578040058,-0.22252992649514955,0.5211341261304752,1.050419057600967,2.588990928590666,0.055278854017886146,0.46371454967563414,0.1719065342635877,0.919355097909026,0.029040991686578366,-0.20787549667732336,0.23682811040555662,0.20877513110561366,-1.3233084642095212,0.690633852406962,1.7090769333483762,-0.4757037113831351,-0.32956603301226545,0.05095856838039464,0.983393299326933,-0.14174692057494281,0.3347545356226135,0.5689937663898409,0.3478201690137185,0.302658037681533,-0.13767953709286423,0.5408702260598875,0.16919623203601558,-0.19103207614413864,1.0049399376857204,0.290127861053243,-0.13099152527325203,-0.7241060711885112,0.22926289727511462,1.887714971512541,1.5564949138635455,1.3766538796412278,-0.31070394138011886,-0.3663950272023966,-0.3499569197303864,1.8620551596401274,-0.12467574527674824,-0.15929278738488695,0.08743446397326082,0.8778379930410967,0.44167694873871954,0.7302877939835078,0.0959414765524835,1.9238452120889629,0.8752507348846452,0.9126777714287724,0.5463594180642204,0.12658813802613417,-0.5786230977026736,0.17460250550254347,-0.3500400281168756,1.4720460826179167,-0.7617957094381156,-0.4528184415186397,0.7111456272697585,1.8191294155235418,0.6305615782119987,0.59899098989033 +0.15015359865412586,0.9861565378606604,0.49381729513637995,-0.05480027958605904,0.5034802116660613,0.12080343570638666,0.06669227256532947,1.4641879403512152,0.8084520271935646,-0.20920433546822964,0.6294213661790974,0.18606176870564645,0.23464981917912284,-0.5286814976143284,0.5500470893848493,1.2602669871356889,0.22567089666010862,1.2330256834157305,3.3894566839660665,0.7542325833907895,0.5888173628972913,4.360861874644755,0.9006819852554354,0.15218754774350554,0.7806033019196448,-0.21331492366348784,0.10738998332874733,0.3966412716085837,-0.18124837826137835,2.3904699304561214,1.9272013679058104,-0.06437450496590408,-0.15587227471740273,0.37092949664074476,-0.9409439280978473,0.12146106646153798,-0.61860147939341,0.13846618389531196,0.14531659253991833,0.4575621077786129,0.04616573612936414,0.5399798375233007,0.40683669077865975,0.1605859873191495,-0.36528414616736626,0.10143385670363608,2.076929604451172,-0.0019068631689455606,-0.20987537231018025,-0.4636479874854922,2.0528703533101247,0.9513390994363985,1.0250566354406558,0.5761972767868018,-0.2655123140411959,0.5619131716672945,1.3056372560408245,1.8947710904899628,0.3161603182538885,-0.3514668631475591,0.5112929256167633,0.6793052942348662,-0.6577966561568804,-0.7880144685913069,0.4073518523647459,1.5442806534553986,2.1671958779878997,0.9136019738879195,0.7345340406636675,-0.20795244251048678,-0.187075246494132,0.12903035312684014,0.30920309138592994,-0.5474459393488541,0.35735414558841255,0.17333925679342627,0.39568092789589326,0.9008724062687725,0.060112766906595366,0.5492022723174736 +0.20184312947560432,0.9471032290021867,-0.41882580906158634,-0.3780692628487381,-0.04256860620518997,0.3157995552206755,0.20479704133104587,0.6621241265334747,2.0113394530320416,-0.2055093290452294,0.1912972903351098,0.28137286162260383,0.4683685410856283,-1.3262126418654034,0.6748809899146034,0.7666824414092124,0.1998065638526661,1.6102177878076829,0.1604817399217591,-0.10037499876590521,0.4892342206497922,-0.9779473950272287,1.3253895496067398,-0.22632473169553496,0.7642440433331119,1.381765360836099,-0.2738079552951431,0.36501017513692013,0.057102906161959864,2.4679471803291535,1.6106842423804066,0.18892968979860933,-0.23239476029649397,-0.06586319753636377,3.0179895278281825,-0.4125551503620767,0.46781746456842577,-0.014893113342966766,-0.015370338401397524,0.5191142628597794,-0.042135779657026966,0.3784442032116289,-0.5265345605372458,-0.35191530064210047,-0.03816469319961264,0.7862083600299261,0.10882550586433865,-1.1128191612919482,-1.0784080509971845,-0.2581082880799343,1.4185642031903738,0.11048625189891895,0.9677535144546282,0.5003277722668384,0.33552882286154245,1.0026132521489997,1.0879970589213663,1.660760846417271,0.13530482585986914,0.6287018488706068,0.42635518874773753,-1.0939565508605795,0.36502441461842255,-0.39604219854266803,0.013323610468283495,0.005655573644446675,1.902158886195733,0.5189986168280175,0.9870124716876704,0.08826017316813672,2.8152681222329927,1.131757456865779,0.805598088693702,-0.12486997133901451,-1.0191829133836712,0.5344259176674492,0.7009997660414631,1.6052395939661608,0.7847084890698578,-0.6513553817213208 +0.6721488667745559,1.538243946607257,0.41053630784574985,0.19603349882725374,1.8382271499630713,0.6415206301126126,0.7836074509884986,-0.14661985717525022,-0.1173974086691066,2.0047146774528266,-0.5328452186050323,-1.8715627097134355,0.5354506735608697,1.8213945616482343,1.0013890217631394,0.23603575436120858,-0.085818517631229,1.226683530643909,-0.12009359593469965,1.1576081710742212,0.6059875414449691,0.8399457174154963,-0.07891878756456439,0.27027568605133123,0.6079860714235471,1.3026241766906008,1.335705822665453,-0.11491202224956332,2.627918419076418,0.4696620281164385,0.2966133836150767,-0.026512135519005664,0.01989218456976166,0.6615935704637234,1.248488034506039,-0.44446825562705083,0.25514422653044977,-0.22574663070034273,0.15285913887282754,0.772727967056988,3.609757630798398,0.015592493311110917,0.4400942154292107,-0.3257762238681101,1.2058762476484102,0.5498010489315791,0.5360685455352738,1.8206812949132163,0.3802372268525128,0.5429192177851456,-0.8987421774025294,1.5599525636595122,-0.658648176693977,0.9156213648555145,0.38719531849771355,0.687630245620678,0.9983598260879388,0.3173485212293438,-0.005928038133250824,-1.3383071738539165,1.8340909666593248,-1.22066627324278,1.9671570310672706,0.13506423512719,0.7316108559416854,1.9987313367019681,0.509801351138123,0.850702654620511,0.8027467527623457,-0.74446044289013,0.09764623582192501,1.949207381180937,0.7265625933756397,0.6515053325152563,-0.2577694728825076,2.7028799924901685,1.1947798253108444,0.8142003451318526,0.5458470037410421,1.4518802379491387 +-0.5830527508145604,-0.5648344236517341,0.5013329873811734,-0.14553295780775355,-0.44041725623788097,0.5461103596623678,0.4874000981888852,-0.7635659415197447,-0.9178914228855133,2.764454399957336,1.7424959796292467,0.648136784715532,1.3882674045738865,0.7227855990855214,0.4626558107042164,0.7613609997569891,0.8571775848664761,0.24251531439104956,-1.1279968220948815,0.7704666512114554,0.4693579150850261,1.7222621364142483,-1.5066337681372406,-0.07769317513739293,0.39774730343059306,2.4009358038653636,0.5026699857099214,-0.49849753602441266,0.5472366319813784,-0.5458042663015599,1.22026178700834,0.600378369512965,1.9745585537340062,0.21071162848665026,-0.7402081985305252,0.32981188300771824,0.14684439327134924,-1.251747361538623,0.07954284722043947,0.5835299871842792,0.4045120684235888,0.09808284553415367,-0.45664888584539554,1.026530130335509,-1.2640585454201299,0.2031766505377205,1.7940056509896607,0.18646614836694575,-0.571984274444464,0.5997662743602399,-0.03922037381807428,1.86097776167271,0.6396344954028816,0.6467709227151233,0.1802513401544633,0.9706470941294645,-0.07661529962168145,0.9214811521045481,-0.1152148504266115,-0.055065161775358806,0.4387146015133395,0.5365274523434952,-0.29563112727972585,1.3357582258265648,-0.1753281079125234,4.000081251186513,1.2141474300191009,0.5503607769803887,0.6355058706332634,0.720840592197721,-0.5713777057951714,-0.17926233054639784,-0.12130229297005501,1.204577819305248,0.8797450087122317,0.6360595978610974,0.88663681558302,0.42180227208464055,0.8113703926444806,0.4584084336632609 +0.4105912840080374,1.2565795615339188,0.40121918327068395,0.7659502733154429,0.23086872741147046,0.33292973617676885,0.277285288483469,0.5684545589008594,1.6246731515231663,2.444840973224263,0.1011486392292157,0.24481546746766356,0.616439770287765,-0.6771874201450585,-0.3162018694262203,0.2720865062781844,0.7305120539488873,2.802119293517881,-0.009198768354646152,0.2072107911524353,0.44440872507247187,0.09419157781953727,3.7395211514646993,0.06471933819495415,0.6249025141044486,1.0634867396184244,0.3676423380191472,0.4522496559221388,0.32977733881299987,2.890843402086496,2.077190088257076,0.4901266856630543,0.3398875717971101,-0.10343068492728277,3.5284301670467895,-0.11337001016179288,-0.41452241290552966,-0.4573030863710608,-0.11819938858632727,0.6722921061071534,0.2874432639964034,0.6500028834042263,0.3025177521790795,0.46890979389583265,-0.08610243791432023,0.5399454231780986,1.416912381903619,0.45626286611242356,-0.013512795991456654,1.0980652424092794,0.8188186407235336,0.2651449976183462,-0.44284394493815327,-0.07295806967824343,0.39502834063113873,0.9707314143015962,0.7666776964234506,1.0352487797416123,0.4522470576829325,0.4457110321351165,0.09170140869147866,0.5288602016042037,-0.3764348508538384,-0.18521981759498862,0.9250193655850077,-0.20101049243728625,0.9585450549201682,0.6642686149406973,0.8750810117113881,0.31709368103702756,4.104449799363102,1.5788665289543065,0.7750122375019273,0.3122993609861572,0.892596762672226,-0.21163673463171861,1.235414841982188,0.6605862991222542,0.6063808124351273,-0.032094826657759645 +-0.23192357763220123,0.5745572142094681,0.5880550366053676,0.21465529360788843,0.21476438282451538,0.3408546645703739,0.1961627743206381,0.3521854239388472,0.1076460650214851,-0.89813889265447,-0.49885090358020184,0.6040009199112302,0.14443420928839962,0.325402383690262,-0.6826161369425254,0.9079737821028868,0.45058607998826866,1.3785460728520504,2.4509829874265754,-0.053449638772555395,-0.16106332114937366,-0.25949381227061596,1.358077726362816,-0.4558260232936231,0.3333389808654502,1.6341567998771418,0.3352259799469175,0.09369957408672996,0.2112871659833865,2.4319239287996477,2.2232430176004288,-0.5584052111530791,-0.44071739214254585,-0.02995164222351014,2.6520340254435912,0.4115457336598228,0.34716418960591355,-0.6727239165713083,0.5510812479384213,0.823699873297074,-0.1519162433301332,0.6931808013407996,0.4241168759265737,-0.732074532283528,0.6266992187057279,0.19060689027134883,0.7223400145723798,-1.074242117733944,0.05243506287231121,0.17614995873369813,1.8649027999124204,-0.37389590601388156,-0.39530900129804697,-0.5534027006414388,0.013086047741236579,0.11679904300362338,1.6851538010743232,2.283268506127917,0.17328616525645743,0.07670614781229977,-0.22189074360722005,-0.3669589370183307,-0.9750874032945117,-0.7088573336074534,0.3264082198638519,0.43439211278431916,1.8376832756747463,0.637771821385294,0.5625108601683559,-0.2609503480918444,2.2771977403029773,2.211217057641789,1.3944515383187277,-0.3421424378277406,0.3997374883393146,-0.8012854254694985,0.4958613727218014,0.022914055013517672,0.4713475547594855,-1.2738727751256074 +-0.28789133456189564,0.06117749638209413,0.022980393524697496,-0.05150859574616151,-0.3215227988100109,0.8047165878161173,0.5035135578351616,-0.2095464095704036,0.9780078970633572,-0.3985406904723649,0.04223508402502166,0.40561735113957376,0.9848681409117485,1.0969545001110288,-0.2197597810550609,-0.007400537859660383,0.03346701277474329,2.8098043766349985,0.5646544181225783,2.2031568824395924,1.3944090076999398,0.10788590375176732,-0.004789798220941388,0.48001504405434214,0.5148870743668174,1.336224839533179,0.40844908005765523,0.4805610302026579,2.1774434059850525,0.5509759699624202,-0.3513737824535011,2.037172127657065,1.635703263367264,-0.24927899106441953,0.8281877463679499,0.1308928490670348,0.026050529629564556,-0.9279316628055758,0.41509633176812366,0.969949291044012,-0.8090852552202052,-0.14790324249549464,0.015284856529162227,0.22310325203794745,-0.04184363729261953,-0.1112424701915945,-0.6466425383385777,-0.8123890018403308,0.20062702643774377,-0.16070838722534886,1.4774621190415493,0.03335873961933511,0.19939065128982347,-0.2808540377847492,0.5027134908541688,0.3720357490753017,-0.17923709741749938,0.7395098520093332,-0.03151261917289161,2.232826838285062,0.3082516949845171,0.3158709169312436,-0.030904268191702777,2.4863042327070803,-0.0014444648994181852,-0.18816219571706072,1.2032621714056573,0.7278894182785764,0.5003735752001364,0.12829189317630418,0.08805596858994327,0.9935595653732752,0.42379691360269345,1.8840490263398275,1.673060601685867,-0.28902345966292864,0.36806815336630516,0.5334427293376208,0.6631967503071025,2.9779500342191403 +-0.026714543369979443,0.7014713083256707,0.4409653672409328,1.6254767774925483,0.3130464950319401,0.5124533693511054,0.4344085240495511,-0.17241023194854452,1.935594376738744,0.3086273305591862,-0.194984226034371,0.3225899879366353,0.45465657817847716,0.04219361880593775,0.8370062845248455,0.6293757389547547,0.5997288505396603,2.805560878498289,1.0322656654680211,0.045641362801953855,1.1687952396576382,-0.4106050444897025,0.5239365268192195,0.30931196094813695,0.3211983242052602,1.9743201775211234,0.692892243127651,0.2687329119287559,2.8424820187831936,2.736171695501792,1.5358310330304379,0.5957292888274118,0.3930383371886518,0.16385193542551502,3.2840851562639553,-0.18455453315373485,0.3456177857728786,-0.1944502582959545,0.22924423996452623,0.626015779493222,0.1342051261856272,0.4825139325045531,0.6583411551602099,0.7907878318669216,0.10081110856192804,1.0531528269023878,0.2733985801634751,0.2325585657706187,1.0736727367872565,0.8423632632684747,1.40535464840755,-0.23118868425359912,0.8286783848374714,0.7422132408637505,-0.6494713654584309,-0.41187575289674927,-0.08501063667052006,0.6352874618818616,0.22410904880828303,0.9467120614538963,0.42589253945113437,-0.0664955630160339,0.8835834376626057,-0.4125269305530287,-0.07549863108400762,-0.2509493743539557,0.4095315103407637,-0.4017765301390668,0.9626535167822607,0.1967889704163885,1.9849441941078845,0.3975661361752566,0.7049403120155355,0.037836469173650744,0.5758101573818337,0.16484268749441028,1.632760522583967,1.2678434534109921,0.5960721185648836,-0.19955843764064746 +1.1041661556334161,1.9557656429303603,0.7516928951780026,-0.28668395294263394,2.088770354637206,0.8511060653389391,1.0144024835191885,-0.15091185403661694,0.2948452958853909,1.3714557343670652,-0.08810711622436798,0.19550761801436034,1.2518848631360133,2.048299236433401,0.9858940104972314,1.1944744844072397,-0.011595981375389738,1.8903423070749705,-1.259165899323939,1.027675065658163,0.3198237630123958,0.5959795766696557,0.619591980048182,0.4349270027521654,1.0173441305174697,2.155641224563581,2.2218741933180217,0.022832291601925146,3.0783940003778496,-1.137245523566514,0.12617504182959288,0.24667953723069205,0.14498550097153223,1.6426961488276506,0.8593360732027288,-1.2304642570328683,0.22380323412930903,0.5934111612868457,0.5994064350134192,0.898732760317036,4.282531424055737,-0.6174120525893826,0.9228519489008103,1.0172158073130406,1.9925560120092167,1.1835804755628503,-0.33098729910972746,1.7662481537276198,0.10916628854490396,-0.17863478238057606,-0.2554818392803079,1.7095306014590952,0.744194919963497,1.09219855925145,0.900018520177932,0.8635896061899594,0.34509382284821427,-0.10148287563210001,0.24013918323511405,0.12633556808868762,2.2085176388014878,0.9090183731118142,2.819773065566358,0.7740864755506787,0.2841092275869916,2.660155479593115,-0.21143916783541572,0.8093089437042719,0.554148839585119,-1.2605458836466785,-0.5833730286307303,2.4644815551662687,0.19315136586062936,3.1829867147540325,-0.23598282645804458,2.898666403944184,0.6461770517096606,1.6800739282998653,-0.4042637189006292,1.8461788222216378 +-0.6599998176223025,0.007831341141208672,0.11252017293418456,-0.6396721700228583,-0.12602817856734636,0.12771103306634254,-0.13225489902736823,-0.060689977660766656,-0.4468525239623603,1.181192749383727,0.9276287117888292,-0.7897131196310148,-0.4221330154894447,0.31644740334984967,0.3233248029651475,-0.37795131083594513,-0.06610716968541737,0.3389388363137905,1.4502465022099267,0.4755837410846927,-0.8633082716678881,2.3918900777203875,-0.30682839511086984,-0.057338331471035286,0.5874018972575814,1.6279469329562486,0.052799878786829804,0.257907681003867,-0.14781536435658774,0.13100603999837904,1.0902885194471543,-0.012291883575617675,1.9075111100004623,-0.03757632888457532,-0.15887479650872496,0.40397795507106277,0.15773051489260181,0.16707562443619842,-0.330216711324232,0.22994101534478048,-0.8604652381606974,0.2847555556617962,-0.1810155372295181,0.648846923734883,-0.5616852088029367,-0.3478603901016645,0.7168775180089194,0.016179551873599304,0.04559186321562103,0.1700366434315563,-0.6045528760180007,1.9230747506349084,1.2091963611548517,0.036660075843076234,-0.5537978620757179,0.11032831417271147,0.05267854761277008,1.910701404777046,-0.17125021142618313,0.010130527271269799,-0.924571288714348,0.5421447224811986,0.401401550677276,0.6086202815671395,-0.21798170877540068,0.31166812237881447,1.3321130086015334,0.49210712256267564,0.043920709063717076,-0.4552157929805471,-1.2783469533183438,-1.2319779042112995,0.5409459821872618,0.3360554825645389,-0.3003368034087321,-0.11887795415163444,-0.20392084187215537,2.096599138900508,1.0542272631983118,0.32056912860577685 +0.919260595746366,1.6617668525195746,0.1764423714147022,0.3084672857809622,1.2748038041759486,0.5840838551543486,0.4030445762844751,-0.5267964111514439,0.2943623787149307,1.136280667857578,-0.0022918237988404557,-0.03224501152004289,0.750823189873788,2.2042022717734757,0.6061477166745071,-0.148319691150804,0.09597488496595441,2.056665042023953,-0.19958289193514586,0.9554644014219404,0.32824291960511953,0.43105077279343734,0.5285094658835234,0.12977816511912232,0.5528074545192837,2.188168223544336,1.2300026787822955,-0.06944307796141765,2.603945808979607,0.41800796430985376,0.4322288787863731,-0.30132006771479947,-0.2880787561681483,1.3573573422786132,0.8109704797974846,-0.36415064429272653,0.3419636430017507,0.006569644270030844,0.42047406863778003,0.6671118214294924,3.798920895203892,-0.5769323691861339,0.20936553338517,0.5338366986452667,1.8868074447045329,0.7371034997768287,0.19448442635199464,2.431121651272816,-1.1995031788203847,0.5500031219746898,-0.16357832443415446,1.6597935621671143,0.1873214671022934,0.7292451268013465,0.20691440381295673,-0.028181479929576578,0.5986232179332795,-0.03621301602918752,-0.007395682749151727,-0.5830415892795271,0.8172715295908024,0.6884057617830781,2.239203829832097,0.23390361509445123,0.3597159438619487,1.9551039059601028,-0.24402446644304818,0.6658597071421543,0.4732065103730134,-0.12309514716443687,0.6633541681581355,2.559908626678272,0.40806656754081383,2.1561238526263,0.24453144761177817,2.719285125494179,0.5835882721835582,0.9925494876182528,0.5437258373645871,2.174322376495024 +0.2282275119963242,1.1320304417482354,0.3754644627885029,0.48347207091856076,0.12769987041494363,0.12057085652748784,0.08048127451649487,1.1659863261556929,0.7944083794264359,-0.20921565671180486,0.5752885515038211,0.1852974351244206,0.7039373504602313,-0.5296039893725659,0.0871084268646892,0.5983543346201934,-0.2857591769577529,2.6112239882821298,-0.1584585919123867,-0.7728500648358546,-0.10526701880504469,-0.4660033579797254,1.9050838379387882,0.23151148119615517,0.5449085526073095,1.3954832831725528,-0.021524254798687414,-0.017422543725048173,-0.5971513519942808,2.406390033432478,2.228677668754995,-0.5177505763071306,0.4943911304025911,0.08246197181089077,3.7094573546783676,0.4308364047371568,-0.33165205736796377,0.019910713508146383,-0.453120901903387,0.20309180773899252,0.24937354040925597,0.5451894268397667,-0.1439611785344923,0.16003250082498724,-0.9259022054336827,0.6114519477161262,0.26107692210974576,-0.2904326871747233,0.30024530347789213,0.6343345417898154,2.129691692064041,0.2576135511906781,0.8014049605424982,-0.13259975810287483,-0.13272964249463276,-0.13190058701894417,0.40159208434021126,1.2506331185321677,-0.0031241352628149643,0.31507396441768004,-0.5883014367007279,0.4962433656277507,-0.2533416459982857,0.2834213578061306,0.6299398030407274,-0.566441536287105,0.2534951785612385,0.5335042833803307,0.9167182136664891,-0.20918283475143817,0.5060516781284248,0.8656807648303144,0.5962456819020682,-0.06941284787222335,-1.2527973589180879,0.17223291229181115,1.209097214948386,1.1879614807832404,0.4650723879312214,-0.4639434439176713 +0.3482189299826769,1.0186486522235256,-0.4582646120254575,0.5834091778021543,-0.043690470528307324,0.30953267910178983,0.3711802890477358,1.077553267573448,1.2644981967251931,-0.2062929353759349,0.34090788522651433,0.38261975671634,-0.7851693922615534,-0.003769073900475761,0.27969156193509676,0.6665553317868508,-0.1297128498216547,1.7457970600930364,1.0260730078408027,-0.5078862713216471,0.6475088603959291,-0.6107929661611088,1.932693406802878,-0.06843573454187135,0.8502357882392096,-0.048806588085569175,0.05684435344756884,-0.34343031993589945,-0.00013654552725987645,2.009831048991114,1.777968684745721,-2.104570118819645,-0.3601922659066715,0.2852363762701741,3.2469705313732327,-0.2841933619813294,0.4171066474700083,0.2193244486885908,-0.05693385146356658,0.5920200485904747,-0.23896515957028375,0.5686463066275117,0.11459487677199631,-0.39022518399579326,-0.10753747497527177,0.26031089070466196,0.7630239981050928,-0.4780727257439394,-0.4340542467694667,-0.9948446241723141,0.2562151131931224,0.2527757594716322,0.9325834508024599,0.24607703941896494,0.06056211513140468,-0.6529622454543149,-0.08774660409382536,-0.05867892363648529,-0.48180988663613555,-0.020101316834072153,0.3583804010169376,-0.5855860202163471,-0.3980372715924511,-0.4050604559833523,-0.14291564022904335,-0.2118959744706975,1.2911372022598622,0.9587488747536729,0.689821301780906,-0.4023672356055215,1.3585788633675984,-0.638643779072843,0.06818880125373106,-0.1514184657117557,-1.0685745956453125,-0.9284447090938013,0.2742010303489017,1.900667140162142,0.4132486756759521,-0.758279910132185 +0.8566622697276283,1.8401862727100817,0.42297822386014516,0.21184583409337454,2.0844017562398243,0.6233471151818444,0.8085799822740198,-0.08739158578569522,0.3988942533713113,2.0049618848582824,0.0747228636153697,0.22456859932828266,0.6762503248817737,2.0646813766059764,0.5255738842465867,0.8533988314723635,0.33284518289449155,1.8191645495541835,-1.10669394297118,1.1547013302699112,-0.22084586543398382,0.64439237497471,1.6970461417842926,0.3187604552000857,0.7632345947019896,1.904379268303196,1.4175762221267656,0.31803293132759863,2.5304283594443575,0.907744584155385,0.1403799254511242,-0.4379725577104686,0.20929202781319878,1.027051176043274,1.0080207005632682,-0.42744535289421776,-0.1988614595744186,0.7355816398647133,0.2104231082024834,0.7462058643498231,3.7940192041337495,-7.234587553594206e-05,0.6928932378250581,0.09177465549544894,1.7983064134700122,0.8066637900103913,-0.6556169611923512,2.514233885252149,-0.29751691323050683,0.15120535392163492,-1.183373748978381,1.5362139892591147,1.298357212208805,0.9590622719418126,0.7400164123679285,0.8845070098915996,0.9552051125555534,0.17903413762578285,0.012211376264193496,-0.17519094426257464,0.7946632825870649,-0.17488031094773626,1.9892132382065615,0.558169761777142,1.0920494853046163,2.247173668475674,0.4766738064390758,0.8113365359175759,0.393214350221751,-0.7175939532189447,0.9090187548377294,2.569037470430375,0.9228476930521194,2.10779408821597,-0.24218768245463906,2.638484414205215,1.4467052056188314,1.5202960574100501,1.0088697974699719,2.0863860045818523 +-0.07774515912571668,0.09441061791868913,0.7578769520890707,-0.05568113131431482,0.026346895645097373,0.036087628459565785,0.15509826182726144,-0.5141905190408844,-0.532786198605668,1.3001196409028057,-0.2051782605069157,0.20380300202747798,1.7604320293925946,0.5919740571754862,-1.81128749779745,-0.5491450322569662,-1.103648119134128,2.594656116739916,-0.5688871494660589,3.150620907431578,2.697118909004741,0.6019867422763683,-0.6154496084463106,0.0798224330669763,0.41143960392184153,0.7762896482716641,1.4498608641370851,0.33055595735345183,4.508897144809687,-0.040497210426737096,-0.3211472727189485,3.8348232605034096,1.9282869291054836,0.04178282468873429,-0.03076430208134292,0.387434619063872,-0.27907086587388735,-0.09135271272437097,-0.08722353125795275,0.07894688769331798,0.7814442435883077,0.12834871035705928,0.20507139704461952,0.704769117004863,1.4854906651912283,0.4756670262724349,-0.3248800928286957,0.38911110732474613,1.5031115161578286,0.7444907872234388,0.10270930770964151,0.5262236133007974,-0.34890265581157354,-1.1849591054419544,0.43814083098369533,0.8708240410861463,0.0350527539602541,-1.2024724740638566,0.5004695195833515,3.700418932135505,0.5609480995838423,1.2588029915317667,0.2157759752732591,4.2836283406973505,0.08946851793894645,0.07541242377876636,-0.5863388402605337,1.4496321315152507,0.8864941230669733,3.8944712351959776,-0.5831531890432651,1.726059023956623,0.2000917232594227,3.334619675313328,2.792186741347148,-0.7002442481045034,0.37596344728896985,1.6865097905069237,0.853985348301662,4.526694673105775 +0.9938464165517589,1.6236074008221042,0.6038579476945015,0.30782261430452906,1.6468293521210868,0.48048915044608986,0.673954750655068,-0.3916822626935953,0.23362075145622216,0.9435681637251033,0.8635749816597685,0.0381890926840171,0.8283182951877481,2.7623099154092077,1.6006041141425662,1.1627075312021664,0.2306356640909362,1.1059311733036943,0.39872205176174425,1.3407405179528,-0.09663193223266664,0.5506973160333594,-0.44721503225177717,0.563556448913958,0.4921630989413794,1.989164001090857,2.2155120622972486,0.18564903591903523,2.948294858776646,0.19183468359068348,0.12773800031576643,-0.0529496840117723,0.40640607335463835,0.37738096382706865,0.848698615809452,0.0325542022830293,-0.10175808762964741,0.4324928005337692,-0.28053405085231314,0.42564545325487557,3.022594548094109,0.5729644820795324,0.045284769395548874,0.6759577809801515,0.6927703305191254,0.32164078568300786,0.11211093379937614,0.4104885638433063,0.3067404799592373,0.23467184538458885,-0.1840287456251934,1.207404064160472,0.8060866568597521,1.548738605176293,0.4337846339661573,0.27970616941576193,1.39327368436479,0.9766811941986169,-0.12900150411235506,-0.11773959462162659,1.7233321845113148,0.056777823935633576,2.3209144470684455,0.7512451870468249,0.9715311751321888,2.5178618948932354,0.1799627979191354,1.6998509143513878,1.0039264559768442,-0.4209899257925679,0.10077320207291379,2.559207594881251,-0.7841566869591919,1.812908588906736,-0.147610249708445,1.4351894028799408,2.129150688713605,1.4165687349188918,0.4697297923347604,2.0958211875076636 +-0.26206672327975666,-0.28336810918860517,-0.20161208964714972,-0.062161842044413024,0.03065180370142806,-3.1346344134680626e-05,0.034349118418341,-0.045388056766249726,0.30640454695562713,0.7093812729212041,-0.10449690226322653,-0.5063015940939594,1.7907936734689547,-0.3416874931614604,-1.9887619196128905,-0.27773568928078335,0.12505255739576232,2.0988880317631606,-0.3458285177373075,2.451756737355198,2.319238078996567,0.2063629261501675,0.03639202506407724,-0.17211670949059865,0.5249528361961131,1.0149691050325576,0.7711732385676051,0.4655075666602073,2.9736512024659736,-0.40118426760989623,-0.6709719557131649,3.14755889525437,1.1138096992483908,0.06014125785395644,-0.03767596223295869,0.36649950429670314,0.04073629731163893,0.043728399467929155,-0.42610731157205073,-0.050175693300591045,-0.5260381533934958,-0.08747432101322158,-0.059862889058766564,0.5604627271267965,1.1878083205442607,0.31164507278067827,0.6270195433905063,-0.524021099058821,1.542459258869376,-0.33599239636469047,0.16159593129874178,-0.18418565132584475,-0.4813819137244537,-2.0318691552510564,0.9360795702799315,0.6970321166369862,-0.3572073816301741,-1.1453626590244306,0.16609845235810966,2.631023517682756,0.3048993893960028,0.7954810618313319,-0.04757930089525053,4.028553428162765,-0.6431757417957648,-0.2396141275999974,-0.21330660469314616,0.7665704368490125,1.0766315684362886,3.681668915759985,-0.1829692598418063,1.3573946692086576,0.43882949384783104,2.72522159088354,2.763766166908828,-0.2955459866661895,0.15693659150983158,1.021076254097495,0.722193485402077,3.251938873438703 +0.18006408480748443,0.8751673318800691,1.121547819576157,0.15147453229180236,0.37809304012917927,0.2666365071366035,0.10517670770309445,-0.5834983515030392,-0.34995059779597343,-0.8938662994285879,-0.47409620803761643,-0.4938369249468974,0.2605361119096302,-0.93589073254818,0.8226110485073727,1.0448612253732588,-0.23758763229084834,0.449543295481488,1.6580914760258225,1.3324176951428939,-0.5005144412313998,5.157513272832188,0.027042286985947996,-0.40770698347160245,0.29939742371072525,1.6524356494385748,-0.10415702925432907,0.07936363047547024,0.15265140545162825,2.069856130828955,1.7387901596984587,0.6596801748263027,0.6467006105873694,0.2664750257048377,-1.6449377827725034,0.25377484984623183,-0.0694835739335306,0.4660878023638293,0.3722401184719333,0.5955504012491213,0.7092278382286142,0.5496905231016739,0.3510673300094879,0.16995629518870534,0.23176262662469138,0.9202497998419277,-0.5693706677597349,0.8536243445305491,0.31847968376925684,-0.6847935881797016,0.7304602487701398,1.8368079703841702,1.1827492211204211,0.9287488294879922,0.14149978625803605,0.36836303135867465,0.6199248896565834,2.695679257257257,0.33264688260214753,0.45177238039032297,1.0650307580922749,1.1652174698087552,0.09926680881928923,0.38037504733706773,0.6161324441849991,-0.18444748806998293,0.039581418533886525,0.9098142333396125,-0.24584229742928845,0.3575455707488956,1.0320792836754564,-0.8647980809735288,1.0761737419339898,0.239043331041086,0.6690443568226438,-0.38375532008092283,0.8183516127590473,0.9398563472226837,0.99858864769462,0.9185683595484004 +0.43069256342655426,1.2484697188086695,-0.26820668696804767,0.3640292207317749,1.455166003287781,0.3344693419910773,0.5637231223741572,-0.5792918487617484,0.15039620452477448,1.9512516278262622,-0.11216308646214378,-0.3079504844583623,0.826741492595167,1.6707604518131574,0.8076195863363771,0.5784617450981391,-0.23327417671687983,1.7314852409979191,-1.5677020571258646,1.262178649338181,0.8234089774719513,1.1402020581598789,-0.3457963719476849,-0.3992237969708896,0.648150355616278,2.0388162408966823,1.0417290587543613,-0.22171320967151098,0.9757483043298608,-0.3811115707524072,0.7034808313154205,-0.26344177791607276,-0.12804920198415362,1.449946591072277,1.0650829907931756,-0.13007965340110797,-0.04489171851775775,-0.3830216162647682,0.33661952367666875,0.4745041940636632,4.055439117636825,-0.2402627631449268,-0.014166329263622962,0.495774372926826,1.7066573132297191,0.88742289868365,-0.2496776844962783,2.118206040979587,-0.5548340728531849,0.5066956386198137,-0.17318541987642305,1.4529661145164394,0.15237867163857172,0.9889057992087822,0.41779039197718393,-0.07402092502419733,0.9160339108505748,-0.203471259385759,-1.3172860190017999,-1.4448425283816828,1.0010504217447844,0.4326972375869298,2.20148980851475,-0.07182900592161584,0.45503962467296943,2.0987933588220336,-0.049030566268904285,1.2600326155329262,0.42208616409895405,-0.10234661523245864,0.661961201762855,2.6083390506411055,0.8749161052013482,1.6349040360644005,0.19545893332955683,2.5455652244564626,0.7701997198458125,0.5463049189840843,0.32664279276012953,3.7810673834423922 +-0.029371371793606604,0.3546893596307078,0.1492898953824192,0.05626253926858937,0.26792681884020775,0.5314380686169305,0.6110112255400778,-1.061667773233574,-0.8481343697961002,0.6530763755238413,1.9764831544006647,-0.05516074633169388,0.6715282838521451,0.9798519862620958,1.1052632810240939,0.703971686004469,-0.5838211645481438,0.9710636752254069,0.5031011250005414,1.0564732521298772,0.7305232963264181,0.6725299830874537,-0.4698574063612121,0.12260421560791412,0.6360501781781416,1.7319016574695003,-0.07159879629232213,-0.17642619937583232,0.9958711012643138,-0.18819880078677728,1.3350932248738068,1.1703086725318383,1.1555206734525805,0.7172719763566429,-1.2820325392538625,0.36473496850353093,-0.7476036885305382,0.062115636741428726,0.023736013483521834,0.5157554189833625,0.8466446695019987,0.16001003933030955,-0.06490137416809783,0.4876203964896353,0.8069991047432304,0.5235181388772123,0.4467375606722954,0.42159037763381335,-0.37553977701385133,0.7752583266767396,-0.13382156857935895,1.6426591099133763,0.088083695296518,1.1622952886018794,-0.12193174475383184,1.4440813201013538,0.5552385989878421,1.8478277362556887,0.11627860600476447,0.6606824866989629,0.019237210123320247,0.20384684058980596,-0.014151939772978461,1.327483702986216,1.3657928383849118,3.75182182545956,0.7910321905315321,1.1252735239051226,0.29731238652206166,1.0637081412756448,-0.16026797203391735,-0.3204047008487252,0.056899094080172685,1.8160407204885174,0.7909162423542149,0.2512121733296009,0.8803953066473742,1.2801973651456566,1.2887043086999772,0.8888917661479631 +0.4372367688029327,0.7175453177485374,0.707327516308213,0.2128318030613106,-0.26361554229564554,0.2997406229169852,0.29837350315266215,-0.8019644489381372,0.6980205738875813,0.3971865755818587,-0.010954469624693437,0.6552700192471461,0.14542551204047913,0.0029311135520590503,-1.514913118301297,-0.37037468154528574,0.23929128008664483,1.4002495462049516,3.4292033150002115,1.7023085385638181,1.813908608840239,-0.22983405003098517,-0.09582912679558048,0.24842676941284175,0.3708774224407826,1.4105378082940248,0.31406727074023494,0.1928303850080625,1.5727092723853942,-0.14709692578300665,-0.007159275042026278,2.0349812877942415,2.813262936336326,0.3886285042913008,0.27702391334894555,0.13902797472862027,0.24520557475635674,-0.24959324999082164,-0.003671099840054176,0.459002559056957,-0.17591150024658464,-0.07987215858253223,0.30116903966097297,0.46074005930664774,0.3504477364682653,0.07084024878798717,-0.062152632697483945,0.24024938150039066,0.6533074481366306,0.24368988957289175,0.9165840566841663,0.11707389943846286,1.2188280056806937,-1.2534657907688023,0.2033441318301906,0.8000770751840149,-0.011779493019564324,-0.007284736719037163,0.23956923904830535,2.1328747729071873,0.6875731826393359,0.6269956065426217,0.8690418039713198,2.234780019883457,-0.15549265389340433,0.13868395690695326,-0.41265020753941734,-0.31238698190941194,0.27681457801398185,3.5284547082911097,0.1010632635480294,0.7482411067124416,0.8344384947735631,3.1645293382667887,1.7597282486523913,0.19826909384640068,0.3214705192517959,1.4250603615041908,0.8824333869316804,3.162850627847841 +0.25140634579044707,0.8640817042689828,-0.27800049196166177,0.36052033630397573,-0.03630743630208316,0.7958435866993027,0.759964459528503,-0.29038158552456705,-0.006234079541644448,-0.6081763905163241,1.0548065682275012,1.163425173702624,0.8276737912718438,0.5112192135229621,0.9435081453934301,0.7602282895189103,-0.34395076707925626,0.04534938526005183,0.8291300958363905,0.5099611623025018,0.7208635895702767,2.3158501180000584,0.5555074410316531,0.025428370889440388,0.45429957471258686,1.5398686721439285,-0.006671647851325457,0.34131921514357727,0.4861727439455329,0.22827555753089177,2.019726163408783,0.6380630625226413,1.416337590859562,0.12826144702617207,-0.39561284133930774,0.47326779432766697,-0.19840575963311738,0.1760142182111226,0.6294786311120971,0.9702724511739508,0.16767310166519167,0.6817122691304834,0.06467186418271803,0.6321768097198581,-0.1269254564119955,0.41042602698669695,2.1349704049290503,0.19432641989804286,0.4821142830319383,-0.7956103630925253,0.5880942253546207,1.688514416499645,0.4001891354512692,1.1384490228090733,-0.39571540945030337,0.9442145605515362,1.2704363809070083,1.2157576812742394,0.34061796103707837,0.09986803434128588,-0.02407237768600995,0.998568931841671,-0.07847694283690496,1.049401832905981,0.7866291381093654,2.4668272765439667,-0.06314189121017602,0.2638177824531725,0.7820749830072276,0.2745687197832465,-0.580923002200112,-0.3385609852471908,1.186789673123938,0.4098891118918687,0.5434758095797118,0.11471190649531171,0.6663288836205766,1.2409734778428474,1.6717797312972988,0.13590834824191855 +1.055439573051978,1.6545494820918534,-0.11926569865034582,0.19664223207436868,0.4831924251977864,0.3809435059628744,0.19518011366630134,0.39035527355711963,1.5953443007972963,-0.6107384333946103,0.346815336744377,0.11498467795459097,-0.02752923396955878,0.30245562463220715,0.2540064264959043,0.4027074360679735,-0.48074019555303077,2.3965052189035436,2.5973192320811935,-0.2331303952168718,0.5087712079843281,-0.2732619407852308,0.9146651811434133,-0.0037017287048633947,0.20670661123350725,1.3951007267483102,0.20825622606496907,0.08122495785252891,-0.007580276564614175,2.213052517842865,1.9607730919925386,-0.36986114445491347,0.24436636152816626,0.17365397142320368,3.0771553601207557,0.4791649975146751,0.328939687699252,0.2888912095964137,0.1306790047890489,0.8799557898934826,-0.19138274215982493,0.5167628146944233,0.40542268965044176,-0.05269519421108122,0.2340431819751928,0.2276781224529328,0.3028774896377918,0.003382055385664672,1.0157289056721814,0.6713104701318697,1.3948082057293907,0.12254296164947755,0.9783459087390024,0.08884759917016777,0.24577622054863438,0.10021807355773091,0.6354111088739632,1.7674202597057884,-0.4069936411319043,0.19125737695650752,0.44682759278323275,-0.6730575790039478,-1.0002133451436799,-0.5380606219700298,-0.5628809487991411,-0.16605554006359924,1.4469189887013039,0.32036538532022313,0.8273574582330369,-0.6970211651918761,2.5714934189870875,1.1050106208008437,0.12578161155719042,0.061383466404348636,-0.3111601221891234,-0.8288054769898188,-0.14974928129271767,0.008163374947344698,0.9287773152315051,0.2971384981141209 +-0.9775584038354516,-1.9552819255529674,-0.039772798806230414,-0.26194664150501756,-0.6414676896189792,0.5120840312562532,0.4591888512021506,-0.4476082784266225,-0.1821112788020135,2.373994495838124,2.3612999070607583,0.558089848264208,1.1709865898199368,1.306622099335907,1.106430026383538,1.0722768396200604,-1.0895599795995956,0.17919254378001975,1.6034852457167452,0.6032031536955608,0.3518389936101727,-0.483724960956502,-0.5344044120659774,-0.3734284556721089,0.14368902537409675,1.1966646148214997,0.18719873971158918,-0.26752103565413954,0.42053221149968456,-0.04450015909284061,1.1945002945914787,0.41197799523409856,2.553954266293217,-0.6330575225321436,-0.47860409088696937,0.5009149962192362,0.025687365012353636,0.5144373783261522,-0.36090967197854273,0.6057335649431276,0.29233082430057256,0.35701953624285937,0.15359477309570652,1.2772852223712536,0.4792315620499986,-0.3528093651793332,1.1545724020337322,0.8142418495436545,1.1140768951227535,-0.8502690867075231,-0.11717814775504921,1.8126695218149511,1.049234732367197,1.1976342346463615,-0.7483812501993907,0.8863602276280407,0.8595804214689579,2.347770236629553,0.6251919939274679,-0.4174337948937373,1.1434534466164337,0.2775302851155257,0.9324658878117721,0.06480678007304291,0.20777862617687948,4.500073923982698,1.9517407568214133,0.8300808592053814,0.7378901657760838,0.7273950414481221,-0.17721596820077334,-0.19774334715914052,1.3136086573853143,0.5275432528542318,-0.9047533671300338,0.7118360995017295,-0.0543929728525292,2.036803252592408,1.4047634261887623,0.2895121580000201 +-0.2707817793440197,-0.3307494224004922,0.5905572734159495,-0.8652235826297927,0.004246004871236997,-0.09026475356016017,0.007562521798289895,-0.17851770238385603,-0.07100205500564354,1.4071490413287366,-0.1955090193351075,0.09333123124542733,1.5883615747944528,0.3224951094034411,-1.0272331191832162,-0.2502067216187257,0.5948928272703974,1.9932811671594752,-0.4536968353100831,2.810018606473391,2.6276340411943986,-0.8204985252157708,-0.028051277761354486,0.05224683416545231,0.6328101889386119,1.969202083525206,0.8809548454315819,0.313510747996242,3.5281756844141756,0.08833608309103617,-0.5428473693552733,4.081108292763024,1.791337981929429,0.850714945403728,-0.51058966356035,-0.19079180082001093,0.3397560678834263,0.6102999376581727,-0.6918508630873239,-0.23863495659932743,0.7574999118350361,-0.5286231458885665,0.3803946527875337,0.9041425869029922,1.1342461089320766,0.25823463744777786,-0.24192916437584502,0.22580796084288834,1.4247076018769673,-0.07896598597515422,0.21861326559087516,0.05186604057299604,0.4191479312452657,-1.4339731109998093,1.1362978093821055,0.6814034426792567,0.030106388725508082,-0.5416150251815575,0.03514112948250575,3.9966735912253375,0.012570152520188227,1.341274277885829,0.36467632099321945,4.636231116080778,-0.639559614276857,-0.03187809562750338,-0.5138925421529035,0.8663241682567586,0.5953099550252293,4.043153194809536,-0.1747021169686363,2.048205295286505,1.392971188035959,3.106405559381297,2.9214761768704123,-0.5371560259711528,0.34888661210701855,0.8576339453917459,0.36888431562130164,3.6382296428297747 +0.15559672546396902,0.7478912478688725,0.17371743245427496,0.1312501364726642,0.5440913284223163,-0.3067160084023588,-0.5907258574840141,0.7853959998121303,1.3360743168364182,-0.04973500859536824,-0.08697767800958406,0.5451407441407183,-0.3452227181196537,-0.09530083303074202,-0.11283212330599778,0.1472751933903663,0.28649397829641454,2.1986433499789872,3.3414534304936185,0.2981330649084257,0.6236432929592634,-0.4931021534777114,0.525084176355579,-0.3856057071447126,0.5566452127678012,1.4735089920560067,0.03535563775223044,0.5994514941046514,-0.2582849159709114,2.609301296144026,1.51082700644637,0.13709856114758337,0.07645918516013715,0.4522478738607364,3.186470887946032,-0.11842838150067098,0.23641857845504305,-0.08643563788013359,-0.776548159195424,-0.19174192009867744,0.18540828635298992,0.5896267471522125,0.14086254274554966,0.9314359880360878,0.23910783854066128,0.1443352873915495,0.1895276008757469,0.10680009002573627,0.12130463058840812,0.2376740122894206,1.202210897495223,-0.029710469132379055,0.34747907854667776,-0.13797991407690463,0.5382171320291743,0.5873851938622092,0.3116107855852788,1.4702818078815543,0.1002925271486561,-0.6624074789111626,0.7903432206995229,0.11083645405927482,-0.18325916921452523,0.5070837387680165,0.38068736807925685,0.4841175971699864,2.445117842019863,0.269732807912146,0.6677400555612318,0.46538805823762874,2.220336134745056,1.0671207710028732,0.8973096432796586,0.6068137528185193,0.46945153688084473,-5.442885786127727e-05,0.1571708654770242,1.1794590037906536,-0.3955598495219529,-0.024341517461289708 +0.16764714895879085,0.9219133109516189,0.577030581099018,-1.1479417574537323,0.022430248756103888,0.057892075023856904,0.018808418541900185,-0.1921488947798915,1.4475082782938768,0.7204184392136745,-0.4460145019664511,-0.16661209238775054,0.5671104170646367,0.8453387963322588,0.1102304852973176,0.5112148821981535,0.7143353059057872,2.356366101084153,2.6379828335504185,-0.07401251822381172,-0.09928192387793766,-0.10132553982180909,2.3900698692755817,0.593160255260174,0.22367315745323146,0.5400106594334301,-0.4523489769526179,0.03813005959755722,0.7015975447309906,2.1722192693097635,0.5758117659268323,0.7851660099835733,0.9598331099879329,0.6027411916974182,2.960241162245854,0.251059002732515,0.24417713517359318,0.23716509353865756,0.053958026787151225,0.3545030503010781,1.1261189011383672,-0.0997739643117857,0.23097899376899667,0.4069137308224033,0.2553877436307671,0.6469297597946023,-0.3284620432096646,-0.39458848534813784,0.9079625532855923,0.27796481570464215,0.79026932919071,0.09198732303573265,0.013991625047569678,-0.24538851182010374,0.8675057359393593,0.6537370108901077,0.37311841599603657,1.3819292848435851,0.842444631092632,0.472793220294641,-0.12396391676452556,0.3472039094330016,-0.16143943163936592,0.25854546029230097,0.3684871668023226,-0.6596872340445967,0.8496890158758281,-0.6216201408899906,0.5505730959454369,0.32468263643228057,2.234673680063994,2.85547113801893,0.6568001786206379,0.4928748766139268,0.974545844840743,0.7830376653815427,0.5356076836133887,1.599194444182025,-0.7309134691421548,1.3567831795104273 +0.3929244802556442,1.008739831241517,0.8145398849920946,0.23130414128327842,-0.38188047187103247,0.4866245646674447,0.4540952995937831,-0.20634500114511112,1.1957071353219952,0.1986460738506782,-0.691759661497894,0.48063252106090865,-0.30762088472120136,0.1765062289722511,0.4902935617833893,0.8790505859422223,-0.563266779525288,1.8120978306724496,0.1040456279032809,-0.7787241251027652,-0.312333665901199,0.05663312880912233,0.8795614336046688,0.07001304036702109,0.600776001762876,0.6146134341966463,-0.686530764955177,0.48604241027769984,0.19729300884063414,1.9247216734340649,1.135063542356048,-0.08976599712209662,0.13556957537470485,-0.8498759324593924,3.218362033352,-0.3204209582864891,0.5165917299606906,-0.1042527129586205,0.32062627824087414,0.7660924147223207,-0.22568357041981454,0.42853397060182863,0.0796711204511542,-0.12826366278892182,-0.7137288729742725,0.11742427858844731,-0.467098239373299,-0.5172819120771994,0.22633395812932633,0.5853283307508612,1.3483354236130953,0.043577420936330324,0.6212888443186452,0.3690802691218046,-0.1077623917911371,-0.6839381717630739,1.0839342336415771,1.7706585279687879,-0.29727005598674144,0.6619572624306718,0.5358869297630965,-0.26331619972964326,-0.03951147699654953,-0.46086987801525003,-0.6387380651237737,0.3522379220643518,1.7487373856175619,0.23734469973251895,0.7479755897396472,-0.17186156586367132,3.149397037945997,0.7641968904073928,0.731619217142149,-0.1488738666222723,-0.4085880823459313,0.6295813066663163,-1.917045688219964,1.0258126293495893,0.3897586599792455,-0.4246019642802665 +-0.8398224638121986,-0.9588591971902103,0.049240885172772364,-0.4701194628464245,0.19857293121007735,1.3394425031721022,1.2075340832531443,-0.49483665543854194,0.24562526794924866,-0.21569736613080684,0.41995156798015076,-0.11877223080732313,0.5658861653091289,1.5572050180711405,-0.07006096896782599,0.01629627239920456,0.21547526096579372,2.432340081713848,0.47836570417137386,1.4727539525842546,1.4784242378773111,0.8265424100686175,0.09067369100503322,0.08825834012709233,0.13986538136088078,1.3657072562721113,0.34614619680915815,0.042328194589555945,1.4728704245391553,0.5430606298389502,0.5886918167171137,2.6775214318200344,1.3004405973897337,-0.5495517096429872,0.8163095682527328,0.4545042586501983,0.4275413190858437,0.13728732190416204,0.9483201371729862,1.552795330385483,-0.2912766581172612,-0.09323591130598821,-0.06340759721071754,-0.0027023804316363975,0.48127259124047783,0.9112582799965061,-0.21524328346519406,-0.2626769981293855,-0.10335593679381705,-0.4193664384396003,-0.7353028347515391,-0.07351714585927416,0.5104908574929277,-0.19517754391912412,0.6172628636383078,0.5850782096225572,0.6368981099758177,0.27742952311358593,-0.07326942781496704,2.292212626215005,1.8698604806226666,0.9310226679355998,-0.5439671905797764,2.760639720979276,0.3118438389287149,0.15374957224147057,0.8808837057057586,0.5908340245936489,0.5922274208882414,2.8335336402779765,0.6486053015644182,-0.10482241533736536,0.6355905790991844,2.6939799399334134,1.0467026306928524,-0.46117838472096473,0.60720848925386,0.8484545803097338,0.17566775064167955,-0.5374544270202157 +-0.16136901611277432,0.5526534893439006,0.2732517791851053,-0.16987240348494242,-0.2645445618957875,-0.19504983256024822,-0.2720024274603837,0.5082399785592943,1.8248061606676973,1.988631189476767,0.46111083822924137,0.4786232358524885,-0.08338110688012898,0.21424768172225217,-0.1793381366040455,-0.5365352561964436,0.4406114134801891,0.9378925083507957,3.8612550863822417,-0.9395808772134167,0.23392804119300276,-0.723262574629255,1.5265441515755809,-0.0967060834400009,0.24360538139701282,1.4306445148608349,-0.10871821048847286,0.37410746947454343,-0.43843590041393393,2.6807182372947507,1.8281221762035622,-0.4412975471108409,2.2519116536917907,-0.5675130477904576,3.6503178717718394,0.2505427920310902,0.6249085915821162,-0.6307798172812218,-1.431715853114906,0.0191691900384329,-0.18666713709428934,0.7309334023734846,-0.7312620790399247,0.1904547246051223,-0.059882437731519134,-0.41460366162897166,-0.26760936126285606,-0.6495212371170306,0.1158490122391764,-0.024198097353965026,1.3805073978254487,0.13525268258634002,0.5416517527366789,-0.06646179674277757,-0.091576406737617,0.8210284172230535,0.76083412321975,1.628058171912941,0.26567983046585253,-0.1421689649664178,0.7184409236048801,-0.6024965967089972,0.3130037170671731,-0.24363107579451077,0.06264122937744113,0.1546820980210903,2.8531053625677893,0.25326904897967106,0.7106953733932073,0.3890735671081962,2.428977637297521,1.0404188402758145,0.3437125475990275,-0.3902329213895198,0.39586293372449044,-0.054639257188444146,-0.5578326860918102,0.9328733670646283,0.7805384105526368,-1.0721808924152982 +0.15808461201092933,0.8960284099527136,0.20924524170314185,0.45999357697126697,0.5266834225882903,0.1994784395254116,0.08750619503186119,0.39683125914322165,1.1559538590955554,0.3120794553205585,-0.3085145811332237,1.1434407031055163,0.3853303337619324,-0.7751283134084976,-0.09381998806784386,-0.08930987565430665,0.9663619881937119,1.6343694075185686,2.092399068229708,0.7640641454005852,0.3559585593435304,0.6054679256102844,1.6453280992073231,0.27716941685755164,0.5819570383954197,1.4762349193000832,0.5260380912009764,0.3436901002135829,0.4827957524397525,2.432487698127473,1.3949546946743294,0.6143982092388064,0.7497120902233226,-0.28979155587900035,3.0463459202587964,0.053161581887649745,-0.3472698666273577,0.734231211669397,0.4123494893597836,0.31691400626830324,1.059833672707148,0.509642878612896,-0.07757908652165868,0.48955580610159377,-0.6921840757657736,0.5754705248065228,-0.06584122799457182,0.08437399514456184,-0.6572814885763909,0.11810161187067003,1.0833102166389033,-0.05483019536709466,0.5781526165932143,0.15750045807957508,0.4261299101332201,-0.2086197377887951,1.0726496060945276,-0.8978416253857134,0.2950951204112967,0.3280201183922393,0.7253508754541752,0.7952507233484739,0.6807614461788787,0.6468272397386161,0.7129568351668565,0.46386976074344316,1.3147574379365212,0.9287708618634676,0.9637232088096332,0.4178150538984472,2.561665584557933,1.974650914523148,1.1876161066510993,0.6127773257624893,1.0165454287472742,0.9076593615552855,0.46746204985783746,0.35005077605489593,0.23938190104131452,0.27149035007508127 +0.6417983159204098,1.4486314379137224,0.00352540441664978,0.6040109278126085,0.3235131643476401,0.10740271247610023,-0.02631108271989263,0.740263929469504,0.24237578989135078,-0.6082987070721417,-0.19866508207748518,0.7497020813429893,0.2809404517299633,-0.4150382692551873,0.8260558089566745,0.8882045029682609,0.34266583902974257,2.1136746426129323,2.101746139074682,0.9043374751015615,0.01759073552898388,4.3596197875884455,0.9119312088794794,0.2689770456535039,0.33383467102897607,0.14666282776056408,0.3299571877895694,0.5590445114303716,0.3090311678205766,1.6164254904403172,1.7871418568916095,0.39989148726386253,-0.6666062391841444,0.11977529186077213,-0.21050671535718782,0.3594844612851539,-0.20632143392914856,-0.23779640028512938,-0.3152788388908545,0.6165122177661465,0.3328526837736078,0.12195923259537458,0.5673778098061137,0.7597282442940451,0.1987180778343369,0.28391827619970667,0.2418210839719606,0.18521039095962366,0.18681583803975838,0.5838799751822163,0.3789454933307878,0.8349677776235632,0.3946992856564818,0.7761054801191094,0.15581107425670127,0.937012742124984,1.0749451880847887,2.176974619223227,0.3316427012160758,0.15048490573757212,-0.03468286102676568,0.259682325884492,0.6037569752877945,-0.47992119494829266,0.9919354321701005,0.4136352290107057,2.0876617874820793,0.6139230522081124,-0.06670719419066325,-0.43187181854414364,1.4982996910396438,1.7912570905278216,1.1798806063455736,0.05677858611465053,-0.15738113572248644,1.3555217491625753,1.5556903319135058,0.829101523630093,1.443174815367281,0.6300436524748099 +-0.20969764737591068,0.3498452156053007,0.3640547871354198,-0.08618305927308978,-0.2653397482693015,0.29582801478993875,0.304504856753523,-0.6363359949857632,-0.2431783942097302,0.2990430477043304,-0.7205175983477933,0.26331087872490294,1.3243323955774002,-0.22793930526557948,-0.2223035295575312,0.011770436895243264,0.42448889640952725,1.4088608530721893,1.5832251000186477,1.8958635114705973,1.9848220059677977,-0.03188479996583776,-0.2476720707531512,0.029319673612085095,0.3211614994792193,0.7396141695320124,0.3800328860810607,0.16263177870046158,2.2410050824296195,-0.3272579002953456,0.23028642399029992,2.9247455911312934,2.012786164574992,-0.7887745585868045,0.8041493638483992,0.49046503140127157,0.19537781076582472,0.2502380248036287,0.19088486853023268,0.4072412776401102,-0.22814874902953297,0.4697567096989803,-0.07797091111761578,0.6406736816262764,0.350925450094419,0.05106197829915693,-0.7138081434599597,-0.19405841373237537,1.0959205438396258,0.3092246454997546,0.7946096058206829,-0.2099947389995035,-0.006951494607057074,-0.08962126768871245,0.3906564504349007,0.12242809520067083,0.32603906938743044,-0.6456120454809899,-0.32500916448642697,3.6407400489933868,0.44179130684708434,1.2366339066544416,0.21078122687212697,3.014714402842608,0.07318291424959322,-0.12223133260237384,0.1582652268384176,0.8987375321185516,0.5361928924525895,3.8050399070904977,0.09599384508803269,1.592658955250129,-0.2418942764898599,2.739431256897257,2.435554121511042,-0.3662959059200793,0.1811828312677713,1.0535082407660155,-0.05500420850109605,4.410197362250926 +0.06291860328760163,0.7302472503171061,0.1758388087116034,-0.04837537956939539,-0.14500930972378193,-0.18849900729775082,-0.18919710936527923,0.774444723317975,1.10243404221822,1.0001292653536,0.20094860135684364,0.7993008174316752,0.350590524287894,-0.09186635869503232,-0.11165884213879826,0.46764320133704496,0.6942094777874145,0.9232777201228449,3.6769416818645886,-0.2858324768142435,-0.06601464962950651,0.01978416582766067,1.0683264123672522,0.31021749907373997,0.2575481297847163,2.035506429951255,-0.03472822402310244,0.5500252934184731,0.07260735959425202,2.548037256953703,1.139408206397959,0.2758085082530217,2.324901047737129,0.2728505882164435,3.4566283999863248,0.28993917199021935,0.016002714476598956,0.6095873485991512,-0.4866304243209774,-0.08136481915373259,0.271358001504487,0.26034392691487646,-0.09750152840242882,-0.27047616356055537,0.4659828867843935,0.0783488931900328,-0.7246681175485803,0.10994141137851936,0.12392918058199946,0.5277007045743188,1.0596301715055343,-0.3152392551665183,-0.34377633724371337,-0.15524842261005878,0.4456944712502438,0.18440178322944978,0.6493236213894169,1.0979027401170376,-0.3020797676837992,0.30747072261419606,0.7939995208392902,0.11359288843224005,-0.17949853346534692,0.47381469278590227,0.8422882212313343,-0.3249176308236239,2.008308587754493,0.822043009715326,0.6682515410033256,0.15151512747494492,1.5571173310135433,1.1760127077434375,1.1228340118494182,0.014710192945174727,0.4721082691897675,1.102676825387253,-0.0028033511079220003,1.1816667592298145,0.7049343881174539,0.8287077131210141 +0.7591026035396884,1.4319727916272063,-0.8056108123645844,0.456601354736947,0.31848624562889427,0.01653348869782989,0.06300237376001533,0.6731639544031933,1.1404995216469207,-0.050987495752766294,0.011126135076003966,-0.09903448181868008,0.8283171952250559,0.31346806239785924,0.8268630146927282,1.0066824516624227,-0.0680593412696324,2.747055365536514,-0.2536480015996314,-0.220878190921425,-0.8663351190286838,-0.2666544430539347,0.97800702475355,0.17672904539648995,0.21691524102115345,1.1150552732950887,0.1670920754752213,0.5271629669799035,-0.1824133398096763,1.8992226400183059,1.5983405353350613,0.1167472118502659,-0.22176752791810928,-0.7332602588679549,3.223518996345401,-0.050524984659076,0.7431509630787668,-0.17189131894592355,-0.4375166214743738,0.2339459500043386,0.16402996274671605,0.1684438959406207,0.12671219189574856,0.3593772743603751,0.24600800502884707,0.7809336597118184,0.1272734689146563,0.3011365879923383,0.04331511617600833,0.45568480291650393,1.8286092872447415,0.12944734652705484,-0.40188262111950424,0.634753534114443,-0.5562159816407585,0.10817548896681345,0.9270710888477289,2.0190395094889335,0.4138534969741588,0.16011963613192035,-0.2345958787586882,0.31661001694479485,-0.29500790963725965,-0.21356879376457105,-0.21977611367890695,0.022342183802665436,0.07857393640173968,0.13346831903463982,0.6168229859498332,-0.27686799308766397,2.7289208119868023,1.0675437483775787,0.1334155605389978,0.07976740371976852,0.10282364011535014,0.2830140299136995,1.0561133806823102,0.015242411504045471,0.24166449215941685,0.092436373390942 +0.3507282289343967,1.1793042873362318,-0.018100971068757743,0.35435239968831866,0.1717709349668345,0.04084142554298953,-0.1394219641432634,1.48666441732053,1.4104706201974775,0.901064928453673,0.055106058593368965,0.973061675808776,0.8666231659615367,1.1143139505984996,0.259717823382902,0.3016079302959352,0.33722009581898166,2.472397815668124,3.061855763623411,0.6214295192897967,0.8606640411908092,-0.5886850549220499,1.148122648018096,-0.0885522221412739,0.844360132917324,0.44536115522712877,0.3993291674801436,0.28238334307579016,0.6734604257296268,2.685616581774895,1.1427144120199648,0.35622075716326285,0.6374340766354136,0.1988452258737623,3.04787516799646,-0.3751131333652037,0.13577570829936436,0.12287726407149757,0.25279230739403624,0.17223994305230889,0.1982204605011919,0.13353605145558517,0.002000794757031632,0.03733895270062909,0.9180239870617387,0.527448900191377,0.28142689719047614,-0.5194282030266266,0.11051274226005042,0.18478693125469786,1.0981033234715214,0.2940953206730621,1.037423009496499,0.09445028925213911,-0.05420368720061863,-0.1380356770279147,1.513399646784248,1.115845653058576,0.3830604434767416,0.37745297159975766,-0.2692694827780042,0.6794927945698294,1.4808680546506445,-0.3246135288121049,0.15275026416738258,-0.32953113388579963,1.4735958876185116,-0.4884451796147826,1.1324214795019538,0.7022521581812391,1.3742264220231293,2.956290465944901,-0.13096341352152446,0.6704864604605725,0.581282179757761,0.6193452436224295,0.10905546997806448,1.7991377803584445,0.5805900788525834,0.840535051317584 +0.29952730515072923,1.1770396076399485,0.5072031888177423,0.5329197498156748,0.2168109689847758,0.15851264250389602,0.05872607921092368,-0.17685997207056867,1.1116187316380566,-0.897092207113058,-0.49278658139068926,-0.30616322436318993,0.05648909962038859,0.1875461755025578,0.22198836434776004,0.7041960563046562,0.28332587013369614,1.0318374352235418,-0.5691843173624156,0.041439247234233284,0.8418746839344038,0.014822416538701505,1.6334385271690957,-0.2070514678036358,0.6747653867114893,1.4701560976501662,-0.12446019749407722,0.08599736987381151,0.21358765664493806,2.017697815181108,1.0805440275321279,0.12980817564077474,-0.18760410723163723,-0.6504812130540729,2.759234210867016,-0.1225144533631003,0.23257853152823071,-0.09048420662108397,0.31891675678704834,0.5129781129438958,0.2571350900682621,0.3369436353933106,0.06281555744751383,0.23538781399474398,0.35163766092412474,-0.08304079222936409,0.3688997910563967,-0.30308738029701054,0.628435404506688,0.23437324901400702,0.6906530504421067,-0.32042394506731975,0.7502809541815576,-0.05143069981532781,0.4389826740546422,0.17842634413683234,-0.34406220130598,0.589040707136064,0.09593845475961607,0.7171332202582885,-0.8242420427271633,-0.29850917114631365,0.21691170389751593,-0.7156062706109889,0.29076391672690866,0.48144982670906084,0.19461842261156825,0.04340218039745647,0.7828518002504227,0.14048546177511567,0.9209469829974406,-0.03646306352323801,0.2008107405976064,-0.09440498409297601,0.1780293082152366,0.9104376101462464,-0.6449192856916492,0.07773862997724862,0.2949379172767856,-0.4379034228647558 +0.5686907802687166,0.9877606265137888,0.2133888147096989,0.05979450389368168,0.44757594471037276,0.217714992135625,0.25651359121906403,0.17923892654803275,1.6030852488044358,0.08901823231744468,0.3110016238341001,1.1489989522888737,0.6782198850225171,0.6178744263405955,0.17228631155879376,1.0775799907024093,-0.1278547289882489,2.707402935659185,0.28835484517324195,0.7715277449418746,0.36277390491029204,0.6094929741523414,2.071478329168387,0.12824567762847422,0.45464437366368804,1.7685689437337477,-0.025717612941344448,0.23292664525945356,0.7988614222640135,2.130484603680533,1.165726660072463,0.9121952806145079,-0.14174848032983958,0.1213853777281691,2.9430022340183224,0.39530301288177144,-0.3419420179839305,0.26984474332960906,0.27361544789969,0.3582152367413544,0.997263548519177,0.3906886190316535,0.24633980328825644,0.4935807710249493,0.9245423739552908,0.20664946979854676,1.4045879207158862,0.09050977342403854,0.04099208786464148,0.12268123484777382,1.26664769196754,-0.4560894020258096,1.274994882080598,0.2835137895489113,1.050613833284877,1.182521992879051,1.3895661333286817,1.2600497284451029,0.3011361504074035,0.8482160674033656,0.3270274266865797,0.1646459553522815,1.198932522560339,0.16308427531587366,-0.23851427083903365,-0.7851918266224458,1.4108105747171684,0.48120762668970424,1.0700827821611545,0.42676249103382624,3.406000324115042,1.5046245820594937,1.1922664321553857,0.5186156395402326,0.7985911333431707,0.5102396129258342,-0.9138618569644679,0.35436306898793146,-0.1624072948234439,0.2827241998972466 +0.26690163361647146,0.36331542103169806,0.40992104496702214,0.35387910604786654,0.5415112709968055,-0.7920802439033686,-0.8450602609112889,-0.10067217932824296,-0.2052401269549715,-0.20281511029145574,-0.08077492612317899,0.4632682386626654,0.4156413007550451,0.5027589798057555,0.20465079235144304,0.6814048273709439,0.9032687513294356,1.047514286710236,0.38526687074427457,0.39518797035117126,0.4245863826537638,4.454587776422482,-1.5638367554380646,-0.22232561246153756,0.2100680831843764,1.246319816795214,1.1873884563123098,0.018266221505800206,-0.38171667587199004,1.094848089165001,1.7169185230247108,1.2671604750855794,0.027070327297460006,0.5265231187535806,-0.21092761494424278,0.2429745706359478,0.30570067798898437,-0.5242170130141504,0.1275345769583215,0.09104870338208207,-0.20355273389419676,-0.12026061642093851,-1.7339799589785847,0.29062851137981005,0.20035488268634016,-0.29012709055632263,0.019596501169438618,0.474270390320913,0.187967085446623,-0.10823874811475023,1.1815201131946682,-0.26269998134970374,1.0886762805810477,0.2786433487986625,-0.40258198061689865,0.24495414733789841,-0.39084769728832325,1.4495681664989206,-0.22661643766626313,0.8139877051075157,0.37238606718957135,-0.6946200212283239,0.8285501130701514,0.21518729395833014,0.3462156161758183,-0.2786807232309484,1.1509671565506632,-0.07823109389508573,-1.0597346063427813,0.26328471011125226,0.5175035179091605,0.46367018570238655,0.26463420957586054,0.3957657715706152,0.24924933642478922,-0.5885816336085863,0.6918091216465246,1.5232171264835863,0.05770596295492032,1.1025700951701636 +0.08982968518671079,0.8382255065774744,0.5140990791772044,0.541683683778584,-0.09280845649637837,-0.10416867717562926,-0.5664775476654208,0.7196817703354804,1.6479467446975353,0.3070176110909736,0.5494611290913829,0.2139126471716578,0.21930626193942557,-0.4944366685189619,-0.2929914812767317,0.017271554573577846,-0.4025060346997944,1.9266786111103216,3.6397446709447765,0.1873918435016544,-0.06307369299249643,-0.20162249729678777,1.4734769543342119,-0.8914997768284507,0.1350684911212716,0.09160369034013698,0.04277153001054551,0.4788396471084818,-0.009793650976790913,3.0781265654773917,1.2994515393782424,0.28017333068605194,1.8831817688442816,-0.23551026968460442,3.0103491915808513,0.174602506023264,0.8292320029373773,0.25533632087797126,0.07486972527001837,0.15292573295587827,0.013972547020920573,0.5770759768399082,0.27955024528949574,-0.6742044195620849,-0.0416975887424926,-0.255589288889855,-0.029755123432553418,-0.9860231674005637,0.12614132196833683,0.5296769026199766,1.2031694041212002,-0.025742252912396457,1.044112526229024,-0.15404849933319786,-0.2451032070268973,0.879640699784944,1.0840052641210596,2.364162977628091,0.26014284437923246,0.10020510993422244,-0.8123566240995059,0.46422288481702767,0.5168183554255545,-0.14145582842138885,0.46454208586102513,-0.10017686022064701,2.125237359732224,-0.23692081844626703,0.8741266284061965,0.4738298549831356,2.595168561417167,2.0544579564035748,0.20854998756215187,-0.5865930938535914,0.47434753592400325,-0.6856109118318707,-0.0006585016043649389,0.08491531039703076,0.8606712969045518,1.6602339150676682 +0.106358883753909,0.8025736997416163,-0.3117643500663151,-0.20215350169343047,0.018361217018004028,0.5751999073631975,0.4160098973124224,1.267441327023022,1.0846905356885344,2.5634906570888925,0.8210923155107098,0.7322329204995348,0.6468367999722393,-0.009196622659121578,1.310690954501065,0.826838472791271,0.7013483794139077,1.0404467986648425,1.9337419436449974,-0.17440295629746572,-1.194144781005834,0.45603645017839606,0.2065938385331322,0.5643996500349928,0.24630621556164106,-0.20731013130487683,0.034154259661656305,0.16603463966537596,1.4129930517954903,4.285977768878228,2.5699731397286594,-0.1466281294828457,-0.5582945462008788,-0.6025268672604072,0.01214824466259451,-0.32320619691183056,0.6875587521689992,0.2510773945337566,0.33327486709614307,0.8566605612014706,0.5809343803770614,1.0215899108708164,0.20031707927936654,0.4534635301260769,0.0007989243334313723,-0.29645109809298104,1.412054045265809,-0.2816688034546559,-0.20325816238758304,0.458554173647891,1.5433560887064355,1.4957646254434391,0.5190006691911464,1.1900461450677873,0.19350090922342067,-0.12497696932425456,0.5228362326181142,2.0324769052655336,0.12328745279944786,-0.6270536135390924,0.6746621402876865,1.0227272574485662,-1.3414622432034613,-0.045853632546951795,-0.057436461465597916,0.45044614951274603,2.12176962346711,-0.07921903232585614,0.22499801189527713,0.1400692474045061,1.5477159474489837,0.13793403363840367,1.1625036446560217,-0.38988951970869157,-0.552238235925027,-0.10395777443088855,1.2287754198390233,-0.19217352579178304,0.6244734640405843,0.46839287322469136 +-0.14046256089055198,0.05271209286108017,-0.575724980763048,0.3388195197557301,0.3703403269538261,-0.7546412531360873,-0.7398341096968233,-0.39075540895179217,0.4625893869921317,-0.3909483025706286,0.1732354955452869,0.47637113552776356,-0.6451068694369524,-0.48161761045716517,-1.7000924485095472,-1.0488758768967141,0.4388304087708378,2.0980117081678746,3.562482183964835,0.5614724063221476,0.9243137690980407,-1.1303585583656197,0.07458718897254288,-0.15598235746040456,0.4303276668873044,1.2056160781765388,-0.28375322878132136,0.12373376679301396,0.7883366028188822,-0.6628146828404536,-0.009876260657535375,1.8991533334843569,2.9815612599734194,0.12331980614670887,0.2696825193351873,0.16123436176677353,0.6227498453179373,0.06009139300769001,-0.421884289352374,-0.7139264014587285,-0.19134206085051425,-1.1518879998003326,-0.04032928024976107,0.5942889909658465,0.6303115615928867,-0.06867635356208884,-0.04612384545693929,0.04113983895212911,0.8069190714885056,0.6670935042181335,-0.1780488517234637,-0.2719165794212983,0.8278366447471999,-0.7905886253129948,-0.09378250499656882,0.5959208009357043,-0.9673686598546659,0.27415792107194875,0.26323211623658727,2.215708360976075,0.7155472546113903,0.2603193435337441,0.08688392347327495,2.213639360490604,-0.5451316452420943,-0.31682126277115275,-0.2422392112852873,-0.29506632529573595,-0.5424723949019119,3.057566422045801,-0.18604182463101243,0.9575812953899465,0.629510393699525,1.9429059317317317,0.5760818994803851,-0.4633641969624489,-0.12906370664889316,0.9311261052930839,0.7790489985302642,3.973123365533728 +-0.022297945799397867,0.4704472038350739,0.8526467045306003,0.16915171575944965,-0.38419453358774314,0.31372175180775763,0.32836677179884627,0.1828728474137907,1.8673693466446872,-0.05364003505791244,0.33222999950679427,0.12734916293490178,-0.879907823680059,-0.8189602016422344,0.7717184928844928,0.9815238117654237,0.30114518058963524,0.7623790909236161,3.140480437214044,0.6913312926372946,0.0126932652298693,4.788250950521332,0.37733951606773736,0.2419368784125632,0.1707044662775145,1.8124716978399715,0.11451840183406597,0.40966346472967485,0.15123747173196606,1.6598774417789088,1.5925179023127543,0.013995188970084227,-0.1153960948095992,0.18132248469617337,-0.09765664233103583,-0.0996496031004035,0.7721634798371769,0.23491580334280898,0.057777962800596744,0.8000242161408097,-0.36185912417752075,0.49259923346993223,0.5747843240760885,0.5173788332821757,-0.3942867913509615,0.29323774882488884,-0.5153950491749738,-0.5896994900711625,-0.1218524475361091,-0.3850134422498393,1.5594885873399775,0.8694059688346867,-0.5209347172375585,0.7315738748449312,-0.038492293622305884,1.0506101750424537,1.3598236162401183,2.368195520995556,-0.03209712989802074,-0.41371698108411775,0.6339189883475304,0.5060482301378124,-0.1262062471548867,-0.5639473338553528,0.006722978015991518,0.05723790991448223,3.169275064695875,0.7192378062944594,0.7361842023787885,-0.9706109531990303,1.8523359267663546,0.33447956253362787,0.676733708806489,-0.4351988309741354,0.7829286468813519,0.0238002557317821,0.5365961044758087,1.6680639340178864,1.444985961533948,0.13595760332921253 +0.30747722237234393,0.8725352629226579,0.14980372589776525,-0.02101529590379947,0.41329824915717994,-0.05274414494283569,-0.01371560881988615,1.0925816781938271,1.222930169182003,0.3108984167344103,-0.18182592992556187,-0.44037240875528155,0.12830502891530854,-0.17821599915479935,-0.4594013860907442,0.19352382516125274,0.21015825437547686,1.6421044468880055,3.408890788576134,-0.8470821190887705,0.6636543098019846,0.211254462720951,1.2438057677558227,-0.038975576591283534,-0.2004007369202389,0.31088817782532147,0.07680923263056949,0.5516567461851045,0.3646197450138272,2.681309896299329,0.9831795830645772,-0.6293185261124294,1.5368759797007427,0.5445603359796951,3.2905110121891576,-0.028165694447952694,1.1857375355090423,0.3659683075914203,-0.16111997836047565,0.10567964739359681,-0.13530163405310236,0.3575480015450007,0.47262928498048606,1.019602444285439,0.4560213759064209,0.11653479799289962,-1.2231563397287053,-0.0036466481506433612,1.0609374055711596,-0.640742427691253,0.9409030129458517,-0.11516584218390824,0.9306099826466421,-0.35567757542942613,0.3480229002930944,0.8204547406022109,0.7927652355129164,0.7344471271881646,0.20843368608249707,0.48128044051433005,0.9105824647366552,-1.42205144992262,0.16992234392383843,0.27022632406599856,0.03595705132772181,0.25662101686337535,2.1285714762402983,-0.433946206537877,0.8922328395301884,0.8955956372135362,1.9089649074766868,1.3416170891594166,1.1209049864353438,0.8575899255541085,0.02581236492660932,0.7922448722106825,-0.2969886499648964,0.2881888930542074,1.1674784532245948,0.5158005658469047 +-0.804998678951648,-1.388192080026594,0.5047713702812,-0.7783393143061116,0.2299625506107677,0.5218755577529911,0.3616933546290623,-1.1085794382802094,-0.35462529393828923,2.401759148461448,1.3705055610196033,-0.5081104421060714,0.40131404868750253,1.4447775044848887,0.6372574805774655,0.3992706063289507,-0.248875407085073,-0.08049627569047019,1.727565584808412,-0.24489335690247266,-0.51801616680789,-0.34862417457253236,-0.3120123069706236,-0.19798615284819965,0.1292771253295234,1.6404894926099303,0.07632906541135032,-0.0317842495446331,0.39347895627920115,-0.49188596261130646,-0.2288692413079022,-1.445736562628833,2.3836163835083912,0.47495067772544125,-1.1292991689501184,0.49053085505343064,0.42766019849316717,0.7029774288893644,0.15338685813070266,0.5125880296030776,0.311874003074208,0.19762784175161088,-0.10479988416316194,1.4813760735797943,0.3671964302200858,-0.27348543488882116,1.2919230970527866,0.3270421158215436,0.3053151607046002,-0.003406824432655331,0.14006471727015046,2.200700715408034,0.4801131068375475,0.7931297235009586,0.12751782417212515,1.0490622251268857,0.22423738124486617,2.1401540058962025,-0.0883315179950791,-0.007608573577775335,1.0466910626630368,0.30409356535010357,0.7735509552672089,0.6157765804181159,-0.16743298613925436,3.2480667858182644,2.1354584798244143,1.1861409490436674,0.5106972827617706,0.3345686596264402,-0.5777368974583196,0.03377933836772007,0.7765496894285039,1.008792567744325,0.8788619612725022,-0.40441570661324655,-0.095198999529919,1.8450731626269967,0.9891489491940606,0.37889434433562574 +0.29471486605968433,1.0250075936936687,-0.4193531766710991,0.026725617824965187,0.2536769592709846,0.22638297847633795,0.09433059270709927,2.4917743714597793,0.9432671375302412,-1.9972792764969212,1.4675300471531825,0.434816122857197,-0.04311985745147,-0.2284541529483275,1.0896698826345528,1.2894547018450409,-0.08843494897181349,0.8017079817649361,2.4961012714440125,0.5177142901765556,-0.20478037373244098,3.481684736340843,0.9168476457383431,-0.08388913979869861,0.5935535264170935,1.3811732899850793,-0.5624904092036953,0.493163399210414,0.10019487460765514,2.0415876202146417,2.217742008104776,0.5553670972158093,-0.4558383344528445,0.6265570182145632,-0.5548195711901652,-0.23095513255864372,0.3129886900633414,0.3898570782632971,1.0338960072987546,0.43240841433128396,-0.13061562052818865,0.718741690188696,0.43785076487922325,-0.06474550011762586,-0.5987081197888706,0.6870208862152734,3.031466272686801,-0.014987795445429277,-0.3859133254891827,-0.25869115335540627,1.841291754362918,1.4449520182540887,-0.4190111335654922,1.0908421950417708,0.22947533855196695,0.08570557791932547,0.9566603873757522,1.3534788802769004,-0.2019362746242468,-0.5299435352005741,-0.9608481173354566,0.35227719097293475,-1.0222048289762018,-0.017664123783780412,0.3004914542753554,1.7099325776421048,2.207975173986997,0.1819635903632008,0.7637417666665378,0.6624855451996181,1.716637085956414,0.3424221960874956,0.8050062248504027,0.09684826421523829,0.36645099225971833,0.2457198830484167,0.5592885599822109,-0.004747159676243293,0.6300899625196104,-0.24732004654510797 +0.842806584494471,1.6420862214235654,0.002704630883478637,0.015181148146730522,2.0298255174245248,0.452188354515065,0.3621395873152839,-0.4394906718252116,0.05969364719231871,1.2242664487943784,-0.48644163968788273,0.05545390321084001,1.1065875091732937,2.109361555789928,0.9215219811290954,-0.27568695232653356,0.3417951487502945,1.7374991121111547,-1.6933623401467717,0.7597582153798913,0.42170583598632116,0.0683630506502074,-0.0471811614082701,0.08562011805863554,0.7182653243200459,1.7551792651637501,1.555629901201915,-0.015023859363859221,2.0690738389117374,-0.46276865672130274,-0.10733760018142252,-0.07211575658976588,-0.2616080744447678,1.7280817857852295,0.24939686732259603,-0.22942517760302109,0.08030527950075747,-0.0157655159845983,-1.414756119113051,0.5587441477462297,4.5011009267964415,-0.7371795722923107,0.5150019575388379,0.47124889261590464,2.5140440666871795,0.64566054531944,0.24101051037130114,2.0298216848885606,0.473482455942266,0.582972827335283,-1.087592812183654,1.5272818384128728,0.7994324583295853,0.8847539630093322,0.9168726180326816,1.1591961094086083,0.8844215897359103,0.38553067634983085,-0.2291697152151042,0.08409027757684928,1.9788055144832075,0.40171668809763106,2.2605300387694633,0.26556324035059353,0.5115620273263435,2.047032571426244,-0.5456699820888518,1.0513020798793118,0.44392053270907234,0.12597162953415325,-0.5811710286567482,3.2741655314515454,1.1789594534930694,2.2063224858016475,-0.8515562223676212,3.3200409523972767,0.4820689645574088,0.13510014889977462,0.3438343890568821,2.7560501177901084 +0.19027324256083755,0.3851998530430651,-0.5749719327371691,0.1619318661484801,-0.05249843736558363,0.07659897508465768,-0.12581892409431034,0.6314981066951453,1.3143955201787154,0.5726342575737082,-0.31899830468090046,0.9034950511967166,0.42502784418697986,0.1760431072594898,-0.307817991373286,0.4162975066136575,-0.22885887179939052,1.088555621130784,3.13208428918036,0.012237903187988841,-0.48698047430440466,0.18053069862610868,0.6732794938351108,0.2958198969131249,0.31174662255978774,0.2753791712186853,0.1991336595261753,0.48125985773545926,0.4992902175277135,2.459937678358832,0.6617899640961634,0.20976299014334554,1.9109244218423704,0.27781761378625647,2.7979055201303025,0.3985641733260656,-0.0589034901174077,-0.37005545563674463,0.006218299208297862,0.30071214008721253,0.1131005792235662,0.2011599749526744,-0.3312270953591949,0.17794910224762792,-0.15922884671005533,0.2387640664185704,0.13190259734239687,0.6426652700696929,-0.7699525675655026,0.42291295188081124,0.14469100289897407,-0.1472700820679332,1.1900869498842106,0.06304830120352375,0.4399940161521325,0.37798897600114484,0.32624390545513926,0.9289274805162188,0.3446432075678297,-0.06024820496794758,0.1629219896082834,0.040929124057932864,0.5193185746086748,-0.23827062521191145,0.45710169658608085,0.22836785184959316,2.1033097264340914,0.13843669695256738,0.7594437480745653,0.6266278901932615,1.9878832413496341,1.4514845977208608,0.39226121440201717,0.14349901911739682,0.3916671496451358,0.32536839872408585,-0.44028934539634623,0.9484197325071879,-0.2468746653039787,0.024585895166580163 +-0.011997819092472705,0.4752319366398319,0.27787783690237994,-0.1504058270355753,-0.29814888407387047,0.7548206346472973,0.5903636043158828,-0.7765639882422408,-0.3077017031529379,1.0473243025685928,1.8176739150927506,0.4402942359437824,0.6551597230548545,1.0774404917149731,1.0823130917919863,1.088345437875888,0.4267228730974472,0.308306922331371,0.4465141712556731,0.3580161985556938,0.9005490002096914,-0.05820192834650017,-0.21147064248560374,0.10358399814052616,0.4818995601002814,1.6089017237306902,0.0812451184959233,0.19751482142916718,0.17390375956468457,-0.01803144608774757,1.337581615183052,0.19761148294614345,2.031391634335879,0.49865510080466063,-0.4388837399417429,-0.6308327819437235,1.0113869049713502,0.14407882543139075,0.527374227312131,0.8930942589948621,-0.21455429937111997,0.8341107094975243,-0.20339003531839672,-0.3484606376061989,0.5070876236285035,0.5035666157220505,1.2754885840993149,-0.008940479792537833,0.3122863411031067,0.1512875509833155,0.7262889945049875,2.333299698412405,0.970925038568855,1.2543052404449087,-0.17062355402397753,0.7836302410426075,1.0173175563668377,1.5342305071307214,0.49716483933926353,0.37723328652026245,0.6556284895153403,0.08931957926251621,-0.32181809891563595,0.4138003321154242,0.1221519848866305,0.5196581256106305,1.8210715479364092,0.5227939629440979,0.4559909387892805,-0.15537459058742573,-0.1803377210667982,-0.161605136261518,0.5219074318021779,0.8010328150084439,-0.3215817485237752,0.25364924850014714,1.3017862958507118,1.0981152494111497,1.2398486808426574,-0.6417132689400868 +0.19035485132286273,0.7248892564922333,0.4608709703317976,0.08215873728362486,0.3510165943493669,0.29034471017860297,0.061319681460065834,0.9258412761044089,1.5019307721517963,0.6454950699701969,0.2928150672248463,-0.16153396991229527,0.7981268846314165,0.07442047281932945,-0.2371736830576245,0.6473380568676822,0.11001942316319654,2.037456798998554,3.292827863584586,0.6876320794781721,0.5083887791391544,-0.1035867569952855,1.0006597469201364,0.5350927256095669,0.41169753227083294,1.9966680182862322,0.367746361251283,0.7870277822465679,0.5825645828135184,2.963365709516385,1.4628189118818096,0.7496819623947206,1.6820232835809146,-0.09639069499699515,3.191916645947683,-0.15731988980281364,0.148069062945204,0.39215020574252557,-0.05993269884923105,0.33920791462486,0.2949931247828236,0.30050485122304454,0.34812338046522606,-0.5761707159121199,0.6466506515029116,0.7629099062606974,-0.2177688118021777,0.549716736964122,-0.8476103569382523,0.6412200863035945,1.0455919776384417,0.7698455958590248,0.4409643562532427,-0.343040689648192,0.2239827447387947,0.7100231567874867,1.1793933006745982,1.2407397114366094,0.4072806594052457,0.20326946850577104,0.9710264850491694,0.06472952446619928,0.002580044530863579,0.20479279130509065,0.48290753970593764,-0.010024496746028955,1.9108812481076105,0.7180783814134756,0.898460089128954,0.08562151593968498,2.7348884738058756,2.4621349973552844,0.3218152311218466,0.09163531704575933,0.8238827417600285,1.302104646930517,0.6193950968324021,0.8830944739678008,1.2015177579796519,-0.14559135285933905 +0.12328240128197732,1.0272587957064099,-0.43261132566550214,-0.16796875819610219,0.581961068765693,0.14109125387137744,0.21712707202325238,1.004542709897795,1.6917487595922973,-0.0435763996453347,0.05406479506005374,0.6244560138011018,0.9606159732828262,0.4065226601981252,0.839453001497091,1.055585778349966,0.6153068196459229,2.5777616356446322,1.912737912327795,0.7386681864244625,1.1334684994534214,-0.19200645935602978,1.0536993115721403,0.4754017301539057,0.37125258076697,2.514647680387987,0.6923258617630088,0.3614336982109321,0.6840392082140676,2.800610268338891,1.50772949645149,0.5572836890811691,-0.7027128892959138,-0.9122357388515806,2.962886895040242,0.9117942366722241,-0.9744670510174787,-0.17706683559204162,-0.44988741960052153,0.2041904871206906,0.5095060578058475,0.6054256391674935,0.21321413333346417,0.31623469514639185,1.1027841106098757,0.7659441371500784,-0.42065312259830406,0.16032483029630484,0.7924692151218096,0.8679369864865468,1.5145959506788524,-0.002768058650045424,1.0293567937179842,0.8932313271959542,0.6270579089000895,0.5445298986434215,0.8849213164529673,1.647390307531283,0.3698731277776529,0.6671528719877643,-0.28485942628103667,-0.5850232178501762,0.36622095028797186,0.6371508140136686,-0.010220306678926538,0.35553608655003605,1.6400946496990283,-0.3157764205369555,1.056132606207722,0.3462480406923536,2.742180724445544,0.3021756593554433,1.6506445897200892,0.8467105798715733,-0.5286580374215522,-0.09136462002745616,0.24130601987207678,1.0965770447703767,0.2848836437892642,1.1036940996796778 +0.68968978783485,1.3042321812364914,0.0932034831017938,-0.048634804758718675,-0.18041308229265063,0.6128300424750313,0.6165371114470648,0.3623188446823973,1.1050913578371653,0.1963571626424121,0.32459818429345794,0.19256936791930124,-0.6755439955034166,-0.9262924347322805,0.4994857077143351,0.7750964499465801,0.4131387893960492,2.2102144693785184,2.9853320048976304,-0.2930817070790856,0.5967967707985853,0.5508635792993362,0.9580974120594135,0.1583072508018694,0.3588885842150665,1.5838910518403044,0.33170395056346397,0.3168279411985579,0.35978567559605595,2.17769857709566,2.2479728844482953,-0.5045169860220309,-0.33543389781462524,-0.315530277525627,3.2094751979981724,0.03278838052014815,0.368465619835476,0.14504275696511393,0.5886841763045622,1.1877856340892892,-0.39231087299473655,0.7886316501678271,-0.13681103729288124,-0.01702313976786729,-0.10543629702807916,0.5602943809796008,0.7184157695104311,0.6984240877815463,0.30695223674004957,-0.45828616402247235,1.4977717930833134,0.2631161891029664,1.029382841584883,0.42403880652390363,0.43400953959063077,0.27990640041521897,0.4355340449426428,2.4667065510329533,0.12256246187387859,0.12950754469866071,-0.17349279881270935,-1.3292941395653262,-0.6491965988209305,-0.7036812887503198,-0.05792134717693062,0.24933124706392623,0.4075481457800062,0.7469288649492583,0.6884508527531866,-1.1137675132644533,3.157136182051323,1.204946858010672,-0.09081741472678143,-0.5343343476902832,-0.5528610044674291,-0.10492330723221027,-1.074406183065423,1.1936033121165257,0.62403231360409,-0.22610249451285924 +0.6182469421732838,1.2683154057546497,-0.03907617188112272,0.26627749123604466,0.13818580253366197,0.47757972184577735,0.3963175180504894,0.42936087377884047,0.3033086273161047,-0.2081136670365721,0.08919681156178146,-0.07677593273754105,0.3989476008138638,0.4074875748873988,0.9326277641068552,1.011308246156106,-0.22692310550217967,2.558404868246464,-1.1650139594729358,-0.20294386835606243,0.27364054276094796,-0.6998089221369947,1.7992832665775915,0.3014756830064719,0.35988414471496394,1.7942233227578386,0.2884797883026611,0.28811212674235637,0.02928418327696014,2.238122684915568,1.861259422946502,-0.13104378747966317,-0.41232525204381065,-0.24654860148645188,3.4262036781572816,-0.12188835056238034,0.6559535614274845,0.4135518648475142,0.09780656867799065,0.7265612109721011,-0.11943697232242312,0.5507775499235644,-0.29395190585406494,-0.1915572182506114,-1.5214900806851543,0.6312152469010114,0.16169998607417457,-1.30691570313633,-0.14196194033007767,0.0024870182982482114,1.8597147825008014,-0.022561405544473667,0.8508648047311917,0.8718969303467445,-0.059850466981965,0.6261301205166829,1.0287344310106943,2.1921224712961407,0.19551993828960054,-0.27862402741009734,0.42358259415563126,-0.34798089329091597,-1.2536328002429933,-0.5982066215020326,0.17319535532329566,0.04271837243092616,1.507998752011589,0.630432945042067,0.7477693502844666,-0.19477916222570696,2.8433982707949053,0.6557282518146283,0.3708096415132517,-0.19144679924868802,-0.08472528953878714,-0.007759557871173162,0.04167463248184902,0.5525356627230178,0.5142755998682759,-0.3135749212031885 +-0.5680868970108686,0.06003471885855871,1.0431280156936933,-0.05429382149189599,0.10199052777211703,0.9477909980874246,0.9545375212650289,-0.5720755429202967,-0.2985650389706873,2.1866778961470166,2.261586028908495,0.5212952617723866,1.3353911542257784,2.091777697971025,1.255472517698517,0.9931978457142971,0.7101915493458385,0.9475140887678648,-1.85444393119507,1.4593965002954217,0.5874403508444895,3.679069633841894,-0.29548849083072487,0.11822912808602959,0.3231712057205284,1.6342374986549228,0.351171446502509,-0.007867526470130393,1.1770334098612902,-0.5674433638922944,1.6262877879111322,-0.8338074300325373,1.4276144798456731,0.30967451466000684,-0.2871731573138965,-0.26511103675880066,0.23915451005279054,0.23186973037014713,0.8483490876052263,1.1265444201758923,0.8920984858381138,0.25548567635923974,0.5935517049881592,1.6558823178915392,0.4716603057481321,-0.051753395560162896,1.2771182177100733,0.2927744253902175,0.2099826594759393,0.27364755165529964,-1.0024478583012215,2.5157706065819014,1.109120514013072,1.2590659980383228,-0.23623934888837006,-0.04397984153756418,0.7275089835184163,0.4343503713532093,0.2771338936485741,0.5592698850882922,0.562450738153497,0.8529539747418446,0.9302482130872086,0.8863010351047764,0.8501861078159287,3.864032075268001,1.5771404162181755,1.3201214421838308,0.5496312725932146,0.8758635709154758,-0.16336045565769602,0.4510732855407975,1.9051792309688094,1.735080577849823,1.1927974240219743,0.7754532110683512,0.6362824939729516,1.8828112677381856,0.36423349413643313,1.0585108256718545 +0.7542648912964366,1.5216705021590389,-0.09761823217980718,0.47546825881794164,-0.017839147788032104,0.40456806657201466,0.5116555328667348,-0.4785848224143351,0.19794091440984515,0.30598241020949757,0.7547724407813308,0.731809569682018,0.6058122499957285,-0.5787882041905149,0.6640092387746716,0.663403624705851,-0.45777620138309916,0.41121255604594986,1.421224639654958,-0.19413795546405133,-0.8419174176005215,0.15323142076955687,0.20814014291110633,0.34205935796492054,0.5268774809951383,1.131722069342198,0.19525281617138107,0.15157090645838442,0.04823676111422913,-0.20938615961932736,1.3325647942060708,0.2707697926993429,1.5784375851223633,-0.019649016980780733,-0.3470788571434616,0.10331773248742235,-0.048690886134704334,0.030555139297532445,0.019961305476550128,0.5928646787871069,0.13125925280391082,0.34426176165999506,0.2714556498721455,1.5777705348164643,0.020806607345987896,-0.2341189317772545,0.9303917418702927,0.3231195675184747,-1.0369305610267308,0.6952360133014196,0.18709307763282224,1.713131971496606,-0.3886440436143626,0.817428761661051,0.02290687570342359,0.8186895984923552,0.5909123206534563,2.3262048791708505,0.03003190867266433,-0.21177390882083194,0.4841381049606043,1.3245109492839717,-0.2686909654614588,0.4418755648255179,0.1513743679901229,0.7287504996060291,2.7277274496383237,0.2183037261312625,0.6020532244731812,-1.3434238223468125,0.10840973310299461,-0.11171615693494677,0.5555416374263858,0.7389292545986298,0.12141546355351313,0.5995206401250232,0.9322707748707199,1.1293045816606544,1.1711251105428286,-0.5604626952927352 +0.6913072742774835,1.3242975186525963,1.2323954700384252,-0.10182355254999412,-0.12992058011697633,0.11418438700644282,0.21559997579249376,-0.5628317967796462,-0.43751116385296146,1.048083829724108,0.9300764499815993,0.742886786363468,-0.17226695544488363,0.1277283236594703,0.3557041385185401,-0.022291867699481244,0.4672746087431545,0.08965164480784985,2.1105414697004177,-0.025112823877778037,0.27027739626779473,-0.5318941088382825,0.1674666363074628,-0.17361679697129878,0.2515889148578426,0.04238080800573844,0.09313439871370001,0.29860086765585536,0.2926728460464468,0.12459702275393134,0.7624894209220298,0.3962888207082158,2.152230068220048,-0.008265733034361525,-0.3508140636203094,-0.018915337156906728,0.5215429457066888,-0.1405717937152396,-0.12548663138910293,0.3659430922723921,0.15425340757065503,0.6771669404810812,-0.0659593508023044,1.4804315034642974,0.6543713802159764,0.6377856204760367,1.313240431284479,-1.0509466002856849,0.3595803621968753,0.8866844505865588,0.27612911191436806,2.1543781324222264,1.4104794812807455,0.6665183150230956,0.03375782588831952,0.8283500798861259,0.3652179312988766,2.525056973432529,-0.14025028175995835,0.34589701972031395,0.4983709515586762,1.1575597192850857,0.43909520798288526,0.494372203779215,0.852573672399102,2.866340970233421,2.896915633465369,0.851270561632536,-0.4405007881544801,-0.22697989342244898,-0.5844438853094165,-0.28029098271053193,1.075635047063599,0.06810058768284469,0.4194393739178252,0.6155545003004017,0.9201976491709845,1.1378986913591094,1.273761136144806,0.37821634350000777 +0.190027153618108,0.9185234090971692,-0.04603687287357533,0.025720127194680475,0.05854082028724861,-0.3496453673503023,-0.39435860356961827,0.8689232349233562,1.726810341344516,0.8295793741874978,0.5027252375307564,0.8324688995215989,0.7589021400452246,0.2345740102221231,-0.0728461546185884,0.007595552280894868,0.26543029301430077,1.4190256780606647,1.6953719883420124,0.42119287872399613,0.18545278787401243,-0.37285124869667685,2.6992772040726223,0.1368121610478858,0.6678579508666073,1.5817178418959088,0.5254073031138378,0.7259375899817242,-0.3942332502709385,2.6822914113943623,1.303697711636781,0.505505969456287,0.17313802847478488,0.5041308241164234,3.2973025668981917,0.17875338067461805,-0.28057468633612526,0.2439661221665671,-0.10167300480574698,-0.2671932317625032,-0.5287135322125998,0.5963710211886095,0.4054751313043649,0.7231909398716583,-0.06267775428619282,0.4217993230082055,-0.20755157642074373,-0.2009093842877548,-0.3761404585180274,0.30411121722027756,0.4750215397163077,0.25531274483866623,0.9052134496515019,-0.19209855259642483,0.17693772967207466,1.0978449645617088,0.8088412376027919,0.9656044319249462,0.5555488521944045,0.2609148513941967,0.0973449721359122,0.04792693793129171,-0.20288552694296325,-0.025301362581513942,0.0686716293873369,0.1249502779694705,2.0813723362683256,-0.3024505343093609,0.9585609972345801,0.03248237808692822,1.8005774661264204,-0.29535565817664533,0.6692040834223939,-0.07441105450044994,0.9775076719800707,0.47201882007315976,-0.4305027875808305,1.2718368540944092,0.9524923230324938,-0.8267475996157551 +0.4092875441528345,1.1673007471804664,0.17847920907562825,-0.17234007944467222,-0.34336127827004514,0.6000601743077789,0.43601410285054787,2.1158106448715923,1.2910142207563091,0.5600603477253953,1.4908817974134754,0.3730436703887686,0.2487347032845576,-0.3376943504786495,1.4835444480875595,1.5192120616607203,-0.20704235334843352,1.3321170460500675,1.220765901702806,-0.3392118537723474,0.08155741722153531,-0.2518888564637538,1.7101647196983745,0.020763314286943113,0.43648208136873157,-0.43510819406211326,0.010272862486475298,0.31513983048027056,-0.2971464468351138,3.174415966067406,2.8916213044316117,-0.11131392478956958,-0.04511906864312282,0.09860414541096707,3.9425507025439726,0.22586170862772348,-0.025321927754114737,-0.023985284004977903,0.11944009815312712,0.8001285542027929,-0.4594778255102878,1.0947249970711759,0.3221624537073948,0.37415097756984866,-0.26079799223169076,0.17812792991664417,0.6855788557064879,-0.98759238813693,0.23885825620705026,-0.27652768629711405,2.0176791612959066,0.5966617071494018,-0.06740637285613416,1.206265956274296,0.16804467846865268,0.33080288741273284,1.9911414964952376,1.865355792823829,0.4028327811007366,-0.6158986453628911,-0.9278155649438355,0.6849741565518404,-0.3148620238965981,-0.7248335007495584,0.4378622878175458,0.0685252059600917,2.112986348800706,0.802861001981854,1.5687600394812824,-0.10391529807839761,2.677581412494333,0.7344728618461347,1.0683166203251657,-0.7559553195568807,-0.8063471450619241,-1.5965374364884088,0.4100167032755062,1.388420398303234,0.29031970353354436,-0.438384315268749 +0.3139637998735075,0.9969547915496418,-0.1719740378506932,0.15879630386135246,0.6359425139664827,0.3020573900903467,0.2965985155212375,1.2487692248277855,1.5679538313883732,1.226511704123895,0.29975688502446163,0.43018186619972043,0.6732415763902708,0.8651959089527248,0.1468348407894526,0.41407115516654724,0.4616710477468493,1.0841005432804751,3.3811575866150876,0.5955805070248105,0.6075737440301832,0.17813405858496867,1.6574455596661035,0.08506824789796591,0.15389311725922478,1.8820471656573257,0.4821355917638864,0.855139604337337,0.598289132693207,3.2044722500082328,1.6229454703509247,-0.019403348519602015,1.5757476286395748,0.679881721991964,3.3153009675197125,-0.07481507191365122,0.6310713223931709,0.47389777111335973,0.3137730966445561,0.43978863404330787,0.23976197558981438,0.26202200148910854,0.3586659584457342,0.17555251199568322,0.05957488109128001,0.30937543089427777,0.1294660447199309,0.35132976294389545,0.3256073043411761,-0.678426187826626,1.1373378661762903,-0.14977440759780328,0.4947395999598515,0.18854776609751056,0.7552057934817519,1.0682498808226872,1.101329847323332,1.335341048537555,0.15872463219705102,0.02948258953298377,0.15866962182763494,-0.21359110578985885,0.5149448619255638,0.8551414515503671,-0.333761408249999,0.04384237673521582,3.0070876498626693,0.37696582273970547,1.3184646657501387,0.033513640820999724,2.096994825335116,2.0892313535543625,1.0826394454222354,0.2546139207727265,-0.016887804055680133,-0.37256924099941413,-0.0014161573729378762,0.2527048775938902,1.0036995498438925,1.1165091975979684 +-0.10986655881223298,0.5418200924383468,0.6044630532593609,-0.06833211733220795,-0.1485083248039611,0.018542559641177528,-0.06262128638979501,-0.3481583012848921,1.4569511043402488,0.4861412565549213,-1.609133201529938,-0.001988636381332551,0.15056148417162907,0.1612778443290724,0.7166030595443178,0.870562724044581,-0.16777985795332684,1.6009570380259919,2.42004352565481,-0.3902017942168994,-1.020952051875077,0.4529611576327213,2.131117977416506,-0.11370265623378516,0.8230479290085734,1.5203439818538074,0.3172776645211992,0.5715825125574888,-0.25774321483134577,2.8679451196415475,1.5953846054953396,0.11041595604852245,0.06122549215886675,-0.16969490669204026,3.456354746308362,-0.17913965827506004,0.2168151510793595,0.03714670585513054,-0.16885968066758372,0.1236902398430386,-0.7908716140705042,0.5353578934519123,-0.3074285367028108,-0.13740055225448355,0.4483807469914983,0.581017695664815,1.603054058152084,0.16193671780160468,-0.07298531201588321,1.0449359665575135,1.400096454510496,-1.5754081167264213,1.123726424166051,0.5383327234194408,0.013409201990948985,0.4036703241759615,0.9327216326161113,1.9919979713554006,0.7186358942739263,0.5139344084333471,-1.0897629381136056,0.12992693821011675,-1.154798342934296,-0.4806954453363727,-0.465588297835127,-1.1602418113518587,1.7251644361982836,-0.30332147907710394,0.32449420931728845,-0.07438969953739577,1.8537400724174584,0.8597642811027977,1.1265278332259991,-1.0215936794102867,0.8323949927684963,-0.3049728291548297,0.5565777597574719,-0.08258879900608351,0.7178863757182476,-0.1624213424131221 +0.36793391350077237,0.7569965085979654,0.9058348512917405,0.4598916732700778,0.6926419359248581,-0.21329206826188893,-0.12495648459955347,1.1069072831816997,1.5493499501014254,1.6390927665243522,0.4718842631549997,0.016374960907369215,0.28554922594674087,0.6534449210099584,-0.3546351504396938,0.6465272116361048,0.945354720371574,1.3692472182120035,3.6830492076492107,0.24059259010052675,-0.3052880216305062,0.5716198123367651,1.64891604978931,-0.30407301614546894,0.7895264247265117,0.6194225812175319,0.25986455909295836,0.6693981164754318,-0.10181687332613126,3.013879507839641,1.6481527208602373,0.03847383540808805,2.3277961358724926,0.07231963435057684,3.6139687495452653,-0.16040951520641344,-0.4587296400094543,-0.09844574144604407,-0.639940256137048,-0.027028064300351887,-0.2137558447278886,0.48805477950089887,0.20310398906834015,0.435513098463875,-0.14657825933198132,0.4912198884009578,0.2302792973938586,0.18220838207215376,0.9247807616379649,0.07923708091712256,1.0980712429730837,0.3843976814633205,0.6251087905992416,-0.416502437310308,0.34985143014131315,1.1128324654459627,0.9791937833649506,1.8469733480650388,-0.8018505161048707,0.1120284342731799,0.5432699143415333,0.14771483887906528,-0.03191781272393633,-0.04637613308971705,0.15389616216528565,-1.1480130194730642,2.543333919329715,-0.5118557931543128,1.1544735148996728,0.6483184321242105,2.119929899846407,1.5490322815201298,0.9595702340390173,0.31468850843963186,0.8495394932429505,-0.27839220337930665,-0.17730622091987563,1.0302706398348342,0.5758803425017668,0.43430935119326086 +0.24930240520610694,0.1847163489727016,0.3125724263595034,0.23015949619558754,-0.394487602831439,0.04730027594069258,0.2600258352011254,-0.3444205466415009,-0.016206144077256047,1.2993280747924358,0.013379088230055946,0.15036182695727263,1.3493500781639343,1.0383002990436885,-0.5936308154316443,-0.5850951253797378,0.24038392204007897,2.5342784032033325,0.3658828121922031,3.122480887917139,2.498059674143887,0.44550387206664877,0.1478853633646031,0.09019132895710305,0.4914100337056424,1.1370274021211488,1.0750452304240554,0.10443672595505318,3.1491885240336046,0.12566171909441,-0.44800954172357405,3.7720562529737545,1.438025137669579,-0.013134948227378401,0.18141192709341752,0.5152482905516409,-0.7357619055134209,0.19111192735527507,-0.04916653385592922,0.055034349700514955,0.14441762658971657,0.34235801948045824,-0.15762966454288216,0.984523817542953,1.6941266054398378,0.2650547434033163,-0.07654234482752201,0.5532606858233263,1.366811125537673,0.4773153069327903,0.49840661331777397,0.14931268667607223,-0.38442997277638125,-0.46725427909000544,1.0789384416846173,1.3838335837639941,0.32541187682187667,-0.2708664503268692,0.19107209952277518,4.012097746525936,0.7154263833793006,1.180368943945716,0.14515128641105302,4.168017633574605,-2.1466029080847977,-0.14249698638713287,-0.5037485408277458,0.6507906972189081,0.8483150608899215,4.508874399986762,-0.5845694569173634,1.8655910376558367,1.0716707390500066,4.193104795811323,2.555081802178777,-0.08445118576078077,0.1538203858181377,1.4219046216966162,0.4821701352750776,3.7896397237186017 +-0.78811093820505,-1.6054062390023085,0.01960622930312189,-0.1085514334517661,0.6266899777133754,0.455451549405713,0.5031501394040389,-0.25457804250163263,-0.5686353422479397,2.6166125578068975,1.976369418453254,0.17634480321689516,0.32622542037256885,0.7698961986589085,0.5544615012105207,1.2229371589515026,0.664902596527933,0.7368922533078055,-0.04288183478329066,0.6893495107931471,0.51721970609251,2.122092202626433,-0.4131407997334665,0.0643743183351364,0.035954148831104815,1.5863069771100924,0.47085723131713575,-0.04544264304451545,0.5814447794283502,-0.5545751386147633,-1.76776285818737,1.4598698336941685,1.9629422095624158,-0.15464132454050739,-0.6355871978514057,0.5237753344103867,0.18426001303608386,0.1739943582958482,0.5156744815216755,0.581038372751064,0.30321678720193534,-0.17916845256791508,-1.334559717456641,1.4602611609984462,0.8665678474109403,0.021272873837037243,0.5418090532366557,0.9227027562793054,0.5626289016150107,-0.46668492200872125,-0.3197680053069922,1.836447116970668,-0.027563394571641198,0.5897586673836333,-0.004655881587229627,1.0046884770597395,0.297076912645475,1.9548398707177872,0.21489126528332914,0.1442707515681242,0.8943330882663044,0.86201946695874,0.8545657090086225,1.0985977019584106,0.18951801818418945,3.56838438878694,1.7061004589743525,1.4080927288217095,0.4948859049940667,1.0349897457366737,-1.2634904387876809,0.15686015761153593,1.2976496795978034,1.4655448429685183,0.62850526767577,-0.0005878336871160128,0.4797098274318462,0.4520859988747506,1.712653777521727,0.9427649445816022 +0.4597485569298394,1.3762559593085564,-0.6687418422419492,0.2206051066858326,-0.01618188848248986,0.29049918119739665,-0.012316476290758716,1.7170677250156419,1.0542473615009853,0.4826722904168211,1.2329690657341776,0.4569574783797982,0.15428394677352225,-0.632210426056916,1.4054626284079306,1.1697731288800828,0.34015656776436776,0.7867018125656245,1.7427405786506827,0.5480767189036757,-1.3081218319385661,4.542907747685681,1.4127073473788343,0.11234332035329209,0.5343488422934265,1.7943340686581053,-0.23705650831539843,0.30756970336821504,-0.014775371761961531,3.1418071495442828,2.1706584890030056,-0.22047705338689616,-0.47993412277520475,0.4005631886108842,-0.5755471736471095,-0.061340540258527865,-0.1899993691537999,-0.06600525765259735,0.4143969338217483,0.808742531245119,0.1092667289466992,0.7607397619760228,0.1554400168906898,0.7046053945787318,-0.4777665352723043,0.4926445749444136,2.741213691277919,-0.09659897665077499,-0.001307837316244398,0.5642879894093553,2.089151645466422,1.6146688499792825,0.05174047250678382,1.4404417332306427,0.5949222124855404,0.19942271364221575,0.9763301772818256,1.7858225032922763,0.464092490957809,-0.7837590993078177,-0.697535017190563,1.2203695379699757,0.14513332489516445,-0.8486889956070952,0.3449981909860369,1.9609424065833025,2.007773706305562,0.5750696127160408,0.8213946526514423,0.184591983810366,1.0146242849557103,0.022579058157448484,0.9305828236578165,-0.6461670329590669,0.45959105995491384,-0.6439701829062665,0.6954505737519687,0.4288566320213621,-0.28429884879907524,-0.2303030589224504 +0.720562507254757,1.3164377191762417,0.3790889596408975,0.9983910326856937,-0.26813362236451244,0.185404019410299,-0.1099241216969587,0.6820994649137495,1.513310433068851,-0.19980517844879386,0.042024634730353685,0.9541604946301798,0.13602365268479583,0.9303395754378817,0.23714260835541384,0.19906592563441927,0.5043555261778743,1.6747007650802332,0.10736019483889606,0.4167435380781165,0.6737561441483751,0.3995420227365678,1.3362513286897955,-0.6373639097591068,0.9482510625925554,1.7040777503248872,0.4939247058814643,0.018065744141889883,0.8198224621031875,1.7156656272712905,1.1617370416132813,0.3019648488408524,0.3363972182106024,0.553026511970512,2.9055247528403516,0.45024092212566175,-1.1089505192656903,0.37429416992856157,0.0460232740424138,0.4688452601728926,0.9804122715062012,0.4514231024029678,-0.281410205292066,-0.07304396510223238,-0.38047327639996553,0.3664010291179153,-0.11847869266473621,0.4109130267932431,-0.72322362253935,-0.6339544237330608,0.7958053524572214,-0.1089317753558382,-0.1625253811220359,0.08839530171006468,0.019620923042141192,1.115321676053162,0.678573908859962,-1.2828169132821938,0.5538600518383892,0.28752994937732945,-0.4651263935778274,0.37768828423789846,0.5862750210912482,0.12902063407908204,1.1870780226908326,0.2621072741127816,0.7273692462769481,-0.42739199950792667,0.8485932264949494,0.9088576980849837,1.8221718636865947,0.12806561792059123,0.8401157145673224,0.11204899070874186,0.033503978370332144,-0.29444243218260324,0.11584375969073274,1.393192944023423,0.1920977069967149,1.0432772146950566 +0.41920907203818175,1.0098108915831048,0.08418868819072191,0.7106159252749278,-0.01972806539038992,0.5165432442265601,0.4230781672985876,0.012579461626026682,2.0558472962328485,-0.3879860844691138,0.2704408029227988,1.044084790979273,-0.7454209783623819,0.45290073808379433,0.8247115272864831,0.8202584982032067,-0.09616168213193527,2.7643187191870386,1.1757057869354683,0.019086623597005897,-0.21676069455177638,-0.5800699807610615,0.7528050862095172,0.08924426583602309,0.5056609258297269,1.596139430978246,-0.37563652238107476,0.6748049525862161,0.4722803321613047,3.184068048913107,1.7726742076511788,-0.08145271101601967,0.23316506858175592,0.6165165145787872,3.5175017818987064,-0.24092069728449675,0.30362315820587926,0.2621999446484356,-0.09771025053512059,0.7675249492659874,0.016156716299835595,0.8760873650123265,0.2740931834194736,-0.35950283685292905,0.40008067339229225,0.44489651323089824,-0.40971417383488806,0.4850520814285853,-0.3949247346247472,-0.2667414205003154,1.305423441162044,-0.12058592243550575,0.26764066059742275,0.7107944127041119,0.9671187760369344,0.7703318343756413,0.6238967151998207,1.6927511802558652,0.12391676789688236,0.27456543791282934,0.12521024149236865,0.3999713698199221,0.5743209166375197,-0.6748701852119234,0.206377787721265,0.15282871108691629,-0.14492443510078565,-0.04895295546296158,0.9205906083168207,-0.04638984258659854,2.8637806054471713,1.4616991507767758,0.5091496011730174,0.20232560134694477,-0.3358180956206571,0.7424030122456888,0.23209754085390502,-0.012327502051936877,-0.0695189018314698,0.020614659674482547 +0.306538376557444,0.7731603983243653,0.7252202466922135,-0.04876459809469942,-0.11913903709097229,0.2822837054193272,0.38384590584277,0.7710811914267334,0.4445671244727366,-0.8998471892412361,-0.3545978104564147,0.018664691443235903,1.0349088578395322,-0.03693873116420786,0.6703103478217308,1.7012174371559186,0.6958510555023829,2.1883748000757213,-0.2171867731758403,0.04299653760838519,0.10298468008167003,-1.03615997426471,1.8454913727160753,-0.03365578216982447,0.7050768636398115,1.5376296928999542,-0.09980295924089275,0.11811063892975023,0.22926865788864165,2.5913705945723873,2.3229956519012127,0.042640727021315494,-0.004123210479136698,0.2569941877139861,3.472539683809865,0.19860086333433036,-0.45653482338161067,-0.5015968502305121,-0.07852555635598485,0.46229505410350524,0.25052952143135454,0.48069067449981084,-0.2001097372960045,-0.12244459808579362,0.2130992103729106,0.06875583766035137,1.772410077866556,-0.508411153824092,0.2337454088857784,0.08112366466454235,1.658105540337299,0.5196617025940435,0.22116587923179012,0.6531779066918201,0.15142369450345902,0.9325077910706334,0.8811011211273347,1.8951073161198089,0.7410831377838477,0.028877179263873204,0.5462119334791102,-0.25553232147679694,0.48193378317798563,0.17079575642498332,0.4657155152416935,0.8684147915414281,1.8347832712438124,0.9070318314127777,0.7952295063984687,-0.29245726423758744,2.5254556891015345,0.9854783425813607,0.04519521194282032,0.0008481548215812651,-0.40108575214504494,-0.9682250839388862,1.4574361410764063,1.5428727202659807,0.5773946410215408,0.6902515836845599 +0.4332649187051628,1.0567799305441308,0.6367490828066712,0.48800243304777746,0.386400927702904,0.2662037620491121,0.19372429405922947,-0.13325884481034062,1.6492658949505146,0.9543712272652902,-0.6424497803152118,-1.0242207967900812,0.4130277424632238,0.35916433257607516,0.6576073822669815,0.8860887703111684,-0.8020184247966526,1.674165024027677,2.9712973856017735,-0.007168863305580975,0.7976729578537981,-0.6258867148620462,2.397511863582465,0.23086236628615586,0.24033960411849864,1.5009776057385162,0.2313718726620423,0.3075172699407168,0.5396216535986905,2.2251741693975196,1.0781736199669185,0.48587605701185854,-0.38288223641254515,0.6568790913217302,2.8714475191654376,-0.13982879947259858,0.5973584940291063,0.29410399806839105,0.2124319768167211,0.38119037149521773,0.5615851034151296,0.3853536375750134,0.6446360440867172,0.00013806560957219105,0.03972919554241383,0.7785547271124776,1.3422179859575076,0.5224739280781024,0.9794225707007922,1.0587503284725255,1.0887136588602575,-0.03245995140070301,0.5978059423538916,0.4802570720381809,0.8117640673694235,0.5103095112970812,0.84041558972874,0.9908061064336539,0.10408244911066533,0.5320094509548251,-0.33527653323195183,0.38856893052316394,-0.3787820319080566,-0.11765134404300726,0.11540728140547796,-0.7692063939085134,0.8999171450405175,0.16383253238382756,0.02457536316867573,0.9762300836450698,1.6241794099660016,1.3520928115163917,1.212350142220962,-0.24394935079018754,0.12785518207429003,0.5449857112354843,0.2062167060353815,0.37298689239665594,1.239762504618994,0.7367057790654759 +0.11258241274060907,0.8254675368765354,0.7087229868290502,-0.11815052730215386,0.49220109624007613,-0.09506662312420935,-0.16892393966336364,1.5947087577937613,1.5611658075232557,0.5682554962690977,0.34877906012109605,0.4743393937069129,-0.4115559320249786,-0.18075260939063698,0.08111949058000795,-0.03388455205329855,-0.05717917819663349,2.0946021569189495,3.352512551917765,0.20306123397960246,-0.1563182159767094,0.14877368912341296,1.595241839500672,0.07844142443534523,0.5608122492281082,0.027957754965750477,0.004226235351071306,0.5857869085328204,0.06109684677189253,2.2430021370335815,1.6766663199283756,0.008253027270763373,-0.03361103748794898,-0.02597485007772867,3.1930534081378794,0.3201826645750079,-0.0545914657812626,0.7174813275712262,-0.3213471541291614,0.042227950886633434,0.11848111374101152,0.43854151192353485,-0.2652252513867137,0.18701853465794205,0.36940951364872365,0.58035795748428,-0.7788883191019501,-1.0699701533900876,0.3436863288997055,0.17933846802712095,1.476952131597839,0.13985802777366257,0.7058759473226459,0.07172191514689577,0.016876867128038778,1.3729369362317878,1.1394055546861592,1.21431884112466,0.5341671061475012,0.2298336020950879,-0.21691844626053658,-0.49674178308073363,0.4163211438721164,-0.06678795458030307,0.1468997021744672,0.03150404828626148,2.344464644795852,0.33856963805684676,1.144562217052733,-0.25472079893439076,2.4831523515238985,1.8955476334466579,1.0612170368040925,0.03337939718818507,0.4033504474798477,-0.10253675684054471,0.499321993781574,1.1245287275376104,-0.4423838659206028,-1.2660513376976854 +1.0081614592070411,1.7995760389724875,0.5030547788507053,0.7235564796380483,0.7191646236344433,0.4437295141741918,0.2129689668354064,0.09309361786540143,0.5068440760292298,-0.8941118243567573,-0.18783666624195616,-0.10494799474543254,0.5326880970384886,0.14271538619935148,1.4799362074662143,1.3359912357881005,1.002066572535884,3.4196230496939473,-0.8210833574224783,0.5629448536962534,0.17230756554027032,0.6305375890951692,1.638654189817403,0.13632067690692323,0.3498443940507991,1.8617058422326198,0.1600841820525179,0.6047923247011332,0.7945179090825166,1.8600067031828813,1.9309023656711168,0.6295145568128064,0.4283614048211062,0.4725843936781811,2.8417691953644537,-1.0158951646294376,1.3009217249906861,-0.11027985390925993,0.5310674094535984,0.8174455114535413,1.2453637642731552,0.7934161482593369,0.18061809289049946,0.85109995945479,-0.1954388388799851,1.1411477806622115,0.1115728417384231,-0.7741120912337404,0.5908734797616966,0.4001610463045365,2.3803535337756863,-0.5736304195693063,0.4785823141831514,1.4141138890965317,0.5307273063606526,0.3539068856631891,1.3218457923977394,1.7100309914874805,0.3146309238619371,0.8487107713820042,1.2260539866045876,0.11954153595280603,0.4828258228782995,-0.08098870623652565,0.11857526245816091,0.20997911671118816,1.5920189577494355,0.2835225122406375,0.8345230632535993,-0.22875385530213,3.7789109054151346,0.6187084210058937,1.0623052340027652,0.406316137537299,-0.039578565527876364,0.6908635660528393,-1.275913146087912,0.2338487617967904,1.121157491986736,0.37424040670602954 +0.7691063833712866,1.5171502802021921,-0.45252755098497544,0.3921415182992651,1.6314700681168057,0.6706340793602681,0.9063274786096349,-0.5485980637858164,0.4097453428549656,1.6599072992949269,0.15430048250581274,0.6975617923570065,0.3268303281012087,2.213915097605969,1.0379379422170227,1.105282392252173,0.08202079442322108,1.1202750658896954,-0.3835938500047685,0.46586558919650944,-0.7325248007211164,0.5016212544796743,0.1905361050897039,0.44090009778703176,0.4270890730921299,2.032551567461219,1.4023261910396831,0.35501659264718954,2.707568896818728,0.36759292191341375,0.1511898822484838,-0.5956098685550388,0.17255457507030117,1.2828756556652192,0.601911525984197,-0.26448254603435534,0.41125380580157406,0.3226185341413498,0.26497095417333283,0.9433826037690545,3.697694631174343,0.08109833394878418,0.30233976315280486,0.3167296182822935,1.544956182401095,0.8539818398882095,-0.026242844646912844,2.3625213152087894,-0.3774092856466998,0.30297772109410476,-0.3519084820545016,1.0080435503854277,0.681155332995981,1.3645719658119684,0.38322948066138496,0.6266415696077033,1.119677633854702,0.3373900278622908,-0.3332495497553925,-0.6576951166746065,1.1251967671268914,0.2376495886433016,1.4535244868798012,0.09928872147818713,0.5472446909463202,2.175304818977072,0.21889017655625004,0.8691752710106266,0.35613831949736874,-0.31803888392689283,0.5012580235854962,2.4183674002628193,1.2558397527139786,1.1660106562500578,-0.7285248057855547,2.4159376733715114,1.1777048946094706,0.7599439006903772,0.6331287719770593,1.1514733946748439 +0.5048074337418484,1.4629221931220395,-0.21900764156891928,0.3211953930634852,0.028241306010700018,-0.2781021022642272,-0.11695535507763588,1.4881009907649267,0.837758755898274,-0.6127201978507847,0.7873184463671732,-0.018810617047169714,0.2525841418835065,-0.7753157224624976,0.1988416046959147,1.2821033609031545,-0.586548115329556,1.5783125385537744,0.28127949338683145,-0.007325188897896157,0.7501808481631073,-0.6578328966453715,0.8933727998503018,2.662409750010865,0.34469468733784847,0.9954392760394686,-0.2173364173073267,-0.17841149576720688,-0.3982918705593034,2.437272379273302,2.033911216935639,0.26212457867561034,-0.5055246551249312,-0.18698168440589216,3.466699976829355,0.25568771039334276,0.4883725475920699,-0.13400425032527796,-0.10796778779170337,0.4171889584858029,0.11867082346252306,0.47919048525086017,-0.32396878000773544,-0.1495820647933766,-0.34686782002354194,-0.239101514706635,0.02205350490136447,-0.5497803289486282,-1.187112582030149,-0.3552185736648782,1.225171531194346,0.20362223753555714,0.8893997385306751,0.1159411944553447,-0.0030691679340481004,0.6766818854423082,1.5044217260546167,2.6108287123209677,-0.3292666344489974,-0.0343002382344893,-0.4182299118288525,0.5410763394907778,-0.07841698667008776,-0.2558129223360539,0.6748631700234993,0.21485036005990815,1.4808525686768774,1.0695900844089772,0.6613383977019066,0.40935660310876965,2.455469668129805,1.8647412815729925,0.013841385026289357,-0.6500217067177184,-0.03060809415861543,0.0761430860445573,-0.4029268749240997,1.002972382028681,0.7067612673166592,-0.8895676472075873 +0.3384850825281297,0.8795538774270831,-1.2883167855102613,0.47273503666604966,0.3552614417261633,0.004694466630471961,0.2746918632027249,-0.08870825585407344,1.6631966326225658,0.6463409238402752,-0.32132340434070045,-0.509892761614936,0.5331756005462096,0.6541690217600953,-0.014777453990407932,0.6857537052882129,-0.2502848999944284,2.5401614865906623,1.9131042250905073,-0.2472866499395363,0.17294559115537406,-1.4485271435077514,1.2723415513348164,0.06270203019643794,0.1272830153718716,0.25270342708851007,0.7669558154861524,0.546864824534171,-0.4282573269457385,2.7071876427218506,1.211714763383405,0.34277941043351745,-0.32518971596883506,-0.44317161975188785,3.105408328799552,0.08324785152585301,0.8959553889366461,-0.39743607004061693,-0.8035248545819438,0.0011970526879112597,0.05685982495458508,0.4677472624620216,-0.10655235308518407,-0.12935249230807208,-0.19475651493321405,0.47840331352268883,-0.5811912545331993,-0.7735376840121908,0.30367132015560444,0.6882718448918137,1.708354868676585,0.11991050079929055,0.8843933414836144,0.1463437657348877,0.5312370189556325,1.0475078577304282,0.7052984407436046,1.413616054784592,0.13287490433111454,0.2995416471395781,0.8212574523125258,0.45651780117591745,-0.6150988136557708,0.08688297598587441,0.3420970542833177,-0.48282155523100084,1.9489478225873218,0.4270373155472893,1.066948568440182,-0.004772680418288988,1.562282032011782,0.9070362324778037,0.7750585065765947,0.5744186121858412,-0.7322399485355855,0.2861516325826815,0.22862956490163205,1.6205468226739648,0.4283544357484693,0.375292075161071 +-0.3863132605653601,0.10610888316091527,0.669577307820384,-0.0716504487602726,-0.007541568198566273,0.5163283230543733,0.44506258698808837,-0.8066223268770623,-0.9917980645646626,1.533882226843837,1.8930290881851988,1.2109307680240993,0.41470515550507064,1.0100430730815617,0.8781889811938952,1.044874410864788,0.16789297645759976,0.4495696805301444,0.45411189403377716,0.6905901287726175,-0.5004904074464023,3.532927306678408,0.4830571035917018,-0.5412199436974593,0.22531138141627022,1.8755956054989058,0.09654138418075453,0.14189684795212135,0.8264181765193217,-0.08963252281550214,1.8829216152337005,0.37203377212992983,1.745321212109502,0.4896387193265271,-0.5463321034165842,0.2537948418183677,0.21821728676127328,-0.3811902495432044,0.16461615288125844,0.7182766934811045,0.34154374542496324,0.6149505096814382,0.10992454564880638,0.5754355970219923,0.049466772289457894,-0.1406014523020217,-0.16389112925065308,0.34282035810847844,0.31849776160481347,0.4138348501719309,-0.5504700141343859,1.8812745647386846,0.48961507098950163,1.0614031099845496,-0.2639461214879043,1.4669924138977226,0.13038520955441943,1.6526312025220378,-0.07279692228453427,0.5630310592222617,0.8419123912831552,1.0911284839069393,0.7924398925454261,0.8052890393823604,0.13063887634397978,0.6264957807784376,1.7063429244024055,0.6762149756035334,0.35199822642542844,0.3575771231886484,-0.577358109311087,-0.1716265760723551,1.2993336922586742,1.337695111508436,0.38138058387741314,-0.3837269487477243,0.7538306195411918,1.3453366622958045,1.1321330031371921,0.4077823510783144 +0.0016405013215988196,0.5622614226853707,0.4663741678268657,0.13309553702757643,-0.7306730672577552,0.10311907766670092,-0.02016030053642509,-0.8227318145779661,-0.13915392358746767,-0.39416455691601,-1.2316933090842583,0.25923145598597347,0.2500690056298991,-0.456006405600092,1.2916336505128807,0.414491300941427,-0.8315001588767813,-0.3790876390345437,0.22133086589244638,0.9058866935322292,0.6580641096253642,5.033166380696903,0.032447813828288444,-0.7954971404941964,0.2212871450335296,1.2470255385445228,-0.5301922199306541,0.002769591288882489,0.49439671094000026,2.38170894844404,2.2859049513940537,-0.38856541546311496,2.3588420397551446,-0.28214107339768935,0.07463742524112746,0.37507854641308536,0.30925052391082314,0.06379380758693531,-0.35131660404236476,0.3046925302604231,-0.775613340665868,0.7988434619842069,-0.5415143403769731,0.8047736825680982,-0.24221056561244647,0.08757398624028445,0.8236335553712872,-0.19856170831464665,-0.37417899317647085,0.4881850327073474,0.34187885858458533,1.6432163710474148,-0.009663466125067244,1.0932105042109281,-0.4400182179958923,0.812017596191817,0.11662122257827656,1.6909319604579705,0.20955358124181334,-0.3153183631598331,0.282399075850289,0.5395351927796499,-0.20007500449064064,-0.049358710701091546,0.39563994729356283,0.2317270187823126,1.0891341931928222,-0.22665065591700972,-0.13966903124803964,-0.15825016141297987,1.2745407308695644,-0.5440308682764743,1.0074556309893858,0.08402452963646401,-0.725254903366518,0.3209464615741624,0.7414702639282427,0.7626612030045425,0.6354450721451568,-0.5993057444659556 +0.3563590364557954,0.9534300894910509,0.13091256863381345,0.5145918657173958,-0.16173328725159636,-0.0620270701577722,0.044069197082389766,0.6683651500410749,1.2791693424913524,0.2051625542274429,-0.31753201985500706,1.326046186963637,-0.40626225475872146,-0.20880048154954756,0.035698944921802256,-0.6708209426202782,-0.9084940895971674,1.6079924473439486,3.2611324063182123,0.6229676323518152,0.9202642218969603,-0.03023987543415929,0.9528897880251201,0.178356091164447,0.1767122783399096,1.6759736073455875,0.30333822188790965,0.6341209138890809,0.24445076509360397,3.102725607224169,1.3413762196949433,0.24085644163880437,1.691643116691812,-0.39777144635868483,3.3177044429242786,0.12830917344030351,0.650621468098824,0.15803729010176787,-0.18102887018001274,0.05460473869712684,-0.005582818918011712,0.17119021155347633,0.4477128246821067,-0.5028253581018076,0.26864118524531894,-0.22869204091990142,0.3676251799914345,0.3738445465666126,-0.754194054601339,0.724672760373603,0.9362712912950766,0.376484459802425,0.9137635483356172,0.0715961303030559,-0.23641614099168812,0.3928897635398838,1.3413333112920411,1.1691533864051593,0.1808917440165294,0.2309203881700369,0.8780225920097209,0.34516157920667284,-0.5567138328029797,0.6358740300723337,0.7106837335074216,-0.1657192308646686,1.7508214630823007,0.6445060433825092,1.1108215402414297,0.6541322631220268,2.0624440177696775,1.6958317630070412,1.3228470214999248,0.17792415969129471,0.4076188939954819,-0.34304739070112533,0.15035394889465348,0.2685285168915846,0.1698901769812811,1.3118816567131386 +-0.17692288651429017,0.5763046790313836,0.6781525424327985,-0.7457587518922035,-0.4513403970914035,0.3115144027799586,0.29713709684295975,-0.8240899844758787,-0.16011437411628254,0.5619321632005576,1.9215806309587533,0.49941595590834276,0.20007779319099178,-1.101463467805303,0.9535897322366,0.9911187328331375,0.2983604143617017,0.3390792098350921,3.0301280832755646,-0.37019024125742617,-0.27431459301158195,3.1041109341288173,1.5066503037637933,-0.2658621362461455,0.3300348388513771,1.9732436223523597,-0.17203371396900335,0.2389909238312362,-0.030424043754930907,0.07024509053342094,1.9022418304029012,-0.5173281995650019,2.942333469531831,0.09493674754211717,0.5874065768124459,0.14711707784311562,0.22934336652927056,0.2860479745135515,0.036402102381239976,0.3649211230518118,-0.6935903414495891,0.61433822854375,-0.15435562549013182,1.2641702271061632,0.07196818713319308,-0.19918300576239223,0.41089155457588145,-0.15494222758455622,0.5095626101500502,0.6748924261415868,0.6544827115675825,1.5746762113129265,0.709752213465811,1.0793619316209409,0.13768496656754042,0.8464777303358269,0.6599409203015213,2.549685894433781,-0.03518257962341814,-0.48986642207004616,-0.3599777773285655,0.7547409522666644,-0.14785590298138485,0.14278134758913197,0.5297233864447073,3.2833313535481197,2.020561726596811,0.5669247698434555,0.6941118810095587,0.15667193714763616,0.32007645839712684,-0.6491452552291251,1.2918293998271957,-0.1336140902168903,0.0047828944654856875,-0.3150059530141692,0.950468906281053,1.4864646377391564,0.9800310029559578,-0.7425874309077491 +0.45206302826040357,1.3377098018944493,0.3711522075057625,0.7011352101961599,0.36063626531039605,0.5870194437204037,0.33363623786529206,0.021591497498508083,1.5720935864520214,-0.3916228933511207,-0.3696694721310253,0.4308273413597903,-0.2823113745790149,0.15656171864263996,1.2293208261642095,1.040750166034337,0.4028134911387187,2.537479327055759,-0.6264620122942587,-0.7806175028656062,-0.5178249209529089,-0.064727155632677,1.785308417583995,0.3001797272556568,0.7256482062636179,0.8798163293570644,0.24654905892097417,0.4993165350705733,-0.12484366250002876,3.1975666244656673,1.7795986189142297,-0.17160240659816656,0.3008826237336055,0.4819827295617194,3.596012049390841,-0.6736758676756032,0.22241898852432296,0.23720843279469744,0.034811011217012494,0.8148675122837354,-0.06273859861092179,0.807054068179646,-0.02448567747810071,0.30999436191389623,-0.5280223464256122,0.5763529548898021,0.25681825616813236,-0.2968182491661559,0.47723177200752664,0.44724692841987584,1.4230647155600962,0.09908575028569946,0.509877378557446,1.032453332720467,0.3471118075957063,0.5562018905980369,0.8251546354653609,1.7341289467320162,-0.14294248445180008,0.19710859442809087,0.09741335201523016,0.04435308504102048,0.24983949635153252,-0.6552036576799163,0.5203744686763997,0.4413073133415997,-0.13615583063442574,0.10401918851638292,0.8216495353080917,-0.44163806779370474,1.604510668656489,0.02559309958475986,0.9968711526512221,-0.12985773884811502,-0.5650506856441094,-0.12382204121183588,0.5233560181992154,0.8957915646391248,0.7489289040417882,0.2175125637910933 +0.2808638899457008,0.9494427167279452,0.25656721636448143,0.05422173214800091,-0.09637973312842563,-0.0952469934411149,0.022463806133350833,0.4771329039319425,1.5003056265221648,-0.6077046609919132,-0.07744024209364046,0.09666086307395988,0.3185154041739774,0.038831646097238104,-0.2493314970560012,0.445180315646149,-0.31876476703794043,-0.09410079174626379,3.3706827974706624,1.022730156404122,0.0667673707036952,4.907130408446124,0.42349715981299085,0.12437086929898208,0.18455035235734943,1.56652369599626,0.44383062353847896,0.04376168119259474,0.43491267857275884,2.2192152085695454,1.3576958746594172,0.47287701778489266,2.4414455279214438,0.5664545036405201,-0.3110417106362482,0.6010616523431744,0.11980412850231889,0.02587819525618759,0.0839549286527691,0.19564220112069156,0.49614759554376114,0.06073877017043996,0.17602915460405918,-0.19205857357071077,0.5026234915036205,-0.1437126522304738,0.6078200289917945,1.2103128106078753,-0.18165937754779027,0.6169245869596599,0.9993804023128992,-0.23329651487409744,1.114508627604461,-0.06403150109476033,0.3286292129520857,1.377454407398404,0.7787723906363189,1.3669732663424383,0.37523220453442163,0.21809718768784525,0.7099954961247295,0.13147688630146642,0.6567586374816796,-0.049179043829728264,0.2791514555419309,-0.2528043594449335,1.5309204164800807,0.047992518824585134,-0.21984106882810797,0.19230487058770518,1.4993625566274194,2.185868732489851,0.9902918261765361,0.4740568132967351,0.5732095085943175,0.8539578536893097,0.15119343389635326,0.16707001493990714,1.2873770780271547,1.5865710726057631 +0.7323854565712357,1.3069808282101676,-0.20489777343287796,0.0878130875576966,0.08500895705181016,0.4466462887892384,0.4211558405849363,0.4763031499138424,-0.03151117098387124,-0.9001219224936587,0.00048537464650118094,0.18243812237885748,0.47098756202486025,-0.347006962821007,0.35122665543559145,0.7001286449364107,0.3447106004449568,2.68640285168958,-0.21077308411772366,-0.7928400437386294,-0.32522354068125503,-0.13330100920797555,1.1661190830654793,-0.11172293829353286,0.3658709597004567,1.8585781579160259,-0.008249374377759744,0.03183281114047573,-0.005235253852314964,1.58080755989318,1.623030677604783,0.20955721915275863,0.06211832800420398,0.05561201403484399,2.9633812721886468,-0.043461042892595406,0.5065151606674477,0.49125934453927206,-0.09309777033414834,0.6252350600166197,-0.09335444227368689,0.5301182863915266,-0.06419653619622102,0.42373970207155137,-1.0151957685195319,0.9048255051247361,-0.8803027052592638,0.1642606604807158,-0.4765087837683263,0.3535233306316741,1.5915364731759583,-0.47520283146728337,1.5951295768584757,0.4600491754646314,0.42093651058879245,4.117044241923329e-05,0.6653754385886634,1.5300490913496474,0.27909119850447506,0.23877004208695857,0.0115542734159991,0.06297327085483646,0.45742167961737096,0.34929097251118224,0.5167712445486348,0.6329195660265,1.8194509027168897,1.1093402969321313,0.806710692023487,0.4398247903317135,2.7958390912689364,0.8623768187105203,0.9459675998402446,-0.6118869842538324,-0.012937422856359293,0.10353948069527374,-1.4156206932068758,1.3053388547680465,0.5651279576315565,-0.44584856375012605 +0.1474080539204442,0.8307461429213043,0.6129857861920662,0.5656613402228461,1.1413723353058216,-0.06159687148193449,-0.11142256772562764,-0.2632098717308924,0.8405406756570082,2.5415087515546864,0.5633465412381266,0.728304783402075,0.5429155018976587,1.5705782524265774,0.6648568580917982,0.8636838436965572,0.49225344877014254,0.9511851265445774,0.8612848366366838,0.8475407004329789,0.33788485408333346,0.0756020614076457,0.9073505249739574,-0.31592871110818144,0.3168516380155373,1.9148731091295201,0.29952423775696824,0.2861177554181963,0.41374014359393585,1.3647807137992727,0.48053893621580135,-0.22584001554832844,0.6435988012810127,0.9660066861534713,1.5804419222892843,-0.06601372807587991,0.3173472719358801,0.4589744907032598,-0.05411928431515978,0.015383838076281964,2.2454425331854817,-0.44915955730260554,0.4347431874250427,0.6444910779573548,1.0486260995516126,0.2865030818263028,0.2337904079629961,0.9807303687848259,-0.07269942483488556,0.15473349656108115,-0.007450209192820023,0.9485450044637392,1.3016610609340176,0.6360828465452445,0.6178801916443648,0.9890550129038204,0.6780591455546459,1.2597570802280325,0.5154328008965234,-0.5343275029512617,1.419131374326299,0.557653863456906,1.8211993858139532,-0.670933905447729,-0.03454355690314892,2.12001546923319,1.744096989235111,0.2744020296156634,0.5806377406403894,-0.11237402701648613,1.2588572173402812,2.3324700096072672,1.2054727468639044,0.73447593880632,0.8016755050449501,1.9352603037951934,-0.2646686675543556,1.5074949907372721,0.5625165946036856,1.2491247672217187 +0.019843577275405533,0.15374761185205485,0.26613419418928863,-0.8720652680142014,0.10324614353477274,-0.47037173429035756,-0.4420646203728703,0.03917209351416917,-0.2935717630309577,2.0248574149370597,-0.23285569885247187,0.21776117538847115,0.04120518619457936,-0.8958878635656662,-0.6785961354895925,-0.206485750094047,0.02759585227071734,2.558194634929255,-0.8628312912825538,0.9935087413418184,1.2338219547636844,0.25065268771184845,-1.4060605320928967,-0.7988317938621595,0.19036360347518388,1.1995101151712932,0.7175308565314287,0.051505718311125354,1.527655533604969,0.4374369142464949,-0.41443093212630056,3.3384205438724868,1.5773577097669282,-0.06649886053255005,0.5744234241417662,0.7516302085196586,0.2590817839005629,-0.9281107169939178,-0.1174610480198707,-0.28936118251590476,-0.2064861709172935,-0.31720267419115133,-0.4221960747552041,-0.22192423053839758,1.0262100320380092,-0.4246909139695934,-0.051494943156400436,-0.2545958065650602,0.3301867434681355,0.25561736921522377,0.44922635434142383,0.12802803347237174,0.1298394459677968,-0.6018665546581725,0.12221453514572972,0.9950234488878239,-0.21677744775941726,-0.01143338149015441,0.35061308571942706,2.4838933510220587,0.7061734029681667,1.3863509904821563,-0.6159045994955143,2.999463536203457,-0.14496972183796036,-0.13935798833542684,0.08565450713930584,0.24567338994719404,0.3500341586169503,3.7266994678670784,0.10144690575106427,0.8149962102199737,1.0288716736507997,2.00132906843084,1.3424605814212713,-0.06845910055092924,0.2698773852659597,0.5200008568353551,0.6406927529717101,3.226010377355264 +0.5365393316599161,1.2612877033448997,0.31568871438935764,0.5993624180273784,0.45822775607028166,0.6335468738686716,0.6500716690869213,0.46932765315582026,1.4253532292669857,-0.046914192877289256,0.03472617542722475,0.3991108529607766,-0.45448089386061796,0.6453740324854627,0.4039436408824228,0.2753865241037844,-0.9491948745487782,1.9867366645722058,-0.8187434985114042,0.1483933399539164,-0.5291368171959263,0.4921059839729053,1.5167460850864898,0.4866321896033911,0.7697175466081534,1.6328988677317493,0.6100474142054697,0.26764673213402596,1.6859671427432685,2.1669088495502677,1.5732386918812877,0.14719663032972452,0.15722756520498646,0.46563064929406023,3.0388726528801726,-0.3296498280666474,-0.09185891579410882,-0.11711835083309641,0.5257511360231404,1.214798581309991,0.6607723902895034,0.3883748422813504,0.17396464793404298,-0.13462940425481054,0.6066180976402975,0.34554119456967797,0.10659102327296291,-0.08843478764404822,0.5846324546156902,1.0877328591359028,1.685969544106902,0.337539924157597,-0.21906337146374055,0.3991276823413359,0.5240987504653802,0.34800555538310163,0.6414968970924371,0.9928475623907665,-0.09818871186914768,0.4124198678216009,1.0350379636471554,1.2115991861964241,0.473883252787083,-0.29229184667766317,0.11365643488089747,-0.19999216166549907,0.21157735635338953,0.42124001866078553,0.4875609076220216,0.4535004520873629,1.8643697848129321,0.8979929823291679,-0.32965057018211386,0.6338444099695123,0.647251062237616,0.2756038006493703,0.9426592281614186,1.3272111381958709,0.4235351477293776,-0.04490112063562668 +-0.010968799795153208,1.038948906987166,0.2036785207108151,0.5437521936787201,-0.0014297504867220867,0.45756698712649535,0.3581055937087073,-0.30798609898444074,-0.2124659075927849,-0.6123780341425548,0.09615370550489016,0.5920766207504216,1.0214412840544431,-0.34197000223670304,1.0698486426775606,1.188443917111235,-0.16281462518535866,0.22311445088292994,2.470516207542289,1.3229771719422845,0.5961844674955153,5.379109519812065,0.47991522789175795,-0.4824917592628823,0.5246909477185411,1.0147731979848018,-0.2536620886315483,0.19965081966165532,0.23389852310581524,2.6669212639892446,2.0063357976680565,-0.5713053327330102,0.2580443162925678,-0.16324283482335503,-0.6566362416006344,-0.039204349855503945,0.04051192631583153,0.40016678864123456,0.10433704091879667,0.7759534848577821,0.22069035654849656,0.930994209640595,-0.06009304257473462,0.42676183167883,-0.31657601745322717,0.053568660096859955,0.22138210605391279,-0.5242794942901341,0.4436310829593938,0.06927985067767352,1.1309537052419483,1.5203853183327858,1.3102219448734485,1.173466546405278,-0.26812252660874025,0.0036807994347841794,0.7172053076653395,2.725905433285079,0.725459835184333,0.04909542091940333,0.3045986336266103,0.06701582582328919,-0.0478886389842787,0.3558485032997608,1.0794207056745007,-0.23977000338128646,1.7499738044920072,0.5345826043744539,-0.010849492820192732,-0.46974779239306963,2.7614635160322054,0.32101225391162375,1.2859315156829179,-1.0089434938652224,-1.107653378457148,-0.9890319804017107,0.8906964464957494,-0.07771763760109737,0.8555700748131915,-0.8428787784374098 +0.4662056567424187,1.1189451473361367,0.6850522601131248,0.6402238887316869,0.14336657927689977,0.47193787346633437,0.7011093687422645,-0.8348986101047393,-0.6254044903040846,-0.20540470368566008,1.1727327253036117,0.693901564399968,0.36962585027523326,0.29175048524710495,0.8685334911943959,0.7068956287774076,-0.08228948064437439,-0.11938946204758502,2.1729422657242945,0.3610950977075486,0.9033604803231429,0.5312451577068017,0.11201571733853369,-0.012042809427050423,0.30214336549233445,1.6108207563545944,0.1957132112420655,-0.19488503928463558,0.7751272248003921,0.4922789622513419,2.0060512030514173,0.40245483818667427,2.3658556832304223,-0.05860443334367969,-0.23898620400438564,-0.06887832649942836,0.32043757929077116,-0.19007620863179667,0.12371052125611644,0.626234436555658,0.37799198186886057,0.5939389402622826,-0.2964457168251433,0.34634692961037333,-0.5885179829223584,0.5059891077301539,1.394959692825022,-0.006409336148490408,0.02671901983043656,0.44085881875191574,0.08485419709766975,1.9403805333661404,0.9724493424635354,1.1923683613026175,0.6789203710829456,0.49794781526363685,0.7615973317747632,2.4498641345278394,-0.011168726535833508,0.08099415955882798,-0.9508633311885069,1.052951764441032,-0.3187879379721601,0.30820380973236994,0.3861829781647745,0.41582451116946245,2.1158202672111392,0.6581494819690631,0.2171733830203571,-0.15168357575537414,0.10740511653194083,-0.004608986956866597,1.504655046479986,0.7002920630799273,-1.0125882467585239,0.2569681364359671,0.6532491515517987,1.7930413457583934,1.4825271323998985,0.7492153025896984 +0.2154259546945006,0.8384467821703208,0.47860456034713555,-0.17441834072771178,0.26999988725818835,-0.03818740540560617,-0.06831447465834278,0.8154222915179532,1.4969261484609113,2.4763207382591177,0.14879077277110606,-0.991789370788263,0.03794737567782036,0.3983065656656948,-0.4832030329666228,-0.27074947549424816,0.8330668896674931,1.4054471130343065,3.3823552670474415,0.5959957415766061,-0.2611729640801489,0.3138894815242628,1.1220334024701653,0.18131795612208818,0.36363618654374963,1.122655835664964,0.9190879930551225,0.6020896158502747,0.3607990136481395,2.0637361374331293,0.9489632383642195,0.7272168891725678,1.795835949827103,0.6902066086559541,2.751312441078444,-0.39443209986330763,0.9649178092119587,0.509200720611843,-0.16755359320090657,0.12977045681997196,0.49537506508358864,0.36752274321266254,-0.15015427007215776,0.023623042221015023,-0.6108906261521841,-0.7453254815420522,-1.1188120827984491,0.5582751368166814,-0.6001037053188569,0.16918090735624042,1.2769629252070807,-0.41338434945268926,0.6193661260450933,-0.16115856707653597,0.15038585893405332,-0.15455410341110315,0.934597236186576,1.2438761000679683,-0.5538163626139772,0.3455216269360124,1.315831730565193,0.41998363512614645,0.35722459864951894,0.4188150596257507,-0.7083158971571172,-0.3421443648554115,1.5976090242447685,0.5261057266794016,0.8878549244716324,0.805293285894702,2.68591085000772,2.1500256350866556,-0.14681037108076805,1.074156857305546,0.8512807764838732,0.5919289971488209,-0.1702466579210054,1.0912955589825712,0.9735287465515623,0.8022533565857466 +-0.008542243308155811,0.807080208846708,-0.8179493393326339,0.03545530770561835,-0.15307431714711578,-0.25374169536961305,-0.29819332329724174,0.6566338095833024,1.4545096754778044,0.641914531630177,-0.21343779302980354,0.10755798970630748,-1.1330995269294388,0.07034863265763443,-0.33684231868172254,0.30240129324882276,-0.08114825685915174,1.522296380610769,1.906740099070627,-0.6485680369727103,0.2119827703519048,-0.9717872142877472,2.1724754962408848,-0.3853791864255745,0.35254810019200244,1.3888849929847211,-0.5494604742428979,0.17643559397331615,-0.21422768748931503,2.571396241084576,1.730459134580333,-0.38337636141650844,-0.2287869956707828,-0.7502686506218205,3.2431649036166474,0.289268512386708,0.7272859586334284,-0.006296266357935558,-0.2498491737850884,-0.04442731666872674,-0.2067991074703785,0.5037032623160373,-0.112705238940206,-0.058073175426018774,-0.36348210608515896,0.2738989083998952,0.11508827552436171,-0.4102814099639681,0.3157320602645149,-0.25109935266887845,1.2482687701931252,0.11692322100136254,0.6857266262230911,-0.41634759932832055,0.1207181963695626,-0.599405949128091,1.0559875858863101,-0.4817431819185238,0.2780817806781904,0.38353157287869794,0.6604287727952242,0.09293844678619934,-0.31688083550222734,0.09689719650726818,0.1248677083516265,-0.17100116283614958,1.5623612612169007,0.2538324303597599,1.049166112570094,-0.30351122930314733,2.4588186176580367,2.382005066861876,0.1195680510214758,-0.39541266952663334,0.7805185108234759,-0.8395553326948637,-0.2899219764754336,1.101013767343365,0.453862093619316,-0.6341624101132403 diff --git a/tests/data/human-sc-immunology-spatial-proteomics-2-v0.1.0-duplicate-alias.csv b/tests/data/human-sc-immunology-spatial-proteomics-2-v0.1.0-duplicate-alias.csv new file mode 100644 index 00000000..c851a478 --- /dev/null +++ b/tests/data/human-sc-immunology-spatial-proteomics-2-v0.1.0-duplicate-alias.csv @@ -0,0 +1,91 @@ +# --- +# name: human-sc-immunology-spatial-proteomics-2 +# aliases: +# - human-sc-immunology-spatial-proteomics +# description: >- +# Placeholder for the Human Single Cell Spatial Proteomics Immunology Panel II panel. +# This file is currently identical to the human-sc-immunology-spatial-proteomics-1 (v0.5.0) panel. +# TODO - update this file with the correct marker information. +# version: 0.1.0 +# --- +marker_id,control,nuclear,full_name,alt_id,sequence,conj_id +CD274,,,,PDL1,TCCCTTGC,C001031 +CD44,,,,HUTCH,TATCCCTT,C001048 +CD25,,,,IL2R,GCCGGACG,C001028 +CD279,,,,PD1,TTCTGGGT,C001033 +CD41,,,,,AACAAGAC,C001046 +HLA-ABC,,,,,ATTGGCAC,C001073 +CD54,,,,ICAM1,GAAAGTCA,C001059 +CD26,,,,DPP4,GTCTTTGT,C001029 +CD27,,,,TNFRSF7,GTTGTCCG,C001030 +CD38,,,,T10,TCAACGCT,C001042 +CD16,,,,FcγRIII,GTGCATTC,C001014 +CD52,,,,,GACTGGGA,C001057 +CD53,,,,,TGCATGTC,C001058 +CD11c,,,,,AAGTCGTG,C001006 +CD11a,,,,LFA1,ACATTGAC,C001004 +CD127,,,,IL7R,TGATAGAA,C001007 +CD29,,,,ITGB1,ATTCGCCT,C001034 +CD82,,,,,AACCTTCC,C001069 +CD45RB,,,,,GCATTCTG,C001051 +CD40,,,,TNFRSF5,TCAGGGTG,C001045 +CD19,,,,B4,CTACGACG,C001019 +CD8,,,,,CTCAGATG,C001068 +CD59,,,,,GAGGTTAG,C001061 +TCRVb5,,,,,GCGCAACT,C001076 +mIgG2a,yes,,,,CTACTCGC,C001079 +CD11b,,,,MAC1,ACTGTGTC,C001005 +CD86,,,,B7-2,TCTGCTCC,C001071 +CD197,,,,CCR7,AGGATGTT,C001020 +HLA-DR,,,,,CCAGCATG,C001074 +CD3E,,,,,AGCTACTA,C001043 +CD2,,,,LFA2,CCGATATC,C001022 +CD20,,,,B1,GAATCCCG,C001023 +CD45RA,,,,,GGAGCCAA,C001050 +CD14,,,,LPSR,AGAGGCTC,C001009 +CD4,,,,T4/Leu-3,CTGACCAT,C001044 +mIgG2b,yes,,,,GTATCGGT,C001080 +mIgG1,yes,,,,TTTGGAAG,C001078 +CD9,,,,,ACCAGTAC,C001072 +CD69,,,,,AAGCATAG,C001064 +B2M,,,,,CTGTAGGA,C001001 +CD36,,,,,ATTTCGAG,C001040 +CD45,,,,PTPRC,ATAGGGGA,C001049 +CD152,,,,CTLA4,AACGGCTA,C001011 +CD337,,,,Nkp30,TCCCAGTG,C001038 +CD1d,,,,,TACTCTTG,C001021 +CD84,,,,,AGTTATCG,C001070 +CD161,,,,KLRB1,GTGAGTAG,C001015 +CD163,,,,GHI/61,CATGGGCA,C001017 +CD200,,,,OX2,AGGGCAGT,C001024 +CD137,,,,4-1BB,CCTAAGAA,C001008 +CD229,,,,,GTTCAGAC,C001026 +CD244,,,,,AGCCCGAA,C001027 +CD154,,,,CD40L,TGGGGCTT,C001012 +CD18,,,,ITGB2,CACACGGT,C001018 +CD71,,,,Tranferin R,GCACTTAG,C001066 +ACTB,,yes,,Actin Beta,TCGTAACG,C001077 +CD48,,,,SLAMF2,GACCACTC,C001053 +CD43,,,,LY48,GTAGGACC,C001047 +CD150,,,,SLAMF1,CTTGCACC,C001010 +CD22,,,,Siglec2,CTCAAGAG,C0010125 +CD62P,,,,SELP,ATGACTGC,C001062 +CD50,,,,ICAM3,ACTCTCAC,C001056 +CD33,,,,Siglec-3,TCCGTAAC,C001037 +CD37,,,,,TTGTCCAA,C001041 +CD162,,,,PSGL-1,GCTATTGA,C001016 +CD328,,,,SIGLEC7:AIRM-1:p75,AAGTAGCT,C001075 +CD7,,,,gp40,GATTGTGC,C001065 +CD102,,,,ICAM2,TTTCTGGT,C001003 +CD47,,,,,GATAGGGT,C001052 +CD72,,,,,GGTTTACC,C001067 +CD5,,,,Leu1,CAGATCCG,C001055 +CD55,,,,DAF,CAGTCAGT,C001060 +CD278,,,,ICOS,AAAGCAAC,C001032 +CD32,,,,,CAATCGGC,C001036 +CD268,,,,BAFFR:TNFRSF13c,CACGTTTC,C001002 +CD64,,,,,GCTGAACC,C001063 +CD49D,,,,ITGA4,ACCTTGTG,C001054 +CD158,,,,KIR2D,ACTCGGAA,C001013 +CD314,,,,KLRK1,CTTCTTGA,C001035 +CD35,,,,,CCAGACAC,C001039 diff --git a/tests/graph/networkx/test_tools.py b/tests/graph/networkx/test_tools.py index 2eff2229..3d8a2987 100644 --- a/tests/graph/networkx/test_tools.py +++ b/tests/graph/networkx/test_tools.py @@ -19,6 +19,7 @@ def create_random_graph(n_nodes: int, prob: float) -> Graph: and a probability prob of connecting two nodes with an edge """ + random.seed(0) rng = np.random.default_rng(2) edge_list = [] for i in range(0, n_nodes): diff --git a/tests/graph/test_graph.py b/tests/graph/test_graph.py index b75e2b33..d29b07c0 100644 --- a/tests/graph/test_graph.py +++ b/tests/graph/test_graph.py @@ -9,7 +9,7 @@ import numpy as np import pandas as pd import pytest -from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal, assert_array_equal from pandas.testing import assert_frame_equal from pixelator.graph import Graph @@ -556,6 +556,29 @@ def calc_iqr(x): assert iqr_y > iqr_z +def test_layout_coordinates_3d_pmds_with_weights(pentagram_graph): + result = pentagram_graph.layout_coordinates( + layout_algorithm="pmds_3d", + get_node_marker_matrix=True, + cache=False, + only_keep_a_pixels=False, + random_seed=1234, + pivots=4, + weights="prob_dist", + ) + + l2 = np.linalg.norm(result[["x", "y", "z"]], axis=1) + expected = [ + 2998.85729688, + 2998.85729688, + 3569.35412551, + 2998.85729688, + 3569.35412551, + ] + + assert_array_almost_equal(l2, expected, decimal=4) + + @pytest.mark.parametrize("enable_backend", ["networkx"], indirect=True) def test_layout_coordinates_for_all_algorithms(enable_backend, pentagram_graph): # Just making sure all existing algorithms get exercised diff --git a/tests/graph/test_node_metrics.py b/tests/graph/test_node_metrics.py index a6ec4f61..1be36c0e 100644 --- a/tests/graph/test_node_metrics.py +++ b/tests/graph/test_node_metrics.py @@ -307,6 +307,80 @@ def test_local_g_normalize_method_gstari(pentagram_graph): ) +def test_local_g_k4(pentagram_graph): + # Create a sparse adjacency matrix + A = pentagram_graph.get_adjacency_sparse() + # Create a 5x5 DataFrame of marker counts + counts = pd.DataFrame( + [ + [1, 2, 3, 4, 5], + [6, 7, 8, 9, 10], + [11, 12, 13, 14, 15], + [16, 17, 18, 19, 20], + [21, 22, 23, 24, 25], + ], + columns=["A", "B", "C", "D", "E"], + ) + counts.index.name = "node" + counts.columns.name = "markers" + + # Compute local g-scores + gi_scores = local_g( + A, counts, k=4, use_weights=True, normalize_counts=True, method="gstari" + ) + + # Expected local g-scores + expected_gi_scores = pd.DataFrame.from_dict( + { + 0: { + "A": -1.6919339037036998, + "B": -1.6919339037037184, + "C": 0.0, + "D": 1.6919339037036492, + "E": 1.691933903703703, + }, + 1: { + "A": -0.6945173598360008, + "B": -0.6945173598360104, + "C": 0.0, + "D": 0.6945173598359781, + "E": 0.6945173598359913, + }, + 2: { + "A": -0.30065880545156753, + "B": -0.3006588054515778, + "C": 0.0, + "D": 0.30065880545157325, + "E": 0.3006588054516006, + }, + 3: { + "A": 1.4593826070876255, + "B": 1.459382607087601, + "C": 0.0, + "D": -1.4593826070876004, + "E": -1.4593826070876499, + }, + 4: { + "A": 1.2277274619036243, + "B": 1.2277274619036218, + "C": 0.0, + "D": -1.2277274619036032, + "E": -1.2277274619036265, + }, + }, + orient="index", + ) + + expected_gi_scores.index.name = "node" + expected_gi_scores.columns.name = "markers" + + # Compare the computed and expected local g-scores + assert isinstance(gi_scores, pd.DataFrame) + assert_frame_equal( + gi_scores.sort_index(), expected_gi_scores.sort_index(), check_column_type=False + ) + + # Run the tests if __name__ == "__main__": pytest.main() diff --git a/tests/integration/test_small_D21.yaml b/tests/integration/test_small_mpx_v1.yaml similarity index 92% rename from tests/integration/test_small_D21.yaml rename to tests/integration/test_small_mpx_v1.yaml index 8940ee1c..0261ac3f 100644 --- a/tests/integration/test_small_D21.yaml +++ b/tests/integration/test_small_mpx_v1.yaml @@ -1,4 +1,4 @@ -small-D21: +small-mpx-v1: design: D21 panel: "human-sc-immunology-spatial-proteomics" panel_file: null @@ -30,6 +30,8 @@ small-D21: "5", "--colocalization-min-region-count", "0", + "--colocalization-min-marker-count", + "0", "--colocalization-n-permutations", "10", "--colocalization-neighbourhood-size", diff --git a/tests/integration/test_small_mpx_v2.yaml b/tests/integration/test_small_mpx_v2.yaml new file mode 100644 index 00000000..3bcff8e7 --- /dev/null +++ b/tests/integration/test_small_mpx_v2.yaml @@ -0,0 +1,40 @@ +small-mpx-v2: + design: D21 + panel: "human-sc-immunology-spatial-proteomics-2" + panel_file: null + sample_ids: + - Sample01_PBMC_1085_500k_r1 + input_files: + - ../data/Sample01_PBMC_1085_500k_r1_R1_001.fastq.gz + - ../data/Sample01_PBMC_1085_500k_r1_R2_001.fastq.gz + + options: + common: + verbose: true + graph: + params: ["--multiplet-recovery"] + annotate: + params: ["--min-size", "1", "--max-size", "100000"] + + layout: + # Overriding the default pmds here since pmds requires at least + # 50 nodes to work. + params: ["--layout-algorithm", "fruchterman_reingold"] + + analysis: + params: + [ + "--compute-polarization", + "--compute-colocalization", + "--use-full-bipartite", + "--polarization-n-permutations", + "5", + "--colocalization-min-region-count", + "0", + "--colocalization-min-marker-count", + "0", + "--colocalization-n-permutations", + "10", + "--colocalization-neighbourhood-size", + "1", + ] diff --git a/tests/pixeldataset/test_aggregation.py b/tests/pixeldataset/test_aggregation.py index a07a0952..a3c2b2f1 100644 --- a/tests/pixeldataset/test_aggregation.py +++ b/tests/pixeldataset/test_aggregation.py @@ -1,6 +1,6 @@ """Tests for pixeldataset.aggregation module. -Copyright (c) 2022 Pixelgen Technologies AB. +Copyright © 2024 Pixelgen Technologies AB. """ # pylint: disable=redefined-outer-name @@ -191,6 +191,25 @@ def test_simple_aggregate(setup_basic_pixel_dataset): ) +def test_simple_aggregate_do_not_have_problems_with_layouts_when_working_with_files( + setup_basic_pixel_dataset, tmp_path +): + dataset_1, *_ = setup_basic_pixel_dataset + tmp_data_set_path_1 = tmp_path / "dataset_1.pxl" + tmp_data_set_path_2 = tmp_path / "dataset_2.pxl" + dataset_1.save(tmp_data_set_path_1) + dataset_1.save(tmp_data_set_path_2) + + result = simple_aggregate( + sample_names=["sample1", "sample2"], + datasets=[read(tmp_data_set_path_1), read(tmp_data_set_path_2)], + ) + + assert len(result.precomputed_layouts.to_df()) == 2 * len( + dataset_1.precomputed_layouts.to_df() + ) + + def test_simple_aggregate_ignore_edgelist(setup_basic_pixel_dataset): """test_simple_aggregate.""" dataset_1, *_ = setup_basic_pixel_dataset diff --git a/tests/pixeldataset/test_precomputed_layouts.py b/tests/pixeldataset/test_precomputed_layouts.py index c5238349..d9d2da65 100644 --- a/tests/pixeldataset/test_precomputed_layouts.py +++ b/tests/pixeldataset/test_precomputed_layouts.py @@ -436,7 +436,7 @@ def test_generate_precomputed_layouts_for_components_with_all_components( } | set(pixel_dataset.adata.var.index) assert set(df["component"]) == set(pixel_dataset.adata.obs.index) - assert set(df["layout"]) == {"pmds_3d"} + assert set(df["layout"]) == {"wpmds_3d"} def test_generate_precomputed_layouts_for_components_with_specific_components( self, pixel_dataset diff --git a/tests/plot/test_plot.py b/tests/plot/test_plot.py index a587e28d..d4d04de7 100644 --- a/tests/plot/test_plot.py +++ b/tests/plot/test_plot.py @@ -10,11 +10,10 @@ from numpy.testing import assert_almost_equal from pixelator.graph import Graph from pixelator.plot import ( - _calculate_densities, - _calculate_distance_to_unit_sphere_zones, - _unit_sphere_surface, cell_count_plot, + density_scatter_plot, edge_rank_plot, + molecule_rank_plot, plot_2d_graph, plot_3d_graph, plot_3d_heatmap, @@ -23,6 +22,11 @@ plot_colocalization_heatmap, scatter_umi_per_upia_vs_tau, ) +from pixelator.plot.layout_plots import ( + _calculate_densities, + _calculate_distance_to_unit_sphere_zones, + _unit_sphere_surface, +) from pytest_snapshot.plugin import Snapshot @@ -45,6 +49,7 @@ def test_plot_3d_graph( pxl_data, *_ = setup_basic_pixel_dataset result = plot_3d_graph( pxl_data, + layout_algorithm="pmds_3d", component=component, marker=marker, suppress_fig=True, @@ -54,6 +59,63 @@ def test_plot_3d_graph( # TODO: Fix the snapshot test - Even though the plotly version matches (5.18.0), the test fails on github +@pytest.mark.parametrize( + "component, marker", + [ + ("PXLCMP0000000", "CD45"), + ("PXLCMP0000000", None), + ], +) +def test_plot_3d_graph_precomputed( + snapshot: Snapshot, component, marker, setup_basic_pixel_dataset +): + """Test `plot_3d_graph` function. + + :param snapshot: testing snapshot directory + """ + np.random.seed(0) + snapshot.snapshot_dir = "tests/snapshots/test_plot/test_plot_3d_graph" + pxl_data, *_ = setup_basic_pixel_dataset + assert pxl_data.precomputed_layouts is not None + result = plot_3d_graph( + pxl_data, + layout_algorithm=None, + component=component, + marker=marker, + suppress_fig=True, + ) + assert isinstance(result, go.Figure) + + +@pytest.mark.mpl_image_compare( + deterministic=True, + baseline_dir="../snapshots/test_plot/test_plot_2d_graph_precomputed", +) +@pytest.mark.parametrize( + "component, marker, show_b_nodes", + [ + ("PXLCMP0000000", "CD45", False), + ((["PXLCMP0000001", "PXLCMP0000002"], ["CD3", "CD45", "CD19"], False)), + (("PXLCMP0000000", "pixel_type", True)), + ], +) +def test_plot_2d_graph_precomputed( + setup_basic_pixel_dataset, component, marker, show_b_nodes +): + np.random.seed(0) + pxl_data, *_ = setup_basic_pixel_dataset + assert pxl_data.precomputed_layouts is not None + fig, _ = plot_2d_graph( + pxl_data, + layout_algorithm=None, + component=component, + marker=marker, + show_b_nodes=show_b_nodes, + random_seed=0, + ) + return fig + + @pytest.mark.mpl_image_compare( deterministic=True, baseline_dir="../snapshots/test_plot/test_plot_2d_graph", @@ -71,6 +133,7 @@ def test_plot_2d_graph(setup_basic_pixel_dataset, component, marker, show_b_node pxl_data, *_ = setup_basic_pixel_dataset fig, _ = plot_2d_graph( pxl_data, + layout_algorithm="pmds", component=component, marker=marker, show_b_nodes=show_b_nodes, @@ -175,6 +238,38 @@ def test_cell_count_plot(): return plot +@pytest.mark.mpl_image_compare( + deterministic=False, + baseline_dir="../snapshots/test_plot/test_molecule_rank_plot", +) +def test_molecule_rank_plot(): + np.random.seed(0) + data = pd.DataFrame( + { + "molecules": np.round(10 ** np.random.normal(4, 0.3, 500)).astype(int), + "group": np.random.choice(["A", "B"], 500), + } + ) + plot, _ = molecule_rank_plot(data, group_by="group") + return plot + + +@pytest.mark.mpl_image_compare( + deterministic=False, + baseline_dir="../snapshots/test_plot/test_molecule_rank_plot", +) +def test_molecule_rank_plot_back_compatibility(): + np.random.seed(0) + data = pd.DataFrame( + { + "edges": np.round(10 ** np.random.normal(4, 0.3, 500)).astype(int), + "group": np.random.choice(["A", "B"], 500), + } + ) + plot, _ = molecule_rank_plot(data, group_by="group") + return plot + + @pytest.mark.mpl_image_compare( deterministic=False, baseline_dir="../snapshots/test_plot/test_edge_rank_plot", @@ -650,3 +745,71 @@ def test_plot_3d_heatmap(edgelist): marker="CD3", distance_cutoff=0.4, ) + + +@pytest.mark.mpl_image_compare( + deterministic=True, + baseline_dir="../snapshots/test_plot/test_density_scatter_plot/", +) +@pytest.mark.parametrize( + "marker1, marker2, extra_params", + [ + ( + "CD3", + "CD8", + { + "facet_row": None, + "facet_column": None, + "gate": pd.Series( + [600, 10, 1000, 20], index=["xmin", "ymin", "xmax", "ymax"] + ), + }, + ), + ( + "CD3", + "CD8", + { + "facet_row": "mean_molecules_per_a_pixel", + "facet_column": None, + "gate": None, + }, + ), + ( + "CD3", + "CD8", + { + "facet_row": None, + "facet_column": "mean_molecules_per_a_pixel", + "gate": pd.Series( + [600, 10, 1000, 20], index=["xmin", "ymin", "xmax", "ymax"] + ), + }, + ), + ], +) +def test_density_scatter_plot( + setup_basic_pixel_dataset, marker1, marker2, extra_params +): + facet_row = extra_params["facet_row"] + facet_column = extra_params["facet_column"] + gate = extra_params["gate"] + + pxl_data, *_ = setup_basic_pixel_dataset + np.random.seed(0) + pxl_data.adata[:, marker1] = pxl_data.adata[ + :, marker1 + ].X.flatten() + np.random.randint(1, 20, size=pxl_data.adata.shape[0]) + pxl_data.adata[:, marker2] = pxl_data.adata[ + :, marker2 + ].X.flatten() + np.random.randint(1, 20, size=pxl_data.adata.shape[0]) + show_marginal = (facet_column is None) & (facet_row is None) + fig, _ = density_scatter_plot( + pxl_data.adata, + marker1=marker1, + marker2=marker2, + facet_row=facet_row, + facet_column=facet_column, + gate=gate, + show_marginal=show_marginal, + ) + return fig diff --git a/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/pbmcs_unstimulated/pbmcs_unstimulated_annotate_metrics.json b/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/pbmcs_unstimulated/pbmcs_unstimulated_annotate_metrics.json index b0185460..f5b2a549 100644 --- a/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/pbmcs_unstimulated/pbmcs_unstimulated_annotate_metrics.json +++ b/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/pbmcs_unstimulated/pbmcs_unstimulated_annotate_metrics.json @@ -121,6 +121,7 @@ "size_filter_fail_molecule_count": 0, "size_filter_fail_read_count": 0, "pixel_count": 6137, + "fraction_aggregate_components": 1.0, "fraction_reads_in_aggregates": 1.0, "fraction_molecules_in_aggregates": 1.0 } \ No newline at end of file diff --git a/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/uropod_control/uropod_control_annotate_metrics.json b/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/uropod_control/uropod_control_annotate_metrics.json index 71947c26..8e11e4d2 100644 --- a/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/uropod_control/uropod_control_annotate_metrics.json +++ b/tests/report/snapshots/test_annotate/test_annotate_metrics_lookup/uropod_control/uropod_control_annotate_metrics.json @@ -121,6 +121,7 @@ "size_filter_fail_molecule_count": 0, "size_filter_fail_read_count": 0, "pixel_count": 7978, + "fraction_aggregate_components": 1.0, "fraction_reads_in_aggregates": 1.0, "fraction_molecules_in_aggregates": 1.0 } \ No newline at end of file diff --git a/tests/report/snapshots/test_annotate/test_annotate_summary/annotate_summary.csv b/tests/report/snapshots/test_annotate/test_annotate_summary/annotate_summary.csv index f5a4799d..3f5ad129 100644 --- a/tests/report/snapshots/test_annotate/test_annotate_summary/annotate_summary.csv +++ b/tests/report/snapshots/test_annotate/test_annotate_summary/annotate_summary.csv @@ -1,3 +1,3 @@ -sample_id,components_modularity,fraction_molecules_in_largest_component,fraction_pixels_in_largest_component,input_cell_count,input_read_count,cell_count,marker_count,total_marker_count,molecule_count,a_pixel_count,b_pixel_count,read_count,aggregate_count,molecules_in_aggregates_count,reads_in_aggregates_count,min_size_threshold,max_size_threshold,doublet_size_threshold,size_filter_fail_cell_count,size_filter_fail_molecule_count,size_filter_fail_read_count,pixel_count,fraction_reads_in_aggregates,fraction_molecules_in_aggregates,molecule_count_per_cell_mean,molecule_count_per_cell_std,molecule_count_per_cell_min,molecule_count_per_cell_q1,molecule_count_per_cell_q2,molecule_count_per_cell_q3,molecule_count_per_cell_max,molecule_count_per_cell_count,molecule_count_per_cell_iqr,read_count_per_cell_mean,read_count_per_cell_std,read_count_per_cell_min,read_count_per_cell_q1,read_count_per_cell_q2,read_count_per_cell_q3,read_count_per_cell_max,read_count_per_cell_count,read_count_per_cell_iqr,a_pixel_count_per_cell_mean,a_pixel_count_per_cell_std,a_pixel_count_per_cell_min,a_pixel_count_per_cell_q1,a_pixel_count_per_cell_q2,a_pixel_count_per_cell_q3,a_pixel_count_per_cell_max,a_pixel_count_per_cell_count,a_pixel_count_per_cell_iqr,b_pixel_count_per_cell_mean,b_pixel_count_per_cell_std,b_pixel_count_per_cell_min,b_pixel_count_per_cell_q1,b_pixel_count_per_cell_q2,b_pixel_count_per_cell_q3,b_pixel_count_per_cell_max,b_pixel_count_per_cell_count,b_pixel_count_per_cell_iqr,marker_count_per_cell_mean,marker_count_per_cell_std,marker_count_per_cell_min,marker_count_per_cell_q1,marker_count_per_cell_q2,marker_count_per_cell_q3,marker_count_per_cell_max,marker_count_per_cell_count,marker_count_per_cell_iqr,a_pixel_b_pixel_ratio_per_cell_mean,a_pixel_b_pixel_ratio_per_cell_std,a_pixel_b_pixel_ratio_per_cell_min,a_pixel_b_pixel_ratio_per_cell_q1,a_pixel_b_pixel_ratio_per_cell_q2,a_pixel_b_pixel_ratio_per_cell_q3,a_pixel_b_pixel_ratio_per_cell_max,a_pixel_b_pixel_ratio_per_cell_count,a_pixel_b_pixel_ratio_per_cell_iqr,molecule_count_per_a_pixel_per_cell_mean,molecule_count_per_a_pixel_per_cell_std,molecule_count_per_a_pixel_per_cell_min,molecule_count_per_a_pixel_per_cell_q1,molecule_count_per_a_pixel_per_cell_q2,molecule_count_per_a_pixel_per_cell_q3,molecule_count_per_a_pixel_per_cell_max,molecule_count_per_a_pixel_per_cell_count,molecule_count_per_a_pixel_per_cell_iqr,b_pixel_count_per_a_pixel_per_cell_mean,b_pixel_count_per_a_pixel_per_cell_std,b_pixel_count_per_a_pixel_per_cell_min,b_pixel_count_per_a_pixel_per_cell_q1,b_pixel_count_per_a_pixel_per_cell_q2,b_pixel_count_per_a_pixel_per_cell_q3,b_pixel_count_per_a_pixel_per_cell_max,b_pixel_count_per_a_pixel_per_cell_count,b_pixel_count_per_a_pixel_per_cell_iqr,a_pixel_count_per_b_pixel_per_cell_mean,a_pixel_count_per_b_pixel_per_cell_std,a_pixel_count_per_b_pixel_per_cell_min,a_pixel_count_per_b_pixel_per_cell_q1,a_pixel_count_per_b_pixel_per_cell_q2,a_pixel_count_per_b_pixel_per_cell_q3,a_pixel_count_per_b_pixel_per_cell_max,a_pixel_count_per_b_pixel_per_cell_count,a_pixel_count_per_b_pixel_per_cell_iqr -pbmcs_unstimulated,0.999668815620027,0.0006480881399870382,0.0004888381945576015,3052,6237,3052,68,80,3086,3077,3060,6237,3052,3086,6237,,,,0,0,0,6137,1.0,1.0,1.011140235910878,0.1049577584303709,1.0,1.0,1.0,1.0,2.0,3052,0.0,2.043577981651376,0.2592989644447359,2.0,2.0,2.0,2.0,5.0,3052,0.0,1.0081913499344692,0.0901346310843966,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0075360419397117,0.08648265728800528,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0068807339449541,0.09380465569259074,0.5,1.0,1.0,1.0,2.0,3052,0.0,1.0029488859764089,0.05422351932424758,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0 -uropod_control,0.9997434707190047,0.0007451564828614009,0.000501378791677112,3963,8117,3963,68,80,4026,3996,3982,8117,3963,4026,8117,,,,0,0,0,7978,1.0,1.0,1.015897047691143,0.1309898320781511,1.0,1.0,1.0,1.0,3.0,3963,0.0,2.0481958112541006,0.2970944331488577,2.0,2.0,2.0,2.0,7.0,3963,0.0,1.008327024981075,0.09360744530597291,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.0047943477163765,0.06907504575713982,1.0,1.0,1.0,1.0,2.0,3963,0.0,1.0136260408781226,0.1180891191803105,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.005803684077719,0.09839298617811536,0.5,1.0,1.0,1.0,3.0,3963,0.0,1.0074438556649004,0.0884874529853118,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.0046681806712088,0.0677001125393875,1.0,1.0,1.0,1.0,2.0,3963,0.0,1.0046681806712088,0.0677001125393875,1.0,1.0,1.0,1.0,2.0,3963,0.0 +sample_id,components_modularity,fraction_molecules_in_largest_component,fraction_pixels_in_largest_component,input_cell_count,input_read_count,cell_count,marker_count,total_marker_count,molecule_count,a_pixel_count,b_pixel_count,read_count,aggregate_count,molecules_in_aggregates_count,reads_in_aggregates_count,min_size_threshold,max_size_threshold,doublet_size_threshold,size_filter_fail_cell_count,size_filter_fail_molecule_count,size_filter_fail_read_count,pixel_count,fraction_aggregate_components,fraction_reads_in_aggregates,fraction_molecules_in_aggregates,molecule_count_per_cell_mean,molecule_count_per_cell_std,molecule_count_per_cell_min,molecule_count_per_cell_q1,molecule_count_per_cell_q2,molecule_count_per_cell_q3,molecule_count_per_cell_max,molecule_count_per_cell_count,molecule_count_per_cell_iqr,read_count_per_cell_mean,read_count_per_cell_std,read_count_per_cell_min,read_count_per_cell_q1,read_count_per_cell_q2,read_count_per_cell_q3,read_count_per_cell_max,read_count_per_cell_count,read_count_per_cell_iqr,a_pixel_count_per_cell_mean,a_pixel_count_per_cell_std,a_pixel_count_per_cell_min,a_pixel_count_per_cell_q1,a_pixel_count_per_cell_q2,a_pixel_count_per_cell_q3,a_pixel_count_per_cell_max,a_pixel_count_per_cell_count,a_pixel_count_per_cell_iqr,b_pixel_count_per_cell_mean,b_pixel_count_per_cell_std,b_pixel_count_per_cell_min,b_pixel_count_per_cell_q1,b_pixel_count_per_cell_q2,b_pixel_count_per_cell_q3,b_pixel_count_per_cell_max,b_pixel_count_per_cell_count,b_pixel_count_per_cell_iqr,marker_count_per_cell_mean,marker_count_per_cell_std,marker_count_per_cell_min,marker_count_per_cell_q1,marker_count_per_cell_q2,marker_count_per_cell_q3,marker_count_per_cell_max,marker_count_per_cell_count,marker_count_per_cell_iqr,a_pixel_b_pixel_ratio_per_cell_mean,a_pixel_b_pixel_ratio_per_cell_std,a_pixel_b_pixel_ratio_per_cell_min,a_pixel_b_pixel_ratio_per_cell_q1,a_pixel_b_pixel_ratio_per_cell_q2,a_pixel_b_pixel_ratio_per_cell_q3,a_pixel_b_pixel_ratio_per_cell_max,a_pixel_b_pixel_ratio_per_cell_count,a_pixel_b_pixel_ratio_per_cell_iqr,molecule_count_per_a_pixel_per_cell_mean,molecule_count_per_a_pixel_per_cell_std,molecule_count_per_a_pixel_per_cell_min,molecule_count_per_a_pixel_per_cell_q1,molecule_count_per_a_pixel_per_cell_q2,molecule_count_per_a_pixel_per_cell_q3,molecule_count_per_a_pixel_per_cell_max,molecule_count_per_a_pixel_per_cell_count,molecule_count_per_a_pixel_per_cell_iqr,b_pixel_count_per_a_pixel_per_cell_mean,b_pixel_count_per_a_pixel_per_cell_std,b_pixel_count_per_a_pixel_per_cell_min,b_pixel_count_per_a_pixel_per_cell_q1,b_pixel_count_per_a_pixel_per_cell_q2,b_pixel_count_per_a_pixel_per_cell_q3,b_pixel_count_per_a_pixel_per_cell_max,b_pixel_count_per_a_pixel_per_cell_count,b_pixel_count_per_a_pixel_per_cell_iqr,a_pixel_count_per_b_pixel_per_cell_mean,a_pixel_count_per_b_pixel_per_cell_std,a_pixel_count_per_b_pixel_per_cell_min,a_pixel_count_per_b_pixel_per_cell_q1,a_pixel_count_per_b_pixel_per_cell_q2,a_pixel_count_per_b_pixel_per_cell_q3,a_pixel_count_per_b_pixel_per_cell_max,a_pixel_count_per_b_pixel_per_cell_count,a_pixel_count_per_b_pixel_per_cell_iqr +pbmcs_unstimulated,0.999668815620027,0.0006480881399870382,0.0004888381945576015,3052,6237,3052,68,80,3086,3077,3060,6237,3052,3086,6237,,,,0,0,0,6137,1.0,1.0,1.0,1.011140235910878,0.1049577584303709,1.0,1.0,1.0,1.0,2.0,3052,0.0,2.043577981651376,0.2592989644447359,2.0,2.0,2.0,2.0,5.0,3052,0.0,1.0081913499344692,0.0901346310843966,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0075360419397117,0.08648265728800528,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0068807339449541,0.09380465569259074,0.5,1.0,1.0,1.0,2.0,3052,0.0,1.0029488859764089,0.05422351932424758,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0,1.0026212319790302,0.05113082359929531,1.0,1.0,1.0,1.0,2.0,3052,0.0 +uropod_control,0.9997434707190047,0.0007451564828614009,0.000501378791677112,3963,8117,3963,68,80,4026,3996,3982,8117,3963,4026,8117,,,,0,0,0,7978,1.0,1.0,1.0,1.015897047691143,0.1309898320781511,1.0,1.0,1.0,1.0,3.0,3963,0.0,2.0481958112541006,0.2970944331488577,2.0,2.0,2.0,2.0,7.0,3963,0.0,1.008327024981075,0.09360744530597291,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.0047943477163765,0.06907504575713982,1.0,1.0,1.0,1.0,2.0,3963,0.0,1.0136260408781226,0.1180891191803105,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.005803684077719,0.09839298617811536,0.5,1.0,1.0,1.0,3.0,3963,0.0,1.0074438556649004,0.0884874529853118,1.0,1.0,1.0,1.0,3.0,3963,0.0,1.0046681806712088,0.0677001125393875,1.0,1.0,1.0,1.0,2.0,3963,0.0,1.0046681806712088,0.0677001125393875,1.0,1.0,1.0,1.0,2.0,3963,0.0 diff --git a/tests/report/snapshots/test_reporting/test_reporting_molecules_flow_summaru/molecules_flow_summary.csv b/tests/report/snapshots/test_reporting/test_reporting_molecules_flow_summary/molecules_flow_summary.csv similarity index 100% rename from tests/report/snapshots/test_reporting/test_reporting_molecules_flow_summaru/molecules_flow_summary.csv rename to tests/report/snapshots/test_reporting/test_reporting_molecules_flow_summary/molecules_flow_summary.csv diff --git a/tests/report/test_reporting.py b/tests/report/test_reporting.py index d6bcd068..a48c0926 100644 --- a/tests/report/test_reporting.py +++ b/tests/report/test_reporting.py @@ -5,6 +5,7 @@ import pytest from pixelator.report import PixelatorReporting, PixelatorWorkdir +from pixelator.report.common.reporting import _ordered_pixelator_commands def test_reporting_plain_dir_constructor(pixelator_workdir): @@ -55,10 +56,28 @@ def test_reporting_reads_flow_summary( snapshot.assert_match(reads_flow.to_csv(), "reads_flow_summary.csv") -def test_reporting_molecules_flow_summaru( +def test_reporting_molecules_flow_summary( pixelator_workdir, all_stages_all_reports_and_meta, snapshot ): reporting = PixelatorReporting(pixelator_workdir) result = reporting.molecules_flow_summary() snapshot.assert_match(result.to_csv(), "molecules_flow_summary.csv") + + +def test_sorted_pixelator_commands(): + commands = _ordered_pixelator_commands() + + assert len(commands) >= 10 + assert commands[:10] == [ + "pixelator single-cell amplicon", + "pixelator single-cell preqc", + "pixelator single-cell adapterqc", + "pixelator single-cell demux", + "pixelator single-cell collapse", + "pixelator single-cell graph", + "pixelator single-cell annotate", + "pixelator single-cell layout", + "pixelator single-cell analysis", + "pixelator single-cell report", + ] diff --git a/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params0.png b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params0.png new file mode 100644 index 00000000..cfe84c53 Binary files /dev/null and b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params0.png differ diff --git a/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params1.png b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params1.png new file mode 100644 index 00000000..475fa91e Binary files /dev/null and b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params1.png differ diff --git a/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params2.png b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params2.png new file mode 100644 index 00000000..b37a17a0 Binary files /dev/null and b/tests/snapshots/test_plot/test_density_scatter_plot/test_density_scatter_plot_CD3-CD8-extra_params2.png differ diff --git a/tests/snapshots/test_plot/test_edge_rank_plot/test_edge_rank_plot.png b/tests/snapshots/test_plot/test_edge_rank_plot/test_edge_rank_plot.png index bd4f9704..c3d3fab9 100644 Binary files a/tests/snapshots/test_plot/test_edge_rank_plot/test_edge_rank_plot.png and b/tests/snapshots/test_plot/test_edge_rank_plot/test_edge_rank_plot.png differ diff --git a/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot.png b/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot.png new file mode 100644 index 00000000..87418215 Binary files /dev/null and b/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot.png differ diff --git a/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot_back_compatibility.png b/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot_back_compatibility.png new file mode 100644 index 00000000..87418215 Binary files /dev/null and b/tests/snapshots/test_plot/test_molecule_rank_plot/test_molecule_rank_plot_back_compatibility.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-CD45RA-False.png b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-CD45RA-False.png index c60c2b0b..a9e692c6 100644 Binary files a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-CD45RA-False.png and b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-CD45RA-False.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-pixel_type-True.png b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-pixel_type-True.png index f8b6538e..7b476591 100644 Binary files a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-pixel_type-True.png and b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_PXLCMP0000000-pixel_type-True.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_component1-marker1-False.png b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_component1-marker1-False.png index b0c330b1..dc08e714 100644 Binary files a/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_component1-marker1-False.png and b/tests/snapshots/test_plot/test_plot_2d_graph/test_plot_2d_graph_component1-marker1-False.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-CD45-False.png b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-CD45-False.png new file mode 100644 index 00000000..61b55537 Binary files /dev/null and b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-CD45-False.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-pixel_type-True.png b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-pixel_type-True.png new file mode 100644 index 00000000..13eec491 Binary files /dev/null and b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_PXLCMP0000000-pixel_type-True.png differ diff --git a/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_component1-marker1-False.png b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_component1-marker1-False.png new file mode 100644 index 00000000..5e5d0b5e Binary files /dev/null and b/tests/snapshots/test_plot/test_plot_2d_graph_precomputed/test_plot_2d_graph_precomputed_component1-marker1-False.png differ