diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c017f06e5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,163 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Models +*.pt diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 000000000..eaffa2220 --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,30 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the OS, Python version and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.11" + rust: "1.70" + + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/src/conf.py + fail_on_warning: true + + +# Declare the Python requirements required to build the docs. +# Additionally, a custom environment variable +# PIP_EXTRA_INDEX_URL: https://download.pytorch.org/whl/cpu +# is declared in the project’s dashboard +python: + install: + - method: pip + path: . + - requirements: docs/requirements.txt diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..7858d7fbb --- /dev/null +++ b/LICENSE @@ -0,0 +1,28 @@ +BSD 3-Clause License + +Copyright (c) 2023, Laboratory of Computational Science and Modeling + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..35a45f68b --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,15 @@ +graft src + +include LICENSE +include README.md + +prune docs +prune tests +prune .github +prune .tox + +exclude .gitignore +exclude tox.ini +exclude .readthedocs.yml + +global-exclude *.py[cod] __pycache__/* *.so *.dylib diff --git a/README.rst b/README.rst new file mode 100644 index 000000000..d7a8cc42e --- /dev/null +++ b/README.rst @@ -0,0 +1,7 @@ +metatensor-models +----------------- + +This is a repository for models using metatensor, in one shape or another. The only +requirement is for these models to be able to take metatensor objects as inputs and +outputs. The models do not need to live entirely in this repository: in the most extreme +case, this repository can simply contain a wrapper to an external model. diff --git a/docs/requirements.txt b/docs/requirements.txt new file mode 100644 index 000000000..ec83730ea --- /dev/null +++ b/docs/requirements.txt @@ -0,0 +1,4 @@ +furo +sphinx >= 7 +sphinx-toggleprompt +tomli diff --git a/docs/src/_static/.gitkeep b/docs/src/_static/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/src/_templates/.gitkeep b/docs/src/_templates/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/docs/src/conf.py b/docs/src/conf.py new file mode 100644 index 000000000..ccf5aeef3 --- /dev/null +++ b/docs/src/conf.py @@ -0,0 +1,80 @@ +import os +import sys +from datetime import datetime + +import tomli # Replace by tomllib from std library once docs are build with Python 3.11 + +import metatensor.models + + +ROOT = os.path.abspath(os.path.join("..", "..")) +sys.path.insert(0, ROOT) + +# -- Project information ----------------------------------------------------- + +# The master toctree document. +master_doc = "index" + +with open(os.path.join(ROOT, "pyproject.toml"), "rb") as fp: + project_dict = tomli.load(fp)["project"] + +project = project_dict["name"] +author = ", ".join(a["name"] for a in project_dict["authors"]) + +copyright = f"{datetime.now().date().year}, {author}" + +# The full version, including alpha/beta/rc tags +release = metatensor.models.__version__ + + +# -- General configuration --------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.viewcode", + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx_toggleprompt", +] + +python_use_unqualified_type_names = True + +autoclass_content = "both" +autodoc_member_order = "bysource" +autodoc_typehints = "both" +autodoc_typehints_format = "short" + +intersphinx_mapping = { + "ase": ("https://wiki.fysik.dtu.dk/ase/", None), + "python": ("https://docs.python.org/3", None), + "torch": ("https://pytorch.org/docs/stable/", None), + "metatensor": ("https://lab-cosmo.github.io/metatensor/latest/", None), + "rascaline": ("https://luthaf.fr/rascaline/latest/", None), +} + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "furo" + +html_theme_options = { + "footer_icons": [ + { + "name": "GitHub", + "url": project_dict["urls"]["repository"], + "html": "", + "class": "fa-brands fa-github fa-2x", + }, + ], +} + +# font-awesome logos (used in the footer) +html_css_files = [ + "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/fontawesome.min.css", + "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/solid.min.css", + "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/brands.min.css", +] diff --git a/docs/src/dev-docs/adding-models.rst b/docs/src/dev-docs/adding-models.rst new file mode 100644 index 000000000..a97544db4 --- /dev/null +++ b/docs/src/dev-docs/adding-models.rst @@ -0,0 +1,4 @@ +Adding new models +================= + +To be done. diff --git a/docs/src/dev-docs/index.rst b/docs/src/dev-docs/index.rst new file mode 100644 index 000000000..c46ce355d --- /dev/null +++ b/docs/src/dev-docs/index.rst @@ -0,0 +1,13 @@ +Developer documentation +======================= + +This is a collection of documentation for developers of the metatensor-models package. +It includes documentation on how to add a new model, as well as the API of the utils +module. + + +.. toctree:: + :maxdepth: 1 + + adding-models + utils/index diff --git a/docs/src/dev-docs/utils/dataset.rst b/docs/src/dev-docs/utils/dataset.rst new file mode 100644 index 000000000..c086d3e84 --- /dev/null +++ b/docs/src/dev-docs/utils/dataset.rst @@ -0,0 +1,7 @@ +Dataset +####### + +.. automodule:: metatensor.models.utils.data.dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/src/dev-docs/utils/index.rst b/docs/src/dev-docs/utils/index.rst new file mode 100644 index 000000000..6e6d48370 --- /dev/null +++ b/docs/src/dev-docs/utils/index.rst @@ -0,0 +1,11 @@ +Utility API +=========== + +This is the API for the ``utils`` module of ``metatensor-models``. + +.. toctree:: + :maxdepth: 1 + + dataset + readers/index + model-io diff --git a/docs/src/dev-docs/utils/model-io.rst b/docs/src/dev-docs/utils/model-io.rst new file mode 100644 index 000000000..14b6e6d3d --- /dev/null +++ b/docs/src/dev-docs/utils/model-io.rst @@ -0,0 +1,7 @@ +Model IO +######## + +.. automodule:: metatensor.models.utils.model_io + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/src/dev-docs/utils/readers/index.rst b/docs/src/dev-docs/utils/readers/index.rst new file mode 100644 index 000000000..c221ecfd5 --- /dev/null +++ b/docs/src/dev-docs/utils/readers/index.rst @@ -0,0 +1,17 @@ +Structure and Target data Readers +================================= + +The main entry point for reading structure and target information are the two reader +functions + +.. automodule:: metatensor.models.utils.data.readers + :members: + +Based on the provided filename they chose which child reader they use. For details on +these refer to their documentation + +.. toctree:: + :maxdepth: 1 + + structure + target diff --git a/docs/src/dev-docs/utils/readers/structure.rst b/docs/src/dev-docs/utils/readers/structure.rst new file mode 100644 index 000000000..4b76fecdb --- /dev/null +++ b/docs/src/dev-docs/utils/readers/structure.rst @@ -0,0 +1,13 @@ +Structure Readers +################# + +Parsers for obtaining information from structures. All readers return a :py:class:`list` +of :py:class:`rascaline.torch.system.System`. The mapping which reader is used for which +file type is stored in + +.. autodata:: metatensor.models.utils.data.readers.structures.STRUCTURE_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.structures.read_ase diff --git a/docs/src/dev-docs/utils/readers/target.rst b/docs/src/dev-docs/utils/readers/target.rst new file mode 100644 index 000000000..4c6382073 --- /dev/null +++ b/docs/src/dev-docs/utils/readers/target.rst @@ -0,0 +1,13 @@ +Target data Readers +################### + +Parsers for obtaining information from structures. All readers return a of +:py:class:`metatensor.torch.TensorMap`. The mapping which reader is used for which file +type is stored in + +.. autodata:: metatensor.models.utils.data.readers.targets.TARGET_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.targets.read_ase diff --git a/docs/src/how-to.rst b/docs/src/how-to.rst new file mode 100644 index 000000000..40c7ebf47 --- /dev/null +++ b/docs/src/how-to.rst @@ -0,0 +1,4 @@ +How-to +====== + +This section describes how to use the ``metatensor-models`` package. diff --git a/docs/src/index.rst b/docs/src/index.rst new file mode 100644 index 000000000..500d2eae7 --- /dev/null +++ b/docs/src/index.rst @@ -0,0 +1,12 @@ +Welcome to metatensor-models's documentation! +============================================= + +This is a collection of atomistic models interfaced with ``metatensor``. + +.. toctree:: + :maxdepth: 1 + + quickstart + how-to + models + dev-docs/index diff --git a/docs/src/models.rst b/docs/src/models.rst new file mode 100644 index 000000000..552ced480 --- /dev/null +++ b/docs/src/models.rst @@ -0,0 +1,10 @@ +Available models +================ + +This is a list of the models available in ``metatensor-models``. + +.. toctree:: + :maxdepth: 1 + :glob: + + models/* diff --git a/docs/src/models/soap-bpnn.rst b/docs/src/models/soap-bpnn.rst new file mode 100644 index 000000000..06a431cfe --- /dev/null +++ b/docs/src/models/soap-bpnn.rst @@ -0,0 +1,30 @@ +SOAP-BPNN +========= + +This is a Behler-Parrinello neural network with SOAP features. + + +Installation +------------ + +To install the package, you can run the following command in the root +directory of the repository: + +.. code-block:: bash + + pip install .[soap-bpnn] + +This will install the package with the SOAP-BPNN dependencies. + + +Hyperparameters +--------------- + +The hyperparameters (and relative default values) for the SOAP-BPNN model are: + +.. literalinclude:: ../../../src/metatensor/models/cli/conf/architecture/soap_bpnn.yaml + :language: yaml + +Any of these hyperparameters can be overridden in the training configuration file. + + diff --git a/docs/src/quickstart.rst b/docs/src/quickstart.rst new file mode 100644 index 000000000..475279102 --- /dev/null +++ b/docs/src/quickstart.rst @@ -0,0 +1,18 @@ +Quickstart +========== + +You can install metatensor-models with pip: + +.. code-block:: bash + + git clone https://github.com/lab-cosmo/metatensor-models + cd metatensor-models + pip install . + + +In addition, specific models must be installed by specifying the model name. For +example, to install the SOAP-BPNN model, you can run: + +.. code-block:: bash + + pip install .[soap-bpnn] diff --git a/latest/.buildinfo b/latest/.buildinfo new file mode 100644 index 000000000..6b837185a --- /dev/null +++ b/latest/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: a9d24f3499a5bec42bca972740e380c7 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/latest/.doctrees/architectures/index.doctree b/latest/.doctrees/architectures/index.doctree new file mode 100644 index 000000000..85c6ceaad Binary files /dev/null and b/latest/.doctrees/architectures/index.doctree differ diff --git a/latest/.doctrees/architectures/soap-bpnn.doctree b/latest/.doctrees/architectures/soap-bpnn.doctree new file mode 100644 index 000000000..425b78c78 Binary files /dev/null and b/latest/.doctrees/architectures/soap-bpnn.doctree differ diff --git a/latest/.doctrees/dev-docs/adding-models.doctree b/latest/.doctrees/dev-docs/adding-models.doctree new file mode 100644 index 000000000..4e877f040 Binary files /dev/null and b/latest/.doctrees/dev-docs/adding-models.doctree differ diff --git a/latest/.doctrees/dev-docs/cli/eval_model.doctree b/latest/.doctrees/dev-docs/cli/eval_model.doctree new file mode 100644 index 000000000..6271fef3c Binary files /dev/null and b/latest/.doctrees/dev-docs/cli/eval_model.doctree differ diff --git a/latest/.doctrees/dev-docs/cli/export_model.doctree b/latest/.doctrees/dev-docs/cli/export_model.doctree new file mode 100644 index 000000000..d4fd4cb13 Binary files /dev/null and b/latest/.doctrees/dev-docs/cli/export_model.doctree differ diff --git a/latest/.doctrees/dev-docs/cli/formatter.doctree b/latest/.doctrees/dev-docs/cli/formatter.doctree new file mode 100644 index 000000000..81d919786 Binary files /dev/null and b/latest/.doctrees/dev-docs/cli/formatter.doctree differ diff --git a/latest/.doctrees/dev-docs/cli/index.doctree b/latest/.doctrees/dev-docs/cli/index.doctree new file mode 100644 index 000000000..3d22c7e37 Binary files /dev/null and b/latest/.doctrees/dev-docs/cli/index.doctree differ diff --git a/latest/.doctrees/dev-docs/cli/train_model.doctree b/latest/.doctrees/dev-docs/cli/train_model.doctree new file mode 100644 index 000000000..ac539325d Binary files /dev/null and b/latest/.doctrees/dev-docs/cli/train_model.doctree differ diff --git a/latest/.doctrees/dev-docs/index.doctree b/latest/.doctrees/dev-docs/index.doctree new file mode 100644 index 000000000..fd949c7e0 Binary files /dev/null and b/latest/.doctrees/dev-docs/index.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/combine_dataloaders.doctree b/latest/.doctrees/dev-docs/utils/combine_dataloaders.doctree new file mode 100644 index 000000000..677e86fd2 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/combine_dataloaders.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/dataset.doctree b/latest/.doctrees/dev-docs/utils/dataset.doctree new file mode 100644 index 000000000..da73bb427 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/dataset.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/index.doctree b/latest/.doctrees/dev-docs/utils/index.doctree new file mode 100644 index 000000000..77a2de129 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/index.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/model-io.doctree b/latest/.doctrees/dev-docs/utils/model-io.doctree new file mode 100644 index 000000000..36041c981 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/model-io.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/omegaconf.doctree b/latest/.doctrees/dev-docs/utils/omegaconf.doctree new file mode 100644 index 000000000..10830e1f3 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/omegaconf.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/readers/index.doctree b/latest/.doctrees/dev-docs/utils/readers/index.doctree new file mode 100644 index 000000000..efdf9673c Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/readers/index.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/readers/structure.doctree b/latest/.doctrees/dev-docs/utils/readers/structure.doctree new file mode 100644 index 000000000..265117e58 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/readers/structure.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/readers/targets.doctree b/latest/.doctrees/dev-docs/utils/readers/targets.doctree new file mode 100644 index 000000000..2be36a869 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/readers/targets.doctree differ diff --git a/latest/.doctrees/dev-docs/utils/writers.doctree b/latest/.doctrees/dev-docs/utils/writers.doctree new file mode 100644 index 000000000..28c533789 Binary files /dev/null and b/latest/.doctrees/dev-docs/utils/writers.doctree differ diff --git a/latest/.doctrees/environment.pickle b/latest/.doctrees/environment.pickle new file mode 100644 index 000000000..2484c6d78 Binary files /dev/null and b/latest/.doctrees/environment.pickle differ diff --git a/latest/.doctrees/getting-started/custom_dataset_conf.doctree b/latest/.doctrees/getting-started/custom_dataset_conf.doctree new file mode 100644 index 000000000..53fc72135 Binary files /dev/null and b/latest/.doctrees/getting-started/custom_dataset_conf.doctree differ diff --git a/latest/.doctrees/getting-started/index.doctree b/latest/.doctrees/getting-started/index.doctree new file mode 100644 index 000000000..f98eefe3d Binary files /dev/null and b/latest/.doctrees/getting-started/index.doctree differ diff --git a/latest/.doctrees/getting-started/installation.doctree b/latest/.doctrees/getting-started/installation.doctree new file mode 100644 index 000000000..ee3c4d628 Binary files /dev/null and b/latest/.doctrees/getting-started/installation.doctree differ diff --git a/latest/.doctrees/getting-started/override.doctree b/latest/.doctrees/getting-started/override.doctree new file mode 100644 index 000000000..3542ab7f2 Binary files /dev/null and b/latest/.doctrees/getting-started/override.doctree differ diff --git a/latest/.doctrees/getting-started/usage.doctree b/latest/.doctrees/getting-started/usage.doctree new file mode 100644 index 000000000..93b3b8415 Binary files /dev/null and b/latest/.doctrees/getting-started/usage.doctree differ diff --git a/latest/.doctrees/index.doctree b/latest/.doctrees/index.doctree new file mode 100644 index 000000000..ee84217ff Binary files /dev/null and b/latest/.doctrees/index.doctree differ diff --git a/latest/_downloads/65641f12c5c057c1da9e9b6c5c8bc465/qm9_reduced_100.xyz b/latest/_downloads/65641f12c5c057c1da9e9b6c5c8bc465/qm9_reduced_100.xyz new file mode 100644 index 000000000..14b2a0416 --- /dev/null +++ b/latest/_downloads/65641f12c5c057c1da9e9b6c5c8bc465/qm9_reduced_100.xyz @@ -0,0 +1,1201 @@ +5 +Properties=species:S:1:pos:R:3 A=157.7118 B=157.70997 C=157.70699 mu=0 alpha=13.21 epsHOMO=-0.3877 epsLUMO=0.1171 epsgap=0.5048 =35.3641 zpve=0.044749 U0=-40.47893 U=-40.476062 H=-40.475117 G=-40.498597 Cv=6.469 pbc="F F F" +C -0.01269814 1.08580416 0.00800100 +H 0.00215042 -0.00603132 0.00197612 +H 1.01173084 1.46375116 0.00027657 +H -0.54081507 1.44752661 -0.87664372 +H -0.52381363 1.43793264 0.90639729 +4 +Properties=species:S:1:pos:R:3 A=293.60975 B=293.54111 C=191.39397 mu=1.6256 alpha=9.46 epsHOMO=-0.257 epsLUMO=0.0829 epsgap=0.3399 =26.1563 zpve=0.034358 U0=-56.525887 U=-56.523026 H=-56.522082 G=-56.544961 Cv=6.316 pbc="F F F" +N -0.04042605 1.02410775 0.06256380 +H 0.01725746 0.01254521 -0.02737716 +H 0.91578937 1.35874519 -0.02875776 +H -0.52027774 1.34353213 -0.77554261 +3 +Properties=species:S:1:pos:R:3 A=799.58812 B=437.90386 C=282.94545 mu=1.8511 alpha=6.31 epsHOMO=-0.2928 epsLUMO=0.0687 epsgap=0.3615 =19.0002 zpve=0.021375 U0=-76.404702 U=-76.401867 H=-76.400922 G=-76.422349 Cv=6.002 pbc="F F F" +O -0.03436050 0.97753957 0.00760159 +H 0.06476649 0.02057220 0.00153463 +H 0.87179037 1.30079240 0.00069313 +4 +Properties=species:S:1:pos:R:3 A=0 B=35.6100361 C=35.6100361 mu=0 alpha=16.28 epsHOMO=-0.2845 epsLUMO=0.0506 epsgap=0.3351 =59.5248 zpve=0.026841 U0=-77.308427 U=-77.305527 H=-77.304583 G=-77.327429 Cv=8.574 pbc="F F F" +C 0.59953949 0.00000000 1.00000000 +C -0.59953949 0.00000000 1.00000000 +H -1.66163859 0.00000000 1.00000000 +H 1.66163859 0.00000000 1.00000000 +3 +Properties=species:S:1:pos:R:3 A=0 B=44.593883 C=44.593883 mu=2.8937 alpha=12.99 epsHOMO=-0.3604 epsLUMO=0.0191 epsgap=0.3796 =48.7476 zpve=0.016601 U0=-93.411888 U=-93.40937 H=-93.408425 G=-93.431246 Cv=6.278 pbc="F F F" +C -0.01332393 1.13246572 0.00827589 +N 0.00231072 -0.01915859 0.00192873 +H -0.02780270 2.19894930 0.01415379 +4 +Properties=species:S:1:pos:R:3 A=285.48839 B=38.9823 C=34.29892 mu=2.1089 alpha=14.18 epsHOMO=-0.267 epsLUMO=-0.0406 epsgap=0.2263 =59.9891 zpve=0.026603 U0=-114.483613 U=-114.480746 H=-114.479802 G=-114.505268 Cv=6.413 pbc="F F F" +C -0.01397770 1.18021143 0.00775250 +O 0.00231399 -0.01966366 0.00216107 +H 0.91496029 1.78951117 0.00395656 +H -0.95910972 1.76401798 0.01718284 +8 +Properties=species:S:1:pos:R:3 A=80.46225 B=19.90649 C=19.90633 mu=0 alpha=23.95 epsHOMO=-0.3385 epsLUMO=0.1041 epsgap=0.4426 =109.5031 zpve=0.074542 U0=-79.764152 U=-79.760666 H=-79.759722 G=-79.787269 Cv=10.098 pbc="F F F" +C -0.01870400 1.52558201 0.01043281 +C 0.00210374 -0.00388191 0.00199882 +H 0.99487275 1.93974324 0.00294120 +H -0.54207611 1.92361063 -0.86511735 +H -0.52524112 1.91417308 0.90002399 +H 0.52548654 -0.40190784 0.87754395 +H -1.01147651 -0.41803380 0.00950849 +H 0.50862619 -0.39247040 -0.88760117 +6 +Properties=species:S:1:pos:R:3 A=127.83497 B=24.85872 C=23.97872 mu=1.5258 alpha=16.97 epsHOMO=-0.2653 epsLUMO=0.0784 epsgap=0.3437 =83.794 zpve=0.051208 U0=-115.679136 U=-115.675816 H=-115.674872 G=-115.701876 Cv=8.751 pbc="F F F" +C -0.00828817 1.39046978 -0.00560069 +O -0.00797038 -0.02504537 0.02030606 +H 1.00658338 1.81556366 0.00348335 +H -0.54657475 1.79916975 -0.87390126 +H -0.52288871 1.72555240 0.89907326 +H 0.44142019 -0.33354425 -0.77152059 +7 +Properties=species:S:1:pos:R:3 A=160.28041 B=8.59323 C=8.59321 mu=0.7156 alpha=28.78 epsHOMO=-0.2609 epsLUMO=0.0613 epsgap=0.3222 =177.1963 zpve=0.05541 U0=-116.609549 U=-116.60555 H=-116.604606 G=-116.633775 Cv=12.482 pbc="F F F" +C -0.01782102 1.46435788 0.01009397 +C 0.00208816 0.00950777 0.00201200 +C 0.01834085 -1.19180518 -0.00450508 +H 0.99782210 1.87425349 0.00260606 +H -0.54220434 1.85801178 -0.86721192 +H -0.52533306 1.84834356 0.90148138 +H 0.03231658 -2.25314823 -0.01025999 +6 +Properties=species:S:1:pos:R:3 A=159.03567 B=9.22327 C=9.22324 mu=3.8266 alpha=24.45 epsHOMO=-0.3264 epsLUMO=0.0376 epsgap=0.364 =160.7223 zpve=0.045286 U0=-132.71815 U=-132.714563 H=-132.713619 G=-132.742149 Cv=10.287 pbc="F F F" +C -0.01788629 1.46712787 0.01011311 +C 0.00173819 0.01035260 0.00207588 +N 0.01765235 -1.14452926 -0.00420445 +H 1.00202941 1.86089927 0.00245401 +H -0.54398848 1.84479901 -0.87075460 +H -0.52707783 1.83518166 0.90486329 +7 +Properties=species:S:1:pos:R:3 A=57.22434 B=10.11122 C=9.07368 mu=2.5682 alpha=25.11 epsHOMO=-0.254 epsLUMO=-0.0198 epsgap=0.2342 =166.9728 zpve=0.055355 U0=-153.787612 U=-153.783728 H=-153.782784 G=-153.812518 Cv=11.219 pbc="F F F" +C -0.00294482 1.50991366 0.00867278 +C 0.02608284 0.00327563 -0.03745912 +O 0.94228801 -0.65507035 -0.45682576 +H 0.92278802 1.92634242 -0.39146557 +H -0.86201540 1.87852481 -0.56479538 +H -0.15050638 1.84393383 1.04289100 +H -0.89443009 -0.48643408 0.35774865 +6 +Properties=species:S:1:pos:R:3 A=73.8472 B=11.34793 C=9.83639 mu=3.7286 alpha=21.57 epsHOMO=-0.2543 epsLUMO=0.0302 epsgap=0.2845 =145.3078 zpve=0.045279 U0=-169.860788 U=-169.856903 H=-169.855958 G=-169.885594 Cv=10.89 pbc="F F F" +N -0.02589986 1.34614561 0.00889391 +C 0.04646728 -0.01174341 0.00120425 +O 1.07183520 -0.65258782 -0.01113313 +H 0.82535497 1.88504948 0.00373769 +H -0.90837680 1.82679638 0.01891992 +H -0.96144100 -0.47500376 0.00807391 +11 +Properties=species:S:1:pos:R:3 A=29.45018 B=8.37701 C=7.42076 mu=0.0597 alpha=34.75 epsHOMO=-0.323 epsLUMO=0.0949 epsgap=0.4179 =227.1361 zpve=0.103182 U0=-119.052475 U=-119.047927 H=-119.046983 G=-119.078157 Cv=14.84 pbc="F F F" +C -0.03113825 1.54081582 0.03192126 +C 0.01215347 0.01092235 -0.01603259 +C 0.72169129 -0.52583353 -1.26230570 +H 0.97955987 1.96459116 0.03098367 +H -0.55840223 1.94831192 -0.83816075 +H -0.54252252 1.90153531 0.93005671 +H 0.51522791 -0.36840234 0.88231134 +H -1.01070641 -0.38456999 0.02051783 +H 1.75851210 -0.17376585 -1.30871516 +H 0.74087192 -1.62024959 -1.27516511 +H 0.22023351 -0.19051179 -2.17729020 +9 +Properties=species:S:1:pos:R:3 A=35.09545 B=9.3686 C=8.1497 mu=1.4131 alpha=27.87 epsHOMO=-0.2619 epsLUMO=0.0798 epsgap=0.3417 =193.1659 zpve=0.079754 U0=-154.972731 U=-154.968412 H=-154.967467 G=-154.998148 Cv=13.546 pbc="F F F" +C -0.00860504 1.50203829 -0.00681217 +C 0.01099310 -0.01764877 -0.01377035 +O 0.68088841 -0.44041803 -1.19313210 +H 1.01153334 1.89662030 -0.01920155 +H -0.53159862 1.88076109 -0.88974659 +H -0.51674572 1.87611771 0.88710739 +H 0.52377121 -0.38912295 0.88824082 +H -1.02027544 -0.40507261 0.01690670 +H 0.69529573 -1.40179568 -1.20148495 +9 +Properties=species:S:1:pos:R:3 A=39.37691 B=10.04033 C=8.90353 mu=1.1502 alpha=28.13 epsHOMO=-0.2525 epsLUMO=0.091 epsgap=0.3435 =187.1015 zpve=0.079534 U0=-154.960361 U=-154.956045 H=-154.9551 G=-154.985747 Cv=12.934 pbc="F F F" +C -0.01482147 1.39241234 0.00567104 +O -0.00471537 -0.01360660 0.01459658 +C 0.63794893 -0.55329676 -1.11358232 +H 1.00528358 1.81015807 0.00465631 +H -0.54689560 1.79343530 -0.87251051 +H -0.53002895 1.72291969 0.91101696 +H 0.13993792 -0.25599333 -2.05098375 +H 1.69265275 -0.23868382 -1.17477743 +H 0.59959435 -1.64180161 -1.02407616 +9 +Properties=species:S:1:pos:R:3 A=20.15852 B=20.15302 C=12.5891 mu=0.0005 alpha=30.82 epsHOMO=-0.2888 epsLUMO=0.1042 epsgap=0.393 =155.8145 zpve=0.081231 U0=-117.824798 U=-117.821426 H=-117.820482 G=-117.849087 Cv=11.041 pbc="F F F" +C -0.01193280 1.51433198 0.01031700 +C 1.30299118 0.77886562 -0.00617842 +C 0.00867174 0.00767042 0.00201032 +H -0.30541464 2.01702117 0.92533239 +H -0.32275498 2.02680156 -0.89347839 +H 1.88493396 0.79145020 -0.92119393 +H 1.90226631 0.78165391 0.89766373 +H -0.27088043 -0.51289125 0.91137474 +H -0.28821983 -0.50310409 -0.90740824 +7 +Properties=species:S:1:pos:R:3 A=25.77385 B=22.12109 C=14.18066 mu=1.7675 alpha=24.04 epsHOMO=-0.2682 epsLUMO=0.1042 epsgap=0.3724 =129.891 zpve=0.057289 U0=-153.742562 U=-153.73941 H=-153.738466 G=-153.766642 Cv=9.176 pbc="F F F" +C 0.01537720 1.41764380 0.00956287 +C 1.26478161 0.64923984 -0.00655044 +O -0.00024018 -0.00771006 0.00204055 +H -0.31763326 1.88586598 0.93475751 +H -0.33527583 1.89576673 -0.90397578 +H 1.83246682 0.56256848 -0.93193290 +H 1.85008258 0.55267938 0.90680147 +10 +Properties=species:S:1:pos:R:3 A=10.12193 B=8.49011 C=4.89615 mu=2.7362 alpha=35.53 epsHOMO=-0.2431 epsLUMO=-0.0087 epsgap=0.2344 =292.4367 zpve=0.083382 U0=-193.08834 U=-193.082969 H=-193.082024 G=-193.116476 Cv=16.893 pbc="F F F" +C -0.00310189 1.48050328 -0.17259867 +C -0.04527202 -0.02887059 0.00139493 +C 1.29705800 -0.72194415 0.16889042 +O -1.08643172 -0.64273343 0.00630393 +H 0.59403529 1.74668579 -1.05225043 +H -1.01540407 1.87034023 -0.28382265 +H 0.48099600 1.95070605 0.69099376 +H 1.82512144 -0.32470731 1.04328658 +H 1.14892507 -1.79597689 0.28554393 +H 1.93682635 -0.52949692 -0.69995403 +9 +Properties=species:S:1:pos:R:3 A=10.78886 B=9.27509 C=5.14977 mu=3.6367 alpha=31.83 epsHOMO=-0.2436 epsLUMO=0.0347 epsgap=0.2783 =267.6148 zpve=0.07319 U0=-209.159302 U=-209.15402 H=-209.153076 G=-209.187468 Cv=16.561 pbc="F F F" +C 0.00679889 1.49969736 -0.02567030 +C -0.02740385 -0.01752051 -0.14894811 +N 1.17826667 -0.63324298 0.05691721 +O -1.03721965 -0.63980649 -0.40727572 +H 0.91390280 1.92923755 -0.46100067 +H -0.87080896 1.91124186 -0.52345176 +H -0.02826124 1.78517271 1.03149125 +H 1.98405139 -0.13175861 0.38674906 +H 1.19049421 -1.63919563 0.10006209 +8 +Properties=species:S:1:pos:R:3 A=11.1475 B=10.36388 C=5.42091 mu=3.4869 alpha=28.07 epsHOMO=-0.2495 epsLUMO=0.0556 epsgap=0.3051 =244.2308 zpve=0.063824 U0=-225.221461 U=-225.217075 H=-225.216131 G=-225.247724 Cv=15.292 pbc="F F F" +N 0.03605270 1.36077873 -0.12416403 +C -0.02591138 -0.02076560 0.00200645 +N 1.21968479 -0.62334220 0.11963222 +O -1.06822866 -0.64174597 0.00865573 +H 0.80749439 1.83455148 0.32144915 +H -0.85825775 1.80373500 0.02243770 +H 1.99927148 -0.17303054 -0.33602496 +H 1.18204327 -1.62147901 -0.02109234 +14 +Properties=species:S:1:pos:R:3 A=7.75166 B=7.74847 C=4.48668 mu=0.0897 alpha=45.46 epsHOMO=-0.3167 epsLUMO=0.0843 epsgap=0.401 =355.0621 zpve=0.131146 U0=-158.342346 U=-158.336603 H=-158.335658 G=-158.370016 Cv=20.273 pbc="F F F" +C -0.03215888 1.54021598 0.01074456 +C 0.03381741 0.00745852 0.00180716 +C 0.71375572 -0.50856404 -1.27296949 +C 0.73848999 -0.52220886 1.25750907 +H 0.97522736 1.97414341 0.00528362 +H -0.56196769 1.92232326 -0.86835418 +H -0.54817239 1.91268414 0.90208039 +H -0.99752525 -0.37310578 0.00977297 +H 1.75070021 -0.15586784 -1.33269631 +H 0.73446691 -1.60328288 -1.29939696 +H 0.19367011 -0.16085589 -2.17195508 +H 0.23611990 -0.18382017 2.17005260 +H 0.75964083 -1.61713153 1.27226101 +H 1.77635866 -0.16985318 1.30053019 +12 +Properties=species:S:1:pos:R:3 A=8.67553 B=8.00568 C=4.75542 mu=1.4259 alpha=38.58 epsHOMO=-0.2612 epsLUMO=0.074 epsgap=0.3351 =318.3721 zpve=0.107673 U0=-194.267232 U=-194.261748 H=-194.260804 G=-194.294663 Cv=19.052 pbc="F F F" +C -0.03315871 1.54782566 -0.00438815 +C -0.01108534 0.01859095 0.01676117 +C 0.70938384 -0.53596711 1.23978444 +O -1.33219841 -0.51712554 0.05236057 +H 0.98215692 1.95715900 -0.03182225 +H -0.56388100 1.92087623 -0.88845865 +H -0.54082548 1.93340945 0.88575489 +H 0.51042122 -0.33767241 -0.88819176 +H 0.22240492 -0.18785860 2.15650245 +H 0.68242024 -1.62887638 1.23305141 +H 1.75434301 -0.21246950 1.25524188 +H -1.81818681 -0.15577435 -0.69553962 +6 +Properties=species:S:1:pos:R:3 A=0 B=4.4259726 C=4.4259726 mu=0 alpha=38.52 epsHOMO=-0.2599 epsLUMO=-0.0214 epsgap=0.2386 =278.6264 zpve=0.037354 U0=-153.459846 U=-153.455442 H=-153.454498 G=-153.482621 Cv=15.312 pbc="F F F" +C 0.68098021 0.00000000 0.00000000 +C -0.68098021 0.00000000 0.00000000 +C -1.88766603 0.00000000 0.00000000 +C 1.88766603 0.00000000 0.00000000 +H -2.94960000 0.00000000 0.00000000 +H 2.94960000 0.00000000 0.00000000 +5 +Properties=species:S:1:pos:R:3 A=0 B=4.5793222 C=4.5793222 mu=3.792 alpha=32.66 epsHOMO=-0.3102 epsLUMO=-0.0543 epsgap=0.2559 =260.1896 zpve=0.027259 U0=-169.557758 U=-169.553764 H=-169.55282 G=-169.581024 Cv=12.93 pbc="F F F" +C 0.01510390 0.00000000 1.00000000 +C 1.38233149 0.00000000 1.00000000 +C -1.18862525 0.00000000 1.00000000 +H -2.25177201 0.00000000 1.00000000 +N 2.54296187 0.00000000 1.00000000 +4 +Properties=species:S:1:pos:R:3 A=0 B=4.73269 C=4.73269 mu=0.0023 alpha=27.7 epsHOMO=-0.3696 epsLUMO=-0.0926 epsgap=0.277 =242.9308 zpve=0.015951 U0=-185.648533 U=-185.644825 H=-185.64388 G=-185.667652 Cv=10.398 pbc="F F F" +N 0.01745734 -1.16134217 -0.00415342 +C 0.00253212 -0.00344278 0.00179939 +C -0.01611419 1.37220987 0.00934873 +N -0.03264302 2.53008276 0.01609090 +6 +Properties=species:S:1:pos:R:3 A=68.5171 B=4.8345 C=4.51586 mu=2.7824 alpha=31.14 epsHOMO=-0.2777 epsLUMO=-0.0735 epsgap=0.2042 =268.3921 zpve=0.037208 U0=-190.624631 U=-190.620363 H=-190.619419 G=-190.650543 Cv=13.049 pbc="F F F" +O -0.06776120 -0.04233838 0.00282489 +C -0.00562945 1.16382879 0.00743862 +C 1.22985272 1.91339997 0.00028781 +C 2.23625322 2.57430970 -0.00529277 +H -0.91670701 1.79467546 0.01781352 +H 3.13429662 3.14370267 -0.01037656 +5 +Properties=species:S:1:pos:R:3 A=67.88408 B=5.00823 C=4.66413 mu=2.3112 alpha=26.25 epsHOMO=-0.3166 epsLUMO=-0.11 epsgap=0.2066 =251.0007 zpve=0.02654 U0=-206.721858 U=-206.717875 H=-206.716931 G=-206.747625 Cv=11.329 pbc="F F F" +O -0.04055978 -0.03799144 0.00266513 +C -0.01768870 1.16193251 0.00746008 +C 1.23315534 1.93381336 0.00043371 +N 2.19857378 2.57055097 -0.00483320 +H -0.92627534 1.78959196 0.01764859 +6 +Properties=species:S:1:pos:R:3 A=56.25048 B=4.77441 C=4.40088 mu=0.002 alpha=26.12 epsHOMO=-0.2668 epsLUMO=-0.1113 epsgap=0.1555 =266.8164 zpve=0.036943 U0=-227.798785 U=-227.79457 H=-227.793626 G=-227.825074 Cv=12.147 pbc="F F F" +O 0.00337122 -0.03146586 0.00157206 +C -0.01713174 1.17081409 0.00676444 +C 1.26555783 1.99719410 -0.00007703 +O 1.24507069 3.19946589 0.00681275 +H -0.94690483 1.77678142 0.01852668 +H 2.19534410 1.39121374 -0.01006739 +10 +Properties=species:S:1:pos:R:3 A=80.28766 B=3.3688 C=3.3688 mu=0 alpha=42.32 epsHOMO=-0.2412 epsLUMO=0.0684 epsgap=0.3096 =400.2236 zpve=0.083896 U0=-155.908941 U=-155.90318 H=-155.902236 G=-155.937641 Cv=17.447 pbc="F F F" +C -0.01787959 1.46676893 0.01011180 +C 0.00186644 0.01072913 0.00211109 +C 0.01819704 -1.19272861 -0.00450723 +C 0.03795170 -2.64876793 -0.01251193 +H 0.86460312 1.87589979 0.51479719 +H -0.03217624 1.87210581 -1.00791002 +H -0.90233115 1.85185524 0.53003953 +H -0.83477011 -3.06339007 0.50451436 +H 0.03276422 -3.04315564 -1.03491223 +H 0.93213486 -3.03931642 0.48626606 +10 +Properties=species:S:1:pos:R:3 A=27.39459 B=4.53005 C=4.08342 mu=0.7067 alpha=40.09 epsHOMO=-0.2592 epsLUMO=0.0566 epsgap=0.3157 =333.9589 zpve=0.084338 U0=-155.897345 U=-155.892291 H=-155.891347 G=-155.924226 Cv=17.13 pbc="F F F" +C -0.03095840 1.54775025 0.03167945 +C 0.01485375 0.00962471 -0.02082154 +C 0.69099073 -0.49954575 -1.20857624 +C 1.25222275 -0.89514467 -2.19527879 +H 0.97899300 1.96621609 0.03373834 +H -0.56082354 1.95002902 -0.83580745 +H -0.54576708 1.88225519 0.93709062 +H 0.51920135 -0.37425398 0.87496224 +H -1.00644802 -0.39030838 0.01340632 +H 1.74594541 -1.25604187 -3.06299415 +9 +Properties=species:S:1:pos:R:3 A=28.0016 B=4.67752 C=4.21765 mu=3.9233 alpha=35.38 epsHOMO=-0.3213 epsLUMO=0.034 epsgap=0.3553 =314.5335 zpve=0.07419 U0=-172.006141 U=-172.001467 H=-172.000523 G=-172.032826 Cv=14.988 pbc="F F F" +C -0.02522005 1.54773054 0.02133370 +C 0.01183939 0.00999278 -0.01556702 +C 0.68915114 -0.50836846 -1.20331488 +N 1.22565733 -0.90360846 -2.14737482 +H 0.98571620 1.96212990 0.02370153 +H -0.55522192 1.94599662 -0.84711771 +H -0.53962556 1.88294354 0.92536604 +H 0.52481910 -0.38226048 0.86933355 +H -1.00453542 -0.39832109 0.00530071 +8 +Properties=species:S:1:pos:R:3 A=32.19893 B=4.76299 C=4.30696 mu=4.4361 alpha=31.81 epsHOMO=-0.2683 epsLUMO=0.0173 epsgap=0.2855 =295.6635 zpve=0.063305 U0=-188.042067 U=-188.037478 H=-188.036534 G=-188.06863 Cv=14.488 pbc="F F F" +N -0.03608099 1.48762533 0.03678072 +C -0.01039471 0.02517605 -0.01506608 +C -1.37180956 -0.52108920 0.02739272 +N -2.44026695 -0.95956444 0.03370519 +H 0.91729752 1.83547547 0.05202682 +H -0.47162178 1.85677205 -0.80275569 +H 0.48946161 -0.40880401 -0.89715168 +H 0.52827150 -0.34533338 0.86469547 +8 +Properties=species:S:1:pos:R:3 A=35.11615 B=4.66117 C=4.22354 mu=1.7211 alpha=33.1 epsHOMO=-0.2595 epsLUMO=0.0277 epsgap=0.2872 =300.0993 zpve=0.060632 U0=-191.810916 U=-191.806025 H=-191.805081 G=-191.837634 Cv=15.855 pbc="F F F" +O -0.02013197 1.45738137 0.01010195 +C 0.00168478 0.03579980 0.00224736 +C -1.36366691 -0.47481101 0.01255056 +C -2.47902835 -0.91970202 0.02082451 +H 0.89446911 1.75736553 0.00327363 +H 0.51979028 -0.35175413 -0.88980302 +H 0.53670458 -0.36127661 0.88000894 +H -3.46773502 -1.30737009 0.02818120 +7 +Properties=species:S:1:pos:R:3 A=35.93172 B=4.83443 C=4.37827 mu=4.6788 alpha=28.56 epsHOMO=-0.3018 epsLUMO=0.0022 epsgap=0.3039 =280.6659 zpve=0.050262 U0=-207.916786 U=-207.912215 H=-207.911271 G=-207.943384 Cv=13.845 pbc="F F F" +O -0.03738221 1.44547841 0.01010769 +C 0.01292906 0.03441661 0.00209165 +C -1.35747452 -0.48874523 0.01239738 +N -2.42135277 -0.93685184 0.02016053 +H 0.86898057 1.76972949 0.00417577 +H 0.51692713 -0.36329790 -0.89215814 +H 0.53387616 -0.37278749 0.88223921 +10 +Properties=species:S:1:pos:R:3 A=26.14564 B=4.2893 C=4.12773 mu=2.6741 alpha=35.83 epsHOMO=-0.25 epsLUMO=-0.0205 epsgap=0.2295 =333.3276 zpve=0.084175 U0=-193.075202 U=-193.070116 H=-193.069171 G=-193.102798 Cv=15.954 pbc="F F F" +C 0.16879340 1.52513042 -0.15747056 +C -0.18737625 0.06194763 0.14679374 +C 0.50917645 -0.43996215 1.39125850 +O 1.18191079 -1.43565585 1.45816384 +H 1.23126511 1.63137254 -0.39632693 +H -0.40744668 1.89431681 -1.00969246 +H -0.04931034 2.17266260 0.69857432 +H -1.26905160 -0.01668067 0.32854433 +H 0.06279062 -0.60250479 -0.68474036 +H 0.35384841 0.20663370 2.28871052 +9 +Properties=species:S:1:pos:R:3 A=19.98749 B=6.11589 C=4.82584 mu=3.7071 alpha=32.78 epsHOMO=-0.2516 epsLUMO=0.0335 epsgap=0.2851 =279.7863 zpve=0.074166 U0=-209.144909 U=-209.139976 H=-209.139032 G=-209.172305 Cv=15.058 pbc="F F F" +C 0.01474916 1.47888256 -0.03509326 +N 0.18708077 0.03831317 -0.02906851 +C 0.45703661 -0.66858895 1.10069001 +O 0.58457996 -0.19876202 2.21119705 +H 0.76025289 1.96736104 -0.67198126 +H -0.98462423 1.75984483 -0.38485103 +H 0.14269849 1.82387718 0.99149397 +H 0.10386349 -0.46937726 -0.89461379 +H 0.55047568 -1.75253452 0.88868242 +8 +Properties=species:S:1:pos:R:3 A=48.62351 B=4.67298 C=4.38187 mu=3.92 alpha=29.47 epsHOMO=-0.2814 epsLUMO=0.0074 epsgap=0.2888 =293.917 zpve=0.061327 U0=-229.013797 U=-229.009003 H=-229.008059 G=-229.041086 Cv=13.885 pbc="F F F" +C 0.10653781 1.43512049 0.03336100 +O 0.42686564 0.04716929 0.09309945 +C 0.50714862 -0.63652665 -1.06318297 +O 0.76927014 -1.79955017 -1.11010475 +H 0.92349251 2.00385139 0.48465728 +H -0.03757815 1.76927183 -1.00057425 +H -0.81269569 1.60801916 0.59873287 +H 0.30458460 -0.00231902 -1.94965553 +8 +Properties=species:S:1:pos:R:3 A=36.49282 B=4.31175 C=4.04493 mu=1.7341 alpha=28.53 epsHOMO=-0.2537 epsLUMO=-0.0341 epsgap=0.2196 =303.8129 zpve=0.060508 U0=-228.992613 U=-228.987769 H=-228.986825 G=-229.019918 Cv=14.78 pbc="F F F" +O 0.19375856 1.37170995 0.31398297 +C 0.04992637 0.01405481 -0.04526239 +C -1.40888025 -0.39635680 -0.20601574 +O -1.77729462 -1.37233860 -0.80361689 +H -0.01723186 1.91269132 -0.45337758 +H 0.60440478 -0.26519766 -0.95205725 +H 0.46740406 -0.57521679 0.78176270 +H -2.11835055 0.30075962 0.29870515 +14 +Properties=species:S:1:pos:R:3 A=23.44662 B=3.60588 C=3.38683 mu=0 alpha=45.71 epsHOMO=-0.317 epsLUMO=0.0937 epsgap=0.4107 =426.2996 zpve=0.131708 U0=-158.340943 U=-158.33517 H=-158.334226 G=-158.36894 Cv=19.668 pbc="F F F" +C -0.03007624 1.55804912 0.02980774 +C 0.00707277 0.02834877 -0.00712529 +C 0.71320792 -0.52989340 -1.24765581 +C 0.75036895 -2.05959366 -1.28458957 +H 0.98195330 1.97845113 0.02800797 +H -0.55582433 1.96212343 -0.84270157 +H -0.54083762 1.92692755 0.92493697 +H 0.50928672 -0.34909049 0.89361319 +H -1.01733481 -0.36542299 0.03207393 +H 0.21098948 -0.15245770 -2.14839302 +H 1.73761331 -0.13611625 -1.28685672 +H 1.27616854 -2.46366410 -0.41210980 +H -0.26165699 -2.48000447 -1.28273552 +H 1.26108491 -2.42846444 -2.17974803 +12 +Properties=species:S:1:pos:R:3 A=26.59789 B=3.79186 C=3.53779 mu=1.3402 alpha=38.61 epsHOMO=-0.2619 epsLUMO=0.081 epsgap=0.3429 =382.8628 zpve=0.108241 U0=-194.261089 U=-194.255495 H=-194.254551 G=-194.28893 Cv=18.431 pbc="F F F" +C -0.00379012 1.52196790 0.01027996 +C -0.03589372 -0.00778254 0.00225671 +C -1.45219016 -0.56653711 0.01284386 +O -1.36799785 -1.98394604 0.00453606 +H 1.02477576 1.89411231 0.00239793 +H -0.51286674 1.93764614 -0.86653888 +H -0.49584080 1.92801344 0.90121721 +H 0.48140784 -0.39530552 -0.88316064 +H 0.49828589 -0.40486256 0.87330348 +H -1.98734220 -0.20399494 0.90666062 +H -2.00431485 -0.19459473 -0.86666460 +H -2.26171819 -2.33824298 0.01034748 +12 +Properties=species:S:1:pos:R:3 A=28.29567 B=4.14901 C=3.88349 mu=1.0363 alpha=39.34 epsHOMO=-0.2503 epsLUMO=0.0925 epsgap=0.3428 =368.9331 zpve=0.107895 U0=-194.254127 U=-194.248585 H=-194.247641 G=-194.281899 Cv=17.888 pbc="F F F" +C -0.00519551 1.50868224 0.03308760 +C 0.01316580 -0.01037819 0.01988643 +O 0.69758944 -0.46344140 1.16868979 +C 0.76688491 -1.86508183 1.24602669 +H 1.01445476 1.90423799 0.02996018 +H -0.52990866 1.89184059 -0.84726911 +H -0.51263765 1.87805843 0.92875424 +H -1.01599507 -0.40998729 0.00714282 +H 0.51093143 -0.38369435 -0.89219395 +H -0.23415841 -2.32451489 1.28977780 +H 1.30129276 -2.29853663 0.38486095 +H 1.30990287 -2.11811998 2.16013206 +10 +Properties=species:S:1:pos:R:3 A=14.79671 B=5.6956 C=4.58846 mu=0.0075 alpha=31.42 epsHOMO=-0.2594 epsLUMO=0.0584 epsgap=0.3179 =297.8398 zpve=0.085172 U0=-230.183076 U=-230.177723 H=-230.176779 G=-230.211195 Cv=16.837 pbc="F F F" +O -0.01418735 1.42642242 -0.05423651 +C -0.00391839 0.00717714 0.03496062 +C -1.42317019 -0.55560600 -0.01256639 +O -2.11229413 -0.10563875 -1.17228313 +H -0.18987882 1.64154705 -0.97555148 +H 0.59659504 -0.43315430 -0.77409095 +H 0.47311116 -0.24903733 0.98747216 +H -1.39494859 -1.64975279 -0.06283188 +H -1.96497417 -0.27216915 0.90131972 +H -2.35925991 0.80944396 -1.00614597 +12 +Properties=species:S:1:pos:R:3 A=15.61472 B=6.31363 C=5.54514 mu=0.1136 alpha=41.96 epsHOMO=-0.2727 epsLUMO=0.1012 epsgap=0.3738 =298.6061 zpve=0.109284 U0=-157.116735 U=-157.11209 H=-157.111146 G=-157.143262 Cv=16.49 pbc="F F F" +C -0.03602245 1.52092949 0.01569161 +C 0.01938487 0.01004403 0.04814953 +C 1.30891671 -0.71251995 -0.24920416 +C 0.75347423 -0.70267714 1.15564676 +H 0.90105691 1.95389291 0.38283338 +H -0.19640365 1.89437369 -1.00208569 +H -0.84685273 1.90588930 0.64451322 +H -0.88416809 -0.48001889 -0.30566335 +H 1.26900901 -1.63903068 -0.81150371 +H 2.19010738 -0.11131209 -0.44927513 +H 1.26248862 -0.09487455 1.89690028 +H 0.33540836 -1.62248918 1.54980695 +10 +Properties=species:S:1:pos:R:3 A=18.21931 B=6.63877 C=5.92459 mu=1.812 alpha=35.01 epsHOMO=-0.2633 epsLUMO=0.1052 epsgap=0.3685 =267.2979 zpve=0.085275 U0=-193.039603 U=-193.035186 H=-193.034242 G=-193.065979 Cv=14.764 pbc="F F F" +C -0.01646343 1.51830705 0.00771445 +C -0.02743227 0.01657694 -0.10889741 +C 0.77296553 -0.70131886 -1.10863115 +O 1.17212293 -0.66702969 0.26278829 +H 0.91865980 1.92914217 -0.38285880 +H -0.85158014 1.95456506 -0.55109460 +H -0.11487702 1.82596470 1.05397777 +H -0.93582598 -0.47350600 0.24682793 +H 0.44443922 -1.67201495 -1.47810622 +H 1.40538284 -0.13600339 -1.79271491 +11 +Properties=species:S:1:pos:R:3 A=16.58914 B=7.18798 C=6.11415 mu=1.1353 alpha=39.02 epsHOMO=-0.2304 epsLUMO=0.0968 epsgap=0.3271 =270.5508 zpve=0.097671 U0=-173.147782 U=-173.143343 H=-173.142399 G=-173.174073 Cv=15.298 pbc="F F F" +C -0.05275541 1.47419574 0.00999108 +N 0.01940516 0.02189947 0.06334866 +C 1.32511048 -0.56446850 -0.21420725 +C 0.78051759 -0.54057993 1.17242760 +H 0.86784202 1.97176076 0.36297285 +H -0.23845155 1.79095005 -1.02142866 +H -0.88683448 1.81938959 0.62950398 +H 1.31992909 -1.48186782 -0.79602038 +H 2.15202820 0.11020204 -0.43285248 +H 1.24563570 0.14996098 1.87499245 +H 0.37013358 -1.44020447 1.62233365 +10 +Properties=species:S:1:pos:R:3 A=16.79477 B=6.71015 C=5.86781 mu=1.3894 alpha=34.64 epsHOMO=-0.239 epsLUMO=0.0775 epsgap=0.3166 =263.966 zpve=0.085106 U0=-193.034988 U=-193.030356 H=-193.029411 G=-193.061689 Cv=15.679 pbc="F F F" +O 0.21577583 1.35386859 -0.10695107 +C 0.01628099 -0.02832718 -0.02915694 +C -0.39081465 -0.71497009 1.24315669 +C -1.35118138 -0.64280380 0.06273589 +H -0.43642338 1.79062849 0.45006761 +H 0.74981167 -0.52404050 -0.65624767 +H 0.05959375 -1.66840483 1.49729237 +H -0.61369353 -0.08848006 2.10170640 +H -2.19821932 0.03058430 0.15411451 +H -1.56395912 -1.54640426 -0.49826515 +12 +Properties=species:S:1:pos:R:3 A=10.66107 B=10.66107 C=6.30452 mu=0 alpha=41.83 epsHOMO=-0.2982 epsLUMO=0.0956 epsgap=0.3938 =268.4432 zpve=0.110511 U0=-157.115484 U=-157.111322 H=-157.110378 G=-157.141657 Cv=14.696 pbc="F F F" +C -0.02542957 1.54032578 -0.04215944 +C 1.52564399 1.50419989 0.04121276 +C 1.42146727 0.06146790 0.60844885 +C -0.02638833 -0.01070956 0.04935088 +H -0.46591372 1.99639894 0.84962894 +H -0.47900239 2.00028207 -0.92365389 +H 1.98248278 1.51375334 -0.95303183 +H 2.02191365 2.25986579 0.65522129 +H 2.14291679 -0.67956358 0.25531480 +H 1.43105853 0.05751479 1.70261879 +H -0.79053440 -0.48530296 0.66996573 +H -0.05233245 -0.47238446 -0.94236394 +10 +Properties=species:S:1:pos:R:3 A=12.06545 B=11.77731 C=6.71997 mu=1.7978 alpha=34.56 epsHOMO=-0.2424 epsLUMO=0.0859 epsgap=0.3283 =236.9759 zpve=0.086675 U0=-193.034094 U=-193.029968 H=-193.029024 G=-193.060777 Cv=12.915 pbc="F F F" +C -0.03489789 1.55259455 -0.08507691 +C 1.49349183 1.45459700 0.10114677 +O 1.42725884 0.02348990 0.27254886 +C -0.00634758 0.02236494 0.10944630 +H -0.56579210 2.11301721 0.68591527 +H -0.36628352 1.89393380 -1.06692327 +H 2.10031724 1.73525720 -0.76898349 +H 1.90023090 1.95506611 0.98896748 +H -0.51987849 -0.35595179 1.00235948 +H -0.31970062 -0.57567421 -0.75559275 +12 +Properties=species:S:1:pos:R:3 A=8.63483 B=4.11977 C=2.88825 mu=0.6875 alpha=45.37 epsHOMO=-0.2392 epsLUMO=0.0192 epsgap=0.2584 =452.5112 zpve=0.100501 U0=-248.375248 U=-248.368823 H=-248.367879 G=-248.405354 Cv=21.616 pbc="F F F" +C -0.10255370 1.49907127 -0.00133642 +C -0.00519774 -0.00343114 -0.02723470 +C -0.00688536 -0.76890740 1.26434744 +N 0.08186799 -0.69202791 -1.10087306 +O 0.07439067 0.13215394 -2.24195258 +H 0.78342093 1.94690862 -0.46354050 +H -0.96150430 1.83614082 -0.59021965 +H -0.19854173 1.87462989 1.01931607 +H -0.92620012 -0.57297946 1.82982479 +H 0.07256154 -1.84064782 1.07516863 +H 0.82937178 -0.45553340 1.90133089 +H 0.13975924 -0.51254299 -2.95389260 +10 +Properties=species:S:1:pos:R:3 A=9.17136 B=9.04195 C=4.5531 mu=1.8689 alpha=43.14 epsHOMO=-0.2029 epsLUMO=0.0499 epsgap=0.2528 =303.9808 zpve=0.082433 U0=-210.101789 U=-210.097816 H=-210.096872 G=-210.12818 Cv=14.821 pbc="F F F" +N -0.00829694 1.35362838 0.00995971 +C 1.28033254 1.82457421 -0.00022459 +C 2.12216639 0.73698898 -0.01445600 +C 1.30849904 -0.43109580 -0.01284154 +C -0.00342782 -0.01836884 0.00235736 +H -0.83243234 1.92772668 0.02122995 +H 1.48471820 2.88312630 0.00354313 +H 3.20066918 0.77343077 -0.02488416 +H 1.64810599 -1.45539683 -0.02180394 +H -0.92551647 -0.57697054 0.00839402 +9 +Properties=species:S:1:pos:R:3 A=9.77329 B=9.41192 C=4.7946 mu=3.6193 alpha=39.13 epsHOMO=-0.2253 epsLUMO=0.0332 epsgap=0.2585 =283.6817 zpve=0.071145 U0=-226.160842 U=-226.157088 H=-226.156144 G=-226.187104 Cv=13.371 pbc="F F F" +N -0.00996090 1.35636172 0.01000855 +C 1.29535422 1.79575578 -0.00047017 +C 2.05550519 0.65637438 -0.01422927 +N 1.25385745 -0.46275132 -0.01260894 +C 0.02301170 -0.00706382 0.00200146 +H -0.83195718 1.93618436 0.02132575 +H 1.54553961 2.84344998 0.00289054 +H 3.13177434 0.57569766 -0.02524155 +H -0.87667864 -0.60414531 0.00750794 +9 +Properties=species:S:1:pos:R:3 A=9.50228 B=9.29497 C=4.69874 mu=0.5571 alpha=39.2 epsHOMO=-0.2246 epsLUMO=0.0199 epsgap=0.2445 =289.005 zpve=0.069883 U0=-229.969129 U=-229.965414 H=-229.96447 G=-229.995393 Cv=13.358 pbc="F F F" +O -0.03255819 1.35065130 0.00967376 +C 1.25319237 1.79167710 -0.00030351 +C 2.11664681 0.74375623 -0.01441494 +C 1.30397796 -0.43852387 -0.01283316 +C 0.01629568 -0.00777185 0.00191294 +H 1.37951089 2.86161135 0.00427433 +H 3.19376406 0.79865501 -0.02458604 +H 1.63858893 -1.46383271 -0.02156949 +H -0.93736295 -0.50899925 0.00843891 +8 +Properties=species:S:1:pos:R:3 A=10.10926 B=9.69372 C=4.94857 mu=1.5081 alpha=35.17 epsHOMO=-0.2509 epsLUMO=0.001 epsgap=0.2519 =269.2444 zpve=0.058593 U0=-246.02915 U=-246.025614 H=-246.024669 G=-246.055309 Cv=12.04 pbc="F F F" +O -0.03808298 1.35643965 0.00975193 +C 1.26496982 1.76855319 -0.00061744 +C 2.04955750 0.66630033 -0.01406047 +N 1.24227075 -0.46732066 -0.01237541 +C 0.04019820 0.00561577 0.00183569 +H 1.43513907 2.83095265 0.00340823 +H 3.12532898 0.59783015 -0.02480757 +H -0.89387707 -0.53342154 0.00796935 +17 +Properties=species:S:1:pos:R:3 A=4.4178 B=4.41753 C=4.41717 mu=0.0003 alpha=56.01 epsHOMO=-0.3145 epsLUMO=0.0737 epsgap=0.3882 =486.2719 zpve=0.158836 U0=-197.632222 U=-197.625241 H=-197.624297 G=-197.661411 Cv=26.084 pbc="F F F" +C -0.01859029 1.53486266 0.01039904 +C 0.00210320 -0.00413672 0.00196980 +C 0.74643954 -0.51390760 1.24887638 +C -1.44190166 -0.53673615 0.01311457 +C 0.72234971 -0.50049606 -1.26445632 +H 0.99776928 1.94420529 0.00435474 +H -0.54181883 1.92841415 -0.86819911 +H -0.52758402 1.91888376 0.90148530 +H 0.25549576 -0.17602728 2.16833067 +H 0.77815389 -1.60892372 1.27088904 +H 1.77964786 -0.14975834 1.26944035 +H -1.99871895 -0.18888794 -0.86408066 +H -1.45956909 -1.63227235 0.00649916 +H -1.98088827 -0.19979639 0.90561580 +H 1.75482473 -0.13554018 -1.30118083 +H 0.75396989 -1.59524036 -1.29822280 +H 0.21358221 -0.15343900 -2.17067181 +15 +Properties=species:S:1:pos:R:3 A=4.69474 B=4.66938 C=4.47909 mu=1.384 alpha=49.04 epsHOMO=-0.2601 epsLUMO=0.0664 epsgap=0.3265 =449.0573 zpve=0.134977 U0=-233.560626 U=-233.553779 H=-233.552834 G=-233.589759 Cv=25.128 pbc="F F F" +C -0.00855999 1.54270147 0.00152717 +C 0.00506780 0.00702635 0.01856160 +C 0.76137731 -0.51839196 1.24766443 +C -1.42012774 -0.54933183 -0.02116008 +O 0.62590477 -0.48363745 -1.17657057 +H 1.01361406 1.94020776 0.00281128 +H -0.51459669 1.90702466 -0.89705781 +H -0.52214815 1.94882514 0.87918344 +H 0.28130613 -0.20165548 2.17943598 +H 0.79965506 -1.61131746 1.23022549 +H 1.79096916 -0.14072935 1.26083003 +H -1.93854829 -0.19910724 -0.91828281 +H -1.39937632 -1.64259062 -0.04563833 +H -1.98850725 -0.23059656 0.85726520 +H 1.53111188 -0.15488046 -1.19210222 +9 +Properties=species:S:1:pos:R:3 A=10.21876 B=4.04324 C=2.94978 mu=2.8579 alpha=42.02 epsHOMO=-0.2654 epsLUMO=-0.0575 epsgap=0.2079 =416.7799 zpve=0.065175 U0=-229.927277 U=-229.921622 H=-229.920677 G=-229.955843 Cv=18.723 pbc="F F F" +C -0.00693851 1.49559567 -0.01063358 +C -0.02986170 -0.01594623 0.06248673 +O -0.08815239 -0.63215062 1.10334812 +C 0.02336981 -0.70256747 -1.22062379 +C 0.06738132 -1.26058341 -2.28623129 +H 0.90429806 1.83281887 -0.51655384 +H -0.85338524 1.85556926 -0.60552819 +H -0.05237764 1.91099807 0.99695949 +H 0.10466868 -1.77036047 -3.21832617 +8 +Properties=species:S:1:pos:R:3 A=10.16063 B=4.15847 C=3.0056 mu=3.3351 alpha=37.08 epsHOMO=-0.3007 epsLUMO=-0.0889 epsgap=0.2118 =397.7757 zpve=0.05451 U0=-246.027383 U=-246.022024 H=-246.02108 G=-246.055769 Cv=16.963 pbc="F F F" +C -0.01171097 1.49973776 -0.01213268 +C -0.02919740 -0.00338745 0.07151218 +O -0.09164028 -0.64592927 1.08732241 +C 0.03831104 -0.69690258 -1.23748557 +N 0.09136286 -1.22982650 -2.26228068 +H 0.90093132 1.83370670 -0.51814928 +H -0.85663933 1.84864400 -0.61618135 +H -0.06416540 1.92131542 0.99203818 +8 +Properties=species:S:1:pos:R:3 A=10.68423 B=4.3198 C=3.07993 mu=5.1815 alpha=38.31 epsHOMO=-0.2739 epsLUMO=-0.0438 epsgap=0.2301 =384.5574 zpve=0.056619 U0=-242.19573 U=-242.190591 H=-242.189646 G=-242.223513 Cv=17.465 pbc="F F F" +N -0.05232108 1.34991769 0.15535538 +C 0.08549378 -0.01476951 0.02668890 +N 1.14555215 -0.71993906 -0.03966037 +C -1.19426556 -0.71152088 0.01802151 +N -2.22747610 -1.22790543 0.00132148 +H 0.75474469 1.91998737 -0.04411334 +H -0.94458527 1.76600473 -0.05932293 +H 1.98312429 -0.13415500 -0.02878551 +9 +Properties=species:S:1:pos:R:3 A=9.08854 B=4.42607 C=3.03169 mu=0.9461 alpha=36.51 epsHOMO=-0.2538 epsLUMO=-0.0964 epsgap=0.1574 =399.222 zpve=0.064992 U0=-267.10335 U=-267.097658 H=-267.096714 G=-267.132534 Cv=17.806 pbc="F F F" +C -0.43126066 1.30586664 -0.12758585 +C 0.25285715 -0.01026988 0.13138867 +O 0.69872099 -0.36890333 1.19604690 +C 0.38978943 -0.96773680 -1.06226208 +O -0.01611268 -0.71564293 -2.16583718 +H 0.10006565 1.85324490 -0.91332597 +H -1.44270433 1.13069361 -0.50923371 +H -0.46757554 1.89548158 0.78836479 +H 0.90329886 -1.91558845 -0.79531972 +9 +Properties=species:S:1:pos:R:3 A=10.08927 B=4.54115 C=3.13487 mu=2.7707 alpha=38.09 epsHOMO=-0.2561 epsLUMO=-0.064 epsgap=0.192 =384.4827 zpve=0.067668 U0=-263.278851 U=-263.273589 H=-263.272645 G=-263.306835 Cv=17.972 pbc="F F F" +N -0.16032929 1.08528962 -0.45398652 +C 0.18649127 -0.08762327 0.14758021 +N 1.28979627 -0.46427423 0.67927030 +C -0.94204384 -1.08440264 0.20423621 +O -2.01802205 -0.89007687 -0.30583149 +H 0.54574437 1.73837930 -0.74689246 +H -1.04684920 1.09570857 -0.93607796 +H 2.01738195 0.24991828 0.59881811 +H -0.67740148 -2.01003995 0.74746441 +13 +Properties=species:S:1:pos:R:3 A=7.92874 B=3.8272 C=2.82581 mu=0.6578 alpha=51.2 epsHOMO=-0.2589 epsLUMO=0.0571 epsgap=0.316 =481.9854 zpve=0.112471 U0=-195.186772 U=-195.180446 H=-195.179502 G=-195.215658 Cv=22.569 pbc="F F F" +C -0.01763434 1.54859468 -0.00253584 +C -0.01719180 0.00735789 0.03269604 +C 0.75818463 -0.52820155 1.25278862 +C -1.38213303 -0.51768438 0.00775516 +C -2.50796392 -0.94005629 0.00478552 +H 1.00944396 1.92639613 -0.02632830 +H -0.54514614 1.92217052 -0.88393459 +H -0.51243000 1.95339892 0.88560642 +H 0.49366179 -0.34904155 -0.87265890 +H 0.28968458 -0.19345372 2.18334679 +H 0.77833392 -1.62102506 1.25783727 +H 1.78952492 -0.16181727 1.23574954 +H -3.49998244 -1.31810165 -0.00723572 +12 +Properties=species:S:1:pos:R:3 A=7.90009 B=3.95466 C=2.88643 mu=3.9512 alpha=46.23 epsHOMO=-0.318 epsLUMO=0.0365 epsgap=0.3545 =460.694 zpve=0.102281 U0=-211.295796 U=-211.289821 H=-211.288877 G=-211.324525 Cv=20.467 pbc="F F F" +C -0.00242350 1.55035837 0.01056187 +C -0.01856600 0.01004352 -0.02261770 +C -1.45045318 -0.55766178 0.01293347 +C 0.70125749 -0.48583168 -1.20172764 +N 1.26190946 -0.87126766 -2.13619740 +H 1.01959496 1.93673215 0.00349668 +H -0.52972844 1.96141639 -0.85498386 +H -0.50134251 1.90346839 0.91755862 +H 0.52481877 -0.36222456 0.85525462 +H -2.02427903 -0.21428716 -0.85251869 +H -1.44438296 -1.65026927 0.00754107 +H -1.95805494 -0.21725882 0.91996760 +11 +Properties=species:S:1:pos:R:3 A=8.30095 B=3.97615 C=2.93764 mu=2.7429 alpha=42.87 epsHOMO=-0.2704 epsLUMO=0.0278 epsgap=0.2983 =440.0738 zpve=0.091554 U0=-227.338075 U=-227.332253 H=-227.331309 G=-227.366638 Cv=19.946 pbc="F F F" +C -0.01064295 1.54128691 0.00722087 +C -0.00203811 0.00756015 0.03863463 +N 0.76268677 -0.47101822 1.19250856 +C -1.38541954 -0.52099256 -0.00194097 +N -2.45680847 -0.95636072 0.00694969 +H 1.02043523 1.90106589 0.00392365 +H -0.52873161 1.91193452 -0.88031480 +H -0.51849536 1.94150431 0.89013197 +H 0.50418828 -0.35805500 -0.86276072 +H 0.30070681 -0.18364934 2.05155305 +H 0.78148992 -1.48670299 1.20428183 +11 +Properties=species:S:1:pos:R:3 A=8.55919 B=3.89952 C=2.91869 mu=1.3582 alpha=44.03 epsHOMO=-0.2665 epsLUMO=0.0336 epsgap=0.3001 =444.6452 zpve=0.088908 U0=-231.108368 U=-231.102292 H=-231.101348 G=-231.137061 Cv=21.306 pbc="F F F" +C -0.00754278 1.55566144 0.08650633 +C 0.01207541 0.02096553 0.04935916 +O -1.29150251 -0.52785128 0.22126386 +C 0.65093362 -0.47718651 -1.17430507 +C 1.13902673 -0.86577343 -2.20205518 +H 1.00824243 1.95969458 0.04929733 +H -0.56272245 1.95192010 -0.76978085 +H -0.49328161 1.88929438 1.00704123 +H 0.57811967 -0.34464907 0.91458864 +H -1.78516532 -0.35903262 -0.58909400 +H 1.58078877 -1.22365060 -3.09919447 +10 +Properties=species:S:1:pos:R:3 A=8.55908 B=4.01671 C=2.97882 mu=3.269 alpha=39.28 epsHOMO=-0.3051 epsLUMO=0.0115 epsgap=0.3166 =424.3395 zpve=0.078602 U0=-247.214861 U=-247.209162 H=-247.208218 G=-247.243338 Cv=19.252 pbc="F F F" +C -0.00992462 1.54951908 0.00732200 +C 0.00740485 0.01722020 0.05031270 +O 0.72085722 -0.49630479 1.15864583 +C -1.36995095 -0.52355929 0.00894432 +N -2.45081572 -0.93233138 0.00716912 +H 1.01892314 1.91630447 0.02724149 +H -0.50261490 1.90969362 -0.89997951 +H -0.54800426 1.95377611 0.87053664 +H 0.53602846 -0.36494195 -0.82970945 +H 0.27702643 -0.20644534 1.96421773 +13 +Properties=species:S:1:pos:R:3 A=7.66289 B=3.70925 C=2.79937 mu=2.6921 alpha=46.58 epsHOMO=-0.2469 epsLUMO=-0.0188 epsgap=0.2281 =482.0475 zpve=0.112328 U0=-232.364952 U=-232.358577 H=-232.357633 G=-232.394589 Cv=21.434 pbc="F F F" +C -0.02629647 1.53877116 -0.00783747 +C 0.01468904 0.00095310 0.00166037 +C 0.74737862 -0.53388859 1.24420471 +C -1.40211264 -0.53859257 -0.01557820 +O -1.87620455 -1.23582351 -0.87399559 +H 0.98823696 1.94625080 0.03705522 +H -0.50725090 1.92153422 -0.91285565 +H -0.57756514 1.92360883 0.85796386 +H 0.50584680 -0.36421091 -0.90619124 +H 0.22958380 -0.23909403 2.16431052 +H 0.81692736 -1.62559499 1.22973438 +H 1.76267153 -0.12846566 1.29050755 +H -2.00861510 -0.22792742 0.87121666 +11 +Properties=species:S:1:pos:R:3 A=8.31096 B=4.07963 C=2.92918 mu=2.8354 alpha=39.16 epsHOMO=-0.255 epsLUMO=-0.0279 epsgap=0.2271 =432.1489 zpve=0.088443 U0=-268.287661 U=-268.281505 H=-268.280561 G=-268.316982 Cv=20.344 pbc="F F F" +C -0.05483118 1.46032843 -0.17068647 +C 0.07105714 -0.03524485 0.11225841 +O 0.58204486 -0.33316656 1.40176256 +C -1.27639279 -0.74383027 0.03051185 +O -2.11855775 -0.49643175 -0.79163412 +H 0.93158072 1.93091398 -0.23353204 +H -0.57713995 1.61290939 -1.11835562 +H -0.62444315 1.94776119 0.62573670 +H 0.69687521 -0.50071620 -0.67159471 +H 1.45603316 0.06066659 1.47858584 +H -1.40723217 -1.53388627 0.80211181 +12 +Properties=species:S:1:pos:R:3 A=8.9331 B=4.19405 C=2.96046 mu=3.7163 alpha=44.42 epsHOMO=-0.2424 epsLUMO=0.0327 epsgap=0.2751 =441.85 zpve=0.10227 U0=-248.430371 U=-248.424309 H=-248.423365 G=-248.459383 Cv=19.918 pbc="F F F" +C -0.09776499 1.44917268 0.04561984 +N 0.01043053 0.00373818 -0.00070600 +C 0.05323028 -0.71432112 1.25264891 +C 0.06728716 -0.64067225 -1.20060778 +O 0.03636432 -0.11006515 -2.29109228 +H 0.75650660 1.88747109 0.57647421 +H -0.11648577 1.81632103 -0.98049172 +H -1.01641106 1.75521548 0.56151415 +H -0.85453556 -0.53657675 1.84390168 +H 0.13297722 -1.78696336 1.05851351 +H 0.91637348 -0.40737846 1.85761345 +H 0.14762240 -1.73801339 -1.06805139 +11 +Properties=species:S:1:pos:R:3 A=10.13982 B=3.81346 C=2.86965 mu=2.9514 alpha=39.33 epsHOMO=-0.2699 epsLUMO=-0.0262 epsgap=0.2437 =440.1727 zpve=0.088924 U0=-268.301176 U=-268.295084 H=-268.29414 G=-268.331307 Cv=19.824 pbc="F F F" +C -0.01708808 1.44281136 0.03225501 +C -0.05544542 -0.06560572 -0.02375999 +O -0.17379913 -0.76196233 0.96223129 +C 0.06068107 -0.73615179 -1.38825252 +O 0.00877771 -2.12574390 -1.27749486 +H 0.92062950 1.81463913 -0.39522215 +H -0.83050523 1.86542281 -0.56780350 +H -0.10911975 1.78049045 1.06493675 +H -0.75015067 -0.35235060 -2.03056074 +H 1.00312898 -0.40389029 -1.85592942 +H -0.09063255 -2.29450960 -0.32608019 +13 +Properties=species:S:1:pos:R:3 A=9.55216 B=3.57844 C=2.7341 mu=2.6168 alpha=46.19 epsHOMO=-0.2423 epsLUMO=-0.0072 epsgap=0.2351 =489.8518 zpve=0.112006 U0=-232.377706 U=-232.371073 H=-232.370129 G=-232.408256 Cv=21.716 pbc="F F F" +C -0.04384102 1.54099793 -0.03913814 +C 0.02765132 0.01885817 0.04778773 +C 0.76814644 -0.48842218 1.28000847 +C 0.87850208 -1.99746312 1.42393323 +O 1.24179142 0.26651340 2.09788702 +H 0.95796454 1.97690198 -0.06816012 +H -0.58447717 1.85356031 -0.93690369 +H -0.55173626 1.95737759 0.83440529 +H -0.97692824 -0.42709877 0.05353178 +H 0.51853486 -0.40806507 -0.83809409 +H 1.39924980 -2.42678188 0.56053177 +H 1.42001187 -2.24449367 2.33776426 +H -0.11750602 -2.45360651 1.45141965 +12 +Properties=species:S:1:pos:R:3 A=9.78802 B=3.78441 C=2.84416 mu=3.499 alpha=42.54 epsHOMO=-0.2438 epsLUMO=0.0355 epsgap=0.2793 =457.447 zpve=0.101847 U0=-248.448467 U=-248.441988 H=-248.441044 G=-248.478935 Cv=21.374 pbc="F F F" +C -0.00220144 1.53344329 -0.05960369 +C -0.03235837 0.01206167 0.06840265 +C 0.69666086 -0.48196462 1.31828322 +N 0.98104007 -1.82034162 1.31984698 +O 1.00392124 0.24606232 2.24136749 +H 1.02111190 1.89525169 -0.19182672 +H -0.59707204 1.86206427 -0.91645604 +H -0.39728839 1.99920712 0.84545201 +H -1.06936083 -0.34552935 0.13040806 +H 0.39947165 -0.46906818 -0.81777020 +H 0.63281951 -2.43917647 0.60874785 +H 1.35708014 -2.22217793 2.16303522 +12 +Properties=species:S:1:pos:R:3 A=10.01185 B=3.84195 C=2.87635 mu=3.5402 alpha=43.61 epsHOMO=-0.2418 epsLUMO=0.0387 epsgap=0.2805 =458.9803 zpve=0.101735 U0=-248.443503 U=-248.436899 H=-248.435955 G=-248.474272 Cv=20.967 pbc="F F F" +C 0.00619941 1.45933202 -0.03893859 +N -0.06411616 0.01422963 -0.12046901 +C -1.20595394 -0.68196796 0.16117120 +C -1.08982704 -2.19284899 0.02095775 +O -2.24482911 -0.14443077 0.49994418 +H 0.75053989 1.78372520 0.69715573 +H 0.25692001 1.90395263 -1.00876215 +H -0.97856026 1.81121438 0.27082194 +H 0.75820982 -0.49543660 -0.39464024 +H -0.09909703 -2.53543104 -0.28970003 +H -1.34097671 -2.65395851 0.97972885 +H -1.82903100 -2.53483935 -0.70813076 +11 +Properties=species:S:1:pos:R:3 A=10.44045 B=4.04692 C=2.98547 mu=3.5648 alpha=39.51 epsHOMO=-0.2436 epsLUMO=0.0599 epsgap=0.3034 =428.404 zpve=0.091713 U0=-264.504487 U=-264.498452 H=-264.497508 G=-264.533633 Cv=20.274 pbc="F F F" +C 0.00922630 1.45021814 -0.03194543 +N -0.01429488 -0.00054646 -0.01782667 +C -1.21576579 -0.67252403 0.04421896 +N -1.09733352 -2.04644898 -0.15997741 +O -2.28599299 -0.12893711 0.24196027 +H 0.89659038 1.81885022 0.49120949 +H 0.00233950 1.86388504 -1.04914155 +H -0.88562684 1.79943346 0.48353298 +H 0.75257305 -0.47506631 -0.46719265 +H -0.24882333 -2.48772194 0.16375654 +H -1.93419610 -2.53898393 0.11482880 +12 +Properties=species:S:1:pos:R:3 A=9.69683 B=4.1533 C=3.01703 mu=1.1876 alpha=43.57 epsHOMO=-0.2595 epsLUMO=0.0352 epsgap=0.2948 =443.1687 zpve=0.102062 U0=-248.416462 U=-248.410358 H=-248.409414 G=-248.445651 Cv=20.256 pbc="F F F" +C -0.09160695 1.37540046 -0.00729426 +O -0.06964534 -0.04831581 -0.11148812 +C 0.68114625 -0.56142673 -1.10732458 +C 0.60405298 -2.06701550 -1.08766892 +N 1.32645533 0.19266343 -1.89967731 +H 0.91463916 1.76843655 0.16257460 +H -0.48562826 1.82624615 -0.92235216 +H -0.73971430 1.60007423 0.84110605 +H -0.43430065 -2.39242162 -1.20325205 +H 1.20627110 -2.50049977 -1.88745640 +H 0.95651337 -2.44976670 -0.12501838 +H 1.83504115 -0.36104361 -2.58486055 +11 +Properties=species:S:1:pos:R:3 A=10.20392 B=4.16834 C=3.07281 mu=1.7569 alpha=39.33 epsHOMO=-0.2685 epsLUMO=0.0174 epsgap=0.2859 =427.6606 zpve=0.089436 U0=-268.32127 U=-268.315051 H=-268.314106 G=-268.351214 Cv=19.501 pbc="F F F" +C 0.07295254 1.38840919 0.06442046 +O 0.21049114 -0.03740028 0.04612736 +C 0.50102805 -0.57224288 -1.15975346 +C 0.62218715 -2.07378323 -1.06030684 +O 0.63922154 0.08224418 -2.16157325 +H 1.00029720 1.87062570 -0.25532064 +H -0.73338957 1.70782089 -0.60080454 +H -0.15751280 1.65154060 1.09692954 +H -0.31330001 -2.50202851 -0.68941906 +H 0.85646588 -2.48430275 -2.04157352 +H 1.40651685 -2.34055496 -0.34634301 +10 +Properties=species:S:1:pos:R:3 A=10.68182 B=4.39532 C=3.17969 mu=2.329 alpha=35.5 epsHOMO=-0.2669 epsLUMO=0.0575 epsgap=0.3244 =398.5908 zpve=0.079271 U0=-284.385189 U=-284.379361 H=-284.378417 G=-284.414085 Cv=19.084 pbc="F F F" +C -0.02645771 1.38305753 0.02085660 +O 0.04139566 -0.04439503 -0.00277452 +C 0.66775338 -0.56001625 -1.09000344 +N 0.72605063 -1.92219983 -0.98822954 +O 1.12952381 0.09648143 -1.99322180 +H 0.97529779 1.82044307 0.02387306 +H -0.57085698 1.76214621 -0.84790425 +H -0.55410722 1.63835731 0.94043594 +H 0.12662696 -2.38401590 -0.32566929 +H 0.97230070 -2.41798421 -1.82732573 +10 +Properties=species:S:1:pos:R:3 A=10.20696 B=3.93135 C=2.9219 mu=4.5676 alpha=35.87 epsHOMO=-0.246 epsLUMO=0.0273 epsgap=0.2733 =418.5967 zpve=0.078222 U0=-284.360325 U=-284.354148 H=-284.353204 G=-284.390143 Cv=20.089 pbc="F F F" +N -0.08115607 1.31807026 0.01276742 +C 0.05442259 -0.04477733 0.08155388 +O 1.12163074 -0.59783950 0.20940553 +C -1.28687786 -0.79011642 0.06178435 +O -1.04605114 -2.13954195 -0.23957158 +H 0.76623366 1.85991128 -0.04483425 +H -0.93021346 1.74567447 -0.31565615 +H -1.74559696 -0.65521334 1.05526700 +H -1.96026061 -0.31149222 -0.67026256 +H -1.85637296 -2.63017646 -0.07625478 +10 +Properties=species:S:1:pos:R:3 A=10.14389 B=4.0714 C=3.02223 mu=5.3004 alpha=35.19 epsHOMO=-0.2527 epsLUMO=0.0208 epsgap=0.2735 =408.0279 zpve=0.080317 U0=-284.372483 U=-284.367172 H=-284.366228 G=-284.40095 Cv=17.931 pbc="F F F" +N 0.01838100 0.93057357 0.04943058 +H -0.70674506 0.56116798 -0.55550134 +H 0.68248307 0.18430002 0.21487099 +H 0.21928084 2.79858558 -0.32670585 +C -0.54586914 1.44688585 1.30274586 +C -0.80466975 2.96030569 1.21052835 +O -0.21468822 3.53648884 0.15531687 +O -1.45295676 3.56338618 2.02143528 +H -1.47662579 0.96512183 1.62072169 +H 0.17781209 1.30324286 2.11157176 +13 +Properties=species:S:1:pos:R:3 A=6.6508 B=4.19317 C=3.39441 mu=2.2854 alpha=42.01 epsHOMO=-0.2597 epsLUMO=0.0631 epsgap=0.3228 =438.3028 zpve=0.11345 U0=-269.479234 U=-269.472993 H=-269.472049 G=-269.508213 Cv=22.072 pbc="F F F" +C -0.02775167 1.53421433 0.00651151 +C 0.08343246 0.01218277 0.05258986 +O 0.95856392 -0.48200710 -0.96694113 +C 0.69767574 -0.49516451 1.35948812 +O 2.02247062 -0.02842530 1.52222186 +H 0.94333763 1.98841434 0.21841589 +H -0.37320516 1.87354041 -0.97716908 +H -0.74773817 1.89256394 0.74926853 +H -0.91671848 -0.43697036 -0.06040528 +H 0.76726710 -0.01412177 -1.78502043 +H 0.11650002 -0.13351914 2.21392431 +H 0.65814685 -1.59563445 1.36274474 +H 2.46378566 -0.22762476 0.68698431 +17 +Properties=species:S:1:pos:R:3 A=7.26511 B=3.32874 C=2.54491 mu=0.0618 alpha=56.26 epsHOMO=-0.3085 epsLUMO=0.085 epsgap=0.3934 =565.8412 zpve=0.159632 U0=-197.629387 U=-197.622325 H=-197.621381 G=-197.659365 Cv=25.169 pbc="F F F" +C 0.05879035 1.56174169 -0.01945240 +C -0.01544024 0.03182306 0.00308332 +C -1.44103237 -0.54862028 0.05028629 +C -1.40777007 -2.07231030 -0.13012010 +C -2.18400529 -0.17659759 1.34114303 +H 1.09435638 1.90233607 -0.11900072 +H -0.50689566 1.97217319 -0.86388098 +H -0.34407951 2.00628082 0.89579522 +H 0.48926758 -0.36011214 -0.88953902 +H 0.55254938 -0.35139446 0.86269887 +H -2.00031575 -0.12153682 -0.79559684 +H -0.85501131 -2.55065810 0.68775438 +H -2.41787513 -2.49543628 -0.13720127 +H -0.91928762 -2.35363802 -1.06914014 +H -3.19100197 -0.60699559 1.35137051 +H -1.65197294 -0.56010584 2.22063481 +H -2.28793759 0.90575132 1.46079572 +15 +Properties=species:S:1:pos:R:3 A=8.11598 B=3.43678 C=2.66869 mu=1.3894 alpha=49.45 epsHOMO=-0.2617 epsLUMO=0.0733 epsgap=0.335 =521.8605 zpve=0.136091 U0=-233.555951 U=-233.549143 H=-233.548199 G=-233.585602 Cv=23.99 pbc="F F F" +C -0.03841227 1.55621396 0.00935837 +C 0.01907135 0.02716079 -0.02074203 +C 0.73141506 -0.52709328 -1.25454422 +C 0.83975868 -2.05206973 -1.22872655 +O -0.01226470 -0.08514394 -2.38973758 +H 0.96845664 1.98863424 0.03526234 +H -0.54377006 1.93824134 -0.88074407 +H -0.57652955 1.91383386 0.89256698 +H 0.53166867 -0.34991486 0.87240999 +H -0.99727186 -0.38638654 -0.00185289 +H 1.74909346 -0.09943025 -1.28826184 +H 1.34143968 -2.42487137 -2.12957624 +H 1.41822012 -2.39229108 -0.36340871 +H -0.15616765 -2.50443859 -1.18308875 +H 0.43090825 -0.40901616 -3.17979642 +15 +Properties=species:S:1:pos:R:3 A=7.55335 B=3.78323 C=2.80566 mu=1.0758 alpha=49.8 epsHOMO=-0.2476 epsLUMO=0.086 epsgap=0.3336 =507.9614 zpve=0.135681 U0=-233.545899 U=-233.539034 H=-233.53809 G=-233.57582 Cv=23.573 pbc="F F F" +C -0.00857605 1.38097833 0.09454670 +O -0.02255106 -0.00739461 -0.13062576 +C -1.30243341 -0.61997805 -0.02088309 +C -1.18687286 -1.97885751 -0.70303918 +C -1.75587824 -0.74662760 1.43714508 +H 1.00321550 1.73258087 -0.12443496 +H -0.71511468 1.90838275 -0.56674280 +H -0.24909065 1.64967237 1.13384681 +H -2.03737978 -0.00432241 -0.56884198 +H -0.44792779 -2.59945605 -0.18596870 +H -2.14751041 -2.50225525 -0.69102581 +H -0.86524212 -1.85860679 -1.74077836 +H -2.73321482 -1.23674908 1.49205117 +H -1.03621350 -1.34483828 2.00544671 +H -1.84898410 0.22935483 1.92198087 +15 +Properties=species:S:1:pos:R:3 A=6.14183 B=5.17679 C=3.79297 mu=0.1068 alpha=52.92 epsHOMO=-0.2633 epsLUMO=0.0893 epsgap=0.3526 =439.1643 zpve=0.137025 U0=-196.409349 U=-196.403398 H=-196.402453 G=-196.437676 Cv=22.258 pbc="F F F" +C -0.03913204 1.50456305 0.04978913 +C 0.00985856 -0.01113880 0.01248619 +C -1.24167981 -0.66663044 -0.53989979 +C 1.33803387 -0.66895748 -0.27400430 +C 0.75126442 -0.72221586 1.11862571 +H 0.88633040 1.92490040 0.45579358 +H -0.18183878 1.92045743 -0.95489291 +H -0.86832076 1.85815718 0.67439648 +H -1.43570890 -0.34344387 -1.56976411 +H -1.15326757 -1.75757800 -0.54433832 +H -2.12221416 -0.40570820 0.05951361 +H 1.34398374 -1.58235208 -0.86005084 +H 2.20196897 -0.03329084 -0.43929326 +H 1.21949576 -0.12246018 1.89246580 +H 0.36153319 -1.67153717 1.47171932 +13 +Properties=species:S:1:pos:R:3 A=6.49534 B=5.52329 C=3.9108 mu=1.8235 alpha=45.7 epsHOMO=-0.2596 epsLUMO=0.091 epsgap=0.3505 =405.521 zpve=0.112851 U0=-232.335768 U=-232.329981 H=-232.329037 G=-232.364091 Cv=20.719 pbc="F F F" +C -0.03970330 1.50954998 -0.04112233 +C -0.03023556 -0.00335329 -0.06498361 +C -1.24613189 -0.68356648 0.52531190 +C 0.78937201 -0.71129193 -1.06027559 +O 1.22546798 -0.60059036 0.29712283 +H 0.88992772 1.90948478 -0.45296558 +H -0.87952723 1.90350108 -0.62376642 +H -0.14448576 1.87590604 0.98604429 +H -2.15218727 -0.41012616 -0.02629495 +H -1.13412584 -1.77005431 0.49747032 +H -1.38586631 -0.38055453 1.56882757 +H 0.50712690 -1.71386874 -1.38085018 +H 1.37088104 -0.14369322 -1.78640853 +13 +Properties=species:S:1:pos:R:3 A=6.57648 B=5.31603 C=3.98453 mu=1.3822 alpha=45.85 epsHOMO=-0.2494 epsLUMO=0.0776 epsgap=0.327 =401.4888 zpve=0.113237 U0=-232.33341 U=-232.327734 H=-232.32679 G=-232.36147 Cv=21.17 pbc="F F F" +C -0.03714052 1.53215920 0.01332310 +C 0.01344335 0.02117019 0.01922005 +O -1.17476104 -0.59735284 -0.40931260 +C 1.30744798 -0.69902106 -0.27389650 +C 0.70844749 -0.71373504 1.12226318 +H 0.89026861 1.96240279 0.40276135 +H -0.17846151 1.91561262 -1.00518522 +H -0.87011232 1.88955201 0.62730953 +H -1.28352265 -0.40225391 -1.34690641 +H 1.23973813 -1.61642115 -0.84783774 +H 2.20543993 -0.11523820 -0.44744474 +H 1.19539159 -0.13889834 1.90240284 +H 0.24735439 -1.63670241 1.45378480 +10 +Properties=species:S:1:pos:R:3 A=12.18399 B=5.1384 C=3.78868 mu=2.5732 alpha=40.19 epsHOMO=-0.263 epsLUMO=0.0277 epsgap=0.2907 =352.0378 zpve=0.080558 U0=-247.201165 U=-247.196699 H=-247.195755 G=-247.22841 Cv=15.51 pbc="F F F" +N -0.04445152 1.25623533 0.31681915 +C -0.03914559 0.04913710 -0.01670558 +C -1.08749619 -1.04164446 -0.11488033 +C 0.09869688 -1.90754844 -0.58225894 +O 0.99647508 -0.76306629 -0.44028010 +H 0.88935980 1.66481350 0.24916893 +H -1.54324114 -1.32235812 0.83572172 +H -1.86910036 -0.85713839 -0.85325910 +H 0.39739753 -2.72227350 0.08158721 +H 0.06945080 -2.25418345 -1.61796084 +11 +Properties=species:S:1:pos:R:3 A=10.79571 B=4.78732 C=3.54292 mu=2.7119 alpha=42.77 epsHOMO=-0.2415 epsLUMO=-0.0194 epsgap=0.2222 =379.6371 zpve=0.090544 U0=-231.15578 U=-231.150804 H=-231.149859 G=-231.184401 Cv=17.076 pbc="F F F" +O -0.00101746 0.01846628 -0.20114742 +C -0.01405811 1.19658059 0.00205306 +C -1.13542911 2.22979148 0.21957980 +C -0.03500884 3.29097637 0.53052223 +C 1.08469664 2.25947795 0.18994331 +H -1.71642814 2.41772662 -0.68901078 +H -1.83392757 1.98415059 1.02444244 +H -0.05534741 4.17585264 -0.10670963 +H -0.02541477 3.61399048 1.57278917 +H 1.81074389 2.03288534 0.97578973 +H 1.63600801 2.46255380 -0.73376244 +10 +Properties=species:S:1:pos:R:3 A=12.23436 B=4.97895 C=3.70561 mu=3.6671 alpha=39.73 epsHOMO=-0.25 epsLUMO=0.038 epsgap=0.288 =355.0934 zpve=0.080442 U0=-247.225618 U=-247.220897 H=-247.219953 G=-247.253218 Cv=16.1 pbc="F F F" +O 0.03184134 -0.03461682 0.00849836 +C -0.02440334 1.16440533 0.02160811 +C -1.14541322 2.23712809 0.03012901 +C 0.00928805 3.27945878 0.04557758 +N 0.93843838 2.14652109 0.03554396 +H -1.77030529 2.23779730 -0.86428437 +H -1.77632809 2.21765386 0.92007934 +H 0.07170564 3.91863516 -0.84072193 +H 0.06622603 3.89826625 0.94657952 +H 1.94616840 2.09535713 0.03855945 +9 +Properties=species:S:1:pos:R:3 A=12.44643 B=5.23328 C=3.86599 mu=3.9339 alpha=35.4 epsHOMO=-0.2788 epsLUMO=0.0089 epsgap=0.2878 =336.0792 zpve=0.068574 U0=-267.106213 U=-267.101929 H=-267.100985 G=-267.13332 Cv=14.483 pbc="F F F" +O 0.04424004 0.03933243 -0.33071104 +C -0.04854479 1.17416230 0.00410076 +C -1.14211656 2.23611850 0.15338361 +C 0.02332538 3.12357010 0.61681625 +O 0.95663808 2.01190122 0.42603746 +H -1.62573755 2.51482212 -0.78401102 +H -1.90009213 1.99553386 0.90028663 +H 0.28368077 3.96172751 -0.03229287 +H 0.00782250 3.43942655 1.66162725 +10 +Properties=species:S:1:pos:R:3 A=11.54185 B=4.90368 C=3.63309 mu=2.5257 alpha=39.34 epsHOMO=-0.2437 epsLUMO=-0.0258 epsgap=0.2179 =359.152 zpve=0.07965 U0=-247.190194 U=-247.185543 H=-247.184599 G=-247.217688 Cv=16.083 pbc="F F F" +O 0.00053891 0.00665475 -0.09743049 +C -0.01371990 1.19213881 0.03139936 +C -1.10668681 2.26612284 0.17247913 +N -0.03543445 3.25123475 0.48533693 +C 1.05328615 2.29521506 0.14383904 +H -1.65047970 2.42796175 -0.76886054 +H -1.83606786 2.11370530 0.97567410 +H -0.05434600 4.07193609 -0.10727051 +H 1.80754206 2.16277968 0.92736250 +H 1.56737937 2.47130277 -0.81152688 +9 +Properties=species:S:1:pos:R:3 A=12.18264 B=4.94228 C=3.68162 mu=0.8477 alpha=35.94 epsHOMO=-0.2647 epsLUMO=-0.0352 epsgap=0.2295 =344.5473 zpve=0.066989 U0=-267.068488 U=-267.063976 H=-267.063032 G=-267.095887 Cv=15.115 pbc="F F F" +O -0.00031692 0.00676321 -0.17139774 +C -0.01417098 1.18672865 -0.00980279 +C -1.08283120 2.27653381 0.15574094 +O -0.03856115 3.26460423 0.27513986 +C 1.02857270 2.30515693 0.12774311 +H -1.72923855 2.43647507 -0.71671274 +H -1.70219898 2.19346725 1.05800754 +H 1.67366781 2.23923293 1.01324179 +H 1.64705068 2.48224548 -0.76148355 +15 +Properties=species:S:1:pos:R:3 A=9.63416 B=4.10254 C=3.28665 mu=0.095 alpha=52.94 epsHOMO=-0.2896 epsLUMO=0.0927 epsgap=0.3823 =455.0215 zpve=0.138424 U0=-196.407957 U=-196.40245 H=-196.401505 G=-196.436159 Cv=20.299 pbc="F F F" +C -0.47005934 1.44206547 -0.06684548 +C 0.14287306 0.05485144 0.03747984 +C 1.37254693 -0.30295273 -0.84679168 +C 1.95947994 -1.09364561 0.35326039 +C 0.99887433 -0.30768787 1.28563099 +H 0.29210839 2.21844829 0.06844100 +H -0.93614604 1.60094605 -1.04612799 +H -1.24148161 1.59707353 0.69627593 +H -0.63517341 -0.70560132 -0.10055095 +H 1.19338376 -0.84118177 -1.78129390 +H 1.96867777 0.58857708 -1.07004184 +H 1.69873597 -2.15500718 0.30521100 +H 3.03253510 -1.01077235 0.54148058 +H 1.48290386 0.58242428 1.70211026 +H 0.51304296 -0.84979686 2.10121062 +13 +Properties=species:S:1:pos:R:3 A=9.93129 B=4.56362 C=3.63704 mu=1.6826 alpha=45.72 epsHOMO=-0.241 epsLUMO=0.0915 epsgap=0.3325 =407.6909 zpve=0.11459 U0=-232.33123 U=-232.325877 H=-232.324933 G=-232.359589 Cv=18.582 pbc="F F F" +C -0.32308228 1.53751451 0.01947624 +C 0.11847214 0.08900172 -0.00523140 +C 0.87489284 -0.43763303 -1.24721738 +C 1.97841048 -0.80657483 -0.23740356 +O 1.27344926 -0.15419108 0.83794040 +H 0.49211985 2.19658795 -0.29527664 +H -1.17615835 1.68923490 -0.65134808 +H -0.62776963 1.82747912 1.03013205 +H -0.71410200 -0.56389187 0.29597305 +H 0.41033314 -1.26269706 -1.78910031 +H 1.15560811 0.34596269 -1.95459519 +H 2.09501012 -1.88349764 -0.05606083 +H 2.96970344 -0.36924147 -0.40408009 +13 +Properties=species:S:1:pos:R:3 A=10.13697 B=4.32512 C=3.50912 mu=1.8995 alpha=45.45 epsHOMO=-0.2419 epsLUMO=0.0814 epsgap=0.3233 =414.1575 zpve=0.114694 U0=-232.325947 U=-232.320548 H=-232.319604 G=-232.354576 Cv=18.443 pbc="F F F" +C -0.18371124 1.54668909 -0.01671129 +C 0.04513382 0.04386724 0.02270494 +C 1.20301104 -0.54034580 -0.81983464 +O 1.80061686 -1.15530615 0.33924991 +C 0.83391983 -0.54313754 1.21648003 +H 0.75102609 2.09256015 0.15344911 +H -0.58319248 1.86155707 -0.98694169 +H -0.89843724 1.85917126 0.75244153 +H -0.89506736 -0.48768372 -0.14843995 +H 0.93560472 -1.27857588 -1.58543917 +H 1.86392938 0.21379924 -1.27081649 +H 1.29414565 0.20948993 1.87273952 +H 0.31517042 -1.28326856 1.83756393 +13 +Properties=species:S:1:pos:R:3 A=10.09703 B=4.26865 C=3.40487 mu=1.4604 alpha=45.55 epsHOMO=-0.256 epsLUMO=0.0801 epsgap=0.3361 =413.9118 zpve=0.115063 U0=-232.333258 U=-232.328097 H=-232.327153 G=-232.361103 Cv=19.023 pbc="F F F" +O 0.54622847 1.03270424 -0.58398083 +C -0.00112269 -0.11036621 0.01898238 +C 0.13945950 -0.34310429 1.54777117 +C -1.26863784 -0.99876517 1.51632654 +C -1.53844651 -0.26418236 0.17423510 +H 0.20332379 1.80433874 -0.12071219 +H 0.41296647 -0.95857955 -0.53560402 +H 0.98890738 -0.92719626 1.90921867 +H 0.11786549 0.61323034 2.08356053 +H -1.20828813 -2.08191064 1.38036699 +H -1.94143614 -0.79119746 2.35014116 +H -2.00495682 0.71307933 0.34581493 +H -2.09160311 -0.78230202 -0.61249171 +11 +Properties=species:S:1:pos:R:3 A=10.85394 B=4.52867 C=3.62328 mu=2.4158 alpha=38.58 epsHOMO=-0.2465 epsLUMO=0.0604 epsgap=0.3069 =374.4087 zpve=0.091005 U0=-268.248371 U=-268.243234 H=-268.24229 G=-268.276572 Cv=17.344 pbc="F F F" +O 0.07721714 1.41738724 -0.14439016 +C 0.01675156 0.02484791 0.03233817 +C 0.11193823 -0.54392541 1.47000744 +O -1.16387804 -1.20093191 1.32441605 +C -1.41930178 -0.52040930 0.07750673 +H 1.00022214 1.67889479 -0.21697466 +H 0.66036495 -0.50380879 -0.68180327 +H 0.91806589 -1.25385265 1.68878628 +H 0.09146208 0.24427487 2.23499232 +H -2.16139683 0.28183960 0.18222436 +H -1.72867456 -1.20941157 -0.71550887 +15 +Properties=species:S:1:pos:R:3 A=7.14221 B=4.37083 C=3.30265 mu=0.1023 alpha=52.92 epsHOMO=-0.2632 epsLUMO=0.094 epsgap=0.3573 =465.3301 zpve=0.137341 U0=-196.406419 U=-196.40034 H=-196.399396 G=-196.435152 Cv=22.005 pbc="F F F" +C -0.05189850 1.55217435 -0.10318438 +C 0.01226648 0.04690675 0.03747520 +C 1.30115692 -0.70661553 -0.19725724 +C 0.70431939 -0.64893239 1.19003562 +C 1.39750324 0.09481280 2.31078011 +H 0.87404209 2.03543171 0.22162228 +H -0.21641357 1.83695278 -1.14852958 +H -0.87157646 1.97673684 0.48797046 +H -0.88508206 -0.45596941 -0.31580786 +H 1.27663658 -1.64149022 -0.74697967 +H 2.19424067 -0.11404121 -0.37569359 +H 0.21672461 -1.56377934 1.51902400 +H 1.91317356 0.99051175 1.95271747 +H 0.68738009 0.40901468 3.08446972 +H 2.14934633 -0.54151807 2.79111543 +13 +Properties=species:S:1:pos:R:3 A=7.36997 B=4.78662 C=3.53123 mu=1.3092 alpha=45.84 epsHOMO=-0.2518 epsLUMO=0.0822 epsgap=0.334 =418.298 zpve=0.113827 U0=-232.32907 U=-232.323327 H=-232.322383 G=-232.357426 Cv=20.702 pbc="F F F" +C -0.07992786 1.55914739 -0.03875994 +C 0.00042206 0.05111569 0.04346551 +C 1.31748624 -0.66230034 -0.20269965 +C 0.71624326 -0.61854924 1.18128126 +O 1.28134126 0.21474798 2.15341739 +H 0.80207677 2.01979988 0.41147972 +H -0.15235410 1.89225261 -1.07968732 +H -0.95836082 1.93564781 0.49643179 +H -0.88615174 -0.46939753 -0.30918496 +H 1.32384464 -1.60086657 -0.74666557 +H 2.18619315 -0.03316813 -0.37068758 +H 0.28509951 -1.54025035 1.57291630 +H 2.12931661 -0.16234387 2.40895930 +14 +Properties=species:S:1:pos:R:3 A=7.53724 B=4.74514 C=3.54049 mu=1.2483 alpha=49.79 epsHOMO=-0.2199 epsLUMO=0.0931 epsgap=0.313 =432.5081 zpve=0.125556 U0=-212.438188 U=-212.432286 H=-212.431342 G=-212.466725 Cv=20.993 pbc="F F F" +C -0.17034561 1.55765735 -0.10065470 +C 0.01075256 0.05574638 -0.05225833 +C 0.71794239 -0.67802425 -1.14204150 +N 1.29811574 -0.59777508 0.19386866 +C 2.50047290 0.20256923 0.36428818 +H 0.60876703 2.05717913 -0.68119301 +H -1.13238698 1.79957181 -0.56489127 +H -0.17350949 1.98946323 0.90659028 +H -0.81010441 -0.46148051 0.44427396 +H 0.39136106 -1.66274618 -1.46771171 +H 1.16668484 -0.06908735 -1.92776126 +H 2.58340476 1.06745445 -0.31262255 +H 2.55143652 0.56892747 1.39502638 +H 3.37185012 -0.43769461 0.19201862 +13 +Properties=species:S:1:pos:R:3 A=8.15202 B=4.38313 C=3.43318 mu=1.8159 alpha=46.02 epsHOMO=-0.2573 epsLUMO=0.0984 epsgap=0.3557 =432.2224 zpve=0.113178 U0=-232.334436 U=-232.32857 H=-232.327626 G=-232.363064 Cv=20.451 pbc="F F F" +C -0.03345961 1.54674842 -0.13373520 +C -0.04966080 0.05914273 0.10861437 +O 1.17261123 -0.65888877 -0.09925231 +C 0.62653087 -0.62548063 1.22492030 +C 1.43849738 0.05647689 2.29618065 +H 0.84261573 2.02417904 0.30895947 +H -0.02020603 1.75197977 -1.20938503 +H -0.93419215 2.01073729 0.28317577 +H -0.92262410 -0.44789053 -0.31001063 +H 0.19593793 -1.58039168 1.53656778 +H 1.84118250 1.01302927 1.95813013 +H 0.82514514 0.22925358 3.18745348 +H 2.28152757 -0.57796414 2.58961605 diff --git a/latest/_modules/index.html b/latest/_modules/index.html new file mode 100644 index 000000000..45b145c05 --- /dev/null +++ b/latest/_modules/index.html @@ -0,0 +1,283 @@ + + + + + + + + Overview: module code - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/cli/eval_model.html b/latest/_modules/metatensor/models/cli/eval_model.html new file mode 100644 index 000000000..8293bb72e --- /dev/null +++ b/latest/_modules/metatensor/models/cli/eval_model.html @@ -0,0 +1,336 @@ + + + + + + + + metatensor.models.cli.eval_model - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.cli.eval_model

+import argparse
+
+from ..utils.data.readers import read_structures
+from ..utils.data.writers import write_predictions
+from ..utils.model_io import load_model
+from .formatter import CustomHelpFormatter
+
+
+def _add_eval_model_parser(subparser: argparse._SubParsersAction) -> None:
+    """Add the `eval_model` paramaters to an argparse (sub)-parser"""
+
+    if eval_model.__doc__ is not None:
+        description = eval_model.__doc__.split(r":param")[0]
+    else:
+        description = None
+
+    parser = subparser.add_parser(
+        "eval",
+        description=description,
+        formatter_class=CustomHelpFormatter,
+    )
+    parser.set_defaults(callable="eval_model")
+
+    parser.add_argument(
+        "model",
+        type=str,
+        help="saved model to be evaluated",
+    )
+    parser.add_argument(
+        "structures",
+        type=str,
+        help="Structure file which should be considered for the evaluation.",
+    )
+    parser.add_argument(
+        "-o",
+        "--output",
+        dest="output",
+        type=str,
+        required=False,
+        default="output.xyz",
+        help="filenmae of the predictions (default: %(default)s)",
+    )
+
+
+
+[docs] +def eval_model(model: str, structures: str, output: str) -> None: + """Evaluate a pretrained model. + + ``target_property`` wil be predicted on a provided set of structures. Predicted + values will be written ``output``. + + :param model: Path to a saved model + :param structure: Path to a structure file which should be considered for the + evaluation. + :param output: Path to save the predicted values + """ + + loaded_model = load_model(model) + structure_list = read_structures(structures) + + # this calculates all the properties that the model is capable of predicting: + predictions = loaded_model(structure_list, loaded_model.capabilities.outputs) + + write_predictions(output, predictions, structure_list)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/cli/export_model.html b/latest/_modules/metatensor/models/cli/export_model.html new file mode 100644 index 000000000..a3ef981bd --- /dev/null +++ b/latest/_modules/metatensor/models/cli/export_model.html @@ -0,0 +1,330 @@ + + + + + + + + metatensor.models.cli.export_model - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.cli.export_model

+import argparse
+import warnings
+
+from metatensor.torch.atomistic import MetatensorAtomisticModel
+
+from ..utils.model_io import load_model
+from .formatter import CustomHelpFormatter
+
+
+def _add_export_model_parser(subparser: argparse._SubParsersAction) -> None:
+    if export_model.__doc__ is not None:
+        description = export_model.__doc__.split(":param")[0]
+    else:
+        description = None
+
+    parser = subparser.add_parser(
+        "export",
+        description=description,
+        formatter_class=CustomHelpFormatter,
+    )
+    parser.set_defaults(callable="export_model")
+
+    parser.add_argument(
+        "model",
+        type=str,
+        help="Saved model which should be exported",
+    )
+    parser.add_argument(
+        "-o",
+        "--output",
+        dest="output",
+        type=str,
+        required=False,
+        default="exported-model.pt",
+        help="Filename of the exported model (default: %(default)s).",
+    )
+
+
+
+[docs] +def export_model(model: str, output: str) -> None: + """Export a pre-trained model to run MD simulations + + :param model: Path to a saved model + :param output: Path to save the exported model + """ + + loaded_model = load_model(model) + + for model_output_name, model_output in loaded_model.capabilities.outputs.items(): + if model_output.unit == "": + warnings.warn( + f"No units were provided for the `{model_output_name}` output. " + "As a result, this model output will be passed to MD engines as is.", + stacklevel=1, + ) + + wrapper = MetatensorAtomisticModel(loaded_model.eval(), loaded_model.capabilities) + wrapper.export(output)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/cli/formatter.html b/latest/_modules/metatensor/models/cli/formatter.html new file mode 100644 index 000000000..5b8a80889 --- /dev/null +++ b/latest/_modules/metatensor/models/cli/formatter.html @@ -0,0 +1,299 @@ + + + + + + + + metatensor.models.cli.formatter - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.cli.formatter

+import argparse
+
+
+
+[docs] +class CustomHelpFormatter(argparse.RawDescriptionHelpFormatter): + """Descriptions formatter showing positional arguments before optionals.""" + + def _format_usage(self, usage, actions, groups, prefix): + if usage is None: + # split optionals from positionals + optionals = [] + positionals = [] + for action in actions: + if action.option_strings: + optionals.append(action) + else: + positionals.append(action) + + prog = "%(prog)s" % dict(prog=self._prog) + + # build full usage string + format = self._format_actions_usage + action_usage = format(positionals + optionals, groups) + usage = " ".join([s for s in [prog, action_usage] if s]) + + # Call the superclass method to format the usage + return super()._format_usage(usage, actions, groups, prefix)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/cli/train_model.html b/latest/_modules/metatensor/models/cli/train_model.html new file mode 100644 index 000000000..a0ade2e72 --- /dev/null +++ b/latest/_modules/metatensor/models/cli/train_model.html @@ -0,0 +1,487 @@ + + + + + + + + metatensor.models.cli.train_model - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.cli.train_model

+import argparse
+import importlib
+import logging
+import warnings
+from pathlib import Path
+
+import hydra
+import torch
+from metatensor.torch.atomistic import ModelCapabilities, ModelOutput
+from omegaconf import DictConfig, OmegaConf
+
+from metatensor.models.utils.data import Dataset
+from metatensor.models.utils.data.readers import read_structures, read_targets
+
+from .. import CONFIG_PATH
+from ..utils.data import get_all_species
+from ..utils.model_io import save_model
+from ..utils.omegaconf import expand_dataset_config
+from .formatter import CustomHelpFormatter
+
+
+logger = logging.getLogger(__name__)
+
+
+def _has_yaml_suffix(s: str) -> str:
+    """Checks if a string has a .yaml suffix."""
+
+    if Path(s).suffix != ".yaml":
+        raise argparse.ArgumentTypeError(f"Options file '{s}' must be a `.yaml` file.")
+
+    return s
+
+
+def _add_train_model_parser(subparser: argparse._SubParsersAction) -> None:
+    """Add basic the `train_model` paramaters to an argparse (sub)-parser.
+
+    This is just the first layer of arguments. Additional arguments are allowed and will
+    be parsed by the hydra CLI."""
+
+    if train_model.__doc__ is not None:
+        description = train_model.__doc__.split(r":param")[0]
+    else:
+        description = None
+
+    parser = subparser.add_parser(
+        "train",
+        description=description,
+        formatter_class=CustomHelpFormatter,
+    )
+    parser.set_defaults(callable="train_model")
+
+    parser.add_argument(
+        "options",
+        type=_has_yaml_suffix,
+        help="Options file",
+    )
+    parser.add_argument(
+        "-o",
+        "--output",
+        dest="output",
+        type=str,
+        required=False,
+        default="model.pt",
+        help="Path to save the final model (default: %(default)s).",
+    )
+    parser.add_argument(
+        "-y",
+        "--hydra",
+        dest="hydra_paramters",
+        nargs="+",
+        type=str,
+        help="Hydra's command line and override flags.",
+    )
+
+
+
+[docs] +@hydra.main(config_path=str(CONFIG_PATH), version_base=None) +def train_model(options: DictConfig) -> None: + """Train an atomistic machine learning model using configurations provided by Hydra. + + This function sets up the dataset and model architecture, then runs the training + process. The dataset is prepared by reading structural data and target values from + specified paths. The model architecture is dynamically imported and instantiated + based on the configuration. Training is executed with the specified hyperparameters, + and the trained model is saved to a designated output path. + + Hydra is used for command-line configuration management, allowing for dynamic + parameter setting at runtime. See + https://hydra.cc/docs/advanced/hydra-command-line-flags/ and + https://hydra.cc/docs/advanced/override_grammar/basic/ for details. + + :param options: A dictionary-like object obtained from Hydra, containing all the + necessary options for dataset preparation, model hyperparameters, and training. + """ + + # This gives some accuracy improvements. It is very likely that + # this is just due to the preliminary composition fit in the SOAP-BPNN. + # TODO: investigate + torch.set_default_dtype(torch.float64) + + # TODO load seed from config + generator = torch.Generator() + + logger.info("Setting up training set") + train_options = expand_dataset_config(options["training_set"]) + train_structures = read_structures( + filename=train_options["structures"]["read_from"], + fileformat=train_options["structures"]["file_format"], + ) + train_targets = read_targets(train_options["targets"]) + train_dataset = Dataset(train_structures, train_targets) + + logger.info("Setting up test set") + test_options = options["test_set"] + if not isinstance(test_options, float): + test_options = expand_dataset_config(test_options) + test_structures = read_structures( + filename=test_options["structures"]["read_from"], + fileformat=test_options["structures"]["file_format"], + ) + test_targets = read_targets(test_options["targets"]) + test_dataset = Dataset(test_structures, test_targets) + test_fraction = 0.0 + else: + if test_options < 0 or test_options >= 1: + raise ValueError("Test set split must be between 0 and 1.") + test_fraction = test_options + + logger.info("Setting up validation set") + validation_options = options["validation_set"] + if not isinstance(validation_options, float): + validation_options = expand_dataset_config(validation_options) + validation_structures = read_structures( + filename=validation_options["structures"]["read_from"], + fileformat=validation_options["structures"]["file_format"], + ) + validation_targets = read_targets(validation_options["targets"]) + validation_dataset = Dataset(validation_structures, validation_targets) + validation_fraction = 0.0 + else: + if validation_options < 0 or validation_options >= 1: + raise ValueError("Validation set split must be between 0 and 1.") + validation_fraction = validation_options + + # Split train dataset if requested + if test_fraction or validation_fraction: + train_fraction = 1 - test_fraction - validation_fraction + if train_fraction < 0: + raise ValueError("fraction of the train set is smaller then 0!") + + # ignore warning of possible empty dataset + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + subsets = torch.utils.data.random_split( + dataset=train_dataset, + lengths=[ + train_fraction, + test_fraction, + validation_fraction, + ], + generator=generator, + ) + + train_dataset = subsets[0] + if test_fraction and not validation_fraction: + test_dataset = subsets[1] + elif not validation_fraction and validation_fraction: + validation_dataset = subsets[1] + else: + test_dataset = subsets[1] + validation_dataset = subsets[2] + + # TODO: Perform section and unit consistency checks between test/train/validation + # set + test_dataset + validation_dataset + + logger.info("Setting up model") + architetcure_name = options["architecture"]["name"] + architecture = importlib.import_module(f"metatensor.models.{architetcure_name}") + + output_dir = hydra.core.hydra_config.HydraConfig.get().runtime.output_dir + + all_species = [] + for dataset in [train_dataset]: # HACK: only a single train_dataset for now + all_species += get_all_species(dataset) + all_species = list(set(all_species)) + all_species.sort() + + outputs = { + key: ModelOutput( + quantity=value["quantity"], + unit=(value["unit"] if value["unit"] is not None else ""), + ) + for key, value in options["training_set"]["targets"].items() + } + length_unit = train_options["structures"]["length_unit"] + model_capabilities = ModelCapabilities( + length_unit=length_unit if length_unit is not None else "", + species=all_species, + outputs=outputs, + ) + + logger.info("Calling architecture trainer") + model = architecture.train( + train_datasets=[train_dataset], + validation_datasets=[validation_dataset], + model_capabilities=model_capabilities, + hypers=OmegaConf.to_container(options["architecture"]), + output_dir=output_dir, + ) + + save_model(model, options["output_path"])
+ + + # TODO: add evaluation of the test set +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/combine_dataloaders.html b/latest/_modules/metatensor/models/utils/data/combine_dataloaders.html new file mode 100644 index 000000000..9b2e0e357 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/combine_dataloaders.html @@ -0,0 +1,333 @@ + + + + + + + + metatensor.models.utils.data.combine_dataloaders - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.combine_dataloaders

+import itertools
+from typing import List
+
+import numpy as np
+import torch
+
+
+
+[docs] +class CombinedIterableDataset(torch.utils.data.IterableDataset): + """ + Combines multiple dataloaders into a single iterable dataset. + This is useful for combining multiple dataloaders into a single + dataloader. The new dataloader can be shuffled or not. + + :param dataloaders: list of dataloaders to combine + :param shuffle: whether to shuffle the combined dataloader + + :return: combined dataloader + """ + + def __init__(self, dataloaders, shuffle): + self.dataloaders = dataloaders + self.shuffle = shuffle + + # Create the indices: + indices = [ + (i, dl_idx) + for dl_idx, dl in enumerate(self.dataloaders) + for i in range(len(dl)) + ] + + # Shuffle the indices if requested + if self.shuffle: + np.random.shuffle(indices) + + self.indices = indices + + def __iter__(self): + for idx, dataloader_idx in self.indices: + yield next(itertools.islice(self.dataloaders[dataloader_idx], idx, None)) + + def __len__(self): + return len(self.indices)
+ + + +
+[docs] +def combine_dataloaders( + dataloaders: List[torch.utils.data.DataLoader], shuffle: bool = True +): + """ + Combines multiple dataloaders into a single dataloader. + + :param dataloaders: list of dataloaders to combine + :param shuffle: whether to shuffle the combined dataloader + + :return: combined dataloader + """ + combined_dataset = CombinedIterableDataset(dataloaders, shuffle) + return torch.utils.data.DataLoader(combined_dataset, batch_size=None)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/dataset.html b/latest/_modules/metatensor/models/utils/data/dataset.html new file mode 100644 index 000000000..d38b18889 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/dataset.html @@ -0,0 +1,523 @@ + + + + + + + + metatensor.models.utils.data.dataset - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.dataset

+import os
+from typing import Dict, List, Tuple
+
+import metatensor.torch
+import numpy as np
+import torch
+from metatensor.torch import Labels, TensorMap
+from metatensor.torch.atomistic import ModelCapabilities, System
+
+
+if os.environ.get("METATENSOR_IMPORT_FOR_SPHINX", "0") == "1":
+    # This is necessary to make the Sphinx documentation build
+
+[docs] + def compiled_slice(a, b): + pass
+ + +
+[docs] + def compiled_join(a, axis, remove_tensor_name): + pass
+ + +else: + compiled_slice = torch.jit.script(metatensor.torch.slice) + compiled_join = torch.jit.script(metatensor.torch.join) + + +
+[docs] +class Dataset(torch.utils.data.Dataset): + def __init__(self, structures: List[System], targets: Dict[str, TensorMap]): + """ + Creates a dataset from a list of `metatensor.torch.atomistic.System` + objects and a dictionary of targets where the keys are strings and + the values are `TensorMap` objects. + """ + + for tensor_map in targets.values(): + n_structures = ( + torch.max(tensor_map.block(0).samples["structure"]).item() + 1 + ) + if n_structures != len(structures): + raise ValueError( + f"Number of structures in input ({len(structures)}) and " + f"output ({n_structures}) must be the same" + ) + + self.structures = structures + self.targets = targets + + def __len__(self): + """ + Return the total number of samples in the dataset. + """ + return len(self.structures) + + def __getitem__(self, index): + """ + Generates one sample of data. + + Args: + index: The index of the item in the dataset. + + Returns: + A tuple containing the structure and targets for the given index. + """ + structure = self.structures[index] + + sample_labels = Labels( + names=["structure"], + values=torch.tensor([index]).reshape(1, 1), + ) + + targets = {} + for name, tensor_map in self.targets.items(): + targets[name] = compiled_slice(tensor_map, "samples", sample_labels) + + return structure, targets
+ + + +
+[docs] +def get_all_species(dataset: Dataset) -> List[int]: + """ + Returns the list of all species present in the dataset. + + Args: + dataset: The dataset. + + Returns: + The list of species present in the dataset. + """ + + # The following does not work because the `dataset` can also + # be a `Subset` object: + # species = [] + # for structure in dataset.structures: + # species += structure.species.tolist() + # return list(set(species)) + + # Iterate over all single instances of the dataset: + species = [] + for index in range(len(dataset)): + structure, _ = dataset[index] + species += structure.species.tolist() + + # Remove duplicates and sort: + result = list(set(species)) + result.sort() + + return result
+ + + +
+[docs] +def get_all_targets(dataset: Dataset) -> List[str]: + """ + Returns the list of all targets present in the dataset. + + Args: + dataset: The dataset. + + Returns: + The list of targets present in the dataset. + """ + + # The following does not work because the `dataset` can also + # be a `Subset` object: + # return list(dataset.targets.keys()) + + # Iterate over all single instances of the dataset: + target_names = [] + for index in range(len(dataset)): + _, targets = dataset[index] + target_names += list(targets.keys()) + + # Remove duplicates: + return list(set(target_names))
+ + + +
+[docs] +def collate_fn(batch: List[Tuple[System, Dict[str, TensorMap]]]): + """ + Creates a batch from a list of samples. + + Args: + batch: A list of samples, where each sample is a tuple containing a + structure and targets. + + Returns: + A tuple containing the structures and targets for the batch. + """ + + structures: List[System] = [sample[0] for sample in batch] + # `join` will reorder the samples based on their structure number. + # Let's reorder the list of structures in the same way: + structure_samples = [ + list(sample[1].values())[0].block().samples.values.item() for sample in batch + ] + sorting_order = np.argsort(structure_samples) + structures = [structures[index] for index in sorting_order] + # TODO: use metatensor.learn for datasets/dataloaders, making sure the same + # issues are handled correctly + + targets: Dict[str, TensorMap] = {} + names = list(batch[0][1].keys()) + for name in names: + targets[name] = compiled_join( + [sample[1][name] for sample in batch], + axis="samples", + remove_tensor_name=True, + ) + return structures, targets
+ + + +
+[docs] +def check_datasets( + train_datasets: List[Dataset], + validation_datasets: List[Dataset], + capabilities: ModelCapabilities, +): + """ + This is a helper function that checks that the training and validation sets + are compatible with one another and with the model's capabilities. Although + these checks will not fit all use cases, they will fit most. + + :param train_datasets: A list of training datasets. + :param validation_datasets: A list of validation datasets. + :param capabilities: The model's capabilities. + + :raises ValueError: If the training and validation sets are not compatible + with one another or with the model's capabilities. + """ + + # Get all targets in the training sets: + targets = [] + for dataset in train_datasets: + targets += get_all_targets(dataset) + + # Check that they are compatible with the model's capabilities: + for target in targets: + if target not in capabilities.outputs.keys(): + raise ValueError(f"The target {target} is not in the model's capabilities.") + + # For now, we impose no overlap between the targets in the training sets: + if len(set(targets)) != len(targets): + raise ValueError( + "The training datasets must not have overlapping targets in SOAP-BPNN. " + "This means that one target cannot be in more than one dataset." + ) + + # Check that the validation sets do not have targets that are not in the + # training sets: + for dataset in validation_datasets: + for target in get_all_targets(dataset): + if target not in targets: + raise ValueError( + f"The validation dataset has a target ({target}) " + "that is not in the training datasets." + ) + + # Get all the species in the training sets: + all_training_species = [] + for dataset in train_datasets: + all_training_species += get_all_species(dataset) + + # Check that they are compatible with the model's capabilities: + for species in all_training_species: + if species not in capabilities.species: + raise ValueError( + f"The species {species} is not in the model's capabilities." + ) + + # Check that the validation sets do not have species that are not in the + # training sets: + for dataset in validation_datasets: + for species in get_all_species(dataset): + if species not in all_training_species: + raise ValueError( + f"The validation dataset has a species ({species}) " + "that is not in the training datasets. This could be " + "a result of a random train/validation split. You can " + "avoid this by providing a validation dataset manually." + )
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/readers/readers.html b/latest/_modules/metatensor/models/utils/data/readers/readers.html new file mode 100644 index 000000000..063b189e9 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/readers/readers.html @@ -0,0 +1,517 @@ + + + + + + + + metatensor.models.utils.data.readers.readers - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.readers.readers

+import logging
+from pathlib import Path
+from typing import Dict, List, Optional
+
+import torch
+from metatensor.torch import Labels, TensorBlock, TensorMap
+from omegaconf import DictConfig
+from rascaline.torch.system import System
+
+from .structures import STRUCTURE_READERS
+from .targets import ENERGY_READERS, FORCES_READERS, STRESS_READERS, VIRIAL_READERS
+
+
+logger = logging.getLogger(__name__)
+
+
+def _base_reader(
+    readers: dict, filename: str, fileformat: Optional[str] = None, **reader_kwargs
+):
+    if fileformat is None:
+        fileformat = Path(filename).suffix
+
+    try:
+        reader = readers[fileformat]
+    except KeyError:
+        raise ValueError(f"fileformat {fileformat!r} is not supported")
+
+    return reader(filename, **reader_kwargs)
+
+
+
+[docs] +def read_energy( + filename: str, + target_value: str = "energy", + fileformat: Optional[str] = None, +) -> TensorBlock: + """Read energy informations from a file. + + :param filename: name of the file to read + :param target_value: target value key name to be parsed from the file. + :param fileformat: format of the structure file. If :py:obj:`None` the format is + determined from the suffix. + :returns: target value stored stored as a :class:`metatensor.TensorBlock` + """ + return _base_reader( + readers=ENERGY_READERS, + filename=filename, + fileformat=fileformat, + key=target_value, + )
+ + + +
+[docs] +def read_forces( + filename: str, + target_value: str = "forces", + fileformat: Optional[str] = None, +) -> TensorBlock: + """Read force informations from a file. + + :param filename: name of the file to read + :param target_value: target value key name to be parsed from the file. + :param fileformat: format of the structure file. If :py:obj:`None` the format is + determined from the suffix. + :returns: target value stored stored as a :class:`metatensor.TensorBlock` + """ + return _base_reader( + readers=FORCES_READERS, + filename=filename, + fileformat=fileformat, + key=target_value, + )
+ + + +
+[docs] +def read_stress( + filename: str, + target_value: str = "stress", + fileformat: Optional[str] = None, +) -> TensorBlock: + """Read stress informations from a file. + + :param filename: name of the file to read + :param target_value: target value key name to be parsed from the file. + :param fileformat: format of the structure file. If :py:obj:`None` the format is + determined from the suffix. + :returns: target value stored stored as a :class:`metatensor.TensorBlock` + """ + return _base_reader( + readers=STRESS_READERS, + filename=filename, + fileformat=fileformat, + key=target_value, + )
+ + + +
+[docs] +def read_structures( + filename: str, + fileformat: Optional[str] = None, +) -> List[System]: + """Read structure informations from a file. + + :param filename: name of the file to read + :param fileformat: format of the structure file. If :py:obj:`None` the format is + determined from the suffix. + :returns: list of structures + """ + return _base_reader( + readers=STRUCTURE_READERS, filename=filename, fileformat=fileformat + )
+ + + +
+[docs] +def read_virial( + filename: str, + target_value: str = "virial", + fileformat: Optional[str] = None, +) -> TensorBlock: + """Read virial informations from a file. + + :param filename: name of the file to read + :param target_value: target value key name to be parsed from the file. + :param fileformat: format of the structure file. If :py:obj:`None` the format is + determined from the suffix. + :returns: target value stored stored as a :class:`metatensor.TensorBlock` + """ + return _base_reader( + readers=VIRIAL_READERS, + filename=filename, + fileformat=fileformat, + key=target_value, + )
+ + + +
+[docs] +def read_targets(conf: DictConfig) -> Dict[str, TensorMap]: + """Reading all target information from a fully expanded config. + + To get such a config you can use + :func:`metatensor.models.utils.omegaconf.expand_dataset_config`. + + This function uses subfunctions like :func:`read_energy` to parse the requested + target quantity. Currently only `energy` is a supported target property. But, within + the `energy` section gradients such as `forces`, the `stress` or the `virial` can be + added. Other gradients are silentlty irgnored. + + :param conf: config containing the keys for what should be read. + :returns: Dictionary containing one TensorMaps for each target section in the + config.""" + target_dictionary = {} + + for target_key, target in conf.items(): + if target["quantity"] == "energy": + block = read_energy( + filename=target["read_from"], + target_value=target["key"], + fileformat=target["file_format"], + ) + + if target["forces"]: + try: + position_gradient = read_forces( + filename=target["forces"]["read_from"], + target_value=target["forces"]["key"], + fileformat=target["forces"]["file_format"], + ) + except KeyError: + logger.warning( + f"Forces not found in section {target_key!r}. " + "Continue without forces!" + ) + else: + logger.info( + f"Forces found in section {target_key!r}. Forces are taken for " + "training!" + ) + block.add_gradient( + parameter="positions", gradient=position_gradient + ) + + if target["stress"] and target["virial"]: + raise ValueError("Cannot use stress and virial at the same time!") + + if target["stress"]: + try: + displacement_gradient = read_stress( + filename=target["stress"]["read_from"], + target_value=target["stress"]["key"], + fileformat=target["stress"]["file_format"], + ) + except KeyError: + logger.warning( + f"Stress not found in section {target_key!r}. " + "Continue without stress!" + ) + else: + logger.info( + f"Stress found in section {target_key!r}. Stress is taken for " + f"training!" + ) + block.add_gradient( + parameter="displacement", gradient=displacement_gradient + ) + + if target["virial"]: + try: + displacement_gradient = read_virial( + filename=target["virial"]["read_from"], + target_value=target["virial"]["key"], + fileformat=target["virial"]["file_format"], + ) + except KeyError: + logger.warning( + f"Virial not found in section {target_key!r}. " + "Continue without virial!" + ) + else: + logger.info( + f"Virial found in section {target_key!r}. Virial is taken for " + f"training!" + ) + block.add_gradient( + parameter="displacement", gradient=displacement_gradient + ) + else: + raise ValueError( + f"Quantity: {target['quantity']!r} is not supported. Choose 'energy'." + ) + + target_dictionary[target_key] = TensorMap( + keys=Labels(["lambda", "sigma"], torch.tensor([(0, 1)])), blocks=[block] + ) + + return target_dictionary
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/readers/structures/ase.html b/latest/_modules/metatensor/models/utils/data/readers/structures/ase.html new file mode 100644 index 000000000..509b935d1 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/readers/structures/ase.html @@ -0,0 +1,291 @@ + + + + + + + + metatensor.models.utils.data.readers.structures.ase - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.readers.structures.ase

+from typing import List
+
+import ase.io
+from rascaline.systems import AseSystem
+from rascaline.torch.system import System, systems_to_torch
+
+
+
+[docs] +def read_structures_ase(filename: str) -> List[System]: + """Store structure informations using ase. + + :param filename: name of the file to read + + :returns: + A list of structures + """ + systems = [AseSystem(atoms) for atoms in ase.io.read(filename, ":")] + + return systems_to_torch(systems)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/readers/targets/ase.html b/latest/_modules/metatensor/models/utils/data/readers/targets/ase.html new file mode 100644 index 000000000..23ae34eb0 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/readers/targets/ase.html @@ -0,0 +1,446 @@ + + + + + + + + metatensor.models.utils.data.readers.targets.ase - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.readers.targets.ase

+import warnings
+
+import ase.io
+import torch
+from metatensor.torch import Labels, TensorBlock
+
+
+
+[docs] +def read_energy_ase( + filename: str, + key: str, +) -> TensorBlock: + """Store energy information in a :class:`metatensor.TensorBlock`. + + :param filename: name of the file to read + :param key: target value key name to be parsed from the file. + + :returns: + TensorMap containing the given information + """ + frames = ase.io.read(filename, ":") + values = torch.tensor([f.info[key] for f in frames]) + n_structures = len(values) + + block = TensorBlock( + values=values.reshape(-1, 1), + samples=Labels(["structure"], torch.arange(n_structures).reshape(-1, 1)), + components=[], + properties=Labels.single(), + ) + + return block
+ + + +
+[docs] +def read_forces_ase( + filename: str, + key: str = "energy", +) -> TensorBlock: + """Store force information as a :class:`metatensor.TensorBlock` which can be used as + ``position`` gradients . + + :param filename: name of the file to read + :param key: target value key name to be parsed from the file. + + :returns: + TensorMap containing the given information + """ + frames = ase.io.read(filename, ":") + n_structures = len(frames) + # We store forces as positions gradients which means we invert the sign + values_raw = [-torch.tensor(f.arrays[key]) for f in frames] + + # The `"sample"` label refers to the index of the corresponding value in the + # block. Here, the number of values is the same as the number of structures so + # we can keep `"sample"` and `"structure"` the same. + samples = Labels( + ["sample", "structure", "atom"], + torch.tensor( + [[s, s, a] for s in range(n_structures) for a in range(len(values_raw[s]))] + ), + ) + + values = torch.concatenate(values_raw, dim=0) + assert values.shape[1] != (3,) + + block = TensorBlock( + values=values.reshape(-1, 3, 1), + samples=samples, + components=[Labels(["direction"], torch.arange(3).reshape(-1, 1))], + properties=Labels.single(), + ) + + return block
+ + + +
+[docs] +def read_virial_ase( + filename: str, + key: str = "virial", +): + """Store virial information in :class:`metatensor.TensorBlock` which can be used as + ``displacement`` gradients + + :param filename: name of the file to read + :param key: target value key name to be parsed from the file + + :returns: + TensorMap containing the given information + """ + return _read_virial_stress_ase(filename=filename, key=key, is_virial=True)
+ + + +
+[docs] +def read_stress_ase( + filename: str, + key: str = "stress", +): + """Store stress information in :class:`metatensor.TensorBlock` which can be used as + ``displacement`` gradients + + :param filename: name of the file to read + :param key: target value key name to be parsed from the file + + :returns: + TensorMap containing the given information + """ + return _read_virial_stress_ase(filename=filename, key=key, is_virial=False)
+ + + +def _read_virial_stress_ase( + filename: str, + key: str, + is_virial: bool = True, +) -> TensorBlock: + """Store stress or virial information in :class:`metatensor.TensorBlock` which can + be used as ``displacement`` gradients + + :param filename: name of the file to read + :param key: target value key name to be parsed from the file + :param is_virial: if target values are stored as stress or virials. + + :returns: + TensorMap containing the given information + """ + frames = ase.io.read(filename, ":") + n_structures = len(frames) + values = torch.tensor([f.info[key].tolist() for f in frames]) + + if values.shape[1:] == (9,): + warnings.warn( + "Found 9-long numerical vector for the stress/virial. Assume a row major " + "format for the conversion into a 3x3 matrix.", + stacklevel=2, + ) + values = values.reshape(n_structures, 3, 3) + elif values.shape[1:] != (3, 3): + raise ValueError( + f"stress/virial must be a 3 x 3 matrix but has shape {values.shape}" + ) + + volumes = torch.tensor([f.cell.volume for f in frames]) + if torch.any(volumes == 0): + raise ValueError( + "Found at least one structure with zero cell vectors." + "Virial/stress can only be used if cell is non zero!" + ) + + if is_virial: + values *= -1 + else: # is stress + values *= volumes.reshape(-1, 1, 1) + + samples = Labels(["sample"], torch.tensor([[s] for s in range(n_structures)])) + + components = [ + Labels(["cell_vector"], torch.arange(3).reshape(-1, 1)), + Labels(["coordinate"], torch.arange(3).reshape(-1, 1)), + ] + + block = TensorBlock( + values=values.reshape(-1, 3, 3, 1), + samples=samples, + components=components, + properties=Labels.single(), + ) + + return block +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/writers.html b/latest/_modules/metatensor/models/utils/data/writers.html new file mode 100644 index 000000000..a9b5b13ba --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/writers.html @@ -0,0 +1,312 @@ + + + + + + + + metatensor.models.utils.data.writers - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.writers

+from typing import List, Optional
+
+from pathlib import Path
+from metatensor.torch import TensorMap
+from metatensor.torch.atomistic import System
+
+from .xyz import write_xyz
+
+
+PREDICTIONS_WRITERS = {".xyz": write_xyz}
+""":py:class:`dict`: dictionary mapping file suffixes to a prediction writers"""
+
+
+
+[docs] +def write_predictions( + filename: str, + predictions: TensorMap, + structures: List[System], + fileformat: Optional[str] = None, +) -> None: + """Writes predictions to a file. + + For certain file suffixes also the structures will be written (i.e ``xyz``). + + :param filename: name of the file to write + :param predictions: :py:class:`metatensor.torch.TensorMap` containinb the + predictions that should be written + :param structures: list of structures that for some writers will also be written + :param fileformat: format of the target value file. If :py:obj:`None` the format is + determined from the suffix. + """ + if fileformat is None: + fileformat = Path(filename).suffix + + try: + writer = PREDICTIONS_WRITERS[fileformat] + except KeyError: + raise ValueError(f"fileformat '{fileformat}' is not supported") + + return writer(filename, predictions, structures)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/data/writers/xyz.html b/latest/_modules/metatensor/models/utils/data/writers/xyz.html new file mode 100644 index 000000000..b42a2bf25 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/data/writers/xyz.html @@ -0,0 +1,306 @@ + + + + + + + + metatensor.models.utils.data.writers.xyz - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.data.writers.xyz

+from typing import List
+
+import ase
+import ase.io
+import torch
+from metatensor.torch import TensorMap
+from rascaline.torch.system import System
+
+
+
+[docs] +def write_xyz(filename: str, predictions: TensorMap, structures: List[System]) -> None: + """An ase based xyz file writer + + :param filename: name of the file to read + :param predictions: prediction values written to the file. + :param structures: strcutures additional written to the file. + """ + # Get the target property name: + target_name = next(iter(predictions.keys())) + + frames = [] + for i_system, system in enumerate(structures): + info = { + target_name: float(predictions[target_name].block().values[i_system, 0]) + } + atoms = ase.Atoms(symbols=system.species, positions=system.positions, info=info) + + if torch.any(system.cell != 0): + atoms.pbc = True + atoms.cell = system.cell + + frames.append(atoms) + + ase.io.write(filename, frames)
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/model_io.html b/latest/_modules/metatensor/models/utils/model_io.html new file mode 100644 index 000000000..59c308fdb --- /dev/null +++ b/latest/_modules/metatensor/models/utils/model_io.html @@ -0,0 +1,334 @@ + + + + + + + + metatensor.models.utils.model_io - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.model_io

+import importlib
+from pathlib import Path
+from typing import Union
+
+import torch
+
+
+
+[docs] +def save_model( + model: torch.nn.Module, + path: Union[str, Path], +) -> None: + """Saves a model to a file, along with all the metadata needed to load it. + + Parameters + ---------- + :param model: The model to save. + :param path: The path to the file where the model should be saved. + """ + torch.save( + { + "architecture_name": model.name, + "model_state_dict": model.state_dict(), + "model_hypers": model.hypers, + "model_capabilities": model.capabilities, + }, + path, + )
+ + + +
+[docs] +def load_model(path: Union[str, Path]) -> torch.nn.Module: + """Loads a model from a file. + + Parameters + ---------- + :param path: The path to the file containing the model. + + Returns + ------- + :return: The loaded model. + """ + + # Load the model and the metadata + model_dict = torch.load(path) + + # Get the architecture + architecture = importlib.import_module( + f"metatensor.models.{model_dict['architecture_name']}" + ) + + # Create the model + model = architecture.Model( + capabilities=model_dict["model_capabilities"], hypers=model_dict["model_hypers"] + ) + + # Load the model weights + model.load_state_dict(model_dict["model_state_dict"]) + + return model
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_modules/metatensor/models/utils/omegaconf.html b/latest/_modules/metatensor/models/utils/omegaconf.html new file mode 100644 index 000000000..f122b4bc4 --- /dev/null +++ b/latest/_modules/metatensor/models/utils/omegaconf.html @@ -0,0 +1,432 @@ + + + + + + + + metatensor.models.utils.omegaconf - metatensor-models 2023.11.29 documentation + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark mode + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for metatensor.models.utils.omegaconf

+from pathlib import Path
+from typing import Union
+
+from omegaconf import DictConfig, OmegaConf
+
+
+
+[docs] +def file_format(_parent_): + """Custom OmegaConf resolver to find the file format. + + File format is obtained based on the suffix of the ``read_from`` field in the same + section.""" + return Path(_parent_["read_from"]).suffix
+ + + +# Register custom resolvers +OmegaConf.register_new_resolver("file_format", file_format) + + +def _resolve_single_str(config): + if isinstance(config, str): + return OmegaConf.create({"read_from": config}) + else: + return config + + +# BASE CONFIGURATIONS +CONF_STRUCTURES = OmegaConf.create( + { + "read_from": "${..read_from}", + "file_format": "${file_format:}", + "key": None, + "length_unit": None, + } +) + +CONF_TARGET_FIELDS = OmegaConf.create( + { + "quantity": "energy", + "read_from": "${...structures.read_from}", + "file_format": "${file_format:}", + "key": None, + "unit": None, + } +) + +CONF_GRADIENTS = OmegaConf.create({"forces": False, "stress": False, "virial": False}) +CONF_GRADIENT = OmegaConf.create( + { + "read_from": "${..read_from}", + "file_format": "${file_format:}", + "key": None, + } +) + +KNWON_GRADIENTS = list(CONF_GRADIENTS.keys()) + +# merge configs to get default configs for energies and other targets +CONF_TARGET = OmegaConf.merge(CONF_TARGET_FIELDS, CONF_GRADIENTS) +CONF_ENERGY = CONF_TARGET.copy() +CONF_ENERGY["forces"] = CONF_GRADIENT.copy() +CONF_ENERGY["stress"] = CONF_GRADIENT.copy() + + +
+[docs] +def expand_dataset_config(conf: Union[str, DictConfig]) -> DictConfig: + """Expands shorthand notations in a dataset configuration to their full formats. + + This function takes a dataset configuration, either as a string or a DictConfig, and + expands it into a detailed configuration format. It processes structures, targets, + and gradient sections, setting default values and inferring missing information. + Unknown keys are ignored, allowing for flexibility. + + The function performs the following steps: + + - Loads base configurations for structures, targets, and gradients from predefined + YAML files. + - Merges and interpolates the input configuration with the base configurations. + - Expands shorthand notations like file paths or simple true/false settings to full + dictionary structures. + - Handles special cases, such as the mandatory nature of the 'energy' section for MD + simulations and the mutual exclusivity of 'stress' and 'virial' sections. + - Validates the final expanded configuration, particularly for gradient-related + settings, to ensure consistency and prevent conflicts during training. + + :param conf: The dataset configuration, either as a file path string or a DictConfig + object. + :returns: The fully expanded dataset configuration. + :raises ValueError: If both ``virial`` and ``stress`` sections are enabled in the + 'energy' target, as this is not permissible for training. + """ + if isinstance(conf, str): + read_from = conf + conf = OmegaConf.create( + {"structures": read_from, "targets": {"energy": read_from}} + ) + + if type(conf["structures"]) is str: + conf["structures"] = _resolve_single_str(conf["structures"]) + + conf["structures"] = OmegaConf.merge(CONF_STRUCTURES, conf["structures"]) + + for target_key, target in conf["targets"].items(): + if type(target) is str: + target = _resolve_single_str(target) + + # Add default gradients "energy" target section + if target_key == "energy": + # For special case of the "energy" we add the section for force and stress + # gradient by default + target = OmegaConf.merge(CONF_ENERGY, target) + else: + target = OmegaConf.merge(CONF_TARGET, target) + + if target["key"] is None: + target["key"] = target_key + + # Update DictConfig to allow for config node interpolation + conf["targets"][target_key] = target + + # merge and interpolate possibly present gradients with default gradient config + for gradient_key, gradient_conf in conf["targets"][target_key].items(): + if gradient_key in KNWON_GRADIENTS: + if gradient_conf is True: + gradient_conf = CONF_GRADIENT.copy() + elif type(gradient_conf) is str: + gradient_conf = _resolve_single_str(gradient_conf) + + if isinstance(gradient_conf, DictConfig): + gradient_conf = OmegaConf.merge(CONF_GRADIENT, gradient_conf) + + if gradient_conf["key"] is None: + gradient_conf["key"] = gradient_key + + conf["targets"][target_key][gradient_key] = gradient_conf + + # If user sets the virial gradient and leaves the stress section untouched, + # we disable the by default enabled stress gradient section. + base_stress_gradient_conf = CONF_GRADIENT.copy() + base_stress_gradient_conf["key"] = "stress" + + if ( + target_key == "energy" + and conf["targets"][target_key]["virial"] + and conf["targets"][target_key]["stress"] == base_stress_gradient_conf + ): + conf["targets"][target_key]["stress"] = False + + if ( + conf["targets"][target_key]["stress"] + and conf["targets"][target_key]["virial"] + ): + raise ValueError( + f"Cannot perform training with respect to virials and stress as in " + f"section {target_key}. Set either `virials: off` or `stress: off`." + ) + + return conf
+ +
+
+
+
+ + +
+
+ + Made with Sphinx and @pradyunsg's + + Furo + +
+
+
+ + +
+
+
+ +
+
+ +
+
+ + + + + + \ No newline at end of file diff --git a/latest/_sources/architectures/index.rst.txt b/latest/_sources/architectures/index.rst.txt new file mode 100644 index 000000000..65fbb5e51 --- /dev/null +++ b/latest/_sources/architectures/index.rst.txt @@ -0,0 +1,12 @@ +.. _available-architectures: + +Available Architectures +======================= + +This is a list of all architectures available in ``metatensor-models``. + +.. toctree:: + :maxdepth: 1 + :glob: + + ./* diff --git a/latest/_sources/architectures/soap-bpnn.rst.txt b/latest/_sources/architectures/soap-bpnn.rst.txt new file mode 100644 index 000000000..828e4e02e --- /dev/null +++ b/latest/_sources/architectures/soap-bpnn.rst.txt @@ -0,0 +1,32 @@ +.. _architecture-soap-bpnn: + +SOAP-BPNN +========= + +This is a Behler-Parrinello neural network with SOAP features. + + +Installation +------------ + +To install the package, you can run the following command in the root +directory of the repository: + +.. code-block:: bash + + pip install .[soap-bpnn] + +This will install the package with the SOAP-BPNN dependencies. + + +Hyperparameters +--------------- + +The hyperparameters (and relative default values) for the SOAP-BPNN model are: + +.. literalinclude:: ../../../src/metatensor/models/cli/conf/architecture/soap_bpnn.yaml + :language: yaml + +Any of these hyperparameters can be overridden with the training parameter file. + + diff --git a/latest/_sources/dev-docs/adding-models.rst.txt b/latest/_sources/dev-docs/adding-models.rst.txt new file mode 100644 index 000000000..a97544db4 --- /dev/null +++ b/latest/_sources/dev-docs/adding-models.rst.txt @@ -0,0 +1,4 @@ +Adding new models +================= + +To be done. diff --git a/latest/_sources/dev-docs/cli/eval_model.rst.txt b/latest/_sources/dev-docs/cli/eval_model.rst.txt new file mode 100644 index 000000000..dcec7896d --- /dev/null +++ b/latest/_sources/dev-docs/cli/eval_model.rst.txt @@ -0,0 +1,7 @@ +eval_model +########## + +.. automodule:: metatensor.models.cli.eval_model + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/cli/export_model.rst.txt b/latest/_sources/dev-docs/cli/export_model.rst.txt new file mode 100644 index 000000000..3facdb13c --- /dev/null +++ b/latest/_sources/dev-docs/cli/export_model.rst.txt @@ -0,0 +1,7 @@ +export_model +############ + +.. automodule:: metatensor.models.cli.export_model + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/cli/formatter.rst.txt b/latest/_sources/dev-docs/cli/formatter.rst.txt new file mode 100644 index 000000000..bbe577be8 --- /dev/null +++ b/latest/_sources/dev-docs/cli/formatter.rst.txt @@ -0,0 +1,7 @@ +formatter +######### + +.. automodule:: metatensor.models.cli.formatter + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/cli/index.rst.txt b/latest/_sources/dev-docs/cli/index.rst.txt new file mode 100644 index 000000000..2141d8228 --- /dev/null +++ b/latest/_sources/dev-docs/cli/index.rst.txt @@ -0,0 +1,20 @@ +CLI API +======= + +This is the API for the command line interface ``cli`` functions of +``metatensor-models``. + +.. toctree:: + :maxdepth: 1 + + train_model + eval_model + export_model + +We provide a custom formatter class for the formatting the help message of the +`argparse` package. + +.. toctree:: + :maxdepth: 1 + + formatter diff --git a/latest/_sources/dev-docs/cli/train_model.rst.txt b/latest/_sources/dev-docs/cli/train_model.rst.txt new file mode 100644 index 000000000..6e9981cbf --- /dev/null +++ b/latest/_sources/dev-docs/cli/train_model.rst.txt @@ -0,0 +1,7 @@ +train_model +########### + +.. automodule:: metatensor.models.cli.train_model + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/index.rst.txt b/latest/_sources/dev-docs/index.rst.txt new file mode 100644 index 000000000..9f6950d68 --- /dev/null +++ b/latest/_sources/dev-docs/index.rst.txt @@ -0,0 +1,14 @@ +Developer documentation +======================= + +This is a collection of documentation for developers of the metatensor-models package. +It includes documentation on how to add a new model, as well as the API of the utils +module. + + +.. toctree:: + :maxdepth: 1 + + adding-models + cli/index + utils/index diff --git a/latest/_sources/dev-docs/utils/combine_dataloaders.rst.txt b/latest/_sources/dev-docs/utils/combine_dataloaders.rst.txt new file mode 100644 index 000000000..0aff64b69 --- /dev/null +++ b/latest/_sources/dev-docs/utils/combine_dataloaders.rst.txt @@ -0,0 +1,7 @@ +Combining dataloaders +##################### + +.. automodule:: metatensor.models.utils.data.combine_dataloaders + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/utils/dataset.rst.txt b/latest/_sources/dev-docs/utils/dataset.rst.txt new file mode 100644 index 000000000..c086d3e84 --- /dev/null +++ b/latest/_sources/dev-docs/utils/dataset.rst.txt @@ -0,0 +1,7 @@ +Dataset +####### + +.. automodule:: metatensor.models.utils.data.dataset + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/utils/index.rst.txt b/latest/_sources/dev-docs/utils/index.rst.txt new file mode 100644 index 000000000..51a1c0470 --- /dev/null +++ b/latest/_sources/dev-docs/utils/index.rst.txt @@ -0,0 +1,14 @@ +Utility API +=========== + +This is the API for the ``utils`` module of ``metatensor-models``. + +.. toctree:: + :maxdepth: 1 + + dataset + readers/index + writers + model-io + omegaconf + combine_dataloaders diff --git a/latest/_sources/dev-docs/utils/model-io.rst.txt b/latest/_sources/dev-docs/utils/model-io.rst.txt new file mode 100644 index 000000000..14b6e6d3d --- /dev/null +++ b/latest/_sources/dev-docs/utils/model-io.rst.txt @@ -0,0 +1,7 @@ +Model IO +######## + +.. automodule:: metatensor.models.utils.model_io + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/utils/omegaconf.rst.txt b/latest/_sources/dev-docs/utils/omegaconf.rst.txt new file mode 100644 index 000000000..2514daf17 --- /dev/null +++ b/latest/_sources/dev-docs/utils/omegaconf.rst.txt @@ -0,0 +1,10 @@ +Custom omegaconf functions +========================== + +Resolvers to handle special fields in our configs as well as the expansion/completion of +the dataset section. + +.. automodule:: metatensor.models.utils.omegaconf + :members: + :undoc-members: + :show-inheritance: diff --git a/latest/_sources/dev-docs/utils/readers/index.rst.txt b/latest/_sources/dev-docs/utils/readers/index.rst.txt new file mode 100644 index 000000000..cd7b9a458 --- /dev/null +++ b/latest/_sources/dev-docs/utils/readers/index.rst.txt @@ -0,0 +1,32 @@ +Structure and Target data Readers +================================= + +The main entry point for reading structure and target information are the two reader +functions + +.. autofunction:: metatensor.models.utils.data.read_structures +.. autofunction:: metatensor.models.utils.data.read_targets + +Target type specific readers +---------------------------- + +:func:`metatensor.models.utils.data.read_targets` uses sub-functions to parse supported +target properties like the `energy` or `forces`. Currently we support reading the +following target properties via + +.. autofunction:: metatensor.models.utils.data.read_energy +.. autofunction:: metatensor.models.utils.data.read_forces +.. autofunction:: metatensor.models.utils.data.read_virial +.. autofunction:: metatensor.models.utils.data.read_stress + +File type specific readers +-------------------------- + +Based on the provided `file_format` they chose which sub-reader they use. For details on +these refer to their documentation + +.. toctree:: + :maxdepth: 1 + + structure + targets diff --git a/latest/_sources/dev-docs/utils/readers/structure.rst.txt b/latest/_sources/dev-docs/utils/readers/structure.rst.txt new file mode 100644 index 000000000..bc1b1f6aa --- /dev/null +++ b/latest/_sources/dev-docs/utils/readers/structure.rst.txt @@ -0,0 +1,13 @@ +Structure Readers +################# + +Parsers for obtaining information from structures. All readers return a :py:class:`list` +of :py:class:`metatensor.torch.atomistic.System`. The mapping which reader is used for +which file type is stored in + +.. autodata:: metatensor.models.utils.data.readers.structures.STRUCTURE_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.structures.read_structures_ase diff --git a/latest/_sources/dev-docs/utils/readers/targets.rst.txt b/latest/_sources/dev-docs/utils/readers/targets.rst.txt new file mode 100644 index 000000000..49717f271 --- /dev/null +++ b/latest/_sources/dev-docs/utils/readers/targets.rst.txt @@ -0,0 +1,62 @@ +Target data Readers +################### + +Parsers for obtaining target informations from target files. All readers return a +:py:class:`metatensor.torch.TensorBlock`. Currently we support the following target +properties + +- :ref:`energy` +- :ref:`forces` +- :ref:`stress` +- :ref:`virial` + +The mapping which reader is used for which file type is stored in a dictionary. + +.. _energy: + +Energy +====== + +.. autodata:: metatensor.models.utils.data.readers.targets.ENERGY_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.targets.read_energy_ase + + +.. _forces: + +Forces +====== + +.. autodata:: metatensor.models.utils.data.readers.targets.FORCES_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.targets.read_forces_ase + +.. _stress: + +Stress +====== + +.. autodata:: metatensor.models.utils.data.readers.targets.STRESS_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.targets.read_stress_ase + +.. _virial: + +Virial +====== + +.. autodata:: metatensor.models.utils.data.readers.targets.VIRIAL_READERS + +Implemented Readers +------------------- + +.. autofunction:: metatensor.models.utils.data.readers.targets.read_virial_ase diff --git a/latest/_sources/dev-docs/utils/writers.rst.txt b/latest/_sources/dev-docs/utils/writers.rst.txt new file mode 100644 index 000000000..82695a85a --- /dev/null +++ b/latest/_sources/dev-docs/utils/writers.rst.txt @@ -0,0 +1,17 @@ +Target data Writers +=================== + +The main entry point for writing target information is + +.. autofunction:: metatensor.models.utils.data.writers.write_predictions + + +Based on the provided filename the writer choses which child writer to use. The mapping +which reader is used for which file type is stored in + +.. autodata:: metatensor.models.utils.data.writers.PREDICTIONS_WRITERS + +Implemented Writers +------------------- + +.. autofunction:: metatensor.models.utils.data.writers.write_xyz diff --git a/latest/_sources/getting-started/custom_dataset_conf.rst.txt b/latest/_sources/getting-started/custom_dataset_conf.rst.txt new file mode 100644 index 000000000..35db196a3 --- /dev/null +++ b/latest/_sources/getting-started/custom_dataset_conf.rst.txt @@ -0,0 +1,136 @@ +.. _dataset_conf: + +Customize a Dataset Configuration +================================= + +Overview +-------- +The main task in setting up a training procedure with `metatensor-models` is to provide +files for training, validation, and testing datasets. Our system allows flexibility in +parsing data for training. Mandatory sections in the `options.yaml` file include: + +- ``training_set`` +- ``test_set`` +- ``validation_set`` + +Each section can follow a similar structure, with shorthand methods available to +simplify dataset definitions. + +Minimal Configuration Example +----------------------------- +Below is the simplest form of these sections: + +.. code-block:: yaml + + training_set: "dataset.xyz" + test_set: 0.1 + validation_set: 0.1 + +This configuration parses all information from ``dataset.xyz``, with 20% of the training +set randomly selected for testing and validation (10% each). + +Expanded Configuration Format +----------------------------- +The train script automatically expands the ``training_set`` section into the following +format, which is also valid for initial input: + +.. code-block:: yaml + + training_set: + structures: + read_from: dataset.xyz + file_format: .xyz + unit: null + targets: + energy: + quantity: energy + read_from: dataset.xyz + file_format: .xyz + key: energy + unit: null + forces: + read_from: dataset.xyz + file_format: .xyz + key: forces + stress: + read_from: dataset.xyz + file_format: .xyz + key: stress + virial: false + test_set: 0.1 + validation_set: 0.1 + +Understanding the YAML Block +---------------------------- +The ``training_set`` is divided into sections ``structures`` and ``targets``: + +Structures Section +^^^^^^^^^^^^^^^^^^ +Describes the structure data like positions and cell information. + +:param read_from: The file containing structure data. +:param file_format: The file format, guessed from the suffix if ``null`` or not + provided. +:param unit: The unit of lengths, optional but recommended for simulations. + +A single string in this section automatically expands, using the string as the +``read_from`` parameter. + +.. note:: + + ``metatensor-models`` does not convert units during training or evaluation. Units are + only required if model should be used to run MD simulations. + +Targets Section +^^^^^^^^^^^^^^^ +Allows defining multiple target sections, each with a unique name. + +- Commonly, a section named ``energy`` should be defined, which is essential for MD + simulations. For this section gradients like `forces` and `stress` are enabled by + default. See :ref:`energy-section` for further details on this section. +- For other target sections, all gradients are disabled by default. + +Target section parameters include: + +:param quantity: The target's quantity (e.g., energy, dipole). +:param read_from: The file for target data, defaults to the ``structures.read_from`` + file if not provided. +:param file_format: The file format, guessed from the suffix if not provided. +:param key: The key for reading from the file, defaulting to the target section's name + if not provided. +:param unit: The unit of the target. +:param forces: Gradient sections. See :ref:`gradient-section` for parameters. +:param stress: Gradient sections. See :ref:`gradient-section` for parameters. +:param virial: Gradient sections. See :ref:`gradient-section` for parameters. + +A single string in a target section automatically expands, using the string as the +``read_from`` parameter. + +.. _gradient-section: + +Gradient Section +^^^^^^^^^^^^^^^^ +Each gradient section (like ``forces`` or ``stress``) has similar parameters: + +:param read_from: The file for gradient data. +:param file_format: The file format, guessed from the suffix if not provided. +:param key: The key for reading from the file. + +Sections set to ``true`` or ``on`` automatically expand with default parameters. + +.. _energy-section: + +Energy Section +^^^^^^^^^^^^^^ +The ``energy`` section is mandatory for MD simulations, with forces and stresses enabled +by default. + +- A warning is raised if requisite data is missing, but training proceeds without them. +- Setting a ``virial`` section automatically disables the ``stress`` section in the + ``energy`` target. + +.. note:: + + Unknown keys are ignored and not deleted in all sections during dataset parsing. + +In the next tutorials we show how to override the default parameters of an architecture. diff --git a/latest/_sources/getting-started/index.rst.txt b/latest/_sources/getting-started/index.rst.txt new file mode 100644 index 000000000..49ec67d18 --- /dev/null +++ b/latest/_sources/getting-started/index.rst.txt @@ -0,0 +1,12 @@ +Getting started +=============== + +This sections describes how to install the package, and its most basic commands. + +.. toctree:: + :maxdepth: 1 + + installation + usage + custom_dataset_conf + override diff --git a/latest/_sources/getting-started/installation.rst.txt b/latest/_sources/getting-started/installation.rst.txt new file mode 100644 index 000000000..95332be0c --- /dev/null +++ b/latest/_sources/getting-started/installation.rst.txt @@ -0,0 +1,5 @@ +.. _label_installation: + +.. include:: ../../../README.rst + :start-after: marker-installation + :end-before: marker-issues diff --git a/latest/_sources/getting-started/override.rst.txt b/latest/_sources/getting-started/override.rst.txt new file mode 100644 index 000000000..5167851dd --- /dev/null +++ b/latest/_sources/getting-started/override.rst.txt @@ -0,0 +1,80 @@ +Override Architecture's Default Parameters +========================================== + +In our initial tutorial, we used default parameters to train a model employing the +SOAP-BPNN architecture, as shown in the following config: + +.. literalinclude:: ../../static/options.yaml + :language: yaml + +While default parameters often serve as a good starting point, depending on your +training target and dataset, it might be necessary to adjust the architecture's +parameters. + +First, familiarize yourself with the specific parameters of the architecture you intend +to use. We provide a list of all architectures and their parameters in the +:ref:`available-architectures` section. For example, the parameters of the SOAP-BPNN +models are detailed at :ref:`architecture-soap-bpnn`. + +Modifying Parameters (yaml) +--------------------------- + +As an example, let's increase the number of epochs (``num_epochs``) and the ``cutoff`` +radius of the SOAP descriptor. To do this, create a new section in the ``options.yaml`` +named ``architecture``. Within this section, you can override the architecture's +hyperparameters. The adjustments for ``num_epochs`` and ``cutoff`` look like this: + +.. code-block:: yaml + + defaults: + - architecture: soap_bpnn + - _self_ + + architecture: + model: + soap: + cutoff: 7.0 + training: + num_epochs: 200 + + training_set: + structures: "qm9_reduced_100.xyz" + targets: + energy: + key: "U0" + + test_set: 0.1 + validation_set: 0.1 + +Modifying Parameters (Command Line Overrides) +--------------------------------------------- + +For quick adjustments, command-line overrides are also an option. The changes above can +be achieved by: + +.. code-block:: bash + + metatensor-models train options.yaml \ + -y architecture.model.soap.cutoff=7.0 architecture.training.num_epochs=200 + +Here, the ``-y`` flag is used to parse the override flags. More details on override +syntax are available at https://hydra.cc/docs/advanced/override_grammar/basic/. + +.. note:: + + For your reference and reproducibility purposes `metatensor-models` always writes the + fully expanded options to the ``.hydra`` subdirectory inside the ``output`` + directory of your current training run. + + +Understanding the Defaults Section +---------------------------------- + +You may have noticed the ``defaults`` section at the beginning of each file. This list +dictates which defaults should be loaded and how to compose the final config object and +is conventionally the first item in the config. + +Append ``_self_`` to the end of the list to have your primary config override values +from the Defaults List. If you do not add a ``_self_`` entry still your primary config +Overrides values from the Defaults List, but Hydra will throw a warning. For more +background, visit https://hydra.cc/docs/tutorials/basic/your_first_app/defaults/. diff --git a/latest/_sources/getting-started/usage.rst.txt b/latest/_sources/getting-started/usage.rst.txt new file mode 100644 index 000000000..daa9298c7 --- /dev/null +++ b/latest/_sources/getting-started/usage.rst.txt @@ -0,0 +1,87 @@ +Basic Usage +=========== + +`metatensor-models` is designed for an direct usage from the the command line (cli). The +general help of `metatensor-models` can be accessed using + +.. code-block:: bash + + metatensor-models --help + +We now demonstrate how to `train` and `evaluate` a model from the command line. For this +example we use the :ref:`architecture-soap-bpnn` architecture and a subset of the `QM9 +dataset `_. You can obtain the reduced dataset +from our :download:`website <../../static/qm9_reduced_100.xyz>`. + +Training +######## + +To train models, `metatensor-models` uses the hydra framework. Hydra is a framework +developed by Facebook AI for elegantly configuring complex applications. It's primarily +used for managing command-line arguments in Python applications, allowing for a +structured and dynamic approach to configuration. It allows to dynamical composition and +override of config files and the command line and has powerful tools to create multiple +training runs with a single command. We will not explain here how to use hydra in +detail, as we only use a few functions ins this example but rather refer to their good +package documentation. + +The sub-command to start a model training is + +.. code-block:: bash + + metatensor-models train + +To train a model you have to define your options. This includes the specific +architecture you want to use and the data including the training structures and target +values + +The default model and training hyperparameter for each model are listed in their +corresponding documentation page. We will use these minimal options to run an example +training using the default hyperparameters of an SOAP BPNN model + +.. literalinclude:: ../../static/options.yaml + :language: yaml + +For each training run a new output directory in the format +``output/YYYY-MM-DD/HH-MM-SS`` based on the current date and time is created. By +default, this output directory is used to store Hydra's output for the run +(configuration, Logs etc). You can `override +`_ this +behavior in the options file. To start the training create an ``options.yaml`` file in +the current directory and type + +.. literalinclude:: ../../../examples/usage.sh + :language: bash + :lines: 3-8 + + +Evaluation +########## + +The sub-command to evaluate an already trained model is + +.. code-block:: bash + + metatensor-models eval + +.. literalinclude:: ../../../examples/usage.sh + :language: bash + :lines: 9-25 + + +Exporting +######### + +Exporting a model required if you want to use it in other frameworks, especially in +molecular dynamics simulations. The sub-command to export a model is + +.. code-block:: bash + + metatensor-models export + +.. literalinclude:: ../../../examples/usage.sh + :language: bash + :lines: 25- + +In the next tutorials we show how adjust the dataset section of ``options.yaml`` file +to use it for your own datasets. diff --git a/latest/_sources/index.rst.txt b/latest/_sources/index.rst.txt new file mode 100644 index 000000000..2d2178d3b --- /dev/null +++ b/latest/_sources/index.rst.txt @@ -0,0 +1,16 @@ +Welcome to metatensor-models's documentation! +============================================= + +This is a collection of atomistic models interfaced with ``metatensor``. + +.. include:: ../../README.rst + :start-after: marker-architectures + :end-before: marker-documentation + +.. toctree:: + :maxdepth: 1 + :hidden: + + getting-started/index + architectures/index + dev-docs/index diff --git a/latest/_static/basic.css b/latest/_static/basic.css new file mode 100644 index 000000000..30fee9d0f --- /dev/null +++ b/latest/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/latest/_static/debug.css b/latest/_static/debug.css new file mode 100644 index 000000000..74d4aec33 --- /dev/null +++ b/latest/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/latest/_static/doctools.js b/latest/_static/doctools.js new file mode 100644 index 000000000..d06a71d75 --- /dev/null +++ b/latest/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/latest/_static/documentation_options.js b/latest/_static/documentation_options.js new file mode 100644 index 000000000..5251cbfac --- /dev/null +++ b/latest/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '2023.11.29', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/latest/_static/file.png b/latest/_static/file.png new file mode 100644 index 000000000..a858a410e Binary files /dev/null and b/latest/_static/file.png differ diff --git a/latest/_static/language_data.js b/latest/_static/language_data.js new file mode 100644 index 000000000..250f5665f --- /dev/null +++ b/latest/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/latest/_static/minus.png b/latest/_static/minus.png new file mode 100644 index 000000000..d96755fda Binary files /dev/null and b/latest/_static/minus.png differ diff --git a/latest/_static/options.yaml b/latest/_static/options.yaml new file mode 100644 index 000000000..035b2ab49 --- /dev/null +++ b/latest/_static/options.yaml @@ -0,0 +1,17 @@ +defaults: + - architecture: soap_bpnn # architecture used to train the model + - _self_ + +# Last position of the _self_ this entry defines that default options will be +# overwritten by this config. + +# Mandatory section defining the parameters for structure and target data of the trainin +# set +training_set: + structures: "qm9_reduced_100.xyz" # file where the positions are stored + targets: + energy: + key: "U0" # name of the target value + +test_set: 0.1 # 10 % of the training_set are randomly split and taken for test set +validation_set: 0.1 # 10 % of the training_set are randomly split and for validation diff --git a/latest/_static/plus.png b/latest/_static/plus.png new file mode 100644 index 000000000..7107cec93 Binary files /dev/null and b/latest/_static/plus.png differ diff --git a/latest/_static/pygments.css b/latest/_static/pygments.css new file mode 100644 index 000000000..c2e07c71e --- /dev/null +++ b/latest/_static/pygments.css @@ -0,0 +1,258 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 } +body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #d22323 } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #d22323 } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #d22323 } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 } +body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #d22323 } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #d22323 } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #d22323 } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/latest/_static/qm9_reduced_100.xyz b/latest/_static/qm9_reduced_100.xyz new file mode 100644 index 000000000..14b2a0416 --- /dev/null +++ b/latest/_static/qm9_reduced_100.xyz @@ -0,0 +1,1201 @@ +5 +Properties=species:S:1:pos:R:3 A=157.7118 B=157.70997 C=157.70699 mu=0 alpha=13.21 epsHOMO=-0.3877 epsLUMO=0.1171 epsgap=0.5048 =35.3641 zpve=0.044749 U0=-40.47893 U=-40.476062 H=-40.475117 G=-40.498597 Cv=6.469 pbc="F F F" +C -0.01269814 1.08580416 0.00800100 +H 0.00215042 -0.00603132 0.00197612 +H 1.01173084 1.46375116 0.00027657 +H -0.54081507 1.44752661 -0.87664372 +H -0.52381363 1.43793264 0.90639729 +4 +Properties=species:S:1:pos:R:3 A=293.60975 B=293.54111 C=191.39397 mu=1.6256 alpha=9.46 epsHOMO=-0.257 epsLUMO=0.0829 epsgap=0.3399 =26.1563 zpve=0.034358 U0=-56.525887 U=-56.523026 H=-56.522082 G=-56.544961 Cv=6.316 pbc="F F F" +N -0.04042605 1.02410775 0.06256380 +H 0.01725746 0.01254521 -0.02737716 +H 0.91578937 1.35874519 -0.02875776 +H -0.52027774 1.34353213 -0.77554261 +3 +Properties=species:S:1:pos:R:3 A=799.58812 B=437.90386 C=282.94545 mu=1.8511 alpha=6.31 epsHOMO=-0.2928 epsLUMO=0.0687 epsgap=0.3615 =19.0002 zpve=0.021375 U0=-76.404702 U=-76.401867 H=-76.400922 G=-76.422349 Cv=6.002 pbc="F F F" +O -0.03436050 0.97753957 0.00760159 +H 0.06476649 0.02057220 0.00153463 +H 0.87179037 1.30079240 0.00069313 +4 +Properties=species:S:1:pos:R:3 A=0 B=35.6100361 C=35.6100361 mu=0 alpha=16.28 epsHOMO=-0.2845 epsLUMO=0.0506 epsgap=0.3351 =59.5248 zpve=0.026841 U0=-77.308427 U=-77.305527 H=-77.304583 G=-77.327429 Cv=8.574 pbc="F F F" +C 0.59953949 0.00000000 1.00000000 +C -0.59953949 0.00000000 1.00000000 +H -1.66163859 0.00000000 1.00000000 +H 1.66163859 0.00000000 1.00000000 +3 +Properties=species:S:1:pos:R:3 A=0 B=44.593883 C=44.593883 mu=2.8937 alpha=12.99 epsHOMO=-0.3604 epsLUMO=0.0191 epsgap=0.3796 =48.7476 zpve=0.016601 U0=-93.411888 U=-93.40937 H=-93.408425 G=-93.431246 Cv=6.278 pbc="F F F" +C -0.01332393 1.13246572 0.00827589 +N 0.00231072 -0.01915859 0.00192873 +H -0.02780270 2.19894930 0.01415379 +4 +Properties=species:S:1:pos:R:3 A=285.48839 B=38.9823 C=34.29892 mu=2.1089 alpha=14.18 epsHOMO=-0.267 epsLUMO=-0.0406 epsgap=0.2263 =59.9891 zpve=0.026603 U0=-114.483613 U=-114.480746 H=-114.479802 G=-114.505268 Cv=6.413 pbc="F F F" +C -0.01397770 1.18021143 0.00775250 +O 0.00231399 -0.01966366 0.00216107 +H 0.91496029 1.78951117 0.00395656 +H -0.95910972 1.76401798 0.01718284 +8 +Properties=species:S:1:pos:R:3 A=80.46225 B=19.90649 C=19.90633 mu=0 alpha=23.95 epsHOMO=-0.3385 epsLUMO=0.1041 epsgap=0.4426 =109.5031 zpve=0.074542 U0=-79.764152 U=-79.760666 H=-79.759722 G=-79.787269 Cv=10.098 pbc="F F F" +C -0.01870400 1.52558201 0.01043281 +C 0.00210374 -0.00388191 0.00199882 +H 0.99487275 1.93974324 0.00294120 +H -0.54207611 1.92361063 -0.86511735 +H -0.52524112 1.91417308 0.90002399 +H 0.52548654 -0.40190784 0.87754395 +H -1.01147651 -0.41803380 0.00950849 +H 0.50862619 -0.39247040 -0.88760117 +6 +Properties=species:S:1:pos:R:3 A=127.83497 B=24.85872 C=23.97872 mu=1.5258 alpha=16.97 epsHOMO=-0.2653 epsLUMO=0.0784 epsgap=0.3437 =83.794 zpve=0.051208 U0=-115.679136 U=-115.675816 H=-115.674872 G=-115.701876 Cv=8.751 pbc="F F F" +C -0.00828817 1.39046978 -0.00560069 +O -0.00797038 -0.02504537 0.02030606 +H 1.00658338 1.81556366 0.00348335 +H -0.54657475 1.79916975 -0.87390126 +H -0.52288871 1.72555240 0.89907326 +H 0.44142019 -0.33354425 -0.77152059 +7 +Properties=species:S:1:pos:R:3 A=160.28041 B=8.59323 C=8.59321 mu=0.7156 alpha=28.78 epsHOMO=-0.2609 epsLUMO=0.0613 epsgap=0.3222 =177.1963 zpve=0.05541 U0=-116.609549 U=-116.60555 H=-116.604606 G=-116.633775 Cv=12.482 pbc="F F F" +C -0.01782102 1.46435788 0.01009397 +C 0.00208816 0.00950777 0.00201200 +C 0.01834085 -1.19180518 -0.00450508 +H 0.99782210 1.87425349 0.00260606 +H -0.54220434 1.85801178 -0.86721192 +H -0.52533306 1.84834356 0.90148138 +H 0.03231658 -2.25314823 -0.01025999 +6 +Properties=species:S:1:pos:R:3 A=159.03567 B=9.22327 C=9.22324 mu=3.8266 alpha=24.45 epsHOMO=-0.3264 epsLUMO=0.0376 epsgap=0.364 =160.7223 zpve=0.045286 U0=-132.71815 U=-132.714563 H=-132.713619 G=-132.742149 Cv=10.287 pbc="F F F" +C -0.01788629 1.46712787 0.01011311 +C 0.00173819 0.01035260 0.00207588 +N 0.01765235 -1.14452926 -0.00420445 +H 1.00202941 1.86089927 0.00245401 +H -0.54398848 1.84479901 -0.87075460 +H -0.52707783 1.83518166 0.90486329 +7 +Properties=species:S:1:pos:R:3 A=57.22434 B=10.11122 C=9.07368 mu=2.5682 alpha=25.11 epsHOMO=-0.254 epsLUMO=-0.0198 epsgap=0.2342 =166.9728 zpve=0.055355 U0=-153.787612 U=-153.783728 H=-153.782784 G=-153.812518 Cv=11.219 pbc="F F F" +C -0.00294482 1.50991366 0.00867278 +C 0.02608284 0.00327563 -0.03745912 +O 0.94228801 -0.65507035 -0.45682576 +H 0.92278802 1.92634242 -0.39146557 +H -0.86201540 1.87852481 -0.56479538 +H -0.15050638 1.84393383 1.04289100 +H -0.89443009 -0.48643408 0.35774865 +6 +Properties=species:S:1:pos:R:3 A=73.8472 B=11.34793 C=9.83639 mu=3.7286 alpha=21.57 epsHOMO=-0.2543 epsLUMO=0.0302 epsgap=0.2845 =145.3078 zpve=0.045279 U0=-169.860788 U=-169.856903 H=-169.855958 G=-169.885594 Cv=10.89 pbc="F F F" +N -0.02589986 1.34614561 0.00889391 +C 0.04646728 -0.01174341 0.00120425 +O 1.07183520 -0.65258782 -0.01113313 +H 0.82535497 1.88504948 0.00373769 +H -0.90837680 1.82679638 0.01891992 +H -0.96144100 -0.47500376 0.00807391 +11 +Properties=species:S:1:pos:R:3 A=29.45018 B=8.37701 C=7.42076 mu=0.0597 alpha=34.75 epsHOMO=-0.323 epsLUMO=0.0949 epsgap=0.4179 =227.1361 zpve=0.103182 U0=-119.052475 U=-119.047927 H=-119.046983 G=-119.078157 Cv=14.84 pbc="F F F" +C -0.03113825 1.54081582 0.03192126 +C 0.01215347 0.01092235 -0.01603259 +C 0.72169129 -0.52583353 -1.26230570 +H 0.97955987 1.96459116 0.03098367 +H -0.55840223 1.94831192 -0.83816075 +H -0.54252252 1.90153531 0.93005671 +H 0.51522791 -0.36840234 0.88231134 +H -1.01070641 -0.38456999 0.02051783 +H 1.75851210 -0.17376585 -1.30871516 +H 0.74087192 -1.62024959 -1.27516511 +H 0.22023351 -0.19051179 -2.17729020 +9 +Properties=species:S:1:pos:R:3 A=35.09545 B=9.3686 C=8.1497 mu=1.4131 alpha=27.87 epsHOMO=-0.2619 epsLUMO=0.0798 epsgap=0.3417 =193.1659 zpve=0.079754 U0=-154.972731 U=-154.968412 H=-154.967467 G=-154.998148 Cv=13.546 pbc="F F F" +C -0.00860504 1.50203829 -0.00681217 +C 0.01099310 -0.01764877 -0.01377035 +O 0.68088841 -0.44041803 -1.19313210 +H 1.01153334 1.89662030 -0.01920155 +H -0.53159862 1.88076109 -0.88974659 +H -0.51674572 1.87611771 0.88710739 +H 0.52377121 -0.38912295 0.88824082 +H -1.02027544 -0.40507261 0.01690670 +H 0.69529573 -1.40179568 -1.20148495 +9 +Properties=species:S:1:pos:R:3 A=39.37691 B=10.04033 C=8.90353 mu=1.1502 alpha=28.13 epsHOMO=-0.2525 epsLUMO=0.091 epsgap=0.3435 =187.1015 zpve=0.079534 U0=-154.960361 U=-154.956045 H=-154.9551 G=-154.985747 Cv=12.934 pbc="F F F" +C -0.01482147 1.39241234 0.00567104 +O -0.00471537 -0.01360660 0.01459658 +C 0.63794893 -0.55329676 -1.11358232 +H 1.00528358 1.81015807 0.00465631 +H -0.54689560 1.79343530 -0.87251051 +H -0.53002895 1.72291969 0.91101696 +H 0.13993792 -0.25599333 -2.05098375 +H 1.69265275 -0.23868382 -1.17477743 +H 0.59959435 -1.64180161 -1.02407616 +9 +Properties=species:S:1:pos:R:3 A=20.15852 B=20.15302 C=12.5891 mu=0.0005 alpha=30.82 epsHOMO=-0.2888 epsLUMO=0.1042 epsgap=0.393 =155.8145 zpve=0.081231 U0=-117.824798 U=-117.821426 H=-117.820482 G=-117.849087 Cv=11.041 pbc="F F F" +C -0.01193280 1.51433198 0.01031700 +C 1.30299118 0.77886562 -0.00617842 +C 0.00867174 0.00767042 0.00201032 +H -0.30541464 2.01702117 0.92533239 +H -0.32275498 2.02680156 -0.89347839 +H 1.88493396 0.79145020 -0.92119393 +H 1.90226631 0.78165391 0.89766373 +H -0.27088043 -0.51289125 0.91137474 +H -0.28821983 -0.50310409 -0.90740824 +7 +Properties=species:S:1:pos:R:3 A=25.77385 B=22.12109 C=14.18066 mu=1.7675 alpha=24.04 epsHOMO=-0.2682 epsLUMO=0.1042 epsgap=0.3724 =129.891 zpve=0.057289 U0=-153.742562 U=-153.73941 H=-153.738466 G=-153.766642 Cv=9.176 pbc="F F F" +C 0.01537720 1.41764380 0.00956287 +C 1.26478161 0.64923984 -0.00655044 +O -0.00024018 -0.00771006 0.00204055 +H -0.31763326 1.88586598 0.93475751 +H -0.33527583 1.89576673 -0.90397578 +H 1.83246682 0.56256848 -0.93193290 +H 1.85008258 0.55267938 0.90680147 +10 +Properties=species:S:1:pos:R:3 A=10.12193 B=8.49011 C=4.89615 mu=2.7362 alpha=35.53 epsHOMO=-0.2431 epsLUMO=-0.0087 epsgap=0.2344 =292.4367 zpve=0.083382 U0=-193.08834 U=-193.082969 H=-193.082024 G=-193.116476 Cv=16.893 pbc="F F F" +C -0.00310189 1.48050328 -0.17259867 +C -0.04527202 -0.02887059 0.00139493 +C 1.29705800 -0.72194415 0.16889042 +O -1.08643172 -0.64273343 0.00630393 +H 0.59403529 1.74668579 -1.05225043 +H -1.01540407 1.87034023 -0.28382265 +H 0.48099600 1.95070605 0.69099376 +H 1.82512144 -0.32470731 1.04328658 +H 1.14892507 -1.79597689 0.28554393 +H 1.93682635 -0.52949692 -0.69995403 +9 +Properties=species:S:1:pos:R:3 A=10.78886 B=9.27509 C=5.14977 mu=3.6367 alpha=31.83 epsHOMO=-0.2436 epsLUMO=0.0347 epsgap=0.2783 =267.6148 zpve=0.07319 U0=-209.159302 U=-209.15402 H=-209.153076 G=-209.187468 Cv=16.561 pbc="F F F" +C 0.00679889 1.49969736 -0.02567030 +C -0.02740385 -0.01752051 -0.14894811 +N 1.17826667 -0.63324298 0.05691721 +O -1.03721965 -0.63980649 -0.40727572 +H 0.91390280 1.92923755 -0.46100067 +H -0.87080896 1.91124186 -0.52345176 +H -0.02826124 1.78517271 1.03149125 +H 1.98405139 -0.13175861 0.38674906 +H 1.19049421 -1.63919563 0.10006209 +8 +Properties=species:S:1:pos:R:3 A=11.1475 B=10.36388 C=5.42091 mu=3.4869 alpha=28.07 epsHOMO=-0.2495 epsLUMO=0.0556 epsgap=0.3051 =244.2308 zpve=0.063824 U0=-225.221461 U=-225.217075 H=-225.216131 G=-225.247724 Cv=15.292 pbc="F F F" +N 0.03605270 1.36077873 -0.12416403 +C -0.02591138 -0.02076560 0.00200645 +N 1.21968479 -0.62334220 0.11963222 +O -1.06822866 -0.64174597 0.00865573 +H 0.80749439 1.83455148 0.32144915 +H -0.85825775 1.80373500 0.02243770 +H 1.99927148 -0.17303054 -0.33602496 +H 1.18204327 -1.62147901 -0.02109234 +14 +Properties=species:S:1:pos:R:3 A=7.75166 B=7.74847 C=4.48668 mu=0.0897 alpha=45.46 epsHOMO=-0.3167 epsLUMO=0.0843 epsgap=0.401 =355.0621 zpve=0.131146 U0=-158.342346 U=-158.336603 H=-158.335658 G=-158.370016 Cv=20.273 pbc="F F F" +C -0.03215888 1.54021598 0.01074456 +C 0.03381741 0.00745852 0.00180716 +C 0.71375572 -0.50856404 -1.27296949 +C 0.73848999 -0.52220886 1.25750907 +H 0.97522736 1.97414341 0.00528362 +H -0.56196769 1.92232326 -0.86835418 +H -0.54817239 1.91268414 0.90208039 +H -0.99752525 -0.37310578 0.00977297 +H 1.75070021 -0.15586784 -1.33269631 +H 0.73446691 -1.60328288 -1.29939696 +H 0.19367011 -0.16085589 -2.17195508 +H 0.23611990 -0.18382017 2.17005260 +H 0.75964083 -1.61713153 1.27226101 +H 1.77635866 -0.16985318 1.30053019 +12 +Properties=species:S:1:pos:R:3 A=8.67553 B=8.00568 C=4.75542 mu=1.4259 alpha=38.58 epsHOMO=-0.2612 epsLUMO=0.074 epsgap=0.3351 =318.3721 zpve=0.107673 U0=-194.267232 U=-194.261748 H=-194.260804 G=-194.294663 Cv=19.052 pbc="F F F" +C -0.03315871 1.54782566 -0.00438815 +C -0.01108534 0.01859095 0.01676117 +C 0.70938384 -0.53596711 1.23978444 +O -1.33219841 -0.51712554 0.05236057 +H 0.98215692 1.95715900 -0.03182225 +H -0.56388100 1.92087623 -0.88845865 +H -0.54082548 1.93340945 0.88575489 +H 0.51042122 -0.33767241 -0.88819176 +H 0.22240492 -0.18785860 2.15650245 +H 0.68242024 -1.62887638 1.23305141 +H 1.75434301 -0.21246950 1.25524188 +H -1.81818681 -0.15577435 -0.69553962 +6 +Properties=species:S:1:pos:R:3 A=0 B=4.4259726 C=4.4259726 mu=0 alpha=38.52 epsHOMO=-0.2599 epsLUMO=-0.0214 epsgap=0.2386 =278.6264 zpve=0.037354 U0=-153.459846 U=-153.455442 H=-153.454498 G=-153.482621 Cv=15.312 pbc="F F F" +C 0.68098021 0.00000000 0.00000000 +C -0.68098021 0.00000000 0.00000000 +C -1.88766603 0.00000000 0.00000000 +C 1.88766603 0.00000000 0.00000000 +H -2.94960000 0.00000000 0.00000000 +H 2.94960000 0.00000000 0.00000000 +5 +Properties=species:S:1:pos:R:3 A=0 B=4.5793222 C=4.5793222 mu=3.792 alpha=32.66 epsHOMO=-0.3102 epsLUMO=-0.0543 epsgap=0.2559 =260.1896 zpve=0.027259 U0=-169.557758 U=-169.553764 H=-169.55282 G=-169.581024 Cv=12.93 pbc="F F F" +C 0.01510390 0.00000000 1.00000000 +C 1.38233149 0.00000000 1.00000000 +C -1.18862525 0.00000000 1.00000000 +H -2.25177201 0.00000000 1.00000000 +N 2.54296187 0.00000000 1.00000000 +4 +Properties=species:S:1:pos:R:3 A=0 B=4.73269 C=4.73269 mu=0.0023 alpha=27.7 epsHOMO=-0.3696 epsLUMO=-0.0926 epsgap=0.277 =242.9308 zpve=0.015951 U0=-185.648533 U=-185.644825 H=-185.64388 G=-185.667652 Cv=10.398 pbc="F F F" +N 0.01745734 -1.16134217 -0.00415342 +C 0.00253212 -0.00344278 0.00179939 +C -0.01611419 1.37220987 0.00934873 +N -0.03264302 2.53008276 0.01609090 +6 +Properties=species:S:1:pos:R:3 A=68.5171 B=4.8345 C=4.51586 mu=2.7824 alpha=31.14 epsHOMO=-0.2777 epsLUMO=-0.0735 epsgap=0.2042 =268.3921 zpve=0.037208 U0=-190.624631 U=-190.620363 H=-190.619419 G=-190.650543 Cv=13.049 pbc="F F F" +O -0.06776120 -0.04233838 0.00282489 +C -0.00562945 1.16382879 0.00743862 +C 1.22985272 1.91339997 0.00028781 +C 2.23625322 2.57430970 -0.00529277 +H -0.91670701 1.79467546 0.01781352 +H 3.13429662 3.14370267 -0.01037656 +5 +Properties=species:S:1:pos:R:3 A=67.88408 B=5.00823 C=4.66413 mu=2.3112 alpha=26.25 epsHOMO=-0.3166 epsLUMO=-0.11 epsgap=0.2066 =251.0007 zpve=0.02654 U0=-206.721858 U=-206.717875 H=-206.716931 G=-206.747625 Cv=11.329 pbc="F F F" +O -0.04055978 -0.03799144 0.00266513 +C -0.01768870 1.16193251 0.00746008 +C 1.23315534 1.93381336 0.00043371 +N 2.19857378 2.57055097 -0.00483320 +H -0.92627534 1.78959196 0.01764859 +6 +Properties=species:S:1:pos:R:3 A=56.25048 B=4.77441 C=4.40088 mu=0.002 alpha=26.12 epsHOMO=-0.2668 epsLUMO=-0.1113 epsgap=0.1555 =266.8164 zpve=0.036943 U0=-227.798785 U=-227.79457 H=-227.793626 G=-227.825074 Cv=12.147 pbc="F F F" +O 0.00337122 -0.03146586 0.00157206 +C -0.01713174 1.17081409 0.00676444 +C 1.26555783 1.99719410 -0.00007703 +O 1.24507069 3.19946589 0.00681275 +H -0.94690483 1.77678142 0.01852668 +H 2.19534410 1.39121374 -0.01006739 +10 +Properties=species:S:1:pos:R:3 A=80.28766 B=3.3688 C=3.3688 mu=0 alpha=42.32 epsHOMO=-0.2412 epsLUMO=0.0684 epsgap=0.3096 =400.2236 zpve=0.083896 U0=-155.908941 U=-155.90318 H=-155.902236 G=-155.937641 Cv=17.447 pbc="F F F" +C -0.01787959 1.46676893 0.01011180 +C 0.00186644 0.01072913 0.00211109 +C 0.01819704 -1.19272861 -0.00450723 +C 0.03795170 -2.64876793 -0.01251193 +H 0.86460312 1.87589979 0.51479719 +H -0.03217624 1.87210581 -1.00791002 +H -0.90233115 1.85185524 0.53003953 +H -0.83477011 -3.06339007 0.50451436 +H 0.03276422 -3.04315564 -1.03491223 +H 0.93213486 -3.03931642 0.48626606 +10 +Properties=species:S:1:pos:R:3 A=27.39459 B=4.53005 C=4.08342 mu=0.7067 alpha=40.09 epsHOMO=-0.2592 epsLUMO=0.0566 epsgap=0.3157 =333.9589 zpve=0.084338 U0=-155.897345 U=-155.892291 H=-155.891347 G=-155.924226 Cv=17.13 pbc="F F F" +C -0.03095840 1.54775025 0.03167945 +C 0.01485375 0.00962471 -0.02082154 +C 0.69099073 -0.49954575 -1.20857624 +C 1.25222275 -0.89514467 -2.19527879 +H 0.97899300 1.96621609 0.03373834 +H -0.56082354 1.95002902 -0.83580745 +H -0.54576708 1.88225519 0.93709062 +H 0.51920135 -0.37425398 0.87496224 +H -1.00644802 -0.39030838 0.01340632 +H 1.74594541 -1.25604187 -3.06299415 +9 +Properties=species:S:1:pos:R:3 A=28.0016 B=4.67752 C=4.21765 mu=3.9233 alpha=35.38 epsHOMO=-0.3213 epsLUMO=0.034 epsgap=0.3553 =314.5335 zpve=0.07419 U0=-172.006141 U=-172.001467 H=-172.000523 G=-172.032826 Cv=14.988 pbc="F F F" +C -0.02522005 1.54773054 0.02133370 +C 0.01183939 0.00999278 -0.01556702 +C 0.68915114 -0.50836846 -1.20331488 +N 1.22565733 -0.90360846 -2.14737482 +H 0.98571620 1.96212990 0.02370153 +H -0.55522192 1.94599662 -0.84711771 +H -0.53962556 1.88294354 0.92536604 +H 0.52481910 -0.38226048 0.86933355 +H -1.00453542 -0.39832109 0.00530071 +8 +Properties=species:S:1:pos:R:3 A=32.19893 B=4.76299 C=4.30696 mu=4.4361 alpha=31.81 epsHOMO=-0.2683 epsLUMO=0.0173 epsgap=0.2855 =295.6635 zpve=0.063305 U0=-188.042067 U=-188.037478 H=-188.036534 G=-188.06863 Cv=14.488 pbc="F F F" +N -0.03608099 1.48762533 0.03678072 +C -0.01039471 0.02517605 -0.01506608 +C -1.37180956 -0.52108920 0.02739272 +N -2.44026695 -0.95956444 0.03370519 +H 0.91729752 1.83547547 0.05202682 +H -0.47162178 1.85677205 -0.80275569 +H 0.48946161 -0.40880401 -0.89715168 +H 0.52827150 -0.34533338 0.86469547 +8 +Properties=species:S:1:pos:R:3 A=35.11615 B=4.66117 C=4.22354 mu=1.7211 alpha=33.1 epsHOMO=-0.2595 epsLUMO=0.0277 epsgap=0.2872 =300.0993 zpve=0.060632 U0=-191.810916 U=-191.806025 H=-191.805081 G=-191.837634 Cv=15.855 pbc="F F F" +O -0.02013197 1.45738137 0.01010195 +C 0.00168478 0.03579980 0.00224736 +C -1.36366691 -0.47481101 0.01255056 +C -2.47902835 -0.91970202 0.02082451 +H 0.89446911 1.75736553 0.00327363 +H 0.51979028 -0.35175413 -0.88980302 +H 0.53670458 -0.36127661 0.88000894 +H -3.46773502 -1.30737009 0.02818120 +7 +Properties=species:S:1:pos:R:3 A=35.93172 B=4.83443 C=4.37827 mu=4.6788 alpha=28.56 epsHOMO=-0.3018 epsLUMO=0.0022 epsgap=0.3039 =280.6659 zpve=0.050262 U0=-207.916786 U=-207.912215 H=-207.911271 G=-207.943384 Cv=13.845 pbc="F F F" +O -0.03738221 1.44547841 0.01010769 +C 0.01292906 0.03441661 0.00209165 +C -1.35747452 -0.48874523 0.01239738 +N -2.42135277 -0.93685184 0.02016053 +H 0.86898057 1.76972949 0.00417577 +H 0.51692713 -0.36329790 -0.89215814 +H 0.53387616 -0.37278749 0.88223921 +10 +Properties=species:S:1:pos:R:3 A=26.14564 B=4.2893 C=4.12773 mu=2.6741 alpha=35.83 epsHOMO=-0.25 epsLUMO=-0.0205 epsgap=0.2295 =333.3276 zpve=0.084175 U0=-193.075202 U=-193.070116 H=-193.069171 G=-193.102798 Cv=15.954 pbc="F F F" +C 0.16879340 1.52513042 -0.15747056 +C -0.18737625 0.06194763 0.14679374 +C 0.50917645 -0.43996215 1.39125850 +O 1.18191079 -1.43565585 1.45816384 +H 1.23126511 1.63137254 -0.39632693 +H -0.40744668 1.89431681 -1.00969246 +H -0.04931034 2.17266260 0.69857432 +H -1.26905160 -0.01668067 0.32854433 +H 0.06279062 -0.60250479 -0.68474036 +H 0.35384841 0.20663370 2.28871052 +9 +Properties=species:S:1:pos:R:3 A=19.98749 B=6.11589 C=4.82584 mu=3.7071 alpha=32.78 epsHOMO=-0.2516 epsLUMO=0.0335 epsgap=0.2851 =279.7863 zpve=0.074166 U0=-209.144909 U=-209.139976 H=-209.139032 G=-209.172305 Cv=15.058 pbc="F F F" +C 0.01474916 1.47888256 -0.03509326 +N 0.18708077 0.03831317 -0.02906851 +C 0.45703661 -0.66858895 1.10069001 +O 0.58457996 -0.19876202 2.21119705 +H 0.76025289 1.96736104 -0.67198126 +H -0.98462423 1.75984483 -0.38485103 +H 0.14269849 1.82387718 0.99149397 +H 0.10386349 -0.46937726 -0.89461379 +H 0.55047568 -1.75253452 0.88868242 +8 +Properties=species:S:1:pos:R:3 A=48.62351 B=4.67298 C=4.38187 mu=3.92 alpha=29.47 epsHOMO=-0.2814 epsLUMO=0.0074 epsgap=0.2888 =293.917 zpve=0.061327 U0=-229.013797 U=-229.009003 H=-229.008059 G=-229.041086 Cv=13.885 pbc="F F F" +C 0.10653781 1.43512049 0.03336100 +O 0.42686564 0.04716929 0.09309945 +C 0.50714862 -0.63652665 -1.06318297 +O 0.76927014 -1.79955017 -1.11010475 +H 0.92349251 2.00385139 0.48465728 +H -0.03757815 1.76927183 -1.00057425 +H -0.81269569 1.60801916 0.59873287 +H 0.30458460 -0.00231902 -1.94965553 +8 +Properties=species:S:1:pos:R:3 A=36.49282 B=4.31175 C=4.04493 mu=1.7341 alpha=28.53 epsHOMO=-0.2537 epsLUMO=-0.0341 epsgap=0.2196 =303.8129 zpve=0.060508 U0=-228.992613 U=-228.987769 H=-228.986825 G=-229.019918 Cv=14.78 pbc="F F F" +O 0.19375856 1.37170995 0.31398297 +C 0.04992637 0.01405481 -0.04526239 +C -1.40888025 -0.39635680 -0.20601574 +O -1.77729462 -1.37233860 -0.80361689 +H -0.01723186 1.91269132 -0.45337758 +H 0.60440478 -0.26519766 -0.95205725 +H 0.46740406 -0.57521679 0.78176270 +H -2.11835055 0.30075962 0.29870515 +14 +Properties=species:S:1:pos:R:3 A=23.44662 B=3.60588 C=3.38683 mu=0 alpha=45.71 epsHOMO=-0.317 epsLUMO=0.0937 epsgap=0.4107 =426.2996 zpve=0.131708 U0=-158.340943 U=-158.33517 H=-158.334226 G=-158.36894 Cv=19.668 pbc="F F F" +C -0.03007624 1.55804912 0.02980774 +C 0.00707277 0.02834877 -0.00712529 +C 0.71320792 -0.52989340 -1.24765581 +C 0.75036895 -2.05959366 -1.28458957 +H 0.98195330 1.97845113 0.02800797 +H -0.55582433 1.96212343 -0.84270157 +H -0.54083762 1.92692755 0.92493697 +H 0.50928672 -0.34909049 0.89361319 +H -1.01733481 -0.36542299 0.03207393 +H 0.21098948 -0.15245770 -2.14839302 +H 1.73761331 -0.13611625 -1.28685672 +H 1.27616854 -2.46366410 -0.41210980 +H -0.26165699 -2.48000447 -1.28273552 +H 1.26108491 -2.42846444 -2.17974803 +12 +Properties=species:S:1:pos:R:3 A=26.59789 B=3.79186 C=3.53779 mu=1.3402 alpha=38.61 epsHOMO=-0.2619 epsLUMO=0.081 epsgap=0.3429 =382.8628 zpve=0.108241 U0=-194.261089 U=-194.255495 H=-194.254551 G=-194.28893 Cv=18.431 pbc="F F F" +C -0.00379012 1.52196790 0.01027996 +C -0.03589372 -0.00778254 0.00225671 +C -1.45219016 -0.56653711 0.01284386 +O -1.36799785 -1.98394604 0.00453606 +H 1.02477576 1.89411231 0.00239793 +H -0.51286674 1.93764614 -0.86653888 +H -0.49584080 1.92801344 0.90121721 +H 0.48140784 -0.39530552 -0.88316064 +H 0.49828589 -0.40486256 0.87330348 +H -1.98734220 -0.20399494 0.90666062 +H -2.00431485 -0.19459473 -0.86666460 +H -2.26171819 -2.33824298 0.01034748 +12 +Properties=species:S:1:pos:R:3 A=28.29567 B=4.14901 C=3.88349 mu=1.0363 alpha=39.34 epsHOMO=-0.2503 epsLUMO=0.0925 epsgap=0.3428 =368.9331 zpve=0.107895 U0=-194.254127 U=-194.248585 H=-194.247641 G=-194.281899 Cv=17.888 pbc="F F F" +C -0.00519551 1.50868224 0.03308760 +C 0.01316580 -0.01037819 0.01988643 +O 0.69758944 -0.46344140 1.16868979 +C 0.76688491 -1.86508183 1.24602669 +H 1.01445476 1.90423799 0.02996018 +H -0.52990866 1.89184059 -0.84726911 +H -0.51263765 1.87805843 0.92875424 +H -1.01599507 -0.40998729 0.00714282 +H 0.51093143 -0.38369435 -0.89219395 +H -0.23415841 -2.32451489 1.28977780 +H 1.30129276 -2.29853663 0.38486095 +H 1.30990287 -2.11811998 2.16013206 +10 +Properties=species:S:1:pos:R:3 A=14.79671 B=5.6956 C=4.58846 mu=0.0075 alpha=31.42 epsHOMO=-0.2594 epsLUMO=0.0584 epsgap=0.3179 =297.8398 zpve=0.085172 U0=-230.183076 U=-230.177723 H=-230.176779 G=-230.211195 Cv=16.837 pbc="F F F" +O -0.01418735 1.42642242 -0.05423651 +C -0.00391839 0.00717714 0.03496062 +C -1.42317019 -0.55560600 -0.01256639 +O -2.11229413 -0.10563875 -1.17228313 +H -0.18987882 1.64154705 -0.97555148 +H 0.59659504 -0.43315430 -0.77409095 +H 0.47311116 -0.24903733 0.98747216 +H -1.39494859 -1.64975279 -0.06283188 +H -1.96497417 -0.27216915 0.90131972 +H -2.35925991 0.80944396 -1.00614597 +12 +Properties=species:S:1:pos:R:3 A=15.61472 B=6.31363 C=5.54514 mu=0.1136 alpha=41.96 epsHOMO=-0.2727 epsLUMO=0.1012 epsgap=0.3738 =298.6061 zpve=0.109284 U0=-157.116735 U=-157.11209 H=-157.111146 G=-157.143262 Cv=16.49 pbc="F F F" +C -0.03602245 1.52092949 0.01569161 +C 0.01938487 0.01004403 0.04814953 +C 1.30891671 -0.71251995 -0.24920416 +C 0.75347423 -0.70267714 1.15564676 +H 0.90105691 1.95389291 0.38283338 +H -0.19640365 1.89437369 -1.00208569 +H -0.84685273 1.90588930 0.64451322 +H -0.88416809 -0.48001889 -0.30566335 +H 1.26900901 -1.63903068 -0.81150371 +H 2.19010738 -0.11131209 -0.44927513 +H 1.26248862 -0.09487455 1.89690028 +H 0.33540836 -1.62248918 1.54980695 +10 +Properties=species:S:1:pos:R:3 A=18.21931 B=6.63877 C=5.92459 mu=1.812 alpha=35.01 epsHOMO=-0.2633 epsLUMO=0.1052 epsgap=0.3685 =267.2979 zpve=0.085275 U0=-193.039603 U=-193.035186 H=-193.034242 G=-193.065979 Cv=14.764 pbc="F F F" +C -0.01646343 1.51830705 0.00771445 +C -0.02743227 0.01657694 -0.10889741 +C 0.77296553 -0.70131886 -1.10863115 +O 1.17212293 -0.66702969 0.26278829 +H 0.91865980 1.92914217 -0.38285880 +H -0.85158014 1.95456506 -0.55109460 +H -0.11487702 1.82596470 1.05397777 +H -0.93582598 -0.47350600 0.24682793 +H 0.44443922 -1.67201495 -1.47810622 +H 1.40538284 -0.13600339 -1.79271491 +11 +Properties=species:S:1:pos:R:3 A=16.58914 B=7.18798 C=6.11415 mu=1.1353 alpha=39.02 epsHOMO=-0.2304 epsLUMO=0.0968 epsgap=0.3271 =270.5508 zpve=0.097671 U0=-173.147782 U=-173.143343 H=-173.142399 G=-173.174073 Cv=15.298 pbc="F F F" +C -0.05275541 1.47419574 0.00999108 +N 0.01940516 0.02189947 0.06334866 +C 1.32511048 -0.56446850 -0.21420725 +C 0.78051759 -0.54057993 1.17242760 +H 0.86784202 1.97176076 0.36297285 +H -0.23845155 1.79095005 -1.02142866 +H -0.88683448 1.81938959 0.62950398 +H 1.31992909 -1.48186782 -0.79602038 +H 2.15202820 0.11020204 -0.43285248 +H 1.24563570 0.14996098 1.87499245 +H 0.37013358 -1.44020447 1.62233365 +10 +Properties=species:S:1:pos:R:3 A=16.79477 B=6.71015 C=5.86781 mu=1.3894 alpha=34.64 epsHOMO=-0.239 epsLUMO=0.0775 epsgap=0.3166 =263.966 zpve=0.085106 U0=-193.034988 U=-193.030356 H=-193.029411 G=-193.061689 Cv=15.679 pbc="F F F" +O 0.21577583 1.35386859 -0.10695107 +C 0.01628099 -0.02832718 -0.02915694 +C -0.39081465 -0.71497009 1.24315669 +C -1.35118138 -0.64280380 0.06273589 +H -0.43642338 1.79062849 0.45006761 +H 0.74981167 -0.52404050 -0.65624767 +H 0.05959375 -1.66840483 1.49729237 +H -0.61369353 -0.08848006 2.10170640 +H -2.19821932 0.03058430 0.15411451 +H -1.56395912 -1.54640426 -0.49826515 +12 +Properties=species:S:1:pos:R:3 A=10.66107 B=10.66107 C=6.30452 mu=0 alpha=41.83 epsHOMO=-0.2982 epsLUMO=0.0956 epsgap=0.3938 =268.4432 zpve=0.110511 U0=-157.115484 U=-157.111322 H=-157.110378 G=-157.141657 Cv=14.696 pbc="F F F" +C -0.02542957 1.54032578 -0.04215944 +C 1.52564399 1.50419989 0.04121276 +C 1.42146727 0.06146790 0.60844885 +C -0.02638833 -0.01070956 0.04935088 +H -0.46591372 1.99639894 0.84962894 +H -0.47900239 2.00028207 -0.92365389 +H 1.98248278 1.51375334 -0.95303183 +H 2.02191365 2.25986579 0.65522129 +H 2.14291679 -0.67956358 0.25531480 +H 1.43105853 0.05751479 1.70261879 +H -0.79053440 -0.48530296 0.66996573 +H -0.05233245 -0.47238446 -0.94236394 +10 +Properties=species:S:1:pos:R:3 A=12.06545 B=11.77731 C=6.71997 mu=1.7978 alpha=34.56 epsHOMO=-0.2424 epsLUMO=0.0859 epsgap=0.3283 =236.9759 zpve=0.086675 U0=-193.034094 U=-193.029968 H=-193.029024 G=-193.060777 Cv=12.915 pbc="F F F" +C -0.03489789 1.55259455 -0.08507691 +C 1.49349183 1.45459700 0.10114677 +O 1.42725884 0.02348990 0.27254886 +C -0.00634758 0.02236494 0.10944630 +H -0.56579210 2.11301721 0.68591527 +H -0.36628352 1.89393380 -1.06692327 +H 2.10031724 1.73525720 -0.76898349 +H 1.90023090 1.95506611 0.98896748 +H -0.51987849 -0.35595179 1.00235948 +H -0.31970062 -0.57567421 -0.75559275 +12 +Properties=species:S:1:pos:R:3 A=8.63483 B=4.11977 C=2.88825 mu=0.6875 alpha=45.37 epsHOMO=-0.2392 epsLUMO=0.0192 epsgap=0.2584 =452.5112 zpve=0.100501 U0=-248.375248 U=-248.368823 H=-248.367879 G=-248.405354 Cv=21.616 pbc="F F F" +C -0.10255370 1.49907127 -0.00133642 +C -0.00519774 -0.00343114 -0.02723470 +C -0.00688536 -0.76890740 1.26434744 +N 0.08186799 -0.69202791 -1.10087306 +O 0.07439067 0.13215394 -2.24195258 +H 0.78342093 1.94690862 -0.46354050 +H -0.96150430 1.83614082 -0.59021965 +H -0.19854173 1.87462989 1.01931607 +H -0.92620012 -0.57297946 1.82982479 +H 0.07256154 -1.84064782 1.07516863 +H 0.82937178 -0.45553340 1.90133089 +H 0.13975924 -0.51254299 -2.95389260 +10 +Properties=species:S:1:pos:R:3 A=9.17136 B=9.04195 C=4.5531 mu=1.8689 alpha=43.14 epsHOMO=-0.2029 epsLUMO=0.0499 epsgap=0.2528 =303.9808 zpve=0.082433 U0=-210.101789 U=-210.097816 H=-210.096872 G=-210.12818 Cv=14.821 pbc="F F F" +N -0.00829694 1.35362838 0.00995971 +C 1.28033254 1.82457421 -0.00022459 +C 2.12216639 0.73698898 -0.01445600 +C 1.30849904 -0.43109580 -0.01284154 +C -0.00342782 -0.01836884 0.00235736 +H -0.83243234 1.92772668 0.02122995 +H 1.48471820 2.88312630 0.00354313 +H 3.20066918 0.77343077 -0.02488416 +H 1.64810599 -1.45539683 -0.02180394 +H -0.92551647 -0.57697054 0.00839402 +9 +Properties=species:S:1:pos:R:3 A=9.77329 B=9.41192 C=4.7946 mu=3.6193 alpha=39.13 epsHOMO=-0.2253 epsLUMO=0.0332 epsgap=0.2585 =283.6817 zpve=0.071145 U0=-226.160842 U=-226.157088 H=-226.156144 G=-226.187104 Cv=13.371 pbc="F F F" +N -0.00996090 1.35636172 0.01000855 +C 1.29535422 1.79575578 -0.00047017 +C 2.05550519 0.65637438 -0.01422927 +N 1.25385745 -0.46275132 -0.01260894 +C 0.02301170 -0.00706382 0.00200146 +H -0.83195718 1.93618436 0.02132575 +H 1.54553961 2.84344998 0.00289054 +H 3.13177434 0.57569766 -0.02524155 +H -0.87667864 -0.60414531 0.00750794 +9 +Properties=species:S:1:pos:R:3 A=9.50228 B=9.29497 C=4.69874 mu=0.5571 alpha=39.2 epsHOMO=-0.2246 epsLUMO=0.0199 epsgap=0.2445 =289.005 zpve=0.069883 U0=-229.969129 U=-229.965414 H=-229.96447 G=-229.995393 Cv=13.358 pbc="F F F" +O -0.03255819 1.35065130 0.00967376 +C 1.25319237 1.79167710 -0.00030351 +C 2.11664681 0.74375623 -0.01441494 +C 1.30397796 -0.43852387 -0.01283316 +C 0.01629568 -0.00777185 0.00191294 +H 1.37951089 2.86161135 0.00427433 +H 3.19376406 0.79865501 -0.02458604 +H 1.63858893 -1.46383271 -0.02156949 +H -0.93736295 -0.50899925 0.00843891 +8 +Properties=species:S:1:pos:R:3 A=10.10926 B=9.69372 C=4.94857 mu=1.5081 alpha=35.17 epsHOMO=-0.2509 epsLUMO=0.001 epsgap=0.2519 =269.2444 zpve=0.058593 U0=-246.02915 U=-246.025614 H=-246.024669 G=-246.055309 Cv=12.04 pbc="F F F" +O -0.03808298 1.35643965 0.00975193 +C 1.26496982 1.76855319 -0.00061744 +C 2.04955750 0.66630033 -0.01406047 +N 1.24227075 -0.46732066 -0.01237541 +C 0.04019820 0.00561577 0.00183569 +H 1.43513907 2.83095265 0.00340823 +H 3.12532898 0.59783015 -0.02480757 +H -0.89387707 -0.53342154 0.00796935 +17 +Properties=species:S:1:pos:R:3 A=4.4178 B=4.41753 C=4.41717 mu=0.0003 alpha=56.01 epsHOMO=-0.3145 epsLUMO=0.0737 epsgap=0.3882 =486.2719 zpve=0.158836 U0=-197.632222 U=-197.625241 H=-197.624297 G=-197.661411 Cv=26.084 pbc="F F F" +C -0.01859029 1.53486266 0.01039904 +C 0.00210320 -0.00413672 0.00196980 +C 0.74643954 -0.51390760 1.24887638 +C -1.44190166 -0.53673615 0.01311457 +C 0.72234971 -0.50049606 -1.26445632 +H 0.99776928 1.94420529 0.00435474 +H -0.54181883 1.92841415 -0.86819911 +H -0.52758402 1.91888376 0.90148530 +H 0.25549576 -0.17602728 2.16833067 +H 0.77815389 -1.60892372 1.27088904 +H 1.77964786 -0.14975834 1.26944035 +H -1.99871895 -0.18888794 -0.86408066 +H -1.45956909 -1.63227235 0.00649916 +H -1.98088827 -0.19979639 0.90561580 +H 1.75482473 -0.13554018 -1.30118083 +H 0.75396989 -1.59524036 -1.29822280 +H 0.21358221 -0.15343900 -2.17067181 +15 +Properties=species:S:1:pos:R:3 A=4.69474 B=4.66938 C=4.47909 mu=1.384 alpha=49.04 epsHOMO=-0.2601 epsLUMO=0.0664 epsgap=0.3265 =449.0573 zpve=0.134977 U0=-233.560626 U=-233.553779 H=-233.552834 G=-233.589759 Cv=25.128 pbc="F F F" +C -0.00855999 1.54270147 0.00152717 +C 0.00506780 0.00702635 0.01856160 +C 0.76137731 -0.51839196 1.24766443 +C -1.42012774 -0.54933183 -0.02116008 +O 0.62590477 -0.48363745 -1.17657057 +H 1.01361406 1.94020776 0.00281128 +H -0.51459669 1.90702466 -0.89705781 +H -0.52214815 1.94882514 0.87918344 +H 0.28130613 -0.20165548 2.17943598 +H 0.79965506 -1.61131746 1.23022549 +H 1.79096916 -0.14072935 1.26083003 +H -1.93854829 -0.19910724 -0.91828281 +H -1.39937632 -1.64259062 -0.04563833 +H -1.98850725 -0.23059656 0.85726520 +H 1.53111188 -0.15488046 -1.19210222 +9 +Properties=species:S:1:pos:R:3 A=10.21876 B=4.04324 C=2.94978 mu=2.8579 alpha=42.02 epsHOMO=-0.2654 epsLUMO=-0.0575 epsgap=0.2079 =416.7799 zpve=0.065175 U0=-229.927277 U=-229.921622 H=-229.920677 G=-229.955843 Cv=18.723 pbc="F F F" +C -0.00693851 1.49559567 -0.01063358 +C -0.02986170 -0.01594623 0.06248673 +O -0.08815239 -0.63215062 1.10334812 +C 0.02336981 -0.70256747 -1.22062379 +C 0.06738132 -1.26058341 -2.28623129 +H 0.90429806 1.83281887 -0.51655384 +H -0.85338524 1.85556926 -0.60552819 +H -0.05237764 1.91099807 0.99695949 +H 0.10466868 -1.77036047 -3.21832617 +8 +Properties=species:S:1:pos:R:3 A=10.16063 B=4.15847 C=3.0056 mu=3.3351 alpha=37.08 epsHOMO=-0.3007 epsLUMO=-0.0889 epsgap=0.2118 =397.7757 zpve=0.05451 U0=-246.027383 U=-246.022024 H=-246.02108 G=-246.055769 Cv=16.963 pbc="F F F" +C -0.01171097 1.49973776 -0.01213268 +C -0.02919740 -0.00338745 0.07151218 +O -0.09164028 -0.64592927 1.08732241 +C 0.03831104 -0.69690258 -1.23748557 +N 0.09136286 -1.22982650 -2.26228068 +H 0.90093132 1.83370670 -0.51814928 +H -0.85663933 1.84864400 -0.61618135 +H -0.06416540 1.92131542 0.99203818 +8 +Properties=species:S:1:pos:R:3 A=10.68423 B=4.3198 C=3.07993 mu=5.1815 alpha=38.31 epsHOMO=-0.2739 epsLUMO=-0.0438 epsgap=0.2301 =384.5574 zpve=0.056619 U0=-242.19573 U=-242.190591 H=-242.189646 G=-242.223513 Cv=17.465 pbc="F F F" +N -0.05232108 1.34991769 0.15535538 +C 0.08549378 -0.01476951 0.02668890 +N 1.14555215 -0.71993906 -0.03966037 +C -1.19426556 -0.71152088 0.01802151 +N -2.22747610 -1.22790543 0.00132148 +H 0.75474469 1.91998737 -0.04411334 +H -0.94458527 1.76600473 -0.05932293 +H 1.98312429 -0.13415500 -0.02878551 +9 +Properties=species:S:1:pos:R:3 A=9.08854 B=4.42607 C=3.03169 mu=0.9461 alpha=36.51 epsHOMO=-0.2538 epsLUMO=-0.0964 epsgap=0.1574 =399.222 zpve=0.064992 U0=-267.10335 U=-267.097658 H=-267.096714 G=-267.132534 Cv=17.806 pbc="F F F" +C -0.43126066 1.30586664 -0.12758585 +C 0.25285715 -0.01026988 0.13138867 +O 0.69872099 -0.36890333 1.19604690 +C 0.38978943 -0.96773680 -1.06226208 +O -0.01611268 -0.71564293 -2.16583718 +H 0.10006565 1.85324490 -0.91332597 +H -1.44270433 1.13069361 -0.50923371 +H -0.46757554 1.89548158 0.78836479 +H 0.90329886 -1.91558845 -0.79531972 +9 +Properties=species:S:1:pos:R:3 A=10.08927 B=4.54115 C=3.13487 mu=2.7707 alpha=38.09 epsHOMO=-0.2561 epsLUMO=-0.064 epsgap=0.192 =384.4827 zpve=0.067668 U0=-263.278851 U=-263.273589 H=-263.272645 G=-263.306835 Cv=17.972 pbc="F F F" +N -0.16032929 1.08528962 -0.45398652 +C 0.18649127 -0.08762327 0.14758021 +N 1.28979627 -0.46427423 0.67927030 +C -0.94204384 -1.08440264 0.20423621 +O -2.01802205 -0.89007687 -0.30583149 +H 0.54574437 1.73837930 -0.74689246 +H -1.04684920 1.09570857 -0.93607796 +H 2.01738195 0.24991828 0.59881811 +H -0.67740148 -2.01003995 0.74746441 +13 +Properties=species:S:1:pos:R:3 A=7.92874 B=3.8272 C=2.82581 mu=0.6578 alpha=51.2 epsHOMO=-0.2589 epsLUMO=0.0571 epsgap=0.316 =481.9854 zpve=0.112471 U0=-195.186772 U=-195.180446 H=-195.179502 G=-195.215658 Cv=22.569 pbc="F F F" +C -0.01763434 1.54859468 -0.00253584 +C -0.01719180 0.00735789 0.03269604 +C 0.75818463 -0.52820155 1.25278862 +C -1.38213303 -0.51768438 0.00775516 +C -2.50796392 -0.94005629 0.00478552 +H 1.00944396 1.92639613 -0.02632830 +H -0.54514614 1.92217052 -0.88393459 +H -0.51243000 1.95339892 0.88560642 +H 0.49366179 -0.34904155 -0.87265890 +H 0.28968458 -0.19345372 2.18334679 +H 0.77833392 -1.62102506 1.25783727 +H 1.78952492 -0.16181727 1.23574954 +H -3.49998244 -1.31810165 -0.00723572 +12 +Properties=species:S:1:pos:R:3 A=7.90009 B=3.95466 C=2.88643 mu=3.9512 alpha=46.23 epsHOMO=-0.318 epsLUMO=0.0365 epsgap=0.3545 =460.694 zpve=0.102281 U0=-211.295796 U=-211.289821 H=-211.288877 G=-211.324525 Cv=20.467 pbc="F F F" +C -0.00242350 1.55035837 0.01056187 +C -0.01856600 0.01004352 -0.02261770 +C -1.45045318 -0.55766178 0.01293347 +C 0.70125749 -0.48583168 -1.20172764 +N 1.26190946 -0.87126766 -2.13619740 +H 1.01959496 1.93673215 0.00349668 +H -0.52972844 1.96141639 -0.85498386 +H -0.50134251 1.90346839 0.91755862 +H 0.52481877 -0.36222456 0.85525462 +H -2.02427903 -0.21428716 -0.85251869 +H -1.44438296 -1.65026927 0.00754107 +H -1.95805494 -0.21725882 0.91996760 +11 +Properties=species:S:1:pos:R:3 A=8.30095 B=3.97615 C=2.93764 mu=2.7429 alpha=42.87 epsHOMO=-0.2704 epsLUMO=0.0278 epsgap=0.2983 =440.0738 zpve=0.091554 U0=-227.338075 U=-227.332253 H=-227.331309 G=-227.366638 Cv=19.946 pbc="F F F" +C -0.01064295 1.54128691 0.00722087 +C -0.00203811 0.00756015 0.03863463 +N 0.76268677 -0.47101822 1.19250856 +C -1.38541954 -0.52099256 -0.00194097 +N -2.45680847 -0.95636072 0.00694969 +H 1.02043523 1.90106589 0.00392365 +H -0.52873161 1.91193452 -0.88031480 +H -0.51849536 1.94150431 0.89013197 +H 0.50418828 -0.35805500 -0.86276072 +H 0.30070681 -0.18364934 2.05155305 +H 0.78148992 -1.48670299 1.20428183 +11 +Properties=species:S:1:pos:R:3 A=8.55919 B=3.89952 C=2.91869 mu=1.3582 alpha=44.03 epsHOMO=-0.2665 epsLUMO=0.0336 epsgap=0.3001 =444.6452 zpve=0.088908 U0=-231.108368 U=-231.102292 H=-231.101348 G=-231.137061 Cv=21.306 pbc="F F F" +C -0.00754278 1.55566144 0.08650633 +C 0.01207541 0.02096553 0.04935916 +O -1.29150251 -0.52785128 0.22126386 +C 0.65093362 -0.47718651 -1.17430507 +C 1.13902673 -0.86577343 -2.20205518 +H 1.00824243 1.95969458 0.04929733 +H -0.56272245 1.95192010 -0.76978085 +H -0.49328161 1.88929438 1.00704123 +H 0.57811967 -0.34464907 0.91458864 +H -1.78516532 -0.35903262 -0.58909400 +H 1.58078877 -1.22365060 -3.09919447 +10 +Properties=species:S:1:pos:R:3 A=8.55908 B=4.01671 C=2.97882 mu=3.269 alpha=39.28 epsHOMO=-0.3051 epsLUMO=0.0115 epsgap=0.3166 =424.3395 zpve=0.078602 U0=-247.214861 U=-247.209162 H=-247.208218 G=-247.243338 Cv=19.252 pbc="F F F" +C -0.00992462 1.54951908 0.00732200 +C 0.00740485 0.01722020 0.05031270 +O 0.72085722 -0.49630479 1.15864583 +C -1.36995095 -0.52355929 0.00894432 +N -2.45081572 -0.93233138 0.00716912 +H 1.01892314 1.91630447 0.02724149 +H -0.50261490 1.90969362 -0.89997951 +H -0.54800426 1.95377611 0.87053664 +H 0.53602846 -0.36494195 -0.82970945 +H 0.27702643 -0.20644534 1.96421773 +13 +Properties=species:S:1:pos:R:3 A=7.66289 B=3.70925 C=2.79937 mu=2.6921 alpha=46.58 epsHOMO=-0.2469 epsLUMO=-0.0188 epsgap=0.2281 =482.0475 zpve=0.112328 U0=-232.364952 U=-232.358577 H=-232.357633 G=-232.394589 Cv=21.434 pbc="F F F" +C -0.02629647 1.53877116 -0.00783747 +C 0.01468904 0.00095310 0.00166037 +C 0.74737862 -0.53388859 1.24420471 +C -1.40211264 -0.53859257 -0.01557820 +O -1.87620455 -1.23582351 -0.87399559 +H 0.98823696 1.94625080 0.03705522 +H -0.50725090 1.92153422 -0.91285565 +H -0.57756514 1.92360883 0.85796386 +H 0.50584680 -0.36421091 -0.90619124 +H 0.22958380 -0.23909403 2.16431052 +H 0.81692736 -1.62559499 1.22973438 +H 1.76267153 -0.12846566 1.29050755 +H -2.00861510 -0.22792742 0.87121666 +11 +Properties=species:S:1:pos:R:3 A=8.31096 B=4.07963 C=2.92918 mu=2.8354 alpha=39.16 epsHOMO=-0.255 epsLUMO=-0.0279 epsgap=0.2271 =432.1489 zpve=0.088443 U0=-268.287661 U=-268.281505 H=-268.280561 G=-268.316982 Cv=20.344 pbc="F F F" +C -0.05483118 1.46032843 -0.17068647 +C 0.07105714 -0.03524485 0.11225841 +O 0.58204486 -0.33316656 1.40176256 +C -1.27639279 -0.74383027 0.03051185 +O -2.11855775 -0.49643175 -0.79163412 +H 0.93158072 1.93091398 -0.23353204 +H -0.57713995 1.61290939 -1.11835562 +H -0.62444315 1.94776119 0.62573670 +H 0.69687521 -0.50071620 -0.67159471 +H 1.45603316 0.06066659 1.47858584 +H -1.40723217 -1.53388627 0.80211181 +12 +Properties=species:S:1:pos:R:3 A=8.9331 B=4.19405 C=2.96046 mu=3.7163 alpha=44.42 epsHOMO=-0.2424 epsLUMO=0.0327 epsgap=0.2751 =441.85 zpve=0.10227 U0=-248.430371 U=-248.424309 H=-248.423365 G=-248.459383 Cv=19.918 pbc="F F F" +C -0.09776499 1.44917268 0.04561984 +N 0.01043053 0.00373818 -0.00070600 +C 0.05323028 -0.71432112 1.25264891 +C 0.06728716 -0.64067225 -1.20060778 +O 0.03636432 -0.11006515 -2.29109228 +H 0.75650660 1.88747109 0.57647421 +H -0.11648577 1.81632103 -0.98049172 +H -1.01641106 1.75521548 0.56151415 +H -0.85453556 -0.53657675 1.84390168 +H 0.13297722 -1.78696336 1.05851351 +H 0.91637348 -0.40737846 1.85761345 +H 0.14762240 -1.73801339 -1.06805139 +11 +Properties=species:S:1:pos:R:3 A=10.13982 B=3.81346 C=2.86965 mu=2.9514 alpha=39.33 epsHOMO=-0.2699 epsLUMO=-0.0262 epsgap=0.2437 =440.1727 zpve=0.088924 U0=-268.301176 U=-268.295084 H=-268.29414 G=-268.331307 Cv=19.824 pbc="F F F" +C -0.01708808 1.44281136 0.03225501 +C -0.05544542 -0.06560572 -0.02375999 +O -0.17379913 -0.76196233 0.96223129 +C 0.06068107 -0.73615179 -1.38825252 +O 0.00877771 -2.12574390 -1.27749486 +H 0.92062950 1.81463913 -0.39522215 +H -0.83050523 1.86542281 -0.56780350 +H -0.10911975 1.78049045 1.06493675 +H -0.75015067 -0.35235060 -2.03056074 +H 1.00312898 -0.40389029 -1.85592942 +H -0.09063255 -2.29450960 -0.32608019 +13 +Properties=species:S:1:pos:R:3 A=9.55216 B=3.57844 C=2.7341 mu=2.6168 alpha=46.19 epsHOMO=-0.2423 epsLUMO=-0.0072 epsgap=0.2351 =489.8518 zpve=0.112006 U0=-232.377706 U=-232.371073 H=-232.370129 G=-232.408256 Cv=21.716 pbc="F F F" +C -0.04384102 1.54099793 -0.03913814 +C 0.02765132 0.01885817 0.04778773 +C 0.76814644 -0.48842218 1.28000847 +C 0.87850208 -1.99746312 1.42393323 +O 1.24179142 0.26651340 2.09788702 +H 0.95796454 1.97690198 -0.06816012 +H -0.58447717 1.85356031 -0.93690369 +H -0.55173626 1.95737759 0.83440529 +H -0.97692824 -0.42709877 0.05353178 +H 0.51853486 -0.40806507 -0.83809409 +H 1.39924980 -2.42678188 0.56053177 +H 1.42001187 -2.24449367 2.33776426 +H -0.11750602 -2.45360651 1.45141965 +12 +Properties=species:S:1:pos:R:3 A=9.78802 B=3.78441 C=2.84416 mu=3.499 alpha=42.54 epsHOMO=-0.2438 epsLUMO=0.0355 epsgap=0.2793 =457.447 zpve=0.101847 U0=-248.448467 U=-248.441988 H=-248.441044 G=-248.478935 Cv=21.374 pbc="F F F" +C -0.00220144 1.53344329 -0.05960369 +C -0.03235837 0.01206167 0.06840265 +C 0.69666086 -0.48196462 1.31828322 +N 0.98104007 -1.82034162 1.31984698 +O 1.00392124 0.24606232 2.24136749 +H 1.02111190 1.89525169 -0.19182672 +H -0.59707204 1.86206427 -0.91645604 +H -0.39728839 1.99920712 0.84545201 +H -1.06936083 -0.34552935 0.13040806 +H 0.39947165 -0.46906818 -0.81777020 +H 0.63281951 -2.43917647 0.60874785 +H 1.35708014 -2.22217793 2.16303522 +12 +Properties=species:S:1:pos:R:3 A=10.01185 B=3.84195 C=2.87635 mu=3.5402 alpha=43.61 epsHOMO=-0.2418 epsLUMO=0.0387 epsgap=0.2805 =458.9803 zpve=0.101735 U0=-248.443503 U=-248.436899 H=-248.435955 G=-248.474272 Cv=20.967 pbc="F F F" +C 0.00619941 1.45933202 -0.03893859 +N -0.06411616 0.01422963 -0.12046901 +C -1.20595394 -0.68196796 0.16117120 +C -1.08982704 -2.19284899 0.02095775 +O -2.24482911 -0.14443077 0.49994418 +H 0.75053989 1.78372520 0.69715573 +H 0.25692001 1.90395263 -1.00876215 +H -0.97856026 1.81121438 0.27082194 +H 0.75820982 -0.49543660 -0.39464024 +H -0.09909703 -2.53543104 -0.28970003 +H -1.34097671 -2.65395851 0.97972885 +H -1.82903100 -2.53483935 -0.70813076 +11 +Properties=species:S:1:pos:R:3 A=10.44045 B=4.04692 C=2.98547 mu=3.5648 alpha=39.51 epsHOMO=-0.2436 epsLUMO=0.0599 epsgap=0.3034 =428.404 zpve=0.091713 U0=-264.504487 U=-264.498452 H=-264.497508 G=-264.533633 Cv=20.274 pbc="F F F" +C 0.00922630 1.45021814 -0.03194543 +N -0.01429488 -0.00054646 -0.01782667 +C -1.21576579 -0.67252403 0.04421896 +N -1.09733352 -2.04644898 -0.15997741 +O -2.28599299 -0.12893711 0.24196027 +H 0.89659038 1.81885022 0.49120949 +H 0.00233950 1.86388504 -1.04914155 +H -0.88562684 1.79943346 0.48353298 +H 0.75257305 -0.47506631 -0.46719265 +H -0.24882333 -2.48772194 0.16375654 +H -1.93419610 -2.53898393 0.11482880 +12 +Properties=species:S:1:pos:R:3 A=9.69683 B=4.1533 C=3.01703 mu=1.1876 alpha=43.57 epsHOMO=-0.2595 epsLUMO=0.0352 epsgap=0.2948 =443.1687 zpve=0.102062 U0=-248.416462 U=-248.410358 H=-248.409414 G=-248.445651 Cv=20.256 pbc="F F F" +C -0.09160695 1.37540046 -0.00729426 +O -0.06964534 -0.04831581 -0.11148812 +C 0.68114625 -0.56142673 -1.10732458 +C 0.60405298 -2.06701550 -1.08766892 +N 1.32645533 0.19266343 -1.89967731 +H 0.91463916 1.76843655 0.16257460 +H -0.48562826 1.82624615 -0.92235216 +H -0.73971430 1.60007423 0.84110605 +H -0.43430065 -2.39242162 -1.20325205 +H 1.20627110 -2.50049977 -1.88745640 +H 0.95651337 -2.44976670 -0.12501838 +H 1.83504115 -0.36104361 -2.58486055 +11 +Properties=species:S:1:pos:R:3 A=10.20392 B=4.16834 C=3.07281 mu=1.7569 alpha=39.33 epsHOMO=-0.2685 epsLUMO=0.0174 epsgap=0.2859 =427.6606 zpve=0.089436 U0=-268.32127 U=-268.315051 H=-268.314106 G=-268.351214 Cv=19.501 pbc="F F F" +C 0.07295254 1.38840919 0.06442046 +O 0.21049114 -0.03740028 0.04612736 +C 0.50102805 -0.57224288 -1.15975346 +C 0.62218715 -2.07378323 -1.06030684 +O 0.63922154 0.08224418 -2.16157325 +H 1.00029720 1.87062570 -0.25532064 +H -0.73338957 1.70782089 -0.60080454 +H -0.15751280 1.65154060 1.09692954 +H -0.31330001 -2.50202851 -0.68941906 +H 0.85646588 -2.48430275 -2.04157352 +H 1.40651685 -2.34055496 -0.34634301 +10 +Properties=species:S:1:pos:R:3 A=10.68182 B=4.39532 C=3.17969 mu=2.329 alpha=35.5 epsHOMO=-0.2669 epsLUMO=0.0575 epsgap=0.3244 =398.5908 zpve=0.079271 U0=-284.385189 U=-284.379361 H=-284.378417 G=-284.414085 Cv=19.084 pbc="F F F" +C -0.02645771 1.38305753 0.02085660 +O 0.04139566 -0.04439503 -0.00277452 +C 0.66775338 -0.56001625 -1.09000344 +N 0.72605063 -1.92219983 -0.98822954 +O 1.12952381 0.09648143 -1.99322180 +H 0.97529779 1.82044307 0.02387306 +H -0.57085698 1.76214621 -0.84790425 +H -0.55410722 1.63835731 0.94043594 +H 0.12662696 -2.38401590 -0.32566929 +H 0.97230070 -2.41798421 -1.82732573 +10 +Properties=species:S:1:pos:R:3 A=10.20696 B=3.93135 C=2.9219 mu=4.5676 alpha=35.87 epsHOMO=-0.246 epsLUMO=0.0273 epsgap=0.2733 =418.5967 zpve=0.078222 U0=-284.360325 U=-284.354148 H=-284.353204 G=-284.390143 Cv=20.089 pbc="F F F" +N -0.08115607 1.31807026 0.01276742 +C 0.05442259 -0.04477733 0.08155388 +O 1.12163074 -0.59783950 0.20940553 +C -1.28687786 -0.79011642 0.06178435 +O -1.04605114 -2.13954195 -0.23957158 +H 0.76623366 1.85991128 -0.04483425 +H -0.93021346 1.74567447 -0.31565615 +H -1.74559696 -0.65521334 1.05526700 +H -1.96026061 -0.31149222 -0.67026256 +H -1.85637296 -2.63017646 -0.07625478 +10 +Properties=species:S:1:pos:R:3 A=10.14389 B=4.0714 C=3.02223 mu=5.3004 alpha=35.19 epsHOMO=-0.2527 epsLUMO=0.0208 epsgap=0.2735 =408.0279 zpve=0.080317 U0=-284.372483 U=-284.367172 H=-284.366228 G=-284.40095 Cv=17.931 pbc="F F F" +N 0.01838100 0.93057357 0.04943058 +H -0.70674506 0.56116798 -0.55550134 +H 0.68248307 0.18430002 0.21487099 +H 0.21928084 2.79858558 -0.32670585 +C -0.54586914 1.44688585 1.30274586 +C -0.80466975 2.96030569 1.21052835 +O -0.21468822 3.53648884 0.15531687 +O -1.45295676 3.56338618 2.02143528 +H -1.47662579 0.96512183 1.62072169 +H 0.17781209 1.30324286 2.11157176 +13 +Properties=species:S:1:pos:R:3 A=6.6508 B=4.19317 C=3.39441 mu=2.2854 alpha=42.01 epsHOMO=-0.2597 epsLUMO=0.0631 epsgap=0.3228 =438.3028 zpve=0.11345 U0=-269.479234 U=-269.472993 H=-269.472049 G=-269.508213 Cv=22.072 pbc="F F F" +C -0.02775167 1.53421433 0.00651151 +C 0.08343246 0.01218277 0.05258986 +O 0.95856392 -0.48200710 -0.96694113 +C 0.69767574 -0.49516451 1.35948812 +O 2.02247062 -0.02842530 1.52222186 +H 0.94333763 1.98841434 0.21841589 +H -0.37320516 1.87354041 -0.97716908 +H -0.74773817 1.89256394 0.74926853 +H -0.91671848 -0.43697036 -0.06040528 +H 0.76726710 -0.01412177 -1.78502043 +H 0.11650002 -0.13351914 2.21392431 +H 0.65814685 -1.59563445 1.36274474 +H 2.46378566 -0.22762476 0.68698431 +17 +Properties=species:S:1:pos:R:3 A=7.26511 B=3.32874 C=2.54491 mu=0.0618 alpha=56.26 epsHOMO=-0.3085 epsLUMO=0.085 epsgap=0.3934 =565.8412 zpve=0.159632 U0=-197.629387 U=-197.622325 H=-197.621381 G=-197.659365 Cv=25.169 pbc="F F F" +C 0.05879035 1.56174169 -0.01945240 +C -0.01544024 0.03182306 0.00308332 +C -1.44103237 -0.54862028 0.05028629 +C -1.40777007 -2.07231030 -0.13012010 +C -2.18400529 -0.17659759 1.34114303 +H 1.09435638 1.90233607 -0.11900072 +H -0.50689566 1.97217319 -0.86388098 +H -0.34407951 2.00628082 0.89579522 +H 0.48926758 -0.36011214 -0.88953902 +H 0.55254938 -0.35139446 0.86269887 +H -2.00031575 -0.12153682 -0.79559684 +H -0.85501131 -2.55065810 0.68775438 +H -2.41787513 -2.49543628 -0.13720127 +H -0.91928762 -2.35363802 -1.06914014 +H -3.19100197 -0.60699559 1.35137051 +H -1.65197294 -0.56010584 2.22063481 +H -2.28793759 0.90575132 1.46079572 +15 +Properties=species:S:1:pos:R:3 A=8.11598 B=3.43678 C=2.66869 mu=1.3894 alpha=49.45 epsHOMO=-0.2617 epsLUMO=0.0733 epsgap=0.335 =521.8605 zpve=0.136091 U0=-233.555951 U=-233.549143 H=-233.548199 G=-233.585602 Cv=23.99 pbc="F F F" +C -0.03841227 1.55621396 0.00935837 +C 0.01907135 0.02716079 -0.02074203 +C 0.73141506 -0.52709328 -1.25454422 +C 0.83975868 -2.05206973 -1.22872655 +O -0.01226470 -0.08514394 -2.38973758 +H 0.96845664 1.98863424 0.03526234 +H -0.54377006 1.93824134 -0.88074407 +H -0.57652955 1.91383386 0.89256698 +H 0.53166867 -0.34991486 0.87240999 +H -0.99727186 -0.38638654 -0.00185289 +H 1.74909346 -0.09943025 -1.28826184 +H 1.34143968 -2.42487137 -2.12957624 +H 1.41822012 -2.39229108 -0.36340871 +H -0.15616765 -2.50443859 -1.18308875 +H 0.43090825 -0.40901616 -3.17979642 +15 +Properties=species:S:1:pos:R:3 A=7.55335 B=3.78323 C=2.80566 mu=1.0758 alpha=49.8 epsHOMO=-0.2476 epsLUMO=0.086 epsgap=0.3336 =507.9614 zpve=0.135681 U0=-233.545899 U=-233.539034 H=-233.53809 G=-233.57582 Cv=23.573 pbc="F F F" +C -0.00857605 1.38097833 0.09454670 +O -0.02255106 -0.00739461 -0.13062576 +C -1.30243341 -0.61997805 -0.02088309 +C -1.18687286 -1.97885751 -0.70303918 +C -1.75587824 -0.74662760 1.43714508 +H 1.00321550 1.73258087 -0.12443496 +H -0.71511468 1.90838275 -0.56674280 +H -0.24909065 1.64967237 1.13384681 +H -2.03737978 -0.00432241 -0.56884198 +H -0.44792779 -2.59945605 -0.18596870 +H -2.14751041 -2.50225525 -0.69102581 +H -0.86524212 -1.85860679 -1.74077836 +H -2.73321482 -1.23674908 1.49205117 +H -1.03621350 -1.34483828 2.00544671 +H -1.84898410 0.22935483 1.92198087 +15 +Properties=species:S:1:pos:R:3 A=6.14183 B=5.17679 C=3.79297 mu=0.1068 alpha=52.92 epsHOMO=-0.2633 epsLUMO=0.0893 epsgap=0.3526 =439.1643 zpve=0.137025 U0=-196.409349 U=-196.403398 H=-196.402453 G=-196.437676 Cv=22.258 pbc="F F F" +C -0.03913204 1.50456305 0.04978913 +C 0.00985856 -0.01113880 0.01248619 +C -1.24167981 -0.66663044 -0.53989979 +C 1.33803387 -0.66895748 -0.27400430 +C 0.75126442 -0.72221586 1.11862571 +H 0.88633040 1.92490040 0.45579358 +H -0.18183878 1.92045743 -0.95489291 +H -0.86832076 1.85815718 0.67439648 +H -1.43570890 -0.34344387 -1.56976411 +H -1.15326757 -1.75757800 -0.54433832 +H -2.12221416 -0.40570820 0.05951361 +H 1.34398374 -1.58235208 -0.86005084 +H 2.20196897 -0.03329084 -0.43929326 +H 1.21949576 -0.12246018 1.89246580 +H 0.36153319 -1.67153717 1.47171932 +13 +Properties=species:S:1:pos:R:3 A=6.49534 B=5.52329 C=3.9108 mu=1.8235 alpha=45.7 epsHOMO=-0.2596 epsLUMO=0.091 epsgap=0.3505 =405.521 zpve=0.112851 U0=-232.335768 U=-232.329981 H=-232.329037 G=-232.364091 Cv=20.719 pbc="F F F" +C -0.03970330 1.50954998 -0.04112233 +C -0.03023556 -0.00335329 -0.06498361 +C -1.24613189 -0.68356648 0.52531190 +C 0.78937201 -0.71129193 -1.06027559 +O 1.22546798 -0.60059036 0.29712283 +H 0.88992772 1.90948478 -0.45296558 +H -0.87952723 1.90350108 -0.62376642 +H -0.14448576 1.87590604 0.98604429 +H -2.15218727 -0.41012616 -0.02629495 +H -1.13412584 -1.77005431 0.49747032 +H -1.38586631 -0.38055453 1.56882757 +H 0.50712690 -1.71386874 -1.38085018 +H 1.37088104 -0.14369322 -1.78640853 +13 +Properties=species:S:1:pos:R:3 A=6.57648 B=5.31603 C=3.98453 mu=1.3822 alpha=45.85 epsHOMO=-0.2494 epsLUMO=0.0776 epsgap=0.327 =401.4888 zpve=0.113237 U0=-232.33341 U=-232.327734 H=-232.32679 G=-232.36147 Cv=21.17 pbc="F F F" +C -0.03714052 1.53215920 0.01332310 +C 0.01344335 0.02117019 0.01922005 +O -1.17476104 -0.59735284 -0.40931260 +C 1.30744798 -0.69902106 -0.27389650 +C 0.70844749 -0.71373504 1.12226318 +H 0.89026861 1.96240279 0.40276135 +H -0.17846151 1.91561262 -1.00518522 +H -0.87011232 1.88955201 0.62730953 +H -1.28352265 -0.40225391 -1.34690641 +H 1.23973813 -1.61642115 -0.84783774 +H 2.20543993 -0.11523820 -0.44744474 +H 1.19539159 -0.13889834 1.90240284 +H 0.24735439 -1.63670241 1.45378480 +10 +Properties=species:S:1:pos:R:3 A=12.18399 B=5.1384 C=3.78868 mu=2.5732 alpha=40.19 epsHOMO=-0.263 epsLUMO=0.0277 epsgap=0.2907 =352.0378 zpve=0.080558 U0=-247.201165 U=-247.196699 H=-247.195755 G=-247.22841 Cv=15.51 pbc="F F F" +N -0.04445152 1.25623533 0.31681915 +C -0.03914559 0.04913710 -0.01670558 +C -1.08749619 -1.04164446 -0.11488033 +C 0.09869688 -1.90754844 -0.58225894 +O 0.99647508 -0.76306629 -0.44028010 +H 0.88935980 1.66481350 0.24916893 +H -1.54324114 -1.32235812 0.83572172 +H -1.86910036 -0.85713839 -0.85325910 +H 0.39739753 -2.72227350 0.08158721 +H 0.06945080 -2.25418345 -1.61796084 +11 +Properties=species:S:1:pos:R:3 A=10.79571 B=4.78732 C=3.54292 mu=2.7119 alpha=42.77 epsHOMO=-0.2415 epsLUMO=-0.0194 epsgap=0.2222 =379.6371 zpve=0.090544 U0=-231.15578 U=-231.150804 H=-231.149859 G=-231.184401 Cv=17.076 pbc="F F F" +O -0.00101746 0.01846628 -0.20114742 +C -0.01405811 1.19658059 0.00205306 +C -1.13542911 2.22979148 0.21957980 +C -0.03500884 3.29097637 0.53052223 +C 1.08469664 2.25947795 0.18994331 +H -1.71642814 2.41772662 -0.68901078 +H -1.83392757 1.98415059 1.02444244 +H -0.05534741 4.17585264 -0.10670963 +H -0.02541477 3.61399048 1.57278917 +H 1.81074389 2.03288534 0.97578973 +H 1.63600801 2.46255380 -0.73376244 +10 +Properties=species:S:1:pos:R:3 A=12.23436 B=4.97895 C=3.70561 mu=3.6671 alpha=39.73 epsHOMO=-0.25 epsLUMO=0.038 epsgap=0.288 =355.0934 zpve=0.080442 U0=-247.225618 U=-247.220897 H=-247.219953 G=-247.253218 Cv=16.1 pbc="F F F" +O 0.03184134 -0.03461682 0.00849836 +C -0.02440334 1.16440533 0.02160811 +C -1.14541322 2.23712809 0.03012901 +C 0.00928805 3.27945878 0.04557758 +N 0.93843838 2.14652109 0.03554396 +H -1.77030529 2.23779730 -0.86428437 +H -1.77632809 2.21765386 0.92007934 +H 0.07170564 3.91863516 -0.84072193 +H 0.06622603 3.89826625 0.94657952 +H 1.94616840 2.09535713 0.03855945 +9 +Properties=species:S:1:pos:R:3 A=12.44643 B=5.23328 C=3.86599 mu=3.9339 alpha=35.4 epsHOMO=-0.2788 epsLUMO=0.0089 epsgap=0.2878 =336.0792 zpve=0.068574 U0=-267.106213 U=-267.101929 H=-267.100985 G=-267.13332 Cv=14.483 pbc="F F F" +O 0.04424004 0.03933243 -0.33071104 +C -0.04854479 1.17416230 0.00410076 +C -1.14211656 2.23611850 0.15338361 +C 0.02332538 3.12357010 0.61681625 +O 0.95663808 2.01190122 0.42603746 +H -1.62573755 2.51482212 -0.78401102 +H -1.90009213 1.99553386 0.90028663 +H 0.28368077 3.96172751 -0.03229287 +H 0.00782250 3.43942655 1.66162725 +10 +Properties=species:S:1:pos:R:3 A=11.54185 B=4.90368 C=3.63309 mu=2.5257 alpha=39.34 epsHOMO=-0.2437 epsLUMO=-0.0258 epsgap=0.2179 =359.152 zpve=0.07965 U0=-247.190194 U=-247.185543 H=-247.184599 G=-247.217688 Cv=16.083 pbc="F F F" +O 0.00053891 0.00665475 -0.09743049 +C -0.01371990 1.19213881 0.03139936 +C -1.10668681 2.26612284 0.17247913 +N -0.03543445 3.25123475 0.48533693 +C 1.05328615 2.29521506 0.14383904 +H -1.65047970 2.42796175 -0.76886054 +H -1.83606786 2.11370530 0.97567410 +H -0.05434600 4.07193609 -0.10727051 +H 1.80754206 2.16277968 0.92736250 +H 1.56737937 2.47130277 -0.81152688 +9 +Properties=species:S:1:pos:R:3 A=12.18264 B=4.94228 C=3.68162 mu=0.8477 alpha=35.94 epsHOMO=-0.2647 epsLUMO=-0.0352 epsgap=0.2295 =344.5473 zpve=0.066989 U0=-267.068488 U=-267.063976 H=-267.063032 G=-267.095887 Cv=15.115 pbc="F F F" +O -0.00031692 0.00676321 -0.17139774 +C -0.01417098 1.18672865 -0.00980279 +C -1.08283120 2.27653381 0.15574094 +O -0.03856115 3.26460423 0.27513986 +C 1.02857270 2.30515693 0.12774311 +H -1.72923855 2.43647507 -0.71671274 +H -1.70219898 2.19346725 1.05800754 +H 1.67366781 2.23923293 1.01324179 +H 1.64705068 2.48224548 -0.76148355 +15 +Properties=species:S:1:pos:R:3 A=9.63416 B=4.10254 C=3.28665 mu=0.095 alpha=52.94 epsHOMO=-0.2896 epsLUMO=0.0927 epsgap=0.3823 =455.0215 zpve=0.138424 U0=-196.407957 U=-196.40245 H=-196.401505 G=-196.436159 Cv=20.299 pbc="F F F" +C -0.47005934 1.44206547 -0.06684548 +C 0.14287306 0.05485144 0.03747984 +C 1.37254693 -0.30295273 -0.84679168 +C 1.95947994 -1.09364561 0.35326039 +C 0.99887433 -0.30768787 1.28563099 +H 0.29210839 2.21844829 0.06844100 +H -0.93614604 1.60094605 -1.04612799 +H -1.24148161 1.59707353 0.69627593 +H -0.63517341 -0.70560132 -0.10055095 +H 1.19338376 -0.84118177 -1.78129390 +H 1.96867777 0.58857708 -1.07004184 +H 1.69873597 -2.15500718 0.30521100 +H 3.03253510 -1.01077235 0.54148058 +H 1.48290386 0.58242428 1.70211026 +H 0.51304296 -0.84979686 2.10121062 +13 +Properties=species:S:1:pos:R:3 A=9.93129 B=4.56362 C=3.63704 mu=1.6826 alpha=45.72 epsHOMO=-0.241 epsLUMO=0.0915 epsgap=0.3325 =407.6909 zpve=0.11459 U0=-232.33123 U=-232.325877 H=-232.324933 G=-232.359589 Cv=18.582 pbc="F F F" +C -0.32308228 1.53751451 0.01947624 +C 0.11847214 0.08900172 -0.00523140 +C 0.87489284 -0.43763303 -1.24721738 +C 1.97841048 -0.80657483 -0.23740356 +O 1.27344926 -0.15419108 0.83794040 +H 0.49211985 2.19658795 -0.29527664 +H -1.17615835 1.68923490 -0.65134808 +H -0.62776963 1.82747912 1.03013205 +H -0.71410200 -0.56389187 0.29597305 +H 0.41033314 -1.26269706 -1.78910031 +H 1.15560811 0.34596269 -1.95459519 +H 2.09501012 -1.88349764 -0.05606083 +H 2.96970344 -0.36924147 -0.40408009 +13 +Properties=species:S:1:pos:R:3 A=10.13697 B=4.32512 C=3.50912 mu=1.8995 alpha=45.45 epsHOMO=-0.2419 epsLUMO=0.0814 epsgap=0.3233 =414.1575 zpve=0.114694 U0=-232.325947 U=-232.320548 H=-232.319604 G=-232.354576 Cv=18.443 pbc="F F F" +C -0.18371124 1.54668909 -0.01671129 +C 0.04513382 0.04386724 0.02270494 +C 1.20301104 -0.54034580 -0.81983464 +O 1.80061686 -1.15530615 0.33924991 +C 0.83391983 -0.54313754 1.21648003 +H 0.75102609 2.09256015 0.15344911 +H -0.58319248 1.86155707 -0.98694169 +H -0.89843724 1.85917126 0.75244153 +H -0.89506736 -0.48768372 -0.14843995 +H 0.93560472 -1.27857588 -1.58543917 +H 1.86392938 0.21379924 -1.27081649 +H 1.29414565 0.20948993 1.87273952 +H 0.31517042 -1.28326856 1.83756393 +13 +Properties=species:S:1:pos:R:3 A=10.09703 B=4.26865 C=3.40487 mu=1.4604 alpha=45.55 epsHOMO=-0.256 epsLUMO=0.0801 epsgap=0.3361 =413.9118 zpve=0.115063 U0=-232.333258 U=-232.328097 H=-232.327153 G=-232.361103 Cv=19.023 pbc="F F F" +O 0.54622847 1.03270424 -0.58398083 +C -0.00112269 -0.11036621 0.01898238 +C 0.13945950 -0.34310429 1.54777117 +C -1.26863784 -0.99876517 1.51632654 +C -1.53844651 -0.26418236 0.17423510 +H 0.20332379 1.80433874 -0.12071219 +H 0.41296647 -0.95857955 -0.53560402 +H 0.98890738 -0.92719626 1.90921867 +H 0.11786549 0.61323034 2.08356053 +H -1.20828813 -2.08191064 1.38036699 +H -1.94143614 -0.79119746 2.35014116 +H -2.00495682 0.71307933 0.34581493 +H -2.09160311 -0.78230202 -0.61249171 +11 +Properties=species:S:1:pos:R:3 A=10.85394 B=4.52867 C=3.62328 mu=2.4158 alpha=38.58 epsHOMO=-0.2465 epsLUMO=0.0604 epsgap=0.3069 =374.4087 zpve=0.091005 U0=-268.248371 U=-268.243234 H=-268.24229 G=-268.276572 Cv=17.344 pbc="F F F" +O 0.07721714 1.41738724 -0.14439016 +C 0.01675156 0.02484791 0.03233817 +C 0.11193823 -0.54392541 1.47000744 +O -1.16387804 -1.20093191 1.32441605 +C -1.41930178 -0.52040930 0.07750673 +H 1.00022214 1.67889479 -0.21697466 +H 0.66036495 -0.50380879 -0.68180327 +H 0.91806589 -1.25385265 1.68878628 +H 0.09146208 0.24427487 2.23499232 +H -2.16139683 0.28183960 0.18222436 +H -1.72867456 -1.20941157 -0.71550887 +15 +Properties=species:S:1:pos:R:3 A=7.14221 B=4.37083 C=3.30265 mu=0.1023 alpha=52.92 epsHOMO=-0.2632 epsLUMO=0.094 epsgap=0.3573 =465.3301 zpve=0.137341 U0=-196.406419 U=-196.40034 H=-196.399396 G=-196.435152 Cv=22.005 pbc="F F F" +C -0.05189850 1.55217435 -0.10318438 +C 0.01226648 0.04690675 0.03747520 +C 1.30115692 -0.70661553 -0.19725724 +C 0.70431939 -0.64893239 1.19003562 +C 1.39750324 0.09481280 2.31078011 +H 0.87404209 2.03543171 0.22162228 +H -0.21641357 1.83695278 -1.14852958 +H -0.87157646 1.97673684 0.48797046 +H -0.88508206 -0.45596941 -0.31580786 +H 1.27663658 -1.64149022 -0.74697967 +H 2.19424067 -0.11404121 -0.37569359 +H 0.21672461 -1.56377934 1.51902400 +H 1.91317356 0.99051175 1.95271747 +H 0.68738009 0.40901468 3.08446972 +H 2.14934633 -0.54151807 2.79111543 +13 +Properties=species:S:1:pos:R:3 A=7.36997 B=4.78662 C=3.53123 mu=1.3092 alpha=45.84 epsHOMO=-0.2518 epsLUMO=0.0822 epsgap=0.334 =418.298 zpve=0.113827 U0=-232.32907 U=-232.323327 H=-232.322383 G=-232.357426 Cv=20.702 pbc="F F F" +C -0.07992786 1.55914739 -0.03875994 +C 0.00042206 0.05111569 0.04346551 +C 1.31748624 -0.66230034 -0.20269965 +C 0.71624326 -0.61854924 1.18128126 +O 1.28134126 0.21474798 2.15341739 +H 0.80207677 2.01979988 0.41147972 +H -0.15235410 1.89225261 -1.07968732 +H -0.95836082 1.93564781 0.49643179 +H -0.88615174 -0.46939753 -0.30918496 +H 1.32384464 -1.60086657 -0.74666557 +H 2.18619315 -0.03316813 -0.37068758 +H 0.28509951 -1.54025035 1.57291630 +H 2.12931661 -0.16234387 2.40895930 +14 +Properties=species:S:1:pos:R:3 A=7.53724 B=4.74514 C=3.54049 mu=1.2483 alpha=49.79 epsHOMO=-0.2199 epsLUMO=0.0931 epsgap=0.313 =432.5081 zpve=0.125556 U0=-212.438188 U=-212.432286 H=-212.431342 G=-212.466725 Cv=20.993 pbc="F F F" +C -0.17034561 1.55765735 -0.10065470 +C 0.01075256 0.05574638 -0.05225833 +C 0.71794239 -0.67802425 -1.14204150 +N 1.29811574 -0.59777508 0.19386866 +C 2.50047290 0.20256923 0.36428818 +H 0.60876703 2.05717913 -0.68119301 +H -1.13238698 1.79957181 -0.56489127 +H -0.17350949 1.98946323 0.90659028 +H -0.81010441 -0.46148051 0.44427396 +H 0.39136106 -1.66274618 -1.46771171 +H 1.16668484 -0.06908735 -1.92776126 +H 2.58340476 1.06745445 -0.31262255 +H 2.55143652 0.56892747 1.39502638 +H 3.37185012 -0.43769461 0.19201862 +13 +Properties=species:S:1:pos:R:3 A=8.15202 B=4.38313 C=3.43318 mu=1.8159 alpha=46.02 epsHOMO=-0.2573 epsLUMO=0.0984 epsgap=0.3557 =432.2224 zpve=0.113178 U0=-232.334436 U=-232.32857 H=-232.327626 G=-232.363064 Cv=20.451 pbc="F F F" +C -0.03345961 1.54674842 -0.13373520 +C -0.04966080 0.05914273 0.10861437 +O 1.17261123 -0.65888877 -0.09925231 +C 0.62653087 -0.62548063 1.22492030 +C 1.43849738 0.05647689 2.29618065 +H 0.84261573 2.02417904 0.30895947 +H -0.02020603 1.75197977 -1.20938503 +H -0.93419215 2.01073729 0.28317577 +H -0.92262410 -0.44789053 -0.31001063 +H 0.19593793 -1.58039168 1.53656778 +H 1.84118250 1.01302927 1.95813013 +H 0.82514514 0.22925358 3.18745348 +H 2.28152757 -0.57796414 2.58961605 diff --git a/latest/_static/scripts/furo-extensions.js b/latest/_static/scripts/furo-extensions.js new file mode 100644 index 000000000..e69de29bb diff --git a/latest/_static/scripts/furo.js b/latest/_static/scripts/furo.js new file mode 100644 index 000000000..32e7c05be --- /dev/null +++ b/latest/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={212:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(212),e=n.n(t),o=null,r=null,c=window.pageYOffset||document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;n=t,0==Math.floor(r.getBoundingClientRect().top)?r.classList.add("scrolled"):r.classList.remove("scrolled"),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/latest/_static/scripts/furo.js.LICENSE.txt b/latest/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 000000000..1632189c7 --- /dev/null +++ b/latest/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/latest/_static/scripts/furo.js.map b/latest/_static/scripts/furo.js.map new file mode 100644 index 000000000..470530223 --- /dev/null +++ b/latest/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":";iCAAA,MAQWA,SAWS,IAAX,EAAAC,EACH,EAAAA,EACkB,oBAAXC,OACLA,OACAC,KAbO,EAAF,WACP,OAaJ,SAAUD,GACR,aAMA,IAAIE,EAAW,CAEbC,SAAU,SACVC,aAAc,SAGdC,QAAQ,EACRC,YAAa,SAGbC,OAAQ,EACRC,QAAQ,EAGRC,QAAQ,GA6BNC,EAAY,SAAUC,EAAMC,EAAMC,GAEpC,GAAKA,EAAOC,SAASL,OAArB,CAGA,IAAIM,EAAQ,IAAIC,YAAYL,EAAM,CAChCM,SAAS,EACTC,YAAY,EACZL,OAAQA,IAIVD,EAAKO,cAAcJ,EAVgB,CAWrC,EAOIK,EAAe,SAAUR,GAC3B,IAAIS,EAAW,EACf,GAAIT,EAAKU,aACP,KAAOV,GACLS,GAAYT,EAAKW,UACjBX,EAAOA,EAAKU,aAGhB,OAAOD,GAAY,EAAIA,EAAW,CACpC,EAMIG,EAAe,SAAUC,GACvBA,GACFA,EAASC,MAAK,SAAUC,EAAOC,GAG7B,OAFcR,EAAaO,EAAME,SACnBT,EAAaQ,EAAMC,UACF,EACxB,CACT,GAEJ,EAwCIC,EAAW,SAAUlB,EAAME,EAAUiB,GACvC,IAAIC,EAASpB,EAAKqB,wBACd1B,EAnCU,SAAUO,GAExB,MAA+B,mBAApBA,EAASP,OACX2B,WAAWpB,EAASP,UAItB2B,WAAWpB,EAASP,OAC7B,CA2Be4B,CAAUrB,GACvB,OAAIiB,EAEAK,SAASJ,EAAOD,OAAQ,KACvB/B,EAAOqC,aAAeC,SAASC,gBAAgBC,cAG7CJ,SAASJ,EAAOS,IAAK,KAAOlC,CACrC,EAMImC,EAAa,WACf,OACEC,KAAKC,KAAK5C,EAAOqC,YAAcrC,EAAO6C,cAnCjCF,KAAKG,IACVR,SAASS,KAAKC,aACdV,SAASC,gBAAgBS,aACzBV,SAASS,KAAKE,aACdX,SAASC,gBAAgBU,aACzBX,SAASS,KAAKP,aACdF,SAASC,gBAAgBC,aAkC7B,EAmBIU,EAAY,SAAUzB,EAAUX,GAClC,IAAIqC,EAAO1B,EAASA,EAAS2B,OAAS,GACtC,GAbgB,SAAUC,EAAMvC,GAChC,SAAI4B,MAAgBZ,EAASuB,EAAKxB,QAASf,GAAU,GAEvD,CAUMwC,CAAYH,EAAMrC,GAAW,OAAOqC,EACxC,IAAK,IAAII,EAAI9B,EAAS2B,OAAS,EAAGG,GAAK,EAAGA,IACxC,GAAIzB,EAASL,EAAS8B,GAAG1B,QAASf,GAAW,OAAOW,EAAS8B,EAEjE,EAOIC,EAAmB,SAAUC,EAAK3C,GAEpC,GAAKA,EAAST,QAAWoD,EAAIC,WAA7B,CAGA,IAAIC,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASR,aAG7BkD,EAAiBG,EAAI7C,GAV0B,CAWjD,EAOIiD,EAAa,SAAUC,EAAOlD,GAEhC,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUC,OAAOhD,EAASX,UAC7B6D,EAAMnC,QAAQgC,UAAUC,OAAOhD,EAASV,cAGxCoD,EAAiBG,EAAI7C,GAGrBJ,EAAU,oBAAqBiD,EAAI,CACjCM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,EAOIoD,EAAiB,SAAUT,EAAK3C,GAElC,GAAKA,EAAST,OAAd,CAGA,IAAIsD,EAAKF,EAAIC,WAAWE,QAAQ,MAC3BD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASR,aAG1B4D,EAAeP,EAAI7C,GAVS,CAW9B,EA6LA,OA1JkB,SAAUsD,EAAUC,GAKpC,IACIC,EAAU7C,EAAU8C,EAASC,EAAS1D,EADtC2D,EAAa,CAUjBA,MAAmB,WAEjBH,EAAWhC,SAASoC,iBAAiBN,GAGrC3C,EAAW,GAGXkD,MAAMC,UAAUC,QAAQC,KAAKR,GAAU,SAAUjB,GAE/C,IAAIxB,EAAUS,SAASyC,eACrBC,mBAAmB3B,EAAK4B,KAAKC,OAAO,KAEjCrD,GAGLJ,EAAS0D,KAAK,CACZ1B,IAAKJ,EACLxB,QAASA,GAEb,IAGAL,EAAaC,EACf,EAKAgD,OAAoB,WAElB,IAAIW,EAASlC,EAAUzB,EAAUX,GAG5BsE,EASDb,GAAWa,EAAOvD,UAAY0C,EAAQ1C,UAG1CkC,EAAWQ,EAASzD,GAzFT,SAAUkD,EAAOlD,GAE9B,GAAKkD,EAAL,CAGA,IAAIL,EAAKK,EAAMP,IAAIG,QAAQ,MACtBD,IAGLA,EAAGE,UAAUM,IAAIrD,EAASX,UAC1B6D,EAAMnC,QAAQgC,UAAUM,IAAIrD,EAASV,cAGrC8D,EAAeP,EAAI7C,GAGnBJ,EAAU,kBAAmBiD,EAAI,CAC/BM,KAAMD,EAAMP,IACZ5B,QAASmC,EAAMnC,QACff,SAAUA,IAjBM,CAmBpB,CAqEIuE,CAASD,EAAQtE,GAGjByD,EAAUa,GAfJb,IACFR,EAAWQ,EAASzD,GACpByD,EAAU,KAchB,GAMIe,EAAgB,SAAUvE,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,sBAAsBf,EAAWgB,OACpD,EAMIC,EAAgB,SAAU3E,GAExByD,GACFxE,EAAOuF,qBAAqBf,GAI9BA,EAAUxE,EAAOwF,uBAAsB,WACrChE,EAAaC,GACbgD,EAAWgB,QACb,GACF,EAkDA,OA7CAhB,EAAWkB,QAAU,WAEfpB,GACFR,EAAWQ,EAASzD,GAItBd,EAAO4F,oBAAoB,SAAUN,GAAe,GAChDxE,EAASN,QACXR,EAAO4F,oBAAoB,SAAUF,GAAe,GAItDjE,EAAW,KACX6C,EAAW,KACXC,EAAU,KACVC,EAAU,KACV1D,EAAW,IACb,EAOEA,EA3XS,WACX,IAAI+E,EAAS,CAAC,EAOd,OANAlB,MAAMC,UAAUC,QAAQC,KAAKgB,WAAW,SAAUC,GAChD,IAAK,IAAIC,KAAOD,EAAK,CACnB,IAAKA,EAAIE,eAAeD,GAAM,OAC9BH,EAAOG,GAAOD,EAAIC,EACpB,CACF,IACOH,CACT,CAkXeK,CAAOhG,EAAUmE,GAAW,CAAC,GAGxCI,EAAW0B,QAGX1B,EAAWgB,SAGXzF,EAAOoG,iBAAiB,SAAUd,GAAe,GAC7CxE,EAASN,QACXR,EAAOoG,iBAAiB,SAAUV,GAAe,GAS9CjB,CACT,CAOF,CArcW4B,CAAQvG,EAChB,UAFM,SAEN,uBCXDwG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIC,EAASN,EAAyBE,GAAY,CAGjDG,QAAS,CAAC,GAOX,OAHAE,EAAoBL,GAAU1B,KAAK8B,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAGpEK,EAAOD,OACf,CCrBAJ,EAAoBO,EAAKF,IACxB,IAAIG,EAASH,GAAUA,EAAOI,WAC7B,IAAOJ,EAAiB,QACxB,IAAM,EAEP,OADAL,EAAoBU,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,CAAM,ECLdR,EAAoBU,EAAI,CAACN,EAASQ,KACjC,IAAI,IAAInB,KAAOmB,EACXZ,EAAoBa,EAAED,EAAYnB,KAASO,EAAoBa,EAAET,EAASX,IAC5EqB,OAAOC,eAAeX,EAASX,EAAK,CAAEuB,YAAY,EAAMC,IAAKL,EAAWnB,IAE1E,ECNDO,EAAoBxG,EAAI,WACvB,GAA0B,iBAAf0H,WAAyB,OAAOA,WAC3C,IACC,OAAOxH,MAAQ,IAAIyH,SAAS,cAAb,EAChB,CAAE,MAAOC,GACR,GAAsB,iBAAX3H,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBuG,EAAoBa,EAAI,CAACrB,EAAK6B,IAAUP,OAAOzC,UAAUqB,eAAenB,KAAKiB,EAAK6B,4CCK9EC,EAAY,KACZC,EAAS,KACTC,EAAgB/H,OAAO6C,aAAeP,SAASC,gBAAgByF,UACnE,MAAMC,EAAmB,GA2EzB,SAASC,IACP,MAAMC,EAAeC,aAAaC,QAAQ,UAAY,OAZxD,IAAkBC,EACH,WADGA,EAaItI,OAAOuI,WAAW,gCAAgCC,QAI/C,SAAjBL,EACO,QACgB,SAAhBA,EACA,OAEA,OAIU,SAAjBA,EACO,OACgB,QAAhBA,EACA,QAEA,SA9BoB,SAATG,GAA4B,SAATA,IACzCG,QAAQC,MAAM,2BAA2BJ,yBACzCA,EAAO,QAGThG,SAASS,KAAK4F,QAAQC,MAAQN,EAC9BF,aAAaS,QAAQ,QAASP,GAC9BG,QAAQK,IAAI,cAAcR,UA0B5B,CAkDA,SAASnC,KART,WAEE,MAAM4C,EAAUzG,SAAS0G,uBAAuB,gBAChDrE,MAAMsE,KAAKF,GAASlE,SAASqE,IAC3BA,EAAI9C,iBAAiB,QAAS8B,EAAe,GAEjD,CAGEiB,GA9CF,WAEE,IAAIC,EAA6B,EAC7BC,GAAU,EAEdrJ,OAAOoG,iBAAiB,UAAU,SAAUuB,GAC1CyB,EAA6BpJ,OAAOsJ,QAE/BD,IACHrJ,OAAOwF,uBAAsB,WAzDnC,IAAuB+D,IA0DDH,EA9GkC,GAAlDzG,KAAK6G,MAAM1B,EAAO7F,wBAAwBQ,KAC5CqF,EAAOjE,UAAUM,IAAI,YAErB2D,EAAOjE,UAAUC,OAAO,YAI5B,SAAmCyF,GAC7BA,EAAYtB,EACd3F,SAASC,gBAAgBsB,UAAUC,OAAO,oBAEtCyF,EAAYxB,EACdzF,SAASC,gBAAgBsB,UAAUM,IAAI,oBAC9BoF,EAAYxB,GACrBzF,SAASC,gBAAgBsB,UAAUC,OAAO,oBAG9CiE,EAAgBwB,CAClB,CAoCEE,CAA0BF,GAlC5B,SAA6BA,GACT,OAAd1B,IAKa,GAAb0B,EACF1B,EAAU6B,SAAS,EAAG,GAGtB/G,KAAKC,KAAK2G,IACV5G,KAAK6G,MAAMlH,SAASC,gBAAgBS,aAAehD,OAAOqC,aAE1DwF,EAAU6B,SAAS,EAAG7B,EAAU7E,cAGhBV,SAASqH,cAAc,mBAc3C,CAKEC,CAAoBL,GAwDdF,GAAU,CACZ,IAEAA,GAAU,EAEd,IACArJ,OAAO6J,QACT,CA6BEC,GA1BkB,OAAdjC,GAKJ,IAAI,IAAJ,CAAY,cAAe,CACzBrH,QAAQ,EACRuJ,WAAW,EACX5J,SAAU,iBACVI,OAAQ,KACN,IAAIyJ,EAAM9H,WAAW+H,iBAAiB3H,SAASC,iBAAiB2H,UAChE,OAAOpC,EAAO7F,wBAAwBkI,OAAS,GAAMH,EAAM,CAAC,GAiBlE,CAcA1H,SAAS8D,iBAAiB,oBAT1B,WACE9D,SAASS,KAAKW,WAAWG,UAAUC,OAAO,SAE1CgE,EAASxF,SAASqH,cAAc,UAChC9B,EAAYvF,SAASqH,cAAc,eAEnCxD,GACF","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = window.pageYOffset || document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader() {\n if (Math.floor(header.getBoundingClientRect().top) == 0) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader();\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 0.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","floor","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/latest/_static/searchtools.js b/latest/_static/searchtools.js new file mode 100644 index 000000000..7918c3fab --- /dev/null +++ b/latest/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/latest/_static/skeleton.css b/latest/_static/skeleton.css new file mode 100644 index 000000000..467c878c6 --- /dev/null +++ b/latest/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/latest/_static/sphinx_highlight.js b/latest/_static/sphinx_highlight.js new file mode 100644 index 000000000..8a96c69a1 --- /dev/null +++ b/latest/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/latest/_static/styles/furo-extensions.css b/latest/_static/styles/furo-extensions.css new file mode 100644 index 000000000..bc447f228 --- /dev/null +++ b/latest/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;opacity:1;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/latest/_static/styles/furo-extensions.css.map b/latest/_static/styles/furo-extensions.css.map new file mode 100644 index 000000000..9ba5637f9 --- /dev/null +++ b/latest/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAKE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cALA,UASA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UC5CN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Make it visible\n opacity: 1\n\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/latest/_static/styles/furo.css b/latest/_static/styles/furo.css new file mode 100644 index 000000000..3d29a218f --- /dev/null +++ b/latest/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.15}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#646776;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2962ff;--color-brand-content:#2a5adf;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link--hover:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link-underline--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#ffffffcc;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2b8cee;--color-brand-content:#368ce2;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#ffffffcc;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#2b8cee;--color-brand-content:#368ce2;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto,body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link);text-decoration-color:var(--color-link-underline--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{background:var(--color-background-primary);color:var(--color-foreground-primary);height:100%}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{vertical-align:middle}.theme-toggle{background:transparent;border:none;cursor:pointer;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1rem;vertical-align:middle;width:1rem}.theme-toggle-header{float:left;padding:1rem .5rem}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1rem;width:1rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg{color:inherit;height:1rem;width:1rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{fill:currentColor;display:inline-block;height:1rem;width:1rem}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.theme-toggle-header{display:block}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.25rem;width:1.25rem}:target{scroll-margin-top:var(--header-height)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}.content{margin-left:auto;margin-right:auto}}@media(max-width:52em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){.content{padding:0 1em}article aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:3.5rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}.versionmodified{font-style:italic}div.deprecated p,div.versionadded p,div.versionchanged p{margin-bottom:.125rem;margin-top:.125rem}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>p,div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}.table-wrapper{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='12' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' stroke-width='1.5' stroke='%23607D8B' fill='none' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M0 0h24v24H0z' stroke='none'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree .reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling.Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/latest/_static/styles/furo.css.map b/latest/_static/styles/furo.css.map new file mode 100644 index 000000000..1924b3334 --- /dev/null +++ b/latest/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"AAAA,2EAA2E,CAU3E,KAEE,6BAA8B,CAD9B,gBAEF,CASA,KACE,QACF,CAMA,KACE,aACF,CAOA,GACE,aAAc,CACd,cACF,CAUA,GACE,sBAAuB,CACvB,QAAS,CACT,gBACF,CAOA,IACE,+BAAiC,CACjC,aACF,CASA,EACE,4BACF,CAOA,YACE,kBAAmB,CACnB,yBAA0B,CAC1B,gCACF,CAMA,SAEE,kBACF,CAOA,cAGE,+BAAiC,CACjC,aACF,CAeA,QAEE,aAAc,CACd,aAAc,CACd,iBAAkB,CAClB,uBACF,CAEA,IACE,aACF,CAEA,IACE,SACF,CASA,IACE,iBACF,CAUA,sCAKE,mBAAoB,CACpB,cAAe,CACf,gBAAiB,CACjB,QACF,CAOA,aAEE,gBACF,CAOA,cAEE,mBACF,CAMA,gDAIE,yBACF,CAMA,wHAIE,iBAAkB,CAClB,SACF,CAMA,4GAIE,6BACF,CAMA,SACE,0BACF,CASA,OACE,qBAAsB,CACtB,aAAc,CACd,aAAc,CACd,cAAe,CACf,SAAU,CACV,kBACF,CAMA,SACE,uBACF,CAMA,SACE,aACF,CAOA,6BAEE,qBAAsB,CACtB,SACF,CAMA,kFAEE,WACF,CAOA,cACE,4BAA6B,CAC7B,mBACF,CAMA,yCACE,uBACF,CAOA,6BACE,yBAA0B,CAC1B,YACF,CASA,QACE,aACF,CAMA,QACE,iBACF,CAiBA,kBACE,YACF,CCvVA,aAcE,kEACE,uBAOF,WACE,iDAMF,gCACE,wBAEF,qCAEE,uBADA,uBACA,CAEF,SACE,wBAtBA,CCpBJ,iBAOE,6BAEA,mBANA,qBAEA,sBACA,0BAFA,oBAHA,4BAOA,6BANA,mBAOA,CAEF,gBACE,aCPF,KCGE,mHAEA,wGAGA,wBAAyB,CACzB,wBAAyB,CACzB,4BAA6B,CAC7B,yBAA0B,CAC1B,2BAA4B,CAG5B,sDAAuD,CACvD,gDAAiD,CACjD,wDAAyD,CAGzD,0CAA2C,CAC3C,gDAAiD,CACjD,gDAAiD,CAKjD,gCAAiC,CACjC,sCAAuC,CAGvC,2CAA4C,CAG5C,uCAAwC,CChCxC,+FAGA,uBAAwB,CAGxB,iCAAkC,CAClC,kCAAmC,CAEnC,+BAAgC,CAChC,sCAAuC,CACvC,sCAAuC,CACvC,qGAIA,mDAAoD,CAEpD,mCAAoC,CACpC,8CAA+C,CAC/C,gDAAiD,CACjD,kCAAmC,CACnC,6DAA8D,CAG9D,6BAA8B,CAC9B,6BAA8B,CAC9B,+BAAgC,CAChC,kCAAmC,CACnC,kCAAmC,CCPjC,ukBCYA,srCAZF,kaCVA,mLAOA,oTAWA,2UAaA,0CACA,gEACA,0CAGA,gEAUA,yCACA,+DAGA,4CACA,CACA,iEAGA,sGACA,uCACA,4DAGA,sCACA,2DAEA,4CACA,kEACA,oGACA,CAEA,0GACA,+CAGA,+MAOA,+EACA,wCAIA,4DACA,sEACA,kEACA,sEACA,gDAGA,+DACA,0CACA,gEACA,gGACA,CAGA,2DACA,qDAGA,0CACA,8CACA,oDACA,oDL7GF,iCAEA,iEAME,oCKyGA,yDAIA,sCACA,kCACA,sDAGA,0CACA,kEACA,oDAEA,sDAGA,oCACA,oEAIA,CAGA,yDAGA,qDACA,oDAGA,6DAIA,iEAGA,2DAEA,2DL9IE,4DAEA,gEAIF,gEKgGA,gFAIA,oNAOA,qDAEA,gFAIA,4DAIA,oEAMA,yEAIA,6DACA,0DAGA,uDAGA,qDAEA,wDLpII,6DAEA,yDACE,2DAMN,uCAIA,yCACE,8CAGF,sDMjDA,6DAKA,oCAIA,4CACA,kBAGF,sBAMA,2BAME,qCAGA,qCAEA,iCAEA,+BAEA,mCAEA,qCAIA,CACA,gCACA,gDAKA,kCAIA,6BAEA,0CAQA,kCAIF,8BAGE,8BACA,uCAGF,sCAKE,kCAEA,sDAGA,iCACE,CACA,2FAGA,gCACE,CACA,+DCzEJ,wCAEA,sBAEF,yDAEE,mCACA,wDAGA,2GAGA,wIACE,gDAMJ,kCAGE,6BACA,0CAGA,gEACA,8BACA,uCAKA,sCAIA,kCACA,sDACA,iCACA,sCAOA,sDAKE,gGAIE,+CAGN,sBAEE,yCAMA,0BAOA,yLAKA,aACA,MAEF,6BACE,mBAEA,wCAEF,wCAIE,kCAGA,SACA,kCAKA,mBAGA,CAJA,eACA,CAHF,gBAEE,CAWA,mBACA,mBACA,mDAIA,YACA,mBACA,CAEE,kBAMF,OAPE,kBAOF,oCACA,yCAEA,wBAEA,cADA,WACA,GACA,oBACA,CAFA,gBAEA,aAGF,+CAEE,UAJE,wBAEJ,CAFI,SAIF,CACA,2BACA,GAGA,uBACE,CAJF,yBAGA,CACE,iDACA,uCAEA,yDACE,cACA,wDAKN,yDAIE,uBAEF,kBACE,uBAEA,kDAKA,0DAEA,CAHA,oBAIA,0GAWA,aAEA,CAHA,YAGA,4HAKF,+CAGE,sBAEF,WAKE,0CAGA,CANA,qCAGA,CAJA,WAOA,SAIA,0CACE,CALF,qCAIA,CACE,wBAEA,mBAEJ,gBACE,gBAIA,+CAKF,CAIE,kDAEA,CANF,8BAIE,CAEA,YAGA,CAfF,2BACE,CAHA,UAEF,CAYE,UAGA,2CACF,iEAOE,iCACA,8BAGA,wCAIA,wBAMI,0CAKF,CATA,6DAGA,CALF,qBAEE,CASA,YACA,yBAGA,CAEE,cAKN,CAPI,sBAOJ,gCAGE,qBAEA,WACA,aACA,sCAEA,mBACA,6BAGA,uEADA,qBACA,6BAIA,yBACA,qCAEE,UAEA,YACA,sBAEF,8BAGA,CAPE,aACA,WAMF,4BACE,sBACA,WAMJ,uBACE,cAYE,mBAXA,qDAKA,qCAGA,CAEA,YACA,CAHA,2BAEA,CACA,oCAEA,4CACA,uBAIA,sBAEJ,eAFI,cAIF,iBACE,CAHJ,kBAGI,yBAEA,oCAIA,qDAMF,mEAGE,+CAKA,gCAEA,qCAGA,oCAGE,sBACA,CAJF,WAEE,CAFF,eAEE,SAEA,mBACA,qCACE,aACA,CAFF,YADA,qBACA,WAEE,sBACA,kEAEN,cAEE,CAFF,YAEE,iDAKA,uCAIA,2DAKA,kBAEA,CAHA,sBAGA,mBACA,0BAEJ,yBAII,aADA,WACA,CAMF,UAFE,kBAEF,CAJF,gBAEI,CAFJ,iBAIE,6CC9ZF,yBACE,WACA,iBAEA,aAFA,iBAEA,6BAEA,kCACA,mBAKA,gCAGA,CARA,QAEA,CAGA,UALA,qBAEA,qDAGA,CALA,OAQA,4BACE,cAGF,2BACE,gCAEJ,CAHE,UAGF,8CAGE,CAHF,UAGE,wCAGA,qBACA,CAFA,UAEA,6CAGA,yCAIA,sBAHA,UAGA,kCACE,OACA,CADA,KACA,cAQF,0CACE,CAFF,kBACA,CACE,wEACA,CARA,YACA,CAKF,mBAFF,MACE,CAIE,gBAJF,iCAJE,cAGJ,CANI,oBAEA,CAKF,SAIE,2BADA,UACA,kBAGF,sCACA,CAFF,WACE,WACA,mBACE,kDACA,0EACA,uDAKJ,aACE,mDAII,CAJJ,6CAII,4BACA,sCACE,kEACA,+CACE,aACA,WADA,+BACA,uEANN,YACE,mDAEE,mBADF,0CACE,CADF,qBACE,0DACA,YACE,4DACA,sEANN,YACE,8CACA,kBADA,UACA,2CACE,2EACA,cACE,kEACA,mEANN,yBACE,4DACA,sBACE,+EAEE,iEACA,qEANN,sCACE,CAGE,iBAHF,gBAGE,qBACE,CAJJ,uBACA,gDACE,wDACA,6DAHF,2CACA,CADA,gBACA,eACE,CAGE,sBANN,8BACE,CAII,iBAFF,4DACA,WACE,YADF,uCACE,6EACA,2BANN,8CACE,kDACA,0CACE,8BACA,yFACE,sBACA,sFALJ,mEACA,sBACE,kEACA,6EACE,uCACA,kEALJ,qGAEE,kEACA,6EACE,uCACA,kEALJ,8CACA,uDACE,sEACA,2EACE,sCACA,iEALJ,mGACA,qCACE,oDACA,0DACE,6GACA,gDAGR,yDCrEA,sEACE,CACA,6GACE,gEACF,iGAIF,wFACE,qDAGA,mGAEE,2CAEF,4FACE,gCACF,wGACE,8DAEE,6FAIA,iJAKN,6GACE,gDAKF,yDACA,qCAGA,6BACA,kBACA,qDAKA,oCAEA,+DAGA,2CAGE,oDAIA,oEAEE,qBAGJ,wDAEE,uCAEF,kEAGA,8CAEA,uDAKA,oCAEA,yDAEE,gEAKF,+CC5FA,0EAGE,CACA,qDCLJ,+DAIE,sCAIA,kEACE,yBACA,2FAMA,gBACA,yGCbF,mBAOA,2MAIA,4HAYA,0DACE,8GAYF,8HAQE,mBAEA,6HAOF,YAGA,mIAME,eACA,CAFF,YAEE,4FAMJ,8BAEE,uBAYA,sCAEE,CAJF,oBAEA,CARA,wCAEA,CAHA,8BACA,CAFA,eACA,CAGA,wCAEA,CAEA,mDAIE,kCACE,6BACA,4CAKJ,kDAIA,eACE,aAGF,8BACE,uDACA,sCACA,cAEA,+BACA,CAFA,eAEA,wCAEF,YACE,iBACA,mCACA,0DAGF,qBAEE,CAFF,kBAEE,+BAIA,yCAEE,qBADA,gBACA,yBAKF,eACA,CAFF,YACE,CACA,iBACA,qDAEA,mDCvIJ,2FAOE,iCACA,CAEA,eACA,CAHA,kBAEA,CAFA,wBAGA,8BACA,eACE,CAFF,YAEE,0BACA,8CAGA,oBACE,oCAGA,kBACE,8DAEA,iBAEN,UACE,8BAIJ,+CAEE,qDAEF,kDAIE,YAEF,CAFE,YAEF,CCjCE,mFAJA,QACA,UAIE,CADF,iBACE,mCAGA,iDACE,+BAGF,wBAEA,mBAKA,6CAEF,CAHE,mBACA,CAEF,kCAIE,CARA,kBACA,CAFF,eASE,YACA,mBAGF,CAJE,UAIF,wCCjCA,oBDmCE,wBCpCJ,uCACE,8BACA,4CACA,oBAGA,2CCAA,6CAGE,CAPF,uBAIA,CDGA,gDACE,6BCVJ,CAWM,2CAEF,CAJA,kCAEE,CDJF,aCLF,gBDKE,uBCMA,gCAGA,gDAGE,wBAGJ,0BAEA,iBACE,aACF,CADE,UACF,uBACE,aACF,oBACE,YACF,4BACE,6CAMA,CAYF,6DAZE,mCAGE,iCASJ,4BAGE,4DADA,+BACA,CAFA,qBAEA,yBACE,aAEF,wBAHA,SAGA,iHACE,2DAKF,CANA,yCACE,CADF,oCAMA,uSAIA,sGACE,oDChEJ,WAEF,yBACE,QACA,eAEA,gBAEE,uCAGA,CALF,iCAKE,uCAGA,0BACA,CACA,oBACA,iCClBJ,gBACE,KAGF,qBACE,YAGF,CAHE,cAGF,gCAEE,mBACA,iEAEA,oCACA,wCAEA,sBACA,WAEA,CAFA,YAEA,8EAEA,mCAFA,iBAEA,6BAIA,wEAKA,sDAIE,CARF,mDAIA,CAIE,cAEF,8CAIA,oBAFE,iBAEF,8CAGE,eAEF,CAFE,YAEF,OAEE,kBAGJ,CAJI,eACA,CAFF,mBAKF,yCCjDE,oBACA,CAFA,iBAEA,uCAKE,iBACA,qCAGA,mBCZJ,CDWI,gBCXJ,6BAEE,eACA,sBAGA,eAEA,sBACA,oDACA,iGAMA,gBAFE,YAEF,8FAME,iJClBF,YACA,gNAUE,6BAEF,oTAcI,kBACF,gHAIA,qBACE,eACF,qDACE,kBACF,6DACE,4BCxCJ,oBAEF,qCAEI,+CAGF,uBACE,uDAGJ,oBAkBE,mDAhBA,+CAaA,CAbA,oBAaA,0FAEE,CAFF,gGAbA,+BAaA,0BAGA,mQAIA,oNAEE,iBAGJ,CAHI,gBADA,gBAIJ,8CAYI,CAZJ,wCAYI,sVACE,iCAGA,uEAHA,QAGA,qXAKJ,iDAGF,CARM,+CACE,iDAIN,CALI,gBAQN,mHACE,gBAGF,2DACE,0EAOA,0EAKA,6EC/EA,iDACA,gCACA,oDAGA,qBACA,oDCFA,cACA,eAEA,yBAGF,sBAEE,iBACA,sNAWA,iBACE,kBACA,wRAgBA,kBAEA,iOAgBA,uCACE,uEAEA,kBAEF,qUAuBE,iDAIJ,CACA,geCxFF,4BAEE,CAQA,6JACA,iDAIA,sEAGA,mDAOF,iDAGE,4DAIA,8CACA,qDAEE,eAFF,cAEE,oBAEF,uBAFE,kCAGA,eACA,iBACA,mBAIA,mDACA,CAHA,uCAEA,CAJA,0CACA,CAIA,gBAJA,gBACA,oBADA,gBAIA,wBAEJ,gBAGE,6BACA,YAHA,iBAGA,gCACA,iEAEA,6CACA,sDACA,0BADA,wBACA,0BACA,oIAIA,mBAFA,YAEA,qBACA,0CAIE,uBAEF,CAHA,yBACE,CAEF,iDACE,mFAKJ,oCACE,CANE,aAKJ,CACE,qEAIA,YAFA,WAEA,CAHA,aACA,CAEA,gBACE,4BACA,sBADA,aACA,gCAMF,oCACA,yDACA,2CAEA,qBAGE,kBAEA,CACA,mCAIF,CARE,YACA,CAOF,iCAEE,CAPA,oBACA,CAQA,oBACE,uDAEJ,sDAGA,CAHA,cAGA,0BACE,oDAIA,oCACA,4BACA,sBAGA,cAEA,oFAGA,sBAEA,yDACE,CAIA,iBAJA,wBAIA,6CAJA,6CAOA,4BAGJ,CAHI,cAGJ,yCAGA,kBACE,CAIA,iDAEA,CATA,YAEF,CACE,4CAGA,kBAIA,wEAEA,wDAIF,kCAOE,iDACA,CARF,WAIE,sCAGA,CANA,2CACA,CAMA,oEARF,iBACE,CACA,qCAMA,iBAuBE,uBAlBF,YAKA,2DALA,uDAKA,CALA,sBAiBA,4CACE,CALA,gRAIF,YACE,UAEN,uBACE,YACA,mCAOE,+CAGA,8BAGF,+CAGA,4BCjNA,SDiNA,qFCjNA,gDAGA,sCACA,qCACA,sDAIF,CAIE,kDAGA,CAPF,0CAOE,kBAEA,kDAEA,CAHA,eACA,CAFA,YACA,CADA,SAIA,mHAIE,CAGA,6CAFA,oCAeE,CAbF,yBACE,qBAEJ,CAGE,oBACA,CAEA,YAFA,2CACF,CACE,uBAEA,mFAEE,CALJ,oBACE,CAEA,UAEE,gCAGF,sDAEA,yCC7CJ,oCAGA,CD6CE,yXAQE,sCCrDJ,wCAGA,oCACE","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto\n display: block\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #646776; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2962ff;\n --color-brand-content: #2a5adf;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link-underline--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #ffffffcc; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #2b8cee;\n --color-brand-content: #368ce2;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n vertical-align: middle\n\n.theme-toggle\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n vertical-align: middle\n height: 1rem\n width: 1rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n float: left\n padding: 1rem 0.5rem\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1rem\n width: 1rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page svg\n color: inherit\n height: 1rem\n width: 1rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n .theme-toggle-header\n display: block\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: var(--header-height)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 3.5rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\n.versionmodified\n font-style: italic\ndiv.versionadded, div.versionchanged, div.deprecated\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > p,\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 0.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(0.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(0.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the