From 1690a16570e24045470d97769b16db345fc2c1e2 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sat, 1 Jun 2024 14:59:36 +0200 Subject: [PATCH] added pangeo101 notebooks and images --- docs/_toc.yml | 14 +- docs/chunking_introduction.ipynb | 5870 ++++ docs/dask_introduction.ipynb | 6914 +++++ docs/data_discovery.ipynb | 39628 ++++++++++++++++++++++++ docs/images/chunked.png | Bin 0 -> 17266 bytes docs/images/dashboardlink.png | Bin 0 -> 187264 bytes docs/images/dask-xarray-explained.png | Bin 0 -> 99592 bytes docs/images/dasklab.png | Bin 0 -> 253657 bytes docs/images/datasize.png | Bin 0 -> 271359 bytes docs/images/exampledasklab.png | Bin 0 -> 368367 bytes docs/images/notchunked.png | Bin 0 -> 11446 bytes docs/references.bib | 298 + docs/visualization.ipynb | 4557 +++ docs/xarray_introduction.ipynb | 10552 +++++++ 14 files changed, 67832 insertions(+), 1 deletion(-) create mode 100755 docs/chunking_introduction.ipynb create mode 100755 docs/dask_introduction.ipynb create mode 100755 docs/data_discovery.ipynb create mode 100644 docs/images/chunked.png create mode 100644 docs/images/dashboardlink.png create mode 100644 docs/images/dask-xarray-explained.png create mode 100644 docs/images/dasklab.png create mode 100644 docs/images/datasize.png create mode 100644 docs/images/exampledasklab.png create mode 100644 docs/images/notchunked.png create mode 100644 docs/references.bib create mode 100755 docs/visualization.ipynb create mode 100755 docs/xarray_introduction.ipynb diff --git a/docs/_toc.yml b/docs/_toc.yml index ee39a18..8f896ef 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -5,6 +5,18 @@ parts: chapters: - file: agenda - file: users-getting-started - - caption: Master Pangeo@EOSC + - caption: Getting started with Pangeo@EOSC chapters: - file: object-storage-minio-test + - caption: Learning to master the Pangeo ecosystem + chapters: + - file: xarray_introduction + title: Handling multi-dimensional arrays with xarray + - file: visualization + title: Interactive plotting with holoviews + - file: data_discovery + title: Data access and discovery + - file: chunking_introduction + title: Chunking + - file: dask_introduction + title: Parallel computing with dask diff --git a/docs/chunking_introduction.ipynb b/docs/chunking_introduction.ipynb new file mode 100755 index 0000000..40ddf71 --- /dev/null +++ b/docs/chunking_introduction.ipynb @@ -0,0 +1,5870 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1bfbae7a-12f1-4787-a520-c3de7529168d", + "metadata": {}, + "source": [ + "# Data chunking" + ] + }, + { + "cell_type": "markdown", + "id": "281bb79b-1b06-42c9-98d5-6185252c86e5", + "metadata": {}, + "source": [ + "## Authors & Contributors\n", + "### Authors\n", + "- Tina Odaka, Ifremer (France), [@tinaok](https://github.com/tinaok)\n", + "- Pier Lorenzo Marasco, Ispra (Italy), [@pl-marasco](https://github.com/pl-marasco)\n", + "\n", + "### Contributors\n", + "- Anne Fouilloux, Simula Research Laboratory (Norway), [@annefou](https://github.com/annefou)\n", + "- Guillaume Eynard-Bontemps, CNES (France), [@guillaumeeb](https://github.com/guillaumeeb)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "f245decb-8706-4b55-aead-79dd7a621bdd", + "metadata": {}, + "source": [ + "
\n", + " Overview\n", + "
\n", + "
\n", + " Questions\n", + " \n", + " Objectives\n", + " \n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "013c3e5a-1ddf-4178-a05e-2ce711ab1b8b", + "metadata": {}, + "source": [ + "## Context\n", + "\n", + "When dealing with large data files or collections, it's often impossible to load all the data you want to analyze into a single computer's RAM at once. This is a situation where the Pangeo ecosystem can help you a lot. Xarray offers the possibility to work lazily on data __chunks__, which means pieces of an entire dataset. By reading a dataset in __chunks__ we can process our data piece by piece on a single computer and even on a distributed computing cluster using Dask (Cloud or HPC for instance).\n", + "\n", + "How we will process these 'chunks' in a parallel environment will be discussed in [dask_introduction](./dask_introduction.ipynb). The concept of __chunk__ will be explained here.\n", + "\n", + "When we process our data piece by piece, it's easier to have our input or ouput data also saved in __chunks__. [Zarr](https://zarr.readthedocs.io/en/stable/) is the reference library in the Pangeo ecosystem to save our Xarray multidimentional datasets in __chunks__.\n", + "\n", + "[Zarr](https://zarr.readthedocs.io/en/stable/) is not the only file format which uses __chunk__. We will also be using [kerchunk library](https://fsspec.github.io/kerchunk/) in this notebook to build a virtual __chunked__ dataset based on NetCDF files, and show how it optimizes the access and analysis of large datasets.\n", + "\n", + "The analysis is very similar to what we have done in previous episodes, however we will use data on a global coverage and not only on a small geographical area (e.g. Lombardia).\n", + "\n", + "### Data\n", + "\n", + "In this episode, we will be using Global Long Term Statistics (1999-2019) products provided by the [Copernicus Global Land Service](https://land.copernicus.eu/global/index.html) and access them through [S3-comptabile storage](https://en.wikipedia.org/wiki/Amazon_S3) ([OpenStack Object Storage \"Swift\"](https://wiki.openstack.org/wiki/Swift)) with a data catalog we have created and made publicly available." + ] + }, + { + "cell_type": "markdown", + "id": "3c600794-dd9e-400b-bd09-dbb6e7039dad", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This episode uses the following main Python packages:\n", + "\n", + "- fsspec {cite:ps}`d-fsspec-2018`\n", + "- s3fs {cite:ps}`d-s3fs-2016`\n", + "- xarray {cite:ps}`d-xarray-hoyer2017` with [`netCDF4`](https://pypi.org/project/h5netcdf/) and [`h5netcdf`](https://pypi.org/project/h5netcdf/) engines\n", + "- dask {cite:ps}`d-dask-2016`\n", + "- kerchunk {cite:ps}`d-kerchunk-2021`\n", + "- geopandas {cite:ps}`d-geopandas-jordahl2020`\n", + "- matplotlib {cite:ps}`d-matplotlib-Hunter2007`\n", + "\n", + "Please install these packages if not already available in your Python environment (see [Setup page](https://pangeo-data.github.io/foss4g-2022/before/setup.html)).\n", + "\n", + "### Packages\n", + "\n", + "In this episode, Python packages are imported when we start to use them. However, for best software practices, we recommend you to install and import all the necessary libraries at the top of your Jupyter notebook." + ] + }, + { + "cell_type": "markdown", + "id": "d1f4818f-2b6b-44c1-af77-97daf8a1c2a1", + "metadata": {}, + "source": [ + "## Global LTS\n", + "\n", + "In the previous episode, we used Long Term statistics time-series for the region of Lombardy e.g. a very small area. Now we would like to use the original dataset that has a global coverage. Let us first open a single file (for January 1999-2019) to understand how much larger the global dataset is." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "b4a418ed-c764-4577-803c-a6947db16966", + "metadata": {}, + "outputs": [], + "source": [ + "import fsspec\n", + "import s3fs\n", + "import xarray as xr" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "32bdead9-5f24-442e-93bf-715068fd330b", + "metadata": {}, + "outputs": [], + "source": [ + "fs = s3fs.S3FileSystem(anon=True,\n", + " client_kwargs={\n", + " 'endpoint_url': 'https://object-store.cloud.muni.cz'\n", + " })" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f9a41ca7-ccd2-4223-ae15-d4119d7657cd", + "metadata": {}, + "outputs": [], + "source": [ + "s3path = 's3://foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1221_GLOBE_VGT-PROBAV_V3.0.1.nc'" + ] + }, + { + "cell_type": "markdown", + "id": "7d25782c-c132-4e2d-8e72-f560c97693d2", + "metadata": {}, + "source": [ + "As shown in the [Data discovery](./data_discovery.ipynb) chapter, when we have several files to read at once, we need to use Xarray `open_mfdataset` instead of `open_dataset`. It takes a list in input, and not a single element. We can also use `open_mfdataset` with one file as done below, just as an introduction." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "af670e00-fbad-4f70-a24f-1b6dc7320a8f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 585 ms, sys: 81 ms, total: 666 ms\n", + "Wall time: 720 ms\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lon: 40320, lat: 15680)\n",
+       "Coordinates:\n",
+       "  * lon      (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "  * lat      (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n",
+       "Data variables:\n",
+       "    crs      |S1 ...\n",
+       "    min      (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "    median   (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "    max      (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "    mean     (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "    stdev    (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "    nobs     (lat, lon) float32 dask.array<chunksize=(15680, 40320), meta=np.ndarray>\n",
+       "Attributes: (12/19)\n",
+       "    Conventions:          CF-1.6\n",
+       "    parent_identifier:    urn:cgls:global:ndvi_stats_all\n",
+       "    identifier:           urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n",
+       "    long_name:            Normalized Difference Vegetation Index\n",
+       "    title:                Normalized Difference Vegetation Index: Long Term S...\n",
+       "    product_version:      V3.0.1\n",
+       "    ...                   ...\n",
+       "    source:               Derived from EO satellite imagery\n",
+       "    processing_mode:      Offline\n",
+       "    references:           https://land.copernicus.eu/global/products/ndvi\n",
+       "    copyright:            Copernicus Service information 2021\n",
+       "    archive_facility:     VITO\n",
+       "    history:              2021-03-01 - Processing line NDVI LTS
" + ], + "text/plain": [ + "\n", + "Dimensions: (lon: 40320, lat: 15680)\n", + "Coordinates:\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + " * lat (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n", + "Data variables:\n", + " crs |S1 ...\n", + " min (lat, lon) float32 dask.array\n", + " median (lat, lon) float32 dask.array\n", + " max (lat, lon) float32 dask.array\n", + " mean (lat, lon) float32 dask.array\n", + " stdev (lat, lon) float32 dask.array\n", + " nobs (lat, lon) float32 dask.array\n", + "Attributes: (12/19)\n", + " Conventions: CF-1.6\n", + " parent_identifier: urn:cgls:global:ndvi_stats_all\n", + " identifier: urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n", + " long_name: Normalized Difference Vegetation Index\n", + " title: Normalized Difference Vegetation Index: Long Term S...\n", + " product_version: V3.0.1\n", + " ... ...\n", + " source: Derived from EO satellite imagery\n", + " processing_mode: Offline\n", + " references: https://land.copernicus.eu/global/products/ndvi\n", + " copyright: Copernicus Service information 2021\n", + " archive_facility: VITO\n", + " history: 2021-03-01 - Processing line NDVI LTS" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "%%time\n", + "LTS = xr.open_mfdataset([fs.open(s3path)])\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "9e1c5fa8-f144-4330-b927-ea946fb19fce", + "metadata": {}, + "source": [ + "Using `open_mfdataset` automatically switch from Numpy Arrays to Dask Arrays as the data structure used by Xarray. " + ] + }, + { + "cell_type": "markdown", + "id": "5e82268f-d173-4baf-9239-94678d5de1b9", + "metadata": {}, + "source": [ + "
\n", + " Go Further\n", + "
\n", + "
    \n", + "
  • You can try to open the same file with xr.open_dataset(fs.open(s3path))
  • \n", + "
  • Compare the xarray output between open_mfdataset and open_dataset, what do you see as difference?
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "f05d2938-d0ea-41fe-b32c-af81a8055416", + "metadata": { + "tags": [] + }, + "source": [ + "## What is a __chunk__\n", + "\n", + "If you look carefully to `LTS`, each Data Variable is a `dask.array` with a chunk size of `(15680, 40320)`. So basically accessing one data variable would load arrays of dimensions `(15680, 40320)` into the computer's RAM. You can see this information and more details by clicking the icon as indicated in the image below.\n", + "\n", + "![Dask.array](images/datasize.png)\n", + "\n", + "When you open one or several netCDF files with `open_mdfataset`, by default, the chunks correspond to the entire size of the variable data array read from each file. When you need to analyze large files, a computer's memory may not be sufficient anymore (see in this example, 2.36GiB for one chunk!).\n", + "\n", + "This is where understanding and using chunking correctly comes into play.\n" + ] + }, + { + "cell_type": "markdown", + "id": "4c7dfb0c-5daa-41e8-bbb8-f453be29e1d7", + "metadata": {}, + "source": [ + "__Chunking__ is splitting a dataset into small pieces. \n", + "\n", + "Original dataset is in one piece, \n", + "![Dask.array](images/notchunked.png)\n", + "\n", + "and we split it into several smaller pieces. \n", + "![Dask.array](images/chunked.png)\n", + "\n", + "We split it into pieces so that we can process our data block by block or __chunk__ by __chunk__.\n", + "\n", + "In our case, for the moment, the dataset is composed of several files, so already several pieces (or just one in the example above), and Xarray just creates one chunk for each file." + ] + }, + { + "cell_type": "markdown", + "id": "77a95b34-8ecb-4dca-8c4a-861d9b078012", + "metadata": {}, + "source": [ + "## Using chunks within a single file\n", + "\n", + "When we want to read one or several big files, or files with Big Arrays (the above 2.36GiB per array is already quite big), we will almost certainly need chunks so that we can process files piece by piece.\n", + "\n", + "This is usually done with Xarray using the `chunks` kwarg when opening a file with `xr.open_dataset` or with `xr.open_mfdataset`." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3e554760-d78b-4d0f-a276-cf57f886080c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lon: 40320, lat: 15680)\n",
+       "Coordinates:\n",
+       "  * lon      (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "  * lat      (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n",
+       "Data variables:\n",
+       "    crs      |S1 ...\n",
+       "    min      (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "    median   (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "    max      (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "    mean     (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "    stdev    (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "    nobs     (lat, lon) float32 dask.array<chunksize=(7840, 20160), meta=np.ndarray>\n",
+       "Attributes: (12/19)\n",
+       "    Conventions:          CF-1.6\n",
+       "    parent_identifier:    urn:cgls:global:ndvi_stats_all\n",
+       "    identifier:           urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n",
+       "    long_name:            Normalized Difference Vegetation Index\n",
+       "    title:                Normalized Difference Vegetation Index: Long Term S...\n",
+       "    product_version:      V3.0.1\n",
+       "    ...                   ...\n",
+       "    source:               Derived from EO satellite imagery\n",
+       "    processing_mode:      Offline\n",
+       "    references:           https://land.copernicus.eu/global/products/ndvi\n",
+       "    copyright:            Copernicus Service information 2021\n",
+       "    archive_facility:     VITO\n",
+       "    history:              2021-03-01 - Processing line NDVI LTS
" + ], + "text/plain": [ + "\n", + "Dimensions: (lon: 40320, lat: 15680)\n", + "Coordinates:\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + " * lat (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n", + "Data variables:\n", + " crs |S1 ...\n", + " min (lat, lon) float32 dask.array\n", + " median (lat, lon) float32 dask.array\n", + " max (lat, lon) float32 dask.array\n", + " mean (lat, lon) float32 dask.array\n", + " stdev (lat, lon) float32 dask.array\n", + " nobs (lat, lon) float32 dask.array\n", + "Attributes: (12/19)\n", + " Conventions: CF-1.6\n", + " parent_identifier: urn:cgls:global:ndvi_stats_all\n", + " identifier: urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n", + " long_name: Normalized Difference Vegetation Index\n", + " title: Normalized Difference Vegetation Index: Long Term S...\n", + " product_version: V3.0.1\n", + " ... ...\n", + " source: Derived from EO satellite imagery\n", + " processing_mode: Offline\n", + " references: https://land.copernicus.eu/global/products/ndvi\n", + " copyright: Copernicus Service information 2021\n", + " archive_facility: VITO\n", + " history: 2021-03-01 - Processing line NDVI LTS" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LTS = xr.open_dataset(fs.open(s3path), chunks={\"lon\": 40320 / 2, \"lat\": 15680 / 2})\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "19f05ca7-1439-4a44-aad5-0dda313eeb5f", + "metadata": {}, + "source": [ + "If you look into details of any variable in the representation above, you'll see that each array is chunked into 4 pieces, 602.96 MiB each, which is already more manageable." + ] + }, + { + "cell_type": "markdown", + "id": "471b250f-6bf2-4d5c-85b2-c56167eb7a6b", + "metadata": {}, + "source": [ + "
\n", + " Warning\n", + "
\n", + "
\n", + " To access chunk with 602.96MiB each, your proces will first acces to 2GiB of data as the file is not originaly chunked.\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "6d1f923b-6e45-4494-af6c-c537e1791f99", + "metadata": {}, + "source": [ + "Xarray `Dataset` and `DataArray` objects also have a `chunk` function. We can use it to change our dataset chunks size.\n", + "Lets try to 'chunk' our data array LTS.nobs using this command.\n", + "\n", + "Let's first re-open the same dataset without any chunking." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "05c66a2f-bda7-4c8b-8eb7-f5ee2ac8ad86", + "metadata": {}, + "outputs": [], + "source": [ + "LTS = xr.open_dataset(fs.open(s3path))" + ] + }, + { + "cell_type": "markdown", + "id": "babfb689-5a92-4e67-8304-8fecc30f742d", + "metadata": {}, + "source": [ + "As we would like to play with small sized array, we first select a subset of data as you've learned in [xarray_introduction](./xarray_introduction.ipynb). " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ec60ad82-9abb-42a6-9119-26f9b567b7fc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'nobs' (lat: 1121, lon: 2240)>\n",
+       "[2511040 values with dtype=float32]\n",
+       "Coordinates:\n",
+       "  * lon      (lon) float64 70.0 70.01 70.02 70.03 ... 89.96 89.97 89.98 89.99\n",
+       "  * lat      (lat) float64 80.0 79.99 79.98 79.97 ... 70.03 70.02 70.01 70.0\n",
+       "Attributes:\n",
+       "    standard_name:  normalized_difference_vegetation_index number_of_observat...\n",
+       "    grid_mapping:   crs\n",
+       "    units:          \n",
+       "    valid_range:    [  1 250]\n",
+       "    cell_methods:   area: mean
" + ], + "text/plain": [ + "\n", + "[2511040 values with dtype=float32]\n", + "Coordinates:\n", + " * lon (lon) float64 70.0 70.01 70.02 70.03 ... 89.96 89.97 89.98 89.99\n", + " * lat (lat) float64 80.0 79.99 79.98 79.97 ... 70.03 70.02 70.01 70.0\n", + "Attributes:\n", + " standard_name: normalized_difference_vegetation_index number_of_observat...\n", + " grid_mapping: crs\n", + " units: \n", + " valid_range: [ 1 250]\n", + " cell_methods: area: mean" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test = LTS.nobs.sel(lat=slice(80.,70.), lon=slice(70.,90))\n", + "test" + ] + }, + { + "cell_type": "markdown", + "id": "59e8990f-5436-4723-a26b-bd396b19bb33", + "metadata": {}, + "source": [ + "The test value has dimensions `(1121, 2240)`. We will chunk it on 600x600 pieces using the following command. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7f644ba3-8eb5-4cf9-bd20-0aebda8bc05e", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'nobs' (lat: 1121, lon: 2240)>\n",
+       "dask.array<xarray-<this-array>, shape=(1121, 2240), dtype=float32, chunksize=(600, 600), chunktype=numpy.ndarray>\n",
+       "Coordinates:\n",
+       "  * lon      (lon) float64 70.0 70.01 70.02 70.03 ... 89.96 89.97 89.98 89.99\n",
+       "  * lat      (lat) float64 80.0 79.99 79.98 79.97 ... 70.03 70.02 70.01 70.0\n",
+       "Attributes:\n",
+       "    standard_name:  normalized_difference_vegetation_index number_of_observat...\n",
+       "    grid_mapping:   crs\n",
+       "    units:          \n",
+       "    valid_range:    [  1 250]\n",
+       "    cell_methods:   area: mean
" + ], + "text/plain": [ + "\n", + "dask.array, shape=(1121, 2240), dtype=float32, chunksize=(600, 600), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " * lon (lon) float64 70.0 70.01 70.02 70.03 ... 89.96 89.97 89.98 89.99\n", + " * lat (lat) float64 80.0 79.99 79.98 79.97 ... 70.03 70.02 70.01 70.0\n", + "Attributes:\n", + " standard_name: normalized_difference_vegetation_index number_of_observat...\n", + " grid_mapping: crs\n", + " units: \n", + " valid_range: [ 1 250]\n", + " cell_methods: area: mean" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test=test.chunk(600)\n", + "test" + ] + }, + { + "cell_type": "markdown", + "id": "437ce642", + "metadata": {}, + "source": [ + "As you can see in the above graphics we got 8 __chunks__. These 8 chunks are noted as (0,0) ..(0,3) (1,0),..(1,3) as you can see in the next visualisation." + ] + }, + { + "cell_type": "markdown", + "id": "d36efa13-b1e5-429a-9b2c-537b07d9e49a", + "metadata": {}, + "source": [ + "## Operations on a chunked dataset\n", + "\n", + "Let's have a look of our chunked test dataset backend representation." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9768b366", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test.data.visualize()" + ] + }, + { + "cell_type": "markdown", + "id": "1302b99f", + "metadata": {}, + "source": [ + "` test.data` is the backend array Python representation of Xarray's Data Array, [__Dask Array__](https://docs.dask.org/en/stable/array.html) when using chunking, Numpy by default.\n", + "\n", + "We will introduce Dask arrays and Dask graphs visualization in the next section [dask_introduction](./dask_introduction.ipynb)." + ] + }, + { + "cell_type": "markdown", + "id": "5da222df-6f45-434c-b741-34ef27352199", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "Anyway, when applying `chunk` function you may have the impression that the chunks sizes just changes and everything will be fine.\n", + "\n", + "However, as you can see in the graph visualization above, Xarray will actually have to fetch at least one entire initial chunk that was defined when opening the Dataset at first before rechunking at a smaller size or even selecting one value. This is true when applying any funtions on any values: Xarray will work by loading entire chunks.\n", + "\n", + "You can imagine that it will not be very optimal if you load one file as an entire chunk, or if your initial chunks are too big (your Python Jupyter kernel may crash!), especially with large numbers of files and large files.\n", + "\n", + "You can find a really nice article by Dask team on how to chose the right chunk size [here](https://blog.dask.org/2021/11/02/choosing-dask-chunk-sizes)." + ] + }, + { + "cell_type": "markdown", + "id": "7ac448da", + "metadata": {}, + "source": [ + "
\n", + " Go Further\n", + "
\n", + "
\n", + " You can try to apply different ways for specifying chunk.\n", + "
    \n", + "
  • chunks = 'auto' -> Xarray relies on Dask to use an ideal size according to the preferred chunk sizes
  • \n", + "
  • chunks = -1 -> the entire array will be used as a single chunk\n", + "
  • chunks = \"1MiB\" -> Xarray seeks the size according to a specific memory target expressed in MiB
  • \n", + "
  • chunks = {'lat'=-1, 'lon'= 1000} -> chunks of entire _lat_ dimension, but splitted every 1000 values on _lon_ dimension
  • \n", + "
  • compare the resulting chunked data's shape, size, tasks, data.visualize..... What do you see?
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "8df00ba1-46ea-46a6-92e6-433187e8f433", + "metadata": { + "jp-MarkdownHeadingCollapsed": true, + "tags": [] + }, + "source": [ + "## So, why chunks?\n", + "\n", + "In the end, chunks are mandatory for accessing files or dataset that are bigger than a singles computer's memory. If all the data has to be accessed, it can be done sequentially e.g. chunks are processed one after the othe).\n", + "\n", + "Moreover, chunks allow for distributed processing and so increased speed for your data analysis, as seen in the next episode.\n", + "\n", + "### Chunks and files\n", + "\n", + "Xarray chunking possibilities also relies on the underlying input or output file format used. Most modern file format allows to store a dataset or a single file using chunks. NetCDF4 uses chunks when storing a file on the disk through the use of HDF5. Any read of data in a NetCDF4 file will lead to the load of at least one chunk of this file. So when reading one of its chunk as defined in `open_dataset` call, Xarray will take advantage of native file chunking and won't have to read the entire file too.\n", + "\n", + "Yet, it is really important to note that __Xarray chunks and file chunks are not necessarily the same__. It is however a really good idea to configure Xarray chunks so that they align well on input file format chunks (so ideally, Xarray chunks should contain one or several input file chunks)." + ] + }, + { + "cell_type": "markdown", + "id": "413a0ddb-3b89-4392-9822-dfaa80111c52", + "metadata": {}, + "source": [ + "## Zarr storage format\n", + "\n", + "This brings to our next subjects [Zarr](https://zarr.readthedocs.io/en/stable/) and [Kerchunk](https://fsspec.github.io/kerchunk/).\n", + "\n", + "If we can have our original dataset already 'chunked' and accessed in an optimized way according to it's actual byte storage on disk, we won't need to load entire dataset every time, and our data anlayzis, even working on the entire dataset, will be greatly optimized.\n", + "\n", + "Let's convert our input data into Zarr format so that we can learn what it is." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "bc4fb079", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "test.to_dataset().to_zarr('test.zarr',mode='w')" + ] + }, + { + "cell_type": "markdown", + "id": "42b738c4-0639-433a-a2a9-b188d9459119", + "metadata": {}, + "source": [ + "
\n", + " Warning\n", + "
\n", + "
    \n", + "
  • DataArray can not be saved as 'zarr'. Before saving your data to zarr, you will need to convert it into a DataSet
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "e28fa945", + "metadata": {}, + "source": [ + "
\n", + " Exercise\n", + "
\n", + "
    \n", + "
  • You can try to explore the zarr file you just created using `ls -la test.zarr` and `ls -la test.zarr/nobs `
  • \n", + "
  • You can explore zarr metadata file by `cat test.zarr/.zmetadata`
  • \n", + "
  • Did you find the __chunks__ we defined previously in your zarr file?
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9446367c-4d32-4d0d-8d60-72c3c9d87818", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "92K\ttest.zarr/\n" + ] + } + ], + "source": [ + "!du -sh test.zarr/" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "275b75a6", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "total 48\n", + "drwxr-xr-x 2 jovyan jovyan 4096 Oct 11 21:49 .\n", + "drwxr-xr-x 5 jovyan jovyan 4096 Oct 11 21:49 ..\n", + "-rw-r--r-- 1 jovyan jovyan 341 Oct 11 21:49 .zarray\n", + "-rw-r--r-- 1 jovyan jovyan 304 Oct 11 21:49 .zattrs\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 0.0\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 0.1\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 0.2\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 0.3\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 1.0\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 1.1\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 1.2\n", + "-rw-r--r-- 1 jovyan jovyan 1482 Oct 11 21:49 1.3\n" + ] + } + ], + "source": [ + "!ls -al test.zarr/nobs" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "1ef0f70a", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{\n", + " \"metadata\": {\n", + " \".zattrs\": {},\n", + " \".zgroup\": {\n", + " \"zarr_format\": 2\n", + " },\n", + " \"lat/.zarray\": {\n", + " \"chunks\": [\n", + " 1121\n", + " ],\n", + " \"compressor\": {\n", + " \"blocksize\": 0,\n", + " \"clevel\": 5,\n", + " \"cname\": \"lz4\",\n", + " \"id\": \"blosc\",\n", + " \"shuffle\": 1\n", + " },\n", + " \"dtype\": \"\n", + " Exercise\n", + "
\n", + "
    \n", + "
  • Did you recognise the similarities with test.zarr's zarr metadata file?
  • \n", + "
\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "804dffbd", + "metadata": {}, + "source": [ + "After we have collected information on the native file chunks in the original data file and consolidated our Zarr metadata, we can open the files using `zarr` and pass this chunk information into a storage option. We also need to pass `\"consolidated\": False` because the original dataset does not contain any `zarr` consolidating metadata." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "b35a2a88", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (lat: 15680, lon: 40320)\n",
+       "Coordinates:\n",
+       "  * lat      (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n",
+       "  * lon      (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n",
+       "Data variables:\n",
+       "    crs      object ...\n",
+       "    max      (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "    mean     (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "    median   (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "    min      (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "    nobs     (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "    stdev    (lat, lon) float32 dask.array<chunksize=(1207, 3102), meta=np.ndarray>\n",
+       "Attributes: (12/19)\n",
+       "    Conventions:          CF-1.6\n",
+       "    archive_facility:     VITO\n",
+       "    copyright:            Copernicus Service information 2021\n",
+       "    history:              2021-03-01 - Processing line NDVI LTS\n",
+       "    identifier:           urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n",
+       "    institution:          VITO NV\n",
+       "    ...                   ...\n",
+       "    references:           https://land.copernicus.eu/global/products/ndvi\n",
+       "    sensor:               VEGETATION-1, VEGETATION-2, VEGETATION\n",
+       "    source:               Derived from EO satellite imagery\n",
+       "    time_coverage_end:    2019-12-31T23:59:59Z\n",
+       "    time_coverage_start:  1999-01-01T00:00:00Z\n",
+       "    title:                Normalized Difference Vegetation Index: Long Term S...
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 15680, lon: 40320)\n", + "Coordinates:\n", + " * lat (lat) float64 80.0 79.99 79.98 79.97 ... -59.97 -59.98 -59.99\n", + " * lon (lon) float64 -180.0 -180.0 -180.0 -180.0 ... 180.0 180.0 180.0\n", + "Data variables:\n", + " crs object ...\n", + " max (lat, lon) float32 dask.array\n", + " mean (lat, lon) float32 dask.array\n", + " median (lat, lon) float32 dask.array\n", + " min (lat, lon) float32 dask.array\n", + " nobs (lat, lon) float32 dask.array\n", + " stdev (lat, lon) float32 dask.array\n", + "Attributes: (12/19)\n", + " Conventions: CF-1.6\n", + " archive_facility: VITO\n", + " copyright: Copernicus Service information 2021\n", + " history: 2021-03-01 - Processing line NDVI LTS\n", + " identifier: urn:cgls:global:ndvi_stats_all:NDVI-LTS_1999-2019-1...\n", + " institution: VITO NV\n", + " ... ...\n", + " references: https://land.copernicus.eu/global/products/ndvi\n", + " sensor: VEGETATION-1, VEGETATION-2, VEGETATION\n", + " source: Derived from EO satellite imagery\n", + " time_coverage_end: 2019-12-31T23:59:59Z\n", + " time_coverage_start: 1999-01-01T00:00:00Z\n", + " title: Normalized Difference Vegetation Index: Long Term S..." + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LTS = xr.open_mfdataset(\n", + " \"reference://\", engine=\"zarr\",\n", + " backend_kwargs={\n", + " \"storage_options\": {\n", + " \"fo\": chunk_info,\n", + " },\n", + " \"consolidated\": False\n", + " }\n", + ")\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "6eb894f3", + "metadata": {}, + "source": [ + "As you can notice above, all the Data Variables are already chunked according to the native file chunks of the NetCDF file." + ] + }, + { + "cell_type": "markdown", + "id": "13813577", + "metadata": {}, + "source": [ + "### Combine all LTS files into one kerchunked single ensemble dataset\n", + "\n", + "Now we will combine all the files into one kerchunked consolidated dataset, and try to open it as a xarray dataset." + ] + }, + { + "cell_type": "markdown", + "id": "1bb8ac14", + "metadata": {}, + "source": [ + "Let us first collect the chunk information for each file." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "b31397e5", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['foss4g-data/CGLS_LTS_1999_2019/',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0101_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0111_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0121_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0201_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0211_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0221_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0301_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0311_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0321_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0401_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0411_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0421_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0501_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0511_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0521_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0601_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0611_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0621_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0701_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0711_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0721_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0801_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0811_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0821_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0901_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0911_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0921_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1001_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1011_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1021_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1101_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1111_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1121_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1201_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1211_GLOBE_VGT-PROBAV_V3.0.1.nc',\n", + " 'foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-1221_GLOBE_VGT-PROBAV_V3.0.1.nc']" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fs.ls('foss4g-data/CGLS_LTS_1999_2019/')" + ] + }, + { + "cell_type": "markdown", + "id": "25c5dfdd", + "metadata": {}, + "source": [ + "We have 36 files to process, but for this chunking_introduction example, we'll just use 6 file so that it take less time." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "1b3bf519", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ada26891", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "working on foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0701_GLOBE_VGT-PROBAV_V3.0.1.nc\n", + "working on foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0711_GLOBE_VGT-PROBAV_V3.0.1.nc\n" + ] + } + ], + "source": [ + "%%time\n", + "s3path = 's3://foss4g-data/CGLS_LTS_1999_2019/c_gls_NDVI-LTS_1999-2019-0[7-8]*.nc'\n", + "chunk_info_list = []\n", + "time_list = []\n", + "\n", + "for file in fs.glob(s3path):\n", + " url = 'https://object-store.cloud.muni.cz/swift/v1/' + file\n", + " t = datetime.strptime(file.split('/')[-1].split('_')[3].replace('1999-', ''), \"%Y-%m%d\")\n", + " time_list.append(t)\n", + " print('working on ', file)\n", + " with fsspec.open(url) as inf:\n", + " h5chunks = kerchunk.hdf.SingleHdf5ToZarr(inf, url, inline_threshold=100)\n", + " chunk_info_list.append(h5chunks.translate())" + ] + }, + { + "cell_type": "markdown", + "id": "5545adc5", + "metadata": {}, + "source": [ + "This time we use `MultiZarrToZarr` to combine multiple kerchunked datasets into a single logical aggregated dataset. Like when opening multiple files with Xarray `open_mfdataset`, we need to tell `MultiZarrToZarr` how to concatenate all the files. There is no time dimension in the original dataset, but one file corresponds to one date (average over the period 1999-2019 for a given 10-day period e.g. January 01, January 11, January 21, etc.)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7095a0b1", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "%%time\n", + "from kerchunk.combine import MultiZarrToZarr\n", + "mzz = MultiZarrToZarr(\n", + " chunk_info_list,\n", + " coo_map={'INDEX': 'INDEX'},\n", + " identical_dims=['crs'],\n", + " concat_dims=[\"INDEX\"],\n", + ")\n", + "\n", + "out = mzz.translate()" + ] + }, + { + "cell_type": "markdown", + "id": "8db85d9b", + "metadata": {}, + "source": [ + "Then, we can open the complete dataset using our consolidated Zarr metadata." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c70f8160", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "%%time\n", + "LTS = xr.open_mfdataset(\n", + " \"reference://\", engine=\"zarr\",\n", + " backend_kwargs={\n", + " \"storage_options\": {\n", + " \"fo\": out,\n", + " },\n", + " \"consolidated\": False\n", + " }\n", + ")\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "eee93dae", + "metadata": {}, + "source": [ + "We can save the consolidated metadata for our dataset in a file, and reuse it later to access the dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3a0b9096", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "import json" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4da8a98a", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "jsonfile='test.json'\n", + "with open(jsonfile, mode='w') as f :\n", + " json.dump(out, f)" + ] + }, + { + "cell_type": "markdown", + "id": "4b7baa9e", + "metadata": {}, + "source": [ + "We can then load data from this catalog." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c8e1c1a2", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "import xarray as xr\n", + "LTS = xr.open_mfdataset(\n", + " \"reference://\", engine=\"zarr\",\n", + " backend_kwargs={\n", + " \"storage_options\": {\n", + " \"fo\":'./test.json',\n", + " },\n", + " \"consolidated\": False\n", + " }\n", + ")\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "1e1a8397", + "metadata": {}, + "source": [ + "The catalog (json file we created) can be shared on the cloud (or GitHub, etc.) and anyone can load it from there too.\n", + "This approach allows anyone to easily access LTS data and select the Area of Interest for their own study." + ] + }, + { + "cell_type": "markdown", + "id": "baa71c11", + "metadata": {}, + "source": [ + "We have prepared json file based on 36 netcdf file, and published it online as catalogue=\"https://object-store.cloud.muni.cz/swift/v1/foss4g-catalogue/c_gls_NDVI-LTS_1999-2019.json\"\n", + "We can try to load it.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19dd3626-528e-44dc-aeb0-47f1560f525d", + "metadata": {}, + "outputs": [], + "source": [ + "catalogue=\"https://object-store.cloud.muni.cz/swift/v1/foss4g-catalogue/c_gls_NDVI-LTS_1999-2019.json\"\n", + "LTS = xr.open_mfdataset(\n", + " \"reference://\", engine=\"zarr\",\n", + " backend_kwargs={\n", + " \"storage_options\": {\n", + " \"fo\":catalogue\n", + " },\n", + " \"consolidated\": False\n", + " }\n", + ")\n", + "LTS" + ] + }, + { + "cell_type": "markdown", + "id": "ca50a427-f7ca-497d-b4bf-359b68c56f07", + "metadata": {}, + "source": [ + "We will use this catalogue in [dask_introduction](./dask_introduction.ipynb) chapter. " + ] + }, + { + "cell_type": "markdown", + "id": "1665722c-4c65-4334-987e-1f5bc4841036", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Understanding chunking is key to optimize your data analysis when dealing with big datasets. In this episode we learned how to optimize the data access time and memory resources by exploiting native file chunks from netCDF4 data files and instructing Xarray to access data per chunk. However, computations on big datasets can be very slow on a single computer, and to optimize its time we may need to parallelize your computations. This is what you will learn in the next episode with Dask." + ] + }, + { + "cell_type": "markdown", + "id": "fdf1f23a-8838-41fe-96d7-4f7b0fb9cc3f", + "metadata": {}, + "source": [ + "
\n", + " Key Points\n", + "
\n", + "
    \n", + "
  • Chunking
  • \n", + "
  • zarr
  • \n", + "
  • kerchunk
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "938c80a4", + "metadata": {}, + "source": [ + "## Packages citation\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"chunking\" and topic % \"package\"\n", + ":keyprefix: d-\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/dask_introduction.ipynb b/docs/dask_introduction.ipynb new file mode 100755 index 0000000..c9dcc80 --- /dev/null +++ b/docs/dask_introduction.ipynb @@ -0,0 +1,6914 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "1bfbae7a-12f1-4787-a520-c3de7529168d", + "metadata": {}, + "source": [ + "# Parallel computing with Dask" + ] + }, + { + "cell_type": "markdown", + "id": "281bb79b-1b06-42c9-98d5-6185252c86e5", + "metadata": {}, + "source": [ + "## Authors & Contributors\n", + "### Authors\n", + "- Tina Odaka, Ifremer (France), [@tinaok](https://github.com/tinaok)\n", + "- Anne Fouilloux, Simula Research Laboratory (Norway), [@annefou](https://github.com/annefou)\n", + "- Pier Lorenzo Marasco, Ispra (Italy), [@pl-marasco](https://github.com/pl-marasco)\n", + "\n", + "### Contributors\n", + "- Guillaume Eynard-Bontemps, CNES (France), [@guillaumeeb](https://github.com/guillaumeeb)\n" + ] + }, + { + "cell_type": "markdown", + "id": "f245decb-8706-4b55-aead-79dd7a621bdd", + "metadata": {}, + "source": [ + "
\n", + " Overview\n", + "
\n", + "
\n", + " Questions\n", + "
    \n", + "
  • What is Dask?
  • \n", + "
  • How can I parallelize my data analysis with Dask?
  • \n", + "
\n", + " Objectives\n", + "
    \n", + "
  • Learn about Dask
  • \n", + "
  • Learn about Dask Gateway, Dask Client, Scheduler, Workers
  • \n", + "
  • Understand out-of-core and speed-up limitations
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "013c3e5a-1ddf-4178-a05e-2ce711ab1b8b", + "metadata": {}, + "source": [ + "## Context\n", + "\n", + "\n", + "We will be using [Dask](https://docs.dask.org/) with [Xarray](https://docs.xarray.dev/en/stable/) to parallelize our data analysis. The analysis is very similar to what we have done in previous episodes but this time we will use data on a global coverage that we read from a shared catalog (stored online in the Pangeo EOSC Openstack Object Storage).\n", + "\n", + "### Data\n", + "\n", + "In this episode, we will be using CMIP6 data from intake-esm catalogue" + ] + }, + { + "cell_type": "markdown", + "id": "3c600794-dd9e-400b-bd09-dbb6e7039dad", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This episode uses the following Python packages:\n", + "\n", + "- pooch {cite:ps}`e-pooch-Uieda2020`\n", + "- s3fs {cite:ps}`e-s3fs-2016`\n", + "- xarray {cite:ps}`e-xarray-hoyer2017` with [`netCDF4`](https://pypi.org/project/h5netcdf/) and [`h5netcdf`](https://pypi.org/project/h5netcdf/) engines\n", + "- hvplot {cite:ps}`e-holoviews-rudiger2020`\n", + "- dask {cite:ps}`e-dask-2016`\n", + "- graphviz {cite:ps}`e-graphviz-Ellson2003`\n", + "- numpy {cite:ps}`e-numpy-harris2020`\n", + "- pandas {cite:ps}`e-pandas-reback2020`\n", + "- geopandas {cite:ps}`e-geopandas-jordahl2020`\n", + "\n", + "Please install these packages if not already available in your Python environment (you might want to take a look at [the Setup page of the tutorial](https://pangeo-data.github.io/escience-2022/before/setup.html)).\n", + "### Packages\n", + "\n", + "In this episode, Python packages are imported when we start to use them. However, for best software practices, we recommend you to install and import all the necessary libraries at the top of your Jupyter notebook." + ] + }, + { + "cell_type": "markdown", + "id": "41cd73e3-0120-4457-b84b-ccd9325a72a6", + "metadata": {}, + "source": [ + "## Parallelize with Dask" + ] + }, + { + "cell_type": "markdown", + "id": "d35db696-501a-4110-a7fa-fafe92dfc0a2", + "metadata": {}, + "source": [ + "We know from previous chapter [chunking_introduction](./chunking_introduction.ipynb) that chunking is key for analyzing large datasets. In this episode, we will learn to parallelize our data analysis using [Dask](https://docs.dask.org/) on our chunked dataset. " + ] + }, + { + "cell_type": "markdown", + "id": "5e2f3544-8b08-462d-b8a4-c6c0c2f68a26", + "metadata": {}, + "source": [ + "### What is [Dask](https://docs.dask.org/) ?\n", + "\n", + "**Dask** scales the existing Python ecosystem: with very or no changes in your code, you can speed-up computation using Dask or process bigger than memory datasets.\n", + "\n", + "- Dask is a flexible library for parallel computing in Python.\n", + "- It is widely used for handling large and complex Earth Science datasets and speed up science.\n", + "- Dask is powerful, scalable and flexible. It is the leading platform today for data analytics at scale.\n", + "- It scales natively to clusters, cloud, HPC and bridges prototyping up to production.\n", + "- The strength of Dask is that is scales and accelerates the existing Python ecosystem e.g. Numpy, Pandas and Scikit-learn with few effort from end-users.\n", + "\n", + "It is interesting to note that at first, [Dask has been created to handle data that is larger than memory, on a single computer](https://coiled.io/blog/history-dask/). It then was extended with Distributed to compute data in parallel over clusters of computers." + ] + }, + { + "cell_type": "markdown", + "id": "3e44c561-da09-4051-b562-bca3c276659e", + "metadata": {}, + "source": [ + "#### How does Dask scale and accelerate your data analysis?\n", + "\n", + "[Dask proposes different abstractions to distribute your computation](https://docs.dask.org/en/stable/10-minutes-to-dask.html). In this _Dask Introduction_ section, we will focus on [Dask Array](https://docs.dask.org/en/stable/array.html) which is widely used in pangeo ecosystem as a back end of Xarray.\n", + "\n", + "As shown in the [previous section](./chunking_introduction.ipynb) Dask Array is based on chunks.\n", + "Chunks of a Dask Array are well-known Numpy arrays. By transforming our big datasets to Dask Array, making use of chunk, a large array is handled as many smaller Numpy ones and we can compute each of these chunks independently.\n", + "\n", + "![Dask and Numpy](https://examples.dask.org/_images/dask-array-black-text.svg)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "e595d939-199f-4cbd-8107-2b4480a993ac", + "metadata": {}, + "source": [ + "
\n", + " Warning\n", + "
\n", + "
    \n", + "
  • `Xarray` uses Dask Arrays instead of Numpy when chunking is enabled, and thus all Xarray operations are performed through Dask, which enables distributed processing.
  • \n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "markdown", + "id": "70b9fd40-08f4-43e2-897f-b1e745fd215a", + "metadata": {}, + "source": [ + "#### How does Xarray with Dask distribute data analysis?\n", + "\n", + "When we use chunks with `Xarray`, the real computation is only done when needed or asked for, usually when invoking `compute()` function. Dask generates a **task graph** describing the computations to be done. When using [Dask Distributed](https://distributed.dask.org/en/stable/) a **Scheduler** distributes these tasks across several **Workers**.\n", + "\n", + "![Xarray with dask](images/dask-xarray-explained.png)" + ] + }, + { + "cell_type": "markdown", + "id": "11377e82-113a-4260-8bc6-cc6973a6bab0", + "metadata": {}, + "source": [ + "#### What is a Dask Distributed ?\n", + "\n", + "A Dask Distributed is made of two main components:\n", + "\n", + "- a Scheduler, responsible for dishandling computations graph and distributing tasks to Workers.\n", + "- One or several (up to 1000s) Workers, computing individual tasks and storing results and data into distributed memory (RAM and/or worker's local disk).\n", + "\n", + "A user usually needs distributed __Client__ and __Cluster__ object as shown below to use Dask Distribute. \n", + "\n", + "![Dask Distributed Cluster](https://user-images.githubusercontent.com/306380/66413985-27111600-e9be-11e9-9995-8f418ff48f8a.png)" + ] + }, + { + "cell_type": "markdown", + "id": "019f6d9c-5927-4d53-9125-432cfe42fef9", + "metadata": {}, + "source": [ + "#### Where can we deploy Dask distributed cluster? \n", + "[Dask distributed clusters can be deployed on your laptop or on distributed infrastructures ( Cloud, HPC centers or ..).](https://docs.dask.org/en/stable/deploying.html) Dask distributed `Cluster` object is responsible of deploying and scaling a Dask Cluster on the underlying resources.\n", + "\n", + "![Dask Cluster deployment](https://docs.dask.org/en/stable/_images/dask-cluster-manager.svg)" + ] + }, + { + "cell_type": "markdown", + "id": "e0a4ff9d-b390-49f9-a0e6-622170d955af", + "metadata": {}, + "source": [ + ":::{tip}\n", + "A Dask `Cluster` can also be created on a single machine (for instance your laptop) e.g. there is no need to have dedicated computational resources. However, speedup will only be limited to your single machine resources if you do not have dedicated computational resources!\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "fa52be3e-3924-4d0b-9a46-abd9009e2a3b", + "metadata": {}, + "source": [ + "### Dask distributed Client\n", + " \n", + "The Dask distributed `Client` is what allows you to interact with Dask distributed Clusters. When using Dask distributed, you always need to create a `Client` object. Once a `Client` has been created, it will be used by default by each call to a Dask API, even if you do not explicitly use it.\n", + "\n", + "No matter the Dask API (e.g. Arrays, Dataframes, Delayed, Futures, etc.) that you use, under the hood, Dask will create a Directed Acyclic Graph (DAG) of tasks by analysing the code. Client will be responsible to submit this DAG to the Scheduler along with the final result you want to compute. The Client will also gather results from the Workers, and aggregates it back in its underlying Python process.\n", + "\n", + "Using `Client()` function with no argument, you will create a local Dask cluster with a number of workers and threads per worker corresponding to the number of cores in the 'local' machine. Here, during the workshop, we are running this notebook in Pangeo EOSC cloud deployment, so the 'local' machine is the jupyterlab you are using at the Cloud, and the number of cores is the number of cores on the cloud computing resources you've been given (not on your laptop)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9879754c-8ede-43ed-86ef-05cd9c288e73", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "
\n", + "
\n", + "

Client

\n", + "

Client-e4a7e191-49bf-11ed-8fb1-56384af59625

\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + "
\n", + "\n", + " \n", + "
\n", + "

Cluster Info

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

LocalCluster

\n", + "

bc09e969

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + "
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + " \n", + " Workers: 4\n", + "
\n", + " Total threads: 4\n", + " \n", + " Total memory: 8.00 GiB\n", + "
Status: runningUsing processes: True
\n", + "\n", + "
\n", + " \n", + "

Scheduler Info

\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

Scheduler

\n", + "

Scheduler-4e5a2acd-4da8-42b4-9c20-f83fb888a434

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " Comm: tcp://127.0.0.1:41239\n", + " \n", + " Workers: 4\n", + "
\n", + " Dashboard: http://127.0.0.1:8787/status\n", + " \n", + " Total threads: 4\n", + "
\n", + " Started: Just now\n", + " \n", + " Total memory: 8.00 GiB\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "

Workers

\n", + "
\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 0

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:37793\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:38349/status\n", + " \n", + " Memory: 2.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:44709\n", + "
\n", + " Local directory: /tmp/dask-worker-space/worker-mfu2k8v0\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 1

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:41179\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:32949/status\n", + " \n", + " Memory: 2.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:36831\n", + "
\n", + " Local directory: /tmp/dask-worker-space/worker-9n_oqci4\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 2

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:35585\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:35711/status\n", + " \n", + " Memory: 2.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:41189\n", + "
\n", + " Local directory: /tmp/dask-worker-space/worker-x0yeahfi\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 3

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:46195\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:37175/status\n", + " \n", + " Memory: 2.00 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:34495\n", + "
\n", + " Local directory: /tmp/dask-worker-space/worker-gfhaw_kc\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from dask.distributed import Client\n", + "\n", + "client = Client() # create a local dask cluster on the local machine.\n", + "client\n" + ] + }, + { + "cell_type": "markdown", + "id": "934eb7fa-76b6-4a22-a139-3eb53989645d", + "metadata": {}, + "source": [ + "Inspecting the `Cluster Info` section above gives us information about the created cluster: we have 2 or 4 workers and the same number of threads (e.g. 1 thread per worker). \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "736568ed-7e5b-4184-bf7a-26e1d2426f93", + "metadata": {}, + "source": [ + "
\n", + " Go further\n", + "
\n", + "
    \n", + "
  • You can also create a local cluster with the `LocalCluster` constructor and use `n_workers` \n", + " and `threads_per_worker` to manually specify the number of processes and threads you want to use. \n", + " For instance, we could use `n_workers=2` and `threads_per_worker=2`.
  • \n", + "
  • This is sometimes preferable (in terms of performance), or when you run this tutorial on your PC, \n", + " you can avoid dask to use all your resources you have on your PC!
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "245d1b16-99b6-4b21-939d-b4a3bf264cbf", + "metadata": {}, + "source": [ + "### Dask Dashboard\n", + "\n", + "Dask comes with a really handy interface: the Dask Dashboard.\n", + "We will learn here, how to use that through [dask jupyterlab extension](https://github.com/dask/dask-labextension). \n", + "\n", + "To use Dask Dashbord through jupyterlab extension at Pangeo EOSC FOSS4G infrastructure,\n", + "you will just need too look at the html link you have for your jupyterlab, and Dask dashboard port number, as highlighted in the figure below.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Then click the orange icon indicated in the above figure, and type 'your' dashboard link (normally, you just need to replace 'todaka' to 'your username'). \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "You can click several buttons indicated with blue arrows in above figures, then drag and drop to place them as your convenience. \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "It's really helpfull to understand your computation and how it is distributed." + ] + }, + { + "cell_type": "markdown", + "id": "1171f9b8-eb49-43ee-9d3f-5b8d74434e1f", + "metadata": {}, + "source": [ + "## Dask Distributed computations on our dataset\n", + "\n", + "Lets open dataset from catalogue we made before, select a single location over time and visualize the task graph generated by Dask, and observe the Dask Dashboard.\n", + "### Read from online cmip6 ARCO dataset\n", + "\n", + " We will access analysis-ready, cloud optimized (ARCO) introduced in [previous data_discovery](./data_discovery.ipynb) section." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "3e7d552c-d986-465c-ab72-578432d579c3", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 2;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) >= 0) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) >= 0) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js\"];\n", + " var js_modules = [];\n", + " var css_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css\", \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\"];\n", + " var inline_js = [ function(Bokeh) {\n", + " inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.pn-loading:before {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n content: '';\\n z-index: 1000;\\n background-color: rgb(255,255,255,0.50);\\n border-color: lightgray;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: auto 50%;\\n border-width: 1px;\\n cursor: progress;\\n}\\n.bk.pn-loading.arcs:hover:before {\\n cursor: progress;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.debugger-card {\\n border: 1px solid rgba(0,0,0,1);\\n color: rgba(255,255,255,1);\\n background-color: rgba(0,0,0,1);\\n border-radius: 0rem;\\n}\\n.bk.debugger-card-header {\\n align-items: center;\\n text-align: left;\\n background-color: rgba(0, 0, 0, 1)!important;\\n color: rgba(255, 255, 255, 1);\\n border-radius: 0rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.debugger-card-button {\\n background-color: transparent;\\n color: rgba(255, 255, 255, 1);\\n margin-left: 0.5em;\\n}\\n.bk.debugger-card-title {\\n align-items: center;\\n text-align: left;\\n color: rgba(255, 255, 255, 1);\\n font-size: 1em;\\n overflow-wrap: break-word;\\n}\\n\\n/* Special debugger buttons for clearing and saving */\\n.bk button.special_btn {\\n width: 25px;\\n height: 25px;\\n background-color: black;\\n color: white;\\n display: inline-block;\\n}\\n\\n\\n.bk button.special_btn .tooltiptext {\\n visibility: hidden;\\n width: 100px;\\n background-color: darkgray;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 5px 0;\\n\\n /* Position the tooltip */\\n position: relative;\\n z-index: 1;\\n top: 100%;\\n left: 100%;\\n margin-left: -100px;\\n display: block;\\n}\\n\\n.bk button.special_btn:hover .tooltiptext {\\n visibility: visible;\\n}\\n\\n\\n\\n.bk button.clear_btn:hover .shown { display: none;}\\n.bk button.clear_btn:hover:before { content: \\\"\\u2611\\\"; }\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.card-button {\\n background-color: transparent;\\n margin-left: 0.5em;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n font-size: 1.4em;\\n font-weight: bold;\\n overflow-wrap: break-word;\\n}\\n.bk.card-header-row > .bk {\\n overflow-wrap: break-word;\\n text-align: center;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.panel-widget-box {\\n min-height: 20px;\\n background-color: #f5f5f5;\\n border: 1px solid #e3e3e3;\\n border-radius: 4px;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n overflow-x: hidden;\\n overflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n appearance: none;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n height: 20px;\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n color: royalblue;\\n position: relative;\\n margin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n position: relative;\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n border-radius:3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n content:\\\" \\\";\\n position:absolute;\\n height: 20px;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0;\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk-root .bk.loader {\\n overflow: hidden;\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\\n\\n/* Slider editor */\\n.slider-edit .bk-input-group .bk-input {\\n border: 0;\\n border-radius: 0;\\n min-height: 0;\\n padding-left: 0;\\n padding-right: 0;\\n font-weight: bold;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper {\\n display: contents;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-up {\\n top: -6px;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-down {\\n bottom: 3px;\\n}\\n\\n/* JSON Pane */\\n.bk-root .json-formatter-row .json-formatter-string, .bk-root .json-formatter-row .json-formatter-stringifiable {\\n white-space: pre-wrap;\\n}\\n\\n.ql-bubble .ql-editor {\\n border: 1px solid #ccc;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\"\\n .bk.pn-loading.arcs:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4gIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjMyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZT0iI2MzYzNjMyIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+ICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCI+PC9hbmltYXRlVHJhbnNmb3JtPiAgPC9jaXJjbGU+PC9zdmc+\\\");\\n background-size: auto calc(min(50%, 400px));\\n }\\n \");\n", + " }, function(Bokeh) {\n", + " /* BEGIN bokeh.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " const bokeh = factory();\n", + " bokeh.__bokeh__ = true;\n", + " if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n", + " root.Bokeh = bokeh;\n", + " }\n", + " const Bokeh = root.Bokeh;\n", + " Bokeh[bokeh.version] = bokeh;\n", + " })(this, function() {\n", + " let define;\n", + " const parent_require = typeof require === \"function\" && require\n", + " return (function(modules, entry, aliases, externals) {\n", + " if (aliases === undefined) aliases = {};\n", + " if (externals === undefined) externals = {};\n", + "\n", + " const cache = {};\n", + "\n", + " const normalize = function(name) {\n", + " if (typeof name === \"number\")\n", + " return name;\n", + "\n", + " if (name === \"bokehjs\")\n", + " return entry;\n", + "\n", + " if (!externals[name]) {\n", + " const prefix = \"@bokehjs/\"\n", + " if (name.slice(0, prefix.length) === prefix)\n", + " name = name.slice(prefix.length)\n", + " }\n", + "\n", + " const alias = aliases[name]\n", + " if (alias != null)\n", + " return alias;\n", + "\n", + " const trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", + " const index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", + " if (index != null)\n", + " return index;\n", + "\n", + " return name;\n", + " }\n", + "\n", + " const require = function(name) {\n", + " let mod = cache[name];\n", + " if (!mod) {\n", + " const id = normalize(name);\n", + "\n", + " mod = cache[id];\n", + " if (!mod) {\n", + " if (!modules[id]) {\n", + " if (externals[id] === false || (externals[id] == true && parent_require)) {\n", + " try {\n", + " mod = {exports: externals[id] ? parent_require(id) : {}};\n", + " cache[id] = cache[name] = mod;\n", + " return mod.exports;\n", + " } catch (e) {}\n", + " }\n", + "\n", + " const err = new Error(\"Cannot find module '\" + name + \"'\");\n", + " err.code = 'MODULE_NOT_FOUND';\n", + " throw err;\n", + " }\n", + "\n", + " mod = {exports: {}};\n", + " cache[id] = cache[name] = mod;\n", + "\n", + " function __esModule() {\n", + " Object.defineProperty(mod.exports, \"__esModule\", {value: true});\n", + " }\n", + "\n", + " function __esExport(name, value) {\n", + " Object.defineProperty(mod.exports, name, {\n", + " enumerable: true, get: function () { return value; }\n", + " });\n", + " }\n", + "\n", + " modules[id].call(mod.exports, require, mod, mod.exports, __esModule, __esExport);\n", + " } else {\n", + " cache[name] = mod;\n", + " }\n", + " }\n", + "\n", + " return mod.exports;\n", + " }\n", + " require.resolve = function(name) {\n", + " return \"\"\n", + " }\n", + "\n", + " const main = require(entry);\n", + " main.require = require;\n", + "\n", + " if (typeof Proxy !== \"undefined\") {\n", + " // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n", + " main.loader = new Proxy({}, {\n", + " get: function(_obj, module) {\n", + " return require(module);\n", + " }\n", + " });\n", + " }\n", + "\n", + " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", + " if (plugin_aliases === undefined) plugin_aliases = {};\n", + " if (plugin_externals === undefined) plugin_externals = {};\n", + "\n", + " for (let name in plugin_modules) {\n", + " modules[name] = plugin_modules[name];\n", + " }\n", + "\n", + " for (let name in plugin_aliases) {\n", + " aliases[name] = plugin_aliases[name];\n", + " }\n", + "\n", + " for (let name in plugin_externals) {\n", + " externals[name] = plugin_externals[name];\n", + " }\n", + "\n", + " const plugin = require(plugin_entry);\n", + "\n", + " for (let name in plugin) {\n", + " main[name] = plugin[name];\n", + " }\n", + "\n", + " return plugin;\n", + " }\n", + "\n", + " return main;\n", + " })\n", + " ([\n", + " function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(2),n)},\n", + " function _(t,e,r,n,o){n();var a=function(t,e){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},a(t,e)};r.__extends=function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)};function i(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function c(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,a=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function u(t){return this instanceof u?(this.v=t,this):new u(t)}r.__assign=function(){return r.__assign=Object.assign||function(t){for(var e,r=1,n=arguments.length;r=0;c--)(o=t[c])&&(i=(a<3?o(i):a>3?o(e,r,i):o(e,r))||i);return a>3&&i&&Object.defineProperty(e,r,i),i},r.__param=function(t,e){return function(r,n){e(r,n,t)}},r.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r.__awaiter=function(t,e,r,n){return new(r||(r=Promise))((function(o,a){function i(t){try{u(n.next(t))}catch(t){a(t)}}function c(t){try{u(n.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}u((n=n.apply(t,e||[])).next())}))},r.__generator=function(t,e){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(r=o[t](e)).value instanceof u?Promise.resolve(r.value.v).then(f,l):s(a[0][2],r)}catch(t){s(a[0][3],t)}var r}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},r.__asyncDelegator=function(t){var e,r;return e={},n(\"next\"),n(\"throw\",(function(t){throw t})),n(\"return\"),e[Symbol.iterator]=function(){return this},e;function n(n,o){e[n]=t[n]?function(e){return(r=!r)?{value:u(t[n](e)),done:\"return\"===n}:o?o(e):e}:o}},r.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=i(t),e={},n(\"next\"),n(\"throw\"),n(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,o){(function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)})(n,o,(e=t[r](e)).done,e.value)}))}}},r.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t};var f=Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e};r.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)\"default\"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&(0,r.__createBinding)(e,t,n);return f(e,t),e},r.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},r.__classPrivateFieldGet=function(t,e,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!n:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(t):n?n.value:e.get(t)},r.__classPrivateFieldSet=function(t,e,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!o:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(t,r):o?o.value=r:e.set(t,r),r}},\n", + " function _(e,t,o,s,l){s();const n=e(1);l(\"version\",e(3).version),l(\"index\",e(4).index),o.embed=(0,n.__importStar)(e(4)),o.protocol=(0,n.__importStar)(e(406)),o._testing=(0,n.__importStar)(e(407));var r=e(19);l(\"logger\",r.logger),l(\"set_log_level\",r.set_log_level),l(\"settings\",e(28).settings),l(\"Models\",e(7).Models),l(\"documents\",e(5).documents),l(\"safely\",e(408).safely)},\n", + " function _(n,i,o,c,e){c(),o.version=\"2.4.3\"},\n", + " function _(e,o,t,n,s){n();const d=e(5),r=e(19),_=e(34),c=e(13),i=e(8),a=e(16),u=e(397),l=e(399),m=e(398);var f=e(397);s(\"add_document_standalone\",f.add_document_standalone),s(\"index\",f.index),s(\"add_document_from_session\",e(399).add_document_from_session);var g=e(404);async function w(e,o,t,n){(0,i.isString)(e)&&(e=JSON.parse((0,_.unescape)(e)));const s={};for(const[o,t]of(0,c.entries)(e))s[o]=d.Document.from_json(t);const a=[];for(const e of o){const o=(0,m._resolve_element)(e),d=(0,m._resolve_root_elements)(e);if(null!=e.docid)a.push(await(0,u.add_document_standalone)(s[e.docid],o,d,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const s=(0,l._get_ws_url)(t,n);r.logger.debug(`embed: computed ws url: ${s}`);try{a.push(await(0,l.add_document_from_session)(s,e.token,o,d,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return a}s(\"embed_items_notebook\",g.embed_items_notebook),s(\"kernels\",g.kernels),s(\"BOKEH_ROOT\",e(398).BOKEH_ROOT),t.embed_item=async function(e,o){const t={},n=(0,_.uuid4)();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(m.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n};await(0,a.defer)();const[r]=await w(t,[d]);return r},t.embed_items=async function(e,o,t,n){return await(0,a.defer)(),w(e,o,t,n)}},\n", + " function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(6),o),(0,a.__exportStar)(t(35),o)},\n", + " function _(e,t,s,o,n){o();const i=e(1),r=e(7),l=e(3),_=e(19),a=e(251),c=e(14),d=e(30),h=e(15),f=e(17),u=e(31),m=e(29),g=e(9),v=e(13),p=(0,i.__importStar)(e(77)),w=e(26),b=e(8),y=e(309),k=e(75),M=e(53),j=e(396),z=e(35);class S{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new z.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=S,S.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class E{constructor(e){var t;s.documents.push(this),this._init_timestamp=Date.now(),this._resolver=null!==(t=null==e?void 0:e.resolver)&&void 0!==t?t:new r.ModelResolver,this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new S(this),this.idle=new h.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter((e=>e instanceof y.LayoutDOM))}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(_.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new a.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e,t=null){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new a.LODStart)),this._interactive_finalize=t,this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&(this._interactive_plot.trigger_event(new a.LODEnd),null!=this._interactive_finalize&&this._interactive_finalize()),this._interactive_plot=null,this._interactive_timestamp=null,this._interactive_finalize=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=(0,g.copy)(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(`Somehow we didn't detach ${e}`);if(0!=this._all_models.size)throw new Error(`this._all_models still had stuff in it: ${this._all_models}`);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){_.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=p.union(e,t.references());const t=new Set(this._all_models.values()),s=p.difference(t,e),o=p.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(_.logger.debug(`Adding root: ${e}`),!(0,g.includes)(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new z.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof M.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof z.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new z.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _instantiate_object(e,t,s,o){const n=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(o.get(t))(n)}static _instantiate_references_json(e,t,s){var o;const n=new Map;for(const i of e){const e=i.id,r=i.type,l=null!==(o=i.attributes)&&void 0!==o?o:{};let _=t.get(e);null==_&&(_=E._instantiate_object(e,r,l,s),null!=i.subtype&&_.set_subtype(i.subtype)),n.set(_.id,_)}return n}static _resolve_refs(e,t,s,o){function n(e){var i;if((0,f.is_ref)(e)){const o=null!==(i=t.get(e.id))&&void 0!==i?i:s.get(e.id);if(null!=o)return o;throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}if((0,u.is_NDArray_ref)(e)){const{buffer:t,dtype:s,shape:n}=(0,u.decode_NDArray)(e,o);return(0,m.ndarray)(t,{dtype:s,shape:n})}return(0,b.isArray)(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):(0,b.isPlainObject)(e)?function(e){const t={};for(const[s,o]of(0,v.entries)(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:i,attributes:r}of e){const e=!t.has(i),l=e?s.get(i):t.get(i),_=E._resolve_refs(r,t,s,o);l.setv(_,{silent:!0}),n.set(i,{instance:l,is_new:e})}const i=[],r=new Set;function l(e){if(e instanceof c.HasProps){if(n.has(e.id)&&!r.has(e.id)){r.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of(0,v.values)(o))l(e);s&&(t.finalize(),i.push(t))}}else if((0,b.isArray)(e))for(const t of e)l(t);else if((0,b.isPlainObject)(e))for(const t of(0,v.values)(e))l(t)}for(const e of n.values())l(e.instance);for(const e of i)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const i={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return c.HasProps._json_record_references(o,s,n,{recursive:!0}),i}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),i=Object.keys(t.attributes),r=(0,g.difference)(n,i),l=(0,g.difference)(i,n),a=(0,g.intersection)(n,i),c=[];for(const e of r)_.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of l){const i=t.attributes[n];c.push(E._event_for_attribute_change(e,n,i,s,o))}for(const n of a){const i=e.attributes[n],r=t.attributes[n];null==i&&null==r||(null==i||null==r?c.push(E._event_for_attribute_change(e,n,r,s,o)):\"data\"==n||(0,w.is_equal)(i,r)||c.push(E._event_for_attribute_change(e,n,r,s,o)))}return c.filter((e=>null!=e))}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),i=new Map,r=[];for(const t of e.roots.root_ids)i.set(t,n.get(t)),r.push(t);const l=o(s),_=new Map,a=[];for(const e of s.roots.root_ids)_.set(e,l.get(e)),a.push(e);if(r.sort(),a.sort(),(0,g.difference)(r,a).length>0||(0,g.difference)(a,r).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=E._events_to_sync_objects(n.get(e),l.get(e),t,c);h=h.concat(s)}const f=new d.Serializer({include_defaults:!1});return f.to_serializable([...c]),{references:[...f.definitions],events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=new d.Serializer({include_defaults:e}),s=t.to_serializable(this._roots);return{version:l.version,title:this._title,roots:{root_ids:s.map((e=>e.id)),references:[...t.definitions]}}}static from_json_string(e){const t=JSON.parse(e);return E.from_json(t)}static from_json(e){_.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${l.version}) / Python (${t})`;s||l.version.replace(/-(dev|rc)\\./,\"$1\")==t?_.logger.debug(o):(_.logger.warn(\"JS/Python version mismatch\"),_.logger.warn(o));const n=new r.ModelResolver;null!=e.defs&&(0,j.resolve_defs)(e.defs,n);const i=e.roots,a=i.root_ids,c=i.references,d=E._instantiate_references_json(c,new Map,n);E._initialize_references_json(c,new Map,d,new Map);const h=new E({resolver:n});h._push_all_models_freeze();for(const e of a){const t=d.get(e);null!=t&&h.add_root(t)}return h._pop_all_models_freeze(),h.set_title(e.title),h}replace_with_json(e){E.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){for(const t of e)if(t.document!=this)throw new Error(\"Cannot create a patch using events from a different document\");const t=new d.Serializer,s=t.to_serializable(e);for(const e of this._all_models.values())t.remove_def(e);return{events:s,references:[...t.definitions]}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,i=E._instantiate_references_json(o,this._all_models,this._resolver);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)i.set(t,s);else if(!i.has(t))throw _.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const r=new Map(this._all_models),l=new Map;for(const[e,t]of i)r.has(e)||l.set(e,t);E._initialize_references_json(o,r,l,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=E._resolve_refs(o,r,l,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const i=e.attr,_=E._resolve_refs(e.new,r,l,t);n.setv({[i]:_},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const i=E._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in i||(i[e]=n.data[e]);n.setv({data:i},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,i=e.rollover;o.stream(n,i,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=i.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=i.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(`Unknown patch event ${JSON.stringify(e)}`)}}}s.Document=E,E.__name__=\"Document\"},\n", + " function _(e,o,s,r,t){r();const l=e(1),i=e(8),d=e(13),n=e(14);s.overrides={};const a=new Map;s.Models=e=>{const o=s.Models.get(e);if(null!=o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)},s.Models.get=e=>{var o;return null!==(o=s.overrides[e])&&void 0!==o?o:a.get(e)},s.Models.register=(e,o)=>{s.overrides[e]=o},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,o=!1,s)=>{var r;if(null!=e)for(const t of(0,i.isArray)(e)?e:(0,d.values)(e))if(r=t,(0,i.isObject)(r)&&r.prototype instanceof n.HasProps){const e=t.__qualified__;o||!a.has(e)?a.set(e,t):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>[...a.keys()];class _{constructor(){this._known_models=new Map}get(e,o){var r;const t=null!==(r=s.Models.get(e))&&void 0!==r?r:this._known_models.get(e);if(null!=t)return t;if(void 0!==o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)}register(e){const o=e.__qualified__;null==this.get(o,null)?this._known_models.set(o,e):console.warn(`Model '${o}' was already registered with this resolver`)}}s.ModelResolver=_,_.__name__=\"ModelResolver\";const g=(0,l.__importStar)(e(38));(0,s.register_models)(g);const u=(0,l.__importStar)(e(392));(0,s.register_models)(u)},\n", + " function _(n,t,r,e,i){e();\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " const o=n(9),u=Object.prototype.toString;function c(n){return!0===n||!1===n||\"[object Boolean]\"===u.call(n)}function f(n){return\"[object Number]\"===u.call(n)}function l(n){return\"[object String]\"===u.call(n)}function s(n){return\"symbol\"==typeof n}function a(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}function b(n){return a(n)&&void 0!==n[Symbol.iterator]}r.isBoolean=c,r.isNumber=f,r.isInteger=function(n){return f(n)&&Number.isInteger(n)},r.isString=l,r.isSymbol=s,r.isPrimitive=function(n){return null===n||c(n)||f(n)||l(n)||s(n)},r.isFunction=function(n){return\"[object Function]\"===u.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return(0,o.every)(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:o,abs:i}=Math,c=n<=t?e:-e,f=r(o(i(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=(0,c.min)(n.map((n=>n.length))),e=n.length,r=new Array(t);for(let o=0;on.length))),r=Array(e);for(let n=0;nn[t]))},e.argmax=function(n){return(0,c.max_by)(m(n.length),(t=>n[t]))},e.sort_by=function(n,t){const e=n.map(((n,e)=>({value:n,index:e,key:t(n)})));return e.sort(((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value))},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);l(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!l(e,r)){for(const n of t)if(!l(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=a(t);return n.filter((n=>!l(e,n)))},e.remove_at=function(n,t){const e=s(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*a;)n-=2*a;return n}function c(n,t){return u(n-t)}function f(){return Math.random()}function i(n){switch(n){case\"deg\":return a/180;case\"rad\":return 1;case\"grad\":return a/200;case\"turn\":return 2*a}}r.angle_norm=u,r.angle_dist=c,r.angle_between=function(n,t,r,e=!1){const o=c(t,r);if(0==o)return!1;if(o==2*a)return!0;const f=u(n),i=c(t,f)<=o&&c(f,r)<=o;return e?!i:i},r.random=f,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(a/180)},r.degrees=function(n){return n/(a/180)},r.resolve_angle=function(n,t){return-i(t)*n},r.to_radians_coeff=i,r.rnorm=function(n,t){let r,e;for(;r=f(),e=f(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let o=e/r;return o=n+t*o,o},r.clamp=function(n,t,r){return nr?r:n},r.log=function(n,t=Math.E){return Math.log(n)/Math.log(t)},r.float32_epsilon=1.1920928955078125e-7},\n", + " function _(r,n,e,o,s){o();class t extends Error{}e.AssertionError=t,t.__name__=\"AssertionError\",e.assert=function(r,n){if(!(!0===r||!1!==r&&r()))throw new t(null!=n?n:\"Assertion failed\")},e.unreachable=function(){throw new Error(\"unreachable code\")}},\n", + " function _(n,t,e,r,o){r();const i=n(10);function l(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,l=new n.constructor(i);let u=0;for(;u0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return Array.isArray(n)?n.slice():new n.constructor(n)},e.splice=l,e.head=u,e.insert=function(n,t,e){return l(n,e,0,t)},e.append=function(n,t){return l(n,n.length,0,t)},e.prepend=function(n,t){return l(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.minmax2=function(n,t){let e,r,o=1/0,i=-1/0,l=1/0,u=-1/0;const c=Math.min(n.length,t.length);for(let f=0;fi&&(i=e),ru&&(u=r));return[o,i,l,u]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=l)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e),0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r))}},\n", + " function _(t,e,n,c,o){c();const s=t(9),{hasOwnProperty:r}=Object.prototype;function i(t){return Object.keys(t).length}function u(t){return 0==i(t)}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(t){return Object.assign({},t)},n.merge=function(t,e){const n=Object.create(Object.prototype),c=(0,s.concat)([Object.keys(t),Object.keys(e)]);for(const o of c){const c=r.call(t,o)?t[o]:[],i=r.call(e,o)?e[o]:[];n[o]=(0,s.union)(c,i)}return n},n.size=i,n.is_empty=u,n.isEmpty=u,n.to_object=function(t){const e={};for(const[n,c]of t)e[n]=c;return e}},\n", + " function _(e,t,s,n,r){n();const i=e(1);var o;const c=e(15),a=e(17),_=(0,i.__importStar)(e(18)),h=(0,i.__importStar)(e(21)),u=e(34),l=e(13),f=e(8),p=e(26),d=e(30),g=e(35),y=e(26),v=e(36),m=e(37),b=(0,i.__importStar)(e(21));class w extends((0,c.Signalable)()){constructor(e={}){var t,s;super(),this._subtype=void 0,this.document=null,this.destroyed=new c.Signal0(this,\"destroyed\"),this.change=new c.Signal0(this,\"change\"),this.transformchange=new c.Signal0(this,\"transformchange\"),this.exprchange=new c.Signal0(this,\"exprchange\"),this.properties={},this._watchers=new WeakMap,this._pending=!1,this._changing=!1;const n=e instanceof Map?e.get.bind(e):t=>e[t];this.id=null!==(t=n(\"id\"))&&void 0!==t?t:(0,u.uniqueId)();for(const[e,{type:t,default_value:s,options:r}]of(0,l.entries)(this._props)){let i;t instanceof _.PropertyAlias?Object.defineProperty(this.properties,e,{get:()=>this.properties[t.attr],configurable:!1,enumerable:!1}):(i=t instanceof h.Kind?new _.PrimitiveProperty(this,e,t,s,n(e),r):new t(this,e,h.Any,s,n(e),r),this.properties[e]=i)}null!==(s=n(\"__deferred__\"))&&void 0!==s&&s||(this.finalize(),this.connect_signals())}get is_syncable(){return!0}set type(e){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=e}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:e,__name__:t}=this;return null!=e?`${e}.${t}`:t}static get[Symbol.toStringTag](){return this.__name__}static _fix_default(e,t){if(void 0===e||(0,f.isFunction)(e))return e;if((0,f.isPrimitive)(e))return()=>e;{const t=new m.Cloner;return()=>t.clone(e)}}static define(e){for(const[t,s]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){if(null!=this.prototype._props[t])throw new Error(`attempted to redefine property '${this.prototype.type}.${t}'`);if(null!=this.prototype[t])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${t}'`);Object.defineProperty(this.prototype,t,{get(){return this.properties[t].get_value()},set(e){return this.setv({[t]:e}),this},configurable:!1,enumerable:!0});const[e,n,r={}]=s,i={type:e,default_value:this._fix_default(n,t),options:r},o=Object.assign({},this.prototype._props);o[t]=i,this.prototype._props=o}}static internal(e){const t={};for(const[s,n]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){const[e,r,i={}]=n;t[s]=[e,r,Object.assign(Object.assign({},i),{internal:!0})]}this.define(t)}static mixins(e){function t(e,t){const s={};for(const[n,r]of(0,l.entries)(t))s[e+n]=r;return s}const s={},n=[];for(const r of(0,f.isArray)(e)?e:[e])if((0,f.isArray)(r)){const[e,i]=r;(0,l.extend)(s,t(e,i)),n.push([e,i])}else{const e=r;(0,l.extend)(s,e),n.push([\"\",e])}this.define(s),this.prototype._mixins=[...this.prototype._mixins,...n]}static override(e){for(const[t,s]of(0,l.entries)(e)){const e=this._fix_default(s,t),n=this.prototype._props[t];if(null==n)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${t}'`);const r=Object.assign({},this.prototype._props);r[t]=Object.assign(Object.assign({},n),{default_value:e}),this.prototype._props=r}}toString(){return`${this.type}(${this.id})`}property(e){const t=this.properties[e];if(null!=t)return t;throw new Error(`unknown property ${this.type}.${e}`)}get attributes(){const e={};for(const t of this)e[t.attr]=t.get_value();return e}[m.clone](e){const t=new Map;for(const s of this)s.dirty&&t.set(s.attr,e.clone(s.get_value()));return new this.constructor(t)}[y.equals](e,t){for(const s of this){const n=e.property(s.attr);if(!t.eq(s.get_value(),n.get_value()))return!1}return!0}[v.pretty](e){const t=e.token,s=[];for(const n of this)if(n.dirty){const r=n.get_value();s.push(`${n.attr}${t(\":\")} ${e.to_string(r)}`)}return`${this.constructor.__qualified__}${t(\"(\")}${t(\"{\")}${s.join(`${t(\",\")} `)}${t(\"}\")}${t(\")\")}`}[d.serialize](e){const t=this.ref();e.add_ref(this,t);const s=this.struct();for(const t of this)t.syncable&&(e.include_defaults||t.dirty)&&(s.attributes[t.attr]=e.to_serializable(t.get_value()));return e.add_def(this,s),t}finalize(){for(const e of this){if(!(e instanceof _.VectorSpec||e instanceof _.ScalarSpec))continue;const t=e.get_value();if(null!=t){const{transform:e,expr:s}=t;null!=e&&this.connect(e.change,(()=>this.transformchange.emit())),null!=s&&this.connect(s.change,(()=>this.exprchange.emit()))}}this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){c.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return(new m.Cloner).clone(this)}changed_for(e){const t=this._watchers.get(e);return this._watchers.set(e,!1),null==t||t}_setv(e,t){const s=t.check_eq,n=[],r=this._changing;this._changing=!0;for(const[t,r]of e)!1!==s&&(0,p.is_equal)(t.get_value(),r)||(t.set_value(r),n.push(t));n.length>0&&(this._watchers=new WeakMap,this._pending=!0);for(const e of n)e.change.emit();if(!r){if(!t.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(e,t={}){const s=(0,l.entries)(e);if(0==s.length)return;if(!0===t.silent){this._watchers=new WeakMap;for(const[e,t]of s)this.properties[e].set_value(t);return}const n=new Map,r=new Map;for(const[e,t]of s){const s=this.properties[e];n.set(s,t),r.set(s,s.get_value())}this._setv(n,t);const{document:i}=this;if(null!=i){const e=[];for(const[t,s]of r)e.push([t,s,t.get_value()]);for(const[,t,s]of e)if(this._needs_invalidate(t,s)){i._invalidate_all_models();break}this._push_changes(e,t)}}getv(e){return this.property(e).get_value()}ref(){return{id:this.id}}struct(){const e={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(e.subtype=this._subtype),e}set_subtype(e){this._subtype=e}*[Symbol.iterator](){yield*(0,l.values)(this.properties)}*syncable_properties(){for(const e of this)e.syncable&&(yield e)}serializable_attributes(){const e={};for(const t of this.syncable_properties())e[t.attr]=t.get_value();return e}static _json_record_references(e,t,s,n){const{recursive:r}=n;if((0,a.is_ref)(t)){const n=e.get_model_by_id(t.id);null==n||s.has(n)||w._value_record_references(n,s,{recursive:r})}else if((0,f.isArray)(t))for(const n of t)w._json_record_references(e,n,s,{recursive:r});else if((0,f.isPlainObject)(t))for(const n of(0,l.values)(t))w._json_record_references(e,n,s,{recursive:r})}static _value_record_references(e,t,s){const{recursive:n}=s;if(e instanceof w){if(!t.has(e)&&(t.add(e),n))for(const s of e.syncable_properties()){const e=s.get_value();w._value_record_references(e,t,{recursive:n})}}else if((0,f.isArray)(e))for(const s of e)w._value_record_references(s,t,{recursive:n});else if((0,f.isPlainObject)(e))for(const s of(0,l.values)(e))w._value_record_references(s,t,{recursive:n})}references(){const e=new Set;return w._value_record_references(this,e,{recursive:!0}),e}_doc_attached(){}_doc_detached(){}attach_document(e){if(null!=this.document&&this.document!=e)throw new Error(\"models must be owned by only a single document\");this.document=e,this._doc_attached()}detach_document(){this._doc_detached(),this.document=null}_needs_invalidate(e,t){const s=new Set;w._value_record_references(t,s,{recursive:!1});const n=new Set;w._value_record_references(e,n,{recursive:!1});for(const e of s)if(!n.has(e))return!0;for(const e of n)if(!s.has(e))return!0;return!1}_push_changes(e,t={}){if(!this.is_syncable)return;const{document:s}=this;if(null==s)return;const{setter_id:n}=t,r=[];for(const[t,i,o]of e)t.syncable&&r.push(new g.ModelChangedEvent(s,this,t.attr,i,o,n));if(0!=r.length){let e;1==r.length?[e]=r:e=new g.DocumentEventBatch(s,r,n),s._trigger_on_change(e)}}on_change(e,t){for(const s of(0,f.isArray)(e)?e:[e])this.connect(s.change,t)}}s.HasProps=w,(o=w).prototype._props={},o.prototype._mixins=[]},\n", + " function _(n,t,e,l,s){l();const i=n(16),o=n(9);class c{constructor(n,t){this.sender=n,this.name=t}connect(n,t=null){u.has(this.sender)||u.set(this.sender,[]);const e=u.get(this.sender);if(null!=g(e,this,n,t))return!1;const l=null!=t?t:n;a.has(l)||a.set(l,[]);const s=a.get(l),i={signal:this,slot:n,context:t};return e.push(i),s.push(i),!0}disconnect(n,t=null){const e=u.get(this.sender);if(null==e||0===e.length)return!1;const l=g(e,this,n,t);if(null==l)return!1;const s=null!=t?t:n,i=a.get(s);return l.signal=null,d(e),d(i),!0}emit(n){var t;const e=null!==(t=u.get(this.sender))&&void 0!==t?t:[];for(const{signal:t,slot:l,context:s}of e)t===this&&l.call(s,n,this.sender)}}e.Signal=c,c.__name__=\"Signal\";class r extends c{emit(){super.emit(void 0)}}e.Signal0=r,r.__name__=\"Signal0\",function(n){function t(n,t){const e=u.get(n);if(null==e||0===e.length)return;const l=a.get(t);if(null!=l&&0!==l.length){for(const t of l){if(null==t.signal)return;t.signal.sender===n&&(t.signal=null)}d(e),d(l)}}function e(n){var t;const e=u.get(n);if(null!=e&&0!==e.length){for(const n of e){if(null==n.signal)return;const e=null!==(t=n.context)&&void 0!==t?t:n.slot;n.signal=null,d(a.get(e))}d(e)}}function l(n,t,e){const l=a.get(n);if(null!=l&&0!==l.length){for(const n of l){if(null==n.signal)return;if(null!=t&&n.slot!=t)continue;const l=n.signal.sender;null!=e&&e.has(l)||(n.signal=null,d(u.get(l)))}d(l)}}function s(n){const t=u.get(n);if(null!=t&&0!==t.length){for(const n of t)n.signal=null;d(t)}const e=a.get(n);if(null!=e&&0!==e.length){for(const n of e)n.signal=null;d(e)}}n.disconnect_between=t,n.disconnect_sender=e,n.disconnect_receiver=l,n.disconnect_all=s,n.disconnectBetween=t,n.disconnectSender=e,n.disconnectReceiver=l,n.disconnectAll=s}(c||(e.Signal=c={})),e.Signalable=function(){return class{connect(n,t){return n.connect(t,this)}disconnect(n,t){return n.disconnect(t,this)}}};const u=new WeakMap,a=new WeakMap;function g(n,t,e,l){return(0,o.find)(n,(n=>n.signal===t&&n.slot===e&&n.context===l))}const f=new Set;function d(n){0===f.size&&(async()=>{await(0,i.defer)(),function(){for(const n of f)(0,o.remove_by)(n,(n=>null==n.signal));f.clear()}()})(),f.add(n)}},\n", + " function _(e,n,t,s,o){s();const r=new MessageChannel,a=new Map;r.port1.onmessage=e=>{const n=e.data,t=a.get(n);if(null!=t)try{t()}finally{a.delete(n)}};let i=1;t.defer=function(){return new Promise((e=>{const n=i++;a.set(n,e),r.port2.postMessage(n)}))},t.wait=function(e){return new Promise((n=>setTimeout(n,e)))}},\n", + " function _(n,t,i,e,c){e();const r=n(8),s=n(13);i.is_ref=function(n){if((0,r.isPlainObject)(n)){const t=(0,s.keys)(n);return 1==t.length&&\"id\"==t[0]}return!1}},\n", + " function _(e,t,n,r,a){r(),n.YCoordinateSeqSeqSeqSpec=n.XCoordinateSeqSeqSeqSpec=n.YCoordinateSeqSpec=n.XCoordinateSeqSpec=n.YCoordinateSpec=n.XCoordinateSpec=n.CoordinateSeqSeqSeqSpec=n.CoordinateSeqSpec=n.CoordinateSpec=n.BaseCoordinateSpec=n.NumberUnitsSpec=n.UnitsSpec=n.DataSpec=n.VectorSpec=n.TextBaselineScalar=n.TextAlignScalar=n.FontStyleScalar=n.FontSizeScalar=n.FontScalar=n.LineDashScalar=n.LineCapScalar=n.LineJoinScalar=n.ArrayScalar=n.NullStringScalar=n.StringScalar=n.NumberScalar=n.ColorScalar=n.AnyScalar=n.ScalarSpec=n.VerticalAlign=n.UpdateMode=n.TooltipAttachment=n.TickLabelOrientation=n.TextureRepetition=n.TextBaseline=n.TextAlign=n.TapBehavior=n.StepMode=n.StartEnd=n.SpatialUnits=n.Sort=n.SizingMode=n.Side=n.RoundingFunction=n.ResetPolicy=n.RenderMode=n.RenderLevel=n.RadiusDimension=n.PointPolicy=n.Place=void 0,n.TextBaselineSpec=n.TextAlignSpec=n.FontStyleSpec=n.FontSizeSpec=n.FontSpec=n.LineDashSpec=n.LineCapSpec=n.LineJoinSpec=n.MarkerSpec=n.ArraySpec=n.NullStringSpec=n.StringSpec=n.AnySpec=n.NDArraySpec=n.ColorSpec=n.ScreenSizeSpec=n.NumberSpec=n.IntSpec=n.BooleanSpec=n.NullDistanceSpec=n.DistanceSpec=n.AngleSpec=void 0;const i=e(1),s=e(15),l=e(19),o=(0,i.__importStar)(e(20)),c=e(24),_=e(9),u=e(12),d=e(10),S=e(22),p=e(27),m=e(8),h=e(28),v=e(29),y=e(33);function x(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function g(e){return(0,m.isPlainObject)(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}a(\"Uniform\",y.Uniform),a(\"UniformScalar\",y.UniformScalar),a(\"UniformVector\",y.UniformVector),n.isSpec=g;class f{constructor(e,t,n,r,a,i={}){var l;let o;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=r,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=i.internal)&&void 0!==l&&l,this.convert=i.convert,this.on_update=i.on_update,void 0!==a)o=a,this._dirty=!0;else{const t=this._default_override();if(void 0!==t)o=t;else{if(void 0===r)return void(this.spec={value:null});o=r(e)}}this._update(o)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){var t;if(this.validate(e),null!=this.convert){const t=this.convert(e);void 0!==t&&(e=t)}this.spec={value:e},null===(t=this.on_update)||void 0===t||t.call(this,e,this.obj)}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${x(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj}.${this.attr} given invalid value: ${x(e)}`)}valid(e){return this.kind.valid(e)}_value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=f,f.__name__=\"Property\";class A{constructor(e){this.attr=e}}n.PropertyAlias=A,A.__name__=\"PropertyAlias\",n.Alias=function(e){return new A(e)};class C extends f{}n.PrimitiveProperty=C,C.__name__=\"PrimitiveProperty\";class T extends f{}n.Any=T,T.__name__=\"Any\";class L extends f{valid(e){return(0,m.isArray)(e)||(0,m.isTypedArray)(e)}}n.Array=L,L.__name__=\"Array\";class w extends f{valid(e){return(0,m.isBoolean)(e)}}n.Boolean=w,w.__name__=\"Boolean\";class P extends f{valid(e){return(0,S.is_Color)(e)}}n.Color=P,P.__name__=\"Color\";class b extends f{}n.Instance=b,b.__name__=\"Instance\";class q extends f{valid(e){return(0,m.isNumber)(e)}}n.Number=q,q.__name__=\"Number\";class N extends q{valid(e){return(0,m.isNumber)(e)&&(0|e)==e}}n.Int=N,N.__name__=\"Int\";class z extends q{}n.Angle=z,z.__name__=\"Angle\";class B extends q{valid(e){return(0,m.isNumber)(e)&&0<=e&&e<=1}}n.Percent=B,B.__name__=\"Percent\";class F extends f{valid(e){return(0,m.isString)(e)}}n.String=F,F.__name__=\"String\";class D extends f{valid(e){return null===e||(0,m.isString)(e)}}n.NullString=D,D.__name__=\"NullString\";class U extends F{}n.FontSize=U,U.__name__=\"FontSize\";class M extends F{_default_override(){return h.settings.dev?\"Bokeh\":void 0}}n.Font=M,M.__name__=\"Font\";class R extends f{valid(e){return(0,m.isString)(e)&&(0,_.includes)(this.enum_values,e)}}function k(e){return class extends R{get enum_values(){return[...e]}}}n.EnumProperty=R,R.__name__=\"EnumProperty\",n.Enum=k;class O extends R{get enum_values(){return[...o.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;n=0}}n.ScreenSizeSpec=fe,fe.__name__=\"ScreenSizeSpec\";class Ae extends ne{materialize(e){return(0,S.encode_rgba)((0,S.color2rgba)(e))}v_materialize(e){if(!(0,v.is_NDArray)(e)){const t=e.length,n=new c.RGBAArray(4*t);let r=0;for(const t of e){const[e,a,i,s]=(0,S.color2rgba)(t);n[r++]=e,n[r++]=a,n[r++]=i,n[r++]=s}return new c.ColorArray(n.buffer)}if(\"uint32\"==e.dtype&&1==e.dimension)return(0,p.to_big_endian)(e);if(\"uint8\"==e.dtype&&1==e.dimension){const[t]=e.shape,n=new c.RGBAArray(4*t);let r=0;for(const t of e)n[r++]=t,n[r++]=t,n[r++]=t,n[r++]=255;return new c.ColorArray(n.buffer)}if(\"uint8\"==e.dtype&&2==e.dimension){const[t,n]=e.shape;if(4==n)return new c.ColorArray(e.buffer);if(3==n){const r=new c.RGBAArray(4*t);for(let a=0,i=0;a0){let o=r[e];return null==o&&(r[e]=o=new v(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof i)this._log_level=e;else{if(!(0,s.isString)(e)||null==v.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=v.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of(0,g.entries)(v.log_levels))o.level\",\"*\"),t.HTTPMethod=(0,a.Enum)(\"POST\",\"GET\"),t.HexTileOrientation=(0,a.Enum)(\"pointytop\",\"flattop\"),t.HoverMode=(0,a.Enum)(\"mouse\",\"hline\",\"vline\"),t.LatLon=(0,a.Enum)(\"lat\",\"lon\"),t.LegendClickPolicy=(0,a.Enum)(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=(0,a.Enum)(\"butt\",\"round\",\"square\"),t.LineJoin=(0,a.Enum)(\"miter\",\"round\",\"bevel\"),t.LineDash=(0,a.Enum)(\"solid\",\"dashed\",\"dotted\",\"dotdash\",\"dashdot\"),t.LinePolicy=(0,a.Enum)(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.Logo=(0,a.Enum)(\"normal\",\"grey\"),t.MarkerType=(0,a.Enum)(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"star\",\"star_dot\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=(0,a.Enum)(\"show\",\"ignore\"),t.Orientation=(0,a.Enum)(\"vertical\",\"horizontal\"),t.OutputBackend=(0,a.Enum)(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=(0,a.Enum)(\"percent\",\"absolute\"),t.Place=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=(0,a.Enum)(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=(0,a.Enum)(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=(0,a.Enum)(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=(0,a.Enum)(\"canvas\",\"css\"),t.ResetPolicy=(0,a.Enum)(\"standard\",\"event_only\"),t.RoundingFunction=(0,a.Enum)(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=(0,a.Enum)(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=(0,a.Enum)(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=(0,a.Enum)(\"ascending\",\"descending\"),t.SpatialUnits=(0,a.Enum)(\"screen\",\"data\"),t.StartEnd=(0,a.Enum)(\"start\",\"end\"),t.StepMode=(0,a.Enum)(\"after\",\"before\",\"center\"),t.TapBehavior=(0,a.Enum)(\"select\",\"inspect\"),t.TextAlign=(0,a.Enum)(\"left\",\"right\",\"center\"),t.TextBaseline=(0,a.Enum)(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=(0,a.Enum)(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=(0,a.Enum)(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=(0,a.Enum)(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=(0,a.Enum)(\"replace\",\"append\"),t.VerticalAlign=(0,a.Enum)(\"top\",\"middle\",\"bottom\")},\n", + " function _(e,n,t,s,r){s();const i=(0,e(1).__importStar)(e(8)),a=e(22),l=e(13),_=window.Map,{hasOwnProperty:u}=Object.prototype;class d{}t.Kind=d,d.__name__=\"Kind\",function(e){class n extends d{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends d{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class s extends d{valid(e){return i.isBoolean(e)}}s.__name__=\"Boolean\",e.Boolean=s;class r extends d{constructor(e){super(),this.obj_type=e}valid(e){return!0}}r.__name__=\"Ref\",e.Ref=r;class c extends d{valid(e){return!0}}c.__name__=\"AnyRef\",e.AnyRef=c;class o extends d{valid(e){return i.isNumber(e)}}o.__name__=\"Number\",e.Number=o;class p extends o{valid(e){return super.valid(e)&&i.isInteger(e)}}p.__name__=\"Int\",e.Int=p;class y extends o{valid(e){return super.valid(e)&&0<=e&&e<=1}}y.__name__=\"Percent\",e.Percent=y;class m extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some((n=>n.valid(e)))}}m.__name__=\"Or\",e.Or=m;class v extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!i.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e)))}}f.__name__=\"Array\",e.Array=f;class K extends d{valid(e){return null===e}}K.__name__=\"Null\",e.Null=K;class b extends d{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}b.__name__=\"Nullable\",e.Nullable=b;class A extends d{constructor(e){super(),this.base_type=e}valid(e){return void 0===e||this.base_type.valid(e)}}A.__name__=\"Opt\",e.Opt=A;class x extends d{valid(e){return i.isString(e)}}x.__name__=\"String\",e.String=x;class S extends d{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}S.__name__=\"Enum\",e.Enum=S;class N extends d{constructor(e){super(),this.item_type=e}valid(e){if(!i.isPlainObject(e))return!1;for(const n in e)if(u.call(e,n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}N.__name__=\"Dict\",e.Dict=N;class O extends d{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof _))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}O.__name__=\"Map\",e.Map=O;class g extends d{valid(e){return(0,a.is_Color)(e)}}g.__name__=\"Color\",e.Color=g;class P extends d{valid(e){return i.isFunction(e)}}P.__name__=\"Function\",e.Function=P}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null;t.Nullable=e=>new t.Kinds.Nullable(e);t.Opt=e=>new t.Kinds.Opt(e);t.Or=(...e)=>new t.Kinds.Or(e);t.Tuple=(...e)=>new t.Kinds.Tuple(e);t.Struct=e=>new t.Kinds.Struct(e),t.Arrayable=new t.Kinds.Arrayable;t.Array=e=>new t.Kinds.Array(e);t.Dict=e=>new t.Kinds.Dict(e);t.Map=(e,n)=>new t.Kinds.Map(e,n);t.Enum=(...e)=>new t.Kinds.Enum(e);t.Ref=e=>new t.Kinds.Ref(e);t.AnyRef=()=>new t.Kinds.AnyRef;t.Function=()=>new t.Kinds.Function,t.Percent=new t.Kinds.Percent,t.Alpha=t.Percent,t.Color=new t.Kinds.Color,t.Auto=(0,t.Enum)(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n", + " function _(n,t,r,e,s){e();const u=n(23),c=n(10),l=n(8),{round:i}=Math;function o(n){return(0,c.clamp)(i(n),0,255)}function a(){return[0,0,0,0]}function f(n){return[n>>24&255,n>>16&255,n>>8&255,255&n]}function d(n,t){var r;let e,s,u,c;return null==n?[e,s,u,c]=[0,0,0,0]:(0,l.isInteger)(n)?[e,s,u,c]=f(n):(0,l.isString)(n)?[e,s,u,c]=null!==(r=_(n))&&void 0!==r?r:[0,0,0,0]:([e,s,u,c=1]=n,c=o(255*c)),255==c&&null!=t&&(c=o(255*t)),[e,s,u,c]}r.transparent=a,r.encode_rgba=function([n,t,r,e]){return n<<24|t<<16|r<<8|e},r.decode_rgba=f,r.compose_alpha=function(n,t){return 255==(255&n)?4294967040&n|o(255*t):n},r.color2rgba=d;const h={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"a\",11:\"b\",12:\"c\",13:\"d\",14:\"e\",15:\"f\"};function g(n){return h[n>>4]+h[15&n]}r.color2css=function(n,t){const[r,e,s,u]=d(n,t);return`rgba(${r}, ${e}, ${s}, ${u/255})`},r.color2hex=function(n,t){const[r,e,s,u]=d(n,t),c=`#${g(r)}${g(e)}${g(s)}`;return 255==u?c:`${c}${g(u)}`},r.color2hexrgb=function(n){const[t,r,e]=d(n);return`#${g(t)}${g(r)}${g(e)}`};const b=/^rgba?\\(\\s*([^\\s,]+?)\\s+([^\\s,]+?)\\s+([^\\s,]+?)(?:\\s*\\/\\s*([^\\s,]+?))?\\s*\\)$/,$=/^rgba?\\(\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)(?:\\s*,\\s*([^\\s,]+?))?\\s*\\)$/,m=(()=>{const n=document.createElement(\"canvas\");n.width=1,n.height=1;const t=n.getContext(\"2d\"),r=t.createLinearGradient(0,0,1,1);return n=>{t.fillStyle=r,t.fillStyle=n;const e=t.fillStyle;return e!=r?e:null}})();function _(n){var t;if(!(n=n.trim().toLowerCase()))return null;if(\"transparent\"==n)return[0,0,0,0];if((0,u.is_named_color)(n))return f(u.named_colors[n]);if(\"#\"==n[0]){const t=Number(`0x${n.substr(1)}`);if(isNaN(t))return null;switch(n.length-1){case 3:{const n=t>>8&15,r=t>>4&15,e=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,255]}case 4:{const n=t>>12&15,r=t>>8&15,e=t>>4&15,s=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,s<<4|s]}case 6:return[t>>16&255,t>>8&255,t>>0&255,255];case 8:return[t>>24&255,t>>16&255,t>>8&255,t>>0&255]}}else if(n.startsWith(\"rgb\")){const r=null!==(t=n.match(b))&&void 0!==t?t:n.match($);if(null!=r){let[,n,t,e,s=\"1\"]=r;const u=n.endsWith(\"%\"),c=t.endsWith(\"%\"),l=e.endsWith(\"%\"),i=s.endsWith(\"%\");if(!(u&&c&&l)&&(u||c||l))return null;u&&(n=n.slice(0,-1)),c&&(t=t.slice(0,-1)),l&&(e=e.slice(0,-1)),i&&(s=s.slice(0,-1));let a=Number(n),f=Number(t),d=Number(e),h=Number(s);return isNaN(a+f+d+h)?null:(u&&(a=a/100*255),c&&(f=f/100*255),l&&(d=d/100*255),h=255*(i?h/100:h),a=o(a),f=o(f),d=o(d),h=o(h),[a,f,d,h])}}else{const t=m(n);if(null!=t)return _(t)}return null}r.css4_parse=_,r.is_Color=function(n){return!!(0,l.isInteger)(n)||(!(!(0,l.isString)(n)||null==_(n))||!(!(0,l.isArray)(n)||3!=n.length&&4!=n.length))},r.is_dark=function([n,t,r]){return 1-(.299*n+.587*t+.114*r)/255>=.6}},\n", + " function _(e,r,l,a,i){a();l.named_colors={aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},l.is_named_color=function(e){return e in l.named_colors}},\n", + " function _(r,t,n,a,o){a(),n.GeneratorFunction=Object.getPrototypeOf((function*(){})).constructor,n.ColorArray=Uint32Array,n.RGBAArray=Uint8ClampedArray,n.infer_type=function(r,t){return r instanceof Float64Array||r instanceof Array||t instanceof Float64Array||t instanceof Array?Float64Array:Float32Array},n.ScreenArray=Float32Array,n.to_screen=function(r){return r instanceof Float32Array?r:Float32Array.from(r)},o(\"Indices\",r(25).BitSet)},\n", + " function _(t,s,r,e,i){var n;e();const o=t(26),a=t(11);class _{constructor(t,s=0){this.size=t,this[n]=\"BitSet\",this._count=null,this._nwords=Math.ceil(t/32),0==s||1==s?(this._array=new Uint32Array(this._nwords),1==s&&this._array.fill(4294967295)):((0,a.assert)(s.length==this._nwords,\"Initializer size mismatch\"),this._array=s)}clone(){return new _(this.size,new Uint32Array(this._array))}[(n=Symbol.toStringTag,o.equals)](t,s){if(!s.eq(this.size,t.size))return!1;const{_nwords:r}=this,e=this.size%r,i=0==e?r:r-1;for(let s=0;s>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){(0,a.assert)(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;s{if(a(t)&&a(e))return t[r.equals](e,this);switch(n){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(`${t}`,`${e}`)}if(t instanceof Node)return this.nodes(t,e);throw Error(`can't compare objects of type ${n}`)})();return s.pop(),o.pop(),u}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n{const n=navigator.userAgent;return n.includes(\"MSIE\")||n.includes(\"Trident\")||n.includes(\"Edge\")})(),e.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),e.is_little_endian=(()=>{const n=new ArrayBuffer(4),i=new Uint8Array(n);new Uint32Array(n)[1]=168496141;let e=!0;return 10==i[4]&&11==i[5]&&12==i[6]&&13==i[7]&&(e=!1),e})(),e.BYTE_ORDER=e.is_little_endian?\"little\":\"big\",e.to_big_endian=function(n){if(e.is_little_endian){const i=new Uint32Array(n.length),e=new DataView(i.buffer);let t=0;for(const i of n)e.setUint32(t,i),t+=4;return i}return n}},\n", + " function _(e,t,r,s,_){s();class i{constructor(){this._dev=!1,this._wireframe=!1,this._force_webgl=!1}set dev(e){this._dev=e}get dev(){return this._dev}set wireframe(e){this._wireframe=e}get wireframe(){return this._wireframe}set force_webgl(e){this._force_webgl=e}get force_webgl(){return this._force_webgl}}r.Settings=i,i.__name__=\"Settings\",r.settings=new i},\n", + " function _(e,s,t,i,r){var a,n,l,h,u,o,p,c;i();const y=e(8),_=e(11),A=e(26),q=e(30),d=e(31),z=Symbol(\"__ndarray__\");class D extends Uint8Array{constructor(e,s){super(e),this[a]=!0,this.dtype=\"uint8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>D.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>D.prototype[q.serialize].call(this,e))}[(a=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint8NDArray=D,D.__name__=\"Uint8NDArray\";class N extends Int8Array{constructor(e,s){super(e),this[n]=!0,this.dtype=\"int8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>N.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>N.prototype[q.serialize].call(this,e))}[(n=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int8NDArray=N,N.__name__=\"Int8NDArray\";class f extends Uint16Array{constructor(e,s){super(e),this[l]=!0,this.dtype=\"uint16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>f.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>f.prototype[q.serialize].call(this,e))}[(l=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint16NDArray=f,f.__name__=\"Uint16NDArray\";class m extends Int16Array{constructor(e,s){super(e),this[h]=!0,this.dtype=\"int16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>m.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>m.prototype[q.serialize].call(this,e))}[(h=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int16NDArray=m,m.__name__=\"Int16NDArray\";class g extends Uint32Array{constructor(e,s){super(e),this[u]=!0,this.dtype=\"uint32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>g.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>g.prototype[q.serialize].call(this,e))}[(u=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint32NDArray=g,g.__name__=\"Uint32NDArray\";class I extends Int32Array{constructor(e,s){super(e),this[o]=!0,this.dtype=\"int32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>I.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>I.prototype[q.serialize].call(this,e))}[(o=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int32NDArray=I,I.__name__=\"Int32NDArray\";class U extends Float32Array{constructor(e,s){super(e),this[p]=!0,this.dtype=\"float32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>U.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>U.prototype[q.serialize].call(this,e))}[(p=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Float32NDArray=U,U.__name__=\"Float32NDArray\";class w extends Float64Array{constructor(e,s){super(e),this[c]=!0,this.dtype=\"float64\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>w.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>w.prototype[q.serialize].call(this,e))}[(c=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}function x(e){return(0,y.isObject)(e)&&void 0!==e[z]}t.Float64NDArray=w,w.__name__=\"Float64NDArray\",t.is_NDArray=x,t.ndarray=function(e,s={}){let{dtype:t}=s;null==t&&(t=e instanceof ArrayBuffer||(0,y.isArray)(e)?\"float64\":(()=>{switch(!0){case e instanceof Uint8Array:return\"uint8\";case e instanceof Int8Array:return\"int8\";case e instanceof Uint16Array:return\"uint16\";case e instanceof Int16Array:return\"int16\";case e instanceof Uint32Array:return\"uint32\";case e instanceof Int32Array:return\"int32\";case e instanceof Float32Array:return\"float32\";case e instanceof Float64Array:return\"float64\";default:(0,_.unreachable)()}})());const{shape:i}=s;switch(t){case\"uint8\":return new D(e,i);case\"int8\":return new N(e,i);case\"uint16\":return new f(e,i);case\"int16\":return new m(e,i);case\"uint32\":return new g(e,i);case\"int32\":return new I(e,i);case\"float32\":return new U(e,i);case\"float64\":return new w(e,i)}}},\n", + " function _(e,r,t,i,s){i();const n=e(11),a=e(13),l=e(8);t.serialize=Symbol(\"serialize\");class o extends Error{}t.SerializationError=o,o.__name__=\"SerializationError\";class f{constructor(e){var r;this._references=new Map,this._definitions=new Map,this._refmap=new Map,this.include_defaults=null===(r=null==e?void 0:e.include_defaults)||void 0===r||r}get_ref(e){return this._references.get(e)}add_ref(e,r){(0,n.assert)(!this._references.has(e)),this._references.set(e,r)}add_def(e,r){const t=this.get_ref(e);(0,n.assert)(null!=t),this._definitions.set(e,r),this._refmap.set(t,r)}get objects(){return new Set(this._references.keys())}get references(){return new Set(this._references.values())}get definitions(){return new Set(this._definitions.values())}resolve_ref(e){return this._refmap.get(e)}remove_ref(e){return this._references.delete(e)}remove_def(e){return this._definitions.delete(e)}to_serializable(e){const r=this.get_ref(e);if(null!=r)return r;if(function(e){return(0,l.isObject)(e)&&void 0!==e[t.serialize]}(e))return e[t.serialize](this);if((0,l.isArray)(e)||(0,l.isTypedArray)(e)){const r=e.length,t=new Array(r);for(let i=0;i(0,s.buffer_to_base64)(_.buffer)};return Object.assign({__ndarray__:e},r)}}},\n", + " function _(t,n,e,r,o){r(),e.buffer_to_base64=function(t){const n=new Uint8Array(t),e=Array.from(n).map((t=>String.fromCharCode(t)));return btoa(e.join(\"\"))},e.base64_to_buffer=function(t){const n=atob(t),e=n.length,r=new Uint8Array(e);for(let t=0,o=e;t\"'`])/g,(t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}}))},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,((t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}}))},r.use_strict=function(t){return`'use strict';\\n${t}`},r.to_fixed=function(t,e){return t.toFixed(e).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\")}},\n", + " function _(e,t,s,n,o){n();const i=e(30);class r{constructor(e){this.document=e}}s.DocumentEvent=r,r.__name__=\"DocumentEvent\";class a extends r{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=a,a.__name__=\"DocumentEventBatch\";class d extends r{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class l extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}[i.serialize](e){const t=this.msg_data,s=e.to_serializable(t);return{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=l,l.__name__=\"MessageSentEvent\";class _ extends d{constructor(e,t,s,n,o,i,r){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=i,this.hint=r}[i.serialize](e){if(null!=this.hint)return e.to_serializable(this.hint);const t=this.new_,s=e.to_serializable(t);return this.model!=t&&e.remove_def(this.model),{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=_,_.__name__=\"ModelChangedEvent\";class c extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}[i.serialize](e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=c,c.__name__=\"ColumnsPatchedEvent\";class h extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}[i.serialize](e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=h,h.__name__=\"ColumnsStreamedEvent\";class m extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}[i.serialize](e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=m,m.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootAdded\",model:e.to_serializable(this.model)}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class v extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=v,v.__name__=\"RootRemovedEvent\"},\n", + " function _(t,i,r,n,s){n();const e=t(8),o=t(13);r.pretty=Symbol(\"pretty\");class c{constructor(t){this.visited=new Set,this.precision=null==t?void 0:t.precision}to_string(t){if((0,e.isObject)(t)){if(this.visited.has(t))return\"\";this.visited.add(t)}return function(t){return(0,e.isObject)(t)&&void 0!==t[r.pretty]}(t)?t[r.pretty](this):(0,e.isBoolean)(t)?this.boolean(t):(0,e.isNumber)(t)?this.number(t):(0,e.isString)(t)?this.string(t):(0,e.isArray)(t)?this.array(t):(0,e.isIterable)(t)?this.iterable(t):(0,e.isPlainObject)(t)?this.object(t):(0,e.isSymbol)(t)?this.symbol(t):`${t}`}token(t){return t}boolean(t){return`${t}`}number(t){return null!=this.precision?t.toFixed(this.precision):`${t}`}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}symbol(t){return t.toString()}array(t){const i=this.token,r=[];for(const i of t)r.push(this.to_string(i));return`${i(\"[\")}${r.join(`${i(\",\")} `)}${i(\"]\")}`}iterable(t){var i;const r=this.token,n=null!==(i=Object(t)[Symbol.toStringTag])&&void 0!==i?i:\"Object\",s=this.array(t);return`${n}${r(\"(\")}${s}${r(\")\")}`}object(t){const i=this.token,r=[];for(const[n,s]of(0,o.entries)(t))r.push(`${n}${i(\":\")} ${this.to_string(s)}`);return`${i(\"{\")}${r.join(`${i(\",\")} `)}${i(\"}\")}`}}r.Printer=c,c.__name__=\"Printer\",r.to_string=function(t,i){return new c(i).to_string(t)}},\n", + " function _(n,o,r,e,t){e();const l=n(13),i=n(8);function c(n){return(0,i.isObject)(n)&&void 0!==n[r.clone]}r.clone=Symbol(\"clone\"),r.is_Cloneable=c;class s extends Error{}r.CloningError=s,s.__name__=\"CloningError\";class a{constructor(){}clone(n){if(c(n))return n[r.clone](this);if((0,i.isArray)(n)){const o=n.length,r=new Array(o);for(let e=0;e{null!=this.layout&&(this.layout.visible=this.model.visible,this.plot_view.request_layout())}))}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}i.AnnotationView=r,r.__name__=\"AnnotationView\";class a extends l.Renderer{constructor(t){super(t)}}i.Annotation=a,o=a,a.__name__=\"Annotation\",o.override({level:\"annotation\"})},\n", + " function _(e,i,t,n,s){n();const r=e(1);var o,a;const _=e(42),l=(0,r.__importStar)(e(45)),d=e(20),h=e(53),u=e(54);class c extends h.Model{constructor(e){super(e)}}t.RendererGroup=c,o=c,c.__name__=\"RendererGroup\",o.define((({Boolean:e})=>({visible:[e,!0]})));class p extends _.View{get coordinates(){const{_coordinates:e}=this;return null!=e?e:this._coordinates=this._initialize_coordinates()}initialize(){super.initialize(),this.visuals=new l.Visuals(this),this.needs_webgl_blit=!1}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],(()=>this._initialize_coordinates()));const{group:t}=this.model;null!=t&&this.on_change(t.properties.visible,(()=>{this.model.visible=t.visible}))}_initialize_coordinates(){const{coordinates:e}=this.model,{frame:i}=this.plot_view;if(null!=e)return e.get_transform(i);{const{x_range_name:e,y_range_name:t}=this.model,n=i.x_scales.get(e),s=i.y_scales.get(t);return new u.CoordinateTransform(n,s)}}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.canvas;return\"overlay\"==this.model.level?e:i}get canvas(){return this.plot_view.canvas_view}request_render(){this.request_paint()}request_paint(){this.plot_view.request_paint(this)}request_layout(){this.plot_view.request_layout()}notify_finished(){this.plot_view.notify_finished()}notify_finished_after_paint(){this.plot_view.notify_finished_after_paint()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}renderer_view(e){}}t.RendererView=p,p.__name__=\"RendererView\";class g extends h.Model{constructor(e){super(e)}}t.Renderer=g,a=g,g.__name__=\"Renderer\",a.define((({Boolean:e,String:i,Ref:t,Nullable:n})=>({group:[n(t(c)),null],level:[d.RenderLevel,\"image\"],visible:[e,!0],x_range_name:[i,\"default\"],y_range_name:[i,\"default\"],coordinates:[n(t(u.CoordinateMapping)),null]})))},\n", + " function _(t,e,s,i,n){i();const o=t(1),h=t(15),r=t(43),l=t(8),_=(0,o.__importDefault)(t(44));class d{constructor(t){this.removed=new h.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),this._slots=new WeakMap,this._idle_notified=!1;const{model:e,parent:s}=t;this.model=e,this.parent=s,this.root=null==s?this:s.root,this.removed.emit()}get ready(){return this._ready}connect(t,e){let s=this._slots.get(e);return null==s&&(s=(t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then((()=>i))},this._slots.set(e,s)),t.connect(s,this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=r.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get is_root(){return null==this.parent}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){h.Signal.disconnect_receiver(this)}on_change(t,e){for(const s of(0,l.isArray)(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[_.default]}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}}s.View=d,d.__name__=\"View\"},\n", + " function _(t,e,n,i,o){i();const s=t(8),l=t(13),r=t=>(e={},...n)=>{const i=document.createElement(t);i.classList.add(\"bk\"),(0,s.isPlainObject)(e)||(n=[e,...n],e={});for(let[t,n]of(0,l.entries)(e))if(null!=n&&(!(0,s.isBoolean)(n)||n))if(\"class\"===t&&((0,s.isString)(n)&&(n=n.split(/\\s+/)),(0,s.isArray)(n)))for(const t of n)null!=t&&i.classList.add(t);else if(\"style\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.style[t]=e;else if(\"data\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.dataset[t]=e;else i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i};function a(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function c(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function d(t,e){var n,i,o;const s=Element.prototype;return(null!==(o=null!==(i=null!==(n=s.matches)&&void 0!==n?n:s.webkitMatchesSelector)&&void 0!==i?i:s.mozMatchesSelector)&&void 0!==o?o:s.msMatchesSelector).call(t,e)}function h(t){return parseFloat(t)||0}function f(t){const e=getComputedStyle(t);return{border:{top:h(e.borderTopWidth),bottom:h(e.borderBottomWidth),left:h(e.borderLeftWidth),right:h(e.borderRightWidth)},margin:{top:h(e.marginTop),bottom:h(e.marginBottom),left:h(e.marginLeft),right:h(e.marginRight)},padding:{top:h(e.paddingTop),bottom:h(e.paddingBottom),left:h(e.paddingLeft),right:h(e.paddingRight)}}}function u(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return r(t)(e,...n)},n.div=r(\"div\"),n.span=r(\"span\"),n.canvas=r(\"canvas\"),n.link=r(\"link\"),n.style=r(\"style\"),n.a=r(\"a\"),n.p=r(\"p\"),n.i=r(\"i\"),n.pre=r(\"pre\"),n.button=r(\"button\"),n.label=r(\"label\"),n.input=r(\"input\"),n.select=r(\"select\"),n.option=r(\"option\"),n.optgroup=r(\"optgroup\"),n.textarea=r(\"textarea\"),n.createSVGElement=function(t,e,...n){const i=document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const[t,n]of(0,l.entries)(null!=e?e:{}))null==n||(0,s.isBoolean)(n)&&!n||i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i},n.nbsp=function(){return document.createTextNode(\"\\xa0\")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=a,n.removeElement=a,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=c,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=d,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(d(n,e))return n;return null},n.extents=f,n.size=u,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=f(t),{width:s,height:l}=u(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=f(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=`${e.x}px`,i.top=`${e.y}px`,i.width=`${e.width}px`,i.height=`${e.height}px`,null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class p{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e{document.addEventListener(\"DOMContentLoaded\",(()=>t()),{once:!0})}))}},\n", + " function _(o,i,t,e,r){e(),t.root=\"bk-root\",t.default=\".bk-root{position:relative;width:auto;height:auto;box-sizing:border-box;font-family:Helvetica, Arial, sans-serif;font-size:13px;}.bk-root .bk,.bk-root .bk:before,.bk-root .bk:after{box-sizing:inherit;margin:0;border:0;padding:0;background-image:none;font-family:inherit;font-size:100%;line-height:1.42857143;}.bk-root pre.bk{font-family:Courier, monospace;}\"},\n", + " function _(e,t,r,a,c){a();const n=e(1),l=e(46);c(\"Line\",l.Line),c(\"LineScalar\",l.LineScalar),c(\"LineVector\",l.LineVector);const i=e(49);c(\"Fill\",i.Fill),c(\"FillScalar\",i.FillScalar),c(\"FillVector\",i.FillVector);const s=e(50);c(\"Text\",s.Text),c(\"TextScalar\",s.TextScalar),c(\"TextVector\",s.TextVector);const o=e(51);c(\"Hatch\",o.Hatch),c(\"HatchScalar\",o.HatchScalar),c(\"HatchVector\",o.HatchVector);const u=(0,n.__importStar)(e(48)),V=e(47);c(\"VisualProperties\",V.VisualProperties),c(\"VisualUniforms\",V.VisualUniforms);class h{constructor(e){this._visuals=[];for(const[t,r]of e.model._mixins){const a=(()=>{switch(r){case u.Line:return new l.Line(e,t);case u.LineScalar:return new l.LineScalar(e,t);case u.LineVector:return new l.LineVector(e,t);case u.Fill:return new i.Fill(e,t);case u.FillScalar:return new i.FillScalar(e,t);case u.FillVector:return new i.FillVector(e,t);case u.Text:return new s.Text(e,t);case u.TextScalar:return new s.TextScalar(e,t);case u.TextVector:return new s.TextVector(e,t);case u.Hatch:return new o.Hatch(e,t);case u.HatchScalar:return new o.HatchScalar(e,t);case u.HatchVector:return new o.HatchVector(e,t);default:throw new Error(\"unknown visual\")}})();a instanceof V.VisualProperties&&a.update(),this._visuals.push(a),Object.defineProperty(this,t+a.type,{get:()=>a,configurable:!1,enumerable:!0})}}*[Symbol.iterator](){yield*this._visuals}}r.Visuals=h,h.__name__=\"Visuals\"},\n", + " function _(e,t,i,l,s){l();const a=e(1),n=e(47),h=(0,a.__importStar)(e(48)),o=e(22),_=e(8);function r(e){if((0,_.isArray)(e))return e;switch(e){case\"solid\":return[];case\"dashed\":return[6];case\"dotted\":return[2,4];case\"dotdash\":return[2,4,6,4];case\"dashdot\":return[6,4,2,4];default:return e.split(\" \").map(Number).filter(_.isInteger)}}i.resolve_line_dash=r;class u extends n.VisualProperties{get doit(){const e=this.line_color.get_value(),t=this.line_alpha.get_value(),i=this.line_width.get_value();return!(null==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.get_value(),alpha:this.line_alpha.get_value(),width:this.line_width.get_value(),join:this.line_join.get_value(),cap:this.line_cap.get_value(),dash:this.line_dash.get_value(),offset:this.line_dash_offset.get_value()}}set_value(e){const t=this.line_color.get_value(),i=this.line_alpha.get_value();e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.get_value(),e.lineJoin=this.line_join.get_value(),e.lineCap=this.line_cap.get_value(),e.lineDash=r(this.line_dash.get_value()),e.lineDashOffset=this.line_dash_offset.get_value()}}i.Line=u,u.__name__=\"Line\";class c extends n.VisualUniforms{get doit(){const e=this.line_color.value,t=this.line_alpha.value,i=this.line_width.value;return!(0==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.value,alpha:this.line_alpha.value,width:this.line_width.value,join:this.line_join.value,cap:this.line_cap.value,dash:this.line_dash.value,offset:this.line_dash_offset.value}}set_value(e){const t=this.line_color.value,i=this.line_alpha.value;e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.value,e.lineJoin=this.line_join.value,e.lineCap=this.line_cap.value,e.lineDash=r(this.line_dash.value),e.lineDashOffset=this.line_dash_offset.value}}i.LineScalar=c,c.__name__=\"LineScalar\";class d extends n.VisualUniforms{get doit(){const{line_color:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{line_alpha:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{line_width:i}=this;return!i.is_Scalar()||0!=i.value}apply(e,t){const{doit:i}=this;return i&&(this.set_vectorize(e,t),e.stroke()),i}values(e){return{color:this.line_color.get(e),alpha:this.line_alpha.get(e),width:this.line_width.get(e),join:this.line_join.get(e),cap:this.line_cap.get(e),dash:this.line_dash.get(e),offset:this.line_dash_offset.get(e)}}set_vectorize(e,t){const i=this.line_color.get(t),l=this.line_alpha.get(t),s=this.line_width.get(t),a=this.line_join.get(t),n=this.line_cap.get(t),h=this.line_dash.get(t),_=this.line_dash_offset.get(t);e.strokeStyle=(0,o.color2css)(i,l),e.lineWidth=s,e.lineJoin=a,e.lineCap=n,e.lineDash=r(h),e.lineDashOffset=_}}i.LineVector=d,d.__name__=\"LineVector\",u.prototype.type=\"line\",u.prototype.attrs=Object.keys(h.Line),c.prototype.type=\"line\",c.prototype.attrs=Object.keys(h.LineScalar),d.prototype.type=\"line\",d.prototype.attrs=Object.keys(h.LineVector)},\n", + " function _(t,s,o,i,r){i();class e{constructor(t,s=\"\"){this.obj=t,this.prefix=s;const o=this;this._props=[];for(const i of this.attrs){const r=t.model.properties[s+i];r.change.connect((()=>this.update())),o[i]=r,this._props.push(r)}}*[Symbol.iterator](){yield*this._props}update(){}}o.VisualProperties=e,e.__name__=\"VisualProperties\";class p{constructor(t,s=\"\"){this.obj=t,this.prefix=s;for(const o of this.attrs)Object.defineProperty(this,o,{get:()=>t[s+o]})}*[Symbol.iterator](){for(const t of this.attrs)yield this.obj.model.properties[this.prefix+t]}update(){}}o.VisualUniforms=p,p.__name__=\"VisualUniforms\"},\n", + " function _(e,l,t,a,c){a();const r=e(1),o=(0,r.__importStar)(e(18)),n=e(20),i=(0,r.__importStar)(e(21)),_=e(13);t.Line={line_color:[i.Nullable(i.Color),\"black\"],line_alpha:[i.Alpha,1],line_width:[i.Number,1],line_join:[n.LineJoin,\"bevel\"],line_cap:[n.LineCap,\"butt\"],line_dash:[i.Or(n.LineDash,i.Array(i.Number)),[]],line_dash_offset:[i.Number,0]},t.Fill={fill_color:[i.Nullable(i.Color),\"gray\"],fill_alpha:[i.Alpha,1]},t.Hatch={hatch_color:[i.Nullable(i.Color),\"black\"],hatch_alpha:[i.Alpha,1],hatch_scale:[i.Number,12],hatch_pattern:[i.Nullable(i.Or(n.HatchPatternType,i.String)),null],hatch_weight:[i.Number,1],hatch_extra:[i.Dict(i.AnyRef()),{}]},t.Text={text_color:[i.Nullable(i.Color),\"#444444\"],text_alpha:[i.Alpha,1],text_font:[o.Font,\"helvetica\"],text_font_size:[i.FontSize,\"16px\"],text_font_style:[n.FontStyle,\"normal\"],text_align:[n.TextAlign,\"left\"],text_baseline:[n.TextBaseline,\"bottom\"],text_line_height:[i.Number,1.2]},t.LineScalar={line_color:[o.ColorScalar,\"black\"],line_alpha:[o.NumberScalar,1],line_width:[o.NumberScalar,1],line_join:[o.LineJoinScalar,\"bevel\"],line_cap:[o.LineCapScalar,\"butt\"],line_dash:[o.LineDashScalar,[]],line_dash_offset:[o.NumberScalar,0]},t.FillScalar={fill_color:[o.ColorScalar,\"gray\"],fill_alpha:[o.NumberScalar,1]},t.HatchScalar={hatch_color:[o.ColorScalar,\"black\"],hatch_alpha:[o.NumberScalar,1],hatch_scale:[o.NumberScalar,12],hatch_pattern:[o.NullStringScalar,null],hatch_weight:[o.NumberScalar,1],hatch_extra:[o.AnyScalar,{}]},t.TextScalar={text_color:[o.ColorScalar,\"#444444\"],text_alpha:[o.NumberScalar,1],text_font:[o.FontScalar,\"helvetica\"],text_font_size:[o.FontSizeScalar,\"16px\"],text_font_style:[o.FontStyleScalar,\"normal\"],text_align:[o.TextAlignScalar,\"left\"],text_baseline:[o.TextBaselineScalar,\"bottom\"],text_line_height:[o.NumberScalar,1.2]},t.LineVector={line_color:[o.ColorSpec,\"black\"],line_alpha:[o.NumberSpec,1],line_width:[o.NumberSpec,1],line_join:[o.LineJoinSpec,\"bevel\"],line_cap:[o.LineCapSpec,\"butt\"],line_dash:[o.LineDashSpec,[]],line_dash_offset:[o.NumberSpec,0]},t.FillVector={fill_color:[o.ColorSpec,\"gray\"],fill_alpha:[o.NumberSpec,1]},t.HatchVector={hatch_color:[o.ColorSpec,\"black\"],hatch_alpha:[o.NumberSpec,1],hatch_scale:[o.NumberSpec,12],hatch_pattern:[o.NullStringSpec,null],hatch_weight:[o.NumberSpec,1],hatch_extra:[o.AnyScalar,{}]},t.TextVector={text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_font:[o.FontSpec,\"helvetica\"],text_font_size:[o.FontSizeSpec,\"16px\"],text_font_style:[o.FontStyleSpec,\"normal\"],text_align:[o.TextAlignSpec,\"left\"],text_baseline:[o.TextBaselineSpec,\"bottom\"],text_line_height:[o.NumberSpec,1.2]},t.attrs_of=function(e,l,t,a=!1){const c={};for(const r of(0,_.keys)(t)){const t=`${l}${r}`,o=e[t];c[a?t:r]=o}return c}},\n", + " function _(l,t,e,i,s){i();const a=l(1),o=l(47),r=(0,a.__importStar)(l(48)),_=l(22);class c extends o.VisualProperties{get doit(){const l=this.fill_color.get_value(),t=this.fill_alpha.get_value();return!(null==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.get_value(),alpha:this.fill_alpha.get_value()}}set_value(l){const t=this.fill_color.get_value(),e=this.fill_alpha.get_value();l.fillStyle=(0,_.color2css)(t,e)}}e.Fill=c,c.__name__=\"Fill\";class h extends o.VisualUniforms{get doit(){const l=this.fill_color.value,t=this.fill_alpha.value;return!(0==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.value,alpha:this.fill_alpha.value}}set_value(l){const t=this.fill_color.value,e=this.fill_alpha.value;l.fillStyle=(0,_.color2css)(t,e)}}e.FillScalar=h,h.__name__=\"FillScalar\";class u extends o.VisualUniforms{get doit(){const{fill_color:l}=this;if(l.is_Scalar()&&0==l.value)return!1;const{fill_alpha:t}=this;return!t.is_Scalar()||0!=t.value}apply(l,t,e){const{doit:i}=this;return i&&(this.set_vectorize(l,t),l.fill(e)),i}values(l){return{color:this.fill_color.get(l),alpha:this.fill_alpha.get(l)}}set_vectorize(l,t){const e=this.fill_color.get(t),i=this.fill_alpha.get(t);l.fillStyle=(0,_.color2css)(e,i)}}e.FillVector=u,u.__name__=\"FillVector\",c.prototype.type=\"fill\",c.prototype.attrs=Object.keys(r.Fill),h.prototype.type=\"fill\",h.prototype.attrs=Object.keys(r.FillScalar),u.prototype.type=\"fill\",u.prototype.attrs=Object.keys(r.FillVector)},\n", + " function _(t,e,l,s,_){s();const i=t(1),a=t(47),o=(0,i.__importStar)(t(48)),n=t(22);class h extends a.VisualProperties{get doit(){const t=this.text_color.get_value(),e=this.text_alpha.get_value();return!(null==t||0==e)}values(){return{color:this.text_color.get_value(),alpha:this.text_alpha.get_value(),font:this.text_font.get_value(),font_size:this.text_font_size.get_value(),font_style:this.text_font_style.get_value(),align:this.text_align.get_value(),baseline:this.text_baseline.get_value(),line_height:this.text_line_height.get_value()}}set_value(t){const e=this.text_color.get_value(),l=this.text_alpha.get_value();t.fillStyle=(0,n.color2css)(e,l),t.font=this.font_value(),t.textAlign=this.text_align.get_value(),t.textBaseline=this.text_baseline.get_value()}font_value(){return`${this.text_font_style.get_value()} ${this.text_font_size.get_value()} ${this.text_font.get_value()}`}}l.Text=h,h.__name__=\"Text\";class x extends a.VisualUniforms{get doit(){const t=this.text_color.value,e=this.text_alpha.value;return!(0==t||0==e)}values(){return{color:this.text_color.value,alpha:this.text_alpha.value,font:this.text_font.value,font_size:this.text_font_size.value,font_style:this.text_font_style.value,align:this.text_align.value,baseline:this.text_baseline.value,line_height:this.text_line_height.value}}set_value(t){const e=this.text_color.value,l=this.text_alpha.value,s=this.font_value(),_=this.text_align.value,i=this.text_baseline.value;t.fillStyle=(0,n.color2css)(e,l),t.font=s,t.textAlign=_,t.textBaseline=i}font_value(){return`${this.text_font_style.value} ${this.text_font_size.value} ${this.text_font.value}`}}l.TextScalar=x,x.__name__=\"TextScalar\";class u extends a.VisualUniforms{values(t){return{color:this.text_color.get(t),alpha:this.text_alpha.get(t),font:this.text_font.get(t),font_size:this.text_font_size.get(t),font_style:this.text_font_style.get(t),align:this.text_align.get(t),baseline:this.text_baseline.get(t),line_height:this.text_line_height.get(t)}}get doit(){const{text_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{text_alpha:e}=this;return!e.is_Scalar()||0!=e.value}set_vectorize(t,e){const l=this.text_color.get(e),s=this.text_alpha.get(e),_=this.font_value(e),i=this.text_align.get(e),a=this.text_baseline.get(e);t.fillStyle=(0,n.color2css)(l,s),t.font=_,t.textAlign=i,t.textBaseline=a}font_value(t){return`${this.text_font_style.get(t)} ${this.text_font_size.get(t)} ${this.text_font.get(t)}`}}l.TextVector=u,u.__name__=\"TextVector\",h.prototype.type=\"text\",h.prototype.attrs=Object.keys(o.Text),x.prototype.type=\"text\",x.prototype.attrs=Object.keys(o.TextScalar),u.prototype.type=\"text\",u.prototype.attrs=Object.keys(o.TextVector)},\n", + " function _(t,e,a,r,i){r();const h=t(1),s=t(47),n=t(52),c=(0,h.__importStar)(t(18)),_=(0,h.__importStar)(t(48));class l extends s.VisualProperties{constructor(){super(...arguments),this._update_iteration=0}update(){if(this._update_iteration++,this._hatch_image=null,!this.doit)return;const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_scale.get_value(),r=this.hatch_pattern.get_value(),i=this.hatch_weight.get_value(),h=t=>{this._hatch_image=t},s=this.hatch_extra.get_value()[r];if(null!=s){const r=s.get_pattern(t,e,a,i);if(r instanceof Promise){const{_update_iteration:t}=this;r.then((e=>{this._update_iteration==t&&(h(e),this.obj.request_render())}))}else h(r)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,r,t,e,a,i);h(c)}}get doit(){const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_pattern.get_value();return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){const e=this.pattern(t);t.fillStyle=null!=e?e:\"transparent\"}pattern(t){const e=this._hatch_image;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.get_value(),e=this.hatch_extra.get_value()[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.Hatch=l,l.__name__=\"Hatch\";class o extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const t=this.hatch_color.value,e=this.hatch_alpha.value,a=this.hatch_pattern.value;return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=this.hatch_color.value,a=this.hatch_alpha.value,r=this.hatch_scale.value,i=this.hatch_pattern.value,h=this.hatch_weight.value,s=e=>{this._hatch_image=new c.UniformScalar(e,t)},_=this.hatch_extra.value[i];if(null!=_){const t=_.get_pattern(e,a,r,h);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(s(t),this.obj.request_render())}))}else s(t)}else{const t=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(t,i,e,a,r,h);s(c)}}get doit(){return this._static_doit}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){var e;t.fillStyle=null!==(e=this.pattern(t))&&void 0!==e?e:\"transparent\"}pattern(t){const e=this._hatch_image.value;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.value,e=this.hatch_extra.value[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchScalar=o,o.__name__=\"HatchScalar\";class u extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const{hatch_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{hatch_alpha:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{hatch_pattern:a}=this;if(a.is_Scalar()){const t=a.value;if(\" \"==t||\"blank\"==t||null==t)return!1}return!0}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=(t,e,a,r,i,h)=>{const s=this.hatch_extra.value[t];if(null!=s){const t=s.get_pattern(e,a,r,i);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(h(t),this.obj.request_render())}))}else h(t)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,t,e,a,r,i);h(c)}};if(this.hatch_color.is_Scalar()&&this.hatch_alpha.is_Scalar()&&this.hatch_scale.is_Scalar()&&this.hatch_pattern.is_Scalar()&&this.hatch_weight.is_Scalar()){const a=this.hatch_color.value,r=this.hatch_alpha.value,i=this.hatch_scale.value;e(this.hatch_pattern.value,a,r,i,this.hatch_weight.value,(e=>{this._hatch_image=new c.UniformScalar(e,t)}))}else{const a=new Array(t);a.fill(null),this._hatch_image=new c.UniformVector(a);for(let r=0;r{a[r]=t}))}}}get doit(){return this._static_doit}apply(t,e,a){const{doit:r}=this;return r&&(this.set_vectorize(t,e),t.layer.undo_transform((()=>t.fill(a)))),r}set_vectorize(t,e){var a;t.fillStyle=null!==(a=this.pattern(t,e))&&void 0!==a?a:\"transparent\"}pattern(t,e){const a=this._hatch_image.get(e);return null==a?null:t.createPattern(a,this.repetition(e))}repetition(t){const e=this.hatch_pattern.get(t),a=this.hatch_extra.value[e];if(null==a)return\"repeat\";switch(a.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchVector=u,u.__name__=\"HatchVector\",l.prototype.type=\"hatch\",l.prototype.attrs=Object.keys(_.Hatch),o.prototype.type=\"hatch\",o.prototype.attrs=Object.keys(_.HatchScalar),u.prototype.type=\"hatch\",u.prototype.attrs=Object.keys(_.HatchVector)},\n", + " function _(e,o,a,s,r){s();const i=e(22);function l(e,o,a){e.moveTo(0,a+.5),e.lineTo(o,a+.5),e.stroke()}function n(e,o,a){e.moveTo(a+.5,0),e.lineTo(a+.5,o),e.stroke()}function t(e,o){e.moveTo(0,o),e.lineTo(o,0),e.stroke(),e.moveTo(0,0),e.lineTo(o,o),e.stroke()}a.hatch_aliases={\" \":\"blank\",\".\":\"dot\",o:\"ring\",\"-\":\"horizontal_line\",\"|\":\"vertical_line\",\"+\":\"cross\",'\"':\"horizontal_dash\",\":\":\"vertical_dash\",\"@\":\"spiral\",\"/\":\"right_diagonal_line\",\"\\\\\":\"left_diagonal_line\",x:\"diagonal_cross\",\",\":\"right_diagonal_dash\",\"`\":\"left_diagonal_dash\",v:\"horizontal_wave\",\">\":\"vertical_wave\",\"*\":\"criss_cross\"},a.get_pattern=function(e,o,s,r,c,k){return e.resize(c,c),e.prepare(),function(e,o,s,r,c,k){var _;const T=c,v=T/2,h=v/2,d=(0,i.color2css)(s,r);switch(e.strokeStyle=d,e.fillStyle=d,e.lineCap=\"square\",e.lineWidth=k,null!==(_=a.hatch_aliases[o])&&void 0!==_?_:o){case\"blank\":break;case\"dot\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":l(e,T,v);break;case\"vertical_line\":n(e,T,v);break;case\"cross\":l(e,T,v),n(e,T,v);break;case\"horizontal_dash\":l(e,v,v);break;case\"vertical_dash\":n(e,v,v);break;case\"spiral\":{const o=T/30;e.moveTo(v,v);for(let a=0;a<360;a++){const s=.1*a,r=v+o*s*Math.cos(s),i=v+o*s*Math.sin(s);e.lineTo(r,i)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-h,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(5*h+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(h+.5,T),e.lineTo(.5-h,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(5*h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":t(e,T);break;case\"right_diagonal_dash\":e.moveTo(h+.5,3*h+.5),e.lineTo(3*h+.5,h+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(h+.5,h+.5),e.lineTo(3*h+.5,3*h+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,h),e.lineTo(v,3*h),e.lineTo(T,h),e.stroke();break;case\"vertical_wave\":e.moveTo(h,0),e.lineTo(3*h,v),e.lineTo(h,T),e.stroke();break;case\"criss_cross\":t(e,T),l(e,T,v),n(e,T,v)}}(e.ctx,o,s,r,c,k),e.canvas}},\n", + " function _(e,t,s,n,c){var a;n();const i=e(14),r=e(8),l=e(13),o=e(26),_=e(19);class h extends i.HasProps{constructor(e){super(e)}get is_syncable(){return this.syncable}[o.equals](e,t){return t.eq(this.id,e.id)&&super[o.equals](e,t)}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,(()=>this._update_property_callbacks())),this.connect(this.properties.js_event_callbacks.change,(()=>this._update_event_callbacks())),this.connect(this.properties.subscribed_events.change,(()=>this._update_event_callbacks()))}_process_event(e){var t;for(const s of null!==(t=this.js_event_callbacks[e.event_name])&&void 0!==t?t:[])s.execute(e);null!=this.document&&this.subscribed_events.some((t=>t==e.event_name))&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):_.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of(0,l.entries)(this.js_property_callbacks)){const n=s.map((e=>()=>e.execute(this)));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){(0,l.isEmpty)(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if((0,r.isString)(e))return[...this.references()].filter((t=>t instanceof h&&t.name===e));if(e.prototype instanceof i.HasProps)return[...this.references()].filter((t=>t instanceof e));throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=h,a=h,h.__name__=\"Model\",a.define((({Any:e,Unknown:t,Boolean:s,String:n,Array:c,Dict:a,Nullable:i})=>({tags:[c(t),[]],name:[i(n),null],js_property_callbacks:[a(c(e)),{}],js_event_callbacks:[a(c(e)),{}],subscribed_events:[c(n),[]],syncable:[s,!0]})))},\n", + " function _(e,t,s,a,r){var c,n;a();const _=e(12),o=e(53),i=e(55),l=e(59),u=e(61),g=e(62),h=e(57),p=e(63),m=e(67);class x{constructor(e,t){this.x_scale=e,this.y_scale=t,this.x_source=this.x_scale.source_range,this.y_source=this.y_scale.source_range,this.ranges=[this.x_source,this.y_source],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,t){return[this.x_scale.v_compute(e),this.y_scale.v_compute(t)]}map_from_screen(e,t){return[this.x_scale.v_invert(e),this.y_scale.v_invert(t)]}}s.CoordinateTransform=x,x.__name__=\"CoordinateTransform\";class y extends o.Model{constructor(e){super(e)}get x_ranges(){return new Map([[\"default\",this.x_source]])}get y_ranges(){return new Map([[\"default\",this.y_source]])}_get_scale(e,t,s){if(e instanceof m.FactorRange!=t instanceof g.CategoricalScale)throw new Error(`Range ${e.type} is incompatible is Scale ${t.type}`);t instanceof u.LogScale&&e instanceof p.DataRange1d&&(e.scale_hint=\"log\");const a=t.clone();return a.setv({source_range:e,target_range:s}),a}get_transform(e){const{x_source:t,x_scale:s,x_target:a}=this,r=this._get_scale(t,s,a),{y_source:c,y_scale:n,y_target:_}=this,o=this._get_scale(c,n,_),i=new v({source_scale:r,source_range:r.source_range,target_scale:e.x_scale,target_range:e.x_target}),l=new v({source_scale:o,source_range:o.source_range,target_scale:e.y_scale,target_range:e.y_target});return new x(i,l)}}s.CoordinateMapping=y,c=y,y.__name__=\"CoordinateMapping\",c.define((({Ref:e})=>({x_source:[e(h.Range),()=>new p.DataRange1d],y_source:[e(h.Range),()=>new p.DataRange1d],x_scale:[e(i.Scale),()=>new l.LinearScale],y_scale:[e(i.Scale),()=>new l.LinearScale],x_target:[e(h.Range)],y_target:[e(h.Range)]})));class v extends i.Scale{constructor(e){super(e)}get s_compute(){const e=this.source_scale.s_compute,t=this.target_scale.s_compute;return s=>t(e(s))}get s_invert(){const e=this.source_scale.s_invert,t=this.target_scale.s_invert;return s=>e(t(s))}compute(e){return this.s_compute(e)}v_compute(e){const{s_compute:t}=this;return(0,_.map)(e,t)}invert(e){return this.s_invert(e)}v_invert(e){const{s_invert:t}=this;return(0,_.map)(e,t)}}s.CompositeScale=v,n=v,v.__name__=\"CompositeScale\",n.internal((({Ref:e})=>({source_scale:[e(i.Scale)],target_scale:[e(i.Scale)]})))},\n", + " function _(e,t,r,n,s){var _;n();const a=e(56),c=e(57),o=e(58),i=e(24);class u extends a.Transform{constructor(e){super(e)}compute(e){return this.s_compute(e)}v_compute(e){const t=new i.ScreenArray(e.length),{s_compute:r}=this;for(let n=0;n({source_range:[e(c.Range)],target_range:[e(o.Range1d)]})))},\n", + " function _(n,s,o,r,c){r();const e=n(53);class t extends e.Model{constructor(n){super(n)}}o.Transform=t,t.__name__=\"Transform\"},\n", + " function _(e,t,n,i,s){var r;i();const a=e(53);class l extends a.Model{constructor(e){super(e),this.have_updated_interactively=!1}get is_reversed(){return this.start>this.end}get is_valid(){return isFinite(this.min)&&isFinite(this.max)}get span(){return Math.abs(this.end-this.start)}}n.Range=l,r=l,l.__name__=\"Range\",r.define((({Number:e,Tuple:t,Or:n,Auto:i,Nullable:s})=>({bounds:[s(n(t(s(e),s(e)),i)),null],min_interval:[s(e),null],max_interval:[s(e),null]}))),r.internal((({Array:e,AnyRef:t})=>({plots:[e(t()),[]]})))},\n", + " function _(t,e,s,n,r){var a;n();const i=t(57);class _ extends i.Range{constructor(t){super(t)}_set_auto_bounds(){if(\"auto\"==this.bounds){const t=Math.min(this._reset_start,this._reset_end),e=Math.max(this._reset_start,this._reset_end);this.setv({bounds:[t,e]},{silent:!0})}}initialize(){super.initialize(),this._set_auto_bounds()}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}reset(){this._set_auto_bounds();const{_reset_start:t,_reset_end:e}=this;this.start!=t||this.end!=e?this.setv({start:t,end:e}):this.change.emit()}map(t){return new _({start:t(this.start),end:t(this.end)})}widen(t){let{start:e,end:s}=this;return this.is_reversed?(e+=t,s-=t):(e-=t,s+=t),new _({start:e,end:s})}}s.Range1d=_,a=_,_.__name__=\"Range1d\",a.define((({Number:t,Nullable:e})=>({start:[t,0],end:[t,1],reset_start:[e(t),null,{on_update(t,e){e._reset_start=null!=t?t:e.start}}],reset_end:[e(t),null,{on_update(t,e){e._reset_end=null!=t?t:e.end}}]})))},\n", + " function _(t,e,n,r,s){r();const a=t(60);class _ extends a.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e]=this._linear_compute_state();return n=>t*n+e}get s_invert(){const[t,e]=this._linear_compute_state();return n=>(n-e)/t}_linear_compute_state(){const t=this.source_range.start,e=this.source_range.end,n=this.target_range.start,r=(this.target_range.end-n)/(e-t);return[r,-r*t+n]}}n.LinearScale=_,_.__name__=\"LinearScale\"},\n", + " function _(n,c,o,s,e){s();const t=n(55);class u extends t.Scale{constructor(n){super(n)}}o.ContinuousScale=u,u.__name__=\"ContinuousScale\"},\n", + " function _(t,e,a,o,s){o();const r=t(60);class n extends r.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e,a,o]=this._compute_state();return s=>{if(0==a)return 0;{const r=(Math.log(s)-o)/a;return isFinite(r)?r*t+e:NaN}}}get s_invert(){const[t,e,a,o]=this._compute_state();return s=>{const r=(s-e)/t;return Math.exp(a*r+o)}}_get_safe_factor(t,e){let a=t<0?0:t,o=e<0?0:e;if(a==o)if(0==a)[a,o]=[1,10];else{const t=Math.log(a)/Math.log(10);a=10**Math.floor(t),o=Math.ceil(t)!=Math.floor(t)?10**Math.ceil(t):10**(Math.ceil(t)+1)}return[a,o]}_compute_state(){const t=this.source_range.start,e=this.source_range.end,a=this.target_range.start,o=this.target_range.end-a,[s,r]=this._get_safe_factor(t,e);let n,c;0==s?(n=Math.log(r),c=0):(n=Math.log(r)-Math.log(s),c=Math.log(s));return[o,a,n,c]}}a.LogScale=n,n.__name__=\"LogScale\"},\n", + " function _(t,e,c,a,s){a();const n=t(55),r=t(59),{_linear_compute_state:o}=r.LinearScale.prototype;class l extends n.Scale{constructor(t){super(t)}get s_compute(){const[t,e]=o.call(this),c=this.source_range;return a=>t*c.synthetic(a)+e}get s_invert(){const[t,e]=o.call(this);return c=>(c-e)/t}}c.CategoricalScale=l,l.__name__=\"CategoricalScale\"},\n", + " function _(t,i,n,e,a){e();const s=t(1);var l;const _=t(64),o=t(20),r=t(9),h=t(19),d=(0,s.__importStar)(t(65)),u=t(66);class g extends _.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const{renderers:t,names:i}=this,n=(0,r.concat)(this.plots.map((t=>t.data_renderers)));return(0,u.compute_renderers)(0==t.length?\"auto\":t,n,i)}_compute_plot_bounds(t,i){let n=d.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=d.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=d.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return el&&(\"start\"==this.follow?a=e+s*l:\"end\"==this.follow&&(e=a-s*l)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.entries(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);let h=!1;\"auto\"==this.bounds&&(this.setv({bounds:[o,r]},{silent:!0}),h=!0);const[d,u]=[this.start,this.end];if(o!=d||r!=u){const t={};o!=d&&(t.start=o),r!=u&&(t.end=r),this.setv(t),h=!1}h&&this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=g,l=g,g.__name__=\"DataRange1d\",l.define((({Boolean:t,Number:i,Nullable:n})=>({start:[i],end:[i],range_padding:[i,.1],range_padding_units:[o.PaddingUnits,\"percent\"],flipped:[t,!1],follow:[n(o.StartEnd),null],follow_interval:[n(i),null],default_span:[i,2],only_visible:[t,!1]}))),l.internal((({Enum:t})=>({scale_hint:[t(\"log\",\"auto\"),\"auto\"]})))},\n", + " function _(e,n,a,r,s){var t;r();const c=e(57);class _ extends c.Range{constructor(e){super(e)}}a.DataRange=_,t=_,_.__name__=\"DataRange\",t.define((({String:e,Array:n,AnyRef:a})=>({names:[n(e),[]],renderers:[n(a()),[]]})))},\n", + " function _(t,i,e,h,r){h();const s=t(24),n=t(26),{min:x,max:y}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:x(t.x0,i.x0),x1:y(t.x1,i.x1),y0:x(t.y0,i.y0),y1:y(t.y1,i.y1)}};class o{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}static from_rect({left:t,right:i,top:e,bottom:h}){return new o({x0:Math.min(t,i),y0:Math.min(e,h),x1:Math.max(t,i),y1:Math.max(e,h)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}[n.equals](t,i){return i.eq(this.x0,t.x0)&&i.eq(this.y0,t.y0)&&i.eq(this.x1,t.x1)&&i.eq(this.y1,t.y1)}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get size(){return{width:this.width,height:this.height}}get rect(){const{x0:t,y0:i,x1:e,y1:h}=this;return{p0:{x:t,y:i},p1:{x:e,y:i},p2:{x:e,y:h},p3:{x:t,y:h}}}get box(){const{x:t,y:i,width:e,height:h}=this;return{x:t,y:i,width:e,height:h}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}get area(){return this.width*this.height}relative(){const{width:t,height:i}=this;return new o({x:0,y:0,width:t,height:i})}translate(t,i){const{x:e,y:h,width:r,height:s}=this;return new o({x:t+e,y:i+h,width:r,height:s})}relativize(t,i){return[t-this.x,i-this.y]}contains(t,i){return this.x0<=t&&t<=this.x1&&this.y0<=i&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}grow_by(t){return new o({left:this.left-t,right:this.right+t,top:this.top-t,bottom:this.bottom+t})}shrink_by(t){return new o({left:this.left+t,right:this.right-t,top:this.top+t,bottom:this.bottom-t})}union(t){return new o({x0:x(this.x0,t.x0),y0:x(this.y0,t.y0),x1:y(this.x1,t.x1),y1:y(this.y1,t.y1)})}intersection(t){return this.intersects(t)?new o({x0:y(this.x0,t.x0),y0:y(this.y0,t.y0),x1:x(this.x1,t.x1),y1:x(this.y1,t.y1)}):null}intersects(t){return!(t.x1this.x1||t.y1this.y1)}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.bottom;for(let h=0;h0&&(r=r.filter((n=>(0,l.includes)(t,n.name)))),r}},\n", + " function _(t,n,e,i,s){var r;i();const a=t(57),o=t(20),g=t(21),p=t(24),c=t(9),l=t(8),u=t(11);function h(t,n,e=0){const i=new Map;for(let s=0;sa.get(t).value)));r.set(t,{value:l/s,mapping:a}),o+=s+n+p}return[r,(a.size-1)*n+g]}function _(t,n,e,i,s=0){var r;const a=new Map,o=new Map;for(const[n,e,i]of t){const t=null!==(r=o.get(n))&&void 0!==r?r:[];o.set(n,[...t,[e,i]])}let g=s,p=0;for(const[t,s]of o){const r=s.length,[o,l]=d(s,e,i,g);p+=l;const u=(0,c.sum)(s.map((([t])=>o.get(t).value)));a.set(t,{value:u/r,mapping:o}),g+=r+n+l}return[a,(o.size-1)*n+p]}e.Factor=(0,g.Or)(g.String,(0,g.Tuple)(g.String,g.String),(0,g.Tuple)(g.String,g.String,g.String)),e.FactorSeq=(0,g.Or)((0,g.Array)(g.String),(0,g.Array)((0,g.Tuple)(g.String,g.String)),(0,g.Array)((0,g.Tuple)(g.String,g.String,g.String))),e.map_one_level=h,e.map_two_levels=d,e.map_three_levels=_;class f extends a.Range{constructor(t){super(t)}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,(()=>this.reset())),this.connect(this.properties.factor_padding.change,(()=>this.reset())),this.connect(this.properties.group_padding.change,(()=>this.reset())),this.connect(this.properties.subgroup_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding_units.change,(()=>this.reset()))}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[n]=t,e=this._mapping.get(n);return null!=e?e.value:NaN}case 2:{const[n,e]=t,i=this._mapping.get(n);if(null!=i){const t=i.mapping.get(e);if(null!=t)return t.value}return NaN}case 3:{const[n,e,i]=t,s=this._mapping.get(n);if(null!=s){const t=s.mapping.get(e);if(null!=t){const n=t.mapping.get(i);if(null!=n)return n.value}}return NaN}default:(0,u.unreachable)()}}synthetic(t){if((0,l.isNumber)(t))return t;if((0,l.isString)(t))return this._lookup([t]);let n=0;const e=t[t.length-1];return(0,l.isNumber)(e)&&(n=e,t=t.slice(0,-1)),this._lookup(t)+n}v_synthetic(t){const n=t.length,e=new p.ScreenArray(n);for(let i=0;i{if((0,c.every)(this.factors,l.isString)){const t=this.factors,[n,e]=h(t,this.factor_padding);return{levels:1,mapping:n,tops:null,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&2==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])))){const t=this.factors,[n,e]=d(t,this.group_padding,this.factor_padding),i=[...n.keys()];return{levels:2,mapping:n,tops:i,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&3==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])&&(0,l.isString)(t[2])))){const t=this.factors,[n,e]=_(t,this.group_padding,this.subgroup_padding,this.factor_padding),i=[...n.keys()],s=[];for(const[t,e]of n)for(const n of e.mapping.keys())s.push([t,n]);return{levels:3,mapping:n,tops:i,mids:s,inside_padding:e}}(0,u.unreachable)()})();this._mapping=e,this.tops=i,this.mids=s;let a=0,o=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(o-a)*this.range_padding/2;a-=t,o+=t}else a-=this.range_padding,o+=this.range_padding;this.setv({start:a,end:o,levels:n},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,o]},{silent:!0})}}e.FactorRange=f,r=f,f.__name__=\"FactorRange\",r.define((({Number:t})=>({factors:[e.FactorSeq,[]],factor_padding:[t,0],subgroup_padding:[t,.8],group_padding:[t,1.4],range_padding:[t,0],range_padding_units:[o.PaddingUnits,\"percent\"],start:[t],end:[t]}))),r.internal((({Number:t,String:n,Array:e,Tuple:i,Nullable:s})=>({levels:[t],mids:[s(e(i(n,n))),null],tops:[s(e(n)),null]})))},\n", + " function _(t,e,s,a,i){a();const n=t(1);var _;const r=t(69),o=t(112),l=t(48),d=t(20),h=t(24),c=t(113),u=(0,n.__importStar)(t(18)),v=t(10);class p extends r.DataAnnotationView{async lazy_initialize(){await super.lazy_initialize();const{start:t,end:e}=this.model;null!=t&&(this.start=await(0,c.build_view)(t,{parent:this})),null!=e&&(this.end=await(0,c.build_view)(e,{parent:this}))}set_data(t){var e,s;super.set_data(t),null===(e=this.start)||void 0===e||e.set_data(t),null===(s=this.end)||void 0===s||s.set_data(t)}remove(){var t,e;null===(t=this.start)||void 0===t||t.remove(),null===(e=this.end)||void 0===e||e.remove(),super.remove()}map_data(){const{frame:t}=this.plot_view;\"data\"==this.model.start_units?(this._sx_start=this.coordinates.x_scale.v_compute(this._x_start),this._sy_start=this.coordinates.y_scale.v_compute(this._y_start)):(this._sx_start=t.bbox.xview.v_compute(this._x_start),this._sy_start=t.bbox.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(this._sx_end=this.coordinates.x_scale.v_compute(this._x_end),this._sy_end=this.coordinates.y_scale.v_compute(this._y_end)):(this._sx_end=t.bbox.xview.v_compute(this._x_end),this._sy_end=t.bbox.yview.v_compute(this._y_end));const{_sx_start:e,_sy_start:s,_sx_end:a,_sy_end:i}=this,n=e.length,_=this._angles=new h.ScreenArray(n);for(let t=0;t({x_start:[u.XCoordinateSpec,{field:\"x_start\"}],y_start:[u.YCoordinateSpec,{field:\"y_start\"}],start_units:[d.SpatialUnits,\"data\"],start:[e(t(o.ArrowHead)),null],x_end:[u.XCoordinateSpec,{field:\"x_end\"}],y_end:[u.YCoordinateSpec,{field:\"y_end\"}],end_units:[d.SpatialUnits,\"data\"],end:[e(t(o.ArrowHead)),()=>new o.OpenHead]})))},\n", + " function _(t,e,n,s,a){s();const o=t(1);var i;const c=t(40),r=t(70),_=t(75),l=t(78),h=(0,o.__importStar)(t(18));class d extends c.AnnotationView{constructor(){super(...arguments),this._initial_set_data=!1}connect_signals(){super.connect_signals();const t=()=>{this.set_data(this.model.source),this._rerender()};this.connect(this.model.change,t),this.connect(this.model.source.streaming,t),this.connect(this.model.source.patching,t),this.connect(this.model.source.change,t)}_rerender(){this.request_render()}set_data(t){const e=this;for(const n of this.model)if(n instanceof h.VectorSpec||n instanceof h.ScalarSpec)if(n instanceof h.BaseCoordinateSpec){const s=n.array(t);e[`_${n.attr}`]=s}else{const s=n.uniform(t);e[`${n.attr}`]=s}this.plot_model.use_map&&(null!=e._x&&l.inplace.project_xy(e._x,e._y),null!=e._xs&&l.inplace.project_xsys(e._xs,e._ys));for(const t of this.visuals)t.update()}_render(){this._initial_set_data||(this.set_data(this.model.source),this._initial_set_data=!0),this.map_data(),this.paint(this.layer.ctx)}}n.DataAnnotationView=d,d.__name__=\"DataAnnotationView\";class u extends c.Annotation{constructor(t){super(t)}}n.DataAnnotation=u,i=u,u.__name__=\"DataAnnotation\",i.define((({Ref:t})=>({source:[t(r.ColumnarDataSource),()=>new _.ColumnDataSource]})))},\n", + " function _(t,e,n,s,a){var i;s();const r=t(71),l=t(15),c=t(19),o=t(73),h=t(8),u=t(9),g=t(13),d=t(72),_=t(74),m=t(29);class w extends r.DataSource{constructor(t){super(t),this.selection_manager=new o.SelectionManager(this)}get_array(t){let e=this.data[t];return null==e?this.data[t]=e=[]:(0,h.isArray)(e)||(this.data[t]=e=Array.from(e)),e}initialize(){super.initialize(),this._select=new l.Signal0(this,\"select\"),this.inspect=new l.Signal(this,\"inspect\"),this.streaming=new l.Signal0(this,\"streaming\"),this.patching=new l.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return(0,g.keys)(this.data)}get_length(t=!0){const e=(0,u.uniq)((0,g.values)(this.data).map((t=>(0,m.is_NDArray)(t)?t.shape[0]:t.length)));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return c.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=w,i=w,w.__name__=\"ColumnarDataSource\",i.define((({Ref:t})=>({selection_policy:[t(_.SelectionPolicy),()=>new _.UnionRenderers]}))),i.internal((({AnyRef:t})=>({inspected:[t(),()=>new d.Selection]})))},\n", + " function _(e,c,n,t,o){var a;t();const s=e(53),r=e(72);class l extends s.Model{constructor(e){super(e)}}n.DataSource=l,a=l,l.__name__=\"DataSource\",a.define((({Ref:e})=>({selected:[e(r.Selection),()=>new r.Selection]})))},\n", + " function _(i,e,s,t,n){var l;t();const c=i(53),d=i(9),h=i(13);class _ extends c.Model{constructor(i){super(i)}get_view(){return this.view}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices,this.view=i.view,this.selected_glyphs=i.selected_glyphs;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.image_indices=[],this.view=null,this.selected_glyphs=[]}map(i){return new _(Object.assign(Object.assign({},this.attributes),{indices:this.indices.map(i),multiline_indices:(0,h.to_object)((0,h.entries)(this.multiline_indices).map((([e,s])=>[i(Number(e)),s]))),image_indices:this.image_indices.map((e=>Object.assign(Object.assign({},e),{index:i(e.index)})))}))}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=(0,d.union)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=(0,d.intersection)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=(0,d.difference)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}}s.Selection=_,l=_,_.__name__=\"Selection\",l.define((({Int:i,Array:e,Dict:s})=>({indices:[e(i),[]],line_indices:[e(i),[]],multiline_indices:[s(e(i)),{}]}))),l.internal((({Int:i,Array:e,AnyRef:s,Struct:t,Nullable:n})=>({selected_glyphs:[e(s()),[]],view:[n(s()),null],image_indices:[e(t({index:i,dim1:i,dim2:i,flat_index:i})),[]]})))},\n", + " function _(e,t,o,s,c){s();const n=e(72);function i(e){return\"GlyphRenderer\"==e.model.type}function l(e){return\"GraphRenderer\"==e.model.type}class r{constructor(e){this.source=e,this.inspectors=new Map}select(e,t,o,s=\"replace\"){const c=[],n=[];for(const t of e)i(t)?c.push(t):l(t)&&n.push(t);let r=!1;for(const e of n){const c=e.model.selection_policy.hit_test(t,e);r=r||e.model.selection_policy.do_selection(c,e.model,o,s)}if(c.length>0){const e=this.source.selection_policy.hit_test(t,c);r=r||this.source.selection_policy.do_selection(e,this.source,o,s)}return r}inspect(e,t){let o=!1;if(i(e)){const s=e.hit_test(t);if(null!=s){o=!s.is_empty();const c=this.get_or_create_inspector(e.model);c.update(s,!0,\"replace\"),this.source.setv({inspected:c},{silent:!0}),this.source.inspect.emit([e.model,{geometry:t}])}}else if(l(e)){const s=e.model.inspection_policy.hit_test(t,e);o=o||e.model.inspection_policy.do_inspection(s,t,e,!1,\"replace\")}return o}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new n.Selection,this.inspectors.set(e,t)),t}}o.SelectionManager=r,r.__name__=\"SelectionManager\"},\n", + " function _(e,t,n,s,o){s();const r=e(53);class c extends r.Model{do_selection(e,t,n,s){return null!=e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=c,c.__name__=\"SelectionPolicy\";class l extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=l,l.__name__=\"IntersectRenderers\";class _ extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=_,_.__name__=\"UnionRenderers\"},\n", + " function _(t,n,e,s,o){s();const r=t(1);var l;const c=t(70),i=t(8),a=t(13),u=(0,r.__importStar)(t(76)),h=t(77),d=t(35);function f(t,n,e){if((0,i.isArray)(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if((0,i.isTypedArray)(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let l;t.length({data:[t(n),{}]})))},\n", + " function _(t,n,o,e,c){e(),o.concat=function(t,...n){let o=t.length;for(const t of n)o+=t.length;const e=new t.constructor(o);e.set(t,0);let c=t.length;for(const t of n)e.set(t,c),c+=t.length;return e}},\n", + " function _(n,o,t,e,f){function c(...n){const o=new Set;for(const t of n)for(const n of t)o.add(n);return o}e(),t.union=c,t.intersection=function(n,...o){const t=new Set;n:for(const e of n){for(const n of o)if(!n.has(e))continue n;t.add(e)}return t},t.difference=function(n,...o){const t=new Set(n);for(const n of c(...o))t.delete(n);return t}},\n", + " function _(n,t,e,o,r){o();const c=n(1),l=(0,c.__importDefault)(n(79)),i=(0,c.__importDefault)(n(80)),u=n(24),a=new i.default(\"GOOGLE\"),s=new i.default(\"WGS84\"),f=(0,l.default)(s,a);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?f.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?f.inverse([n,t]):[NaN,NaN]};const _={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},p={lon:[-180,180],lat:[-85.06,85.06]},{min:g,max:h}=Math;function m(n,t){const o=g(n.length,t.length),r=(0,u.infer_type)(n,t),c=new r(o),l=new r(o);return e.inplace.project_xy(n,t,c,l),[c,l]}e.clip_mercator=function(n,t,e){const[o,r]=_[e];return[h(n,o),g(t,r)]},e.in_bounds=function(n,t){const[e,o]=p[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof o.z?[o.x,o.y,o.z].concat(t.splice(3)):[o.x,o.y,t[2]].concat(t.splice(3)):[o.x,o.y].concat(t.splice(2)):[o.x,o.y]):(a=(0,c.default)(e,n,t,r),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;a[r]=t[r]})),a)}function l(e){return e instanceof i.default?e:e.oProj?e.oProj:(0,i.default)(e)}t.default=function(e,n,t){e=l(e);var r,o=!1;return void 0===n?(n=e,e=u,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=u,o=!0),n=l(n),t?f(e,n,t):(r={forward:function(t,r){return f(e,n,t,r)},inverse:function(t,r){return f(n,e,t,r)}},o&&(r.oProj=n),r)}},\n", + " function _(t,e,a,s,i){s();const l=t(1),u=(0,l.__importDefault)(t(81)),r=(0,l.__importDefault)(t(92)),d=(0,l.__importDefault)(t(93)),o=t(101),f=(0,l.__importDefault)(t(103)),p=(0,l.__importDefault)(t(104)),m=(0,l.__importDefault)(t(88)),n=t(105);function h(t,e){if(!(this instanceof h))return new h(t);e=e||function(t){if(t)throw t};var a=(0,u.default)(t);if(\"object\"==typeof a){var s=h.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var i=(0,m.default)(f.default,a.datumCode);i&&(a.datum_params=a.datum_params||(i.towgs84?i.towgs84.split(\",\"):null),a.ellps=i.ellipse,a.datumName=i.datumName?i.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\",a.lat1=a.lat1||a.lat0;var l=(0,o.sphere)(a.a,a.b,a.rf,a.ellps,a.sphere),d=(0,o.eccentricity)(l.a,l.b,l.rf,a.R_A),_=(0,n.getNadgrids)(a.nadgrids),c=a.datum||(0,p.default)(a.datumCode,a.datum_params,l.a,l.b,d.es,d.ep2,_);(0,r.default)(this,a),(0,r.default)(this,s),this.a=l.a,this.b=l.b,this.rf=l.rf,this.sphere=l.sphere,this.es=d.es,this.e=d.e,this.ep2=d.ep2,this.datum=c,this.init(),e(null,this)}else e(t)}else e(t)}h.projections=d.default,h.projections.start(),a.default=h},\n", + " function _(t,r,n,u,e){u();const f=t(1),i=(0,f.__importDefault)(t(82)),a=(0,f.__importDefault)(t(89)),o=(0,f.__importDefault)(t(84)),l=(0,f.__importDefault)(t(88));var C=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var d=[\"3857\",\"900913\",\"3785\",\"102113\"];n.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in i.default}(t))return i.default[t];if(function(t){return C.some((function(r){return t.indexOf(r)>-1}))}(t)){var r=(0,a.default)(t);if(function(t){var r=(0,l.default)(t,\"authority\");if(r){var n=(0,l.default)(r,\"epsg\");return n&&d.indexOf(n)>-1}}(r))return i.default[\"EPSG:3857\"];var n=function(t){var r=(0,l.default)(t,\"extension\");if(r)return(0,l.default)(r,\"proj4\")}(r);return n?(0,o.default)(n):r}return function(t){return\"+\"===t[0]}(t)?(0,o.default)(t):void 0}},\n", + " function _(t,r,i,e,n){e();const f=t(1),a=(0,f.__importDefault)(t(83)),l=(0,f.__importDefault)(t(84)),u=(0,f.__importDefault)(t(89));function o(t){var r=this;if(2===arguments.length){var i=arguments[1];\"string\"==typeof i?\"+\"===i.charAt(0)?o[t]=(0,l.default)(arguments[1]):o[t]=(0,u.default)(arguments[1]):o[t]=i}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?o.apply(r,t):o(t)}));if(\"string\"==typeof t){if(t in o)return o[t]}else\"EPSG\"in t?o[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?o[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?o[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}(0,a.default)(o),i.default=o},\n", + " function _(t,l,G,S,e){S(),G.default=function(t){t(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),t(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),t(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),t.WGS84=t[\"EPSG:4326\"],t[\"EPSG:3785\"]=t[\"EPSG:3857\"],t.GOOGLE=t[\"EPSG:3857\"],t[\"EPSG:900913\"]=t[\"EPSG:3857\"],t[\"EPSG:102113\"]=t[\"EPSG:3857\"]}},\n", + " function _(t,n,o,a,u){a();const e=t(1),r=t(85),i=(0,e.__importDefault)(t(86)),f=(0,e.__importDefault)(t(87)),l=(0,e.__importDefault)(t(88));o.default=function(t){var n,o,a,u={},e=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){u.rf=parseFloat(t)},lat_0:function(t){u.lat0=t*r.D2R},lat_1:function(t){u.lat1=t*r.D2R},lat_2:function(t){u.lat2=t*r.D2R},lat_ts:function(t){u.lat_ts=t*r.D2R},lon_0:function(t){u.long0=t*r.D2R},lon_1:function(t){u.long1=t*r.D2R},lon_2:function(t){u.long2=t*r.D2R},alpha:function(t){u.alpha=parseFloat(t)*r.D2R},gamma:function(t){u.rectified_grid_angle=parseFloat(t)},lonc:function(t){u.longc=t*r.D2R},x_0:function(t){u.x0=parseFloat(t)},y_0:function(t){u.y0=parseFloat(t)},k_0:function(t){u.k0=parseFloat(t)},k:function(t){u.k0=parseFloat(t)},a:function(t){u.a=parseFloat(t)},b:function(t){u.b=parseFloat(t)},r_a:function(){u.R_A=!0},zone:function(t){u.zone=parseInt(t,10)},south:function(){u.utmSouth=!0},towgs84:function(t){u.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){u.to_meter=parseFloat(t)},units:function(t){u.units=t;var n=(0,l.default)(f.default,t);n&&(u.to_meter=n.to_meter)},from_greenwich:function(t){u.from_greenwich=t*r.D2R},pm:function(t){var n=(0,l.default)(i.default,t);u.from_greenwich=(n||parseFloat(t))*r.D2R},nadgrids:function(t){\"@null\"===t?u.datumCode=\"none\":u.nadgrids=t},axis:function(t){var n=\"ewnsud\";3===t.length&&-1!==n.indexOf(t.substr(0,1))&&-1!==n.indexOf(t.substr(1,1))&&-1!==n.indexOf(t.substr(2,1))&&(u.axis=t)},approx:function(){u.approx=!0}};for(n in e)o=e[n],n in c?\"function\"==typeof(a=c[n])?a(o):u[a]=o:u[n]=o;return\"string\"==typeof u.datumCode&&\"WGS84\"!==u.datumCode&&(u.datumCode=u.datumCode.toLowerCase()),u}},\n", + " function _(S,_,P,R,I){R(),P.PJD_3PARAM=1,P.PJD_7PARAM=2,P.PJD_GRIDSHIFT=3,P.PJD_WGS84=4,P.PJD_NODATUM=5,P.SRS_WGS84_SEMIMAJOR=6378137,P.SRS_WGS84_SEMIMINOR=6356752.314,P.SRS_WGS84_ESQUARED=.0066943799901413165,P.SEC_TO_RAD=484813681109536e-20,P.HALF_PI=Math.PI/2,P.SIXTH=.16666666666666666,P.RA4=.04722222222222222,P.RA6=.022156084656084655,P.EPSLN=1e-10,P.D2R=.017453292519943295,P.R2D=57.29577951308232,P.FORTPI=Math.PI/4,P.TWO_PI=2*Math.PI,P.SPI=3.14159265359},\n", + " function _(o,r,a,e,s){e();var n={};a.default=n,n.greenwich=0,n.lisbon=-9.131906111111,n.paris=2.337229166667,n.bogota=-74.080916666667,n.madrid=-3.687938888889,n.rome=12.452333333333,n.bern=7.439583333333,n.jakarta=106.807719444444,n.ferro=-17.666666666667,n.brussels=4.367975,n.stockholm=18.058277777778,n.athens=23.7163375,n.oslo=10.722916666667},\n", + " function _(t,e,f,o,u){o(),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n", + " function _(e,r,t,a,n){a();var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(n),n}},\n", + " function _(t,e,r,i,s){i(),r.default=function(t){return new d(t).output()};var h=/\\s/,o=/[A-Za-z]/,n=/[A-Za-z84]/,a=/[,\\]]/,u=/[\\d\\.E\\-\\+]/;function d(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}d.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;h.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},d.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(a.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},d.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},d.prototype.number=function(t){if(!u.test(t)){if(a.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},d.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},d.prototype.keyword=function(t){if(n.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},d.prototype.neutral=function(t){if(o.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(u.test(t))return this.word=t,void(this.state=3);if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},d.prototype.output=function(){for(;this.place90&&a*o.R2D<-90&&h*o.R2D>180&&h*o.R2D<-180)return null;if(Math.abs(Math.abs(a)-o.HALF_PI)<=o.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(o.FORTPI+.5*a));else{var e=Math.sin(a),r=(0,l.default)(this.e,a,e);i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0-this.a*this.k0*Math.log(r)}return t.x=i,t.y=s,t}function M(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=o.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var e=Math.exp(-a/(this.a*this.k0));if(-9999===(s=(0,u.default)(this.e,e)))return null}return i=(0,n.default)(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=f,s.forward=_,s.inverse=M,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:f,forward:_,inverse:M,names:s.names}},\n", + " function _(t,n,r,u,a){u(),r.default=function(t,n,r){var u=t*n;return r/Math.sqrt(1-u*u)}},\n", + " function _(t,n,u,a,f){a();const e=t(1),o=t(85),_=(0,e.__importDefault)(t(97));u.default=function(t){return Math.abs(t)<=o.SPI?t:t-(0,_.default)(t)*o.TWO_PI}},\n", + " function _(n,t,u,f,c){f(),u.default=function(n){return n<0?-1:1}},\n", + " function _(t,n,a,o,u){o();const c=t(85);a.default=function(t,n,a){var o=t*a,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(c.HALF_PI-n))/o}},\n", + " function _(t,a,n,r,f){r();const h=t(85);n.default=function(t,a){for(var n,r,f=.5*t,o=h.HALF_PI-2*Math.atan(a),u=0;u<=15;u++)if(n=t*Math.sin(o),o+=r=h.HALF_PI-2*Math.atan(a*Math.pow((1-n)/(1+n),f))-o,Math.abs(r)<=1e-10)return o;return-9999}},\n", + " function _(n,i,e,t,r){function a(){}function f(n){return n}t(),e.init=a,e.forward=f,e.inverse=f,e.names=[\"longlat\",\"identity\"],e.default={init:a,forward:f,inverse:f,names:e.names}},\n", + " function _(t,r,e,a,n){a();const f=t(1),i=t(85),u=(0,f.__importStar)(t(102)),c=(0,f.__importDefault)(t(88));e.eccentricity=function(t,r,e,a){var n=t*t,f=r*r,u=(n-f)/n,c=0;return a?(n=(t*=1-u*(i.SIXTH+u*(i.RA4+u*i.RA6)))*t,u=0):c=Math.sqrt(u),{es:u,e:c,ep2:(n-f)/f}},e.sphere=function(t,r,e,a,n){if(!t){var f=(0,c.default)(u.default,a);f||(f=u.WGS84),t=f.a,r=f.b,e=f.rf}return e&&!r&&(r=(1-1/e)*t),(0===e||Math.abs(t-r)3&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=d.PJD_7PARAM,s.datum_params[3]*=d.SEC_TO_RAD,s.datum_params[4]*=d.SEC_TO_RAD,s.datum_params[5]*=d.SEC_TO_RAD,s.datum_params[6]=s.datum_params[6]/1e6+1))),r&&(s.datum_type=d.PJD_GRIDSHIFT,s.grids=r),s.a=_,s.b=t,s.es=u,s.ep2=p,s}},\n", + " function _(t,e,n,r,i){r();var u={};function l(t){if(0===t.length)return null;var e=\"@\"===t[0];return e&&(t=t.slice(1)),\"null\"===t?{name:\"null\",mandatory:!e,grid:null,isNull:!0}:{name:t,mandatory:!e,grid:u[t]||null,isNull:!1}}function o(t){return t/3600*Math.PI/180}function a(t,e,n){return String.fromCharCode.apply(null,new Uint8Array(t.buffer.slice(e,n)))}function d(t){return t.map((function(t){return[o(t.longitudeShift),o(t.latitudeShift)]}))}function g(t,e,n){return{name:a(t,e+8,e+16).trim(),parent:a(t,e+24,e+24+8).trim(),lowerLatitude:t.getFloat64(e+72,n),upperLatitude:t.getFloat64(e+88,n),lowerLongitude:t.getFloat64(e+104,n),upperLongitude:t.getFloat64(e+120,n),latitudeInterval:t.getFloat64(e+136,n),longitudeInterval:t.getFloat64(e+152,n),gridNodeCount:t.getInt32(e+168,n)}}function s(t,e,n,r){for(var i=e+176,u=[],l=0;l1&&console.log(\"Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored\");var l=function(t,e,n){for(var r=176,i=[],u=0;ua.y||f>a.x||N1e-12&&Math.abs(n.y)>1e-12);if(d<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),a;a.x=(0,u.default)(l.x+t.ll[0]),a.y=l.y+t.ll[1]}else isNaN(l.x)||(a.x=r.x+l.x,a.y=r.y+l.y);return a}function f(r,e){var t,a={x:r.x/e.del[0],y:r.y/e.del[1]},i=Math.floor(a.x),l=Math.floor(a.y),n=a.x-1*i,o=a.y-1*l,u={x:Number.NaN,y:Number.NaN};if(i<0||i>=e.lim[0])return u;if(l<0||l>=e.lim[1])return u;t=l*e.lim[0]+i;var d=e.cvs[t][0],s=e.cvs[t][1];t++;var y=e.cvs[t][0],f=e.cvs[t][1];t+=e.lim[0];var x=e.cvs[t][0],m=e.cvs[t][1];t--;var N=e.cvs[t][0],c=e.cvs[t][1],_=n*o,g=n*(1-o),v=(1-n)*(1-o),S=(1-n)*o;return u.x=v*d+g*y+S*N+_*x,u.y=v*s+g*f+S*c+_*m,u}t.default=function(r,e,t){if((0,o.compareDatums)(r,e))return t;if(r.datum_type===n.PJD_NODATUM||e.datum_type===n.PJD_NODATUM)return t;var a=r.a,i=r.es;if(r.datum_type===n.PJD_GRIDSHIFT){if(0!==s(r,!1,t))return;a=n.SRS_WGS84_SEMIMAJOR,i=n.SRS_WGS84_ESQUARED}var l=e.a,u=e.b,y=e.es;if(e.datum_type===n.PJD_GRIDSHIFT&&(l=n.SRS_WGS84_SEMIMAJOR,u=n.SRS_WGS84_SEMIMINOR,y=n.SRS_WGS84_ESQUARED),i===y&&a===l&&!d(r.datum_type)&&!d(e.datum_type))return t;if(t=(0,o.geodeticToGeocentric)(t,i,a),d(r.datum_type)&&(t=(0,o.geocentricToWgs84)(t,r.datum_type,r.datum_params)),d(e.datum_type)&&(t=(0,o.geocentricFromWgs84)(t,e.datum_type,e.datum_params)),t=(0,o.geocentricToGeodetic)(t,y,l,u),e.datum_type===n.PJD_GRIDSHIFT&&0!==s(e,!0,t))return;return t},t.applyGridShift=s},\n", + " function _(a,t,r,m,s){m();const u=a(85);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===u.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==u.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,s,_,e,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-u.HALF_PI&&d>-1.001*u.HALF_PI)d=-u.HALF_PI;else if(d>u.HALF_PI&&d<1.001*u.HALF_PI)d=u.HALF_PI;else{if(d<-u.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>u.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),s=Math.sin(d),e=Math.cos(d),_=s*s,{x:((m=r/Math.sqrt(1-t*_))+i)*e*Math.cos(n),y:(m+i)*e*Math.sin(n),z:(m*(1-t)+i)*s}},r.geocentricToGeodetic=function(a,t,r,m){var s,_,e,n,d,i,p,P,y,z,M,o,A,c,x,h=1e-12,f=a.x,I=a.y,F=a.z?a.z:0;if(s=Math.sqrt(f*f+I*I),_=Math.sqrt(f*f+I*I+F*F),s/r1e-24&&A<30);return{x:c,y:Math.atan(M/Math.abs(z)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-e*a.z)+s,z:i*(-n*a.x+e*a.y+a.z)+_}}},r.geocentricFromWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-s)/i,y=(a.z-_)/i;return{x:p+d*P-n*y,y:-d*p+P+e*y,z:n*p-e*P+y}}}},\n", + " function _(e,a,i,r,s){r(),i.default=function(e,a,i){var r,s,n,c=i.x,d=i.y,f=i.z||0,u={};for(n=0;n<3;n++)if(!a||2!==n||void 0!==i.z)switch(0===n?(r=c,s=-1!==\"ew\".indexOf(e.axis[n])?\"x\":\"y\"):1===n?(r=d,s=-1!==\"ns\".indexOf(e.axis[n])?\"y\":\"x\"):(r=f,s=\"z\"),e.axis[n]){case\"e\":u[s]=r;break;case\"w\":u[s]=-r;break;case\"n\":u[s]=r;break;case\"s\":u[s]=-r;break;case\"u\":void 0!==i[s]&&(u.z=r);break;case\"d\":void 0!==i[s]&&(u.z=-r);break;default:return null}return u}},\n", + " function _(n,t,e,u,f){u(),e.default=function(n){var t={x:n[0],y:n[1]};return n.length>2&&(t.z=n[2]),n.length>3&&(t.m=n[3]),t}},\n", + " function _(e,i,n,t,r){function o(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}t(),n.default=function(e){o(e.x),o(e.y)}},\n", + " function _(e,i,s,t,o){t();const n=e(1);var l,a,r,_,c;const d=e(53),v=e(42),u=(0,n.__importStar)(e(45)),h=e(48),m=(0,n.__importStar)(e(18));class T extends v.View{initialize(){super.initialize(),this.visuals=new u.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.parent.canvas}set_data(e){const i=this;for(const s of this.model){if(!(s instanceof m.VectorSpec||s instanceof m.ScalarSpec))continue;const t=s.uniform(e);i[`${s.attr}`]=t}}}s.ArrowHeadView=T,T.__name__=\"ArrowHeadView\";class p extends d.Model{constructor(e){super(e)}}s.ArrowHead=p,l=p,p.__name__=\"ArrowHead\",l.define((()=>({size:[m.NumberSpec,25]})));class V extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,0),e.lineTo(.5*s,s)}render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.stroke()}}}s.OpenHeadView=V,V.__name__=\"OpenHeadView\";class f extends p{constructor(e){super(e)}}s.OpenHead=f,a=f,f.__name__=\"OpenHead\",a.prototype.default_view=V,a.mixins(h.LineVector);class w extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._normal(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._normal(e,i),e.stroke())}_normal(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.closePath()}}s.NormalHeadView=w,w.__name__=\"NormalHeadView\";class H extends p{constructor(e){super(e)}}s.NormalHead=H,r=H,H.__name__=\"NormalHead\",r.prototype.default_view=w,r.mixins([h.LineVector,h.FillVector]),r.override({fill_color:\"black\"});class z extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._vee(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._vee(e,i),e.stroke())}_vee(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.closePath()}}s.VeeHeadView=z,z.__name__=\"VeeHeadView\";class x extends p{constructor(e){super(e)}}s.VeeHead=x,_=x,x.__name__=\"VeeHead\",_.prototype.default_view=z,_.mixins([h.LineVector,h.FillVector]),_.override({fill_color:\"black\"});class g extends T{render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,0),e.lineTo(-.5*s,0),e.stroke()}}clip(e,i){}}s.TeeHeadView=g,g.__name__=\"TeeHeadView\";class b extends p{constructor(e){super(e)}}s.TeeHead=b,c=b,b.__name__=\"TeeHead\",c.prototype.default_view=g,c.mixins(h.LineVector)},\n", + " function _(n,e,t,i,o){i();const s=n(9);async function c(n,e,t){const i=new n(Object.assign(Object.assign({},t),{model:e}));return i.initialize(),await i.lazy_initialize(),i}t.build_view=async function(n,e={parent:null},t=(n=>n.default_view)){const i=await c(t(n),n,e);return i.connect_signals(),i},t.build_views=async function(n,e,t={parent:null},i=(n=>n.default_view)){const o=(0,s.difference)([...n.keys()],e);for(const e of o)n.get(e).remove(),n.delete(e);const a=[],f=e.filter((e=>!n.has(e)));for(const e of f){const o=await c(i(e),e,t);n.set(e,o),a.push(o)}for(const n of a)n.connect_signals();return a},t.remove_views=function(n){for(const[e,t]of n)t.remove(),n.delete(e)}},\n", + " function _(e,s,_,i,l){i();const t=e(1);var o;const r=e(115),p=(0,t.__importStar)(e(48));class h extends r.UpperLowerView{paint(e){e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);for(let s=this._upper_sx.length-1;s>=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.apply(e),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);this.visuals.line.apply(e),e.beginPath(),e.moveTo(this._upper_sx[0],this._upper_sy[0]);for(let s=0,_=this._upper_sx.length;s<_;s++)e.lineTo(this._upper_sx[s],this._upper_sy[s]);this.visuals.line.apply(e)}}_.BandView=h,h.__name__=\"BandView\";class n extends r.UpperLower{constructor(e){super(e)}}_.Band=n,o=n,n.__name__=\"Band\",o.prototype.default_view=h,o.mixins([p.Line,p.Fill]),o.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(e,t,i,s,o){s();const r=e(1);var n;const p=e(69),a=e(20),_=(0,r.__importStar)(e(18));class h extends p.DataAnnotationView{map_data(){const{frame:e}=this.plot_view,t=this.model.dimension,i=this.coordinates.x_scale,s=this.coordinates.y_scale,o=\"height\"==t?s:i,r=\"height\"==t?i:s,n=\"height\"==t?e.bbox.yview:e.bbox.xview,p=\"height\"==t?e.bbox.xview:e.bbox.yview;let a,_,h;a=\"data\"==this.model.properties.lower.units?o.v_compute(this._lower):n.v_compute(this._lower),_=\"data\"==this.model.properties.upper.units?o.v_compute(this._upper):n.v_compute(this._upper),h=\"data\"==this.model.properties.base.units?r.v_compute(this._base):p.v_compute(this._base);const[d,c]=\"height\"==t?[1,0]:[0,1],u=[a,h],l=[_,h];this._lower_sx=u[d],this._lower_sy=u[c],this._upper_sx=l[d],this._upper_sy=l[c]}}i.UpperLowerView=h,h.__name__=\"UpperLowerView\";class d extends _.CoordinateSpec{get dimension(){return\"width\"==this.obj.dimension?\"x\":\"y\"}get units(){var e;return null!==(e=this.spec.units)&&void 0!==e?e:\"data\"}}i.XOrYCoordinateSpec=d,d.__name__=\"XOrYCoordinateSpec\";class c extends p.DataAnnotation{constructor(e){super(e)}}i.UpperLower=c,n=c,c.__name__=\"UpperLower\",n.define((()=>({dimension:[a.Dimension,\"height\"],lower:[d,{field:\"lower\"}],upper:[d,{field:\"upper\"}],base:[d,{field:\"base\"}]})))},\n", + " function _(t,o,i,n,e){n();const s=t(1);var l;const r=t(40),a=(0,s.__importStar)(t(48)),c=t(20),h=t(65);i.EDGE_TOLERANCE=2.5;class b extends r.AnnotationView{constructor(){super(...arguments),this.bbox=new h.BBox}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{left:t,right:o,top:i,bottom:n}=this.model;if(null==t&&null==o&&null==i&&null==n)return;const{frame:e}=this.plot_view,s=this.coordinates.x_scale,l=this.coordinates.y_scale,r=(t,o,i,n,e)=>{let s;return s=null!=t?this.model.screen?t:\"data\"==o?i.compute(t):n.compute(t):e,s};this.bbox=h.BBox.from_rect({left:r(t,this.model.left_units,s,e.bbox.xview,e.bbox.left),right:r(o,this.model.right_units,s,e.bbox.xview,e.bbox.right),top:r(i,this.model.top_units,l,e.bbox.yview,e.bbox.top),bottom:r(n,this.model.bottom_units,l,e.bbox.yview,e.bbox.bottom)}),this._paint_box()}_paint_box(){const{ctx:t}=this.layer;t.save();const{left:o,top:i,width:n,height:e}=this.bbox;t.beginPath(),t.rect(o,i,n,e),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t),t.restore()}interactive_bbox(){const t=this.model.line_width+i.EDGE_TOLERANCE;return this.bbox.grow_by(t)}interactive_hit(t,o){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,o)}cursor(t,o){const{left:i,right:n,bottom:e,top:s}=this.bbox;return Math.abs(t-i)<3||Math.abs(t-n)<3?this.model.ew_cursor:Math.abs(o-e)<3||Math.abs(o-s)<3?this.model.ns_cursor:this.bbox.contains(t,o)?this.model.in_cursor:null}}i.BoxAnnotationView=b,b.__name__=\"BoxAnnotationView\";class u extends r.Annotation{constructor(t){super(t)}update({left:t,right:o,top:i,bottom:n}){this.setv({left:t,right:o,top:i,bottom:n,screen:!0})}}i.BoxAnnotation=u,l=u,u.__name__=\"BoxAnnotation\",l.prototype.default_view=b,l.mixins([a.Line,a.Fill,a.Hatch]),l.define((({Number:t,Nullable:o})=>({top:[o(t),null],top_units:[c.SpatialUnits,\"data\"],bottom:[o(t),null],bottom_units:[c.SpatialUnits,\"data\"],left:[o(t),null],left_units:[c.SpatialUnits,\"data\"],right:[o(t),null],right_units:[c.SpatialUnits,\"data\"],render_mode:[c.RenderMode,\"canvas\"]}))),l.internal((({Boolean:t,String:o,Nullable:i})=>({screen:[t,!1],ew_cursor:[i(o),null],ns_cursor:[i(o),null],in_cursor:[i(o),null]}))),l.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(t,e,i,o,n){o();const a=t(1);var r;const s=t(40),l=t(118),_=t(126),c=t(127),h=t(130),u=t(168),p=t(131),m=t(192),g=t(132),d=t(173),f=t(172),w=t(196),b=t(204),v=t(206),x=t(133),y=t(20),k=(0,a.__importStar)(t(48)),z=t(9),j=t(207),C=t(208),L=t(211),B=t(123),S=t(11),M=t(113),T=t(65),A=t(8);class O extends s.AnnotationView{get orientation(){return this._orientation}initialize(){super.initialize();const{ticker:t,formatter:e,color_mapper:i}=this.model;this._ticker=\"auto\"!=t?t:(()=>{switch(!0){case i instanceof w.LogColorMapper:return new u.LogTicker;case i instanceof w.ScanningColorMapper:return new u.BinnedTicker({mapper:i});case i instanceof w.CategoricalColorMapper:return new u.CategoricalTicker;default:return new u.BasicTicker}})(),this._formatter=\"auto\"!=e?e:(()=>{switch(!0){case this._ticker instanceof u.LogTicker:return new m.LogTickFormatter;case i instanceof w.CategoricalColorMapper:return new m.CategoricalTickFormatter;default:return new m.BasicTickFormatter}})(),this._major_range=(()=>{if(i instanceof w.CategoricalColorMapper){const{factors:t}=i;return new v.FactorRange({factors:t})}if(i instanceof f.ContinuousColorMapper){const{min:t,max:e}=i.metrics;return new v.Range1d({start:t,end:e})}(0,S.unreachable)()})(),this._major_scale=(()=>{if(i instanceof w.LinearColorMapper)return new b.LinearScale;if(i instanceof w.LogColorMapper)return new b.LogScale;if(i instanceof w.ScanningColorMapper){const{binning:t}=i.metrics;return new b.LinearInterpolationScale({binning:t})}if(i instanceof w.CategoricalColorMapper)return new b.CategoricalScale;(0,S.unreachable)()})(),this._minor_range=new v.Range1d({start:0,end:1}),this._minor_scale=new b.LinearScale;const o=k.attrs_of(this.model,\"major_label_\",k.Text,!0),n=k.attrs_of(this.model,\"major_tick_\",k.Line,!0),a=k.attrs_of(this.model,\"minor_tick_\",k.Line,!0),r=k.attrs_of(this.model,\"title_\",k.Text),s=i instanceof w.CategoricalColorMapper?c.CategoricalAxis:i instanceof w.LogColorMapper?c.LogAxis:c.LinearAxis;this._axis=new s(Object.assign(Object.assign(Object.assign({ticker:this._ticker,formatter:this._formatter,major_tick_in:this.model.major_tick_in,major_tick_out:this.model.major_tick_out,minor_tick_in:this.model.minor_tick_in,minor_tick_out:this.model.minor_tick_out,major_label_standoff:this.model.label_standoff,major_label_overrides:this.model.major_label_overrides,major_label_policy:this.model.major_label_policy,axis_line_color:null},o),n),a));const{title:_}=this.model;_&&(this._title=new l.Title(Object.assign({text:_,standoff:this.model.title_standoff},r)))}async lazy_initialize(){await super.lazy_initialize();const t=this,e={get parent(){return t.parent},get root(){return t.root},get frame(){return t._frame},get canvas_view(){return t.parent.canvas_view},request_layout(){t.parent.request_layout()}};this._axis_view=await(0,M.build_view)(this._axis,{parent:e}),null!=this._title&&(this._title_view=await(0,M.build_view)(this._title,{parent:e}))}remove(){var t;null===(t=this._title_view)||void 0===t||t.remove(),this._axis_view.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this._ticker.change,(()=>this.request_render())),this.connect(this._formatter.change,(()=>this.request_render())),this.connect(this.model.color_mapper.metrics_change,(()=>{const t=this._major_range,e=this._major_scale,{color_mapper:i}=this.model;if(i instanceof f.ContinuousColorMapper&&t instanceof v.Range1d){const{min:e,max:o}=i.metrics;t.setv({start:e,end:o})}if(i instanceof w.ScanningColorMapper&&e instanceof b.LinearInterpolationScale){const{binning:t}=i.metrics;e.binning=t}this._set_canvas_image(),this.plot_view.request_layout()}))}_set_canvas_image(){const{orientation:t}=this,e=(()=>{const{palette:e}=this.model.color_mapper;return\"vertical\"==t?(0,z.reversed)(e):e})(),[i,o]=\"vertical\"==t?[1,e.length]:[e.length,1],n=this._image=document.createElement(\"canvas\");n.width=i,n.height=o;const a=n.getContext(\"2d\"),r=a.getImageData(0,0,i,o),s=new w.LinearColorMapper({palette:e}).rgba_mapper.v_compute((0,z.range)(0,e.length));r.data.set(s),a.putImageData(r,0,0)}update_layout(){const{location:t,width:e,height:i,padding:o,margin:n}=this.model,[a,r]=(()=>{if(!(0,A.isString)(t))return[\"end\",\"start\"];switch(t){case\"top_left\":return[\"start\",\"start\"];case\"top\":case\"top_center\":return[\"start\",\"center\"];case\"top_right\":return[\"start\",\"end\"];case\"bottom_left\":return[\"end\",\"start\"];case\"bottom\":case\"bottom_center\":return[\"end\",\"center\"];case\"bottom_right\":return[\"end\",\"end\"];case\"left\":case\"center_left\":return[\"center\",\"start\"];case\"center\":case\"center_center\":return[\"center\",\"center\"];case\"right\":case\"center_right\":return[\"center\",\"end\"]}})(),s=this._orientation=(()=>{const{orientation:t}=this.model;return\"auto\"==t?null!=this.panel?this.panel.is_horizontal?\"horizontal\":\"vertical\":\"start\"==r||\"end\"==r||\"center\"==r&&\"center\"==a?\"vertical\":\"horizontal\":t})(),l=new C.NodeLayout,c=new C.VStack,h=new C.VStack,u=new C.HStack,p=new C.HStack;l.absolute=!0,c.absolute=!0,h.absolute=!0,u.absolute=!0,p.absolute=!0;const[m,g,d,f]=(()=>\"horizontal\"==s?[this._major_scale,this._minor_scale,this._major_range,this._minor_range]:[this._minor_scale,this._major_scale,this._minor_range,this._major_range])();this._frame=new _.CartesianFrame(m,g,d,f),l.on_resize((t=>this._frame.set_geometry(t)));const w=new L.BorderLayout;this._inner_layout=w,w.absolute=!0,w.center_panel=l,w.top_panel=c,w.bottom_panel=h,w.left_panel=u,w.right_panel=p;const b={left:o,right:o,top:o,bottom:o},v=(()=>{if(null==this.panel){if((0,A.isString)(t))return{left:n,right:n,top:n,bottom:n};{const[e,i]=t;return{left:e,right:n,top:n,bottom:i}}}if(!(0,A.isString)(t)){const[e,i]=t;return w.fixup_geometry=(t,o)=>{const n=t,a=this.layout.bbox,{width:r,height:s}=t;if(t=new T.BBox({left:a.left+e,bottom:a.bottom-i,width:r,height:s}),null!=o){const e=t.left-n.left,i=t.top-n.top,{left:a,top:r,width:s,height:l}=o;o=new T.BBox({left:a+e,top:r+i,width:s,height:l})}return[t,o]},{left:e,right:0,top:0,bottom:i}}w.fixup_geometry=(t,e)=>{const i=t;if(\"horizontal\"==s){const{top:e,width:i,height:o}=t;if(\"end\"==r){const{right:n}=this.layout.bbox;t=new T.BBox({right:n,top:e,width:i,height:o})}else if(\"center\"==r){const{hcenter:n}=this.layout.bbox;t=new T.BBox({hcenter:Math.round(n),top:e,width:i,height:o})}}else{const{left:e,width:i,height:o}=t;if(\"end\"==a){const{bottom:n}=this.layout.bbox;t=new T.BBox({left:e,bottom:n,width:i,height:o})}else if(\"center\"==a){const{vcenter:n}=this.layout.bbox;t=new T.BBox({left:e,vcenter:Math.round(n),width:i,height:o})}}if(null!=e){const o=t.left-i.left,n=t.top-i.top,{left:a,top:r,width:s,height:l}=e;e=new T.BBox({left:a+o,top:r+n,width:s,height:l})}return[t,e]}})();let x,y,k,z;if(w.padding=b,null!=this.panel?(x=\"max\",y=void 0,k=void 0,z=void 0):\"auto\"==(\"horizontal\"==s?e:i)?(x=\"fixed\",y=25*this.model.color_mapper.palette.length,k={percent:.3},z={percent:.8}):(x=\"fit\",y=void 0),\"horizontal\"==s){const t=\"auto\"==e?void 0:e,o=\"auto\"==i?25:i;w.set_sizing({width_policy:x,height_policy:\"min\",width:y,min_width:k,max_width:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"auto\"==e?\"fit\":\"fixed\",height_policy:\"fixed\",width:t,height:o})}else{const t=\"auto\"==e?25:e,o=\"auto\"==i?void 0:i;w.set_sizing({width_policy:\"min\",height_policy:x,height:y,min_height:k,max_height:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"fixed\",height_policy:\"auto\"==i?\"fit\":\"fixed\",width:t,height:o})}c.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),h.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),u.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),p.set_sizing({width_policy:\"min\",height_policy:\"fit\"});const{_title_view:S}=this;null!=S&&(\"horizontal\"==s?(S.panel=new B.Panel(\"above\"),S.update_layout(),c.children.push(S.layout)):(S.panel=new B.Panel(\"left\"),S.update_layout(),u.children.push(S.layout)));const{panel:M}=this,O=null!=M&&s==M.orientation?M.side:\"horizontal\"==s?\"below\":\"right\",R=(()=>{switch(O){case\"above\":return c;case\"below\":return h;case\"left\":return u;case\"right\":return p}})(),{_axis_view:F}=this;if(F.panel=new B.Panel(O),F.update_layout(),R.children.push(F.layout),null!=this.panel){const t=new j.Grid([{layout:w,row:0,col:0}]);t.absolute=!0,\"horizontal\"==s?t.set_sizing({width_policy:\"max\",height_policy:\"min\"}):t.set_sizing({width_policy:\"min\",height_policy:\"max\"}),this.layout=t}else this.layout=this._inner_layout;const{visible:I}=this.model;this.layout.sizing.visible=I,this._set_canvas_image()}_render(){var t;const{ctx:e}=this.layer;e.save(),this._paint_bbox(e,this._inner_layout.bbox),this._paint_image(e,this._inner_layout.center_panel.bbox),null===(t=this._title_view)||void 0===t||t.render(),this._axis_view.render(),e.restore()}_paint_bbox(t,e){const{x:i,y:o}=e;let{width:n,height:a}=e;i+n>=this.parent.canvas_view.bbox.width&&(n-=1),o+a>=this.parent.canvas_view.bbox.height&&(a-=1),t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(i,o,n,a)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}_paint_image(t,e){const{x:i,y:o,width:n,height:a}=e;t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this._image,i,o,n,a),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}serializable_state(){const t=super.serializable_state(),{children:e=[]}=t,i=(0,a.__rest)(t,[\"children\"]);return null!=this._title_view&&e.push(this._title_view.serializable_state()),e.push(this._axis_view.serializable_state()),Object.assign(Object.assign({},i),{children:e})}}i.ColorBarView=O,O.__name__=\"ColorBarView\";class R extends s.Annotation{constructor(t){super(t)}}i.ColorBar=R,r=R,R.__name__=\"ColorBar\",r.prototype.default_view=O,r.mixins([[\"major_label_\",k.Text],[\"title_\",k.Text],[\"major_tick_\",k.Line],[\"minor_tick_\",k.Line],[\"border_\",k.Line],[\"bar_\",k.Line],[\"background_\",k.Fill]]),r.define((({Alpha:t,Number:e,String:i,Tuple:o,Dict:n,Or:a,Ref:r,Auto:s,Nullable:l})=>({location:[a(y.Anchor,o(e,e)),\"top_right\"],orientation:[a(y.Orientation,s),\"auto\"],title:[l(i),null],title_standoff:[e,2],width:[a(e,s),\"auto\"],height:[a(e,s),\"auto\"],scale_alpha:[t,1],ticker:[a(r(h.Ticker),s),\"auto\"],formatter:[a(r(p.TickFormatter),s),\"auto\"],major_label_overrides:[n(a(i,r(x.BaseText))),{}],major_label_policy:[r(g.LabelingPolicy),()=>new g.NoOverlap],color_mapper:[r(d.ColorMapper)],label_standoff:[e,5],margin:[e,30],padding:[e,10],major_tick_in:[e,5],major_tick_out:[e,0],minor_tick_in:[e,0],minor_tick_out:[e,0]}))),r.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n", + " function _(t,e,i,s,l){s();const o=t(1);var a;const n=t(119),r=t(20),c=t(120),h=(0,o.__importStar)(t(48));class _ extends n.TextAnnotationView{_get_location(){const t=this.model.offset,e=this.model.standoff/2;let i,s;const{bbox:l}=this.layout;switch(this.panel.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":s=l.top+e;break;case\"middle\":s=l.vcenter;break;case\"bottom\":s=l.bottom-e}switch(this.model.align){case\"left\":i=l.left+t;break;case\"center\":i=l.hcenter;break;case\"right\":i=l.right-t}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=l.left+e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.right-e}switch(this.model.align){case\"left\":s=l.bottom-t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.top+t}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=l.right-e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.left+e}switch(this.model.align){case\"left\":s=l.top+t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.bottom-t}}return[i,s]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),s=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,s)}_get_size(){const{text:t}=this.model,e=new c.TextBox({text:t});e.visuals=this.visuals.text.values();const{width:i,height:s}=e.size();return{width:i,height:0==s?0:2+s+this.model.standoff}}}i.TitleView=_,_.__name__=\"TitleView\";class d extends n.TextAnnotation{constructor(t){super(t)}}i.Title=d,a=d,d.__name__=\"Title\",a.prototype.default_view=_,a.mixins([h.Text,[\"border_\",h.Line],[\"background_\",h.Fill]]),a.define((({Number:t,String:e})=>({text:[e,\"\"],vertical_align:[r.VerticalAlign,\"bottom\"],align:[r.TextAlign,\"left\"],offset:[t,0],standoff:[t,10]}))),a.prototype._props.text_align.options.internal=!0,a.prototype._props.text_baseline.options.internal=!0,a.override({text_font_size:\"13px\",text_font_style:\"bold\",text_line_height:1,background_fill_color:null,border_line_color:null})},\n", + " function _(e,t,s,i,l){var n;i();const o=e(40),a=e(43),r=e(20),d=e(120),u=e(123),c=e(11);class h extends o.AnnotationView{update_layout(){const{panel:e}=this;this.layout=null!=e?new u.SideLayout(e,(()=>this.get_size()),!0):void 0}initialize(){super.initialize(),\"css\"==this.model.render_mode&&(this.el=(0,a.div)(),this.plot_view.canvas_view.add_overlay(this.el))}remove(){null!=this.el&&(0,a.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),\"css\"==this.model.render_mode?this.connect(this.model.change,(()=>this.render())):this.connect(this.model.change,(()=>this.request_render()))}render(){this.model.visible||\"css\"!=this.model.render_mode||(0,a.undisplay)(this.el),super.render()}_canvas_text(e,t,s,i,l){const n=new d.TextBox({text:t});n.angle=l,n.position={sx:s,sy:i},n.visuals=this.visuals.text.values();const{background_fill:o,border_line:a}=this.visuals;if(o.doit||a.doit){const{p0:t,p1:s,p2:i,p3:l}=n.rect();e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(s.x,s.y),e.lineTo(i.x,i.y),e.lineTo(l.x,l.y),e.closePath(),this.visuals.background_fill.apply(e),this.visuals.border_line.apply(e)}this.visuals.text.doit&&n.paint(e)}_css_text(e,t,s,i,l){const{el:n}=this;(0,c.assert)(null!=n),(0,a.undisplay)(n),n.textContent=t,this.visuals.text.set_value(e),n.style.position=\"absolute\",n.style.left=`${s}px`,n.style.top=`${i}px`,n.style.color=e.fillStyle,n.style.font=e.font,n.style.lineHeight=\"normal\",n.style.whiteSpace=\"pre\";const[o,r]=(()=>{switch(this.visuals.text.text_align.get_value()){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,u]=(()=>{switch(this.visuals.text.text_baseline.get_value()){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${r}, ${u})`;l&&(h+=`rotate(${l}rad)`),n.style.transformOrigin=`${o} ${d}`,n.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),n.style.backgroundColor=e.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),n.style.borderStyle=e.lineDash.length<2?\"solid\":\"dashed\",n.style.borderWidth=`${e.lineWidth}px`,n.style.borderColor=e.strokeStyle),(0,a.display)(n)}}s.TextAnnotationView=h,h.__name__=\"TextAnnotationView\";class _ extends o.Annotation{constructor(e){super(e)}}s.TextAnnotation=_,n=_,_.__name__=\"TextAnnotation\",n.define((()=>({render_mode:[r.RenderMode,\"canvas\"]})))},\n", + " function _(t,e,s,i,n){i();const h=t(65),o=t(121),r=t(9),a=t(8),c=t(122),_=t(22);s.text_width=(()=>{const t=document.createElement(\"canvas\").getContext(\"2d\");let e=\"\";return(s,i)=>(i!=e&&(e=i,t.font=i),t.measureText(s).width)})();class l{constructor(){this._position={sx:0,sy:0},this.font_size_scale=1,this.align=\"left\",this._base_font_size=13,this._x_anchor=\"left\",this._y_anchor=\"center\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}set position(t){this._position=t}get position(){return this._position}infer_text_height(){return\"ascent_descent\"}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new h.BBox({left:n,right:r,top:o,bottom:a})}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new c.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e.x),h(e.y)),t.lineTo(h(s.x),h(s.y)),t.lineTo(h(i.x),h(i.y)),t.lineTo(h(n.x),h(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e),h(s)),t.lineTo(h(e),h(s+n)),t.lineTo(h(e+i),h(s+n)),t.lineTo(h(e+i),h(s)),t.closePath(),t.stroke(),t.restore()}}s.GraphicsBox=l,l.__name__=\"GraphicsBox\";class x extends l{constructor({text:t}){super(),this.text=t}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const h=t.font,{font_size_scale:r,base_font_size:a}=this,c=(0,o.parse_css_font_size)(n);if(null!=c){let{value:t,unit:e}=c;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const l=`${i} ${n} ${h}`;this.font=l,this.color=(0,_.color2css)(e,s),this.line_height=t.line_height;const x=t.align;this._x_anchor=x;const u=t.baseline;this._y_anchor=(()=>{switch(u){case\"top\":return\"top\";case\"middle\":return\"center\";case\"bottom\":return\"bottom\";default:return\"baseline\"}})()}infer_text_height(){if(this.text.includes(\"\\n\"))return\"ascent_descent\";{function t(t){for(const e of new Set(t))if(!(\"0\"<=e&&e<=\"9\"))switch(e){case\",\":case\".\":case\"+\":case\"-\":case\"\\u2212\":case\"e\":continue;default:return!1}return!0}return t(this.text)?\"cap\":\"ascent_descent\"}}_text_line(t){var e;const s=null!==(e=this.text_height_metric)&&void 0!==e?e:this.infer_text_height(),i=(()=>{switch(s){case\"x\":case\"x_descent\":return t.x_height;case\"cap\":case\"cap_descent\":return t.cap_height;case\"ascent\":case\"ascent_descent\":return t.ascent}})(),n=(()=>{switch(s){case\"x\":case\"cap\":case\"ascent\":return 0;case\"x_descent\":case\"cap_descent\":case\"ascent_descent\":return t.descent}})();return{height:i+n,ascent:i,descent:n}}get nlines(){return this.text.split(\"\\n\").length}_size(){var t,e;const{font:i}=this,n=(0,o.font_metrics)(i),h=(this.line_height-1)*n.height,a=\"\"==this.text,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,i))),x=this._text_line(n).height*_,u=\"%\"==(null===(t=this.width)||void 0===t?void 0:t.unit)?this.width.value:1,p=\"%\"==(null===(e=this.height)||void 0===e?void 0:e.unit)?this.height.value:1;return{width:(0,r.max)(l)*u,height:a?0:(x+h*(_-1))*p,metrics:n}}_computed_position(t,e,s){const{width:i,height:n}=t,{sx:h,sy:o,x_anchor:r=this._x_anchor,y_anchor:c=this._y_anchor}=this.position;return{x:h-(()=>{if((0,a.isNumber)(r))return r*i;switch(r){case\"left\":return 0;case\"center\":return.5*i;case\"right\":return i}})(),y:o-(()=>{var t;if((0,a.isNumber)(c))return c*n;switch(c){case\"top\":return 0;case\"center\":return.5*n;case\"bottom\":return n;case\"baseline\":if(1!=s)return.5*n;switch(null!==(t=this.text_height_metric)&&void 0!==t?t:this.infer_text_height()){case\"x\":case\"x_descent\":return e.x_height;case\"cap\":case\"cap_descent\":return e.cap_height;case\"ascent\":case\"ascent_descent\":return e.ascent}}})()}}_rect(){const{width:t,height:e,metrics:s}=this._size(),i=this.text.split(\"\\n\").length,{x:n,y:o}=this._computed_position({width:t,height:e},s,i);return new h.BBox({x:n,y:o,width:t,height:e}).rect}paint(t){var e,i;const{font:n}=this,h=(0,o.font_metrics)(n),a=(this.line_height-1)*h.height,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,n))),x=this._text_line(h),u=x.height*_,p=\"%\"==(null===(e=this.width)||void 0===e?void 0:e.unit)?this.width.value:1,f=\"%\"==(null===(i=this.height)||void 0===i?void 0:i.unit)?this.height.value:1,g=(0,r.max)(l)*p,d=(u+a*(_-1))*f;t.save(),t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\";const{sx:b,sy:m}=this.position,{align:y}=this,{angle:w}=this;w&&(t.translate(b,m),t.rotate(w),t.translate(-b,-m));let{x:v,y:z}=this._computed_position({width:g,height:d},h,_);if(\"justify\"==y)for(let e=0;e<_;e++){let i=v;const h=c[e].split(\" \"),o=h.length,_=h.map((t=>(0,s.text_width)(t,n))),l=(g-(0,r.sum)(_))/(o-1);for(let e=0;e{switch(y){case\"left\":return 0;case\"center\":return.5*(g-l[e]);case\"right\":return g-l[e]}})();t.fillStyle=this.color,t.fillText(c[e],s,z+x.ascent),z+=x.height+a}t.restore()}}s.TextBox=x,x.__name__=\"TextBox\";class u extends l{constructor(t,e){super(),this.base=t,this.expo=e}get children(){return[this.base,this.expo]}set base_font_size(t){super.base_font_size=t,this.base.base_font_size=t,this.expo.base_font_size=t}set position(t){this._position=t;const e=this.base.size(),s=this.expo.size(),i=this._shift_scale()*e.height,n=Math.max(e.height,i+s.height);this.base.position={sx:0,x_anchor:\"left\",sy:n,y_anchor:\"bottom\"},this.expo.position={sx:e.width,x_anchor:\"left\",sy:i,y_anchor:\"bottom\"}}get position(){return this._position}set visuals(t){this.expo.font_size_scale=.7,this.base.visuals=t,this.expo.visuals=t}_shift_scale(){if(this.base instanceof x&&1==this.base.nlines){const{x_height:t,cap_height:e}=(0,o.font_metrics)(this.base.font);return t/e}return 2/3}infer_text_height(){return this.base.infer_text_height()}_rect(){const t=this.base.bbox(),e=this.expo.bbox(),s=t.union(e),{x:i,y:n}=this._computed_position();return s.translate(i,n).rect}_size(){const t=this.base.size(),e=this.expo.size();return{width:t.width+e.width,height:Math.max(t.height,this._shift_scale()*t.height+e.height)}}paint(t){t.save();const{angle:e}=this;if(e){const{sx:s,sy:i}=this.position;t.translate(s,i),t.rotate(e),t.translate(-s,-i)}const{x:s,y:i}=this._computed_position();t.translate(s,i),this.base.paint(t),this.expo.paint(t),t.restore()}paint_bbox(t){super.paint_bbox(t);const{x:e,y:s}=this._computed_position();t.save(),t.translate(e,s);for(const e of this.children)e.paint_bbox(t);t.restore()}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:h=this._y_anchor}=this.position;return{x:s-(()=>{if((0,a.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,a.isNumber)(h))return h*e;switch(h){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}}s.BaseExpo=u,u.__name__=\"BaseExpo\";class p{constructor(t){this.items=t}set base_font_size(t){for(const e of this.items)e.base_font_size=t}get length(){return this.items.length}set visuals(t){for(const e of this.items)e.visuals=t;const e={x:0,cap:1,ascent:2,x_descent:3,cap_descent:4,ascent_descent:5},s=(0,r.max_by)(this.items.map((t=>t.infer_text_height())),(t=>e[t]));for(const t of this.items)t.text_height_metric=s}set angle(t){for(const e of this.items)e.angle=t}max_size(){let t=0,e=0;for(const s of this.items){const i=s.size();t=Math.max(t,i.width),e=Math.max(e,i.height)}return{width:t,height:e}}}s.GraphicsBoxes=p,p.__name__=\"GraphicsBoxes\"},\n", + " function _(t,e,n,r,l){r();const a=t(11),c=(()=>{try{return\"undefined\"!=typeof OffscreenCanvas&&null!=new OffscreenCanvas(0,0).getContext(\"2d\")}catch(t){return!1}})()?(t,e)=>new OffscreenCanvas(t,e):(t,e)=>{const n=document.createElement(\"canvas\");return n.width=t,n.height=e,n},o=(()=>{const t=c(0,0).getContext(\"2d\");return e=>{t.font=e;const n=t.measureText(\"M\"),r=t.measureText(\"x\"),l=t.measureText(\"\\xc5\\u015ag|\"),c=l.fontBoundingBoxAscent,o=l.fontBoundingBoxDescent;if(null!=c&&null!=o)return{height:c+o,ascent:c,descent:o,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};const s=l.actualBoundingBoxAscent,u=l.actualBoundingBoxDescent;if(null!=s&&null!=u)return{height:s+u,ascent:s,descent:u,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};(0,a.unreachable)()}})(),s=(()=>{const t=c(0,0).getContext(\"2d\");return(e,n)=>{t.font=n;const r=t.measureText(e),l=r.actualBoundingBoxAscent,c=r.actualBoundingBoxDescent;if(null!=l&&null!=c)return{width:r.width,height:l+c,ascent:l,descent:c};(0,a.unreachable)()}})(),u=(()=>{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a=1)=>{e.font=l;const{width:c}=e.measureText(\"M\"),o=c*a,s=Math.ceil(o),u=Math.ceil(2*o),i=Math.ceil(1.5*o);n{let e=0;for(let n=0;n<=i;n++)for(let r=0;r{let e=t.length-4;for(let n=u;n>=i;n--)for(let r=0;r{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a,c=1)=>{e.font=a;const{width:o}=e.measureText(\"M\"),s=o*c,u=Math.ceil(s),i=Math.ceil(2*s),f=Math.ceil(1.5*s);(n{let e=0;for(let n=0;n<=f;n++)for(let r=0;r{let e=t.length-4;for(let n=i;n>=f;n--)for(let r=0;r{try{return o(\"normal 10px sans-serif\"),o}catch(t){return u}})(),h=(()=>{try{return s(\"A\",\"normal 10px sans-serif\"),s}catch(t){return i}})(),g=new Map;function d(t){let e=g.get(t);return null==e&&(e={font:f(t),glyphs:new Map},g.set(t,e)),e.font}n.font_metrics=d,n.glyph_metrics=function(t,e){let n=g.get(e);null==n&&(d(e),n=g.get(e));let r=n.glyphs.get(t);return null==r&&(r=h(t,e),n.glyphs.set(t,r)),r},n.parse_css_font_size=function(t){const e=t.match(/^\\s*(\\d+(\\.\\d+)?)(\\w+)\\s*$/);if(null!=e){const[,t,,n]=e,r=Number(t);if(isFinite(r))return{value:r,unit:n}}return null}},\n", + " function _(t,s,r,n,i){n();const{sin:e,cos:a}=Math;class h{constructor(t=1,s=0,r=0,n=1,i=0,e=0){this.a=t,this.b=s,this.c=r,this.d=n,this.e=i,this.f=e}toString(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return`matrix(${t}, ${s}, ${r}, ${n}, ${i}, ${e})`}static from_DOMMatrix(t){const{a:s,b:r,c:n,d:i,e,f:a}=t;return new h(s,r,n,i,e,a)}to_DOMMatrix(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new DOMMatrix([t,s,r,n,i,e])}clone(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new h(t,s,r,n,i,e)}get is_identity(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return 1==t&&0==s&&0==r&&1==n&&0==i&&0==e}apply_point(t){const[s,r]=this.apply(t.x,t.y);return{x:s,y:r}}apply_rect(t){return{p0:this.apply_point(t.p0),p1:this.apply_point(t.p1),p2:this.apply_point(t.p2),p3:this.apply_point(t.p3)}}apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this;return[r*t+i*s+a,n*t+e*s+h]}iv_apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this,c=t.length;for(let o=0;o{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=n&&\"fixed\"!=s)if(n==s){const n=t,s=_(t/e),r=_(h*e),g=h;Math.abs(i.width-n)+Math.abs(i.height-s)<=Math.abs(i.width-r)+Math.abs(i.height-g)?(t=n,h=s):(t=r,h=g)}else r(n,s)?h=_(t/e):t=_(h*e);else\"fixed\"==n?h=_(t/e):\"fixed\"==s&&(t=_(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,e=new s.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(e),r=this.clip_size(n,e),g=t(r.width),l=h(r.height),a=this.apply_aspect(e,{width:g,height:l});return Object.assign(Object.assign({},n),a)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new r.BBox({left:0,top:0,width:h,height:e});let s;if(null!=t.inner){const{left:i,top:n,right:g,bottom:l}=t.inner;s=new r.BBox({left:i,top:n,right:h-g,bottom:e-l})}this.set_geometry(n,s)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_size(i,t){function h(i,t,h,e){return null==h?h=0:(0,g.isNumber)(h)||(h=Math.round(h.percent*t)),null==e?e=1/0:(0,g.isNumber)(e)||(e=Math.round(e.percent*t)),a(h,l(i,e))}return{width:h(i.width,t.width,this.sizing.min_width,this.sizing.max_width),height:h(i.height,t.height,this.sizing.min_height,this.sizing.max_height)}}has_size_changed(){const{_dirty:i}=this;return this._dirty=!1,i}}h.Layoutable=o,o.__name__=\"Layoutable\";class d extends o{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;return{width:(()=>{const{width:h}=this.sizing;if(i.width==1/0)return null!=h?h:0;switch(t){case\"fixed\":return null!=h?h:0;case\"min\":return null!=h?l(i.width,h):0;case\"fit\":return null!=h?l(i.width,h):i.width;case\"max\":return null!=h?a(i.width,h):i.width}})(),height:(()=>{const{height:t}=this.sizing;if(i.height==1/0)return null!=t?t:0;switch(h){case\"fixed\":return null!=t?t:0;case\"min\":return null!=t?l(i.height,t):0;case\"fit\":return null!=t?l(i.height,t):i.height;case\"max\":return null!=t?a(i.height,t):i.height}})()}}}h.LayoutItem=d,d.__name__=\"LayoutItem\";class u extends o{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=u,u.__name__=\"ContentLayoutable\"},\n", + " function _(e,t,s,a,_){a();const r=e(62),n=e(61),g=e(58),i=e(63),c=e(67),h=e(65),l=e(13),o=e(11);class x{constructor(e,t,s,a,_={},r={},n={},g={}){this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=r,this.extra_x_scales=n,this.extra_y_scales=g,this._bbox=new h.BBox,(0,o.assert)(null==e.source_range&&null==e.target_range),(0,o.assert)(null==t.source_range&&null==t.target_range),this._configure_scales()}get bbox(){return this._bbox}_get_ranges(e,t){return new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s,a){var _;const g=new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e}))),h=new Map;for(const[t,l]of s){if(l instanceof c.FactorRange!=e instanceof r.CategoricalScale)throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const s=(null!==(_=g.get(t))&&void 0!==_?_:e).clone();s.setv({source_range:l,target_range:a}),h.set(t,s)}return h}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new g.Range1d({start:e.left,end:e.right}),this._y_target=new g.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this.extra_x_scales,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this.extra_y_scales,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}set_geometry(e){this._bbox=e,this._update_scales()}get x_target(){return this._x_target}get y_target(){return this._y_target}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return(0,l.to_object)(this.x_scales)}get yscales(){return(0,l.to_object)(this.y_scales)}}s.CartesianFrame=x,x.__name__=\"CartesianFrame\"},\n", + " function _(i,s,x,A,o){A(),o(\"Axis\",i(128).Axis),o(\"CategoricalAxis\",i(140).CategoricalAxis),o(\"ContinuousAxis\",i(143).ContinuousAxis),o(\"DatetimeAxis\",i(144).DatetimeAxis),o(\"LinearAxis\",i(145).LinearAxis),o(\"LogAxis\",i(162).LogAxis),o(\"MercatorAxis\",i(165).MercatorAxis)},\n", + " function _(t,e,i,s,a){s();const o=t(1);var l;const n=t(129),_=t(130),r=t(131),h=t(132),c=(0,o.__importStar)(t(48)),b=t(20),u=t(24),m=t(123),d=t(9),x=t(13),f=t(8),g=t(120),p=t(67),v=t(133),w=t(113),j=t(11),k=t(8),y=t(134),{abs:z}=Math;class M extends n.GuideRendererView{constructor(){super(...arguments),this._axis_label_view=null,this._major_label_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this._init_axis_label(),await this._init_major_labels()}async _init_axis_label(){const{axis_label:t}=this.model;if(null!=t){const e=(0,k.isString)(t)?(0,y.parse_delimited_string)(t):t;this._axis_label_view=await(0,w.build_view)(e,{parent:this})}else this._axis_label_view=null}async _init_major_labels(){const{major_label_overrides:t}=this.model;for(const[e,i]of(0,x.entries)(t)){const t=(0,k.isString)(i)?(0,y.parse_delimited_string)(i):i;this._major_label_views.set(e,await(0,w.build_view)(t,{parent:this}))}}update_layout(){this.layout=new m.SideLayout(this.panel,(()=>this.get_size()),!0),this.layout.on_resize((()=>this._coordinates=void 0))}get_size(){const{visible:t,fixed_location:e}=this.model;if(t&&null==e&&this.is_renderable){const{extents:t}=this;return{width:0,height:Math.round(t.tick+t.tick_label+t.axis_label)}}return{width:0,height:0}}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const{tick_coords:e,extents:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,i),this._draw_major_ticks(s,i,e),this._draw_minor_ticks(s,i,e),this._draw_major_labels(s,i,e),this._draw_axis_label(s,i,e),null===(t=this._paint)||void 0===t||t.call(this,s,i,e),s.restore()}connect_signals(){super.connect_signals();const{axis_label:t,major_label_overrides:e}=this.model.properties;this.on_change(t,(async()=>{var t;null===(t=this._axis_label_view)||void 0===t||t.remove(),await this._init_axis_label()})),this.on_change(e,(async()=>{for(const t of this._major_label_views.values())t.remove();await this._init_major_labels()})),this.connect(this.model.change,(()=>this.plot_view.request_layout()))}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,o]=this.coordinates.map_to_screen(i,s),[l,n]=this.normals,[_,r]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath();for(let e=0;e0?s+i+3:0}_draw_axis_label(t,e,i){if(null==this._axis_label_view||null!=this.model.fixed_location)return;const[s,a]=(()=>{const{bbox:t}=this.layout;switch(this.panel.side){case\"above\":return[t.hcenter,t.bottom];case\"below\":return[t.hcenter,t.top];case\"left\":return[t.right,t.vcenter];case\"right\":return[t.left,t.vcenter]}})(),[o,l]=this.normals,n=e.tick+e.tick_label+this.model.axis_label_standoff,{vertical_align:_,align:r}=this.panel.get_label_text_heuristics(\"parallel\"),h={sx:s+o*n,sy:a+l*n,x_anchor:r,y_anchor:_},c=this._axis_label_view.graphics();c.visuals=this.visuals.axis_label_text.values(),c.angle=this.panel.get_label_angle_heuristic(\"parallel\"),this.plot_view.base_font_size&&(c.base_font_size=this.plot_view.base_font_size),c.position=h,c.align=r,c.paint(t)}_draw_ticks(t,e,i,s,a){if(!a.doit)return;const[o,l]=e,[n,_]=this.coordinates.map_to_screen(o,l),[r,h]=this.normals,[c,b]=this.offsets,[u,m]=[r*(c-i),h*(b-i)],[d,x]=[r*(c+s),h*(b+s)];a.set_value(t),t.beginPath();for(let e=0;et.bbox())),M=(()=>{const[t]=this.ranges;return t.is_reversed?0==this.dimension?(t,e)=>z[t].left-z[e].right:(t,e)=>z[e].top-z[t].bottom:0==this.dimension?(t,e)=>z[e].left-z[t].right:(t,e)=>z[t].top-z[e].bottom})(),{major_label_policy:O}=this.model,T=O.filter(k,z,M),A=[...T.ones()];if(0!=A.length){const t=this.parent.canvas_view.bbox,e=e=>{const i=z[e];if(i.left<0){const t=-i.left,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sx:s.sx+t})}else if(i.right>t.width){const s=i.right-t.width,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sx:a.sx-s})}},i=e=>{const i=z[e];if(i.top<0){const t=-i.top,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sy:s.sy+t})}else if(i.bottom>t.height){const s=i.bottom-t.height,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sy:a.sy-s})}},s=A[0],a=A[A.length-1];0==this.dimension?(e(s),e(a)):(i(s),i(a))}for(const e of T){y[e].paint(t)}}_tick_extent(){return this.model.major_tick_out}_tick_label_extents(){const t=this.tick_coords.major,e=this.compute_labels(t[this.dimension]),i=this.model.major_label_orientation,s=this.model.major_label_standoff,a=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,s,a)]}get extents(){const t=this._tick_label_extents();return{tick:this._tick_extent(),tick_labels:t,tick_label:(0,d.sum)(t),axis_label:this._axis_label_extent()}}_oriented_labels_extent(t,e,i,s){if(0==t.length||!s.doit)return 0;const a=this.panel.get_label_angle_heuristic(e);t.visuals=s.values(),t.angle=a,t.base_font_size=this.plot_view.base_font_size;const o=t.max_size(),l=0==this.dimension?o.height:o.width;return l>0?i+l+3:0}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.format_graphics(t,this),{_major_label_views:i}=this,s=new Set;for(let a=0;az(l-n)?(t=r(_(a,o),l),s=_(r(a,o),n)):(t=_(a,o),s=r(a,o)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=[new Array(2),new Array(2)];return o[t][0]=Math.max(s,i.min),o[t][1]=Math.min(a,i.max),o[t][0]>o[t][1]&&(o[t][0]=o[t][1]=NaN),o[e][0]=this.loc,o[e][1]=this.loc,o}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=this.model.ticker.get_ticks(s,a,i,this.loc),l=o.major,n=o.minor,_=[[],[]],r=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(_[t].push(l[i]),_[e].push(this.loc));for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));return{major:_,minor:r}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if((0,f.isNumber)(t))return t;const[,e]=this.ranges;if(e instanceof p.FactorRange)return e.synthetic(t);(0,j.unreachable)()}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}remove(){var t;null===(t=this._axis_label_view)||void 0===t||t.remove();for(const t of this._major_label_views.values())t.remove();super.remove()}has_finished(){if(!super.has_finished())return!1;if(null!=this._axis_label_view&&!this._axis_label_view.has_finished())return!1;for(const t of this._major_label_views.values())if(!t.has_finished())return!1;return!0}}i.AxisView=M,M.__name__=\"AxisView\";class O extends n.GuideRenderer{constructor(t){super(t)}}i.Axis=O,l=O,O.__name__=\"Axis\",l.prototype.default_view=M,l.mixins([[\"axis_\",c.Line],[\"major_tick_\",c.Line],[\"minor_tick_\",c.Line],[\"major_label_\",c.Text],[\"axis_label_\",c.Text]]),l.define((({Any:t,Int:e,Number:i,String:s,Ref:a,Dict:o,Tuple:l,Or:n,Nullable:c,Auto:u})=>({bounds:[n(l(i,i),u),\"auto\"],ticker:[a(_.Ticker)],formatter:[a(r.TickFormatter)],axis_label:[c(n(s,a(v.BaseText))),null],axis_label_standoff:[e,5],major_label_standoff:[e,5],major_label_orientation:[n(b.TickLabelOrientation,i),\"horizontal\"],major_label_overrides:[o(n(s,a(v.BaseText))),{}],major_label_policy:[a(h.LabelingPolicy),()=>new h.AllLabels],major_tick_in:[i,2],major_tick_out:[i,6],minor_tick_in:[i,0],minor_tick_out:[i,4],fixed_location:[c(n(i,t)),null]}))),l.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})},\n", + " function _(e,r,d,n,i){var s;n();const _=e(41);class u extends _.RendererView{}d.GuideRendererView=u,u.__name__=\"GuideRendererView\";class c extends _.Renderer{constructor(e){super(e)}}d.GuideRenderer=c,s=c,c.__name__=\"GuideRenderer\",s.override({level:\"guide\"})},\n", + " function _(c,e,n,s,o){s();const r=c(53);class t extends r.Model{constructor(c){super(c)}}n.Ticker=t,t.__name__=\"Ticker\"},\n", + " function _(t,o,r,e,c){e();const n=t(53),a=t(120);class m extends n.Model{constructor(t){super(t)}format_graphics(t,o){return this.doFormat(t,o).map((t=>new a.TextBox({text:t})))}compute(t,o){return this.doFormat([t],null!=o?o:{loc:0})[0]}v_compute(t,o){return this.doFormat(t,null!=o?o:{loc:0})}}r.TickFormatter=m,m.__name__=\"TickFormatter\"},\n", + " function _(e,n,s,t,i){var c,r;t();const l=e(53),o=e(13),a=e(34),u=e(8),d=e(24);class _ extends l.Model{constructor(e){super(e)}}s.LabelingPolicy=_,_.__name__=\"LabelingPolicy\";class f extends _{constructor(e){super(e)}filter(e,n,s){return e}}s.AllLabels=f,f.__name__=\"AllLabels\";class m extends _{constructor(e){super(e)}filter(e,n,s){const{min_distance:t}=this;let i=null;for(const n of e)null!=i&&s(i,n)({min_distance:[e,5]})));class b extends _{constructor(e){super(e)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}get func(){const e=(0,a.use_strict)(this.code);return new d.GeneratorFunction(\"indices\",\"bboxes\",\"distance\",...this.names,e)}filter(e,n,s){const t=Object.create(null),i=this.func.call(t,e,n,s,...this.values);let c=i.next();if(c.done&&void 0!==c.value){const{value:n}=c;return n instanceof d.Indices?n:void 0===n?e:(0,u.isIterable)(n)?d.Indices.from_indices(e.size,n):d.Indices.all_unset(e.size)}{const n=[];do{n.push(c.value),c=i.next()}while(!c.done);return d.Indices.from_indices(e.size,n)}}}s.CustomLabelingPolicy=b,r=b,b.__name__=\"CustomLabelingPolicy\",r.define((({Unknown:e,String:n,Dict:s})=>({args:[s(e),{}],code:[n,\"\"]})))},\n", + " function _(e,s,t,n,a){var _;n();const x=e(53),c=e(42);class i extends c.View{}t.BaseTextView=i,i.__name__=\"BaseTextView\";class o extends x.Model{constructor(e){super(e)}}t.BaseText=o,_=o,o.__name__=\"BaseText\",_.define((({String:e})=>({text:[e]})))},\n", + " function _(n,e,t,i,r){i();const s=n(135),l=n(139),d=[{start:\"$$\",end:\"$$\",inline:!1},{start:\"\\\\[\",end:\"\\\\]\",inline:!1},{start:\"\\\\(\",end:\"\\\\)\",inline:!0}];t.parse_delimited_string=function(n){for(const e of d){const t=n.indexOf(e.start),i=t+e.start.length;if(0==t){const t=n.indexOf(e.end,i),r=t;if(t==n.length-e.end.length)return new s.TeX({text:n.slice(i,r),inline:e.inline});break}}return new l.PlainText({text:n})}},\n", + " function _(t,e,s,i,n){var o,r,a;i();const h=t(8),_=t(136),l=t(22),c=t(120),d=t(121),u=t(122),g=t(65),p=t(133),x=t(137);class m extends p.BaseTextView{constructor(){super(...arguments),this._position={sx:0,sy:0},this.align=\"left\",this._x_anchor=\"left\",this._y_anchor=\"center\",this._base_font_size=13,this.font_size_scale=1,this.svg_image=null}graphics(){return this}infer_text_height(){return\"ascent_descent\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}get has_image_loaded(){return null!=this.svg_image}_rect(){const{width:t,height:e}=this._size(),{x:s,y:i}=this._computed_position();return new g.BBox({x:s,y:i,width:t,height:e}).rect}set position(t){this._position=t}get position(){return this._position}get text(){return this.model.text}get provider(){return x.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>this.load_image())),\"loaded\"==this.provider.status&&await this.load_image()}connect_signals(){super.connect_signals(),this.on_change(this.model.properties.text,(()=>this.load_image()))}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const o=t.font,{font_size_scale:r,_base_font_size:a}=this,h=(0,d.parse_css_font_size)(n);if(null!=h){let{value:t,unit:e}=h;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const _=`${i} ${n} ${o}`;this.font=_,this.color=(0,l.color2css)(e,s)}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:o=this._y_anchor}=this.position;return{x:s-(()=>{if((0,h.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,h.isNumber)(o))return o*e;switch(o){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}get_text_dimensions(){return{width:(0,c.text_width)(this.model.text,this.font),height:(0,d.font_metrics)(this.font).height}}get_image_dimensions(){var t,e,s,i;const n=parseFloat(null!==(e=null===(t=this.svg_element.getAttribute(\"height\"))||void 0===t?void 0:t.replace(/([A-z])/g,\"\"))&&void 0!==e?e:\"0\"),o=parseFloat(null!==(i=null===(s=this.svg_element.getAttribute(\"width\"))||void 0===s?void 0:s.replace(/([A-z])/g,\"\"))&&void 0!==i?i:\"0\");return{width:(0,d.font_metrics)(this.font).x_height*o,height:(0,d.font_metrics)(this.font).x_height*n}}_size(){return this.has_image_loaded?this.get_image_dimensions():this.get_text_dimensions()}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new g.BBox({left:n,right:r,top:o,bottom:a})}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new u.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e.x),o(e.y)),t.lineTo(o(s.x),o(s.y)),t.lineTo(o(i.x),o(i.y)),t.lineTo(o(n.x),o(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e),o(s)),t.lineTo(o(e),o(s+n)),t.lineTo(o(e+i),o(s+n)),t.lineTo(o(e+i),o(s)),t.closePath(),t.stroke(),t.restore()}async load_image(){if(null==this.provider.MathJax)return null;const t=this._process_text(this.model.text);if(null==t)return this._has_finished=!0,null;const e=t.children[0];this.svg_element=e,e.setAttribute(\"font\",this.font),e.setAttribute(\"stroke\",this.color);const s=e.outerHTML,i=new Blob([s],{type:\"image/svg+xml\"}),n=URL.createObjectURL(i);try{this.svg_image=await(0,_.load_image)(n)}finally{URL.revokeObjectURL(n)}return this.parent.request_layout(),this.svg_image}paint(t){t.save();const{sx:e,sy:s}=this.position;this.angle&&(t.translate(e,s),t.rotate(this.angle),t.translate(-e,-s));const{x:i,y:n}=this._computed_position();if(null!=this.svg_image){const{width:e,height:s}=this.get_image_dimensions();t.drawImage(this.svg_image,i,n,e,s)}else t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\",t.fillText(this.model.text,i,n+(0,d.font_metrics)(this.font).ascent);t.restore(),this._has_finished||\"failed\"!=this.provider.status&&!this.has_image_loaded||(this._has_finished=!0,this.parent.notify_finished_after_paint())}}s.MathTextView=m,m.__name__=\"MathTextView\";class f extends p.BaseText{constructor(t){super(t)}}s.MathText=f,f.__name__=\"MathText\";class v extends m{_process_text(t){}}s.AsciiView=v,v.__name__=\"AsciiView\";class y extends f{constructor(t){super(t)}}s.Ascii=y,o=y,y.__name__=\"Ascii\",o.prototype.default_view=v;class w extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.mathml2svg(t.trim())}}s.MathMLView=w,w.__name__=\"MathMLView\";class b extends f{constructor(t){super(t)}}s.MathML=b,r=b,b.__name__=\"MathML\",r.prototype.default_view=w;class M extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.tex2svg(t,void 0,this.model.macros)}}s.TeXView=M,M.__name__=\"TeXView\";class T extends f{constructor(t){super(t)}}s.TeX=T,a=T,T.__name__=\"TeX\",a.prototype.default_view=M,a.define((({Boolean:t,Number:e,String:s,Dict:i,Tuple:n,Or:o})=>({macros:[i(o(s,n(s,e))),{}],inline:[t,!1]})))},\n", + " function _(i,e,t,s,o){s();const a=i(19);t.load_image=async function(i,e){return new n(i,e).promise};class n{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:s=1}=e;this.promise=new Promise(((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const s=`unable to load ${i} image after ${t} attempts`;if(a.logger.warn(s),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());a.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout((()=>this._image.src=i),s)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i}))}get finished(){return this._finished}get image(){if(this._finished)return this._image;throw new Error(\"not loaded yet\")}}t.ImageLoader=n,n.__name__=\"ImageLoader\"},\n", + " function _(t,e,a,s,n){var r=this&&this.__createBinding||(Object.create?function(t,e,a,s){void 0===s&&(s=a),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[a]}})}:function(t,e,a,s){void 0===s&&(s=a),t[s]=e[a]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),d=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)\"default\"!==a&&Object.prototype.hasOwnProperty.call(t,a)&&r(e,t,a);return i(e,t),e};s();const o=t(15),u=t(138);class c{constructor(){this.ready=new o.Signal0(this,\"ready\"),this.status=\"not_started\"}}a.MathJaxProvider=c,c.__name__=\"MathJaxProvider\";class h extends c{get MathJax(){return null}async fetch(){this.status=\"failed\"}}a.NoProvider=h,h.__name__=\"NoProvider\";class l extends c{get MathJax(){return\"undefined\"!=typeof MathJax?MathJax:null}async fetch(){const t=document.createElement(\"script\");t.src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js\",t.onload=()=>{this.status=\"loaded\",this.ready.emit()},t.onerror=()=>{this.status=\"failed\"},this.status=\"loading\",document.head.appendChild(t)}}a.CDNProvider=l,l.__name__=\"CDNProvider\";class _ extends c{get MathJax(){return this._mathjax}async fetch(){this.status=\"loading\";try{const e=await(0,u.load_module)(Promise.resolve().then((()=>d(t(519)))));this._mathjax=e,this.status=\"loaded\",this.ready.emit()}catch(t){this.status=\"failed\"}}}a.BundleProvider=_,_.__name__=\"BundleProvider\",a.default_provider=new _},\n", + " function _(n,r,o,t,c){t(),o.load_module=async function(n){try{return await n}catch(n){if((r=n)instanceof Error&&\"code\"in r&&\"MODULE_NOT_FOUND\"===n.code)return null;throw n}var r}},\n", + " function _(e,t,i,n,s){var a;n();const x=e(133),_=e(120);class l extends x.BaseTextView{initialize(){super.initialize(),this._has_finished=!0}graphics(){return new _.TextBox({text:this.model.text})}}i.PlainTextView=l,l.__name__=\"PlainTextView\";class r extends x.BaseText{constructor(e){super(e)}}i.PlainText=r,a=r,r.__name__=\"PlainText\",a.prototype.default_view=l},\n", + " function _(t,s,o,e,i){e();const r=t(1);var a;const l=t(128),_=t(141),n=t(142),p=(0,r.__importStar)(t(48)),c=t(20),h=t(120),m=t(8);class u extends l.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&pnew h.GraphicsBoxes(t.map((t=>(0,m.isString)(t)?new h.TextBox({text:t}):t))),_=t=>l(this.model.formatter.doFormat(t,this));if(1==t.levels){const t=_(i.major);a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){const t=_(i.major.map((t=>t[1])));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=_(i.major.map((t=>t[2]))),s=i.mids.map((t=>t[1]));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(s),r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map((()=>this.loc)),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map((()=>this.loc))),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map((()=>this.loc))),a}}o.CategoricalAxisView=u,u.__name__=\"CategoricalAxisView\";class d extends l.Axis{constructor(t){super(t)}}o.CategoricalAxis=d,a=d,d.__name__=\"CategoricalAxis\",a.prototype.default_view=u,a.mixins([[\"separator_\",p.Line],[\"group_\",p.Text],[\"subgroup_\",p.Text]]),a.define((({Number:t,Or:s})=>({group_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"],subgroup_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"]}))),a.override({ticker:()=>new _.CategoricalTicker,formatter:()=>new n.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})},\n", + " function _(t,c,o,s,e){s();const r=t(130);class i extends r.Ticker{constructor(t){super(t)}get_ticks(t,c,o,s){var e,r;return{major:this._collect(o.factors,o,t,c),minor:[],tops:this._collect(null!==(e=o.tops)&&void 0!==e?e:[],o,t,c),mids:this._collect(null!==(r=o.mids)&&void 0!==r?r:[],o,t,c)}}_collect(t,c,o,s){const e=[];for(const r of t){const t=c.synthetic(r);t>o&&tnew _.DatetimeTicker,formatter:()=>new m.DatetimeTickFormatter})},\n", + " function _(e,i,s,n,r){var t;n();const a=e(143),o=e(146),c=e(147);class _ extends a.ContinuousAxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class u extends a.ContinuousAxis{constructor(e){super(e)}}s.LinearAxis=u,t=u,u.__name__=\"LinearAxis\",t.prototype.default_view=_,t.override({ticker:()=>new c.BasicTicker,formatter:()=>new o.BasicTickFormatter})},\n", + " function _(i,t,e,n,o){var r;n();const s=i(131),c=i(34);function _(i){let t=\"\";for(const e of i)t+=\"-\"==e?\"\\u2212\":e;return t}e.unicode_replace=_;class a extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,n=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const o of i){const i=Math.abs(o);if(!(i<=n)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){return t?i.map((i=>_(i.toExponential(e)))):i.map((i=>_((0,c.to_fixed)(i,e))))}_auto_precision(i,t){const e=new Array(i.length),n=this.last_precision<=15;i:for(let o=this.last_precision;n?o<=15:o>=1;n?o++:o--){if(t){e[0]=i[0].toExponential(o);for(let t=1;t({precision:[n(t,e),\"auto\"],use_scientific:[i,!0],power_limit_high:[t,5],power_limit_low:[t,-3]})))},\n", + " function _(c,e,s,i,n){i();const r=c(148);class t extends r.AdaptiveTicker{constructor(c){super(c)}}s.BasicTicker=t,t.__name__=\"BasicTicker\"},\n", + " function _(t,i,a,s,e){var n;s();const r=t(149),_=t(9),l=t(10);class h extends r.ContinuousTicker{constructor(t){super(t)}get_min_interval(){return this.min_interval}get_max_interval(){var t;return null!==(t=this.max_interval)&&void 0!==t?t:1/0}initialize(){super.initialize();const t=(0,_.nth)(this.mantissas,-1)/this.base,i=(0,_.nth)(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,a){const s=i-t,e=this.get_ideal_interval(t,i,a),n=Math.floor((0,l.log)(e/this.base_factor,this.base)),r=this.base**n*this.base_factor,h=this.extended_mantissas,m=h.map((t=>Math.abs(a-s/(t*r)))),v=h[(0,_.argmin)(m)]*r;return(0,l.clamp)(v,this.get_min_interval(),this.get_max_interval())}}a.AdaptiveTicker=h,n=h,h.__name__=\"AdaptiveTicker\",n.define((({Number:t,Array:i,Nullable:a})=>({base:[t,10],mantissas:[i(t),[1,2,5]],min_interval:[t,0],max_interval:[a(t),null]})))},\n", + " function _(t,n,i,s,e){var o;s();const r=t(130),c=t(9);class _ extends r.Ticker{constructor(t){super(t)}get_ticks(t,n,i,s){return this.get_ticks_no_defaults(t,n,s,this.desired_num_ticks)}get_ticks_no_defaults(t,n,i,s){const e=this.get_interval(t,n,s),o=Math.floor(t/e),r=Math.ceil(n/e);let _;_=isFinite(o)&&isFinite(r)?(0,c.range)(o,r+1):[];const u=_.map((t=>t*e)).filter((i=>t<=i&&i<=n)),a=this.num_minor_ticks,f=[];if(a>0&&u.length>0){const i=e/a,s=(0,c.range)(0,a).map((t=>t*i));for(const i of s.slice(1)){const s=u[0]-i;t<=s&&s<=n&&f.push(s)}for(const i of u)for(const e of s){const s=i+e;t<=s&&s<=n&&f.push(s)}}return{major:u,minor:f}}get_ideal_interval(t,n,i){return(n-t)/i}}i.ContinuousTicker=_,o=_,_.__name__=\"ContinuousTicker\",o.define((({Int:t})=>({num_minor_ticks:[t,5],desired_num_ticks:[t,6]})))},\n", + " function _(s,t,e,n,i){n();var r;const o=(0,s(1).__importDefault)(s(151)),a=s(131),c=s(19),u=s(152),m=s(9),h=s(8);function d(s){return(0,o.default)(s,\"%Y %m %d %H %M %S\").split(/\\s+/).map((s=>parseInt(s,10)))}function l(s,t){if((0,h.isFunction)(t))return t(s);{const e=(0,u.sprintf)(\"$1%06d\",function(s){return Math.round(s/1e3%1*1e6)}(s));return-1==(t=t.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?t:(0,o.default)(s,t)}}const f=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends a.TickFormatter{constructor(s){super(s),this.strip_leading_zeros=!0}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const s=+(0,o.default)(new Date),t=function(t){const e=t.map((t=>l(s,t).length)),n=(0,m.sort_by)((0,m.zip)(e,t),(([s])=>s));return(0,m.unzip)(n)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}}_get_resolution_str(s,t){const e=1.1*s;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return t>=60?\"minsec\":\"seconds\";case!(e<3600):return t>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(s,t){if(0==s.length)return[];const e=Math.abs(s[s.length-1]-s[0])/1e3,n=e/(s.length-1),i=this._get_resolution_str(n,e),[,[r]]=this._width_formats[i],o=[],a=f.indexOf(i),u={};for(const s of f)u[s]=0;u.seconds=5,u.minsec=4,u.minutes=4,u.hourmin=3,u.hours=3;for(const t of s){let s,e;try{e=d(t),s=l(t,r)}catch(s){c.logger.warn(`unable to format tick for timestamp value ${t}`),c.logger.warn(` - ${s}`),o.push(\"ERR\");continue}let n=!1,m=a;for(;0==e[u[f[m]]];){let r;if(m+=1,m==f.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!n){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){r=this._width_formats[f[a-1]][1][0],s=l(t,r);break}n=!0}r=this._width_formats[f[m]][1][0],s=l(t,r)}if(this.strip_leading_zeros){let t=s.replace(/^0+/g,\"\");t!=s&&isNaN(parseInt(t))&&(t=`0${t}`),o.push(t)}else o.push(s)}return o}}e.DatetimeTickFormatter=_,r=_,_.__name__=\"DatetimeTickFormatter\",r.define((({String:s,Array:t})=>({microseconds:[t(s),[\"%fus\"]],milliseconds:[t(s),[\"%3Nms\",\"%S.%3Ns\"]],seconds:[t(s),[\"%Ss\"]],minsec:[t(s),[\":%M:%S\"]],minutes:[t(s),[\":%M\",\"%Mm\"]],hourmin:[t(s),[\"%H:%M\"]],hours:[t(s),[\"%Hh\",\"%H:%M\"]],days:[t(s),[\"%m/%d\",\"%a%d\"]],months:[t(s),[\"%m/%Y\",\"%b %Y\"]],years:[t(s),[\"%Y\"]]})))},\n", + " function _(e,t,n,r,o){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n", + " function _(r,t,n,e,i){e();const u=r(1),a=(0,u.__importStar)(r(153)),f=r(154),o=(0,u.__importDefault)(r(151)),l=r(21),s=r(8);function c(r,...t){return(0,f.sprintf)(r,...t)}function m(r,t,n){if((0,s.isNumber)(r)){return c((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return`${r}`}function _(r,t,e){if(null==t)return m;if(null!=e&&r in e){const t=e[r];if((0,s.isString)(t)){if(t in n.DEFAULT_FORMATTERS)return n.DEFAULT_FORMATTERS[t];throw new Error(`Unknown tooltip field formatter type '${t}'`)}return function(r,n,e){return t.format(r,n,e)}}return n.DEFAULT_FORMATTERS.numeral}function p(r,t,n){const e=t.get_column(r);if(null==e)return null;if((0,s.isNumber)(n))return e[n];const i=e[n.index];if((0,s.isTypedArray)(i)||(0,s.isArray)(i)){if((0,s.isArray)(i[0])){return i[n.dim2][n.dim1]}return i[n.flat_index]}return i}function d(r,t,n,e){if(\"$\"==r[0]){return function(r,t){if(r in t)return t[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),e)}return p(r.substring(1).replace(/[{}]/g,\"\"),t,n)}n.FormatterType=(0,l.Enum)(\"numeral\",\"printf\",\"datetime\"),n.DEFAULT_FORMATTERS={numeral:(r,t,n)=>a.format(r,t),datetime:(r,t,n)=>(0,o.default)(r,t),printf:(r,t,n)=>c(t,r)},n.sprintf=c,n.basic_formatter=m,n.get_formatter=_,n._get_column_value=p,n.get_value=d,n.replace_placeholders=function(r,t,n,e,i={},u){let a,f;if((0,s.isString)(r)?(a=r,f=!1):(a=r.html,f=!0),a=a.replace(/@\\$name/g,(r=>`@{${i.name}}`)),a=a.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,((r,a,o)=>{const l=d(a,t,n,i);if(null==l)return u?u(\"???\"):\"???\";if(\"safe\"==o)return f=!0,`${l}`;const s=`${_(a,o,e)(l,o,i)}`;return u?u(s):s})),f){return[...(new DOMParser).parseFromString(a,\"text/html\").body.childNodes]}return a}},\n", + " function _(e,n,t,r,i){\n", + " /*!\n", + " * numbro.js\n", + " * version : 1.6.2\n", + " * author : Företagsplatsen AB\n", + " * license : MIT\n", + " * http://www.foretagsplatsen.se\n", + " */\n", + " var a,o={},l=o,u=\"en-US\",c=null,s=\"0,0\";void 0!==n&&n.exports;function f(e){this._value=e}function d(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+d(i-r.length),n>0&&(a+=\".\"+d(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function p(e,n,t){var r;return r=n.indexOf(\"$\")>-1?function(e,n,t){var r,i,a=n,l=a.indexOf(\"$\"),c=a.indexOf(\"(\"),s=a.indexOf(\"+\"),f=a.indexOf(\"-\"),d=\"\",h=\"\";-1===a.indexOf(\"$\")?\"infix\"===o[u].currency.position?(h=o[u].currency.symbol,o[u].currency.spaceSeparated&&(h=\" \"+h+\" \")):o[u].currency.spaceSeparated&&(d=\" \"):a.indexOf(\" $\")>-1?(d=\" \",a=a.replace(\" $\",\"\")):a.indexOf(\"$ \")>-1?(d=\" \",a=a.replace(\"$ \",\"\")):a=a.replace(\"$\",\"\");if(i=m(e,a,t,h),-1===n.indexOf(\"$\"))switch(o[u].currency.position){case\"postfix\":i.indexOf(\")\")>-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;break;case\"infix\":break;case\"prefix\":i.indexOf(\"(\")>-1||i.indexOf(\"-\")>-1?(i=i.split(\"\"),r=Math.max(c,f)+1,i.splice(r,0,o[u].currency.symbol+d),i=i.join(\"\")):i=o[u].currency.symbol+d+i;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else l<=1?i.indexOf(\"(\")>-1||i.indexOf(\"+\")>-1||i.indexOf(\"-\")>-1?(r=1,(l-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;return i}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=m(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):m(e,n,t),r}function m(e,n,t,r){var i,a,l,s,f,d,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==c)return c;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(f=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(d=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,f)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===d?0:3*~~(d/3)-d)<0?M+3:M,i=0;i=Math.pow(10,12)&&!D||j?(k+=o[u].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=o[u].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=o[u].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=o[u].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(a=Math.pow(1024,s),l=Math.pow(1024,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(a=Math.pow(1e3,s),l=Math.pow(1e3,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),o[u].ordinal&&(L+=o[u].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?h(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?h(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):h(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:o[u].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=h(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+o[u].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,r){return null!=t&&t!==a.culture()&&a.setCulture(t),p(Number(e),null!=n?n:s,null==r?Math.round:r)}}},\n", + " function _(e,n,t,r,i){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n", + " function _(e,n,i,a,s){var r;a();const t=e(9),c=e(148),m=e(156),_=e(157),k=e(160),o=e(161),T=e(159);class w extends m.CompositeTicker{constructor(e){super(e)}}i.DatetimeTicker=w,r=w,w.__name__=\"DatetimeTicker\",r.override({num_minor_ticks:0,tickers:()=>[new c.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*T.ONE_MILLI,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:T.ONE_SECOND,max_interval:30*T.ONE_MINUTE,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:T.ONE_HOUR,max_interval:12*T.ONE_HOUR,num_minor_ticks:0}),new _.DaysTicker({days:(0,t.range)(1,32)}),new _.DaysTicker({days:(0,t.range)(1,31,3)}),new _.DaysTicker({days:[1,8,15,22]}),new _.DaysTicker({days:[1,15]}),new k.MonthsTicker({months:(0,t.range)(0,12,1)}),new k.MonthsTicker({months:(0,t.range)(0,12,2)}),new k.MonthsTicker({months:(0,t.range)(0,12,4)}),new k.MonthsTicker({months:(0,t.range)(0,12,6)}),new o.YearsTicker({})]})},\n", + " function _(t,e,i,r,s){var n;r();const _=t(149),a=t(9);class l extends _.ContinuousTicker{constructor(t){super(t)}get min_intervals(){return this.tickers.map((t=>t.get_min_interval()))}get max_intervals(){return this.tickers.map((t=>t.get_max_interval()))}get_min_interval(){return this.min_intervals[0]}get_max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[(0,a.sorted_index)(this.min_intervals,s)-1,(0,a.sorted_index)(this.max_intervals,s)],_=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map((t=>Math.abs(i-r/t)));let l;if((0,a.is_empty)(_.filter((t=>!isNaN(t)))))l=this.tickers[0];else{const t=n[(0,a.argmin)(_)];l=this.tickers[t]}return l}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=l,n=l,l.__name__=\"CompositeTicker\",n.define((({Array:t,Ref:e})=>({tickers:[t(e(_.ContinuousTicker)),[]]})))},\n", + " function _(t,e,n,s,o){var a;s();const i=t(158),r=t(159),c=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*r.ONE_DAY:this.interval=31*r.ONE_DAY}get_ticks_no_defaults(t,e,n,s){const o=function(t,e){const n=(0,r.last_month_no_later_than)(new Date(t)),s=(0,r.last_month_no_later_than)(new Date(e));s.setUTCMonth(s.getUTCMonth()+1);const o=[],a=n;for(;o.push((0,r.copy_date)(a)),a.setUTCMonth(a.getUTCMonth()+1),!(a>s););return o}(t,e),a=this.days,i=this.interval,_=(0,c.concat)(o.map((t=>((t,e)=>{const n=t.getUTCMonth(),s=[];for(const o of a){const a=(0,r.copy_date)(t);a.setUTCDate(o),new Date(a.getTime()+e/2).getUTCMonth()==n&&s.push(a)}return s})(t,i))));return{major:_.map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.DaysTicker=_,a=_,_.__name__=\"DaysTicker\",a.define((({Int:t,Array:e})=>({days:[e(t),[]]}))),a.override({num_minor_ticks:0})},\n", + " function _(e,n,t,r,i){var a;r();const l=e(149);class s extends l.ContinuousTicker{constructor(e){super(e)}get_interval(e,n,t){return this.interval}get_min_interval(){return this.interval}get_max_interval(){return this.interval}}t.SingleIntervalTicker=s,a=s,s.__name__=\"SingleIntervalTicker\",a.define((({Number:e})=>({interval:[e]})))},\n", + " function _(t,n,e,_,E){function N(t){return new Date(t.getTime())}function O(t){const n=N(t);return n.setUTCDate(1),n.setUTCHours(0),n.setUTCMinutes(0),n.setUTCSeconds(0),n.setUTCMilliseconds(0),n}_(),e.ONE_MILLI=1,e.ONE_SECOND=1e3,e.ONE_MINUTE=60*e.ONE_SECOND,e.ONE_HOUR=60*e.ONE_MINUTE,e.ONE_DAY=24*e.ONE_HOUR,e.ONE_MONTH=30*e.ONE_DAY,e.ONE_YEAR=365*e.ONE_DAY,e.copy_date=N,e.last_month_no_later_than=O,e.last_year_no_later_than=function(t){const n=O(t);return n.setUTCMonth(0),n}},\n", + " function _(t,e,n,a,r){var s;a();const i=t(158),o=t(159),l=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*o.ONE_MONTH:this.interval=12*o.ONE_MONTH}get_ticks_no_defaults(t,e,n,a){const r=function(t,e){const n=(0,o.last_year_no_later_than)(new Date(t)),a=(0,o.last_year_no_later_than)(new Date(e));a.setUTCFullYear(a.getUTCFullYear()+1);const r=[],s=n;for(;r.push((0,o.copy_date)(s)),s.setUTCFullYear(s.getUTCFullYear()+1),!(s>a););return r}(t,e),s=this.months;return{major:(0,l.concat)(r.map((t=>s.map((e=>{const n=(0,o.copy_date)(t);return n.setUTCMonth(e),n}))))).map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.MonthsTicker=_,s=_,_.__name__=\"MonthsTicker\",s.define((({Int:t,Array:e})=>({months:[e(t),[]]})))},\n", + " function _(e,t,a,i,r){i();const n=e(147),_=e(158),s=e(159);class c extends _.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=s.ONE_YEAR,this.basic_ticker=new n.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=(0,s.last_year_no_later_than)(new Date(e)).getUTCFullYear(),n=(0,s.last_year_no_later_than)(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,n,a,i).major.map((e=>Date.UTC(e,0,1))).filter((a=>e<=a&&a<=t)),minor:[]}}}a.YearsTicker=c,c.__name__=\"YearsTicker\"},\n", + " function _(e,o,i,s,t){var n;s();const r=e(143),_=e(163),c=e(164);class a extends r.ContinuousAxisView{}i.LogAxisView=a,a.__name__=\"LogAxisView\";class u extends r.ContinuousAxis{constructor(e){super(e)}}i.LogAxis=u,n=u,u.__name__=\"LogAxis\",n.prototype.default_view=a,n.override({ticker:()=>new c.LogTicker,formatter:()=>new _.LogTickFormatter})},\n", + " function _(e,t,n,o,r){var i;o();const a=e(131),s=e(146),c=e(164),l=e(120),{abs:u,log:x,round:_}=Math;class p extends a.TickFormatter{constructor(e){super(e)}initialize(){super.initialize(),this.basic_formatter=new s.BasicTickFormatter}format_graphics(e,t){var n,o;if(0==e.length)return[];const r=null!==(o=null===(n=this.ticker)||void 0===n?void 0:n.base)&&void 0!==o?o:10,i=this._exponents(e,r);return null==i?this.basic_formatter.format_graphics(e,t):i.map((e=>{if(u(e)u(e)({ticker:[n(t(c.LogTicker)),null],min_exponent:[e,0]})))},\n", + " function _(t,o,e,s,n){var r;s();const i=t(148),a=t(9);class c extends i.AdaptiveTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,e,s){const n=this.num_minor_ticks,r=[],i=this.base,c=Math.log(t)/Math.log(i),f=Math.log(o)/Math.log(i),l=f-c;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,s),i=Math.floor(t/e),c=Math.ceil(o/e);if(h=(0,a.range)(i,c+1).filter((t=>0!=t)).map((t=>t*e)).filter((e=>t<=e&&e<=o)),n>0&&h.length>0){const t=e/n,o=(0,a.range)(0,n).map((o=>o*t));for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*c),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=(0,a.range)(t-1,o+1,e).map((t=>i**t)),n>0&&h.length>0){const t=i**e/n,o=(0,a.range)(1,n+1).map((o=>o*t));for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter((e=>t<=e&&e<=o)),minor:r.filter((e=>t<=e&&e<=o))}}}e.LogTicker=c,r=c,c.__name__=\"LogTicker\",r.override({mantissas:[1,5]})},\n", + " function _(e,r,t,i,a){var o;i();const s=e(128),c=e(145),n=e(166),_=e(167);class x extends s.AxisView{}t.MercatorAxisView=x,x.__name__=\"MercatorAxisView\";class d extends c.LinearAxis{constructor(e){super(e)}}t.MercatorAxis=d,o=d,d.__name__=\"MercatorAxis\",o.prototype.default_view=x,o.override({ticker:()=>new _.MercatorTicker({dimension:\"lat\"}),formatter:()=>new n.MercatorTickFormatter({dimension:\"lat\"})})},\n", + " function _(r,t,e,o,n){var i;o();const c=r(146),s=r(20),a=r(78);class l extends c.BasicTickFormatter{constructor(r){super(r)}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n({dimension:[r(s.LatLon),null]})))},\n", + " function _(t,o,n,s,r){var e;s();const i=t(147),c=t(20),_=t(78);class a extends i.BasicTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,n,s){if(null==this.dimension)throw new Error(`${this}.dimension wasn't configured`);return[t,o]=(0,_.clip_mercator)(t,o,this.dimension),\"lon\"==this.dimension?this._get_ticks_lon(t,o,n,s):this._get_ticks_lat(t,o,n,s)}_get_ticks_lon(t,o,n,s){const[r]=_.wgs84_mercator.invert(t,n),[e,i]=_.wgs84_mercator.invert(o,n),c=super.get_ticks_no_defaults(r,e,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);m.push(o)}return{major:a,minor:m}}_get_ticks_lat(t,o,n,s){const[,r]=_.wgs84_mercator.invert(n,t),[e,i]=_.wgs84_mercator.invert(n,o),c=super.get_ticks_no_defaults(r,i,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);m.push(o)}return{major:a,minor:m}}}n.MercatorTicker=a,e=a,a.__name__=\"MercatorTicker\",e.define((({Nullable:t})=>({dimension:[t(c.LatLon),null]})))},\n", + " function _(e,i,r,c,k){c(),k(\"AdaptiveTicker\",e(148).AdaptiveTicker),k(\"BasicTicker\",e(147).BasicTicker),k(\"CategoricalTicker\",e(141).CategoricalTicker),k(\"CompositeTicker\",e(156).CompositeTicker),k(\"ContinuousTicker\",e(149).ContinuousTicker),k(\"DatetimeTicker\",e(155).DatetimeTicker),k(\"DaysTicker\",e(157).DaysTicker),k(\"FixedTicker\",e(169).FixedTicker),k(\"LogTicker\",e(164).LogTicker),k(\"MercatorTicker\",e(167).MercatorTicker),k(\"MonthsTicker\",e(160).MonthsTicker),k(\"SingleIntervalTicker\",e(158).SingleIntervalTicker),k(\"Ticker\",e(130).Ticker),k(\"YearsTicker\",e(161).YearsTicker),k(\"BinnedTicker\",e(170).BinnedTicker)},\n", + " function _(r,t,e,i,n){var s;i();const _=r(149);class c extends _.ContinuousTicker{constructor(r){super(r)}get_ticks_no_defaults(r,t,e,i){return{major:this.ticks,minor:this.minor_ticks}}get_interval(r,t,e){return 0}get_min_interval(){return 0}get_max_interval(){return 0}}e.FixedTicker=c,s=c,c.__name__=\"FixedTicker\",s.define((({Number:r,Array:t})=>({ticks:[t(r),[]],minor_ticks:[t(r),[]]})))},\n", + " function _(e,n,t,r,i){var o;r();const a=e(130),s=e(171),c=e(12);class m extends a.Ticker{constructor(e){super(e)}get_ticks(e,n,t,r){const{binning:i}=this.mapper.metrics,o=Math.max(0,(0,c.left_edge_index)(e,i)),a=Math.min((0,c.left_edge_index)(n,i)+1,i.length-1),s=[];for(let e=o;e<=a;e++)s.push(i[e]);const{num_major_ticks:m}=this,_=[],h=\"auto\"==m?s.length:m,l=Math.max(1,Math.floor(s.length/h));for(let e=0;e({mapper:[n(s.ScanningColorMapper)],num_major_ticks:[t(e,r),8]})))},\n", + " function _(n,e,i,r,o){r();const t=n(172),a=n(12);class c extends t.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,i,r,o){if(no.binning[o.binning.length-1])return r;return e[(0,a.left_edge_index)(n,o.binning)]}}i.ScanningColorMapper=c,c.__name__=\"ScanningColorMapper\"},\n", + " function _(t,e,o,n,s){var l;n();const c=t(173),i=t(175),a=t(9),h=t(8);class r extends c.ColorMapper{constructor(t){super(t),this._scan_data=null}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,(()=>this.update_data())),this.connect(t.data_source.selected.change,(()=>this.update_data()))};this.connect(this.properties.domain.change,(()=>t())),t()}update_data(){const{domain:t,palette:e}=this,o=[...this._collect(t)];this._scan_data=this.scan(o,e.length),this.metrics_change.emit(),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[e,o]of t)for(const t of(0,h.isArray)(o)?o:[o]){let o=e.data_source.get_column(t);o=e.view.indices.select(o);const n=e.view.masked,s=e.data_source.selected.indices;let l;if(null!=n&&s.length>0?l=(0,a.intersection)([...n],s):null!=n?l=[...n]:s.length>0&&(l=s),null!=l&&(o=(0,a.map)(l,(t=>o[t]))),o.length>0&&!(0,h.isNumber)(o[0]))for(const t of o)yield*t;else yield*o}}_v_compute(t,e,o,n){const{nan_color:s}=n;let{low_color:l,high_color:c}=n;null==l&&(l=o[0]),null==c&&(c=o[o.length-1]);const{domain:i}=this,h=(0,a.is_empty)(i)?t:[...this._collect(i)];this._scan_data=this.scan(h,o.length),this.metrics_change.emit();for(let n=0,i=t.length;n({high:[a(t),null],low:[a(t),null],high_color:[a(n),null],low_color:[a(n),null],domain:[c(l(o(i.GlyphRenderer),s(e,c(e)))),[]]})))},\n", + " function _(e,r,t,n,o){var a;n();const c=e(174),i=e(15),_=e(24),l=e(22),s=e(27);function p(e){return(0,l.encode_rgba)((0,l.color2rgba)(e))}function u(e){const r=new Uint32Array(e.length);for(let t=0,n=e.length;te))),r}get rgba_mapper(){const e=this,r=u(this.palette),t=this._colors(p);return{v_compute(n){const o=new _.ColorArray(n.length);return e._v_compute(n,o,r,t),new Uint8ClampedArray((0,s.to_big_endian)(o).buffer)}}}_colors(e){return{nan_color:e(this.nan_color)}}}t.ColorMapper=h,a=h,h.__name__=\"ColorMapper\",a.define((({Color:e,Array:r})=>({palette:[r(e)],nan_color:[e,\"gray\"]})))},\n", + " function _(r,e,n,s,o){s();const p=r(56);class t extends p.Transform{constructor(r){super(r)}compute(r){throw new Error(\"mapping single values is not supported\")}}n.Mapper=t,t.__name__=\"Mapper\"},\n", + " function _(e,t,i,s,l){var h;s();const n=e(176),o=e(177),a=e(186),c=e(187),_=e(189),r=e(179),d=e(70),p=e(190),g=e(24),u=e(12),y=e(13),m=e(113),v=e(67),f={fill:{},line:{}},w={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},b={fill:{fill_alpha:.2},line:{}},V={fill:{fill_alpha:.2},line:{}};class x extends n.DataRendererView{get glyph_view(){return this.glyph}async lazy_initialize(){var e;await super.lazy_initialize();const t=this.model.glyph;this.glyph=await this.build_glyph_view(t);const i=\"fill\"in this.glyph.visuals,s=\"line\"in this.glyph.visuals,l=Object.assign({},t.attributes);function h(e){const h=(0,y.clone)(l);return i&&(0,y.extend)(h,e.fill),s&&(0,y.extend)(h,e.line),new t.constructor(h)}function n(e,t){return t instanceof r.Glyph?t:h(\"auto\"==t?e:{fill:{},line:{}})}delete l.id;let{selection_glyph:o,nonselection_glyph:a,hover_glyph:c,muted_glyph:_}=this.model;o=n(f,o),this.selection_glyph=await this.build_glyph_view(o),a=n(b,a),this.nonselection_glyph=await this.build_glyph_view(a),null!=c&&(this.hover_glyph=await this.build_glyph_view(c)),_=n(V,_),this.muted_glyph=await this.build_glyph_view(_);const d=n(w,\"auto\");this.decimated_glyph=await this.build_glyph_view(d),this.selection_glyph.set_base(this.glyph),this.nonselection_glyph.set_base(this.glyph),null===(e=this.hover_glyph)||void 0===e||e.set_base(this.glyph),this.muted_glyph.set_base(this.glyph),this.decimated_glyph.set_base(this.glyph),this.set_data()}async build_glyph_view(e){return(0,m.build_view)(e,{parent:this})}remove(){var e;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),this.muted_glyph.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals();const e=()=>this.request_render(),t=()=>this.update_data();this.connect(this.model.change,e),this.connect(this.glyph.model.change,t),this.connect(this.selection_glyph.model.change,t),this.connect(this.nonselection_glyph.model.change,t),null!=this.hover_glyph&&this.connect(this.hover_glyph.model.change,t),this.connect(this.muted_glyph.model.change,t),this.connect(this.decimated_glyph.model.change,t),this.connect(this.model.data_source.change,t),this.connect(this.model.data_source.streaming,t),this.connect(this.model.data_source.patching,(e=>this.update_data(e))),this.connect(this.model.data_source.selected.change,e),this.connect(this.model.data_source._select,e),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,e),this.connect(this.model.properties.view.change,t),this.connect(this.model.view.properties.indices.change,t),this.connect(this.model.view.properties.masked.change,(()=>this.set_visuals())),this.connect(this.model.properties.visible.change,(()=>this.plot_view.invalidate_dataranges=!0));const{x_ranges:i,y_ranges:s}=this.plot_view.frame;for(const[,e]of i)e instanceof v.FactorRange&&this.connect(e.change,t);for(const[,e]of s)e instanceof v.FactorRange&&this.connect(e.change,t);const{transformchange:l,exprchange:h}=this.model.glyph;this.connect(l,t),this.connect(h,t)}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}update_data(e){this.set_data(e),this.request_render()}set_data(e){const t=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:i}=this;this.glyph.set_data(t,i,e),this.set_visuals(),this._update_masked_indices();const{lod_factor:s}=this.plot_model,l=this.all_indices.count;this.decimated=new g.Indices(l);for(let e=0;e!n||n.is_empty()?[]:n.selected_glyph?this.model.view.convert_indices_from_subset(i):n.indices.length>0?n.indices:Object.keys(n.multiline_indices).map((e=>parseInt(e))))()),d=(0,u.filter)(i,(e=>r.has(t[e]))),{lod_threshold:p}=this.plot_model;let g,y,m;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=p&&t.length>p?(i=[...this.decimated],g=this.decimated_glyph,y=this.decimated_glyph,m=this.selection_glyph):(g=this.model.muted?this.muted_glyph:this.glyph,y=this.nonselection_glyph,m=this.selection_glyph),null!=this.hover_glyph&&d.length){const e=new Set(i);for(const t of d)e.delete(t);i=[...e]}if(h.length){const e={};for(const t of h)e[t]=!0;const l=new Array,n=new Array;if(this.glyph instanceof o.LineView)for(const i of t)null!=e[i]?l.push(i):n.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):n.push(s);y.render(s,n),m.render(s,l),null!=this.hover_glyph&&(this.glyph instanceof o.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):this.hover_glyph.render(s,d))}else if(this.glyph instanceof o.LineView)this.hover_glyph&&d.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):g.render(s,t);else if(this.glyph instanceof a.PatchView||this.glyph instanceof c.HAreaView||this.glyph instanceof _.VAreaView)if(0==n.selected_glyphs.length||null==this.hover_glyph)g.render(s,t);else for(const e of n.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t);else g.render(s,i),this.hover_glyph&&d.length&&this.hover_glyph.render(s,d);s.restore()}draw_legend(e,t,i,s,l,h,n,o){0!=this.glyph.data_size&&(null==o&&(o=this.model.get_reference_point(h,n)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o))}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=x,x.__name__=\"GlyphRendererView\";class G extends n.DataRenderer{constructor(e){super(e)}initialize(){super.initialize(),this.view.source!=this.data_source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){if(null!=e){const i=this.data_source.get_column(e);if(null!=i)for(const[e,s]of Object.entries(this.view.indices_map))if(i[parseInt(e)]==t)return s}return 0}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=G,h=G,G.__name__=\"GlyphRenderer\",h.prototype.default_view=x,h.define((({Boolean:e,Auto:t,Or:i,Ref:s,Null:l,Nullable:h})=>({data_source:[s(d.ColumnarDataSource)],view:[s(p.CDSView),e=>new p.CDSView({source:e.data_source})],glyph:[s(r.Glyph)],hover_glyph:[h(s(r.Glyph)),null],nonselection_glyph:[i(s(r.Glyph),t,l),\"auto\"],selection_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted:[e,!1]})))},\n", + " function _(e,r,t,a,n){var s;a();const c=e(41);class _ extends c.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=_,_.__name__=\"DataRendererView\";class i extends c.Renderer{constructor(e){super(e)}get selection_manager(){return this.get_selection_manager()}}t.DataRenderer=i,s=i,i.__name__=\"DataRenderer\",s.override({level:\"glyph\"})},\n", + " function _(e,t,i,s,n){s();const l=e(1);var _;const r=e(178),o=e(184),a=(0,l.__importStar)(e(48)),h=(0,l.__importStar)(e(185)),c=e(72);class d extends r.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null==t?void 0:t.regl_wrapper.has_webgl){const{LineGL:i}=await Promise.resolve().then((()=>(0,l.__importStar)(e(426))));this.glglyph=new i(t.regl_wrapper,this)}}_render(e,t,i){const{sx:s,sy:n}=null!=i?i:this;let l=null;const _=e=>null!=l&&e-l!=1;let r=!0;e.beginPath();for(const i of t){const t=s[i],o=n[i];isFinite(t+o)?r||_(i)?(e.moveTo(t,o),r=!1):e.lineTo(t,o):r=!0,l=i}this.visuals.line.set_value(e),e.stroke()}_hit_point(e){const t=new c.Selection,i={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.line_width.value/2);for(let e=0,l=this.sx.length-1;e({x:[c.XCoordinateSpec,{field:\"x\"}],y:[c.YCoordinateSpec,{field:\"y\"}]})))},\n", + " function _(e,t,s,i,n){i();const r=e(1),a=(0,r.__importStar)(e(18)),o=(0,r.__importStar)(e(65)),_=(0,r.__importStar)(e(45)),l=e(42),c=e(53),h=e(19),d=e(24),u=e(8),f=e(180),p=e(12),g=e(26),y=e(181),x=e(67),v=e(72),{abs:b,ceil:m}=Math;class w extends l.View{constructor(){super(...arguments),this._index=null,this._data_size=null,this._nohit_warned=new Set}get renderer(){return this.parent}get has_webgl(){return null!=this.glglyph}get index(){const{_index:e}=this;if(null!=e)return e;throw new Error(`${this}.index_data() wasn't called`)}get data_size(){const{_data_size:e}=this;if(null!=e)return e;throw new Error(`${this}.set_data() wasn't called`)}initialize(){super.initialize(),this.visuals=new _.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.renderer.parent.canvas_view}render(e,t,s){var i;null!=this.glglyph&&(this.renderer.needs_webgl_blit=this.glglyph.render(e,t,null!==(i=this.base)&&void 0!==i?i:this),this.renderer.needs_webgl_blit)||this._render(e,t,null!=s?s:this.base)}has_finished(){return!0}notify_finished(){this.renderer.notify_finished()}_bounds(e){return e}bounds(){return this._bounds(this.index.bbox)}log_bounds(){const{x0:e,x1:t}=this.index.bounds(o.positive_x()),{y0:s,y1:i}=this.index.bounds(o.positive_y());return this._bounds({x0:e,y0:s,x1:t,y1:i})}get_anchor_point(e,t,[s,i]){switch(e){case\"center\":case\"center_center\":{const[e,n]=this.scenterxy(t,s,i);return{x:e,y:n}}default:return null}}scenterx(e,t,s){return this.scenterxy(e,t,s)[0]}scentery(e,t,s){return this.scenterxy(e,t,s)[1]}sdist(e,t,s,i=\"edge\",n=!1){const r=t.length,a=new d.ScreenArray(r),o=e.s_compute;if(\"center\"==i)for(let e=0;em(e))),a}draw_legend_for_index(e,t,s){}hit_test(e){switch(e.type){case\"point\":if(null!=this._hit_point)return this._hit_point(e);break;case\"span\":if(null!=this._hit_span)return this._hit_span(e);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(e);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(e)}return this._nohit_warned.has(e.type)||(h.logger.debug(`'${e.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(e.type)),null}_hit_rect_against_index(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,[r,a]=this.renderer.coordinates.x_scale.r_invert(t,s),[o,_]=this.renderer.coordinates.y_scale.r_invert(i,n),l=[...this.index.indices({x0:r,x1:a,y0:o,y1:_})];return new v.Selection({indices:l})}_project_data(){}*_iter_visuals(){for(const e of this.visuals)for(const t of e)(t instanceof a.VectorSpec||t instanceof a.ScalarSpec)&&(yield t)}set_base(e){e!=this&&e instanceof this.constructor&&(this.base=e)}_configure(e,t){Object.defineProperty(this,(0,u.isString)(e)?e:e.attr,Object.assign({configurable:!0,enumerable:!0},t))}set_visuals(e,t){var s;for(const s of this._iter_visuals()){const{base:i}=this;if(null!=i){const e=i.model.properties[s.attr];if(null!=e&&(0,g.is_equal)(s.get_value(),e.get_value())){this._configure(s,{get:()=>i[`${s.attr}`]});continue}}const n=s.uniform(e).select(t);this._configure(s,{value:n})}for(const e of this.visuals)e.update();null===(s=this.glglyph)||void 0===s||s.set_visuals_changed()}set_data(e,t,s){var i;const{x_source:n,y_source:r}=this.renderer.coordinates,o=new Set(this._iter_visuals());this._data_size=t.count;for(const s of this.model)if((s instanceof a.VectorSpec||s instanceof a.ScalarSpec)&&!o.has(s))if(s instanceof a.BaseCoordinateSpec){const i=s.array(e);let o=t.select(i);const _=\"x\"==s.dimension?n:r;if(_ instanceof x.FactorRange)if(s instanceof a.CoordinateSpec)o=_.v_synthetic(o);else if(s instanceof a.CoordinateSeqSpec)for(let e=0;e{const s=new Uint32Array(r);for(let a=0;a>1;t[s]>i?e=s:n=s+1}return t[n]}class r extends d.default{get boxes(){return this._boxes}search_indices(i,t,n,e){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let s=this._boxes.length-4;const d=[],x=new o.Indices(this.numItems);for(;void 0!==s;){const o=Math.min(s+4*this.nodeSize,h(s,this._levelBounds));for(let h=s;h>2],r=this._boxes[h+0],l=this._boxes[h+1],a=this._boxes[h+2],_=this._boxes[h+3];na||t>_||(s<4*this.numItems?x.set(o):d.push(o)))}s=d.pop()}return x}}r.__name__=\"_FlatBush\";class l{constructor(i){this.index=null,i>0&&(this.index=new r(i))}add_rect(i,t,n,e){var s;isFinite(i+t+n+e)?null===(s=this.index)||void 0===s||s.add(i,t,n,e):this.add_empty()}add_point(i,t){var n;isFinite(i+t)?null===(n=this.index)||void 0===n||n.add(i,t,i,t):this.add_empty()}add_empty(){var i;null===(i=this.index)||void 0===i||i.add(1/0,1/0,-1/0,-1/0)}finish(){var i;null===(i=this.index)||void 0===i||i.finish()}_normalize(i){let{x0:t,y0:n,x1:e,y1:s}=i;return t>e&&([t,e]=[e,t]),n>s&&([n,s]=[s,n]),{x0:t,y0:n,x1:e,y1:s}}get bbox(){if(null==this.index)return(0,x.empty)();{const{minX:i,minY:t,maxX:n,maxY:e}=this.index;return{x0:i,y0:t,x1:n,y1:e}}}indices(i){if(null==this.index)return new o.Indices(0);{const{x0:t,y0:n,x1:e,y1:s}=this._normalize(i);return this.index.search_indices(t,n,e,s)}}bounds(i){const t=(0,x.empty)();if(null==this.index)return t;const{boxes:n}=this.index;for(const e of this.indices(i)){const s=n[4*e+0],d=n[4*e+1],o=n[4*e+2],x=n[4*e+3];s>=i.x0&&st.x1&&(t.x1=o),d>=i.y0&&dt.y1&&(t.y1=x)}return t}}n.SpatialIndex=l,l.__name__=\"SpatialIndex\"},\n", + " function _(t,s,i,e,h){e();const n=(0,t(1).__importDefault)(t(183)),o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class r{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new r(h,e,o[15&i],t)}constructor(t,s=16,i=Float64Array,e){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let h=t,r=h;this._levelBounds=[4*h];do{h=Math.ceil(h/this.nodeSize),r+=h,this._levelBounds.push(4*r)}while(1!==h);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=o.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);e&&e instanceof ArrayBuffer?(this.data=e,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new n.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],r=[];for(;void 0!==n;){const a=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let _=n;_>2];ithis._boxes[_+2]||s>this._boxes[_+3]||(n<4*this.numItems?(void 0===h||h(a))&&r.push(a):o.push(a)))}n=o.pop()}return r}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=this._queue,r=[],x=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let i=n;i>2],r=a(t,this._boxes[i],this._boxes[i+2]),_=a(s,this._boxes[i+1],this._boxes[i+3]),x=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&o.push(-e-1,x):o.push(e,x)}for(;o.length&&o.peek()<0;){if(o.peekValue()>x)return o.clear(),r;if(r.push(-o.pop()-1),r.length===i)return o.clear(),r}n=o.pop()}return o.clear(),r}}function a(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function x(t,s,i,e,h,n){if(Math.floor(e/n)>=Math.floor(h/n))return;const o=t[e+h>>1];let r=e-1,a=h+1;for(;;){do{r++}while(t[r]o);if(r>=a)break;d(t,s,i,r,a)}x(t,s,i,e,a,n),x(t,s,i,a+1,h,n)}function d(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],x=s[o+2],d=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=x,s[r+3]=d;const m=i[e];i[e]=i[h],i[h]=m}function m(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let x=t^s,d=e|65535^(x|i);return x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|x)>>>0}i.default=r},\n", + " function _(s,t,i,h,e){h();i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n", + " function _(e,n,a,t,i){t();const l=(0,e(1).__importStar)(e(185));function r(e,n,{x0:a,x1:t,y0:i,y1:l},r){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n,r),n.restore()}function c(e,n,{x0:a,x1:t,y0:i,y1:l},r){var c,o;const _=.1*Math.abs(t-a),s=.1*Math.abs(l-i),y=a+_,p=t-_,g=i+s,h=l-s;n.beginPath(),n.rect(y,g,p-y,h-g),e.fill.apply(n,r),null===(c=e.hatch)||void 0===c||c.apply(n,r),null===(o=e.line)||void 0===o||o.apply(n,r)}a.generic_line_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n),n.restore()},a.generic_line_vector_legend=r,a.generic_line_legend=r,a.generic_area_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){var r,c;const o=.1*Math.abs(t-a),_=.1*Math.abs(l-i),s=a+o,y=t-o,p=i+_,g=l-_;n.beginPath(),n.rect(s,p,y-s,g-p),e.fill.apply(n),null===(r=e.hatch)||void 0===r||r.apply(n),null===(c=e.line)||void 0===c||c.apply(n)},a.generic_area_vector_legend=c,a.generic_area_legend=c,a.line_interpolation=function(e,n,a,t,i,r){const{sx:c,sy:o}=n;let _,s,y,p;\"point\"==n.type?([y,p]=e.yscale.r_invert(o-1,o+1),[_,s]=e.xscale.r_invert(c-1,c+1)):\"v\"==n.direction?([y,p]=e.yscale.r_invert(o,o),[_,s]=[Math.min(a-1,i-1),Math.max(a+1,i+1)]):([_,s]=e.xscale.r_invert(c,c),[y,p]=[Math.min(t-1,r-1),Math.max(t+1,r+1)]);const{x:g,y:h}=l.check_2_segments_intersect(_,y,s,p,a,t,i,r);return[g,h]}},\n", + " function _(t,n,e,i,r){function s(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function o(t,n,e){const i=s(n,e);if(0==i)return s(t,n);const r=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/i;if(r<0)return s(t,n);if(r>1)return s(t,e);return s(t,{x:n.x+r*(e.x-n.x),y:n.y+r*(e.y-n.y)})}i(),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&h>0&&h<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n", + " function _(t,s,e,i,a){i();const l=t(1);var n;const _=t(178),o=t(184),c=(0,l.__importStar)(t(185)),h=(0,l.__importStar)(t(48)),r=t(72);class p extends _.XYGlyphView{_render(t,s,e){const{sx:i,sy:a}=null!=e?e:this;let l=!0;t.beginPath();for(const e of s){const s=i[e],n=a[e];isFinite(s+n)?l?(t.moveTo(s,n),l=!1):t.lineTo(s,n):(t.closePath(),l=!0)}t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t)}draw_legend_for_index(t,s,e){(0,o.generic_area_scalar_legend)(this.visuals,t,s)}_hit_point(t){const s=new r.Selection;return c.point_in_poly(t.sx,t.sy,this.sx,this.sy)&&(s.add_to_selected_glyphs(this.model),s.view=this),s}}e.PatchView=p,p.__name__=\"PatchView\";class d extends _.XYGlyph{constructor(t){super(t)}}e.Patch=d,n=d,d.__name__=\"Patch\",n.prototype.default_view=p,n.mixins([h.LineScalar,h.FillScalar,h.HatchScalar])},\n", + " function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(n[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}_hit_point(t){const s=this.sy.length,e=new l.Selection;for(let i=0,n=s-1;i({x1:[o.XCoordinateSpec,{field:\"x1\"}],x2:[o.XCoordinateSpec,{field:\"x2\"}],y:[o.YCoordinateSpec,{field:\"y\"}]})))},\n", + " function _(e,a,r,_,s){_();const n=e(1);var c;const i=e(179),l=e(184),t=(0,n.__importStar)(e(48));class o extends i.GlyphView{draw_legend_for_index(e,a,r){(0,l.generic_area_scalar_legend)(this.visuals,e,a)}}r.AreaView=o,o.__name__=\"AreaView\";class d extends i.Glyph{constructor(e){super(e)}}r.Area=d,c=d,d.__name__=\"Area\",c.mixins([t.FillScalar,t.HatchScalar])},\n", + " function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(i[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}scenterxy(t){return[this.sx[t],(this.sy1[t]+this.sy2[t])/2]}_hit_point(t){const s=this.sx.length,e=new l.Selection;for(let i=0,n=s-1;i({x:[o.XCoordinateSpec,{field:\"x\"}],y1:[o.YCoordinateSpec,{field:\"y1\"}],y2:[o.YCoordinateSpec,{field:\"y2\"}]})))},\n", + " function _(e,i,s,t,n){var c;t();const o=e(53),r=e(24),u=e(191),_=e(70);class a extends o.Model{constructor(e){super(e)}initialize(){super.initialize(),this.compute_indices()}connect_signals(){super.connect_signals(),this.connect(this.properties.filters.change,(()=>this.compute_indices()));const e=()=>{const e=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,e),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,e),this.connect(this.source.patching,e)))};let i=null!=this.source;i?e():this.connect(this.properties.source.change,(()=>{i||(e(),i=!0)}))}compute_indices(){var e;const{source:i}=this;if(null==i)return;const s=null!==(e=i.get_length())&&void 0!==e?e:1,t=r.Indices.all_set(s);for(const e of this.filters)t.intersect(e.compute_indices(i));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let e=0;ethis._indices[e]))}convert_selection_to_subset(e){return e.map((e=>this.indices_map[e]))}convert_indices_from_subset(e){return e.map((e=>this._indices[e]))}}s.CDSView=a,c=a,a.__name__=\"CDSView\",c.define((({Array:e,Ref:i})=>({filters:[e(i(u.Filter)),[]],source:[i(_.ColumnarDataSource)]}))),c.internal((({Int:e,Dict:i,Ref:s,Nullable:t})=>({indices:[s(r.Indices)],indices_map:[i(e),{}],masked:[t(s(r.Indices)),null]})))},\n", + " function _(e,t,n,s,c){s();const o=e(53);class r extends o.Model{constructor(e){super(e)}}n.Filter=r,r.__name__=\"Filter\"},\n", + " function _(t,r,a,e,c){e(),c(\"BasicTickFormatter\",t(146).BasicTickFormatter),c(\"CategoricalTickFormatter\",t(142).CategoricalTickFormatter),c(\"DatetimeTickFormatter\",t(150).DatetimeTickFormatter),c(\"FuncTickFormatter\",t(193).FuncTickFormatter),c(\"LogTickFormatter\",t(163).LogTickFormatter),c(\"MercatorTickFormatter\",t(166).MercatorTickFormatter),c(\"NumeralTickFormatter\",t(194).NumeralTickFormatter),c(\"PrintfTickFormatter\",t(195).PrintfTickFormatter),c(\"TickFormatter\",t(131).TickFormatter)},\n", + " function _(t,e,n,s,r){var c;s();const i=t(131),a=t(13),u=t(34);class o extends i.TickFormatter{constructor(t){super(t)}get names(){return(0,a.keys)(this.args)}get values(){return(0,a.values)(this.args)}_make_func(){const t=(0,u.use_strict)(this.code);return new Function(\"tick\",\"index\",\"ticks\",...this.names,t)}doFormat(t,e){const n=this._make_func().bind({});return t.map(((t,e,s)=>`${n(t,e,s,...this.values)}`))}}n.FuncTickFormatter=o,c=o,o.__name__=\"FuncTickFormatter\",c.define((({Unknown:t,String:e,Dict:n})=>({args:[n(t),{}],code:[e,\"\"]})))},\n", + " function _(r,n,t,o,e){o();var a;const u=(0,r(1).__importStar)(r(153)),c=r(131),i=r(20);class s extends c.TickFormatter{constructor(r){super(r)}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,n){const{format:t,language:o,_rounding_fn:e}=this;return r.map((r=>u.format(r,t,o,e)))}}t.NumeralTickFormatter=s,a=s,s.__name__=\"NumeralTickFormatter\",a.define((({String:r})=>({format:[r,\"0,0\"],language:[r,\"en\"],rounding:[i.RoundingFunction,\"round\"]})))},\n", + " function _(t,r,n,o,a){var e;o();const i=t(131),s=t(152);class c extends i.TickFormatter{constructor(t){super(t)}doFormat(t,r){return t.map((t=>(0,s.sprintf)(this.format,t)))}}n.PrintfTickFormatter=c,e=c,c.__name__=\"PrintfTickFormatter\",e.define((({String:t})=>({format:[t,\"%s\"]})))},\n", + " function _(r,o,a,p,e){p(),e(\"CategoricalColorMapper\",r(197).CategoricalColorMapper),e(\"CategoricalMarkerMapper\",r(199).CategoricalMarkerMapper),e(\"CategoricalPatternMapper\",r(200).CategoricalPatternMapper),e(\"ContinuousColorMapper\",r(172).ContinuousColorMapper),e(\"ColorMapper\",r(173).ColorMapper),e(\"LinearColorMapper\",r(201).LinearColorMapper),e(\"LogColorMapper\",r(202).LogColorMapper),e(\"ScanningColorMapper\",r(171).ScanningColorMapper),e(\"EqHistColorMapper\",r(203).EqHistColorMapper)},\n", + " function _(t,o,r,a,e){var c;a();const s=t(198),l=t(173),n=t(67);class _ extends l.ColorMapper{constructor(t){super(t)}_v_compute(t,o,r,{nan_color:a}){(0,s.cat_v_compute)(t,this.factors,r,o,this.start,this.end,a)}}r.CategoricalColorMapper=_,c=_,_.__name__=\"CategoricalColorMapper\",c.define((({Number:t,Nullable:o})=>({factors:[n.FactorSeq],start:[t,0],end:[o(t),null]})))},\n", + " function _(n,t,e,l,i){l();const c=n(12),u=n(8);function f(n,t){if(n.length!=t.length)return!1;for(let e=0,l=n.length;ef(n,h)))),s=_<0||_>=e.length?r:e[_],l[g]=s}}},\n", + " function _(e,r,a,t,s){var c;t();const l=e(198),n=e(67),u=e(174),o=e(20);class p extends u.Mapper{constructor(e){super(e)}v_compute(e){const r=new Array(e.length);return(0,l.cat_v_compute)(e,this.factors,this.markers,r,this.start,this.end,this.default_value),r}}a.CategoricalMarkerMapper=p,c=p,p.__name__=\"CategoricalMarkerMapper\",c.define((({Number:e,Array:r,Nullable:a})=>({factors:[n.FactorSeq],markers:[r(o.MarkerType)],start:[e,0],end:[a(e),null],default_value:[o.MarkerType,\"circle\"]})))},\n", + " function _(t,e,a,r,n){var s;r();const c=t(198),l=t(67),p=t(174),u=t(20);class o extends p.Mapper{constructor(t){super(t)}v_compute(t){const e=new Array(t.length);return(0,c.cat_v_compute)(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=o,s=o,o.__name__=\"CategoricalPatternMapper\",s.define((({Number:t,Array:e,Nullable:a})=>({factors:[l.FactorSeq],patterns:[e(u.HatchPatternType)],start:[t,0],end:[a(t),null],default_value:[u.HatchPatternType,\" \"]})))},\n", + " function _(n,r,o,t,a){t();const e=n(172),i=n(12);class s extends e.ContinuousColorMapper{constructor(n){super(n)}scan(n,r){const o=null!=this.low?this.low:(0,i.min)(n),t=null!=this.high?this.high:(0,i.max)(n);return{max:t,min:o,norm_factor:1/(t-o),normed_interval:1/r}}cmap(n,r,o,t,a){const e=r.length-1;if(n==a.max)return r[e];const i=(n-a.min)*a.norm_factor,s=Math.floor(i/a.normed_interval);return s<0?o:s>e?t:r[s]}}o.LinearColorMapper=s,s.__name__=\"LinearColorMapper\"},\n", + " function _(o,t,n,r,l){r();const a=o(172),s=o(12);class e extends a.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:(0,s.min)(o),r=null!=this.high?this.high:(0,s.max)(o);return{max:r,min:n,scale:t/(Math.log(r)-Math.log(n))}}cmap(o,t,n,r,l){const a=t.length-1;if(o>l.max)return r;if(o==l.max)return t[a];if(oa&&(e=a),t[e]}}n.LogColorMapper=e,e.__name__=\"LogColorMapper\"},\n", + " function _(e,n,s,t,l){var i;t();const r=e(171),o=e(12),c=e(9);class a extends r.ScanningColorMapper{constructor(e){super(e)}scan(e,n){let s=null!=this.low?this.low:(0,o.min)(e);const t=null!=this.high?this.high:(0,o.max)(e),l=this.bins,i=(0,c.linspace)(s,t,l+1),r=(0,o.bin_counts)(e,i);let a=0;for(let e=0;e1&&(f=1-n)}const d=(0,c.linspace)(f,1,n+1),g=(0,o.interpolate)(d,p,_);return this.rescale_discrete_levels?s=g[0]:g[0]=s,g[g.length-1]=t,{min:s,max:t,binning:g}}}s.EqHistColorMapper=a,i=a,a.__name__=\"EqHistColorMapper\",i.define((({Boolean:e,Int:n})=>({bins:[n,65536],rescale_discrete_levels:[e,!1]})))},\n", + " function _(a,e,l,c,n){c(),n(\"CategoricalScale\",a(62).CategoricalScale),n(\"ContinuousScale\",a(60).ContinuousScale),n(\"LinearScale\",a(59).LinearScale),n(\"LinearInterpolationScale\",a(205).LinearInterpolationScale),n(\"LogScale\",a(61).LogScale),n(\"Scale\",a(55).Scale)},\n", + " function _(e,r,n,t,a){var i;t();const s=e(55),o=e(59),c=e(12);class _ extends s.Scale{constructor(e){super(e)}connect_signals(){super.connect_signals();const{source_range:e,target_range:r}=this.properties;this.on_change([e,r],(()=>{this.linear_scale=new o.LinearScale({source_range:this.source_range,target_range:this.target_range})}))}get s_compute(){throw new Error(\"not implemented\")}get s_invert(){throw new Error(\"not implemented\")}compute(e){return e}v_compute(e){const{binning:r}=this,{start:n,end:t}=this.source_range,a=n,i=t,s=r.length,o=(t-n)/(s-1),_=new Float64Array(s);for(let e=0;e{if(ei)return i;const n=(0,c.left_edge_index)(e,r);if(-1==n)return a;if(n>=s-1)return i;const t=r[n],o=(e-t)/(r[n+1]-t),l=_[n];return l+o*(_[n+1]-l)}));return this.linear_scale.v_compute(l)}invert(e){return e}v_invert(e){return new Float64Array(e)}}n.LinearInterpolationScale=_,i=_,_.__name__=\"LinearInterpolationScale\",i.internal((({Arrayable:e,Ref:r})=>({binning:[e],linear_scale:[r(o.LinearScale),e=>new o.LinearScale({source_range:e.source_range,target_range:e.target_range})]})))},\n", + " function _(a,n,e,g,R){g(),R(\"DataRange\",a(64).DataRange),R(\"DataRange1d\",a(63).DataRange1d),R(\"FactorRange\",a(67).FactorRange),R(\"Range\",a(57).Range),R(\"Range1d\",a(58).Range1d)},\n", + " function _(a,o,i,t,e){t();var n=a(124);e(\"Sizeable\",n.Sizeable),e(\"SizingPolicy\",n.SizingPolicy);var c=a(125);e(\"Layoutable\",c.Layoutable),e(\"LayoutItem\",c.LayoutItem);var r=a(208);e(\"HStack\",r.HStack),e(\"VStack\",r.VStack);var l=a(209);e(\"Grid\",l.Grid),e(\"Row\",l.Row),e(\"Column\",l.Column);var S=a(210);e(\"ContentBox\",S.ContentBox),e(\"VariadicBox\",S.VariadicBox)},\n", + " function _(t,e,h,i,r){i();const n=t(125),o=t(65);class s extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}}h.Stack=s,s.__name__=\"Stack\";class c extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e+=i.width,h=Math.max(h,i.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.top:0;let i=this.absolute?t.left:0;const{height:r}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({left:i,width:e,top:h,height:r})),i+=e}}}h.HStack=c,c.__name__=\"HStack\";class a extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e=Math.max(e,i.width),h+=i.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.left:0;let i=this.absolute?t.top:0;const{width:r}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({top:i,height:e,left:h,width:r})),i+=e}}}h.VStack=a,a.__name__=\"VStack\";class l extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}_measure(t){const{width_policy:e,height_policy:h}=this.sizing,{min:i,max:r}=Math;let n=0,o=0;for(const e of this.children){const{width:h,height:i}=e.measure(t);n=r(n,h),o=r(o,i)}return{width:(()=>{const{width:h}=this.sizing;if(t.width==1/0)return\"fixed\"==e&&null!=h?h:n;switch(e){case\"fixed\":return null!=h?h:n;case\"min\":return n;case\"fit\":return null!=h?i(t.width,h):t.width;case\"max\":return null!=h?r(t.width,h):t.width}})(),height:(()=>{const{height:e}=this.sizing;if(t.height==1/0)return\"fixed\"==h&&null!=e?e:o;switch(h){case\"fixed\":return null!=e?e:o;case\"min\":return o;case\"fit\":return null!=e?i(t.height,e):t.height;case\"max\":return null!=e?r(t.height,e):t.height}})()}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t:t.relative(),{left:i,right:r,top:n,bottom:s}=h,c=Math.round(h.vcenter),a=Math.round(h.hcenter);for(const e of this.children){const{margin:h,halign:l,valign:d}=e.sizing,{width:u,height:g,inner:_}=e.measure(t),w=(()=>{switch(`${d}_${l}`){case\"start_start\":return new o.BBox({left:i+h.left,top:n+h.top,width:u,height:g});case\"start_center\":return new o.BBox({hcenter:a,top:n+h.top,width:u,height:g});case\"start_end\":return new o.BBox({right:r-h.right,top:n+h.top,width:u,height:g});case\"center_start\":return new o.BBox({left:i+h.left,vcenter:c,width:u,height:g});case\"center_center\":return new o.BBox({hcenter:a,vcenter:c,width:u,height:g});case\"center_end\":return new o.BBox({right:r-h.right,vcenter:c,width:u,height:g});case\"end_start\":return new o.BBox({left:i+h.left,bottom:s-h.bottom,width:u,height:g});case\"end_center\":return new o.BBox({hcenter:a,bottom:s-h.bottom,width:u,height:g});case\"end_end\":return new o.BBox({right:r-h.right,bottom:s-h.bottom,width:u,height:g})}})(),m=null==_?w:new o.BBox({left:w.left+_.left,top:w.top+_.top,right:w.right-_.right,bottom:w.bottom-_.bottom});e.set_geometry(w,m)}}}h.NodeLayout=l,l.__name__=\"NodeLayout\"},\n", + " function _(t,i,s,e,o){e();const n=t(124),l=t(125),r=t(8),h=t(65),c=t(9),{max:a,round:g}=Math;class p{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}p.__name__=\"DefaultMap\";class f{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=a(this._nrows,s+1),this._ncols=a(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter((({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1)).map((({data:t})=>t))}row(t){return this._items.filter((({span:i})=>i.r0<=t&&t<=i.r1)).map((({data:t})=>t))}col(t){return this._items.filter((({span:i})=>i.c0<=t&&t<=i.c1)).map((({data:t})=>t))}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new f;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}f.__name__=\"Container\";class _ extends l.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0}*[Symbol.iterator](){for(const{layout:t}of this.items)yield t}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}_init(){var t,i,s,e;super._init();const o=new f;for(const{layout:t,row:i,col:s,row_span:e,col_span:n}of this.items)if(t.sizing.visible){const l=i,r=s,h=i+(null!=e?e:1)-1,c=s+(null!=n?n:1)-1;o.add({r0:l,c0:r,r1:h,c1:c},t)}const{nrows:n,ncols:l}=o,h=new Array(n);for(let s=0;s{var t;const i=(0,r.isPlainObject)(this.rows)?null!==(t=this.rows[s])&&void 0!==t?t:this.rows[\"*\"]:this.rows;return null==i?{policy:\"auto\"}:(0,r.isNumber)(i)?{policy:\"fixed\",height:i}:(0,r.isString)(i)?{policy:i}:i})(),n=null!==(t=e.align)&&void 0!==t?t:\"auto\";if(\"fixed\"==e.policy)h[s]={policy:\"fixed\",height:e.height,align:n};else if(\"min\"==e.policy)h[s]={policy:\"min\",align:n};else if(\"fit\"==e.policy||\"max\"==e.policy)h[s]={policy:e.policy,flex:null!==(i=e.flex)&&void 0!==i?i:1,align:n};else{if(\"auto\"!=e.policy)throw new Error(\"unrechable\");(0,c.some)(o.row(s),(t=>t.is_height_expanding()))?h[s]={policy:\"max\",flex:1,align:n}:h[s]={policy:\"min\",align:n}}}const a=new Array(l);for(let t=0;t{var i;const s=(0,r.isPlainObject)(this.cols)?null!==(i=this.cols[t])&&void 0!==i?i:this.cols[\"*\"]:this.cols;return null==s?{policy:\"auto\"}:(0,r.isNumber)(s)?{policy:\"fixed\",width:s}:(0,r.isString)(s)?{policy:s}:s})(),n=null!==(s=i.align)&&void 0!==s?s:\"auto\";if(\"fixed\"==i.policy)a[t]={policy:\"fixed\",width:i.width,align:n};else if(\"min\"==i.policy)a[t]={policy:\"min\",align:n};else if(\"fit\"==i.policy||\"max\"==i.policy)a[t]={policy:i.policy,flex:null!==(e=i.flex)&&void 0!==e?e:1,align:n};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");(0,c.some)(o.col(t),(t=>t.is_width_expanding()))?a[t]={policy:\"max\",flex:1,align:n}:a[t]={policy:\"min\",align:n}}}const[g,p]=(0,r.isNumber)(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:o,nrows:n,ncols:l,rows:h,cols:a,rspacing:g,cspacing:p}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:(0,c.sum)(t)+(s-1)*o,width:(0,c.sum)(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:e,rows:o,cols:l,rspacing:r,cspacing:h}=this._state,c=new Array(s);for(let t=0;t{const{r0:e,c0:f,r1:d,c1:u}=i,w=(d-e)*r,m=(u-f)*h;let y=0;for(let i=e;i<=d;i++)y+=t(i,f).height;y+=w;let x=0;for(let i=f;i<=u;i++)x+=t(e,i).width;x+=m;const b=s.measure({width:x,height:y});_.add(i,{layout:s,size_hint:b});const z=new n.Sizeable(b).grow_by(s.sizing.margin);z.height-=w,z.width-=m;const v=[];for(let t=e;t<=d;t++){const i=o[t];\"fixed\"==i.policy?z.height-=i.height:v.push(t)}if(z.height>0){const t=g(z.height/v.length);for(const i of v)c[i]=a(c[i],t)}const j=[];for(let t=f;t<=u;t++){const i=l[t];\"fixed\"==i.policy?z.width-=i.width:j.push(t)}if(z.width>0){const t=g(z.width/j.length);for(const i of j)p[i]=a(p[i],t)}}));return{size:this._measure_totals(c,p),row_heights:c,col_widths:p,size_hints:_}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:l}=this._state,r=this._measure_cells(((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}}));let h;h=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:r.size.height;let c,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}c=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:r.size.width;let f=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:_,col_widths:d,size_hints:u}=this._measure_cells(((t,i)=>({width:r.col_widths[i],height:r.row_heights[t]})));return{size:this._measure_totals(_,d),row_heights:_,col_widths:d,size_hints:u}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:l,col_widths:r,size_hints:c}=this._measure_grid(t),f=this._state.rows.map(((t,i)=>Object.assign(Object.assign({},t),{top:0,height:l[i],get bottom(){return this.top+this.height}}))),_=this._state.cols.map(((t,i)=>Object.assign(Object.assign({},t),{left:0,width:r[i],get right(){return this.left+this.width}}))),d=c.map(((t,i)=>Object.assign(Object.assign({},i),{outer:new h.BBox,inner:new h.BBox})));for(let i=0,e=this.absolute?t.top:0;i{const{layout:r,size_hint:c}=l,{sizing:a}=r,{width:p,height:d}=c,u=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=_[e].width;return s}(i,e),w=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=f[e].height;return s}(t,s),m=i==e&&\"auto\"!=_[i].align?_[i].align:a.halign,y=t==s&&\"auto\"!=f[t].align?f[t].align:a.valign;let x=_[i].left;\"start\"==m?x+=a.margin.left:\"center\"==m?x+=g((u-p)/2):\"end\"==m&&(x+=u-a.margin.right-p);let b=f[t].top;\"start\"==y?b+=a.margin.top:\"center\"==y?b+=g((w-d)/2):\"end\"==y&&(b+=w-a.margin.bottom-d),l.outer=new h.BBox({left:x,top:b,width:p,height:d})}));const u=f.map((()=>({start:new p((()=>0)),end:new p((()=>0))}))),w=_.map((()=>({start:new p((()=>0)),end:new p((()=>0))})));d.foreach((({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:l}=o;null!=l&&(u[t].start.apply(n.top,(t=>a(t,l.top))),u[s].end.apply(f[s].bottom-n.bottom,(t=>a(t,l.bottom))),w[i].start.apply(n.left,(t=>a(t,l.left))),w[e].end.apply(_[e].right-n.right,(t=>a(t,l.right))))})),d.foreach((({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:l}=o,r=t=>{const i=this.absolute?l:l.relative(),s=i.left+t.left,e=i.top+t.top,o=i.right-t.right,n=i.bottom-t.bottom;return new h.BBox({left:s,top:e,right:o,bottom:n})};if(null!=n.inner){let h=r(n.inner);if(!1!==n.align){const o=u[t].start.get(l.top),n=u[s].end.get(f[s].bottom-l.bottom),c=w[i].start.get(l.left),a=w[e].end.get(_[e].right-l.right);try{h=r({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=h}else o.inner=l})),d.foreach(((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)}))}}s.Grid=_,_.__name__=\"Grid\";class d extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:0,col:i}))),this.rows=\"fit\"}}s.Row=d,d.__name__=\"Row\";class u extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:i,col:0}))),this.cols=\"fit\"}}s.Column=u,u.__name__=\"Column\"},\n", + " function _(e,t,s,n,i){n();const a=e(125),c=e(124),o=e(43);class r extends a.ContentLayoutable{constructor(e){super(),this.content_size=(0,o.unsized)(e,(()=>new c.Sizeable((0,o.size)(e))))}_content_size(){return this.content_size}}s.ContentBox=r,r.__name__=\"ContentBox\";class _ extends a.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new c.Sizeable(e).bounded_to(this.sizing.size);return(0,o.sized)(this.el,t,(()=>{const e=new c.Sizeable((0,o.content_size)(this.el)),{border:t,padding:s}=(0,o.extents)(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)}))}}s.VariadicBox=_,_.__name__=\"VariadicBox\";class h extends _{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=h,h.__name__=\"CachedVariadicBox\"},\n", + " function _(t,e,i,h,o){h();const s=t(124),r=t(125),n=t(65);class g extends r.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0},this.padding={left:0,top:0,right:0,bottom:0}}*[Symbol.iterator](){yield this.top_panel,yield this.bottom_panel,yield this.left_panel,yield this.right_panel,yield this.center_panel}_measure(t){t=new s.Sizeable({width:\"fixed\"==this.sizing.width_policy||t.width==1/0?this.sizing.width:t.width,height:\"fixed\"==this.sizing.height_policy||t.height==1/0?this.sizing.height:t.height});const e=this.left_panel.measure({width:0,height:t.height}),i=Math.max(e.width,this.min_border.left)+this.padding.left,h=this.right_panel.measure({width:0,height:t.height}),o=Math.max(h.width,this.min_border.right)+this.padding.right,r=this.top_panel.measure({width:t.width,height:0}),n=Math.max(r.height,this.min_border.top)+this.padding.top,g=this.bottom_panel.measure({width:t.width,height:0}),a=Math.max(g.height,this.min_border.bottom)+this.padding.bottom,d=new s.Sizeable(t).shrink_by({left:i,right:o,top:n,bottom:a}),l=this.center_panel.measure(d);return{width:i+l.width+o,height:n+l.height+a,inner:{left:i,right:o,top:n,bottom:a},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const i=this.left_panel.measure({width:0,height:t.height}),h=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:r,top:g,right:a,bottom:d}=e;this.top_panel.set_geometry(new n.BBox({left:r,right:a,bottom:g,height:o.height})),this.bottom_panel.set_geometry(new n.BBox({left:r,right:a,top:d,height:s.height})),this.left_panel.set_geometry(new n.BBox({top:g,bottom:d,right:r,width:i.width})),this.right_panel.set_geometry(new n.BBox({top:g,bottom:d,left:a,width:h.width}))}}i.BorderLayout=g,g.__name__=\"BorderLayout\"},\n", + " function _(t,e,i,s,l){s();const n=t(1);var o;const a=t(119),_=t(10),d=t(20),h=t(120),r=t(123),u=(0,n.__importStar)(t(48));class c extends a.TextAnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new r.SideLayout(t,(()=>this.get_size()),!1):void 0}_get_size(){const{text:t}=this.model,e=new h.TextBox({text:t}),{angle:i,angle_units:s}=this.model;e.angle=(0,_.resolve_angle)(i,s),e.visuals=this.visuals.text.values();const{width:l,height:n}=e.size();return{width:l,height:n}}_render(){const{angle:t,angle_units:e}=this.model,i=(0,_.resolve_angle)(t,e),s=null!=this.layout?this.layout:this.plot_view.frame,l=this.coordinates.x_scale,n=this.coordinates.y_scale;let o=\"data\"==this.model.x_units?l.compute(this.model.x):s.bbox.xview.compute(this.model.x),a=\"data\"==this.model.y_units?n.compute(this.model.y):s.bbox.yview.compute(this.model.y);o+=this.model.x_offset,a-=this.model.y_offset;(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,this.model.text,o,a,i)}}i.LabelView=c,c.__name__=\"LabelView\";class x extends a.TextAnnotation{constructor(t){super(t)}}i.Label=x,o=x,x.__name__=\"Label\",o.prototype.default_view=c,o.mixins([u.Text,[\"border_\",u.Line],[\"background_\",u.Fill]]),o.define((({Number:t,String:e,Angle:i})=>({x:[t],x_units:[d.SpatialUnits,\"data\"],y:[t],y_units:[d.SpatialUnits,\"data\"],text:[e,\"\"],angle:[i,0],angle_units:[d.AngleUnits,\"rad\"],x_offset:[t,0],y_offset:[t,0]}))),o.override({background_fill_color:null,border_line_color:null})},\n", + " function _(t,e,s,i,l){i();const o=t(1);var a;const r=t(69),n=(0,o.__importStar)(t(48)),d=t(20),_=t(43),c=t(120),h=(0,o.__importStar)(t(18)),u=t(11);class v extends r.DataAnnotationView{set_data(t){var e;if(super.set_data(t),null===(e=this.els)||void 0===e||e.forEach((t=>(0,_.remove)(t))),\"css\"==this.model.render_mode){const t=this.els=[...this.text].map((()=>(0,_.div)({style:{display:\"none\"}})));for(const e of t)this.plot_view.canvas_view.add_overlay(e)}else delete this.els}remove(){var t;null===(t=this.els)||void 0===t||t.forEach((t=>(0,_.remove)(t))),super.remove()}_rerender(){\"css\"==this.model.render_mode?this.render():this.request_render()}map_data(){const{x_scale:t,y_scale:e}=this.coordinates,s=null!=this.layout?this.layout:this.plot_view.frame;this.sx=\"data\"==this.model.x_units?t.v_compute(this._x):s.bbox.xview.v_compute(this._x),this.sy=\"data\"==this.model.y_units?e.v_compute(this._y):s.bbox.yview.v_compute(this._y)}paint(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer;for(let s=0,i=this.text.length;s{switch(this.visuals.text.text_align.get(e)){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,c]=(()=>{switch(this.visuals.text.text_baseline.get(e)){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${n}, ${c})`;o&&(h+=`rotate(${o}rad)`),a.style.transformOrigin=`${r} ${d}`,a.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),a.style.backgroundColor=t.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),a.style.borderStyle=t.lineDash.length<2?\"solid\":\"dashed\",a.style.borderWidth=`${t.lineWidth}px`,a.style.borderColor=t.strokeStyle),(0,_.display)(a)}}s.LabelSetView=v,v.__name__=\"LabelSetView\";class x extends r.DataAnnotation{constructor(t){super(t)}}s.LabelSet=x,a=x,x.__name__=\"LabelSet\",a.prototype.default_view=v,a.mixins([n.TextVector,[\"border_\",n.LineVector],[\"background_\",n.FillVector]]),a.define((()=>({x:[h.XCoordinateSpec,{field:\"x\"}],y:[h.YCoordinateSpec,{field:\"y\"}],x_units:[d.SpatialUnits,\"data\"],y_units:[d.SpatialUnits,\"data\"],text:[h.StringSpec,{field:\"text\"}],angle:[h.AngleSpec,0],x_offset:[h.NumberSpec,{value:0}],y_offset:[h.NumberSpec,{value:0}],render_mode:[d.RenderMode,\"canvas\"]}))),a.override({background_fill_color:null,border_line_color:null})},\n", + " function _(t,e,i,l,s){l();const n=t(1);var o;const h=t(40),a=t(215),_=t(20),r=(0,n.__importStar)(t(48)),d=t(15),c=t(123),g=t(121),m=t(65),b=t(9),f=t(8),u=t(11);class x extends h.AnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new c.SideLayout(t,(()=>this.get_size())):void 0}cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.model.border_line_color?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.item_change,(()=>this.request_render()))}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:l,label_width:s}=this.model;this.max_label_height=(0,b.max)([(0,g.font_metrics)(this.visuals.label_text.font_value()).height,l,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,(0,b.max)([n.measureText(e).width,s]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?(0,g.font_metrics)(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const o=Math.max((0,b.max)([...this.text_widths.values()]),0),h=this.model.margin,{legend_padding:a}=this,_=this.model.spacing,{label_standoff:r}=this.model;let d,c;if(\"vertical\"==this.model.orientation)d=t.length*this.max_label_height+Math.max(t.length-1,0)*_+2*a+this.title_height,c=(0,b.max)([o+i+r+2*a,this.title_width+2*a]);else{let e=2*a+Math.max(t.length-1,0)*_;for(const[,t]of this.text_widths)e+=(0,b.max)([t,s])+i+r;c=(0,b.max)([this.title_width+2*a,e]),d=this.max_label_height+this.title_height+2*a}const x=null!=this.layout?this.layout:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if((0,f.isString)(v))switch(v){case\"top_left\":y=p.start+h,k=w.start+h;break;case\"top\":case\"top_center\":y=(p.end+p.start)/2-c/2,k=w.start+h;break;case\"top_right\":y=p.end-h-c,k=w.start+h;break;case\"bottom_right\":y=p.end-h-c,k=w.end-h-d;break;case\"bottom\":case\"bottom_center\":y=(p.end+p.start)/2-c/2,k=w.end-h-d;break;case\"bottom_left\":y=p.start+h,k=w.end-h-d;break;case\"left\":case\"center_left\":y=p.start+h,k=(w.end+w.start)/2-d/2;break;case\"center\":case\"center_center\":y=(p.end+p.start)/2-c/2,k=(w.end+w.start)/2-d/2;break;case\"right\":case\"center_right\":y=p.end-h-c,k=(w.end+w.start)/2-d/2}else if((0,f.isArray)(v)&&2==v.length){const[t,e]=v;y=x.bbox.xview.compute(t),k=x.bbox.yview.compute(e)-d}else(0,u.unreachable)();return new m.BBox({left:y,top:k,width:c,height:d})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=i=s;const a=this.compute_legend_bbox(),_=\"vertical\"==this.model.orientation;for(const r of this.model.items){const d=r.get_labels_list_from_label_prop();for(const c of d){const d=a.x+h,g=a.y+i+this.title_height;let b,f;[b,f]=_?[a.width-2*s,this.max_label_height]:[this.text_widths.get(c)+l+o,this.max_label_height];if(new m.BBox({left:d,top:g,width:b,height:f}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of r.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of r.renderers)t.muted=!t.muted}return!0}_?i+=this.max_label_height+n:h+=this.text_widths.get(c)+l+o+n}}return!1}_render(){if(0==this.model.items.length)return;if(!(0,b.some)(this.model.items,(t=>t.visible)))return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.apply(t),this.visuals.border_line.apply(t)}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=s,a=s;const _=\"vertical\"==this.model.orientation;for(const r of this.model.items){if(!r.visible)continue;const d=r.get_labels_list_from_label_prop(),c=r.get_field_from_label_prop();if(0==d.length)continue;const g=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return(0,b.every)(r.renderers,(t=>t.visible));case\"mute\":return(0,b.every)(r.renderers,(t=>!t.muted))}})();for(const m of d){const d=e.x+h,b=e.y+a+this.title_height,f=d+i,u=b+l;_?a+=this.max_label_height+n:h+=this.text_widths.get(m)+i+o+n,this.visuals.label_text.set_value(t),t.fillText(m,f+o,b+this.max_label_height/2);for(const e of r.renderers){const i=this.plot_view.renderer_view(e);null==i||i.draw_legend(t,d,f,b,u,c,m,r.index)}if(!g){let l,n;[l,n]=_?[e.width-2*s,this.max_label_height]:[this.text_widths.get(m)+i+o,this.max_label_height],t.beginPath(),t.rect(d,b,l,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){const{title:i}=this.model;i&&this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(i,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=x,x.__name__=\"LegendView\";class p extends h.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new d.Signal0(this,\"item_change\")}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=p,o=p,p.__name__=\"Legend\",o.prototype.default_view=x,o.mixins([[\"label_\",r.Text],[\"title_\",r.Text],[\"inactive_\",r.Fill],[\"border_\",r.Line],[\"background_\",r.Fill]]),o.define((({Number:t,String:e,Array:i,Tuple:l,Or:s,Ref:n,Nullable:o})=>({orientation:[_.Orientation,\"vertical\"],location:[s(_.LegendLocation,l(t,t)),\"top_right\"],title:[o(e),null],title_standoff:[t,5],label_standoff:[t,5],glyph_height:[t,20],glyph_width:[t,20],label_height:[t,20],label_width:[t,20],margin:[t,10],padding:[t,10],spacing:[t,3],items:[i(n(a.LegendItem)),[]],click_policy:[_.LegendClickPolicy,\"none\"]}))),o.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n", + " function _(e,r,l,n,t){n();const i=e(1);var s;const o=e(53),a=e(175),_=e(70),u=e(216),d=(0,i.__importStar)(e(18)),c=e(19),f=e(9);class h extends o.Model{constructor(e){super(e)}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!(0,f.includes)(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,(()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()}));this._check_data_sources_on_renderers()||c.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||c.logger.error(`Bad column name on label: ${this.label}`)}get_field_from_label_prop(){const{label:e}=this;return(0,u.isField)(e)?e.field:null}get_labels_list_from_label_prop(){if(!this.visible)return[];if((0,u.isValue)(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof _.ColumnarDataSource){const l=r.get_column(e);return null!=l?(0,f.uniq)(Array.from(l)):[\"Invalid field\"]}}return[]}}l.LegendItem=h,s=h,h.__name__=\"LegendItem\",s.define((({Boolean:e,Int:r,Array:l,Ref:n,Nullable:t})=>({label:[d.NullStringSpec,null],renderers:[l(n(a.GlyphRenderer)),[]],index:[t(r),null],visible:[e,!0]})))},\n", + " function _(i,n,e,t,u){t();const c=i(8);e.isValue=function(i){return(0,c.isPlainObject)(i)&&\"value\"in i},e.isField=function(i){return(0,c.isPlainObject)(i)&&\"field\"in i},e.isExpr=function(i){return(0,c.isPlainObject)(i)&&\"expr\"in i}},\n", + " function _(t,n,e,s,i){s();const o=t(1);var a;const l=t(40),c=(0,o.__importStar)(t(48)),r=t(20);class _ extends l.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{xs:t,ys:n}=this.model;if(t.length!=n.length)return;const e=t.length;if(e<3)return;const{frame:s}=this.plot_view,{ctx:i}=this.layer,o=this.coordinates.x_scale,a=this.coordinates.y_scale,{screen:l}=this.model;function c(t,n,e,s){return l?t:\"data\"==n?e.v_compute(t):s.v_compute(t)}const r=c(t,this.model.xs_units,o,s.bbox.xview),_=c(n,this.model.ys_units,a,s.bbox.yview);i.beginPath();for(let t=0;t({xs:[n(t),[]],xs_units:[r.SpatialUnits,\"data\"],ys:[n(t),[]],ys_units:[r.SpatialUnits,\"data\"]}))),a.internal((({Boolean:t})=>({screen:[t,!1]}))),a.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(e,t,n,o,i){o();const s=e(1);var l;const r=e(40),c=(0,s.__importStar)(e(48));class a extends r.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{gradient:e,y_intercept:t}=this.model;if(null==e||null==t)return;const{frame:n}=this.plot_view,o=this.coordinates.x_scale,i=this.coordinates.y_scale;let s,l,r,c;if(0==e)s=i.compute(t),l=s,r=n.bbox.left,c=r+n.bbox.width;else{s=n.bbox.top,l=s+n.bbox.height;const a=(i.invert(s)-t)/e,_=(i.invert(l)-t)/e;r=o.compute(a),c=o.compute(_)}const{ctx:a}=this.layer;a.save(),a.beginPath(),this.visuals.line.set_value(a),a.moveTo(r,s),a.lineTo(c,l),a.stroke(),a.restore()}}n.SlopeView=a,a.__name__=\"SlopeView\";class _ extends r.Annotation{constructor(e){super(e)}}n.Slope=_,l=_,_.__name__=\"Slope\",l.prototype.default_view=a,l.mixins(c.Line),l.define((({Number:e,Nullable:t})=>({gradient:[t(e),null],y_intercept:[t(e),null]}))),l.override({line_color:\"black\"})},\n", + " function _(e,t,i,o,n){o();const s=e(1);var l;const a=e(40),r=(0,s.__importStar)(e(48)),c=e(20);class d extends a.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.plot_view.request_paint(this)))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,o=this.coordinates.y_scale,n=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,l,a,r;\"width\"==this.model.dimension?(a=n(o,t.bbox.yview),l=t.bbox.left,r=t.bbox.width,s=this.model.line_width):(a=t.bbox.top,l=n(i,t.bbox.xview),r=this.model.line_width,s=t.bbox.height);const{ctx:c}=this.layer;c.save(),c.beginPath(),this.visuals.line.set_value(c),c.moveTo(l,a),\"width\"==this.model.dimension?c.lineTo(l+r,a):c.lineTo(l,a+s),c.stroke(),c.restore()}}i.SpanView=d,d.__name__=\"SpanView\";class _ extends a.Annotation{constructor(e){super(e)}}i.Span=_,l=_,_.__name__=\"Span\",l.prototype.default_view=d,l.mixins(r.Line),l.define((({Number:e,Nullable:t})=>({render_mode:[c.RenderMode,\"canvas\"],location:[t(e),null],location_units:[c.SpatialUnits,\"data\"],dimension:[c.Dimension,\"width\"]}))),l.internal((({Boolean:e})=>({for_hover:[e,!1]}))),l.override({line_color:\"black\"})},\n", + " function _(i,e,t,o,l){var s;o();const a=i(40),_=i(221),n=i(113),r=i(43),h=i(123),b=i(65);class v extends a.AnnotationView{constructor(){super(...arguments),this._invalidate_toolbar=!0,this._previous_bbox=new b.BBox}update_layout(){this.layout=new h.SideLayout(this.panel,(()=>this.get_size()),!0)}initialize(){super.initialize(),this.el=(0,r.div)(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){await super.lazy_initialize(),this._toolbar_view=await(0,n.build_view)(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push((i=>this._toolbar_view.set_visibility(i)))}remove(){this._toolbar_view.remove(),(0,r.remove)(this.el),super.remove()}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{bbox:i}=this.layout;this._previous_bbox.equals(i)||((0,r.position)(this.el,i),this._previous_bbox=i,this._invalidate_toolbar=!0),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",(0,r.empty)(this.el),this.el.appendChild(this._toolbar_view.el),this._toolbar_view.layout.bbox=i,this._toolbar_view.render(),this._invalidate_toolbar=!1),(0,r.display)(this.el)}_get_size(){const{tools:i,logo:e}=this.model.toolbar;return{width:30*i.length+(null!=e?25:0)+15,height:30}}}t.ToolbarPanelView=v,v.__name__=\"ToolbarPanelView\";class d extends a.Annotation{constructor(i){super(i)}}t.ToolbarPanel=d,s=d,d.__name__=\"ToolbarPanel\",s.prototype.default_view=v,s.define((({Ref:i})=>({toolbar:[i(_.Toolbar)]})))},\n", + " function _(t,e,s,i,o){var c;i();const n=t(8),a=t(9),l=t(13),r=t(222),_=t(223),u=t(232),p=t(233);function v(t){switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null}function h(t){return\"tap\"==t||\"pan\"==t}s.Drag=r.Tool,s.Inspection=r.Tool,s.Scroll=r.Tool,s.Tap=r.Tool;class f extends p.ToolbarBase{constructor(t){super(t)}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:s,active_scroll:i,active_tap:o,active_multi:c}=this.properties;this.on_change([t,e,s,i,o,c],(()=>this._init_tools()))}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof u.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if((0,n.isArray)(this.active_inspect)){const t=(0,a.intersection)(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)(0,a.includes)(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of(0,l.values)(this.gestures)){t.tools=(0,a.sort_by)(t.tools,(t=>t.default_order));for(const e of t.tools)this.connect(e.properties.active.change,(()=>this._active_change(e)))}for(const[e,s]of(0,l.entries)(this.gestures)){const i=v(e);if(i){const o=this[i];\"auto\"==o?0!=s.tools.length&&h(e)&&t(s.tools[0]):null!=o&&((0,a.includes)(this.tools,o)?t(o):this[i]=null)}}}}s.Toolbar=f,c=f,f.__name__=\"Toolbar\",c.prototype.default_view=p.ToolbarBaseView,c.define((({Or:t,Ref:e,Auto:i,Null:o})=>({active_drag:[t(e(s.Drag),i,o),\"auto\"],active_inspect:[t(e(s.Inspection),i,o),\"auto\"],active_scroll:[t(e(s.Scroll),i,o),\"auto\"],active_tap:[t(e(s.Tap),i,o),\"auto\"],active_multi:[t(e(_.GestureTool),i,o),\"auto\"]})))},\n", + " function _(t,e,n,o,s){var i;o();const a=t(42),r=t(9),l=t(53);class c extends a.View{get plot_view(){return this.parent}get plot_model(){return this.parent.model}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>{this.model.active?this.activate():this.deactivate()}))}activate(){}deactivate(){}}n.ToolView=c,c.__name__=\"ToolView\";class _ extends l.Model{constructor(t){super(t)}get synthetic_renderers(){return[]}_get_dim_limits([t,e],[n,o],s,i){const a=s.bbox.h_range;let l;\"width\"==i||\"both\"==i?(l=[(0,r.min)([t,n]),(0,r.max)([t,n])],l=[(0,r.max)([l[0],a.start]),(0,r.min)([l[1],a.end])]):l=[a.start,a.end];const c=s.bbox.v_range;let _;return\"height\"==i||\"both\"==i?(_=[(0,r.min)([e,o]),(0,r.max)([e,o])],_=[(0,r.max)([_[0],c.start]),(0,r.min)([_[1],c.end])]):_=[c.start,c.end],[l,_]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}n.Tool=_,i=_,_.__name__=\"Tool\",i.prototype._known_aliases=new Map,i.define((({String:t,Nullable:e})=>({description:[e(t),null]}))),i.internal((({Boolean:t})=>({active:[t,!1]})))},\n", + " function _(e,o,t,s,n){s();const u=e(224),_=e(231);class l extends u.ButtonToolView{}t.GestureToolView=l,l.__name__=\"GestureToolView\";class i extends u.ButtonTool{constructor(e){super(e),this.button_view=_.OnOffButtonView}}t.GestureTool=i,i.__name__=\"GestureTool\"},\n", + " function _(t,e,o,s,i){s();const n=t(1);var l;const r=(0,n.__importDefault)(t(225)),a=t(226),u=t(222),h=t(43),_=t(34),d=t(8),c=t(9),m=(0,n.__importStar)(t(227)),p=m,v=(0,n.__importDefault)(t(228)),f=(0,n.__importDefault)(t(229)),g=t(230);class b extends a.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,s=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new g.ContextMenu(o?(0,c.reversed)(t):t,{orientation:s,prevent_hide:t=>t.target==this.el})}this._hammer=new r.default(this.el,{touchAction:\"auto\",inputClass:r.default.TouchMouseInput}),this.connect(this.model.change,(()=>this.render())),this._hammer.on(\"tap\",(t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()})),this._hammer.on(\"press\",(()=>this._pressed())),this.el.addEventListener(\"keydown\",(t=>{t.keyCode==h.Keys.Enter&&this._clicked()}))}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,v.default,f.default]}css_classes(){return super.css_classes().concat(p.toolbar_button)}render(){(0,h.empty)(this.el);const t=this.model.computed_icon;(0,d.isString)(t)&&((0,_.startsWith)(t,\"data:image\")?this.el.style.backgroundImage=`url(\"${t}\")`:this.el.classList.add(t)),this.el.title=this.model.tooltip,this.el.tabIndex=0,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const e=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{left_of:this.el};case\"left\":return{right_of:this.el};case\"above\":return{below:this.el};case\"below\":return{above:this.el}}})();null===(t=this._menu)||void 0===t||t.toggle(e)}}o.ButtonToolButtonView=b,b.__name__=\"ButtonToolButtonView\";class w extends u.ToolView{}o.ButtonToolView=w,w.__name__=\"ButtonToolView\";class y extends u.Tool{constructor(t){super(t)}_get_dim_tooltip(t){const{description:e,tool_name:o}=this;return null!=e?e:\"both\"==t?o:`${o} (${\"width\"==t?\"x\":\"y\"}-axis)`}get tooltip(){var t;return null!==(t=this.description)&&void 0!==t?t:this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=y,l=y,y.__name__=\"ButtonTool\",l.internal((({Boolean:t})=>({disabled:[t,!1]})))},\n", + " function _(t,e,i,n,r){\n", + " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", + " * http://hammerjs.github.io/\n", + " *\n", + " * Copyright (c) 2016 Jorik Tangelder;\n", + " * Licensed under the MIT license */\n", + " !function(t,i,n,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=i.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,i){return setTimeout(T(t,i),e)}function p(t,e,i){return!!Array.isArray(t)&&(f(t,i[e],i),!0)}function f(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==r)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,n),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===r||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;ni[e]})):n.sort()),n}function x(t,e){for(var i,n,s=e[0].toUpperCase()+e.slice(1),a=0;a1&&!i.firstMultiple?i.firstMultiple=H(e):1===s&&(i.firstMultiple=!1);var o=i.firstInput,a=i.firstMultiple,h=a?a.center:o.center,l=e.center=L(n);e.timeStamp=c(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=G(h,l),e.distance=j(h,l),function(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y});e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}(i,e),e.offsetDirection=V(e.deltaX,e.deltaY);var p=U(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=u(p.x)>u(p.y)?p.x:p.y,e.scale=a?(f=a.pointers,v=n,j(v[0],v[1],W)/j(f[0],f[1],W)):1,e.rotation=a?function(t,e){return G(e[1],e[0],W)+G(t[1],t[0],W)}(a.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,s,o,a=t.lastInterval||e,h=e.timeStamp-a.timeStamp;if(8!=e.eventType&&(h>25||a.velocity===r)){var c=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,p=U(h,c,l);n=p.x,s=p.y,i=u(p.x)>u(p.y)?p.x:p.y,o=V(c,l),t.lastInterval=e}else i=a.velocity,n=a.velocityX,s=a.velocityY,o=a.direction;e.velocity=i,e.velocityX=n,e.velocityY=s,e.direction=o}(i,e);var f,v;var d=t.element;_(e.srcEvent.target,d)&&(d=e.srcEvent.target);e.target=d}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function H(t){for(var e=[],i=0;i=u(e)?t<0?2:4:e<0?8:16}function j(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function G(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}q.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var Z={mousedown:1,mousemove:2,mouseup:4},B=\"mousedown\",$=\"mousemove mouseup\";function J(){this.evEl=B,this.evWin=$,this.pressed=!1,q.apply(this,arguments)}g(J,q,{handler:function(t){var e=Z[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:X,srcEvent:t}))}});var K={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Q={2:N,3:\"pen\",4:X,5:\"kinect\"},tt=\"pointerdown\",et=\"pointermove pointerup pointercancel\";function it(){this.evEl=tt,this.evWin=et,q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(tt=\"MSPointerDown\",et=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(it,q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=K[n],s=Q[t.pointerType]||t.pointerType,o=s==N,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var nt={touchstart:1,touchmove:2,touchend:4,touchcancel:8},rt=\"touchstart\",st=\"touchstart touchmove touchend touchcancel\";function ot(){this.evTarget=rt,this.evWin=st,this.started=!1,q.apply(this,arguments)}function at(t,e){var i=P(t.touches),n=P(t.changedTouches);return 12&e&&(i=D(i.concat(n),\"identifier\",!0)),[i,n]}g(ot,q,{handler:function(t){var e=nt[t.type];if(1===e&&(this.started=!0),this.started){var i=at.call(this,t,e);12&e&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:N,srcEvent:t})}}});var ht={touchstart:1,touchmove:2,touchend:4,touchcancel:8},ut=\"touchstart touchmove touchend touchcancel\";function ct(){this.evTarget=ut,this.targetIds={},q.apply(this,arguments)}function lt(t,e){var i=P(t.touches),n=this.targetIds;if(3&e&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=P(t.changedTouches),a=[],h=this.target;if(s=i.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&n.splice(t,1)}),2500)}}function dt(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i<8&&n(e.options.event+Dt(i)),n(e.options.event),t.additionalEvent&&n(t.additionalEvent),i>=8&&n(e.options.event+Dt(i))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=bt},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return Ot.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=xt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(Mt,Ot,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(zt,Pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[yt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return bt},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Nt,Ot,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(Xt,Ot,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return Rt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return 30&i?e=t.overallVelocity:6&i?e=t.overallVelocityX:i&Y&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=xt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(Yt,Pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Et]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance .bk-divider{cursor:default;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-context-menu.bk-horizontal > .bk-divider{width:1px;margin:5px 0;}.bk-root .bk-context-menu.bk-vertical > .bk-divider{height:1px;margin:0 5px;}.bk-root .bk-context-menu > :not(.bk-divider){border:1px solid transparent;}.bk-root .bk-context-menu > :not(.bk-divider).bk-active{border-color:#26aae1;}.bk-root .bk-context-menu > :not(.bk-divider):hover{background-color:#f9f9f9;}.bk-root .bk-context-menu > :not(.bk-divider):focus,.bk-root .bk-context-menu > :not(.bk-divider):focus-visible{outline:1px dotted #26aae1;outline-offset:-1px;}.bk-root .bk-context-menu > :not(.bk-divider)::-moz-focus-inner{border:0;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child{border-top-left-radius:4px;border-top-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-menu{position:absolute;left:0;width:100%;z-index:100;cursor:pointer;font-size:12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);}.bk-root .bk-menu.bk-above{bottom:100%;}.bk-root .bk-menu.bk-below{top:100%;}.bk-root .bk-menu > .bk-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-menu > :not(.bk-divider){padding:6px 12px;}.bk-root .bk-menu > :not(.bk-divider):hover,.bk-root .bk-menu > :not(.bk-divider).bk-active{background-color:#e6e6e6;}.bk-root .bk-caret{display:inline-block;vertical-align:middle;width:0;height:0;margin:0 5px;}.bk-root .bk-caret.bk-down{border-top:4px solid;}.bk-root .bk-caret.bk-up{border-bottom:4px solid;}.bk-root .bk-caret.bk-down,.bk-root .bk-caret.bk-up{border-right:4px solid transparent;border-left:4px solid transparent;}.bk-root .bk-caret.bk-left{border-right:4px solid;}.bk-root .bk-caret.bk-right{border-left:4px solid;}.bk-root .bk-caret.bk-left,.bk-root .bk-caret.bk-right{border-top:4px solid transparent;border-bottom:4px solid transparent;}\"},\n", + " function _(t,e,i,n,o){n();const s=t(1),l=t(43),h=t(9),r=(0,s.__importStar)(t(229));class d{constructor(t,e={}){var i,n;this.items=t,this.el=(0,l.div)(),this._open=!1,this._item_click=t=>{var e;null===(e=t.handler)||void 0===e||e.call(t),this.hide()},this._on_mousedown=t=>{var e;const{target:i}=t;i instanceof Node&&this.el.contains(i)||(null===(e=this.prevent_hide)||void 0===e?void 0:e.call(this,t))||this.hide()},this._on_keydown=t=>{t.keyCode==l.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},this.orientation=null!==(i=e.orientation)&&void 0!==i?i:\"vertical\",this.reversed=null!==(n=e.reversed)&&void 0!==n&&n,this.prevent_hide=e.prevent_hide,(0,l.undisplay)(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){(0,l.remove)(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=(()=>{if(\"left_of\"in t){const{left:e,top:i}=t.left_of.getBoundingClientRect();return{right:e,top:i}}if(\"right_of\"in t){const{top:e,right:i}=t.right_of.getBoundingClientRect();return{left:i,top:e}}if(\"below\"in t){const{left:e,bottom:i}=t.below.getBoundingClientRect();return{left:e,top:i}}if(\"above\"in t){const{left:e,top:i}=t.above.getBoundingClientRect();return{left:e,bottom:i}}return t})(),n=e.getBoundingClientRect();this.el.style.left=null!=i.left?i.left-n.left+\"px\":\"\",this.el.style.top=null!=i.top?i.top-n.top+\"px\":\"\",this.el.style.right=null!=i.right?n.right-i.right+\"px\":\"\",this.el.style.bottom=null!=i.bottom?n.bottom-i.bottom+\"px\":\"\"}}render(){var t;(0,l.empty)(this.el,!0),(0,l.classes)(this.el).add(\"bk-context-menu\",`bk-${this.orientation}`);const e=this.reversed?(0,h.reversed)(this.items):this.items;for(const i of e){let e;if(null==i)e=(0,l.div)({class:r.divider});else{if(null!=i.if&&!i.if())continue;if(null!=i.content)e=i.content;else{const n=null!=i.icon?(0,l.div)({class:[\"bk-menu-icon\",i.icon]}):null,o=[(null===(t=i.active)||void 0===t?void 0:t.call(i))?\"bk-active\":null,i.class];e=(0,l.div)({class:o,title:i.tooltip,tabIndex:0},n,i.label,i.content),e.addEventListener(\"click\",(()=>{this._item_click(i)})),e.addEventListener(\"keydown\",(t=>{t.keyCode==l.Keys.Enter&&this._item_click(i)}))}}this.el.appendChild(e)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),(0,l.display)(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),(0,l.undisplay)(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=d,d.__name__=\"ContextMenu\"},\n", + " function _(t,e,i,n,o){n();const s=t(1),c=t(224),l=(0,s.__importStar)(t(227)),a=t(43);class _ extends c.ButtonToolButtonView{render(){super.render(),(0,a.classes)(this.el).toggle(l.active,this.model.active)}_clicked(){const{active:t}=this.model;this.model.active=!t}}i.OnOffButtonView=_,_.__name__=\"OnOffButtonView\"},\n", + " function _(e,o,t,n,s){var c;n();const l=e(224),_=e(231);class i extends l.ButtonToolView{}t.InspectToolView=i,i.__name__=\"InspectToolView\";class a extends l.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}}t.InspectTool=a,c=a,a.__name__=\"InspectTool\",c.prototype.button_view=_.OnOffButtonView,c.define((({Boolean:e})=>({toggleable:[e,!0]}))),c.override({active:!0})},\n", + " function _(t,o,e,l,i){l();const s=t(1);var n,a;const r=t(19),c=t(43),h=t(113),_=t(226),u=t(20),v=t(9),d=t(234),p=t(13),b=t(8),g=t(235),f=t(65),m=t(53),w=t(222),y=t(223),T=t(238),z=t(239),x=t(232),B=t(230),C=(0,s.__importStar)(t(227)),k=C,L=(0,s.__importStar)(t(240)),M=L;class S extends m.Model{constructor(t){super(t)}get visible(){var t;return!this.autohide||null!==(t=this._visible)&&void 0!==t&&t}}e.ToolbarViewModel=S,n=S,S.__name__=\"ToolbarViewModel\",n.define((({Boolean:t})=>({autohide:[t,!1]}))),n.internal((({Boolean:t,Nullable:o})=>({_visible:[o(t),null]})));class $ extends _.DOMView{constructor(){super(...arguments),this.layout={bbox:new f.BBox}}initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new S({autohide:this.model.autohide});const{toolbar_location:t}=this.model,o=\"left\"==t||\"above\"==t,e=this.model.horizontal?\"vertical\":\"horizontal\";this._overflow_menu=new B.ContextMenu([],{orientation:e,reversed:o})}async lazy_initialize(){await super.lazy_initialize(),await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,(async()=>{await this._build_tool_button_views(),this.render()})),this.connect(this.model.properties.autohide.change,(()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()})),this.connect(this._toolbar_view_model.properties._visible.change,(()=>this._on_visible_change()))}styles(){return[...super.styles(),C.default,L.default]}remove(){(0,h.remove_views)(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await(0,h.build_views)(this._tool_button_views,t,{parent:this},(t=>t.button_view))}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const{visible:t}=this._toolbar_view_model;(0,c.classes)(this.el).toggle(k.toolbar_hidden,!t)}render(){(0,c.empty)(this.el),this.el.classList.add(k.toolbar),this.el.classList.add(k[this.model.toolbar_location]),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change();const{horizontal:t}=this.model;let o=0;if(null!=this.model.logo){const e=\"grey\"===this.model.logo?M.grey:null,l=(0,c.a)({href:\"https://bokeh.org/\",target:\"_blank\",class:[M.logo,M.logo_small,e]});this.el.appendChild(l);const{width:i,height:s}=l.getBoundingClientRect();o+=t?i:s}for(const[,t]of this._tool_button_views)t.render();const e=[],l=t=>this._tool_button_views.get(t).el,{gestures:i}=this.model;for(const t of(0,p.values)(i))e.push(t.tools.map(l));e.push(this.model.actions.map(l)),e.push(this.model.inspectors.filter((t=>t.toggleable)).map(l));const s=e.filter((t=>0!=t.length)),n=()=>(0,c.div)({class:k.divider}),{bbox:a}=this.layout;let r=!1;this.root.el.appendChild(this._overflow_menu.el);const h=(0,c.div)({class:k.tool_overflow,tabIndex:0},t?\"\\u22ee\":\"\\u22ef\"),_=()=>{const t=(()=>{switch(this.model.toolbar_location){case\"right\":return{left_of:h};case\"left\":return{right_of:h};case\"above\":return{below:h};case\"below\":return{above:h}}})();this._overflow_menu.toggle(t)};h.addEventListener(\"click\",(()=>{_()})),h.addEventListener(\"keydown\",(t=>{t.keyCode==c.Keys.Enter&&_()}));for(const e of(0,d.join)(s,n))if(r)this._overflow_menu.items.push({content:e,class:t?k.right:k.above});else{this.el.appendChild(e);const{width:l,height:i}=e.getBoundingClientRect();if(o+=t?l:i,r=t?o>a.width-15:o>a.height-15,r){this.el.removeChild(e),this.el.appendChild(h);const{items:t}=this._overflow_menu;t.splice(0,t.length),t.push({content:e})}}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}export(t,o=!0){const e=\"png\"==t?\"canvas\":\"svg\",l=new g.CanvasLayer(e,o);return l.resize(0,0),l}}function V(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=$,$.__name__=\"ToolbarBaseView\";class A extends m.Model{constructor(t){super(t)}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map((t=>t.id)));return(0,v.some)(t,(t=>!e.has(t.id)))},o=this.tools.filter((t=>t instanceof x.InspectTool));t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter((t=>t instanceof z.HelpTool));t(this.help,e)&&(this.help=e);const l=this.tools.filter((t=>t instanceof T.ActionTool));t(this.actions,l)&&(this.actions=l);const i=(t,o)=>{t in this.gestures||r.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},s={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof y.GestureTool&&t.event_type)if((0,b.isString)(t.event_type))s[t.event_type].tools.push(t),i(t.event_type,t);else{s.multi.tools.push(t);for(const o of t.event_type)i(o,t)}for(const o of Object.keys(s)){const e=this.gestures[o];t(e.tools,s[o].tools)&&(e.tools=s[o].tools),e.active&&(0,v.every)(e.tools,(t=>t.id!=e.active.id))&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=(0,b.isString)(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(r.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,r.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=A,a=A,A.__name__=\"ToolbarBase\",a.prototype.default_view=$,a.define((({Boolean:t,Array:o,Ref:e,Nullable:l})=>({tools:[o(e(w.Tool)),[]],logo:[l(u.Logo),\"normal\"],autohide:[t,!1]}))),a.internal((({Array:t,Struct:o,Ref:e,Nullable:l})=>{const i=o({tools:t(e(y.GestureTool)),active:l(e(w.Tool))});return{gestures:[o({pan:i,scroll:i,pinch:i,tap:i,doubletap:i,press:i,pressup:i,rotate:i,move:i,multi:i}),V],actions:[t(e(T.ActionTool)),[]],inspectors:[t(e(x.InspectTool)),[]],help:[t(e(z.HelpTool)),[]],toolbar_location:[u.Location,\"right\"]}}))},\n", + " function _(n,o,e,t,f){t();const r=n(9);function*i(n,o){const e=n.length;if(o>e)return;const t=(0,r.range)(o);for(yield t.map((o=>n[o]));;){let f;for(const n of(0,r.reversed)((0,r.range)(o)))if(t[n]!=n+e-o){f=n;break}if(null==f)return;t[f]+=1;for(const n of(0,r.range)(f+1,o))t[n]=t[n-1]+1;yield t.map((o=>n[o]))}}e.enumerate=function*(n){let o=0;for(const e of n)yield[e,o++]},e.join=function*(n,o){let e=!0;for(const t of n)e?e=!1:null!=o&&(yield o()),yield*t},e.combinations=i,e.subsets=function*(n){for(const o of(0,r.range)(n.length+1))yield*i(n,o)}},\n", + " function _(t,e,s,i,n){i();const o=t(236),a=t(65),r=t(43);function h(t){!function(t){void 0===t.lineDash&&Object.defineProperty(t,\"lineDash\",{get:()=>t.getLineDash(),set:e=>t.setLineDash(e)})}(t),function(t){t.setImageSmoothingEnabled=e=>{t.imageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.oImageSmoothingEnabled=e,t.webkitImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e},t.getImageSmoothingEnabled=()=>{const e=t.imageSmoothingEnabled;return null==e||e}}(t),function(t){t.ellipse||(t.ellipse=function(e,s,i,n,o,a,r,h=!1){const l=.551784;t.translate(e,s),t.rotate(o);let c=i,g=n;h&&(c=-i,g=-n),t.moveTo(-c,0),t.bezierCurveTo(-c,g*l,-c*l,g,0,g),t.bezierCurveTo(c*l,g,c,g*l,c,0),t.bezierCurveTo(c,-g*l,c*l,-g,0,-g),t.bezierCurveTo(-c*l,-g,-c,-g*l,-c,0),t.rotate(-o),t.translate(-e,-s)})}(t)}const l={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class c{constructor(t,e){switch(this.backend=t,this.hidpi=e,this.pixel_ratio=1,this.bbox=new a.BBox,t){case\"webgl\":case\"canvas\":{this._el=this._canvas=(0,r.canvas)({style:l});const t=this.canvas.getContext(\"2d\");if(null==t)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=t,e&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const t=new o.SVGRenderingContext2D;this._ctx=t,this._canvas=t.get_svg(),this._el=(0,r.div)({style:l},this._canvas);break}}this._ctx.layer=this,h(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(t,e){this.bbox=new a.BBox({left:0,top:0,width:t,height:e});const s=this._ctx instanceof o.SVGRenderingContext2D?this._ctx:this.canvas;s.width=t*this.pixel_ratio,s.height=e*this.pixel_ratio}undo_transform(t){const{ctx:e}=this;if(void 0===e.getTransform)t(e);else{const s=e.getTransform();e.setTransform(this._base_transform);try{t(e)}finally{e.setTransform(s)}}}prepare(){const{ctx:t,hidpi:e,pixel_ratio:s}=this;t.save(),e&&(t.scale(s,s),t.translate(.5,.5)),void 0!==t.getTransform&&(this._base_transform=t.getTransform()),this.clear()}clear(){const{x:t,y:e,width:s,height:i}=this.bbox;this.ctx.clearRect(t,e,s,i)}finish(){this.ctx.restore()}to_blob(){const{_canvas:t}=this;if(t instanceof HTMLCanvasElement)return null!=t.msToBlob?Promise.resolve(t.msToBlob()):new Promise(((e,s)=>{t.toBlob((t=>null!=t?e(t):s()),\"image/png\")}));{const t=this._ctx.get_serialized_svg(!0),e=new Blob([t],{type:\"image/svg+xml\"});return Promise.resolve(e)}}}s.CanvasLayer=c,c.__name__=\"CanvasLayer\"},\n", + " function _(t,e,i,s,r){s();const n=t(122),a=t(8),o=t(237),l=t(10),h=t(43);function _(t){var e;const i={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return null!==(e=i[t])&&void 0!==e?e:i.start}function c(t){var e;const i={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return null!==(e=i[t])&&void 0!==e?e:i.alphabetic}const p=function(t,e){const i=new Map,s=t.split(\",\");e=null!=e?e:10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const v=b(f),A=b(g);this.lineTo(d+f[0]*r,m+f[1]*r),this.arc(d,m,r,v,A)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(t,e){let i=null;if(t instanceof Path2D)i=t;else{if(\"evenodd\"!=t&&\"nonzero\"!=t&&null!=t||null!=e)throw new Error(\"invalid arguments\");e=t}if(null!=i)throw new Error(\"not implemented\");\"none\"!=this.__currentElement.getAttribute(\"fill\")&&this.__init_element(),\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=e&&this.__currentElement.setAttribute(\"fill-rule\",e),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){(0,h.empty)(this.__defs),(0,h.empty)(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const r=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(r),this.__root.appendChild(r)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[r,n]=this._transform.apply(t,e),[a,o]=this._transform.apply(i,s),l=this.__createElement(\"linearGradient\",{id:this._random_string(),x1:`${r}px`,x2:`${a}px`,y1:`${n}px`,y2:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(l),new d(l,this)}createRadialGradient(t,e,i,s,r,n){if(!isFinite(t+e+i+s+r+n))throw new Error(\"The provided double value is non-finite\");const[a,o]=this._transform.apply(t,e),[l,h]=this._transform.apply(s,r),_=this.__createElement(\"radialGradient\",{id:this._random_string(),cx:`${l}px`,cy:`${h}px`,r:`${n}px`,r0:`${i}px`,fx:`${a}px`,fy:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(_),new d(_,this)}__parseFont(){var t,e,i,s,r;const n=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font);return{style:null!==(t=n[1])&&void 0!==t?t:\"normal\",size:null!==(e=n[4])&&void 0!==e?e:\"10px\",family:null!==(i=n[6])&&void 0!==i?i:\"sans-serif\",weight:null!==(s=n[3])&&void 0!==s?s:\"normal\",decoration:null!==(r=n[2])&&void 0!==r?r:\"normal\"}}__applyText(t,e,i,s){const r=this.__parseFont(),n=this.__createElement(\"text\",{\"font-family\":r.family,\"font-size\":r.size,\"font-style\":r.style,\"font-weight\":r.weight,\"text-decoration\":r.decoration,x:e,y:i,\"text-anchor\":_(this.textAlign),\"dominant-baseline\":c(this.textBaseline)},!0);n.appendChild(this.__document.createTextNode(t)),this._apply_transform(n),this.__currentElement=n,this.__applyStyleToCurrentElement(s);const a=(()=>{if(null!=this._clip_path){const t=this.__createElement(\"g\");return t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(n),t}return n})();this.__root.appendChild(a)}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,r,n=!1){this.ellipse(t,e,i,i,0,s,r,n)}ellipse(t,e,i,s,r,n,a,o=!1){if(!isFinite(t+e+i+s+r+n+a))return;if(i<0||s<0)throw new DOMException(\"IndexSizeError, radius can't be negative\");const h=o?a-n:n-a;n%=2*Math.PI,a%=2*Math.PI;const _=t+i*Math.cos(n),c=e+s*Math.sin(n);this.lineTo(_,c);const p=180*r/Math.PI,u=o?0:1;if(Math.abs(n-a)<2*l.float32_epsilon&&!(Math.abs(h)<2*l.float32_epsilon&&h<0)){const r=t+i*Math.cos(n+Math.PI),a=e+s*Math.sin(n+Math.PI),[o,l]=this._transform.apply(_,c),[h,d]=this._transform.apply(r,a);this.__addPathCommand(o,l,`A ${i} ${s} ${p} 0 ${u} ${h} ${d} A ${i} ${s} ${p} 0 ${u} ${o} ${l}`)}else{const r=t+i*Math.cos(a),l=e+s*Math.sin(a);let h=a-n;h<0&&(h+=2*Math.PI);const _=o!==h>Math.PI?1:0,[c,d]=this._transform.apply(r,l);this.__addPathCommand(c,d,`A ${i} ${s} ${p} ${_} ${u} ${c} ${d}`)}}clip(){const t=this.__createElement(\"clipPath\"),e=this._random_string();this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,r,n,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,r=l,n=h}else if(4==e.length){if([i,s,r,n]=e,!isFinite(i+s+r+n))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(`Inavlid number of arguments passed to drawImage: ${arguments.length}`);if([a,o,l,h,i,s,r,n]=e,!isFinite(a+o+l+h+i+s+r+n))return}const _=this.__root,c=this._transform.clone().translate(i,s);if(t instanceof f||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;c.is_identity&&1==this.globalAlpha&&null==this._clip_path?i=_:(i=this.__createElement(\"g\"),c.is_identity||this._apply_transform(i,c),1!=this.globalAlpha&&i.setAttribute(\"opacity\",`${this.globalAlpha}`),null!=this._clip_path&&i.setAttribute(\"clip-path\",this._clip_path),_.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids.add(t),this.__defs.appendChild(e.cloneNode(!0))}}else i.appendChild(t.cloneNode(!0))}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=r,e.height=n;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,r,n),t=e}this._apply_transform(e,c);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");if(e.setAttribute(\"href\",i),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`);const i=this.__document.createElement(\"canvas\");i.width=r,i.height=n;const s=i.getContext(\"2d\");if(s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,r,n),t=i,this._apply_transform(e,c),e.setAttribute(\"href\",t.toDataURL()),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=this._random_string();if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",`${this._to_number(t.width)}`),i.setAttribute(\"height\",`${this._to_number(t.height)}`),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttribute(\"href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof f){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}return new m(i,this)}getLineDash(){const{lineDash:t}=this;return(0,a.isString)(t)?t.split(\",\").map((t=>parseInt(t))):null==t?[]:t}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return(0,a.isNumber)(t)?t:t.baseVal.value}getTransform(){return this._transform.to_DOMMatrix()}setTransform(...t){let e;e=(0,a.isNumber)(t[0])?new DOMMatrix(t):t[0]instanceof DOMMatrix?t[0]:new DOMMatrix(Object.values(!t[0])),this._transform=n.AffineTransform.from_DOMMatrix(e)}resetTransform(){this._transform=new n.AffineTransform}isPointInPath(...t){throw new Error(\"not implemented\")}isPointInStroke(...t){throw new Error(\"not implemented\")}createImageData(...t){throw new Error(\"not implemented\")}getImageData(t,e,i,s){throw new Error(\"not implemented\")}putImageData(...t){throw new Error(\"not implemented\")}drawFocusIfNeeded(...t){throw new Error(\"not implemented\")}scrollPathIntoView(...t){throw new Error(\"not implemented\")}}i.SVGRenderingContext2D=f,f.__name__=\"SVGRenderingContext2D\",f.__random=o.random},\n", + " function _(e,t,s,n,r){n();const o=2147483647;class i{constructor(e){this.seed=e%o,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%o,this.seed}float(){return(this.integer()-1)/2147483646}floats(e,t=0,s=1){const n=new Array(e);for(let r=0;rthis.doit(o)))}}n.ActionToolView=_,_.__name__=\"ActionToolView\";class d extends s.ButtonTool{constructor(o){super(o),this.button_view=l,this.do=new c.Signal(this,\"do\")}}n.ActionTool=d,d.__name__=\"ActionTool\"},\n", + " function _(o,e,t,l,i){var s;l();const n=o(238),r=o(228);class c extends n.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=c,c.__name__=\"HelpToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=r.tool_icon_help}}t.HelpTool=_,s=_,_.__name__=\"HelpTool\",s.prototype.default_view=c,s.define((({String:o})=>({redirect:[o,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}))),s.override({description:\"Click the question mark to learn more about Bokeh plot tools.\"}),s.register_alias(\"help\",(()=>new _))},\n", + " function _(o,l,g,A,r){A(),g.root=\"bk-root\",g.logo=\"bk-logo\",g.grey=\"bk-grey\",g.logo_small=\"bk-logo-small\",g.logo_notebook=\"bk-logo-notebook\",g.default=\".bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat;}.bk-root .bk-logo.bk-grey{filter:url(\\\"data:image/svg+xml;utf8,#grayscale\\\");filter:gray;-webkit-filter:grayscale(100%);}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px;}\"},\n", + " function _(e,t,s,i,l){i();const o=e(1);var n;const a=e(40),h=e(20),r=e(43),c=(0,o.__importStar)(e(242)),d=c;class p extends a.AnnotationView{initialize(){super.initialize(),this.el=(0,r.div)({class:d.tooltip}),(0,r.undisplay)(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){(0,r.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,(()=>this.render())),this.connect(this.model.properties.position.change,(()=>this._reposition()))}styles(){return[...super.styles(),c.default]}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{content:e}=this.model;null!=e?((0,r.empty)(this.el),(0,r.classes)(this.el).toggle(\"bk-tooltip-custom\",this.model.custom),this.el.appendChild(e),this.model.show_arrow&&this.el.classList.add(d.tooltip_arrow)):(0,r.undisplay)(this.el)}_reposition(){const{position:e}=this.model;if(null==e)return void(0,r.undisplay)(this.el);const[t,s]=e,i=(()=>{const e=this.parent.layout.bbox.relative(),{attachment:i}=this.model;switch(i){case\"horizontal\":return t({attachment:[h.TooltipAttachment,\"horizontal\"],inner_only:[e,!0],show_arrow:[e,!0]}))),n.internal((({Boolean:e,Number:t,Tuple:s,Ref:i,Nullable:l})=>({position:[l(s(t,t)),null],content:[i(HTMLElement),()=>(0,r.div)()],custom:[e]}))),n.override({level:\"overlay\"})},\n", + " function _(o,t,r,e,l){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.left=\"bk-left\",r.tooltip_arrow=\"bk-tooltip-arrow\",r.right=\"bk-right\",r.above=\"bk-above\",r.below=\"bk-below\",r.tooltip_row_label=\"bk-tooltip-row-label\",r.tooltip_row_value=\"bk-tooltip-row-value\",r.tooltip_color_block=\"bk-tooltip-color-block\",r.default='.bk-root{}.bk-root .bk-tooltip{font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;color:#2f2f2f;background-color:white;pointer-events:none;opacity:0.95;z-index:100;}.bk-root .bk-tooltip > div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed;}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599;}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599;}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1;}.bk-root .bk-tooltip-row-value{color:default;}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#dddddd solid 1px;display:inline-block;}'},\n", + " function _(e,t,s,i,r){var a;i();const l=e(115),_=e(112),h=e(113),o=e(48);class n extends l.UpperLowerView{async lazy_initialize(){await super.lazy_initialize();const{lower_head:e,upper_head:t}=this.model;null!=e&&(this.lower_head=await(0,h.build_view)(e,{parent:this})),null!=t&&(this.upper_head=await(0,h.build_view)(t,{parent:this}))}set_data(e){var t,s;super.set_data(e),null===(t=this.lower_head)||void 0===t||t.set_data(e),null===(s=this.upper_head)||void 0===s||s.set_data(e)}paint(e){if(this.visuals.line.doit)for(let t=0,s=this._lower_sx.length;t({lower_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})],upper_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})]}))),a.override({level:\"underlay\"})},\n", + " function _(n,o,t,u,e){u(),e(\"CustomJS\",n(245).CustomJS),e(\"OpenURL\",n(247).OpenURL)},\n", + " function _(t,e,s,n,c){var a;n();const r=t(246),u=t(13),o=t(34);class i extends r.Callback{constructor(t){super(t)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const t=(0,o.use_strict)(this.code);return new Function(...this.names,\"cb_obj\",\"cb_data\",t)}execute(t,e={}){return this.func.apply(t,this.values.concat(t,e))}}s.CustomJS=i,a=i,i.__name__=\"CustomJS\",a.define((({Unknown:t,String:e,Dict:s})=>({args:[s(t),{}],code:[e,\"\"]})))},\n", + " function _(c,a,l,n,s){n();const e=c(53);class o extends e.Model{constructor(c){super(c)}}l.Callback=o,o.__name__=\"Callback\"},\n", + " function _(e,t,n,o,i){var s;o();const c=e(246),r=e(152),a=e(8);class d extends c.Callback{constructor(e){super(e)}navigate(e){this.same_tab?window.location.href=e:window.open(e)}execute(e,{source:t}){const n=e=>{const n=(0,r.replace_placeholders)(this.url,t,e,void 0,void 0,encodeURI);if(!(0,a.isString)(n))throw new Error(\"HTML output is not supported in this context\");this.navigate(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=d,s=d,d.__name__=\"OpenURL\",s.define((({Boolean:e,String:t})=>({url:[t,\"http://\"],same_tab:[e,!1]})))},\n", + " function _(a,n,i,e,r){e(),r(\"Canvas\",a(249).Canvas),r(\"CartesianFrame\",a(126).CartesianFrame),r(\"CoordinateMapping\",a(54).CoordinateMapping)},\n", + " function _(e,t,i,s,a){var l,r=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[i]}})}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)\"default\"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&r(t,e,i);return n(t,e),t};s();const h=e(14),c=e(28),u=e(226),_=e(19),d=e(43),p=e(20),b=e(13),v=e(250),g=e(65),w=e(138),y=e(235);const f=(()=>{let t;return async()=>void 0!==t?t:t=await async function(){const t=document.createElement(\"canvas\"),i=t.getContext(\"webgl\",{premultipliedAlpha:!0});if(null!=i){const s=await(0,w.load_module)(Promise.resolve().then((()=>o(e(410)))));if(null!=s){const e=s.get_regl(i);if(e.has_webgl)return{canvas:t,regl_wrapper:e};_.logger.trace(\"WebGL is supported, but not the required extensions\")}else _.logger.trace(\"WebGL is supported, but bokehjs(.min).js bundle is not available\")}else _.logger.trace(\"WebGL is not supported\");return null}()})(),m={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class x extends u.DOMView{constructor(){super(...arguments),this.bbox=new g.BBox,this.webgl=null}initialize(){super.initialize(),this.underlays_el=(0,d.div)({style:m}),this.primary=this.create_layer(),this.overlays=this.create_layer(),this.overlays_el=(0,d.div)({style:m}),this.events_el=(0,d.div)({class:\"bk-canvas-events\",style:m});const e=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];(0,b.extend)(this.el.style,m),(0,d.append)(this.el,...e),this.ui_event_bus=new v.UIEventBus(this)}async lazy_initialize(){if(await super.lazy_initialize(),\"webgl\"==this.model.output_backend&&(this.webgl=await f(),c.settings.force_webgl&&null==this.webgl))throw new Error(\"webgl is not available\")}remove(){this.ui_event_bus.destroy(),super.remove()}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new g.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const[a,l,r,n]=e,{xview:o,yview:h}=this.bbox,c=o.compute(a),u=h.compute(l+n),_=this.pixel_ratio;t.regl_wrapper.set_scissor(_*c,_*u,_*r,_*n),this._clear_webgl()}}blit_webgl(e){const{webgl:t}=this;if(null!=t){if(_.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}this._clear_webgl()}}_clear_webgl(){const{webgl:e}=this;if(null!=e){const{regl_wrapper:t,canvas:i}=e;t.clear(i.width,i.height)}}compose(){const e=this.create_layer(),{width:t,height:i}=this.bbox;return e.resize(t,i),e.ctx.drawImage(this.primary.canvas,0,0),e.ctx.drawImage(this.overlays.canvas,0,0),e}create_layer(){const{output_backend:e,hidpi:t}=this.model;return new y.CanvasLayer(e,t)}to_blob(){return this.compose().to_blob()}}i.CanvasView=x,x.__name__=\"CanvasView\";class z extends h.HasProps{constructor(e){super(e)}}i.Canvas=z,l=z,z.__name__=\"Canvas\",l.prototype.default_view=x,l.internal((({Boolean:e})=>({hidpi:[e,!0],output_backend:[p.OutputBackend,\"canvas\"]})))},\n", + " function _(t,e,s,n,i){n();const r=t(1),a=(0,r.__importDefault)(t(225)),_=t(15),h=t(19),o=t(43),l=(0,r.__importStar)(t(251)),c=t(252),p=t(9),u=t(8),v=t(27),d=t(230);class g{constructor(t){this.canvas_view=t,this.pan_start=new _.Signal(this,\"pan:start\"),this.pan=new _.Signal(this,\"pan\"),this.pan_end=new _.Signal(this,\"pan:end\"),this.pinch_start=new _.Signal(this,\"pinch:start\"),this.pinch=new _.Signal(this,\"pinch\"),this.pinch_end=new _.Signal(this,\"pinch:end\"),this.rotate_start=new _.Signal(this,\"rotate:start\"),this.rotate=new _.Signal(this,\"rotate\"),this.rotate_end=new _.Signal(this,\"rotate:end\"),this.tap=new _.Signal(this,\"tap\"),this.doubletap=new _.Signal(this,\"doubletap\"),this.press=new _.Signal(this,\"press\"),this.pressup=new _.Signal(this,\"pressup\"),this.move_enter=new _.Signal(this,\"move:enter\"),this.move=new _.Signal(this,\"move\"),this.move_exit=new _.Signal(this,\"move:exit\"),this.scroll=new _.Signal(this,\"scroll\"),this.keydown=new _.Signal(this,\"keydown\"),this.keyup=new _.Signal(this,\"keyup\"),this.hammer=new a.default(this.hit_area,{touchAction:\"auto\",inputClass:a.default.TouchMouseInput}),this._prev_move=null,this._curr_pan=null,this._curr_pinch=null,this._curr_rotate=null,this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",(t=>this._mouse_move(t))),this.hit_area.addEventListener(\"mouseenter\",(t=>this._mouse_enter(t))),this.hit_area.addEventListener(\"mouseleave\",(t=>this._mouse_exit(t))),this.hit_area.addEventListener(\"contextmenu\",(t=>this._context_menu(t))),this.hit_area.addEventListener(\"wheel\",(t=>this._mouse_wheel(t))),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new d.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}get hit_area(){return this.canvas_view.events_el}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",(t=>this._doubletap(t))),this.hammer.on(\"tap\",(t=>this._tap(t))),this.hammer.on(\"press\",(t=>this._press(t))),this.hammer.on(\"pressup\",(t=>this._pressup(t))),this.hammer.get(\"pan\").set({direction:a.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",(t=>this._pan_start(t))),this.hammer.on(\"pan\",(t=>this._pan(t))),this.hammer.on(\"panend\",(t=>this._pan_end(t))),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",(t=>this._pinch_start(t))),this.hammer.on(\"pinch\",(t=>this._pinch(t))),this.hammer.on(\"pinchend\",(t=>this._pinch_end(t))),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",(t=>this._rotate_start(t))),this.hammer.on(\"rotate\",(t=>this._rotate(t))),this.hammer.on(\"rotateend\",(t=>this._rotate_end(t)))}register_tool(t){const e=t.model.event_type;null!=e&&((0,u.isString)(e)?this._register_tool(t,e):e.forEach(((e,s)=>this._register_tool(t,e,s<1))))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},a=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n))),null!=n._doubletap&&n.connect(this.doubletap,r(n._doubletap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(`unsupported event_type: ${e}`)}s&&(null!=n._keydown&&n.connect(this.keydown,a(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,a(n._keyup.bind(n))),v.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(h.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e,s){var n;const i=t.get_renderer_views();for(const t of(0,p.reversed)(i))if(null===(n=t.interactive_hit)||void 0===n?void 0:n.call(t,e,s))return t;return null}set_cursor(t=\"default\"){this.hit_area.style.cursor=t}_hit_test_frame(t,e,s){return t.frame.bbox.contains(e,s)}_hit_test_canvas(t,e,s){return t.layout.bbox.contains(e,s)}_hit_test_plot(t,e){for(const s of this.canvas_view.plot_views)if(s.layout.bbox.relative().contains(t,e))return s;return null}_trigger(t,e,s){var n;const{sx:i,sy:r}=e,a=this._hit_test_plot(i,r),_=t=>{const[s,n]=[i,r];return Object.assign(Object.assign({},e),{sx:s,sy:n})};if(\"panstart\"==e.type||\"pan\"==e.type||\"panend\"==e.type){let n;if(\"panstart\"==e.type&&null!=a?(this._curr_pan={plot_view:a},n=a):\"pan\"==e.type&&null!=this._curr_pan?n=this._curr_pan.plot_view:\"panend\"==e.type&&null!=this._curr_pan?(n=this._curr_pan.plot_view,this._curr_pan=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"pinchstart\"==e.type||\"pinch\"==e.type||\"pinchend\"==e.type){let n;if(\"pinchstart\"==e.type&&null!=a?(this._curr_pinch={plot_view:a},n=a):\"pinch\"==e.type&&null!=this._curr_pinch?n=this._curr_pinch.plot_view:\"pinchend\"==e.type&&null!=this._curr_pinch?(n=this._curr_pinch.plot_view,this._curr_pinch=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"rotatestart\"==e.type||\"rotate\"==e.type||\"rotateend\"==e.type){let n;if(\"rotatestart\"==e.type&&null!=a?(this._curr_rotate={plot_view:a},n=a):\"rotate\"==e.type&&null!=this._curr_rotate?n=this._curr_rotate.plot_view:\"rotateend\"==e.type&&null!=this._curr_rotate?(n=this._curr_rotate.plot_view,this._curr_rotate=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"mouseenter\"==e.type||\"mousemove\"==e.type||\"mouseleave\"==e.type){const h=null===(n=this._prev_move)||void 0===n?void 0:n.plot_view;if(null!=h&&(\"mouseleave\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(h,this.move_exit,{type:\"mouseleave\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&(\"mouseenter\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(a,this.move_enter,{type:\"mouseenter\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&\"mousemove\"==e.type){const e=_();this.__trigger(a,t,e,s)}this._prev_move={sx:i,sy:r,plot_view:a}}else if(null!=a){const e=_();this.__trigger(a,t,e,s)}}__trigger(t,e,s,n){var i,r,a;const _=t.model.toolbar.gestures,h=e.name.split(\":\")[0],o=this._hit_test_renderers(t,s.sx,s.sy),l=this._hit_test_canvas(t,s.sx,s.sy);switch(h){case\"move\":{const n=_.move.active;null!=n&&this.trigger(e,s,n.id);const r=t.model.toolbar.inspectors.filter((t=>t.active));let a=\"default\";null!=o?(a=null!==(i=o.cursor(s.sx,s.sy))&&void 0!==i?i:a,(0,p.is_empty)(r)||(e=this.move_exit)):this._hit_test_frame(t,s.sx,s.sy)&&((0,p.is_empty)(r)||(a=\"crosshair\")),this.set_cursor(a),t.set_toolbar_visibility(l),r.map((t=>this.trigger(e,s,t.id)));break}case\"tap\":{const{target:i}=n;if(null!=i&&i!=this.hit_area)return;if(null===(r=null==o?void 0:o.on_hit)||void 0===r||r.call(o,s.sx,s.sy),this._hit_test_frame(t,s.sx,s.sy)){const t=_.tap.active;null!=t&&this.trigger(e,s,t.id)}break}case\"doubletap\":if(this._hit_test_frame(t,s.sx,s.sy)){const t=null!==(a=_.doubletap.active)&&void 0!==a?a:_.tap.active;null!=t&&this.trigger(e,s,t.id)}break;case\"scroll\":{const t=_[v.is_mobile?\"pinch\":\"scroll\"].active;null!=t&&(n.preventDefault(),n.stopPropagation(),this.trigger(e,s,t.id));break}case\"pan\":{const t=_.pan.active;null!=t&&(n.preventDefault(),this.trigger(e,s,t.id));break}default:{const t=_[h].active;null!=t&&this.trigger(e,s,t.id)}}this._trigger_bokeh_event(t,s)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t,e){const s=(()=>{const{sx:s,sy:n}=e,i=t.frame.x_scale.invert(s),r=t.frame.y_scale.invert(n);switch(e.type){case\"wheel\":return new l.MouseWheel(s,n,i,r,e.delta);case\"mousemove\":return new l.MouseMove(s,n,i,r);case\"mouseenter\":return new l.MouseEnter(s,n,i,r);case\"mouseleave\":return new l.MouseLeave(s,n,i,r);case\"tap\":return new l.Tap(s,n,i,r);case\"doubletap\":return new l.DoubleTap(s,n,i,r);case\"press\":return new l.Press(s,n,i,r);case\"pressup\":return new l.PressUp(s,n,i,r);case\"pan\":return new l.Pan(s,n,i,r,e.deltaX,e.deltaY);case\"panstart\":return new l.PanStart(s,n,i,r);case\"panend\":return new l.PanEnd(s,n,i,r);case\"pinch\":return new l.Pinch(s,n,i,r,e.scale);case\"pinchstart\":return new l.PinchStart(s,n,i,r);case\"pinchend\":return new l.PinchEnd(s,n,i,r);case\"rotate\":return new l.Rotate(s,n,i,r,e.rotation);case\"rotatestart\":return new l.RotateStart(s,n,i,r);case\"rotateend\":return new l.RotateEnd(s,n,i,r);default:return}})();null!=s&&t.model.trigger_event(s)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=(0,o.offset)(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:(0,c.getDeltaY)(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){this._trigger(this.doubletap,this._tap_event(t),t.srcEvent)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEventBus=g,g.__name__=\"UIEventBus\"},\n", + " function _(e,t,s,n,_){n();var a=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function o(e){return function(t){t.prototype.event_name=e}}class r{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=r,r.__name__=\"BokehEvent\";class c extends r{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=c,c.__name__=\"ModelEvent\";let l=class extends r{_to_json(){return{}}};s.DocumentReady=l,l.__name__=\"DocumentReady\",s.DocumentReady=l=a([o(\"document_ready\")],l);let i=class extends c{};s.ButtonClick=i,i.__name__=\"ButtonClick\",s.ButtonClick=i=a([o(\"button_click\")],i);let u=class extends c{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=u,u.__name__=\"MenuItemClick\",s.MenuItemClick=u=a([o(\"menu_item_click\")],u);class d extends c{}s.UIEvent=d,d.__name__=\"UIEvent\";let m=class extends d{};s.LODStart=m,m.__name__=\"LODStart\",s.LODStart=m=a([o(\"lodstart\")],m);let h=class extends d{};s.LODEnd=h,h.__name__=\"LODEnd\",s.LODEnd=h=a([o(\"lodend\")],h);let p=class extends d{constructor(e,t,s,n){super(),this.x0=e,this.x1=t,this.y0=s,this.y1=n}_to_json(){const{x0:e,x1:t,y0:s,y1:n}=this;return Object.assign(Object.assign({},super._to_json()),{x0:e,x1:t,y0:s,y1:n})}};s.RangesUpdate=p,p.__name__=\"RangesUpdate\",s.RangesUpdate=p=a([o(\"rangesupdate\")],p);let x=class extends d{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=x,x.__name__=\"SelectionGeometry\",s.SelectionGeometry=x=a([o(\"selectiongeometry\")],x);let j=class extends d{};s.Reset=j,j.__name__=\"Reset\",s.Reset=j=a([o(\"reset\")],j);class y extends d{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=y,y.__name__=\"PointEvent\";let g=class extends y{constructor(e,t,s,n,_,a){super(e,t,s,n),this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=g,g.__name__=\"Pan\",s.Pan=g=a([o(\"pan\")],g);let P=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=P,P.__name__=\"Pinch\",s.Pinch=P=a([o(\"pinch\")],P);let O=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=O,O.__name__=\"Rotate\",s.Rotate=O=a([o(\"rotate\")],O);let b=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=b,b.__name__=\"MouseWheel\",s.MouseWheel=b=a([o(\"wheel\")],b);let v=class extends y{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=a([o(\"mousemove\")],v);let E=class extends y{};s.MouseEnter=E,E.__name__=\"MouseEnter\",s.MouseEnter=E=a([o(\"mouseenter\")],E);let R=class extends y{};s.MouseLeave=R,R.__name__=\"MouseLeave\",s.MouseLeave=R=a([o(\"mouseleave\")],R);let M=class extends y{};s.Tap=M,M.__name__=\"Tap\",s.Tap=M=a([o(\"tap\")],M);let f=class extends y{};s.DoubleTap=f,f.__name__=\"DoubleTap\",s.DoubleTap=f=a([o(\"doubletap\")],f);let S=class extends y{};s.Press=S,S.__name__=\"Press\",s.Press=S=a([o(\"press\")],S);let D=class extends y{};s.PressUp=D,D.__name__=\"PressUp\",s.PressUp=D=a([o(\"pressup\")],D);let k=class extends y{};s.PanStart=k,k.__name__=\"PanStart\",s.PanStart=k=a([o(\"panstart\")],k);let L=class extends y{};s.PanEnd=L,L.__name__=\"PanEnd\",s.PanEnd=L=a([o(\"panend\")],L);let U=class extends y{};s.PinchStart=U,U.__name__=\"PinchStart\",s.PinchStart=U=a([o(\"pinchstart\")],U);let C=class extends y{};s.PinchEnd=C,C.__name__=\"PinchEnd\",s.PinchEnd=C=a([o(\"pinchend\")],C);let T=class extends y{};s.RotateStart=T,T.__name__=\"RotateStart\",s.RotateStart=T=a([o(\"rotatestart\")],T);let B=class extends y{};s.RotateEnd=B,B.__name__=\"RotateEnd\",s.RotateEnd=B=a([o(\"rotateend\")],B)},\n", + " function _(t,e,n,l,o){\n", + " /*!\n", + " * jQuery Mousewheel 3.1.13\n", + " *\n", + " * Copyright jQuery Foundation and other contributors\n", + " * Released under the MIT license\n", + " * http://jquery.org/license\n", + " */\n", + " function u(t){const e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}l(),n.getDeltaY=function(t){let e=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:e*=(n=t.target,null!==(a=null!==(o=u(null!==(l=n.offsetParent)&&void 0!==l?l:document.body))&&void 0!==o?o:u(n))&&void 0!==a?a:16);break;case t.DOM_DELTA_PAGE:e*=function(t){return t.clientHeight}(t.target)}var n,l,o,a;return e}},\n", + " function _(m,o,n,r,a){r(),a(\"Expression\",m(254).Expression),a(\"CustomJSExpr\",m(255).CustomJSExpr),a(\"Stack\",m(256).Stack),a(\"CumSum\",m(257).CumSum),a(\"ScalarExpression\",m(254).ScalarExpression),a(\"Minimum\",m(258).Minimum),a(\"Maximum\",m(259).Maximum);var s=m(260);a(\"XComponent\",s.XComponent),a(\"YComponent\",s.YComponent),a(\"PolarTransform\",m(261).PolarTransform)},\n", + " function _(e,t,s,i,r){i();const n=e(53);class _ extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}v_compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=_,_.__name__=\"Expression\";class o extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._compute(e),this._result.set(e,t)),t}}s.ScalarExpression=o,o.__name__=\"ScalarExpression\"},\n", + " function _(e,s,t,n,r){var a;n();const o=e(14),c=e(254),i=e(24),u=e(9),l=e(13),h=e(34),g=e(8);class p extends c.Expression{constructor(e){super(e)}connect_signals(){super.connect_signals();for(const e of(0,l.values)(this.args))e instanceof o.HasProps&&e.change.connect((()=>{this._result.clear(),this.change.emit()}))}get names(){return(0,l.keys)(this.args)}get values(){return(0,l.values)(this.args)}get func(){const e=(0,h.use_strict)(this.code);return new i.GeneratorFunction(...this.names,e)}_v_compute(e){const s=this.func.apply(e,this.values);let t=s.next();if(t.done&&void 0!==t.value){const{value:s}=t;return(0,g.isArray)(s)||(0,g.isTypedArray)(s)?s:(0,g.isIterable)(s)?[...s]:(0,u.repeat)(s,e.length)}{const e=[];do{e.push(t.value),t=s.next()}while(!t.done);return e}}}t.CustomJSExpr=p,a=p,p.__name__=\"CustomJSExpr\",a.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n", + " function _(t,n,e,o,r){var s;o();const a=t(254);class c extends a.Expression{constructor(t){super(t)}_v_compute(t){var n;const e=null!==(n=t.get_length())&&void 0!==n?n:0,o=new Float64Array(e);for(const n of this.fields){const r=t.data[n];if(null!=r){const t=Math.min(e,r.length);for(let n=0;n({fields:[n(t),[]]})))},\n", + " function _(e,n,t,o,r){var i;o();const l=e(254);class u extends l.Expression{constructor(e){super(e)}_v_compute(e){var n;const t=new Float64Array(null!==(n=e.get_length())&&void 0!==n?n:0),o=e.data[this.field],r=this.include_zero?1:0;t[0]=this.include_zero?0:o[0];for(let e=1;e({field:[n],include_zero:[e,!1]})))},\n", + " function _(i,n,l,t,e){var a;t();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var n,l;const t=null!==(n=i.data[this.field])&&void 0!==n?n:[];return Math.min(null!==(l=this.initial)&&void 0!==l?l:1/0,(0,r.min)(t))}}l.Minimum=s,a=s,s.__name__=\"Minimum\",a.define((({Number:i,String:n,Nullable:l})=>({field:[n],initial:[l(i),null]})))},\n", + " function _(i,a,n,l,t){var e;l();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var a,n;const l=null!==(a=i.data[this.field])&&void 0!==a?a:[];return Math.max(null!==(n=this.initial)&&void 0!==n?n:-1/0,(0,r.max)(l))}}n.Maximum=s,e=s,s.__name__=\"Maximum\",e.define((({Number:i,String:a,Nullable:n})=>({field:[a],initial:[n(i),null]})))},\n", + " function _(n,e,t,o,r){var s;o();const _=n(254);class m extends _.Expression{constructor(n){super(n)}get x(){return new c({transform:this})}get y(){return new u({transform:this})}}t.CoordinateTransform=m,m.__name__=\"CoordinateTransform\";class a extends _.Expression{constructor(n){super(n)}}t.XYComponent=a,s=a,a.__name__=\"XYComponent\",s.define((({Ref:n})=>({transform:[n(m)]})));class c extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).x}}t.XComponent=c,c.__name__=\"XComponent\";class u extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).y}}t.YComponent=u,u.__name__=\"YComponent\"},\n", + " function _(r,t,n,e,o){e();const i=r(1);var a;const s=r(260),c=r(20),l=(0,i.__importStar)(r(18));class d extends s.CoordinateTransform{constructor(r){super(r)}_v_compute(r){const t=this.properties.radius.uniform(r),n=this.properties.angle.uniform(r),e=\"anticlock\"==this.direction?-1:1,o=Math.min(t.length,n.length),i=new Float64Array(o),a=new Float64Array(o);for(let r=0;r({radius:[l.DistanceSpec,{field:\"radius\"}],angle:[l.AngleSpec,{field:\"angle\"}],direction:[c.Direction,\"anticlock\"]})))},\n", + " function _(e,t,l,r,i){r(),i(\"BooleanFilter\",e(263).BooleanFilter),i(\"CustomJSFilter\",e(264).CustomJSFilter),i(\"Filter\",e(191).Filter),i(\"GroupFilter\",e(265).GroupFilter),i(\"IndexFilter\",e(266).IndexFilter)},\n", + " function _(e,n,l,o,s){var t;o();const a=e(191),r=e(24);class c extends a.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{booleans:l}=this;return null==l?r.Indices.all_set(n):r.Indices.from_booleans(n,l)}}l.BooleanFilter=c,t=c,c.__name__=\"BooleanFilter\",t.define((({Boolean:e,Array:n,Nullable:l})=>({booleans:[l(n(e)),null]})))},\n", + " function _(e,n,r,s,t){var i;s();const o=e(191),c=e(24),u=e(13),a=e(8),l=e(34);class f extends o.Filter{constructor(e){super(e)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const e=(0,l.use_strict)(this.code);return new Function(...this.names,\"source\",e)}compute_indices(e){const n=e.length,r=this.func(...this.values,e);if(null==r)return c.Indices.all_set(n);if((0,a.isArrayOf)(r,a.isInteger))return c.Indices.from_indices(n,r);if((0,a.isArrayOf)(r,a.isBoolean))return c.Indices.from_booleans(n,r);throw new Error(`expect an array of integers or booleans, or null, got ${r}`)}}r.CustomJSFilter=f,i=f,f.__name__=\"CustomJSFilter\",i.define((({Unknown:e,String:n,Dict:r})=>({args:[r(e),{}],code:[n,\"\"]})))},\n", + " function _(n,e,t,o,r){var u;o();const s=n(191),c=n(24),i=n(19);class l extends s.Filter{constructor(n){super(n)}compute_indices(n){const e=n.get_column(this.column_name);if(null==e)return i.logger.warn(`${this}: groupby column '${this.column_name}' not found in the data source`),new c.Indices(n.length,1);{const t=new c.Indices(n.length);for(let n=0;n({column_name:[n],group:[n]})))},\n", + " function _(e,n,i,s,t){var l;s();const c=e(191),r=e(24);class d extends c.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{indices:i}=this;return null==i?r.Indices.all_set(n):r.Indices.from_indices(n,i)}}i.IndexFilter=d,l=d,d.__name__=\"IndexFilter\",l.define((({Int:e,Array:n,Nullable:i})=>({indices:[i(n(e)),null]})))},\n", + " function _(e,a,l,i,t){i(),t(\"AnnularWedge\",e(268).AnnularWedge),t(\"Annulus\",e(269).Annulus),t(\"Arc\",e(270).Arc),t(\"Bezier\",e(271).Bezier),t(\"Circle\",e(272).Circle),t(\"Ellipse\",e(273).Ellipse),t(\"EllipseOval\",e(274).EllipseOval),t(\"Glyph\",e(179).Glyph),t(\"HArea\",e(187).HArea),t(\"HBar\",e(276).HBar),t(\"HexTile\",e(278).HexTile),t(\"Image\",e(279).Image),t(\"ImageRGBA\",e(281).ImageRGBA),t(\"ImageURL\",e(282).ImageURL),t(\"Line\",e(177).Line),t(\"MultiLine\",e(283).MultiLine),t(\"MultiPolygons\",e(284).MultiPolygons),t(\"Oval\",e(285).Oval),t(\"Patch\",e(186).Patch),t(\"Patches\",e(286).Patches),t(\"Quad\",e(287).Quad),t(\"Quadratic\",e(288).Quadratic),t(\"Ray\",e(289).Ray),t(\"Rect\",e(290).Rect),t(\"Scatter\",e(291).Scatter),t(\"Segment\",e(294).Segment),t(\"Spline\",e(295).Spline),t(\"Step\",e(297).Step),t(\"Text\",e(298).Text),t(\"VArea\",e(189).VArea),t(\"VBar\",e(299).VBar),t(\"Wedge\",e(300).Wedge)},\n", + " function _(e,s,t,i,r){i();const n=e(1);var a;const _=e(178),o=e(184),d=e(48),u=e(24),h=e(20),c=(0,n.__importStar)(e(18)),l=e(10),g=e(72),p=e(12);class x extends _.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,u.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,u.to_screen)(this.outer_radius),this.max_souter_radius=(0,p.max)(this.souter_radius)}_render(e,s,t){const{sx:i,sy:r,start_angle:n,end_angle:a,sinner_radius:_,souter_radius:o}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],u=r[t],h=_[t],c=o[t],l=n.get(t),g=a.get(t);if(!isFinite(s+u+h+c+l+g))continue;const p=g-l;e.translate(s,u),e.rotate(l),e.beginPath(),e.moveTo(c,0),e.arc(0,0,c,0,p,d),e.rotate(p),e.lineTo(h,0),e.arc(0,0,h,0,-p,!d),e.closePath(),e.rotate(-p-l),e.translate(-s,-u),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t)}}_hit_point(e){const{sx:s,sy:t}=e,i=this.renderer.xscale.invert(s),r=this.renderer.yscale.invert(t),n=s-this.max_souter_radius,a=s+this.max_souter_radius,[_,o]=this.renderer.xscale.r_invert(n,a),d=t-this.max_souter_radius,u=t+this.max_souter_radius,[h,c]=this.renderer.yscale.r_invert(d,u),p=[];for(const e of this.index.indices({x0:_,x1:o,y0:h,y1:c})){const s=this.souter_radius[e]**2,t=this.sinner_radius[e]**2,[n,a]=this.renderer.xscale.r_compute(i,this._x[e]),[_,o]=this.renderer.yscale.r_compute(r,this._y[e]),d=(n-a)**2+(_-o)**2;d<=s&&d>=t&&p.push(e)}const x=\"anticlock\"==this.model.direction,m=[];for(const e of p){const i=Math.atan2(t-this.sy[e],s-this.sx[e]);(0,l.angle_between)(-i,-this.start_angle.get(e),-this.end_angle.get(e),x)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,o.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=(this.sinner_radius[e]+this.souter_radius[e])/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.AnnularWedgeView=x,x.__name__=\"AnnularWedgeView\";class m extends _.XYGlyph{constructor(e){super(e)}}t.AnnularWedge=m,a=m,m.__name__=\"AnnularWedge\",a.prototype.default_view=x,a.mixins([d.LineVector,d.FillVector,d.HatchVector]),a.define((({})=>({direction:[h.Direction,\"anticlock\"],inner_radius:[c.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[c.DistanceSpec,{field:\"outer_radius\"}],start_angle:[c.AngleSpec,{field:\"start_angle\"}],end_angle:[c.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(s,e,i,r,t){r();const n=s(1);var a;const u=s(178),o=s(24),_=s(48),d=(0,n.__importStar)(s(18)),h=s(27),c=s(72);class l extends u.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,o.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,o.to_screen)(this.outer_radius)}_render(s,e,i){const{sx:r,sy:t,sinner_radius:n,souter_radius:a}=null!=i?i:this;for(const i of e){const e=r[i],u=t[i],o=n[i],_=a[i];if(isFinite(e+u+o+_)){if(s.beginPath(),h.is_ie)for(const i of[!1,!0])s.moveTo(e,u),s.arc(e,u,o,0,Math.PI,i),s.moveTo(e+_,u),s.arc(e,u,_,Math.PI,0,!i);else s.arc(e,u,o,0,2*Math.PI,!0),s.moveTo(e+_,u),s.arc(e,u,_,2*Math.PI,0,!1);this.visuals.fill.apply(s,i),this.visuals.hatch.apply(s,i),this.visuals.line.apply(s,i)}}}_hit_point(s){const{sx:e,sy:i}=s,r=this.renderer.xscale.invert(e),t=this.renderer.yscale.invert(i);let n,a,u,o;if(\"data\"==this.model.properties.outer_radius.units)n=r-this.max_outer_radius,u=r+this.max_outer_radius,a=t-this.max_outer_radius,o=t+this.max_outer_radius;else{const s=e-this.max_outer_radius,r=e+this.max_outer_radius;[n,u]=this.renderer.xscale.r_invert(s,r);const t=i-this.max_outer_radius,_=i+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(t,_)}const _=[];for(const s of this.index.indices({x0:n,x1:u,y0:a,y1:o})){const e=this.souter_radius[s]**2,i=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(r,this._x[s]),[u,o]=this.renderer.yscale.r_compute(t,this._y[s]),d=(n-a)**2+(u-o)**2;d<=e&&d>=i&&_.push(s)}return new c.Selection({indices:_})}draw_legend_for_index(s,{x0:e,y0:i,x1:r,y1:t},n){const a=n+1,u=new Array(a);u[n]=(e+r)/2;const o=new Array(a);o[n]=(i+t)/2;const _=.5*Math.min(Math.abs(r-e),Math.abs(t-i)),d=new Array(a);d[n]=.4*_;const h=new Array(a);h[n]=.8*_,this._render(s,[n],{sx:u,sy:o,sinner_radius:d,souter_radius:h})}}i.AnnulusView=l,l.__name__=\"AnnulusView\";class x extends u.XYGlyph{constructor(s){super(s)}}i.Annulus=x,a=x,x.__name__=\"Annulus\",a.prototype.default_view=l,a.mixins([_.LineVector,_.FillVector,_.HatchVector]),a.define((({})=>({inner_radius:[d.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[d.DistanceSpec,{field:\"outer_radius\"}]})))},\n", + " function _(e,i,s,t,n){t();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),_=e(24),o=e(20),u=(0,r.__importStar)(e(18));class h extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,_.to_screen)(this.radius)}_render(e,i,s){if(this.visuals.line.doit){const{sx:t,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=s?s:this,d=\"anticlock\"==this.model.direction;for(const s of i){const i=t[s],l=n[s],_=r[s],o=a.get(s),u=c.get(s);isFinite(i+l+_+o+u)&&(e.beginPath(),e.arc(i,l,_,o,u,d),this.visuals.line.set_vectorize(e,s),e.stroke())}}}draw_legend_for_index(e,i,s){(0,d.generic_line_vector_legend)(this.visuals,e,i,s)}}s.ArcView=h,h.__name__=\"ArcView\";class g extends c.XYGlyph{constructor(e){super(e)}}s.Arc=g,a=g,g.__name__=\"Arc\",a.prototype.default_view=h,a.mixins(l.LineVector),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[u.DistanceSpec,{field:\"radius\"}],start_angle:[u.AngleSpec,{field:\"start_angle\"}],end_angle:[u.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(e,t,i,n,s){n();const o=e(1);var c;const r=e(48),a=e(179),_=e(184),d=e(78),l=(0,o.__importStar)(e(18));function x(e,t,i,n,s,o,c,r){const a=[],_=[[],[]];for(let _=0;_<=2;_++){let d,l,x;if(0===_?(l=6*e-12*i+6*s,d=-3*e+9*i-9*s+3*c,x=3*i-3*e):(l=6*t-12*n+6*o,d=-3*t+9*n-9*o+3*r,x=3*n-3*t),Math.abs(d)<1e-12){if(Math.abs(l)<1e-12)continue;const e=-x/l;0({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx0:[l.XCoordinateSpec,{field:\"cx0\"}],cy0:[l.YCoordinateSpec,{field:\"cy0\"}],cx1:[l.XCoordinateSpec,{field:\"cx1\"}],cy1:[l.YCoordinateSpec,{field:\"cy1\"}]}))),c.mixins(r.LineVector)},\n", + " function _(s,i,e,t,r){t();const a=s(1);var n;const h=s(178),d=s(48),l=s(24),_=s(20),c=(0,a.__importStar)(s(185)),u=(0,a.__importStar)(s(18)),o=s(9),x=s(12),m=s(72);class p extends h.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(null!=i&&i.regl_wrapper.has_webgl){const{CircleGL:e}=await Promise.resolve().then((()=>(0,a.__importStar)(s(423))));this.glglyph=new e(i.regl_wrapper,this)}}get use_radius(){return!(this.radius.is_Scalar()&&isNaN(this.radius.value))}_set_data(s){super._set_data(s);const i=(()=>{if(this.use_radius)return 2*this.max_radius;{const{size:s}=this;return s.is_Scalar()?s.value:(0,x.max)(s.array)}})();this._configure(\"max_size\",{value:i})}_map_data(){if(this.use_radius)if(\"data\"==this.model.properties.radius.units)switch(this.model.radius_dimension){case\"x\":this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius);break;case\"y\":this.sradius=this.sdist(this.renderer.yscale,this._y,this.radius);break;case\"max\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.max(s,i[e])));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.min(s,i[e])));break}}else this.sradius=(0,l.to_screen)(this.radius);else{const s=l.ScreenArray.from(this.size);this.sradius=(0,x.map)(s,(s=>s/2))}}_mask_data(){const{frame:s}=this.renderer.plot_view,i=s.x_target,e=s.y_target;let t,r;return this.use_radius&&\"data\"==this.model.properties.radius.units?(t=i.map((s=>this.renderer.xscale.invert(s))).widen(this.max_radius),r=e.map((s=>this.renderer.yscale.invert(s))).widen(this.max_radius)):(t=i.widen(this.max_size).map((s=>this.renderer.xscale.invert(s))),r=e.widen(this.max_size).map((s=>this.renderer.yscale.invert(s)))),this.index.indices({x0:t.start,x1:t.end,y0:r.start,y1:r.end})}_render(s,i,e){const{sx:t,sy:r,sradius:a}=null!=e?e:this;for(const e of i){const i=t[e],n=r[e],h=a[e];isFinite(i+n+h)&&(s.beginPath(),s.arc(i,n,h,0,2*Math.PI,!1),this.visuals.fill.apply(s,e),this.visuals.hatch.apply(s,e),this.visuals.line.apply(s,e))}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e),{hit_dilation:a}=this.model;let n,h,d,l;if(this.use_radius&&\"data\"==this.model.properties.radius.units)n=t-this.max_radius*a,h=t+this.max_radius*a,d=r-this.max_radius*a,l=r+this.max_radius*a;else{const s=i-this.max_size*a,t=i+this.max_size*a;[n,h]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size*a,_=e+this.max_size*a;[d,l]=this.renderer.yscale.r_invert(r,_)}const _=this.index.indices({x0:n,x1:h,y0:d,y1:l}),c=[];if(this.use_radius&&\"data\"==this.model.properties.radius.units)for(const s of _){const i=(this.sradius[s]*a)**2,[e,n]=this.renderer.xscale.r_compute(t,this._x[s]),[h,d]=this.renderer.yscale.r_compute(r,this._y[s]);(e-n)**2+(h-d)**2<=i&&c.push(s)}else for(const s of _){const t=(this.sradius[s]*a)**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&c.push(s)}return new m.Selection({indices:c})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new m.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new m.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=(0,o.range)(0,this.sx.length),r=[];for(let s=0,a=t.length;s({angle:[u.AngleSpec,0],size:[u.ScreenSizeSpec,{value:4}],radius:[u.NullDistanceSpec,null],radius_dimension:[_.RadiusDimension,\"x\"],hit_dilation:[s,1]})))},\n", + " function _(e,l,s,i,_){var p;i();const t=e(274);class a extends t.EllipseOvalView{}s.EllipseView=a,a.__name__=\"EllipseView\";class n extends t.EllipseOval{constructor(e){super(e)}}s.Ellipse=n,p=n,n.__name__=\"Ellipse\",p.prototype.default_view=a},\n", + " function _(t,s,e,i,h){i();const n=t(1),r=t(275),a=(0,n.__importStar)(t(185)),l=t(24),_=t(72),o=(0,n.__importStar)(t(18));class d extends r.CenterRotatableView{_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"):this.sw=(0,l.to_screen)(this.width),\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"):this.sh=(0,l.to_screen)(this.height)}_render(t,s,e){const{sx:i,sy:h,sw:n,sh:r,angle:a}=null!=e?e:this;for(const e of s){const s=i[e],l=h[e],_=n[e],o=r[e],d=a.get(e);isFinite(s+l+_+o+d)&&(t.beginPath(),t.ellipse(s,l,_/2,o/2,d,0,2*Math.PI),this.visuals.fill.apply(t,e),this.visuals.hatch.apply(t,e),this.visuals.line.apply(t,e))}}_hit_point(t){let s,e,i,h,n,r,l,o,d;const{sx:c,sy:p}=t,w=this.renderer.xscale.invert(c),x=this.renderer.yscale.invert(p);\"data\"==this.model.properties.width.units?(s=w-this.max_width,e=w+this.max_width):(r=c-this.max_width,l=c+this.max_width,[s,e]=this.renderer.xscale.r_invert(r,l)),\"data\"==this.model.properties.height.units?(i=x-this.max_height,h=x+this.max_height):(o=p-this.max_height,d=p+this.max_height,[i,h]=this.renderer.yscale.r_invert(o,d));const m=this.index.indices({x0:s,x1:e,y0:i,y1:h}),y=[];for(const t of m)n=a.point_in_ellipse(c,p,this.angle.get(t),this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new _.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:e,x1:i,y1:h},n){const r=n+1,a=new Array(r);a[n]=(s+i)/2;const l=new Array(r);l[n]=(e+h)/2;const _=this.sw[n]/this.sh[n],d=.8*Math.min(Math.abs(i-s),Math.abs(h-e)),c=new Array(r),p=new Array(r);_>1?(c[n]=d,p[n]=d/_):(c[n]=d*_,p[n]=d);const w=new o.UniformScalar(0,r);this._render(t,[n],{sx:a,sy:l,sw:c,sh:p,angle:w})}}e.EllipseOvalView=d,d.__name__=\"EllipseOvalView\";class c extends r.CenterRotatable{constructor(t){super(t)}}e.EllipseOval=c,c.__name__=\"EllipseOval\"},\n", + " function _(e,t,i,a,n){a();const s=e(1);var r;const h=e(178),o=e(48),_=(0,s.__importStar)(e(18));class c extends h.XYGlyphView{get max_w2(){return\"data\"==this.model.properties.width.units?this.max_width/2:0}get max_h2(){return\"data\"==this.model.properties.height.units?this.max_height/2:0}_bounds({x0:e,x1:t,y0:i,y1:a}){const{max_w2:n,max_h2:s}=this;return{x0:e-n,x1:t+n,y0:i-s,y1:a+s}}}i.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class l extends h.XYGlyph{constructor(e){super(e)}}i.CenterRotatable=l,r=l,l.__name__=\"CenterRotatable\",r.mixins([o.LineVector,o.FillVector,o.HatchVector]),r.define((({})=>({angle:[_.AngleSpec,0],width:[_.DistanceSpec,{field:\"width\"}],height:[_.DistanceSpec,{field:\"height\"}]})))},\n", + " function _(t,e,s,i,r){i();const h=t(1);var a;const n=t(277),_=t(24),o=(0,h.__importStar)(t(18));class l extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){const e=this._left[t],s=this._right[t],i=this._y[t],r=this.height.get(t)/2;return[Math.min(e,s),Math.max(e,s),i+r,i-r]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new _.ScreenArray(t),this.sbottom=new _.ScreenArray(t);for(let e=0;e({left:[o.XCoordinateSpec,{value:0}],y:[o.YCoordinateSpec,{field:\"y\"}],height:[o.NumberSpec,{value:1}],right:[o.XCoordinateSpec,{field:\"right\"}]})))},\n", + " function _(t,e,s,r,i){var n;r();const a=t(48),h=t(179),o=t(184),c=t(72);class _ extends h.GlyphView{get_anchor_point(t,e,s){const r=Math.min(this.sleft[e],this.sright[e]),i=Math.max(this.sright[e],this.sleft[e]),n=Math.min(this.stop[e],this.sbottom[e]),a=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\"top_left\":return{x:r,y:n};case\"top\":case\"top_center\":return{x:(r+i)/2,y:n};case\"top_right\":return{x:i,y:n};case\"bottom_left\":return{x:r,y:a};case\"bottom\":case\"bottom_center\":return{x:(r+i)/2,y:a};case\"bottom_right\":return{x:i,y:a};case\"left\":case\"center_left\":return{x:r,y:(n+a)/2};case\"center\":case\"center_center\":return{x:(r+i)/2,y:(n+a)/2};case\"right\":case\"center_right\":return{x:i,y:(n+a)/2}}}_index_data(t){const{min:e,max:s}=Math,{data_size:r}=this;for(let i=0;i(0,n.__importStar)(e(425))));this.glglyph=new s(t.regl_wrapper,this)}}scenterxy(e){return[this.sx[e],this.sy[e]]}_set_data(){const{orientation:e,size:t,aspect_scale:s}=this.model,{q:i,r}=this,n=this.q.length;this._x=new Float64Array(n),this._y=new Float64Array(n);const{_x:a,_y:l}=this,o=Math.sqrt(3);if(\"pointytop\"==e)for(let e=0;e({r:[c.NumberSpec,{field:\"r\"}],q:[c.NumberSpec,{field:\"q\"}],scale:[c.NumberSpec,1],size:[e,1],aspect_scale:[e,1],orientation:[_.HexTileOrientation,\"pointytop\"]}))),a.override({line_color:null})},\n", + " function _(e,a,t,_,r){var n;_();const s=e(280),o=e(173),i=e(201);class p extends s.ImageBaseView{connect_signals(){super.connect_signals(),this.connect(this.model.color_mapper.change,(()=>this._update_image()))}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}t.ImageView=p,p.__name__=\"ImageView\";class m extends s.ImageBase{constructor(e){super(e)}}t.Image=m,n=m,m.__name__=\"Image\",n.prototype.default_view=p,n.define((({Ref:e})=>({color_mapper:[e(o.ColorMapper),()=>new i.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})))},\n", + " function _(e,t,i,s,a){s();const h=e(1);var n;const r=e(178),_=e(24),d=(0,h.__importStar)(e(18)),l=e(72),g=e(9),o=e(29),c=e(11);class m extends r.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_render(e,t,i){const{image_data:s,sx:a,sy:h,sw:n,sh:r,global_alpha:_}=null!=i?i:this,d=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1);const l=_.is_Scalar();l&&(e.globalAlpha=_.value);for(const i of t){const t=s[i],_=a[i],d=h[i],g=n[i],o=r[i],c=this.global_alpha.get(i);if(null==t||!isFinite(_+d+g+o+c))continue;l||(e.globalAlpha=c);const m=d;e.translate(0,m),e.scale(1,-1),e.translate(0,-m),e.drawImage(t,0|_,0|d,g,o),e.translate(0,m),e.scale(1,-1),e.translate(0,-m)}e.setImageSmoothingEnabled(d)}_set_data(e){this._set_width_heigh_data();for(let t=0,i=this.image.length;t({image:[d.NDArraySpec,{field:\"image\"}],dw:[d.DistanceSpec,{field:\"dw\"}],dh:[d.DistanceSpec,{field:\"dh\"}],global_alpha:[d.NumberSpec,{value:1}],dilate:[e,!1]})))},\n", + " function _(e,a,t,r,_){var n;r();const s=e(280),m=e(8);class i extends s.ImageBaseView{_flat_img_to_buf8(e){let a;return a=(0,m.isArray)(e)?new Uint32Array(e):e,new Uint8ClampedArray(a.buffer)}}t.ImageRGBAView=i,i.__name__=\"ImageRGBAView\";class g extends s.ImageBase{constructor(e){super(e)}}t.ImageRGBA=g,n=g,g.__name__=\"ImageRGBA\",n.prototype.default_view=i},\n", + " function _(e,t,s,r,a){r();const i=e(1);var n;const o=e(178),c=e(24),_=e(20),h=(0,i.__importStar)(e(18)),l=e(12),d=e(136);class m extends o.XYGlyphView{constructor(){super(...arguments),this._images_rendered=!1,this._set_data_iteration=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_index_data(e){const{data_size:t}=this;for(let s=0;s{this._set_data_iteration==r&&(this.image[a]=e,this.renderer.request_render())},attempts:t+1,timeout:s})}const a=\"data\"==this.model.properties.w.units,i=\"data\"==this.model.properties.h.units,n=this._x.length,o=new c.ScreenArray(a?2*n:n),_=new c.ScreenArray(i?2*n:n),{anchor:h}=this.model;function m(e,t){switch(h){case\"top_left\":case\"bottom_left\":case\"left\":case\"center_left\":return[e,e+t];case\"top\":case\"top_center\":case\"bottom\":case\"bottom_center\":case\"center\":case\"center_center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"right\":case\"center_right\":return[e-t,e]}}function g(e,t){switch(h){case\"top_left\":case\"top\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"left\":case\"center_left\":case\"center\":case\"center_center\":case\"right\":case\"center_right\":return[e+t/2,e-t/2]}}if(a)for(let e=0;e({url:[h.StringSpec,{field:\"url\"}],anchor:[_.Anchor,\"top_left\"],global_alpha:[h.NumberSpec,{value:1}],angle:[h.AngleSpec,0],w:[h.NullDistanceSpec,null],h:[h.NullDistanceSpec,null],dilate:[e,!1],retry_attempts:[t,0],retry_timeout:[t,0]})))},\n", + " function _(e,t,s,i,n){i();const o=e(1);var r;const l=e(78),_=e(48),c=(0,o.__importStar)(e(185)),h=(0,o.__importStar)(e(18)),a=e(12),d=e(13),x=e(179),y=e(184),g=e(72);class p extends x.GlyphView{_project_data(){l.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s0&&o.set(e,s)}return new g.Selection({indices:[...o.keys()],multiline_indices:(0,d.to_object)(o)})}get_interpolation_hit(e,t,s){const i=this._xs.get(e),n=this._ys.get(e),o=i[t],r=n[t],l=i[t+1],_=n[t+1];return(0,y.line_interpolation)(this.renderer,s,o,r,l,_)}draw_legend_for_index(e,t,s){(0,y.generic_line_vector_legend)(this.visuals,e,t,s)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}s.MultiLineView=p,p.__name__=\"MultiLineView\";class u extends x.Glyph{constructor(e){super(e)}}s.MultiLine=u,r=u,u.__name__=\"MultiLine\",r.prototype.default_view=p,r.define((({})=>({xs:[h.XCoordinateSeqSpec,{field:\"xs\"}],ys:[h.YCoordinateSeqSpec,{field:\"ys\"}]}))),r.mixins(_.LineVector)},\n", + " function _(t,e,s,n,i){n();const o=t(1);var r;const l=t(181),h=t(179),a=t(184),_=t(12),c=t(12),d=t(48),x=(0,o.__importStar)(t(185)),y=(0,o.__importStar)(t(18)),f=t(72),g=t(11);class p extends h.GlyphView{_project_data(){}_index_data(t){const{min:e,max:s}=Math,{data_size:n}=this;for(let i=0;i1&&c.length>1)for(let s=1,n=i.length;s1){let r=!1;for(let t=1;t({xs:[y.XCoordinateSeqSeqSeqSpec,{field:\"xs\"}],ys:[y.YCoordinateSeqSeqSeqSpec,{field:\"ys\"}]}))),r.mixins([d.LineVector,d.FillVector,d.HatchVector])},\n", + " function _(a,e,l,s,_){var t;s();const i=a(274),n=a(12);class p extends i.EllipseOvalView{_map_data(){super._map_data(),(0,n.mul)(this.sw,.75)}}l.OvalView=p,p.__name__=\"OvalView\";class v extends i.EllipseOval{constructor(a){super(a)}}l.Oval=v,t=v,v.__name__=\"Oval\",t.prototype.default_view=p},\n", + " function _(e,t,s,i,n){i();const r=e(1);var a;const o=e(179),c=e(184),_=e(12),h=e(48),l=(0,r.__importStar)(e(185)),d=(0,r.__importStar)(e(18)),y=e(72),p=e(11),x=e(78);class f extends o.GlyphView{_project_data(){x.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s({xs:[d.XCoordinateSeqSpec,{field:\"xs\"}],ys:[d.YCoordinateSeqSpec,{field:\"ys\"}]}))),a.mixins([h.LineVector,h.FillVector,h.HatchVector])},\n", + " function _(t,e,i,o,r){o();const s=t(1);var a;const n=t(277),l=(0,s.__importStar)(t(18));class _ extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:i}=await Promise.resolve().then((()=>(0,s.__importStar)(t(427))));this.glglyph=new i(e.regl_wrapper,this)}}scenterxy(t){return[this.sleft[t]/2+this.sright[t]/2,this.stop[t]/2+this.sbottom[t]/2]}_lrtb(t){return[this._left[t],this._right[t],this._top[t],this._bottom[t]]}}i.QuadView=_,_.__name__=\"QuadView\";class p extends n.Box{constructor(t){super(t)}}i.Quad=p,a=p,p.__name__=\"Quad\",a.prototype.default_view=_,a.define((({})=>({right:[l.XCoordinateSpec,{field:\"right\"}],bottom:[l.YCoordinateSpec,{field:\"bottom\"}],left:[l.XCoordinateSpec,{field:\"left\"}],top:[l.YCoordinateSpec,{field:\"top\"}]})))},\n", + " function _(e,t,i,n,s){n();const c=e(1);var o;const r=e(48),a=e(78),_=e(179),d=e(184),l=(0,c.__importStar)(e(18));function x(e,t,i){if(t==(e+i)/2)return[e,i];{const n=(e-t)/(e-2*t+i),s=e*(1-n)**2+2*t*(1-n)*n+i*n**2;return[Math.min(e,i,s),Math.max(e,i,s)]}}class y extends _.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{_x0:t,_x1:i,_y0:n,_y1:s,_cx:c,_cy:o,data_size:r}=this;for(let a=0;a({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx:[l.XCoordinateSpec,{field:\"cx\"}],cy:[l.YCoordinateSpec,{field:\"cy\"}]}))),o.mixins(r.LineVector)},\n", + " function _(e,t,s,i,n){i();const l=e(1);var a;const r=e(178),o=e(184),h=e(48),_=e(24),c=(0,l.__importStar)(e(18));class g extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this.length):this.slength=(0,_.to_screen)(this.length);const{width:e,height:t}=this.renderer.plot_view.frame.bbox,s=2*(e+t),{slength:i}=this;for(let e=0,t=i.length;e({length:[c.DistanceSpec,0],angle:[c.AngleSpec,0]})))},\n", + " function _(t,e,s,i,r){var n,h=this&&this.__createBinding||(Object.create?function(t,e,s,i){void 0===i&&(i=s),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[s]}})}:function(t,e,s,i){void 0===i&&(i=s),t[i]=e[s]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var s in t)\"default\"!==s&&Object.prototype.hasOwnProperty.call(t,s)&&h(e,t,s);return a(e,t),e};i();const o=t(275),c=t(184),_=t(24),d=t(12),f=t(72);class y extends o.CenterRotatableView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null==e?void 0:e.regl_wrapper.has_webgl){const{RectGL:s}=await Promise.resolve().then((()=>l(t(429))));this.glglyph=new s(e.regl_wrapper,this)}}_map_data(){if(\"data\"==this.model.properties.width.units)[this.sw,this.sx0]=this._map_dist_corner_for_data_side_length(this._x,this.width,this.renderer.xscale);else{this.sw=(0,_.to_screen)(this.width);const t=this.sx.length;this.sx0=new _.ScreenArray(t);for(let e=0;e({dilate:[t,!1]})))},\n", + " function _(e,t,r,a,s){a();const i=e(1);var n;const l=e(292),_=e(293),c=(0,i.__importStar)(e(18));class o extends l.MarkerView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null!=t&&t.regl_wrapper.has_webgl){const{MultiMarkerGL:r}=await Promise.resolve().then((()=>(0,i.__importStar)(e(428))));this.glglyph=new r(t.regl_wrapper,this)}}_render(e,t,r){const{sx:a,sy:s,size:i,angle:n,marker:l}=null!=r?r:this;for(const r of t){const t=a[r],c=s[r],o=i.get(r),g=n.get(r),w=l.get(r);if(!isFinite(t+c+o+g)||null==w)continue;const p=o/2;e.beginPath(),e.translate(t,c),g&&e.rotate(g),_.marker_funcs[w](e,r,p,this.visuals),g&&e.rotate(-g),e.translate(-t,-c)}}draw_legend_for_index(e,{x0:t,x1:r,y0:a,y1:s},i){const n=i+1,l=this.marker.get(i),_=Object.assign(Object.assign({},this._get_legend_args({x0:t,x1:r,y0:a,y1:s},i)),{marker:new c.UniformScalar(l,n)});this._render(e,[i],_)}}r.ScatterView=o,o.__name__=\"ScatterView\";class g extends l.Marker{constructor(e){super(e)}}r.Scatter=g,n=g,g.__name__=\"Scatter\",n.prototype.default_view=o,n.define((()=>({marker:[c.MarkerSpec,{value:\"circle\"}]})))},\n", + " function _(e,t,s,n,i){n();const r=e(1);var a;const c=e(178),o=e(48),_=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),l=e(9),x=e(72);class d extends c.XYGlyphView{_render(e,t,s){const{sx:n,sy:i,size:r,angle:a}=null!=s?s:this;for(const s of t){const t=n[s],c=i[s],o=r.get(s),_=a.get(s);if(!isFinite(t+c+o+_))continue;const h=o/2;e.beginPath(),e.translate(t,c),_&&e.rotate(_),this._render_one(e,s,h,this.visuals),_&&e.rotate(-_),e.translate(-t,-c)}}_mask_data(){const{x_target:e,y_target:t}=this.renderer.plot_view.frame,s=e.widen(this.max_size).map((e=>this.renderer.xscale.invert(e))),n=t.widen(this.max_size).map((e=>this.renderer.yscale.invert(e)));return this.index.indices({x0:s.start,x1:s.end,y0:n.start,y1:n.end})}_hit_point(e){const{sx:t,sy:s}=e,{max_size:n}=this,{hit_dilation:i}=this.model,r=t-n*i,a=t+n*i,[c,o]=this.renderer.xscale.r_invert(r,a),_=s-n*i,h=s+n*i,[l,d]=this.renderer.yscale.r_invert(_,h),y=this.index.indices({x0:c,x1:o,y0:l,y1:d}),g=[];for(const e of y){const n=this.size.get(e)/2*i;Math.abs(this.sx[e]-t)<=n&&Math.abs(this.sy[e]-s)<=n&&g.push(e)}return new x.Selection({indices:g})}_hit_span(e){const{sx:t,sy:s}=e,n=this.bounds(),i=this.max_size/2;let r,a,c,o;if(\"h\"==e.direction){c=n.y0,o=n.y1;const e=t-i,s=t+i;[r,a]=this.renderer.xscale.r_invert(e,s)}else{r=n.x0,a=n.x1;const e=s-i,t=s+i;[c,o]=this.renderer.yscale.r_invert(e,t)}const _=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_rect(e){const{sx0:t,sx1:s,sy0:n,sy1:i}=e,[r,a]=this.renderer.xscale.r_invert(t,s),[c,o]=this.renderer.yscale.r_invert(n,i),_=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_poly(e){const{sx:t,sy:s}=e,n=(0,l.range)(0,this.sx.length),i=[];for(let e=0,r=n.length;e({size:[h.ScreenSizeSpec,{value:4}],angle:[h.AngleSpec,0],hit_dilation:[e,1]})))},\n", + " function _(l,o,n,t,i){t();const e=Math.sqrt(3),a=Math.sqrt(5),c=(a+1)/4,p=Math.sqrt((5-a)/8),r=(a-1)/4,h=Math.sqrt((5+a)/8);function u(l,o){l.rotate(Math.PI/4),s(l,o),l.rotate(-Math.PI/4)}function f(l,o){const n=o*e,t=n/3;l.moveTo(-n/2,-t),l.lineTo(0,0),l.lineTo(n/2,-t),l.lineTo(0,0),l.lineTo(0,o)}function s(l,o){l.moveTo(0,o),l.lineTo(0,-o),l.moveTo(-o,0),l.lineTo(o,0)}function T(l,o){l.moveTo(0,o),l.lineTo(o/1.5,0),l.lineTo(0,-o),l.lineTo(-o/1.5,0),l.closePath()}function y(l,o){const n=o*e,t=n/3;l.moveTo(-o,t),l.lineTo(o,t),l.lineTo(0,t-n),l.closePath()}function v(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function d(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function _(l,o,n,t){!function(l,o){l.beginPath(),l.arc(0,0,o/4,0,2*Math.PI,!1),l.closePath()}(l,n),t.line.set_vectorize(l,o),l.fillStyle=l.strokeStyle,l.fill()}function P(l,o,n,t){!function(l,o){const n=o/2,t=e*n;l.moveTo(o,0),l.lineTo(n,-t),l.lineTo(-n,-t),l.lineTo(-o,0),l.lineTo(-n,t),l.lineTo(n,t),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function m(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function q(l,o,n,t){!function(l,o){const n=Math.sqrt(5-2*a)*o;l.moveTo(0,-o),l.lineTo(n*r,n*h-o),l.lineTo(n*(1+r),n*h-o),l.lineTo(n*(1+r-c),n*(h+p)-o),l.lineTo(n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(0,2*n*h-o),l.lineTo(-n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(-n*(1+r-c),n*(h+p)-o),l.lineTo(-n*(1+r),n*h-o),l.lineTo(-n*r,n*h-o),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function M(l,o,n,t){y(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}n.marker_funcs={asterisk:function(l,o,n,t){s(l,n),u(l,n),t.line.apply(l,o)},circle:v,circle_cross:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},circle_dot:function(l,o,n,t){v(l,o,n,t),_(l,o,n,t)},circle_y:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),f(l,n),l.stroke())},circle_x:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),u(l,n),l.stroke())},cross:function(l,o,n,t){s(l,n),t.line.apply(l,o)},diamond:d,diamond_dot:function(l,o,n,t){d(l,o,n,t),_(l,o,n,t)},diamond_cross:function(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(0,n),l.lineTo(0,-n),l.moveTo(-n/1.5,0),l.lineTo(n/1.5,0),l.stroke())},dot:_,hex:P,hex_dot:function(l,o,n,t){P(l,o,n,t),_(l,o,n,t)},inverted_triangle:function(l,o,n,t){l.rotate(Math.PI),y(l,n),l.rotate(-Math.PI),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},plus:function(l,o,n,t){const i=3*n/8,e=[i,i,n,n,i,i,-i,-i,-n,-n,-i,-i],a=[n,i,i,-i,-i,-n,-n,-i,-i,i,i,n];l.beginPath();for(let o=0;o<12;o++)l.lineTo(e[o],a[o]);l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square:m,square_cross:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},square_dot:function(l,o,n,t){m(l,o,n,t),_(l,o,n,t)},square_pin:function(l,o,n,t){const i=3*n/8;l.moveTo(-n,-n),l.quadraticCurveTo(0,-i,n,-n),l.quadraticCurveTo(i,0,n,n),l.quadraticCurveTo(0,i,-n,n),l.quadraticCurveTo(-i,0,-n,-n),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square_x:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(-n,n),l.lineTo(n,-n),l.moveTo(-n,-n),l.lineTo(n,n),l.stroke())},star:q,star_dot:function(l,o,n,t){q(l,o,n,t),_(l,o,n,t)},triangle:M,triangle_dot:function(l,o,n,t){M(l,o,n,t),_(l,o,n,t)},triangle_pin:function(l,o,n,t){const i=n*e,a=i/3,c=3*a/8;l.moveTo(-n,a),l.quadraticCurveTo(0,c,n,a),l.quadraticCurveTo(e*c/2,c/2,0,a-i),l.quadraticCurveTo(-e*c/2,c/2,-n,a),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},dash:function(l,o,n,t){!function(l,o){l.moveTo(-o,0),l.lineTo(o,0)}(l,n),t.line.apply(l,o)},x:function(l,o,n,t){u(l,n),t.line.apply(l,o)},y:function(l,o,n,t){f(l,n),t.line.apply(l,o)}}},\n", + " function _(e,t,s,i,n){i();const r=e(1);var o;const _=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),c=e(48),a=e(78),d=e(179),x=e(184),l=e(72);class y extends d.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{min:t,max:s}=Math,{_x0:i,_x1:n,_y0:r,_y1:o,data_size:_}=this;for(let h=0;h<_;h++){const _=i[h],c=n[h],a=r[h],d=o[h];e.add_rect(t(_,c),t(a,d),s(_,c),s(a,d))}}_render(e,t,s){if(this.visuals.line.doit){const{sx0:i,sy0:n,sx1:r,sy1:o}=null!=s?s:this;for(const s of t){const t=i[s],_=n[s],h=r[s],c=o[s];isFinite(t+_+h+c)&&(e.beginPath(),e.moveTo(t,_),e.lineTo(h,c),this.visuals.line.set_vectorize(e,s),e.stroke())}}}_hit_point(e){const{sx:t,sy:s}=e,i={x:t,y:s},[n,r]=this.renderer.xscale.r_invert(t-2,t+2),[o,h]=this.renderer.yscale.r_invert(s-2,s+2),c=this.index.indices({x0:n,y0:o,x1:r,y1:h}),a=[];for(const e of c){const t=Math.max(2,this.line_width.get(e)/2)**2,s={x:this.sx0[e],y:this.sy0[e]},n={x:this.sx1[e],y:this.sy1[e]};_.dist_to_segment_squared(i,s,n)({x0:[h.XCoordinateSpec,{field:\"x0\"}],y0:[h.YCoordinateSpec,{field:\"y0\"}],x1:[h.XCoordinateSpec,{field:\"x1\"}],y1:[h.YCoordinateSpec,{field:\"y1\"}]}))),o.mixins(c.LineVector)},\n", + " function _(t,e,s,i,n){i();const o=t(1);var _;const l=t(178),a=(0,o.__importStar)(t(48)),c=t(296);class r extends l.XYGlyphView{_set_data(){const{tension:t,closed:e}=this.model;[this._xt,this._yt]=(0,c.catmullrom_spline)(this._x,this._y,20,t,e)}_map_data(){const{x_scale:t,y_scale:e}=this.renderer.coordinates;this.sxt=t.v_compute(this._xt),this.syt=e.v_compute(this._yt)}_render(t,e,s){const{sxt:i,syt:n}=null!=s?s:this;let o=!0;t.beginPath();const _=i.length;for(let e=0;e<_;e++){const s=i[e],_=n[e];isFinite(s+_)?o?(t.moveTo(s,_),o=!1):t.lineTo(s,_):o=!0}this.visuals.line.set_value(t),t.stroke()}}s.SplineView=r,r.__name__=\"SplineView\";class h extends l.XYGlyph{constructor(t){super(t)}}s.Spline=h,_=h,h.__name__=\"Spline\",_.prototype.default_view=r,_.mixins(a.LineScalar),_.define((({Boolean:t,Number:e})=>({tension:[e,.5],closed:[t,!1]})))},\n", + " function _(n,t,e,o,s){o();const c=n(24),l=n(11);e.catmullrom_spline=function(n,t,e=10,o=.5,s=!1){(0,l.assert)(n.length==t.length);const r=n.length,f=s?r+1:r,w=(0,c.infer_type)(n,t),i=new w(f+2),u=new w(f+2);i.set(n,1),u.set(t,1),s?(i[0]=n[r-1],u[0]=t[r-1],i[f]=n[0],u[f]=t[0],i[f+1]=n[1],u[f+1]=t[1]):(i[0]=n[0],u[0]=t[0],i[f+1]=n[r-1],u[f+1]=t[r-1]);const g=new w(4*(e+1));for(let n=0,t=0;n<=e;n++){const o=n/e,s=o**2,c=o*s;g[t++]=2*c-3*s+1,g[t++]=-2*c+3*s,g[t++]=c-2*s+o,g[t++]=c-s}const h=new w((f-1)*(e+1)),_=new w((f-1)*(e+1));for(let n=1,t=0;n1&&(e.stroke(),o=!1)}o?(e.lineTo(t,r),e.lineTo(a,c)):(e.beginPath(),e.moveTo(s[n],i[n]),o=!0),l=n}e.lineTo(s[a-1],i[a-1]),e.stroke()}}draw_legend_for_index(e,t,n){(0,r.generic_line_scalar_legend)(this.visuals,e,t)}}n.StepView=f,f.__name__=\"StepView\";class u extends a.XYGlyph{constructor(e){super(e)}}n.Step=u,l=u,u.__name__=\"Step\",l.prototype.default_view=f,l.mixins(c.LineScalar),l.define((()=>({mode:[_.StepMode,\"before\"]})))},\n", + " function _(t,e,s,i,n){i();const o=t(1);var _;const h=t(178),l=t(48),r=(0,o.__importStar)(t(185)),a=(0,o.__importStar)(t(18)),c=t(121),x=t(11),u=t(72);class f extends h.XYGlyphView{_rotate_point(t,e,s,i,n){return[(t-s)*Math.cos(n)-(e-i)*Math.sin(n)+s,(t-s)*Math.sin(n)+(e-i)*Math.cos(n)+i]}_text_bounds(t,e,s,i){return[[t,t+s,t+s,t,t],[e,e,e-i,e-i,e]]}_render(t,e,s){const{sx:i,sy:n,x_offset:o,y_offset:_,angle:h,text:l}=null!=s?s:this;this._sys=[],this._sxs=[];for(const s of e){const e=this._sxs[s]=[],r=this._sys[s]=[],a=i[s],x=n[s],u=o.get(s),f=_.get(s),p=h.get(s),g=l.get(s);if(isFinite(a+x+u+f+p)&&null!=g&&this.visuals.text.doit){const i=`${g}`;t.save(),t.translate(a+u,x+f),t.rotate(p),this.visuals.text.set_vectorize(t,s);const n=this.visuals.text.font_value(s),{height:o}=(0,c.font_metrics)(n),_=this.text_line_height.get(s)*o;if(-1==i.indexOf(\"\\n\")){t.fillText(i,0,0);const s=a+u,n=x+f,o=t.measureText(i).width,[h,l]=this._text_bounds(s,n,o,_);e.push(h),r.push(l)}else{const n=i.split(\"\\n\"),o=_*n.length,h=this.text_baseline.get(s);let l;switch(h){case\"top\":l=0;break;case\"middle\":l=-o/2+_/2;break;case\"bottom\":l=-o+_;break;default:l=0,console.warn(`'${h}' baseline not supported with multi line text`)}for(const s of n){t.fillText(s,0,l);const i=a+u,n=l+x+f,o=t.measureText(s).width,[h,c]=this._text_bounds(i,n,o,_);e.push(h),r.push(c),l+=_}}t.restore()}}}_hit_point(t){const{sx:e,sy:s}=t,i=[];for(let t=0;t({text:[a.NullStringSpec,{field:\"text\"}],angle:[a.AngleSpec,0],x_offset:[a.NumberSpec,0],y_offset:[a.NumberSpec,0]})))},\n", + " function _(t,e,s,i,r){i();const h=t(1);var o;const a=t(277),n=t(24),_=(0,h.__importStar)(t(18));class l extends a.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[this.sx[t],(this.stop[t]+this.sbottom[t])/2]}_lrtb(t){const e=this.width.get(t)/2,s=this._x[t],i=this._top[t],r=this._bottom[t];return[s-e,s+e,Math.max(i,r),Math.min(i,r)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const t=this.sx.length;this.sleft=new n.ScreenArray(t),this.sright=new n.ScreenArray(t);for(let e=0;e({x:[_.XCoordinateSpec,{field:\"x\"}],bottom:[_.YCoordinateSpec,{value:0}],width:[_.NumberSpec,{value:1}],top:[_.YCoordinateSpec,{field:\"top\"}]})))},\n", + " function _(e,s,t,i,n){i();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),h=e(24),o=e(20),_=(0,r.__importStar)(e(18)),u=e(10),g=e(72),x=e(12);class p extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,h.to_screen)(this.radius),this.max_sradius=(0,x.max)(this.sradius)}_render(e,s,t){const{sx:i,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],l=n[t],h=r[t],o=a.get(t),_=c.get(t);isFinite(s+l+h+o+_)&&(e.beginPath(),e.arc(s,l,h,o,_,d),e.lineTo(s,l),e.closePath(),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t))}}_hit_point(e){let s,t,i,n,r;const{sx:a,sy:c}=e,d=this.renderer.xscale.invert(a),l=this.renderer.yscale.invert(c);t=a-this.max_sradius,i=a+this.max_sradius;const[h,o]=this.renderer.xscale.r_invert(t,i);n=c-this.max_sradius,r=c+this.max_sradius;const[_,x]=this.renderer.yscale.r_invert(n,r),p=[];for(const e of this.index.indices({x0:h,x1:o,y0:_,y1:x})){const a=this.sradius[e]**2;[t,i]=this.renderer.xscale.r_compute(d,this._x[e]),[n,r]=this.renderer.yscale.r_compute(l,this._y[e]),s=(t-i)**2+(n-r)**2,s<=a&&p.push(e)}const y=\"anticlock\"==this.model.direction,m=[];for(const e of p){const s=Math.atan2(c-this.sy[e],a-this.sx[e]);(0,u.angle_between)(-s,-this.start_angle.get(e),-this.end_angle.get(e),y)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,d.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=this.sradius[e]/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.WedgeView=p,p.__name__=\"WedgeView\";class y extends c.XYGlyph{constructor(e){super(e)}}t.Wedge=y,a=y,y.__name__=\"Wedge\",a.prototype.default_view=p,a.mixins([l.LineVector,l.FillVector,l.HatchVector]),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[_.DistanceSpec,{field:\"radius\"}],start_angle:[_.AngleSpec,{field:\"start_angle\"}],end_angle:[_.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(t,_,r,o,a){o();const e=t(1);(0,e.__exportStar)(t(302),r),(0,e.__exportStar)(t(303),r),(0,e.__exportStar)(t(304),r)},\n", + " function _(e,t,d,n,s){n();const o=e(53),r=e(12),_=e(9),i=e(72);class c extends o.Model{constructor(e){super(e)}_hit_test(e,t,d){if(!t.model.visible)return null;const n=d.glyph.hit_test(e);return null==n?null:d.model.view.convert_selection_from_subset(n)}}d.GraphHitTestPolicy=c,c.__name__=\"GraphHitTestPolicy\";class a extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.edge_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;return s.update(e,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{edge_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.edge_view.model);return r.update(e,n,s),d.edge_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!r.is_empty()}}d.EdgesOnly=a,a.__name__=\"EdgesOnly\";class l extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,d,n),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{node_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.node_view.model);return r.update(e,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.node_view.model.data_source.inspect.emit([d.node_view.model,{geometry:t}]),!r.is_empty()}}d.NodesOnly=l,l.__name__=\"NodesOnly\";class u extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}get_linked_edges(e,t,d){let n=[];\"selection\"==d?n=e.selected.indices.map((t=>e.data.index[t])):\"inspection\"==d&&(n=e.inspected.indices.map((t=>e.data.index[t])));const s=[];for(let e=0;e(0,r.indexOf)(e.data.index,t)));return new i.Selection({indices:o})}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,d,n);const o=t.node_renderer.data_source.selected,r=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(r,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const o=d.edge_view.model.data_source.selection_manager.get_or_create_inspector(d.edge_view.model);o.update(e,n,s),d.edge_view.model.data_source.setv({inspected:o},{silent:!0});const r=d.node_view.model.data_source.selection_manager.get_or_create_inspector(d.node_view.model),_=this.get_linked_nodes(d.node_view.model.data_source,d.edge_view.model.data_source,\"inspection\");return r.update(_,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!o.is_empty()}}d.EdgesAndLinkedNodes=m,m.__name__=\"EdgesAndLinkedNodes\"},\n", + " function _(e,o,t,r,n){var s;r();const a=e(53),d=e(260);class _ extends a.Model{constructor(e){super(e)}get node_coordinates(){return new u({layout:this})}get edge_coordinates(){return new i({layout:this})}}t.LayoutProvider=_,_.__name__=\"LayoutProvider\";class c extends d.CoordinateTransform{constructor(e){super(e)}}t.GraphCoordinates=c,s=c,c.__name__=\"GraphCoordinates\",s.define((({Ref:e})=>({layout:[e(_)]})));class u extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_node_coordinates(e);return{x:o,y:t}}}t.NodeCoordinates=u,u.__name__=\"NodeCoordinates\";class i extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_edge_coordinates(e);return{x:o,y:t}}}t.EdgeCoordinates=i,i.__name__=\"EdgeCoordinates\"},\n", + " function _(t,a,l,e,n){var o;e();const r=t(303);class u extends r.LayoutProvider{constructor(t){super(t)}get_node_coordinates(t){var a;const l=null!==(a=t.data.index)&&void 0!==a?a:[],e=l.length,n=new Float64Array(e),o=new Float64Array(e);for(let t=0;t({graph_layout:[l(a(t,t)),{}]})))},\n", + " function _(i,d,n,r,G){r(),G(\"Grid\",i(306).Grid)},\n", + " function _(i,e,n,s,t){s();const r=i(1);var o;const d=i(127),_=i(129),a=i(130),l=(0,r.__importStar)(i(48)),h=i(8);class c extends _.GuideRendererView{_render(){const i=this.layer.ctx;i.save(),this._draw_regions(i),this._draw_minor_grids(i),this._draw_grids(i),i.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[e,n]=this.grid_coords(\"major\",!1);for(let s=0;sn[1]&&(t=n[1]);else{[s,t]=n;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,t]=i.computed_bounds)}return[s,t]}grid_coords(i,e=!0){const n=this.model.dimension,s=(n+1)%2,[t,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,t,r.min)[i],h=t.min,c=t.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;i({bounds:[r(t(i,i),e),\"auto\"],dimension:[n(0,1),0],axis:[o(s(d.Axis)),null],ticker:[o(s(a.Ticker)),null]}))),o.override({level:\"underlay\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\"#e5e5e5\",minor_grid_line_color:null})},\n", + " function _(o,a,x,B,e){B(),e(\"Box\",o(308).Box),e(\"Column\",o(310).Column),e(\"GridBox\",o(311).GridBox),e(\"HTMLBox\",o(312).HTMLBox),e(\"LayoutDOM\",o(309).LayoutDOM),e(\"Panel\",o(313).Panel),e(\"Row\",o(314).Row),e(\"Spacer\",o(315).Spacer),e(\"Tabs\",o(316).Tabs),e(\"WidgetBox\",o(319).WidgetBox)},\n", + " function _(e,n,s,t,c){var i;t();const o=e(309);class r extends o.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,(()=>this.rebuild()))}get child_models(){return this.model.children}}s.BoxView=r,r.__name__=\"BoxView\";class a extends o.LayoutDOM{constructor(e){super(e)}}s.Box=a,i=a,a.__name__=\"Box\",i.define((({Number:e,Array:n,Ref:s})=>({children:[n(s(o.LayoutDOM)),[]],spacing:[e,0]})))},\n", + " function _(t,i,e,s,o){var l;s();const n=t(53),h=t(20),a=t(43),r=t(19),_=t(8),c=t(22),u=t(121),d=t(113),p=t(226),m=t(207),g=t(44),w=t(235);class f extends p.DOMView{constructor(){super(...arguments),this._offset_parent=null,this._viewport={}}get is_layout_root(){return this.is_root||!(this.parent instanceof f)}get base_font_size(){const t=getComputedStyle(this.el).fontSize,i=(0,u.parse_css_font_size)(t);if(null!=i){const{value:t,unit:e}=i;if(\"px\"==e)return t}return null}initialize(){super.initialize(),this.el.style.position=this.is_layout_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const t of this.child_views)t.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_layout_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval((()=>{const t=this.el.offsetParent;this._offset_parent!=t&&(this._offset_parent=t,null!=t&&(this.compute_viewport(),this.invalidate_layout()))}),250));const t=this.model.properties;this.on_change([t.width,t.height,t.min_width,t.min_height,t.max_width,t.max_height,t.margin,t.width_policy,t.height_policy,t.sizing_mode,t.aspect_ratio,t.visible],(()=>this.invalidate_layout())),this.on_change([t.background,t.css_classes],(()=>this.invalidate_render()))}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map((t=>this._child_views.get(t)))}async build_child_views(){await(0,d.build_views)(this._child_views,this.child_models,{parent:this})}render(){super.render(),(0,a.empty)(this.el);const{background:t}=this.model;this.el.style.backgroundColor=null!=t?(0,c.color2css)(t):\"\",(0,a.classes)(this.el).clear().add(...this.css_classes());for(const t of this.child_views)this.el.appendChild(t.el),t.render()}update_layout(){for(const t of this.child_views)t.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const t=this.is_layout_root?this.layout.sizing.margin:void 0;(0,a.position)(this.el,this.layout.bbox,t);for(const t of this.child_views)t.update_position()}after_layout(){for(const t of this.child_views)t.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(t){t.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build(),this.notify_finished()}build(){if(!this.is_layout_root)throw new Error(`${this.toString()} is not a root layout`);return this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const t=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),r.logger.debug(`layout computed in ${Date.now()-t} ms`)}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const t of this.child_views)if(!t.has_finished())return!1;return!0}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:t,height_policy:i,aspect_ratio:e}=this.model;\"auto\"==t&&(t=this._width_policy()),\"auto\"==i&&(i=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)t=i=\"fixed\";else if(\"stretch_both\"==s)t=i=\"max\";else if(\"stretch_width\"==s)t=\"max\";else if(\"stretch_height\"==s)i=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":t=\"max\",i=\"min\";break;case\"scale_height\":t=\"min\",i=\"max\";break;case\"scale_both\":t=\"max\",i=\"max\"}const o={width_policy:t,height_policy:i},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:h,height:a}=this.model;null!=h&&(o.width=h),null!=a&&(o.height=a);const{max_width:r,max_height:c}=this.model;null!=r&&(o.max_width=r),null!=c&&(o.max_height=c),\"auto\"==e&&null!=h&&null!=a?o.aspect=h/a:(0,_.isNumber)(e)&&(o.aspect=e);const{margin:u}=this.model;if(null!=u)if((0,_.isNumber)(u))o.margin={top:u,right:u,bottom:u,left:u};else if(2==u.length){const[t,i]=u;o.margin={top:t,right:i,bottom:t,left:i}}else{const[t,i,e,s]=u;o.margin={top:t,right:i,bottom:e,left:s}}o.visible=this.model.visible;const{align:d}=this.model;return(0,_.isArray)(d)?[o.halign,o.valign]=d:o.halign=o.valign=d,o}_viewport_size(){return(0,a.undisplayed)(this.el,(()=>{let t=this.el;for(;t=t.parentElement;){if(t.classList.contains(g.root))continue;if(t==document.body){const{margin:{left:t,right:i,top:e,bottom:s}}=(0,a.extents)(document.body);return{width:Math.ceil(document.documentElement.clientWidth-t-i),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:i,right:e,top:s,bottom:o}}=(0,a.extents)(t),{width:l,height:n}=t.getBoundingClientRect(),h=Math.ceil(l-i-e),r=Math.ceil(n-s-o);if(h>0||r>0)return{width:h>0?h:void 0,height:r>0?r:void 0}}return{}}))}export(t,i=!0){const e=\"png\"==t?\"canvas\":\"svg\",s=new w.CanvasLayer(e,i),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(t,i),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map((t=>t.serializable_state()))})}}e.LayoutDOMView=f,f.__name__=\"LayoutDOMView\";class y extends n.Model{constructor(t){super(t)}}e.LayoutDOM=y,l=y,y.__name__=\"LayoutDOM\",l.define((t=>{const{Boolean:i,Number:e,String:s,Auto:o,Color:l,Array:n,Tuple:a,Or:r,Null:_,Nullable:c}=t,u=a(e,e),d=a(e,e,e,e);return{width:[c(e),null],height:[c(e),null],min_width:[c(e),null],min_height:[c(e),null],max_width:[c(e),null],max_height:[c(e),null],margin:[c(r(e,u,d)),[0,0,0,0]],width_policy:[r(m.SizingPolicy,o),\"auto\"],height_policy:[r(m.SizingPolicy,o),\"auto\"],aspect_ratio:[r(e,o,_),null],sizing_mode:[c(h.SizingMode),null],visible:[i,!0],disabled:[i,!1],align:[r(h.Align,a(h.Align,h.Align)),\"start\"],background:[c(l),null],css_classes:[n(s),[]]}}))},\n", + " function _(o,s,t,i,e){var n;i();const a=o(308),l=o(209);class u extends a.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Column(o),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}t.ColumnView=u,u.__name__=\"ColumnView\";class _ extends a.Box{constructor(o){super(o)}}t.Column=_,n=_,_.__name__=\"Column\",n.prototype.default_view=u,n.define((({Any:o})=>({rows:[o,\"auto\"]})))},\n", + " function _(s,o,t,i,e){var n;i();const l=s(309),a=s(209);class r extends l.LayoutDOMView{connect_signals(){super.connect_signals();const{children:s,rows:o,cols:t,spacing:i}=this.model.properties;this.on_change([s,o,t,i],(()=>this.rebuild()))}get child_models(){return this.model.children.map((([s])=>s))}_update_layout(){this.layout=new a.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[s,o,t,i,e]of this.model.children){const n=this._child_views.get(s);this.layout.items.push({layout:n.layout,row:o,col:t,row_span:i,col_span:e})}this.layout.set_sizing(this.box_sizing())}}t.GridBoxView=r,r.__name__=\"GridBoxView\";class c extends l.LayoutDOM{constructor(s){super(s)}}t.GridBox=c,n=c,c.__name__=\"GridBox\",n.prototype.default_view=r,n.define((({Any:s,Int:o,Number:t,Tuple:i,Array:e,Ref:n,Or:a,Opt:r})=>({children:[e(i(n(l.LayoutDOM),o,o,r(o),r(o))),[]],rows:[s,\"auto\"],cols:[s,\"auto\"],spacing:[a(t,i(t,t)),0]})))},\n", + " function _(t,e,o,s,n){s();const _=t(309),i=t(207);class a extends _.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new i.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=a,a.__name__=\"HTMLBoxView\";class u extends _.LayoutDOM{constructor(t){super(t)}}o.HTMLBox=u,u.__name__=\"HTMLBox\"},\n", + " function _(e,n,l,a,o){var t;a();const s=e(53),c=e(309);class d extends s.Model{constructor(e){super(e)}}l.Panel=d,t=d,d.__name__=\"Panel\",t.define((({Boolean:e,String:n,Ref:l})=>({title:[n,\"\"],child:[l(c.LayoutDOM)],closable:[e,!1],disabled:[e,!1]})))},\n", + " function _(o,s,t,i,e){var a;i();const n=o(308),l=o(209);class _ extends n.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Row(o),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}t.RowView=_,_.__name__=\"RowView\";class c extends n.Box{constructor(o){super(o)}}t.Row=c,a=c,c.__name__=\"Row\",a.prototype.default_view=_,a.define((({Any:o})=>({cols:[o,\"auto\"]})))},\n", + " function _(e,t,a,s,_){var o;s();const i=e(309),n=e(207);class u extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new n.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=u,u.__name__=\"SpacerView\";class c extends i.LayoutDOM{constructor(e){super(e)}}a.Spacer=c,o=c,c.__name__=\"Spacer\",o.prototype.default_view=u},\n", + " function _(e,t,s,i,l){i();const h=e(1);var a;const o=e(207),d=e(43),r=e(9),c=e(10),n=e(20),_=e(309),p=e(313),b=(0,h.__importStar)(e(317)),m=b,u=(0,h.__importStar)(e(318)),g=u,v=(0,h.__importStar)(e(229)),w=v;class f extends _.LayoutDOMView{constructor(){super(...arguments),this._scroll_index=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,(()=>this.rebuild())),this.connect(this.model.properties.active.change,(()=>this.on_active_change()))}styles(){return[...super.styles(),u.default,v.default,b.default]}get child_models(){return this.model.tabs.map((e=>e.child))}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends o.ContentBox{_measure(e){const l=(0,d.size)(s),h=(0,d.children)(i).slice(0,3).map((e=>(0,d.size)(e))),{width:a,height:o}=super._measure(e);if(t){const t=l.width+(0,r.sum)(h.map((e=>e.width)));return{width:e.width!=1/0?e.width:t,height:o}}{const t=l.height+(0,r.sum)(h.map((e=>e.height)));return{width:a,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let l=1,h=1;switch(e){case\"above\":l-=1;break;case\"below\":l+=1;break;case\"left\":h-=1;break;case\"right\":h+=1}const a={layout:this.header,row:l,col:h},c=this.child_views.map((e=>({layout:e.layout,row:1,col:1})));this.layout=new o.Grid([a,...c]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",(0,d.position)(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=(0,d.size)(this.scroll_el),i=(0,d.scroll_size)(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxWidth=\"\",(0,d.undisplay)(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxHeight=\"\",(0,d.undisplay)(this.scroll_el))}const{child_views:l}=this;for(const e of l)(0,d.hide)(e.el);const h=l[this.model.active];null!=h&&(0,d.show)(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs.map(((t,s)=>{const i=(0,d.div)({class:[m.tab,s==e?m.active:null]},t.title);if(i.addEventListener(\"click\",(e=>{this.model.disabled||e.target==e.currentTarget&&this.change_active(s)})),t.closable){const e=(0,d.div)({class:m.close});e.addEventListener(\"click\",(e=>{if(e.target==e.currentTarget){this.model.tabs=(0,r.remove_at)(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}})),i.appendChild(e)}return(this.model.disabled||t.disabled)&&i.classList.add(m.disabled),i}));this.headers_el=(0,d.div)({class:[m.headers]},t),this.wrapper_el=(0,d.div)({class:m.headers_wrapper},this.headers_el),this.left_el=(0,d.div)({class:[g.btn,g.btn_default],disabled:\"\"},(0,d.div)({class:[w.caret,m.left]})),this.right_el=(0,d.div)({class:[g.btn,g.btn_default]},(0,d.div)({class:[w.caret,m.right]})),this.left_el.addEventListener(\"click\",(()=>this.do_scroll(\"left\"))),this.right_el.addEventListener(\"click\",(()=>this.do_scroll(\"right\"))),this.scroll_el=(0,d.div)({class:g.btn_group},this.left_el,this.right_el);const s=this.model.tabs_location;this.header_el=(0,d.div)({class:[m.tabs_header,m[s]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}do_scroll(e){const t=this.model.tabs.length;\"left\"==e?this._scroll_index-=1:\"right\"==e?this._scroll_index+=1:this._scroll_index=e,this._scroll_index=(0,c.clamp)(this._scroll_index,0,t-1),0==this._scroll_index?this.left_el.setAttribute(\"disabled\",\"\"):this.left_el.removeAttribute(\"disabled\"),this._scroll_index==t-1?this.right_el.setAttribute(\"disabled\",\"\"):this.right_el.removeAttribute(\"disabled\");const s=(0,d.children)(this.headers_el).slice(0,this._scroll_index).map((e=>e.getBoundingClientRect())),i=this.model.tabs_location;if(\"above\"==i||\"below\"==i){const e=-(0,r.sum)(s.map((e=>e.width)));this.headers_el.style.left=`${e}px`}else{const e=-(0,r.sum)(s.map((e=>e.height)));this.headers_el.style.top=`${e}px`}}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=(0,d.children)(this.headers_el);for(const e of t)e.classList.remove(m.active);t[e].classList.add(m.active);const{child_views:s}=this;for(const e of s)(0,d.hide)(e.el);(0,d.show)(s[e].el)}}s.TabsView=f,f.__name__=\"TabsView\";class x extends _.LayoutDOM{constructor(e){super(e)}}s.Tabs=x,a=x,x.__name__=\"Tabs\",a.prototype.default_view=f,a.define((({Int:e,Array:t,Ref:s})=>({tabs:[t(s(p.Panel)),[]],tabs_location:[n.Location,\"above\"],active:[e,0]})))},\n", + " function _(e,r,b,o,t){o(),b.root=\"bk-root\",b.tabs_header=\"bk-tabs-header\",b.btn_group=\"bk-btn-group\",b.btn=\"bk-btn\",b.headers_wrapper=\"bk-headers-wrapper\",b.above=\"bk-above\",b.right=\"bk-right\",b.below=\"bk-below\",b.left=\"bk-left\",b.headers=\"bk-headers\",b.tab=\"bk-tab\",b.active=\"bk-active\",b.close=\"bk-close\",b.disabled=\"bk-disabled\",b.default='.bk-root .bk-tabs-header{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header .bk-tab.bk-disabled{cursor:not-allowed;pointer-events:none;opacity:0.65;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url(\\'data:image/svg+xml;utf8, \\');}.bk-root .bk-close:hover{background-image:url(\\'data:image/svg+xml;utf8, \\');}'},\n", + " function _(o,b,r,t,e){t(),r.root=\"bk-root\",r.btn=\"bk-btn\",r.active=\"bk-active\",r.btn_default=\"bk-btn-default\",r.btn_primary=\"bk-btn-primary\",r.btn_success=\"bk-btn-success\",r.btn_warning=\"bk-btn-warning\",r.btn_danger=\"bk-btn-danger\",r.btn_light=\"bk-btn-light\",r.btn_group=\"bk-btn-group\",r.vertical=\"bk-vertical\",r.horizontal=\"bk-horizontal\",r.dropdown_toggle=\"bk-dropdown-toggle\",r.default=\".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-btn-group:not(.bk-vertical),.bk-root .bk-btn-group.bk-horizontal{flex-direction:row;}.bk-root .bk-btn-group.bk-vertical{flex-direction:column;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group.bk-vertical > .bk-btn + .bk-btn{margin-top:-1px;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:not(:first-child):last-child{border-top-left-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn{width:100%;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;padding:6px 6px;}\"},\n", + " function _(e,t,o,n,_){var i;n();const s=e(310);class d extends s.ColumnView{}o.WidgetBoxView=d,d.__name__=\"WidgetBoxView\";class a extends s.Column{constructor(e){super(e)}}o.WidgetBox=a,i=a,a.__name__=\"WidgetBox\",i.prototype.default_view=d},\n", + " function _(t,a,i,e,M){e();var T=t(135);M(\"MathText\",T.MathText),M(\"Ascii\",T.Ascii),M(\"MathML\",T.MathML),M(\"TeX\",T.TeX),M(\"PlainText\",t(139).PlainText)},\n", + " function _(r,o,t,e,n){e(),n(\"CustomJSTransform\",r(322).CustomJSTransform),n(\"Dodge\",r(323).Dodge),n(\"Interpolator\",r(325).Interpolator),n(\"Jitter\",r(326).Jitter),n(\"LinearInterpolator\",r(327).LinearInterpolator),n(\"StepInterpolator\",r(328).StepInterpolator),n(\"Transform\",r(56).Transform)},\n", + " function _(r,t,s,n,e){var a;n();const u=r(56),o=r(13),m=r(34);class _ extends u.Transform{constructor(r){super(r)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}_make_transform(r,t){return new Function(...this.names,r,(0,m.use_strict)(t))}get scalar_transform(){return this._make_transform(\"x\",this.func)}get vector_transform(){return this._make_transform(\"xs\",this.v_func)}compute(r){return this.scalar_transform(...this.values,r)}v_compute(r){return this.vector_transform(...this.values,r)}}s.CustomJSTransform=_,a=_,_.__name__=\"CustomJSTransform\",a.define((({Unknown:r,String:t,Dict:s})=>({args:[s(r),{}],func:[t,\"\"],v_func:[t,\"\"]})))},\n", + " function _(e,n,r,o,s){var t;o();const u=e(324);class a extends u.RangeTransform{constructor(e){super(e)}_compute(e){return e+this.value}}r.Dodge=a,t=a,a.__name__=\"Dodge\",t.define((({Number:e})=>({value:[e,0]})))},\n", + " function _(e,n,t,r,a){var s;r();const c=e(56),o=e(57),i=e(67),u=e(24),h=e(8),l=e(11);class g extends c.Transform{constructor(e){super(e)}v_compute(e){let n;this.range instanceof i.FactorRange?n=this.range.v_synthetic(e):(0,h.isArrayableOf)(e,h.isNumber)?n=e:(0,l.unreachable)();const t=new((0,u.infer_type)(n))(n.length);for(let e=0;e({range:[n(e(o.Range)),null]})))},\n", + " function _(t,e,r,n,s){var o;n();const i=t(56),a=t(70),h=t(24),l=t(9),d=t(8);class c extends i.Transform{constructor(t){super(t),this._sorted_dirty=!0}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._sorted_dirty=!0))}v_compute(t){const e=new((0,h.infer_type)(t))(t.length);for(let r=0;ro*(e[t]-e[r]))),this._x_sorted=new((0,h.infer_type)(e))(n),this._y_sorted=new((0,h.infer_type)(r))(n);for(let t=0;t({x:[o(r,s(e))],y:[o(r,s(e))],data:[i(n(a.ColumnarDataSource)),null],clip:[t,!0]})))},\n", + " function _(t,s,e,i,r){i();const n=t(1);var o;const a=t(324),u=t(67),h=t(20),c=t(8),m=t(12),f=(0,n.__importStar)(t(10)),_=t(11);class p extends a.RangeTransform{constructor(t){super(t)}v_compute(t){var s;let e;this.range instanceof u.FactorRange?e=this.range.v_synthetic(t):(0,c.isArrayableOf)(t,c.isNumber)?e=t:(0,_.unreachable)();const i=e.length;(null===(s=this.previous_offsets)||void 0===s?void 0:s.length)!=i&&(this.previous_offsets=new Array(i),this.previous_offsets=(0,m.map)(this.previous_offsets,(()=>this._compute())));const r=this.previous_offsets;return(0,m.map)(e,((t,s)=>r[s]+t))}_compute(){switch(this.distribution){case\"uniform\":return this.mean+(f.random()-.5)*this.width;case\"normal\":return f.rnorm(this.mean,this.width)}}}e.Jitter=p,o=p,p.__name__=\"Jitter\",o.define((({Number:t})=>({mean:[t,0],width:[t,1],distribution:[h.Distribution,\"uniform\"]})))},\n", + " function _(t,s,_,r,e){r();const i=t(9),o=t(325);class n extends o.Interpolator{constructor(t){super(t)}compute(t){if(this.sort(!1),this.clip){if(tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=(0,i.find_last_index)(this._x_sorted,(s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=(0,d.find_last_index)(this._x_sorted,(e=>t>=e));break;case\"before\":e=(0,d.find_index)(this._x_sorted,(e=>t<=e));break;case\"center\":{const s=(0,d.map)(this._x_sorted,(e=>Math.abs(e-t))),r=(0,d.min)(s);e=(0,d.find_index)(s,(t=>r===t));break}default:throw new Error(`unknown mode: ${this.mode}`)}return-1!=e?this._y_sorted[e]:NaN}}s.StepInterpolator=h,_=h,h.__name__=\"StepInterpolator\",_.define((()=>({mode:[n.StepMode,\"after\"]})))},\n", + " function _(p,o,t,a,n){a(),n(\"MapOptions\",p(330).MapOptions),n(\"GMapOptions\",p(330).GMapOptions),n(\"GMapPlot\",p(330).GMapPlot),n(\"Plot\",p(331).Plot)},\n", + " function _(e,t,n,o,a){var s,p,_;o();const i=e(331),r=e(53),l=e(58),c=e(336);a(\"GMapPlotView\",c.GMapPlotView);class d extends r.Model{constructor(e){super(e)}}n.MapOptions=d,s=d,d.__name__=\"MapOptions\",s.define((({Int:e,Number:t})=>({lat:[t],lng:[t],zoom:[e,12]})));class u extends d{constructor(e){super(e)}}n.GMapOptions=u,p=u,u.__name__=\"GMapOptions\",p.define((({Boolean:e,Int:t,String:n})=>({map_type:[n,\"roadmap\"],scale_control:[e,!1],styles:[n],tilt:[t,45]})));class M extends i.Plot{constructor(e){super(e),this.use_map=!0}}n.GMapPlot=M,_=M,M.__name__=\"GMapPlot\",_.prototype.default_view=c.GMapPlotView,_.define((({String:e,Ref:t})=>({map_options:[t(u)],api_key:[e],api_version:[e,\"weekly\"]}))),_.override({x_range:()=>new l.Range1d,y_range:()=>new l.Range1d})},\n", + " function _(e,t,r,n,i){n();const o=e(1);var a;const s=(0,o.__importStar)(e(48)),l=(0,o.__importStar)(e(18)),_=e(15),c=e(20),h=e(9),d=e(13),u=e(8),g=e(309),p=e(128),f=e(306),b=e(40),w=e(118),y=e(59),m=e(221),x=e(57),v=e(55),A=e(75),S=e(41),R=e(176),D=e(175),L=e(63),P=e(332);i(\"PlotView\",P.PlotView);class k extends g.LayoutDOM{constructor(e){super(e),this.use_map=!1}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new _.Signal0(this,\"reset\");for(const e of(0,d.values)(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of(0,d.values)(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{(0,h.remove_by)(t,(t=>t==e))};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}get data_renderers(){return this.renderers.filter((e=>e instanceof R.DataRenderer))}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new A.ColumnDataSource,r={}){const n=new D.GlyphRenderer(Object.assign(Object.assign({},r),{data_source:t,glyph:e}));return this.add_renderers(n),n}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:n}=this;return(0,h.concat)([e,t,r,n])}}r.Plot=k,a=k,k.__name__=\"Plot\",a.prototype.default_view=P.PlotView,a.mixins([[\"outline_\",s.Line],[\"background_\",s.Fill],[\"border_\",s.Fill]]),a.define((({Boolean:e,Number:t,String:r,Array:n,Dict:i,Or:o,Ref:a,Null:s,Nullable:_})=>({toolbar:[a(m.Toolbar),()=>new m.Toolbar],toolbar_location:[_(c.Location),\"right\"],toolbar_sticky:[e,!0],plot_width:[l.Alias(\"width\")],plot_height:[l.Alias(\"height\")],frame_width:[_(t),null],frame_height:[_(t),null],title:[o(a(w.Title),r,s),\"\",{convert:e=>(0,u.isString)(e)?new w.Title({text:e}):e}],title_location:[_(c.Location),\"above\"],above:[n(o(a(b.Annotation),a(p.Axis))),[]],below:[n(o(a(b.Annotation),a(p.Axis))),[]],left:[n(o(a(b.Annotation),a(p.Axis))),[]],right:[n(o(a(b.Annotation),a(p.Axis))),[]],center:[n(o(a(b.Annotation),a(f.Grid))),[]],renderers:[n(a(S.Renderer)),[]],x_range:[a(x.Range),()=>new L.DataRange1d],y_range:[a(x.Range),()=>new L.DataRange1d],x_scale:[a(v.Scale),()=>new y.LinearScale],y_scale:[a(v.Scale),()=>new y.LinearScale],extra_x_ranges:[i(a(x.Range)),{}],extra_y_ranges:[i(a(x.Range)),{}],extra_x_scales:[i(a(v.Scale)),{}],extra_y_scales:[i(a(v.Scale)),{}],lod_factor:[t,10],lod_interval:[t,300],lod_threshold:[_(t),2e3],lod_timeout:[t,500],hidpi:[e,!0],output_backend:[c.OutputBackend,\"canvas\"],min_border:[_(t),5],min_border_top:[_(t),null],min_border_left:[_(t),null],min_border_bottom:[_(t),null],min_border_right:[_(t),null],inner_width:[t,0],inner_height:[t,0],outer_width:[t,0],outer_height:[t,0],match_aspect:[e,!1],aspect_scale:[t,1],reset_policy:[c.ResetPolicy,\"standard\"]}))),a.override({width:600,height:600,outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})},\n", + " function _(e,t,i,s,a){s();const n=e(1),o=e(126),l=e(249),r=e(309),_=e(40),h=e(118),d=e(128),u=e(220),c=e(251),p=e(113),v=e(45),g=e(19),b=e(251),m=e(333),y=e(8),w=e(9),f=e(235),x=e(208),z=e(211),k=e(209),q=e(123),M=e(65),R=e(334),V=e(335),S=e(28);class O extends r.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new M.BBox,this._inner_bbox=new M.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0,this._needs_notify=!1}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(e){this._range_manager.invalidate_dataranges=e}renderer_view(e){const t=this.renderer_views.get(e);if(null==t)for(const[,t]of this.renderer_views){const i=t.renderer_view(e);if(null!=i)return i}return t}get is_paused(){return null!=this._is_paused&&0!==this._is_paused}get child_models(){return[]}pause(){null==this._is_paused?this._is_paused=1:this._is_paused+=1}unpause(e=!1){if(null==this._is_paused)throw new Error(\"wasn't paused\");this._is_paused-=1,0!=this._is_paused||e||this.request_paint(\"everything\")}notify_finished_after_paint(){this._needs_notify=!0}request_render(){this.request_paint(\"everything\")}request_paint(e){this.invalidate_painters(e),this.schedule_paint()}invalidate_painters(e){if(\"everything\"==e)this._invalidate_all=!0;else if((0,y.isArray)(e))for(const t of e)this._invalidated_painters.add(t);else this._invalidated_painters.add(e)}schedule_paint(){if(!this.is_paused){const e=this.throttled_paint();this._ready=this._ready.then((()=>e))}}request_layout(){this._needs_layout=!0,this.request_paint(\"everything\")}reset(){\"standard\"==this.model.reset_policy&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){(0,p.remove_views)(this.renderer_views),(0,p.remove_views)(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new v.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new o.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges,this.model.extra_x_scales,this.model.extra_y_scales),this._range_manager=new R.RangeManager(this),this._state_manager=new V.StateManager(this,this._initial_state),this.throttled_paint=(0,m.throttle)((()=>this.repaint()),1e3/60);const{title_location:e,title:t}=this.model;null!=e&&null!=t&&(this._title=t instanceof h.Title?t:new h.Title({text:t}));const{toolbar_location:i,toolbar:s}=this.model;null!=i&&null!=s&&(this._toolbar=new u.ToolbarPanel({toolbar:s}),s.toolbar_location=i)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:e,output_backend:t}=this.model,i=new l.Canvas({hidpi:e,output_backend:t});this.canvas_view=await(0,p.build_view)(i,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){var e,t,i,s,a;this.layout=new z.BorderLayout,this.layout.set_sizing(this.box_sizing());const n=(0,w.copy)(this.model.above),o=(0,w.copy)(this.model.below),l=(0,w.copy)(this.model.left),r=(0,w.copy)(this.model.right),d=e=>{switch(e){case\"above\":return n;case\"below\":return o;case\"left\":return l;case\"right\":return r}},{title_location:c,title:p}=this.model;null!=c&&null!=p&&d(c).push(this._title);const{toolbar_location:v,toolbar:g}=this.model;if(null!=v&&null!=g){const e=d(v);let t=!0;if(this.model.toolbar_sticky)for(let i=0;i{var i;const s=this.renderer_view(t);return s.panel=new q.Panel(e),null===(i=s.update_layout)||void 0===i||i.call(s),s.layout},m=(e,t)=>{const i=\"above\"==e||\"below\"==e,s=[];for(const a of t)if((0,y.isArray)(a)){const t=a.map((t=>{const s=b(e,t);if(t instanceof u.ToolbarPanel){const e=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[e]:\"min\"}))}return s}));let n;i?(n=new k.Row(t),n.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(n=new k.Column(t),n.set_sizing({width_policy:\"min\",height_policy:\"max\"})),n.absolute=!0,s.push(n)}else s.push(b(e,a));return s},f=null!==(e=this.model.min_border)&&void 0!==e?e:0;this.layout.min_border={left:null!==(t=this.model.min_border_left)&&void 0!==t?t:f,top:null!==(i=this.model.min_border_top)&&void 0!==i?i:f,right:null!==(s=this.model.min_border_right)&&void 0!==s?s:f,bottom:null!==(a=this.model.min_border_bottom)&&void 0!==a?a:f};const M=new x.NodeLayout,R=new x.VStack,V=new x.VStack,S=new x.HStack,O=new x.HStack;M.absolute=!0,R.absolute=!0,V.absolute=!0,S.absolute=!0,O.absolute=!0,M.children=this.model.center.filter((e=>e instanceof _.Annotation)).map((e=>{var t;const i=this.renderer_view(e);return null===(t=i.update_layout)||void 0===t||t.call(i),i.layout})).filter((e=>null!=e));const{frame_width:P,frame_height:j}=this.model;M.set_sizing(Object.assign(Object.assign({},null!=P?{width_policy:\"fixed\",width:P}:{width_policy:\"fit\"}),null!=j?{height_policy:\"fixed\",height:j}:{height_policy:\"fit\"})),M.on_resize((e=>this.frame.set_geometry(e))),R.children=(0,w.reversed)(m(\"above\",n)),V.children=m(\"below\",o),S.children=(0,w.reversed)(m(\"left\",l)),O.children=m(\"right\",r),R.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),V.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),S.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.center_panel=M,this.layout.top_panel=R,this.layout.bottom_panel=V,this.layout.left_panel=S,this.layout.right_panel=O}get axis_views(){const e=[];for(const[,t]of this.renderer_views)t instanceof d.AxisView&&e.push(t);return e}set_toolbar_visibility(e){for(const t of this.visibility_callbacks)t(e)}update_range(e,t){this.pause(),this._range_manager.update(e,t),this.unpause()}reset_range(){this.update_range(null),this.trigger_ranges_update_event()}trigger_ranges_update_event(){const{x_range:e,y_range:t}=this.model;this.model.trigger_event(new b.RangesUpdate(e.start,e.end,t.start,t.end))}get_selection(){const e=new Map;for(const t of this.model.data_renderers){const{selected:i}=t.selection_manager.source;e.set(t,i)}return e}update_selection(e){for(const t of this.model.data_renderers){const i=t.selection_manager.source;if(null!=e){const s=e.get(t);null!=s&&i.selected.update(s,!0)}else i.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var e;for(const t of this.model.side_panels){const i=this.renderer_views.get(t);if(null===(e=i.layout)||void 0===e?void 0:e.has_size_changed())return this.invalidate_painters(i),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map((e=>this.renderer_views.get(e)))}*_compute_renderers(){const{above:e,below:t,left:i,right:s,center:a,renderers:n}=this.model;yield*n,yield*e,yield*t,yield*i,yield*s,yield*a,null!=this._title&&(yield this._title),null!=this._toolbar&&(yield this._toolbar);for(const e of this.model.toolbar.tools)null!=e.overlay&&(yield e.overlay),yield*e.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await(0,p.build_views)(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const e=this.model.toolbar.tools;(await(0,p.build_views)(this.tool_views,e,{parent:this})).map((e=>this.canvas_view.ui_event_bus.register_tool(e)))}connect_signals(){super.connect_signals();const{x_ranges:e,y_ranges:t}=this.frame;for(const[,t]of e)this.connect(t.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));for(const[,e]of t)this.connect(e.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));const{above:i,below:s,left:a,right:n,center:o,renderers:l}=this.model.properties;this.on_change([i,s,a,n,o,l],(async()=>await this.build_renderer_views())),this.connect(this.model.toolbar.properties.tools.change,(async()=>{await this.build_renderer_views(),await this.build_tool_views()})),this.connect(this.model.change,(()=>this.request_paint(\"everything\"))),this.connect(this.model.reset,(()=>this.reset()))}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,e]of this.renderer_views)if(!e.has_finished())return!1;return!0}after_layout(){var e;super.after_layout();for(const[,t]of this.renderer_views)t instanceof _.AnnotationView&&(null===(e=t.after_layout)||void 0===e||e.call(t));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:e,height:t}=this.layout.bbox;this.canvas_view.resize(e,t),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:t}=this.layout;this._inner_bbox.equals(t)||(this._inner_bbox=t,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){this.is_paused||(this.model.visible&&(g.logger.trace(`${this.toString()}.paint()`),this._actual_paint()),this._needs_notify&&(this._needs_notify=!1,this.notify_finished()))}_actual_paint(){var e;const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint(\"everything\")}),this.model.lod_timeout):t.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let i=!1,s=!1;if(this._invalidate_all)i=!0,s=!0;else for(const e of this._invalidated_painters){const{level:t}=e.model;if(\"overlay\"!=t?i=!0:s=!0,i&&s)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const a=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:o}=this.canvas_view;i&&(n.prepare(),this.canvas_view.prepare_webgl(a),this._map_hook(n.ctx,a),this._paint_empty(n.ctx,a),this._paint_outline(n.ctx,a),this._paint_levels(n.ctx,\"image\",a,!0),this._paint_levels(n.ctx,\"underlay\",a,!0),this._paint_levels(n.ctx,\"glyph\",a,!0),this._paint_levels(n.ctx,\"guide\",a,!1),this._paint_levels(n.ctx,\"annotation\",a,!1),n.finish()),(s||S.settings.wireframe)&&(o.prepare(),this._paint_levels(o.ctx,\"overlay\",a,!1),S.settings.wireframe&&this._paint_layout(o.ctx,this.layout),o.finish()),null==this._initial_state.range&&(this._initial_state.range=null!==(e=this._range_manager.compute_initial())&&void 0!==e?e:void 0),this._needs_paint=!1}_paint_levels(e,t,i,s){for(const a of this.computed_renderers){if(a.level!=t)continue;const n=this.renderer_views.get(a);e.save(),(s||n.needs_clip)&&(e.beginPath(),e.rect(...i),e.clip()),n.render(),e.restore(),n.has_webgl&&n.needs_webgl_blit&&this.canvas_view.blit_webgl(e)}}_paint_layout(e,t){const{x:i,y:s,width:a,height:n}=t.bbox;e.strokeStyle=\"blue\",e.strokeRect(i,s,a,n);for(const a of t)e.save(),t.absolute||e.translate(i,s),this._paint_layout(e,a),e.restore()}_map_hook(e,t){}_paint_empty(e,t){const[i,s,a,n]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,_]=t;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(e),e.fillRect(i,s,a,n),e.clearRect(o,l,r,_)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fillRect(o,l,r,_))}_paint_outline(e,t){if(this.visuals.outline_line.doit){e.save(),this.visuals.outline_line.set_value(e);let[i,s,a,n]=t;i+a==this.layout.bbox.width&&(a-=1),s+n==this.layout.bbox.height&&(n-=1),e.strokeRect(i,s,a,n),e.restore()}}to_blob(){return this.canvas_view.to_blob()}export(e,t=!0){const i=\"png\"==e?\"canvas\":\"svg\",s=new f.CanvasLayer(i,t),{width:a,height:n}=this.layout.bbox;s.resize(a,n);const{canvas:o}=this.canvas_view.compose();return s.ctx.drawImage(o,0,0),s}serializable_state(){const e=super.serializable_state(),{children:t}=e,i=(0,n.__rest)(e,[\"children\"]),s=this.get_renderer_views().map((e=>e.serializable_state())).filter((e=>null!=e.bbox));return Object.assign(Object.assign({},i),{children:[...null!=t?t:[],...s]})}}i.PlotView=O,O.__name__=\"PlotView\"},\n", + " function _(t,n,e,o,u){o(),e.throttle=function(t,n){let e=null,o=0,u=!1;return function(){return new Promise(((r,i)=>{const l=function(){o=Date.now(),e=null,u=!1;try{t(),r()}catch(t){i(t)}},a=Date.now(),c=n-(a-o);c<=0&&!u?(null!=e&&clearTimeout(e),u=!0,requestAnimationFrame(l)):e||u?r():e=setTimeout((()=>requestAnimationFrame(l)),c)}))}}},\n", + " function _(t,n,e,a,s){a();const o=t(63),r=t(19);class l{constructor(t){this.parent=t,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(t,n){const{x_ranges:e,y_ranges:a}=this.frame;if(null==t){for(const[,t]of e)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const s=[];for(const[n,a]of e)s.push([a,t.xrs.get(n)]);for(const[n,e]of a)s.push([e,t.yrs.get(n)]);(null==n?void 0:n.scrolling)&&this._update_ranges_together(s),this._update_ranges_individually(s,n)}}reset(){this.update(null)}_update_dataranges(t){const n=new Map,e=new Map;let a=!1;for(const[,n]of t.x_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const[,n]of t.y_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const t of this.parent.model.data_renderers){const s=this.parent.renderer_view(t);if(null==s)continue;const o=s.glyph_view.bounds();if(null!=o&&n.set(t,o),a){const n=s.glyph_view.log_bounds();null!=n&&e.set(t,n)}}let s=!1,l=!1;const i=t.x_target.span,d=t.y_target.span;let u;!1!==this.parent.model.match_aspect&&0!=i&&0!=d&&(u=1/this.parent.model.aspect_scale*(i/d));for(const[,a]of t.x_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,0,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}for(const[,a]of t.y_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,1,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}if(s&&l){r.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,n]of t.x_ranges)n.bounds=null;for(const[,n]of t.y_ranges)n.bounds=null}}update_dataranges(){this._update_dataranges(this.frame);for(const t of this.parent.model.renderers){const{coordinates:n}=t;null!=n&&this._update_dataranges(n)}null!=this.compute_initial()&&(this.invalidate_dataranges=!1)}compute_initial(){let t=!0;const{x_ranges:n,y_ranges:e}=this.frame,a=new Map,s=new Map;for(const[e,s]of n){const{start:n,end:o}=s;if(null==n||null==o||isNaN(n+o)){t=!1;break}a.set(e,{start:n,end:o})}if(t)for(const[n,a]of e){const{start:e,end:o}=a;if(null==e||null==o||isNaN(e+o)){t=!1;break}s.set(n,{start:e,end:o})}return t?{xrs:a,yrs:s}:(r.logger.warn(\"could not set initial ranges\"),null)}_update_ranges_together(t){let n=1;for(const[e,a]of t)n=Math.min(n,this._get_weight_to_constrain_interval(e,a));if(n<1)for(const[e,a]of t)a.start=n*a.start+(1-n)*e.start,a.end=n*a.end+(1-n)*e.end}_update_ranges_individually(t,n){const e=!!(null==n?void 0:n.panning),a=!!(null==n?void 0:n.scrolling);let s=!1;for(const[n,o]of t){if(!a){const t=this._get_weight_to_constrain_interval(n,o);t<1&&(o.start=t*o.start+(1-t)*n.start,o.end=t*o.end+(1-t)*n.end)}if(null!=n.bounds&&\"auto\"!=n.bounds){const[t,r]=n.bounds,l=Math.abs(o.end-o.start);n.is_reversed?(null!=t&&t>o.end&&(s=!0,o.end=t,(e||a)&&(o.start=t+l)),null!=r&&ro.start&&(s=!0,o.start=t,(e||a)&&(o.end=t+l)),null!=r&&r0&&r0&&r>a&&(s=(a-o)/(r-o)),s=Math.max(0,Math.min(1,s))}return s}}e.RangeManager=l,l.__name__=\"RangeManager\"},\n", + " function _(t,i,s,e,n){e();const h=t(15);class a{constructor(t,i){this.parent=t,this.initial_state=i,this.changed=new h.Signal0(this.parent,\"state_changed\"),this.history=[],this.index=-1}_do_state_change(t){const i=null!=this.history[t]?this.history[t].state:this.initial_state;return null!=i.range&&this.parent.update_range(i.range),null!=i.selection&&this.parent.update_selection(i.selection),i}push(t,i){const{history:s,index:e}=this,n=null!=s[e]?s[e].state:{},h=Object.assign(Object.assign(Object.assign({},this.initial_state),n),i);this.history=this.history.slice(0,this.index+1),this.history.push({type:t,state:h}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){if(this.can_undo){this.index-=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}redo(){if(this.can_redo){this.index+=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}get can_undo(){return this.index>=0}get can_redo(){return this.indexm.emit();const s=encodeURIComponent,o=document.createElement(\"script\");o.type=\"text/javascript\",o.src=`https://maps.googleapis.com/maps/api/js?v=${s(e)}&key=${s(t)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(o)}(t,e)}m.connect((()=>this.request_paint(\"everything\")))}this.unpause()}remove(){(0,p.remove)(this.map_el),super.remove()}update_range(t,e){var s,o;if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,e);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(null!==(s=t.sdx)&&void 0!==s?s:0,null!==(o=t.sdy)&&void 0!==o?o:0),super.update_range(t,e);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,e);const s=t.factor<0?-1:1,o=this.map.getZoom();if(null!=o){const t=o+s;if(t>=2){this.map.setZoom(t);const[e,s]=this._get_projected_bounds();s-e<0&&this.map.setZoom(o)}}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=(0,p.div)({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",(()=>this._set_bokeh_ranges())),t.event.addListener(this.map,\"bounds_changed\",(()=>this._set_bokeh_ranges())),t.event.addListenerOnce(this.map,\"tilesloaded\",(()=>this._render_finished())),this.connect(this.model.properties.map_options.change,(()=>this._update_options())),this.connect(this.model.map_options.properties.styles.change,(()=>this._update_styles())),this.connect(this.model.map_options.properties.lat.change,(()=>this._update_center(\"lat\"))),this.connect(this.model.map_options.properties.lng.change,(()=>this._update_center(\"lng\"))),this.connect(this.model.map_options.properties.zoom.change,(()=>this._update_zoom())),this.connect(this.model.map_options.properties.map_type.change,(()=>this._update_map_type())),this.connect(this.model.map_options.properties.scale_control.change,(()=>this._update_scale_control())),this.connect(this.model.map_options.properties.tilt.change,(()=>this._update_tilt()))}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,o]=this._get_latlon_bounds(),[i,a]=l.wgs84_mercator.compute(t,s),[n,p]=l.wgs84_mercator.compute(e,o);return[i,n,a,p]}_set_bokeh_ranges(){const[t,e,s,o]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:o})}_update_center(t){var e;const s=null===(e=this.map.getCenter())||void 0===e?void 0:e.toJSON();null!=s&&(s[t]=this.model.map_options[t],this.map.setCenter(s),this._set_bokeh_ranges())}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,o,i]=e;this.map_el.style.top=`${s}px`,this.map_el.style.left=`${t}px`,this.map_el.style.width=`${o}px`,this.map_el.style.height=`${i}px`}}_paint_empty(t,e){const s=this.layout.bbox.width,o=this.layout.bbox.height,[i,a,n,p]=e;t.clearRect(0,0,s,o),t.beginPath(),t.moveTo(0,0),t.lineTo(0,o),t.lineTo(s,o),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(i,a),t.lineTo(i+n,a),t.lineTo(i+n,a+p),t.lineTo(i,a+p),t.lineTo(i,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=(0,_.color2css)(this.model.border_fill_color),t.fill())}}s.GMapPlotView=d,d.__name__=\"GMapPlotView\"},\n", + " function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(132),n)},\n", + " function _(e,r,d,n,R){n(),R(\"GlyphRenderer\",e(175).GlyphRenderer),R(\"GraphRenderer\",e(339).GraphRenderer),R(\"GuideRenderer\",e(129).GuideRenderer);var G=e(41);R(\"Renderer\",G.Renderer),R(\"RendererGroup\",G.RendererGroup)},\n", + " function _(e,r,i,n,t){var o;n();const s=e(176),d=e(175),a=e(303),p=e(302),l=e(113),_=e(178),h=e(283),y=e(286);class c extends s.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize(),this.apply_coordinates();const{parent:e}=this,{edge_renderer:r,node_renderer:i}=this.model;this.edge_view=await(0,l.build_view)(r,{parent:e}),this.node_view=await(0,l.build_view)(i,{parent:e})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,(()=>{this.apply_coordinates(),this.edge_view.set_data(),this.node_view.set_data(),this.request_render()}))}apply_coordinates(){const{edge_renderer:e,node_renderer:r}=this.model;if(!(e.glyph instanceof h.MultiLine||e.glyph instanceof y.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(r.glyph instanceof _.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);const i=this.model.layout_provider.edge_coordinates,n=this.model.layout_provider.node_coordinates;e.glyph.properties.xs.internal=!0,e.glyph.properties.ys.internal=!0,r.glyph.properties.x.internal=!0,r.glyph.properties.y.internal=!0,e.glyph.xs={expr:i.x},e.glyph.ys={expr:i.y},r.glyph.x={expr:n.x},r.glyph.y={expr:n.y}}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(e){if(e instanceof d.GlyphRenderer){if(e==this.edge_view.model)return this.edge_view;if(e==this.node_view.model)return this.node_view}return super.renderer_view(e)}}i.GraphRendererView=c,c.__name__=\"GraphRendererView\";class g extends s.DataRenderer{constructor(e){super(e)}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}i.GraphRenderer=g,o=g,g.__name__=\"GraphRenderer\",o.prototype.default_view=c,o.define((({Ref:e})=>({layout_provider:[e(a.LayoutProvider)],node_renderer:[e(d.GlyphRenderer)],edge_renderer:[e(d.GlyphRenderer)],selection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly],inspection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly]})))},\n", + " function _(e,t,n,o,c){o();(0,e(1).__exportStar)(e(74),n),c(\"Selection\",e(72).Selection)},\n", + " function _(a,e,S,o,r){o(),r(\"ServerSentDataSource\",a(342).ServerSentDataSource),r(\"AjaxDataSource\",a(344).AjaxDataSource),r(\"ColumnDataSource\",a(75).ColumnDataSource),r(\"ColumnarDataSource\",a(70).ColumnarDataSource),r(\"CDSView\",a(190).CDSView),r(\"DataSource\",a(71).DataSource),r(\"GeoJSONDataSource\",a(345).GeoJSONDataSource),r(\"WebDataSource\",a(343).WebDataSource)},\n", + " function _(e,t,i,a,s){a();const n=e(343);class r extends n.WebDataSource{constructor(e){super(e),this.initialized=!1}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{var t;this.load_data(JSON.parse(e.data),this.mode,null!==(t=this.max_size)&&void 0!==t?t:void 0)}}}}i.ServerSentDataSource=r,r.__name__=\"ServerSentDataSource\"},\n", + " function _(e,t,a,n,r){var s;n();const l=e(75),o=e(20);class c extends l.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}get_length(){var e;return null!==(e=super.get_length())&&void 0!==e?e:0}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:n}=this;let r;switch(r=null!=n?n.execute(this,{response:e}):e,t){case\"replace\":this.data=r;break;case\"append\":{const e=this.data;for(const t of this.columns()){const n=Array.from(e[t]),s=Array.from(r[t]),l=n.concat(s);r[t]=null!=a?l.slice(-a):l}this.data=r;break}}}}a.WebDataSource=c,s=c,c.__name__=\"WebDataSource\",s.define((({Any:e,Int:t,String:a,Nullable:n})=>({max_size:[n(t),null],mode:[o.UpdateMode,\"replace\"],adapter:[n(e),null],data_url:[a]})))},\n", + " function _(t,e,i,s,a){var n;s();const r=t(343),o=t(20),l=t(19),d=t(13);class h extends r.WebDataSource{constructor(t){super(t),this.interval=null,this.initialized=!1}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),null!=this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=null,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",(()=>this.do_load(s,t,null!=e?e:void 0))),s.addEventListener(\"error\",(()=>this.do_error(s))),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of(0,d.entries)(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){l.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=h,n=h,h.__name__=\"AjaxDataSource\",n.define((({Boolean:t,Int:e,String:i,Dict:s,Nullable:a})=>({polling_interval:[a(e),null],content_type:[i,\"application/json\"],http_headers:[s(i),{}],method:[o.HTTPMethod,\"POST\"],if_modified:[t,!1]})))},\n", + " function _(e,t,o,r,n){var s;r();const a=e(70),i=e(19),l=e(9),c=e(13);function _(e){return null!=e?e:NaN}const{hasOwnProperty:g}=Object.prototype;class u extends a.ColumnarDataSource{constructor(e){super(e)}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,(()=>this._update_data()))}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return(0,l.range)(0,e).map((e=>[]))}_get_new_nan_array(e){return(0,l.range)(0,e).map((e=>NaN))}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of(0,c.entries)(s))g.call(t,e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=_(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=_(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const s=n.reduce(r);for(let e=0;e({geojson:[e]}))),s.internal((({Dict:e,Arrayable:t})=>({data:[e(t),{}]})))},\n", + " function _(e,r,T,o,S){o(),S(\"BBoxTileSource\",e(347).BBoxTileSource),S(\"MercatorTileSource\",e(348).MercatorTileSource),S(\"QUADKEYTileSource\",e(351).QUADKEYTileSource),S(\"TileRenderer\",e(352).TileRenderer),S(\"TileSource\",e(349).TileSource),S(\"TMSTileSource\",e(355).TMSTileSource),S(\"WMTSTileSource\",e(353).WMTSTileSource)},\n", + " function _(e,t,r,o,l){var i;o();const n=e(348);class s extends n.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars);let l,i,n,s;return this.use_latlon?[i,s,l,n]=this.get_tile_geographic_bounds(e,t,r):[i,s,l,n]=this.get_tile_meter_bounds(e,t,r),o.replace(\"{XMIN}\",i.toString()).replace(\"{YMIN}\",s.toString()).replace(\"{XMAX}\",l.toString()).replace(\"{YMAX}\",n.toString())}}r.BBoxTileSource=s,i=s,s.__name__=\"BBoxTileSource\",i.define((({Boolean:e})=>({use_latlon:[e,!1]})))},\n", + " function _(t,e,i,_,s){var r;_();const o=t(349),n=t(9),l=t(350);class u extends o.TileSource{constructor(t){super(t)}initialize(){super.initialize(),this._resolutions=(0,n.range)(this.min_zoom,this.max_zoom+1).map((t=>this.get_resolution(t)))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=u,r=u,u.__name__=\"MercatorTileSource\",r.define((({Boolean:t})=>({snap_to_zoom:[t,!1],wrap_around:[t,!0]}))),r.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},\n", + " function _(e,t,r,i,n){var l;i();const a=e(53),s=e(13);class c extends a.Model{constructor(e){super(e)}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._clear_cache()))}string_lookup_replace(e,t){let r=e;for(const[e,i]of(0,s.entries)(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map((e=>parseInt(e)));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,l]=t,a=(n-r)/2+r,s=(l-i)/2+i;e.sort((function(e,t){return Math.sqrt((a-e[0])**2+(s-e[1])**2)-Math.sqrt((a-t[0])**2+(s-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=c,l=c,c.__name__=\"TileSource\",l.define((({Number:e,String:t,Dict:r,Nullable:i})=>({url:[t,\"\"],tile_size:[e,256],max_zoom:[e,30],min_zoom:[e,0],extra_url_vars:[r(t),{}],attribution:[t,\"\"],x_origin_offset:[e],y_origin_offset:[e],initial_resolution:[i(e),null]})))},\n", + " function _(t,e,r,n,o){n();const c=t(78);function _(t,e){return c.wgs84_mercator.compute(t,e)}function g(t,e){return c.wgs84_mercator.invert(t,e)}r.geographic_to_meters=_,r.meters_to_geographic=g,r.geographic_extent_to_meters=function(t){const[e,r,n,o]=t,[c,g]=_(e,r),[i,u]=_(n,o);return[c,g,i,u]},r.meters_extent_to_geographic=function(t){const[e,r,n,o]=t,[c,_]=g(e,r),[i,u]=g(n,o);return[c,_,i,u]}},\n", + " function _(e,t,r,s,_){s();const o=e(348);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const s=this.string_lookup_replace(this.url,this.extra_url_vars),[_,o,c]=this.tms_to_wmts(e,t,r),i=this.tile_xyz_to_quadkey(_,o,c);return s.replace(\"{Q}\",i)}}r.QUADKEYTileSource=c,c.__name__=\"QUADKEYTileSource\"},\n", + " function _(t,e,i,s,_){s();const n=t(1);var a;const o=t(349),r=t(353),h=t(41),l=t(58),d=t(43),m=t(136),c=t(9),u=t(8),p=(0,n.__importStar)(t(354));class g extends h.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.tile_source.change,(()=>this.request_render()))}remove(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el),super.remove()}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el);const{attribution:t}=this.model.tile_source;if((0,u.isString)(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=(0,d.div)({class:p.tile_attribution,style:{position:\"absolute\",right:`${s}px`,bottom:`${_}px`,\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof l.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof l.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const n=this.model.tile_source.tile_xyz_to_quadkey(t,e,i),a=this.model.tile_source.tile_xyz_to_key(t,e,i);if(this.model.tile_source.tiles.has(a))return;const[o,r,h]=this.model.tile_source.normalize_xyz(t,e,i),l=this.model.tile_source.get_image_url(o,r,h),d={img:void 0,tile_coords:[t,e,i],normalized_coords:[o,r,h],quadkey:n,cache_key:a,bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]};this.model.tile_source.tiles.set(a,d),this._tiles.push(d),new m.ImageLoader(l,{loaded:t=>{Object.assign(d,{img:t,loaded:!0}),_?(d.finished=!0,this.notify_finished()):this.request_render()},failed(){d.finished=!0}})}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0==this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,o=t,r=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,o,r,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.outline_line_width,e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,o=i,r=!0),r&&(this.x_range.setv({start:s[0],end:s[2]}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,o),l=[],d=[],m=[],u=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),o=t.tiles.get(a);if(null!=o&&o.loaded)d.push(a);else if(this.model.render_parents){const[e,a,o]=t.get_closest_parent_by_tile_xyz(i,s,n),r=t.tile_xyz_to_key(e,a,o),h=t.tiles.get(r);if(null!=h&&h.loaded&&!(0,c.includes)(m,r)&&m.push(r),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&u.push(e)}}}null==o&&l.push(e)}this._render_tiles(m),this._render_tiles(u),this._render_tiles(d),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout((()=>this._fetch_tiles(l)),65)}}i.TileRendererView=g,g.__name__=\"TileRendererView\";class b extends h.Renderer{constructor(t){super(t)}}i.TileRenderer=b,a=b,b.__name__=\"TileRenderer\",a.prototype.default_view=g,a.define((({Boolean:t,Number:e,Ref:i})=>({alpha:[e,1],smoothing:[t,!0],tile_source:[i(o.TileSource),()=>new r.WMTSTileSource],render_parents:[t,!0]}))),a.override({level:\"image\"})},\n", + " function _(t,e,r,o,s){o();const c=t(348);class i extends c.MercatorTileSource{constructor(t){super(t)}get_image_url(t,e,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,i]=this.tms_to_wmts(t,e,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",i.toString())}}r.WMTSTileSource=i,i.__name__=\"WMTSTileSource\"},\n", + " function _(t,o,i,b,r){b(),i.root=\"bk-root\",i.tile_attribution=\"bk-tile-attribution\",i.default=\".bk-root .bk-tile-attribution a{color:black;}\"},\n", + " function _(e,r,t,c,o){c();const i=e(348);class l extends i.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=l,l.__name__=\"TMSTileSource\"},\n", + " function _(e,t,u,a,r){a(),r(\"CanvasTexture\",e(357).CanvasTexture),r(\"ImageURLTexture\",e(359).ImageURLTexture),r(\"Texture\",e(358).Texture)},\n", + " function _(t,e,n,c,s){var r;c();const o=t(358),a=t(34);class u extends o.Texture{constructor(t){super(t)}get func(){const t=(0,a.use_strict)(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),c}}n.CanvasTexture=u,r=u,u.__name__=\"CanvasTexture\",r.define((({String:t})=>({code:[t]})))},\n", + " function _(e,t,n,r,o){var i;r();const s=e(53),u=e(20);class c extends s.Model{constructor(e){super(e)}}n.Texture=c,i=c,c.__name__=\"Texture\",i.define((()=>({repetition:[u.TextureRepetition,\"repeat\"]})))},\n", + " function _(e,t,i,r,n){var a;r();const s=e(358),o=e(136);class u extends s.Texture{constructor(e){super(e)}initialize(){super.initialize(),this._loader=new o.ImageLoader(this.url)}get_pattern(e,t,i){const{_loader:r}=this;return this._loader.finished?r.image:r.promise}}i.ImageURLTexture=u,a=u,u.__name__=\"ImageURLTexture\",a.define((({String:e})=>({url:[e]})))},\n", + " function _(o,l,T,e,t){e(),t(\"ActionTool\",o(238).ActionTool),t(\"CustomAction\",o(361).CustomAction),t(\"HelpTool\",o(239).HelpTool),t(\"RedoTool\",o(362).RedoTool),t(\"ResetTool\",o(363).ResetTool),t(\"SaveTool\",o(364).SaveTool),t(\"UndoTool\",o(365).UndoTool),t(\"ZoomInTool\",o(366).ZoomInTool),t(\"ZoomOutTool\",o(369).ZoomOutTool),t(\"ButtonTool\",o(224).ButtonTool),t(\"EditTool\",o(370).EditTool),t(\"BoxEditTool\",o(371).BoxEditTool),t(\"FreehandDrawTool\",o(372).FreehandDrawTool),t(\"PointDrawTool\",o(373).PointDrawTool),t(\"PolyDrawTool\",o(374).PolyDrawTool),t(\"PolyTool\",o(375).PolyTool),t(\"PolyEditTool\",o(376).PolyEditTool),t(\"BoxSelectTool\",o(377).BoxSelectTool),t(\"BoxZoomTool\",o(379).BoxZoomTool),t(\"GestureTool\",o(223).GestureTool),t(\"LassoSelectTool\",o(380).LassoSelectTool),t(\"LineEditTool\",o(382).LineEditTool),t(\"PanTool\",o(384).PanTool),t(\"PolySelectTool\",o(381).PolySelectTool),t(\"RangeTool\",o(385).RangeTool),t(\"SelectTool\",o(378).SelectTool),t(\"TapTool\",o(386).TapTool),t(\"WheelPanTool\",o(387).WheelPanTool),t(\"WheelZoomTool\",o(388).WheelZoomTool),t(\"CrosshairTool\",o(389).CrosshairTool),t(\"CustomJSHover\",o(390).CustomJSHover),t(\"HoverTool\",o(391).HoverTool),t(\"InspectTool\",o(232).InspectTool),t(\"Tool\",o(222).Tool),t(\"ToolProxy\",o(394).ToolProxy),t(\"Toolbar\",o(221).Toolbar),t(\"ToolbarBase\",o(233).ToolbarBase),t(\"ProxyToolbar\",o(395).ProxyToolbar),t(\"ToolbarBox\",o(395).ToolbarBox)},\n", + " function _(t,o,e,s,n){var c;s();const i=t(238);class u extends i.ActionToolButtonView{css_classes(){return super.css_classes().concat(\"bk-toolbar-button-custom-action\")}}e.CustomActionButtonView=u,u.__name__=\"CustomActionButtonView\";class l extends i.ActionToolView{doit(){var t;null===(t=this.model.callback)||void 0===t||t.execute(this.model)}}e.CustomActionView=l,l.__name__=\"CustomActionView\";class a extends i.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=u}}e.CustomAction=a,c=a,a.__name__=\"CustomAction\",c.prototype.default_view=l,c.define((({Any:t,String:o,Nullable:e})=>({callback:[e(t)],icon:[o]}))),c.override({description:\"Perform a Custom Action\"})},\n", + " function _(e,o,t,i,s){var n;i();const l=e(238),_=e(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_redo))}doit(){const e=this.plot_view.state.redo();null!=(null==e?void 0:e.range)&&this.plot_view.trigger_ranges_update_event()}}t.RedoToolView=d,d.__name__=\"RedoToolView\";class a extends l.ActionTool{constructor(e){super(e),this.tool_name=\"Redo\",this.icon=_.tool_icon_redo}}t.RedoTool=a,n=a,a.__name__=\"RedoTool\",n.prototype.default_view=d,n.override({disabled:!0}),n.register_alias(\"redo\",(()=>new a))},\n", + " function _(e,o,t,s,i){var _;s();const n=e(238),l=e(228);class c extends n.ActionToolView{doit(){this.plot_view.reset()}}t.ResetToolView=c,c.__name__=\"ResetToolView\";class r extends n.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=l.tool_icon_reset}}t.ResetTool=r,_=r,r.__name__=\"ResetTool\",_.prototype.default_view=c,_.register_alias(\"reset\",(()=>new r))},\n", + " function _(e,o,t,a,i){var s;a();const c=e(238),n=e(228);class l extends c.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:Promise.resolve(e)});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=l,l.__name__=\"SaveToolView\";class r extends c.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=n.tool_icon_save}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=r,s=r,r.__name__=\"SaveTool\",s.prototype.default_view=l,s.register_alias(\"save\",(()=>new r))},\n", + " function _(o,e,t,n,i){var s;n();const l=o(238),_=o(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_undo))}doit(){const o=this.plot_view.state.undo();null!=(null==o?void 0:o.range)&&this.plot_view.trigger_ranges_update_event()}}t.UndoToolView=d,d.__name__=\"UndoToolView\";class a extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=_.tool_icon_undo}}t.UndoTool=a,s=a,a.__name__=\"UndoTool\",s.prototype.default_view=d,s.override({disabled:!0}),s.register_alias(\"undo\",(()=>new a))},\n", + " function _(o,n,e,i,s){var t;i();const _=o(367),m=o(228);class a extends _.ZoomBaseToolView{}e.ZoomInToolView=a,a.__name__=\"ZoomInToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=m.tool_icon_zoom_in}}e.ZoomInTool=l,t=l,l.__name__=\"ZoomInTool\",t.prototype.default_view=a,t.register_alias(\"zoom_in\",(()=>new l({dimensions:\"both\"}))),t.register_alias(\"xzoom_in\",(()=>new l({dimensions:\"width\"}))),t.register_alias(\"yzoom_in\",(()=>new l({dimensions:\"height\"})))},\n", + " function _(o,t,e,i,s){var n;i();const a=o(238),_=o(20),l=o(368);class m extends a.ActionToolView{doit(){var o;const t=this.plot_view.frame,e=this.model.dimensions,i=\"width\"==e||\"both\"==e,s=\"height\"==e||\"both\"==e,n=(0,l.scale_range)(t,this.model.sign*this.model.factor,i,s);this.plot_view.state.push(\"zoom_out\",{range:n}),this.plot_view.update_range(n,{scrolling:!0,maintain_focus:this.model.maintain_focus}),null===(o=this.model.document)||void 0===o||o.interactive_start(this.plot_model),this.plot_view.trigger_ranges_update_event()}}e.ZoomBaseToolView=m,m.__name__=\"ZoomBaseToolView\";class h extends a.ActionTool{constructor(o){super(o),this.maintain_focus=!0}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=h,n=h,h.__name__=\"ZoomBaseTool\",n.define((({Percent:o})=>({factor:[o,.1],dimensions:[_.Dimensions,\"both\"]})))},\n", + " function _(n,t,o,r,s){r();const c=n(10);function e(n,t,o){const[r,s]=[n.start,n.end],c=null!=o?o:(s+r)/2;return[r-(r-c)*t,s-(s-c)*t]}function a(n,[t,o]){const r=new Map;for(const[s,c]of n){const[n,e]=c.r_invert(t,o);r.set(s,{start:n,end:e})}return r}o.scale_highlow=e,o.get_info=a,o.scale_range=function(n,t,o=!0,r=!0,s){t=(0,c.clamp)(t,-.9,.9);const l=o?t:0,[u,i]=e(n.bbox.h_range,l,null!=s?s.x:void 0),_=a(n.x_scales,[u,i]),f=r?t:0,[g,x]=e(n.bbox.v_range,f,null!=s?s.y:void 0);return{xrs:_,yrs:a(n.y_scales,[g,x]),factor:t}}},\n", + " function _(o,e,t,i,s){var n;i();const _=o(367),a=o(228);class m extends _.ZoomBaseToolView{}t.ZoomOutToolView=m,m.__name__=\"ZoomOutToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=a.tool_icon_zoom_out}}t.ZoomOutTool=l,n=l,l.__name__=\"ZoomOutTool\",n.prototype.default_view=m,n.define((({Boolean:o})=>({maintain_focus:[o,!0]}))),n.register_alias(\"zoom_out\",(()=>new l({dimensions:\"both\"}))),n.register_alias(\"xzoom_out\",(()=>new l({dimensions:\"width\"}))),n.register_alias(\"yzoom_out\",(()=>new l({dimensions:\"height\"})))},\n", + " function _(e,t,s,o,n){var r;o();const i=e(9),c=e(8),a=e(11),_=e(175),l=e(223);class d extends l.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,a.unreachable)():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,s){if(!this.plot_view.frame.bbox.contains(e,t))return null;const o=this.plot_view.renderer_view(s);if(null==o)return null;return[o.coordinates.x_scale.invert(e),o.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,s=t.selected.indices;s.sort();for(const e of t.columns()){const o=t.get_array(e);for(let e=0;e({custom_icon:[n(t),null],empty_value:[e],renderers:[s(o(_.GlyphRenderer)),[]]})))},\n", + " function _(e,t,s,i,_){var o;i();const n=e(43),a=e(20),d=e(370),l=e(228);class r extends d.EditToolView{_tap(e){null==this._draw_basepoint&&null==this._basepoint&&this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)if(e.keyCode===n.Keys.Backspace)this._delete_selected(t);else if(e.keyCode==n.Keys.Esc){t.data_source.selection_manager.clear()}}_set_extent([e,t],[s,i],_,o=!1){const n=this.model.renderers[0],a=this.plot_view.renderer_view(n);if(null==a)return;const d=n.glyph,l=n.data_source,[r,h]=a.coordinates.x_scale.r_invert(e,t),[p,u]=a.coordinates.y_scale.r_invert(s,i),[c,m]=[(r+h)/2,(p+u)/2],[f,b]=[h-r,u-p],[y,x]=[d.x.field,d.y.field],[w,v]=[d.width.field,d.height.field];if(_)this._pop_glyphs(l,this.model.num_objects),y&&l.get_array(y).push(c),x&&l.get_array(x).push(m),w&&l.get_array(w).push(f),v&&l.get_array(v).push(b),this._pad_empty_columns(l,[y,x,w,v]);else{const e=l.data[y].length-1;y&&(l.data[y][e]=c),x&&(l.data[x][e]=m),w&&(l.data[w][e]=f),v&&(l.data[v][e]=b)}this._emit_cds_changes(l,!0,!1,o)}_update_box(e,t=!1,s=!1){if(null==this._draw_basepoint)return;const i=[e.sx,e.sy],_=this.plot_view.frame,o=this.model.dimensions,n=this.model._get_dim_limits(this._draw_basepoint,i,_,o);if(null!=n){const[e,i]=n;this._set_extent(e,i,t,s)}}_doubletap(e){this.model.active&&(null!=this._draw_basepoint?(this._update_box(e,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[e.sx,e.sy],this._select_event(e,\"append\",this.model.renderers),this._update_box(e,!0,!1)))}_move(e){this._update_box(e,!1,!1)}_pan_start(e){if(e.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[e.sx,e.sy],this._update_box(e,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy]}}_pan(e,t=!1,s=!1){if(e.shiftKey){if(null==this._draw_basepoint)return;this._update_box(e,t,s)}else{if(null==this._basepoint)return;this._drag_points(e,this.model.renderers)}}_pan_end(e){if(this._pan(e,!1,!0),e.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0)}}}s.BoxEditToolView=r,r.__name__=\"BoxEditToolView\";class h extends d.EditTool{constructor(e){super(e),this.tool_name=\"Box Edit Tool\",this.icon=l.tool_icon_box_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=1}}s.BoxEditTool=h,o=h,h.__name__=\"BoxEditTool\",o.prototype.default_view=r,o.define((({Int:e})=>({dimensions:[a.Dimensions,\"both\"],num_objects:[e,0]})))},\n", + " function _(e,t,a,s,r){var _;s();const d=e(43),o=e(8),n=e(370),i=e(228);class l extends n.EditToolView{_draw(e,t,a=!1){if(!this.model.active)return;const s=this.model.renderers[0],r=this._map_drag(e.sx,e.sy,s);if(null==r)return;const[_,d]=r,n=s.data_source,i=s.glyph,[l,h]=[i.xs.field,i.ys.field];if(\"new\"==t)this._pop_glyphs(n,this.model.num_objects),l&&n.get_array(l).push([_]),h&&n.get_array(h).push([d]),this._pad_empty_columns(n,[l,h]);else if(\"add\"==t){if(l){const e=n.data[l].length-1;let t=n.get_array(l)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[l][e]=t),t.push(_)}if(h){const e=n.data[h].length-1;let t=n.get_array(h)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[h][e]=t),t.push(d)}}this._emit_cds_changes(n,!0,!0,a)}_pan_start(e){this._draw(e,\"new\")}_pan(e){this._draw(e,\"add\")}_pan_end(e){this._draw(e,\"add\",!0)}_tap(e){this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===d.Keys.Esc?t.data_source.selection_manager.clear():e.keyCode===d.Keys.Backspace&&this._delete_selected(t)}}a.FreehandDrawToolView=l,l.__name__=\"FreehandDrawToolView\";class h extends n.EditTool{constructor(e){super(e),this.tool_name=\"Freehand Draw Tool\",this.icon=i.tool_icon_freehand_draw,this.event_type=[\"pan\",\"tap\"],this.default_order=3}}a.FreehandDrawTool=h,_=h,h.__name__=\"FreehandDrawTool\",_.prototype.default_view=l,_.define((({Int:e})=>({num_objects:[e,0]}))),_.register_alias(\"freehand_draw\",(()=>new h))},\n", + " function _(e,t,s,o,a){var i;o();const n=e(43),_=e(370),r=e(228);class d extends _.EditToolView{_tap(e){if(this._select_event(e,this._select_mode(e),this.model.renderers).length||!this.model.add)return;const t=this.model.renderers[0],s=this._map_drag(e.sx,e.sy,t);if(null==s)return;const o=t.glyph,a=t.data_source,[i,n]=[o.x.field,o.y.field],[_,r]=s;this._pop_glyphs(a,this.model.num_objects),i&&a.get_array(i).push(_),n&&a.get_array(n).push(r),this._pad_empty_columns(a,[i,n]),a.change.emit(),a.data=a.data,a.properties.data.change.emit()}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===n.Keys.Backspace?this._delete_selected(t):e.keyCode==n.Keys.Esc&&t.data_source.selection_manager.clear()}_pan_start(e){this.model.drag&&(this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy])}_pan(e){this.model.drag&&null!=this._basepoint&&this._drag_points(e,this.model.renderers)}_pan_end(e){if(this.model.drag){this._pan(e);for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0);this._basepoint=null}}}s.PointDrawToolView=d,d.__name__=\"PointDrawToolView\";class l extends _.EditTool{constructor(e){super(e),this.tool_name=\"Point Draw Tool\",this.icon=r.tool_icon_point_draw,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=2}}s.PointDrawTool=l,i=l,l.__name__=\"PointDrawTool\",i.prototype.default_view=d,i.define((({Boolean:e,Int:t})=>({add:[e,!0],drag:[e,!0],num_objects:[t,0]})))},\n", + " function _(e,t,s,i,a){var r;i();const o=e(43),n=e(8),d=e(375),_=e(228);class h extends d.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(e){this._drawing?this._draw(e,\"add\",!0):this._select_event(e,this._select_mode(e),this.model.renderers)}_draw(e,t,s=!1){const i=this.model.renderers[0],a=this._map_drag(e.sx,e.sy,i);if(this._initialized||this.activate(),null==a)return;const[r,o]=this._snap_to_vertex(e,...a),d=i.data_source,_=i.glyph,[h,l]=[_.xs.field,_.ys.field];if(\"new\"==t)this._pop_glyphs(d,this.model.num_objects),h&&d.get_array(h).push([r,r]),l&&d.get_array(l).push([o,o]),this._pad_empty_columns(d,[h,l]);else if(\"edit\"==t){if(h){const e=d.data[h][d.data[h].length-1];e[e.length-1]=r}if(l){const e=d.data[l][d.data[l].length-1];e[e.length-1]=o}}else if(\"add\"==t){if(h){const e=d.data[h].length-1;let t=d.get_array(h)[e];const s=t[t.length-1];t[t.length-1]=r,(0,n.isArray)(t)||(t=Array.from(t),d.data[h][e]=t),t.push(s)}if(l){const e=d.data[l].length-1;let t=d.get_array(l)[e];const s=t[t.length-1];t[t.length-1]=o,(0,n.isArray)(t)||(t=Array.from(t),d.data[l][e]=t),t.push(s)}}this._emit_cds_changes(d,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const e=[],t=[];for(let s=0;sthis._show_vertices()))}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=h,h.__name__=\"PolyDrawToolView\";class l extends d.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}}s.PolyDrawTool=l,r=l,l.__name__=\"PolyDrawTool\",r.prototype.default_view=h,r.define((({Boolean:e,Int:t})=>({drag:[e,!0],num_objects:[t,0]})))},\n", + " function _(e,r,t,s,o){var _;s();const d=e(8),i=e(370);class l extends i.EditToolView{_set_vertices(e,r){const t=this.model.vertex_renderer.glyph,s=this.model.vertex_renderer.data_source,[o,_]=[t.x.field,t.y.field];o&&((0,d.isArray)(e)?s.data[o]=e:t.x={value:e}),_&&((0,d.isArray)(r)?s.data[_]=r:t.y={value:r}),this._emit_cds_changes(s,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,r,t){if(this.model.vertex_renderer){const s=this._select_event(e,\"replace\",[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,_=this.model.vertex_renderer.glyph,[d,i]=[_.x.field,_.y.field];if(s.length){const e=o.selected.indices[0];d&&(r=o.data[d][e]),i&&(t=o.data[i][e]),o.selection_manager.clear()}}return[r,t]}}t.PolyToolView=l,l.__name__=\"PolyToolView\";class n extends i.EditTool{constructor(e){super(e)}}t.PolyTool=n,_=n,n.__name__=\"PolyTool\",_.define((({AnyRef:e})=>({vertex_renderer:[e()]})))},\n", + " function _(e,t,s,r,i){var _;r();const d=e(43),n=e(8),l=e(375),a=e(228);class c extends l.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),r=null==t?void 0:t.data_source,i=this._select_event(e,\"replace\",this.model.renderers);if(!i.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(null!=r&&r.disconnect(r.properties.data.change,s));null!=r&&r.connect(r.properties.data.change,s),this._cur_index=i[0].data_source.selected.indices[0],this._update_vertices(i[0])}_update_vertices(e){const t=e.glyph,s=e.data_source,r=this._cur_index,[i,_]=[t.xs.field,t.ys.field];if(this._drawing)return;if(null==r&&(i||_))return;let d,l;i&&null!=r?(d=s.data[i][r],(0,n.isArray)(d)||(s.data[i][r]=d=Array.from(d))):d=t.xs.value,_&&null!=r?(l=s.data[_][r],(0,n.isArray)(l)||(s.data[_][r]=l=Array.from(l))):l=t.ys.value,this._selected_renderer=e,this._set_vertices(d,l)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===d.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==d.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=c,c.__name__=\"PolyEditToolView\";class o extends l.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=a.tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}}s.PolyEditTool=o,_=o,o.__name__=\"PolyEditTool\",_.prototype.default_view=c},\n", + " function _(e,t,o,s,i){var l;s();const n=e(378),_=e(116),c=e(20),r=e(228);class a extends n.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const n={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(n,i,l)}}o.BoxSelectToolView=a,a.__name__=\"BoxSelectToolView\";const h=()=>new _.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends n.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=r.tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}o.BoxSelectTool=m,l=m,m.__name__=\"BoxSelectTool\",l.prototype.default_view=a,l.define((({Boolean:e,Ref:t})=>({dimensions:[c.Dimensions,\"both\"],select_every_mousemove:[e,!1],overlay:[t(_.BoxAnnotation),h],origin:[c.BoxOrigin,\"corner\"]}))),l.register_alias(\"box_select\",(()=>new m)),l.register_alias(\"xbox_select\",(()=>new m({dimensions:\"width\"}))),l.register_alias(\"ybox_select\",(()=>new m({dimensions:\"height\"})))},\n", + " function _(e,t,s,n,r){var o;n();const c=e(223),i=e(175),a=e(339),l=e(176),d=e(66),_=e(20),h=e(43),p=e(251),u=e(15),m=e(11);class v extends c.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect((()=>this._clear()))}get computed_renderers(){const{renderers:e,names:t}=this.model,s=this.plot_model.data_renderers;return(0,d.compute_renderers)(e,s,t)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof i.GlyphRenderer)n=s.data_source;else{if(!(s instanceof a.GraphRenderer))continue;n=s.node_renderer.data_source}const r=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...r,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,m.unreachable)():this.model.mode}_keyup(e){e.keyCode==h.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();const e=this.computed_renderers.map((e=>this.plot_view.renderer_view(e)));this.plot_view.request_paint(e)}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,r]of n){const n=r[0].get_selection_manager(),o=[];for(const e of r){const t=this.plot_view.renderer_view(e);null!=t&&o.push(t)}n.select(o,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let r;switch(e.type){case\"point\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:o,sy0:c,sy1:i}=e,[a,l]=s.r_invert(t,o),[d,_]=n.r_invert(c,i);r=Object.assign(Object.assign({},e),{x0:a,y0:d,x1:l,y1:_});break}case\"poly\":{const{sx:t,sy:o}=e,c=s.v_invert(t),i=n.v_invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new p.SelectionGeometry(r,t))}}s.SelectToolView=v,v.__name__=\"SelectToolView\";class b extends c.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new u.Signal0(this,\"clear\")}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=b,o=b,b.__name__=\"SelectTool\",o.define((({String:e,Array:t,Ref:s,Or:n,Auto:r})=>({renderers:[n(t(s(l.DataRenderer)),r),\"auto\"],names:[t(e),[]],mode:[_.SelectionMode,\"replace\"]})))},\n", + " function _(t,o,e,s,i){var n;s();const _=t(223),a=t(116),l=t(20),r=t(228);class h extends _.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew a.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=r.tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=m,n=m,m.__name__=\"BoxZoomTool\",n.prototype.default_view=h,n.define((({Boolean:t,Ref:o})=>({dimensions:[l.Dimensions,\"both\"],overlay:[o(a.BoxAnnotation),c],match_aspect:[t,!1],origin:[l.BoxOrigin,\"corner\"]}))),n.register_alias(\"box_zoom\",(()=>new m({dimensions:\"both\"}))),n.register_alias(\"xbox_zoom\",(()=>new m({dimensions:\"width\"}))),n.register_alias(\"ybox_zoom\",(()=>new m({dimensions:\"height\"})))},\n", + " function _(s,e,t,o,_){var l;o();const i=s(378),a=s(217),c=s(381),n=s(43),h=s(228);class r extends i.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_overlay()}_keyup(s){s.keyCode==n.Keys.Enter&&this._clear_overlay()}_pan_start(s){this.sxs=[],this.sys=[];const{sx:e,sy:t}=s;this._append_overlay(e,t)}_pan(s){const[e,t]=this.plot_view.frame.bbox.clip(s.sx,s.sy);this._append_overlay(e,t),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(s))}_pan_end(s){const{sxs:e,sys:t}=this;this._clear_overlay(),this._do_select(e,t,!0,this._select_mode(s)),this.plot_view.state.push(\"lasso_select\",{selection:this.plot_view.get_selection()})}_append_overlay(s,e){const{sxs:t,sys:o}=this;t.push(s),o.push(e),this.model.overlay.update({xs:t,ys:o})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(s,e,t,o){const _={type:\"poly\",sx:s,sy:e};this._select(_,t,o)}}t.LassoSelectToolView=r,r.__name__=\"LassoSelectToolView\";class y extends i.SelectTool{constructor(s){super(s),this.tool_name=\"Lasso Select\",this.icon=h.tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}}t.LassoSelectTool=y,l=y,y.__name__=\"LassoSelectTool\",l.prototype.default_view=r,l.define((({Boolean:s,Ref:e})=>({select_every_mousemove:[s,!0],overlay:[e(a.PolyAnnotation),c.DEFAULT_POLY_OVERLAY]}))),l.register_alias(\"lasso_select\",(()=>new y))},\n", + " function _(e,t,s,l,o){var i;l();const a=e(378),_=e(217),c=e(43),n=e(9),h=e(228);class y extends a.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==c.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.state.push(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:(0,n.copy)(this.data.sx),ys:(0,n.copy)(this.data.sy)}))}_do_select(e,t,s,l){const o={type:\"poly\",sx:e,sy:t};this._select(o,s,l)}}s.PolySelectToolView=y,y.__name__=\"PolySelectToolView\";s.DEFAULT_POLY_OVERLAY=()=>new _.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class d extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=h.tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}}s.PolySelectTool=d,i=d,d.__name__=\"PolySelectTool\",i.prototype.default_view=y,i.define((({Ref:e})=>({overlay:[e(_.PolyAnnotation),s.DEFAULT_POLY_OVERLAY]}))),i.register_alias(\"poly_select\",(()=>new d))},\n", + " function _(e,t,s,i,r){var n;i();const _=e(20),d=e(383),o=e(228);class l extends d.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const s of t){1==this._select_event(e,\"replace\",[s]).length&&(this._selected_renderer=s)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[s,i]=[t.x.field,t.y.field],r=e.get_array(s),n=e.get_array(i);this._set_intersection(r,n)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const s=this._select_mode(e);if(0==this._select_event(e,s,[t]).length)return}const s=this._select_mode(e);this._select_event(e,s,[t]),this._select_event(e,s,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,i]=[e.x.field,e.y.field];if(s&&i){const e=t.data[s],r=t.data[i];this._selected_renderer.data_source.data[s]=e,this._selected_renderer.data_source.data[i]=r}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}s.LineEditToolView=l,l.__name__=\"LineEditToolView\";class h extends d.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=o.tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}s.LineEditTool=h,n=h,h.__name__=\"LineEditTool\",n.prototype.default_view=l,n.define((()=>({dimensions:[_.Dimensions,\"both\"]})))},\n", + " function _(e,i,n,t,s){var o;t();const r=e(8),_=e(370);class d extends _.EditToolView{_set_intersection(e,i){const n=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,o]=[n.x.field,n.y.field];s&&((0,r.isArray)(e)?t.data[s]=e:n.x={value:e}),o&&((0,r.isArray)(i)?t.data[o]=i:n.y={value:i}),this._emit_cds_changes(t,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}n.LineToolView=d,d.__name__=\"LineToolView\";class a extends _.EditTool{constructor(e){super(e)}}n.LineTool=a,o=a,a.__name__=\"LineTool\",o.define((({AnyRef:e})=>({intersection_renderer:[e()]})))},\n", + " function _(t,s,n,e,i){e();const o=t(1);var a;const _=t(223),l=t(20),r=(0,o.__importStar)(t(228));function h(t,s,n){const e=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,n);e.set(i,{start:t,end:a})}return e}n.update_ranges=h;class d extends _.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:n,sy:e}=t,i=this.plot_view.frame.bbox;if(!i.contains(n,e)){const t=i.h_range,s=i.v_range;(nt.end)&&(this.v_axis_only=!0),(es.end)&&(this.h_axis_only=!0)}null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.state.push(\"pan\",{range:this.pan_info}),this.plot_view.trigger_ranges_update_event()}_update(t,s){const n=this.plot_view.frame,e=t-this.last_dx,i=s-this.last_dy,o=n.bbox.h_range,a=o.start-e,_=o.end-e,l=n.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,v,x,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=_,m=-e),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(v=l.start,x=l.end,g=0):(v=r,x=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:y}=n,f=h(w,c,u),b=h(y,v,x);this.pan_info={xrs:f,yrs:b,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,{panning:!0})}}n.PanToolView=d,d.__name__=\"PanToolView\";class p extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}n.PanTool=p,a=p,p.__name__=\"PanTool\",a.prototype.default_view=d,a.define((()=>({dimensions:[l.Dimensions,\"both\",{on_update(t,s){switch(t){case\"both\":s.icon=r.tool_icon_pan;break;case\"width\":s.icon=r.tool_icon_xpan;break;case\"height\":s.icon=r.tool_icon_ypan}}}]}))),a.register_alias(\"pan\",(()=>new p({dimensions:\"both\"}))),a.register_alias(\"xpan\",(()=>new p({dimensions:\"width\"}))),a.register_alias(\"ypan\",(()=>new p({dimensions:\"height\"})))},\n", + " function _(e,t,i,s,n){var l;s();const a=e(116),r=e(58),o=e(19),_=e(223),h=e(228);function d(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function u(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function g(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function y(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function f(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,d(i))}function v(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=d,i.is_near=u,i.is_inside=c,i.sides_inside=g,i.compute_value=y,i.update_range_end_side=f,i.update_range_start_side=v,i.update_range=m;class p extends _.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,(()=>this.model.update_overlay_from_ranges())),null!=this.model.y_range&&this.connect(this.model.y_range.change,(()=>this.model.update_overlay_from_ranges()))}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,n=s.x_scale,l=s.y_scale,r=this.model.overlay,{left:o,right:_,top:h,bottom:d}=r,g=this.model.overlay.line_width+a.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(u(e.sx,o,n,g)?this.side=1:u(e.sx,_,n,g)?this.side=2:c(e.sx,e.sy,n,l,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&u(e.sy,d,l,g)&&(this.side=4),0==this.side&&u(e.sy,h,l,g)?this.side=5:c(e.sx,e.sy,n,l,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)m(n,a,i,t.x_range);else if(1==this.side){const e=y(n.start,a,i,t.x_range);this.side=v(e,n,this.side)}else if(2==this.side){const e=y(n.end,a,i,t.x_range);this.side=f(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)m(l,r,s,t.y_range);else if(4==this.side){const e=y(l.start,r,s,t.y_range);this.side=v(e,l,this.side)}else if(5==this.side){const e=y(l.end,r,s,t.y_range);this.side=f(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0,this.plot_view.trigger_ranges_update_event()}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const x=()=>new a.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class w extends _.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=h.tool_icon_range,this.event_type=\"pan\",this.default_order=1}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,o.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=w,l=w,w.__name__=\"RangeTool\",l.prototype.default_view=p,l.define((({Boolean:e,Ref:t,Nullable:i})=>({x_range:[i(t(r.Range1d)),null],x_interaction:[e,!0],y_range:[i(t(r.Range1d)),null],y_interaction:[e,!0],overlay:[t(a.BoxAnnotation),x]})))},\n", + " function _(e,t,s,o,i){var l;o();const a=e(378),n=e(20),c=e(228);class _ extends a.SelectToolView{_tap(e){\"tap\"==this.model.gesture&&this._handle_tap(e)}_doubletap(e){\"doubletap\"==this.model.gesture&&this._handle_tap(e)}_handle_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const{callback:o}=this.model;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,l]of i){const i=l[0].get_selection_manager(),a=l.map((e=>this.plot_view.renderer_view(e))).filter((e=>null!=e));if(i.select(a,e,t,s)&&null!=o){const t=a[0].coordinates.x_scale.invert(e.sx),s=a[0].coordinates.y_scale.invert(e.sy),l={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,l)}}this._emit_selection_event(e),this.plot_view.state.push(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_view(t);if(null==s)continue;const i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),l=s.coordinates.y_scale.invert(e.sy),a={geometries:Object.assign(Object.assign({},e),{x:t,y:l}),source:i.source};o.execute(this.model,a)}}}}s.TapToolView=_,_.__name__=\"TapToolView\";class r extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=c.tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}}s.TapTool=r,l=r,r.__name__=\"TapTool\",l.prototype.default_view=_,l.define((({Any:e,Enum:t,Nullable:s})=>({behavior:[n.TapBehavior,\"select\"],gesture:[t(\"tap\",\"doubletap\"),\"tap\"],callback:[s(e)]}))),l.register_alias(\"click\",(()=>new r({behavior:\"inspect\"}))),l.register_alias(\"tap\",(()=>new r)),l.register_alias(\"doubletap\",(()=>new r({gesture:\"doubletap\"})))},\n", + " function _(e,t,s,n,i){var a;n();const o=e(223),l=e(20),_=e(228),r=e(384);class h extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){var t;const{frame:s}=this.plot_view,n=s.bbox.h_range,i=s.bbox.v_range,[a,o]=[n.start,n.end],[l,_]=[i.start,i.end];let h,d,p,c;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-l);h=a,d=o,p=l-t*e,c=_-t*e;break}case\"width\":{const t=Math.abs(o-a);h=a-t*e,d=o-t*e,p=l,c=_;break}}const{x_scales:g,y_scales:u}=s,w={xrs:(0,r.update_ranges)(g,h,d),yrs:(0,r.update_ranges)(u,p,c),factor:e};this.plot_view.state.push(\"wheel_pan\",{range:w}),this.plot_view.update_range(w,{scrolling:!0}),null===(t=this.model.document)||void 0===t||t.interactive_start(this.plot_model,(()=>this.plot_view.trigger_ranges_update_event()))}}s.WheelPanToolView=h,h.__name__=\"WheelPanToolView\";class d extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=_.tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}get tooltip(){return this._get_dim_tooltip(this.dimension)}}s.WheelPanTool=d,a=d,d.__name__=\"WheelPanTool\",a.prototype.default_view=h,a.define((()=>({dimension:[l.Dimension,\"width\"]}))),a.internal((({Number:e})=>({speed:[e,.001]}))),a.register_alias(\"xwheel_pan\",(()=>new d({dimension:\"width\"}))),a.register_alias(\"ywheel_pan\",(()=>new d({dimension:\"height\"})))},\n", + " function _(e,o,t,s,i){var n;s();const l=e(223),_=e(368),h=e(20),a=e(27),r=e(228);class m extends l.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:n}=e;let l;l=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:l,ctrlKey:i,shiftKey:n})}_scroll(e){var o;const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,{sx:n,sy:l}=e,h=this.model.dimensions,a=(\"width\"==h||\"both\"==h)&&s.startthis.plot_view.trigger_ranges_update_event()))}}t.WheelZoomToolView=m,m.__name__=\"WheelZoomToolView\";class d extends l.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Zoom\",this.icon=r.tool_icon_wheel_zoom,this.event_type=a.is_mobile?\"pinch\":\"scroll\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}t.WheelZoomTool=d,n=d,d.__name__=\"WheelZoomTool\",n.prototype.default_view=m,n.define((({Boolean:e,Number:o})=>({dimensions:[h.Dimensions,\"both\"],maintain_focus:[e,!0],zoom_on_axis:[e,!0],speed:[o,1/600]}))),n.register_alias(\"wheel_zoom\",(()=>new d({dimensions:\"both\"}))),n.register_alias(\"xwheel_zoom\",(()=>new d({dimensions:\"width\"}))),n.register_alias(\"ywheel_zoom\",(()=>new d({dimensions:\"height\"})))},\n", + " function _(i,e,s,t,o){var n;t();const l=i(232),a=i(219),h=i(20),r=i(13),_=i(228);class c extends l.InspectToolView{_move(i){if(!this.model.active)return;const{sx:e,sy:s}=i;this.plot_view.frame.bbox.contains(e,s)?this._update_spans(e,s):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,e){const s=this.model.dimensions;\"width\"!=s&&\"both\"!=s||(this.model.spans.width.location=e),\"height\"!=s&&\"both\"!=s||(this.model.spans.height.location=i)}}s.CrosshairToolView=c,c.__name__=\"CrosshairToolView\";class p extends l.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=_.tool_icon_crosshair}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return(0,r.values)(this.spans)}}s.CrosshairTool=p,n=p,p.__name__=\"CrosshairTool\",(()=>{function i(i,e){return new a.Span({for_hover:!0,dimension:e,location_units:\"screen\",level:\"overlay\",line_color:i.line_color,line_width:i.line_width,line_alpha:i.line_alpha})}n.prototype.default_view=c,n.define((({Alpha:i,Number:e,Color:s})=>({dimensions:[h.Dimensions,\"both\"],line_color:[s,\"black\"],line_width:[e,1],line_alpha:[i,1]}))),n.internal((({Struct:e,Ref:s})=>({spans:[e({width:s(a.Span),height:s(a.Span)}),e=>({width:i(e,\"width\"),height:i(e,\"height\")})]}))),n.register_alias(\"crosshair\",(()=>new p))})()},\n", + " function _(e,s,t,r,n){var o;r();const a=e(53),u=e(13),c=e(34);class i extends a.Model{constructor(e){super(e)}get values(){return(0,u.values)(this.args)}_make_code(e,s,t,r){return new Function(...(0,u.keys)(this.args),e,s,t,(0,c.use_strict)(r))}format(e,s,t){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,s,t)}}t.CustomJSHover=i,o=i,i.__name__=\"CustomJSHover\",o.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n", + " function _(e,t,n,s,i){s();const o=e(1);var r;const l=e(232),a=e(390),c=e(241),_=e(175),d=e(339),p=e(176),h=e(177),u=e(283),m=e(186),y=e(187),f=e(189),x=(0,o.__importStar)(e(185)),v=e(152),w=e(43),g=e(22),b=e(13),k=e(234),C=e(8),S=e(113),T=e(20),$=e(228),R=e(15),A=e(66),M=(0,o.__importStar)(e(242)),V=e(392);function G(e,t,n,s,i,o){const r={x:i[e],y:o[e]},l={x:i[e+1],y:o[e+1]};let a,c;if(\"span\"==t.type)\"h\"==t.direction?(a=Math.abs(r.x-n),c=Math.abs(l.x-n)):(a=Math.abs(r.y-s),c=Math.abs(l.y-s));else{const e={x:n,y:s};a=x.dist_2_pts(r,e),c=x.dist_2_pts(l,e)}return adelete this._template_el)),this.on_change([e,t,n],(async()=>await this._update_ttmodels()))}async _update_ttmodels(){const{_ttmodels:e,computed_renderers:t}=this;e.clear();const{tooltips:n}=this.model;if(null!=n)for(const t of this.computed_renderers){const s=new c.Tooltip({custom:(0,C.isString)(n)||(0,C.isFunction)(n),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t instanceof _.GlyphRenderer?e.set(t,s):t instanceof d.GraphRenderer&&(e.set(t.node_renderer,s),e.set(t.edge_renderer,s))}const s=await(0,S.build_views)(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of s)e.render();const i=[...function*(){for(const e of t)e instanceof _.GlyphRenderer?yield e:e instanceof d.GraphRenderer&&(yield e.node_renderer,yield e.edge_renderer)}()],o=this._slots.get(this._update);if(null!=o){const e=new Set(i.map((e=>e.data_source)));R.Signal.disconnect_receiver(this,o,e)}for(const e of i)this.connect(e.data_source.inspect,this._update)}get computed_renderers(){const{renderers:e,names:t}=this.model,n=this.plot_model.data_renderers;return(0,A.compute_renderers)(e,n,t)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:n}=e;this.plot_view.frame.bbox.contains(t,n)?this._inspect(t,n):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let n;if(\"mouse\"==this.model.mode)n={type:\"point\",sx:e,sy:t};else{n={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){const t=e.get_selection_manager(),s=this.plot_view.renderer_view(e);null!=s&&t.inspect(s,n)}this._emit_callback(n)}_update([e,{geometry:t}]){var n,s;if(!this.model.active)return;if(\"point\"!=t.type&&\"span\"!=t.type)return;if(!(e instanceof _.GlyphRenderer))return;if(\"ignore\"==this.model.muted_policy&&e.muted)return;const i=this.ttmodels.get(e);if(null==i)return;const o=e.get_selection_manager(),r=o.inspectors.get(e),l=e.view.convert_selection_to_subset(r);if(r.is_empty()&&null==r.view)return void i.clear();const a=o.source,c=this.plot_view.renderer_view(e);if(null==c)return;const{sx:d,sy:p}=t,x=c.coordinates.x_scale,v=c.coordinates.y_scale,g=x.invert(d),k=v.invert(p),{glyph:C}=c,S=[];if(C instanceof m.PatchView){const[t,n]=[d,p],s={x:g,y:k,sx:d,sy:p,rx:t,ry:n,name:e.name};S.push([t,n,this._render_tooltips(a,-1,s)])}if(C instanceof y.HAreaView)for(const t of l.line_indices){const n=C._x1,s=C._x2,i=C._y,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x1:n,data_x2:s,data_y:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof f.VAreaView)for(const t of l.line_indices){const n=C._x,s=C._y1,i=C._y2,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x:n,data_y1:s,data_y2:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof h.LineView)for(const n of l.line_indices){let s,i,o=C._x[n+1],r=C._y[n+1],c=n;switch(this.model.line_policy){case\"interp\":[o,r]=C.get_interpolation_hit(n,t),s=x.compute(o),i=v.compute(r);break;case\"prev\":[[s,i],c]=H(C.sx,C.sy,n);break;case\"next\":[[s,i],c]=H(C.sx,C.sy,n+1);break;case\"nearest\":[[s,i],c]=G(n,t,d,p,C.sx,C.sy),o=C._x[c],r=C._y[c];break;default:[s,i]=[d,p]}const _={index:c,x:g,y:k,sx:d,sy:p,data_x:o,data_y:r,rx:s,ry:i,indices:l.line_indices,name:e.name};S.push([s,i,this._render_tooltips(a,c,_)])}for(const t of r.image_indices){const n={index:t.index,x:g,y:k,sx:d,sy:p,name:e.name},s=this._render_tooltips(a,t,n);S.push([d,p,s])}for(const i of l.indices)if(C instanceof u.MultiLineView&&!(0,b.isEmpty)(l.multiline_indices))for(const n of l.multiline_indices[i.toString()]){let s,o,r,c=C._xs.get(i)[n],h=C._ys.get(i)[n],u=n;switch(this.model.line_policy){case\"interp\":[c,h]=C.get_interpolation_hit(i,n,t),s=x.compute(c),o=v.compute(h);break;case\"prev\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n);break;case\"next\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n+1);break;case\"nearest\":[[s,o],u]=G(n,t,d,p,C.sxs.get(i),C.sys.get(i)),c=C._xs.get(i)[u],h=C._ys.get(i)[u];break;default:throw new Error(\"shouldn't have happened\")}r=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const m={index:r,x:g,y:k,sx:d,sy:p,data_x:c,data_y:h,segment_index:u,indices:l.multiline_indices,name:e.name};S.push([s,o,this._render_tooltips(a,r,m)])}else{const t=null===(n=C._x)||void 0===n?void 0:n[i],o=null===(s=C._y)||void 0===s?void 0:s[i];let r,c,h;if(\"snap_to_data\"==this.model.point_policy){let e=C.get_anchor_point(this.model.anchor,i,[d,p]);if(null==e&&(e=C.get_anchor_point(\"center\",i,[d,p]),null==e))continue;r=e.x,c=e.y}else[r,c]=[d,p];h=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const u={index:h,x:g,y:k,sx:d,sy:p,data_x:t,data_y:o,indices:l.indices,name:e.name};S.push([r,c,this._render_tooltips(a,h,u)])}if(0==S.length)i.clear();else{const{content:e}=i;(0,w.empty)(i.content);for(const[,,t]of S)null!=t&&e.appendChild(t);const[t,n]=S[S.length-1];i.setv({position:[t,n]},{check_eq:!1})}}_emit_callback(e){const{callback:t}=this.model;if(null!=t)for(const n of this.computed_renderers){if(!(n instanceof _.GlyphRenderer))continue;const s=this.plot_view.renderer_view(n);if(null==s)continue;const{x_scale:i,y_scale:o}=s.coordinates,r=i.invert(e.sx),l=o.invert(e.sy),a=n.data_source.inspected;t.execute(this.model,{geometry:Object.assign({x:r,y:l},e),renderer:n,index:a})}}_create_template(e){const t=(0,w.div)({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[n]of e){const e=(0,w.div)({style:{display:\"table-row\"}});t.appendChild(e);const s=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_label},0!=n.length?`${n}: `:\"\");e.appendChild(s);const i=(0,w.span)();i.dataset.value=\"\";const o=(0,w.span)({class:M.tooltip_color_block},\" \");o.dataset.swatch=\"\",(0,w.undisplay)(o);const r=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_value},i,o);e.appendChild(r)}return t}_render_template(e,t,n,s,i){const o=e.cloneNode(!0),r=o.querySelectorAll(\"[data-value]\"),l=o.querySelectorAll(\"[data-swatch]\"),a=/\\$color(\\[.*\\])?:(\\w*)/,c=/\\$swatch:(\\w*)/;for(const[[,e],o]of(0,k.enumerate)(t)){const t=e.match(c),_=e.match(a);if(null!=t||null!=_){if(null!=t){const[,e]=t,i=n.get_column(e);if(null==i)r[o].textContent=`${e} unknown`;else{const e=(0,C.isNumber)(s)?i[s]:null;null!=e&&(l[o].style.backgroundColor=(0,g.color2css)(e),(0,w.display)(l[o]))}}if(null!=_){const[,e=\"\",t]=_,i=n.get_column(t);if(null==i){r[o].textContent=`${t} unknown`;continue}const a=e.indexOf(\"hex\")>=0,c=e.indexOf(\"swatch\")>=0,d=(0,C.isNumber)(s)?i[s]:null;if(null==d){r[o].textContent=\"(null)\";continue}r[o].textContent=a?(0,g.color2hex)(d):(0,g.color2css)(d),c&&(l[o].style.backgroundColor=(0,g.color2css)(d),(0,w.display)(l[o]))}}else{const t=(0,v.replace_placeholders)(e.replace(\"$~\",\"$data_\"),n,s,this.model.formatters,i);if((0,C.isString)(t))r[o].textContent=t;else for(const e of t)r[o].appendChild(e)}}return o}_render_tooltips(e,t,n){var s;const{tooltips:i}=this.model;if((0,C.isString)(i)){const s=(0,v.replace_placeholders)({html:i},e,t,this.model.formatters,n);return(0,w.div)(s)}if((0,C.isFunction)(i))return i(e,n);if(i instanceof V.Template)return this._template_view.update(e,t,n),this._template_view.el;if(null!=i){const o=null!==(s=this._template_el)&&void 0!==s?s:this._template_el=this._create_template(i);return this._render_template(o,i,e,t,n)}return null}}n.HoverToolView=z,z.__name__=\"HoverToolView\";class P extends l.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=$.tool_icon_hover}}n.HoverTool=P,r=P,P.__name__=\"HoverTool\",r.prototype.default_view=z,r.define((({Any:e,Boolean:t,String:n,Array:s,Tuple:i,Dict:o,Or:r,Ref:l,Function:c,Auto:_,Nullable:d})=>({tooltips:[d(r(l(V.Template),n,s(i(n,n)),c())),[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[o(r(l(a.CustomJSHover),v.FormatterType)),{}],renderers:[r(s(l(p.DataRenderer)),_),\"auto\"],names:[s(n),[]],mode:[T.HoverMode,\"mouse\"],muted_policy:[T.MutedPolicy,\"show\"],point_policy:[T.PointPolicy,\"snap_to_data\"],line_policy:[T.LinePolicy,\"nearest\"],show_arrow:[t,!0],anchor:[T.Anchor,\"center\"],attachment:[T.TooltipAttachment,\"horizontal\"],callback:[d(e)]}))),r.register_alias(\"hover\",(()=>new P))},\n", + " function _(e,t,s,n,a){n();const l=e(1);var i,_,o,r,c,d,p,u,m,w,f,h,x;const v=e(53),y=e(309),V=e(393);a(\"Styles\",V.Styles);const g=e(43),T=e(42),b=e(226),R=e(113),D=e(8),M=e(13),S=(0,l.__importStar)(e(242)),O=e(152);class C extends b.DOMView{}s.DOMNodeView=C,C.__name__=\"DOMNodeView\";class z extends v.Model{constructor(e){super(e)}}s.DOMNode=z,z.__name__=\"DOMNode\",z.__module__=\"bokeh.models.dom\";class P extends C{render(){super.render(),this.el.textContent=this.model.content}_createElement(){return document.createTextNode(\"\")}}s.TextView=P,P.__name__=\"TextView\";class A extends z{constructor(e){super(e)}}s.Text=A,i=A,A.__name__=\"Text\",i.prototype.default_view=P,i.define((({String:e})=>({content:[e,\"\"]})));class N extends C{}s.PlaceholderView=N,N.__name__=\"PlaceholderView\",N.tag_name=\"span\";class E extends z{constructor(e){super(e)}}s.Placeholder=E,_=E,E.__name__=\"Placeholder\",_.define((({})=>({})));class G extends N{update(e,t,s){this.el.textContent=t.toString()}}s.IndexView=G,G.__name__=\"IndexView\";class I extends E{constructor(e){super(e)}}s.Index=I,o=I,I.__name__=\"Index\",o.prototype.default_view=G,o.define((({})=>({})));class k extends N{update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ValueRefView=k,k.__name__=\"ValueRefView\";class $ extends E{constructor(e){super(e)}}s.ValueRef=$,r=$,$.__name__=\"ValueRef\",r.prototype.default_view=k,r.define((({String:e})=>({field:[e]})));class B extends k{render(){super.render(),this.value_el=(0,g.span)(),this.swatch_el=(0,g.span)({class:S.tooltip_color_block},\" \"),this.el.appendChild(this.value_el),this.el.appendChild(this.swatch_el)}update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ColorRefView=B,B.__name__=\"ColorRefView\";class L extends ${constructor(e){super(e)}}s.ColorRef=L,c=L,L.__name__=\"ColorRef\",c.prototype.default_view=B,c.define((({Boolean:e})=>({hex:[e,!0],swatch:[e,!0]})));class j extends C{constructor(){super(...arguments),this.child_views=new Map}async lazy_initialize(){await super.lazy_initialize();const e=this.model.children.filter((e=>e instanceof v.Model));await(0,R.build_views)(this.child_views,e,{parent:this})}render(){super.render();const{style:e}=this.model;if(null!=e)if(e instanceof V.Styles)for(const t of e){const e=t.get_value();if((0,D.isString)(e)){const s=t.attr.replace(/_/g,\"-\");this.el.style.hasOwnProperty(s)&&this.el.style.setProperty(s,e)}}else for(const[t,s]of(0,M.entries)(e)){const e=t.replace(/_/g,\"-\");this.el.style.hasOwnProperty(e)&&this.el.style.setProperty(e,s)}for(const e of this.model.children)if((0,D.isString)(e)){const t=document.createTextNode(e);this.el.appendChild(t)}else{this.child_views.get(e).renderTo(this.el)}}}s.DOMElementView=j,j.__name__=\"DOMElementView\";class q extends z{constructor(e){super(e)}}s.DOMElement=q,d=q,q.__name__=\"DOMElement\",d.define((({String:e,Array:t,Dict:s,Or:n,Nullable:a,Ref:l})=>({style:[a(n(l(V.Styles),s(e))),null],children:[t(n(e,l(z),l(y.LayoutDOM))),[]]})));class F extends T.View{}s.ActionView=F,F.__name__=\"ActionView\";class H extends v.Model{constructor(e){super(e)}}s.Action=H,p=H,H.__name__=\"Action\",H.__module__=\"bokeh.models.dom\",p.define((({})=>({})));class J extends j{constructor(){super(...arguments),this.action_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await(0,R.build_views)(this.action_views,this.model.actions,{parent:this})}remove(){(0,R.remove_views)(this.action_views),super.remove()}update(e,t,s={}){!function n(a){for(const l of a.child_views.values())l instanceof N?l.update(e,t,s):l instanceof j&&n(l)}(this);for(const n of this.action_views.values())n.update(e,t,s)}}s.TemplateView=J,J.__name__=\"TemplateView\",J.tag_name=\"div\";class K extends q{}s.Template=K,u=K,K.__name__=\"Template\",u.prototype.default_view=J,u.define((({Array:e,Ref:t})=>({actions:[e(t(H)),[]]})));class Q extends j{}s.SpanView=Q,Q.__name__=\"SpanView\",Q.tag_name=\"span\";class U extends q{}s.Span=U,m=U,U.__name__=\"Span\",m.prototype.default_view=Q;class W extends j{}s.DivView=W,W.__name__=\"DivView\",W.tag_name=\"div\";class X extends q{}s.Div=X,w=X,X.__name__=\"Div\",w.prototype.default_view=W;class Y extends j{}s.TableView=Y,Y.__name__=\"TableView\",Y.tag_name=\"table\";class Z extends q{}s.Table=Z,f=Z,Z.__name__=\"Table\",f.prototype.default_view=Y;class ee extends j{}s.TableRowView=ee,ee.__name__=\"TableRowView\",ee.tag_name=\"tr\";class te extends q{}s.TableRow=te,h=te,te.__name__=\"TableRow\",h.prototype.default_view=ee;const se=e(41),ne=e(234);class ae extends F{update(e,t,s){for(const[e,s]of(0,ne.enumerate)(this.model.groups))e.visible=t==s}}s.ToggleGroupView=ae,ae.__name__=\"ToggleGroupView\";class le extends H{constructor(e){super(e)}}s.ToggleGroup=le,x=le,le.__name__=\"ToggleGroup\",x.prototype.default_view=ae,x.define((({Array:e,Ref:t})=>({groups:[e(t(se.RendererGroup)),[]]})))},\n", + " function _(l,n,u,_,e){var t;_();const o=l(53);class r extends o.Model{constructor(l){super(l)}}u.Styles=r,t=r,r.__name__=\"Styles\",r.__module__=\"bokeh.models.css\",t.define((({String:l,Nullable:n})=>({align_content:[n(l),null],align_items:[n(l),null],align_self:[n(l),null],alignment_baseline:[n(l),null],all:[n(l),null],animation:[n(l),null],animation_delay:[n(l),null],animation_direction:[n(l),null],animation_duration:[n(l),null],animation_fill_mode:[n(l),null],animation_iteration_count:[n(l),null],animation_name:[n(l),null],animation_play_state:[n(l),null],animation_timing_function:[n(l),null],backface_visibility:[n(l),null],background:[n(l),null],background_attachment:[n(l),null],background_clip:[n(l),null],background_color:[n(l),null],background_image:[n(l),null],background_origin:[n(l),null],background_position:[n(l),null],background_position_x:[n(l),null],background_position_y:[n(l),null],background_repeat:[n(l),null],background_size:[n(l),null],baseline_shift:[n(l),null],block_size:[n(l),null],border:[n(l),null],border_block_end:[n(l),null],border_block_end_color:[n(l),null],border_block_end_style:[n(l),null],border_block_end_width:[n(l),null],border_block_start:[n(l),null],border_block_start_color:[n(l),null],border_block_start_style:[n(l),null],border_block_start_width:[n(l),null],border_bottom:[n(l),null],border_bottom_color:[n(l),null],border_bottom_left_radius:[n(l),null],border_bottom_right_radius:[n(l),null],border_bottom_style:[n(l),null],border_bottom_width:[n(l),null],border_collapse:[n(l),null],border_color:[n(l),null],border_image:[n(l),null],border_image_outset:[n(l),null],border_image_repeat:[n(l),null],border_image_slice:[n(l),null],border_image_source:[n(l),null],border_image_width:[n(l),null],border_inline_end:[n(l),null],border_inline_end_color:[n(l),null],border_inline_end_style:[n(l),null],border_inline_end_width:[n(l),null],border_inline_start:[n(l),null],border_inline_start_color:[n(l),null],border_inline_start_style:[n(l),null],border_inline_start_width:[n(l),null],border_left:[n(l),null],border_left_color:[n(l),null],border_left_style:[n(l),null],border_left_width:[n(l),null],border_radius:[n(l),null],border_right:[n(l),null],border_right_color:[n(l),null],border_right_style:[n(l),null],border_right_width:[n(l),null],border_spacing:[n(l),null],border_style:[n(l),null],border_top:[n(l),null],border_top_color:[n(l),null],border_top_left_radius:[n(l),null],border_top_right_radius:[n(l),null],border_top_style:[n(l),null],border_top_width:[n(l),null],border_width:[n(l),null],bottom:[n(l),null],box_shadow:[n(l),null],box_sizing:[n(l),null],break_after:[n(l),null],break_before:[n(l),null],break_inside:[n(l),null],caption_side:[n(l),null],caret_color:[n(l),null],clear:[n(l),null],clip:[n(l),null],clip_path:[n(l),null],clip_rule:[n(l),null],color:[n(l),null],color_interpolation:[n(l),null],color_interpolation_filters:[n(l),null],column_count:[n(l),null],column_fill:[n(l),null],column_gap:[n(l),null],column_rule:[n(l),null],column_rule_color:[n(l),null],column_rule_style:[n(l),null],column_rule_width:[n(l),null],column_span:[n(l),null],column_width:[n(l),null],columns:[n(l),null],content:[n(l),null],counter_increment:[n(l),null],counter_reset:[n(l),null],css_float:[n(l),null],css_text:[n(l),null],cursor:[n(l),null],direction:[n(l),null],display:[n(l),null],dominant_baseline:[n(l),null],empty_cells:[n(l),null],fill:[n(l),null],fill_opacity:[n(l),null],fill_rule:[n(l),null],filter:[n(l),null],flex:[n(l),null],flex_basis:[n(l),null],flex_direction:[n(l),null],flex_flow:[n(l),null],flex_grow:[n(l),null],flex_shrink:[n(l),null],flex_wrap:[n(l),null],float:[n(l),null],flood_color:[n(l),null],flood_opacity:[n(l),null],font:[n(l),null],font_family:[n(l),null],font_feature_settings:[n(l),null],font_kerning:[n(l),null],font_size:[n(l),null],font_size_adjust:[n(l),null],font_stretch:[n(l),null],font_style:[n(l),null],font_synthesis:[n(l),null],font_variant:[n(l),null],font_variant_caps:[n(l),null],font_variant_east_asian:[n(l),null],font_variant_ligatures:[n(l),null],font_variant_numeric:[n(l),null],font_variant_position:[n(l),null],font_weight:[n(l),null],gap:[n(l),null],glyph_orientation_vertical:[n(l),null],grid:[n(l),null],grid_area:[n(l),null],grid_auto_columns:[n(l),null],grid_auto_flow:[n(l),null],grid_auto_rows:[n(l),null],grid_column:[n(l),null],grid_column_end:[n(l),null],grid_column_gap:[n(l),null],grid_column_start:[n(l),null],grid_gap:[n(l),null],grid_row:[n(l),null],grid_row_end:[n(l),null],grid_row_gap:[n(l),null],grid_row_start:[n(l),null],grid_template:[n(l),null],grid_template_areas:[n(l),null],grid_template_columns:[n(l),null],grid_template_rows:[n(l),null],height:[n(l),null],hyphens:[n(l),null],image_orientation:[n(l),null],image_rendering:[n(l),null],inline_size:[n(l),null],justify_content:[n(l),null],justify_items:[n(l),null],justify_self:[n(l),null],left:[n(l),null],letter_spacing:[n(l),null],lighting_color:[n(l),null],line_break:[n(l),null],line_height:[n(l),null],list_style:[n(l),null],list_style_image:[n(l),null],list_style_position:[n(l),null],list_style_type:[n(l),null],margin:[n(l),null],margin_block_end:[n(l),null],margin_block_start:[n(l),null],margin_bottom:[n(l),null],margin_inline_end:[n(l),null],margin_inline_start:[n(l),null],margin_left:[n(l),null],margin_right:[n(l),null],margin_top:[n(l),null],marker:[n(l),null],marker_end:[n(l),null],marker_mid:[n(l),null],marker_start:[n(l),null],mask:[n(l),null],mask_composite:[n(l),null],mask_image:[n(l),null],mask_position:[n(l),null],mask_repeat:[n(l),null],mask_size:[n(l),null],mask_type:[n(l),null],max_block_size:[n(l),null],max_height:[n(l),null],max_inline_size:[n(l),null],max_width:[n(l),null],min_block_size:[n(l),null],min_height:[n(l),null],min_inline_size:[n(l),null],min_width:[n(l),null],object_fit:[n(l),null],object_position:[n(l),null],opacity:[n(l),null],order:[n(l),null],orphans:[n(l),null],outline:[n(l),null],outline_color:[n(l),null],outline_offset:[n(l),null],outline_style:[n(l),null],outline_width:[n(l),null],overflow:[n(l),null],overflow_anchor:[n(l),null],overflow_wrap:[n(l),null],overflow_x:[n(l),null],overflow_y:[n(l),null],overscroll_behavior:[n(l),null],overscroll_behavior_block:[n(l),null],overscroll_behavior_inline:[n(l),null],overscroll_behavior_x:[n(l),null],overscroll_behavior_y:[n(l),null],padding:[n(l),null],padding_block_end:[n(l),null],padding_block_start:[n(l),null],padding_bottom:[n(l),null],padding_inline_end:[n(l),null],padding_inline_start:[n(l),null],padding_left:[n(l),null],padding_right:[n(l),null],padding_top:[n(l),null],page_break_after:[n(l),null],page_break_before:[n(l),null],page_break_inside:[n(l),null],paint_order:[n(l),null],perspective:[n(l),null],perspective_origin:[n(l),null],place_content:[n(l),null],place_items:[n(l),null],place_self:[n(l),null],pointer_events:[n(l),null],position:[n(l),null],quotes:[n(l),null],resize:[n(l),null],right:[n(l),null],rotate:[n(l),null],row_gap:[n(l),null],ruby_align:[n(l),null],ruby_position:[n(l),null],scale:[n(l),null],scroll_behavior:[n(l),null],shape_rendering:[n(l),null],stop_color:[n(l),null],stop_opacity:[n(l),null],stroke:[n(l),null],stroke_dasharray:[n(l),null],stroke_dashoffset:[n(l),null],stroke_linecap:[n(l),null],stroke_linejoin:[n(l),null],stroke_miterlimit:[n(l),null],stroke_opacity:[n(l),null],stroke_width:[n(l),null],tab_size:[n(l),null],table_layout:[n(l),null],text_align:[n(l),null],text_align_last:[n(l),null],text_anchor:[n(l),null],text_combine_upright:[n(l),null],text_decoration:[n(l),null],text_decoration_color:[n(l),null],text_decoration_line:[n(l),null],text_decoration_style:[n(l),null],text_emphasis:[n(l),null],text_emphasis_color:[n(l),null],text_emphasis_position:[n(l),null],text_emphasis_style:[n(l),null],text_indent:[n(l),null],text_justify:[n(l),null],text_orientation:[n(l),null],text_overflow:[n(l),null],text_rendering:[n(l),null],text_shadow:[n(l),null],text_transform:[n(l),null],text_underline_position:[n(l),null],top:[n(l),null],touch_action:[n(l),null],transform:[n(l),null],transform_box:[n(l),null],transform_origin:[n(l),null],transform_style:[n(l),null],transition:[n(l),null],transition_delay:[n(l),null],transition_duration:[n(l),null],transition_property:[n(l),null],transition_timing_function:[n(l),null],translate:[n(l),null],unicode_bidi:[n(l),null],user_select:[n(l),null],vertical_align:[n(l),null],visibility:[n(l),null],white_space:[n(l),null],widows:[n(l),null],width:[n(l),null],will_change:[n(l),null],word_break:[n(l),null],word_spacing:[n(l),null],word_wrap:[n(l),null],writing_mode:[n(l),null],z_index:[n(l),null]})))},\n", + " function _(t,o,e,n,s){var i;n();const l=t(15),c=t(53),r=t(224),a=t(232),u=t(234);class h extends c.Model{constructor(t){super(t)}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof a.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new l.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,(()=>this.doit())),this.connect(this.properties.active.change,(()=>this.set_active()));for(const t of this.tools)this.connect(t.properties.active.change,(()=>{this.active=t.active}))}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,n]of(0,u.enumerate)(t))if(null==e)o.push(null);else{const t=()=>{var t,o,e;for(const s of this.tools)null===(e=null===(o=null===(t=s.menu)||void 0===t?void 0:t[n])||void 0===o?void 0:o.handler)||void 0===e||e.call(o)};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=h,i=h,h.__name__=\"ToolProxy\",i.define((({Boolean:t,Array:o,Ref:e})=>({tools:[o(e(r.ButtonTool)),[]],active:[t,!1],disabled:[t,!1]})))},\n", + " function _(o,t,s,e,i){var n,r;e();const l=o(20),c=o(9),h=o(13),a=o(233),_=o(221),p=o(394),u=o(309),f=o(207);class y extends a.ToolbarBase{constructor(o){super(o)}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},e=[],i=[];for(const o of this.help)(0,c.includes)(i,o.redirect)||(e.push(o),i.push(o.redirect));this._proxied_tools.push(...e),this.help=e;for(const[o,t]of(0,h.entries)(this.gestures)){o in s||(s[o]={});for(const e of t.tools)e.type in s[o]||(s[o][e.type]=[]),s[o][e.type].push(e)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const n=(o,t=!1)=>{const s=new p.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of(0,h.keys)(s)){const t=this.gestures[o];t.tools=[];for(const e of(0,h.keys)(s[o])){const i=s[o][e];if(i.length>0)if(\"multi\"==o)for(const o of i){const s=n([o]);t.tools.push(s),this.connect(s.properties.active.change,(()=>this._active_change(s)))}else{const o=n(i);t.tools.push(o),this.connect(o.properties.active.change,(()=>this._active_change(o)))}}}this.actions=[];for(const[o,s]of(0,h.entries)(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(n([o]));else s.length>0&&this.actions.push(n(s));this.inspectors=[];for(const t of(0,h.values)(o))t.length>0&&this.inspectors.push(n(t,!0));for(const[o,t]of(0,h.entries)(this.gestures))0!=t.tools.length&&(t.tools=(0,c.sort_by)(t.tools,(o=>o.default_order)),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=y,n=y,y.__name__=\"ProxyToolbar\",n.define((({Array:o,Ref:t})=>({toolbars:[o(t(_.Toolbar)),[]]})));class d extends u.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new f.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}after_layout(){super.after_layout();const o=this.child_views[0];o.layout.bbox=this.layout.bbox,o.render()}}s.ToolbarBoxView=d,d.__name__=\"ToolbarBoxView\";class b extends u.LayoutDOM{constructor(o){super(o)}}s.ToolbarBox=b,r=b,b.__name__=\"ToolbarBox\",r.prototype.default_view=d,r.define((({Ref:o})=>({toolbar:[o(a.ToolbarBase)],toolbar_location:[l.Location,\"right\"]})))},\n", + " function _(e,n,r,t,o){t();const s=e(1),u=e(53),c=(0,s.__importStar)(e(21)),a=e(8),l=e(13);r.resolve_defs=function(e,n){var r,t,o,s;function i(e){return null!=e.module?`${e.module}.${e.name}`:e.name}function f(e){if((0,a.isString)(e))switch(e){case\"Any\":return c.Any;case\"Unknown\":return c.Unknown;case\"Boolean\":return c.Boolean;case\"Number\":return c.Number;case\"Int\":return c.Int;case\"String\":return c.String;case\"Null\":return c.Null}else switch(e[0]){case\"Nullable\":{const[,n]=e;return c.Nullable(f(n))}case\"Or\":{const[,...n]=e;return c.Or(...n.map(f))}case\"Tuple\":{const[,n,...r]=e;return c.Tuple(f(n),...r.map(f))}case\"Array\":{const[,n]=e;return c.Array(f(n))}case\"Struct\":{const[,...n]=e,r=n.map((([e,n])=>[e,f(n)]));return c.Struct((0,l.to_object)(r))}case\"Dict\":{const[,n]=e;return c.Dict(f(n))}case\"Map\":{const[,n,r]=e;return c.Map(f(n),f(r))}case\"Enum\":{const[,...n]=e;return c.Enum(...n)}case\"Ref\":{const[,r]=e,t=n.get(i(r));if(null!=t)return c.Ref(t);throw new Error(`${i(r)} wasn't defined before referencing it`)}case\"AnyRef\":return c.AnyRef()}}for(const c of e){const e=(()=>{if(null==c.extends)return u.Model;{const e=n.get(i(c.extends));if(null!=e)return e;throw new Error(`base model ${i(c.extends)} of ${i(c)} is not defined`)}})(),a=((s=class extends e{}).__name__=c.name,s.__module__=c.module,s);for(const e of null!==(r=c.properties)&&void 0!==r?r:[]){const n=f(null!==(t=e.kind)&&void 0!==t?t:\"Unknown\");a.define({[e.name]:[n,e.default]})}for(const e of null!==(o=c.overrides)&&void 0!==o?o:[])a.override({[e.name]:e.default});n.register(a)}}},\n", + " function _(n,e,t,o,i){o();const d=n(5),c=n(226),s=n(113),a=n(43),l=n(398);t.index={},t.add_document_standalone=async function(n,e,o=[],i=!1){const u=new Map;async function f(i){let d;const f=n.roots().indexOf(i),r=o[f];null!=r?d=r:e.classList.contains(l.BOKEH_ROOT)?d=e:(d=(0,a.div)({class:l.BOKEH_ROOT}),e.appendChild(d));const w=await(0,s.build_view)(i,{parent:null});return w instanceof c.DOMView&&w.renderTo(d),u.set(i,w),t.index[i.id]=w,w}for(const e of n.roots())await f(e);return i&&(window.document.title=n.title()),n.on_change((n=>{n instanceof d.RootAddedEvent?f(n.model):n instanceof d.RootRemovedEvent?function(n){const e=u.get(n);null!=e&&(e.remove(),u.delete(n),delete t.index[n.id])}(n.model):i&&n instanceof d.TitleChangedEvent&&(window.document.title=n.title)})),[...u.values()]}},\n", + " function _(o,e,n,t,r){t();const l=o(43),d=o(44);function u(o){let e=document.getElementById(o);if(null==e)throw new Error(`Error rendering Bokeh model: could not find #${o} HTML tag`);if(!document.body.contains(e))throw new Error(`Error rendering Bokeh model: element #${o} must be under `);if(\"SCRIPT\"==e.tagName){const o=(0,l.div)({class:n.BOKEH_ROOT});(0,l.replaceWith)(e,o),e=o}return e}n.BOKEH_ROOT=d.root,n._resolve_element=function(o){const{elementid:e}=o;return null!=e?u(e):document.body},n._resolve_root_elements=function(o){const e=[];if(null!=o.root_ids&&null!=o.roots)for(const n of o.root_ids)e.push(u(o.roots[n]));return e}},\n", + " function _(n,o,t,s,e){s();const c=n(400),r=n(19),a=n(397);t._get_ws_url=function(n,o){let t,s=\"ws:\";return\"https:\"==window.location.protocol&&(s=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),`${s}//${t.host}${n}/ws`};const i={};t.add_document_from_session=async function(n,o,t,s=[],e=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=(0,c.parse_token)(o).session_id;n in i||(i[n]={});const e=i[n];return s in e||(e[s]=(0,c.pull_session)(n,o,t)),e[s]}(n,o,l)}catch(n){const t=(0,c.parse_token)(o).session_id;throw r.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return(0,a.add_document_standalone)(d.document,t,s,e)}},\n", + " function _(e,s,n,t,o){t();const r=e(19),i=e(5),c=e(401),l=e(402),_=e(403);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let h=0;function a(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=a;class d{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,t=null){this.url=e,this.token=s,this.args_string=t,this._number=h++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new l.Receiver,this.id=a(s).session_id.split(\".\")[0],r.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=`${this.url}`;return null!=this.args_string&&this.args_string.length>0&&(e+=`?${this.args_string}`),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise(((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)}))}catch(e){throw r.logger.error(`websocket creation failed to url: ${this.url}`),r.logger.error(` - ${e}`),e}}close(){this.closed_permanently||(r.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(e){setTimeout((()=>{this.closed_permanently||r.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)}),e)}send(e){if(null==this.socket)throw new Error(`not connected so cannot send ${e}`);e.send(this.socket)}async send_with_reply(e){const s=await new Promise(((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)}));if(\"ERROR\"===s.msgtype())throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const e=c.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;r.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)r.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=i.Document.from_json(n),t=i.Document._compute_patch_since_json(n,s);if(t.events.length>0){r.logger.debug(`Sending ${t.events.length} changes from model construction back to server`);const e=c.Message.create(\"PATCH-DOC\",{},t);this.send(e)}this.session=new _.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],r.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),r.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),r.logger.error(`Failed to repull session ${e}`),s(e instanceof Error?e:`${e}`)}}_on_open(e,s){r.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&r.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(`${e}`)}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){r.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach((e=>e.reject(\"Disconnected\"))),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){r.logger.debug(`Websocket error on socket ${this._number}`);const s=\"Could not open websocket\";r.logger.error(`Failed to connect to Bokeh server: ${s}`),e(new Error(s))}_close_bad_protocol(e){r.logger.error(`Closing connection: ${e}`),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=d,d.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new d(e,s,n).connect()}},\n", + " function _(e,s,t,r,n){r();const i=e(34);class a{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),n=JSON.parse(s),i=JSON.parse(t);return new a(r,n,i)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(`too many buffers received, expecting ${t}`);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=a.create_header(e);return new a(r,s,t)}static create_header(e){return{msgid:(0,i.uniqueId)(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=a,a.__name__=\"Message\"},\n", + " function _(e,t,s,_,r){_();const i=e(401),h=e(8);class a{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,_]=this._fragments.slice(0,3);this._partial=i.Message.assemble(t,s,_),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!(0,h.isString)(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=a,a.__name__=\"Receiver\"},\n", + " function _(e,t,n,s,o){s();const c=e(5),i=e(401),_=e(19);class r{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):_.logger.debug(`Doing nothing with message ${e.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=i.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof c.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),s=i.Message.create(\"PATCH-DOC\",{},n);this._connection.send(s)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){_.logger.trace(`Unhandled OK reply to ${e.reqid()}`)}_handle_error(e){_.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=r,r.__name__=\"ClientSession\"},\n", + " function _(e,o,t,n,r){n();const s=e(1),l=e(5),i=e(402),a=e(19),c=e(43),g=e(13),f=e(397),u=e(398),m=(0,s.__importDefault)(e(44)),p=(0,s.__importDefault)(e(240)),d=(0,s.__importDefault)(e(405));function _(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function b(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){a.logger.info(`Registering Jupyter comms for target ${e}`);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,(t=>{a.logger.info(`Registering Jupyter comms for target ${e}`);const n=new i.Receiver;t.on_msg(_.bind(o,n))}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,(t=>{a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=new i.Receiver;t.onMsg=_.bind(o,n)}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){a.logger.info(`Registering Google Colab comms for target ${e}`);const t=google.colab.kernel.comms;try{t.registerTarget(e,(async t=>{var n,r,l;a.logger.info(`Registering Google Colab comms for target ${e}`);const c=new i.Receiver;try{for(var g,f=(0,s.__asyncValues)(t.messages);!(g=await f.next()).done;){const e=g.value,t={data:e.data},n=[];for(const o of null!==(l=e.buffers)&&void 0!==l?l:[])n.push(new DataView(o));const r={content:t,buffers:n};_.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{g&&!g.done&&(r=f.return)&&await r.call(f)}finally{if(n)throw n.error}}}))}catch(e){a.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}c.stylesheet.append(m.default),c.stylesheet.append(p.default),c.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=(0,g.size)(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=l.Document.from_json((0,g.values)(e)[0]);for(const e of o){null!=e.notebook_comms_target&&b(e.notebook_comms_target,t);const o=(0,u._resolve_element)(e),n=(0,u._resolve_root_elements)(e);(0,f.add_document_standalone)(t,o,n)}}},\n", + " function _(t,o,r,e,d){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.default=\".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}\"},\n", + " function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(401),o),(0,a.__exportStar)(t(402),o)},\n", + " function _(e,t,n,s,o){function l(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}s(),n.results={},n.init=function(){l()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,l()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,l()}},\n", + " function _(e,t,o,n,l){n(),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",(()=>s.removeChild(t)));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\",l.appendChild(document.createTextNode(e)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const s=document.getElementsByTagName(\"body\")[0];s.insertBefore(t,s.firstChild)}(e instanceof Error&&e.stack?e.stack:`${e}`),t)return;throw e}}},\n", + " ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/defer\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/bitset\":25,\"core/util/eq\":26,\"core/util/platform\":27,\"core/settings\":28,\"core/util/ndarray\":29,\"core/serializer\":30,\"core/util/serialization\":31,\"core/util/buffer\":32,\"core/uniforms\":33,\"core/util/string\":34,\"document/events\":35,\"core/util/pretty\":36,\"core/util/cloneable\":37,\"models/index\":38,\"models/annotations/index\":39,\"models/annotations/annotation\":40,\"models/renderers/renderer\":41,\"core/view\":42,\"core/dom\":43,\"styles/root.css\":44,\"core/visuals/index\":45,\"core/visuals/line\":46,\"core/visuals/visual\":47,\"core/property_mixins\":48,\"core/visuals/fill\":49,\"core/visuals/text\":50,\"core/visuals/hatch\":51,\"core/visuals/patterns\":52,\"model\":53,\"models/canvas/coordinates\":54,\"models/scales/scale\":55,\"models/transforms/transform\":56,\"models/ranges/range\":57,\"models/ranges/range1d\":58,\"models/scales/linear_scale\":59,\"models/scales/continuous_scale\":60,\"models/scales/log_scale\":61,\"models/scales/categorical_scale\":62,\"models/ranges/data_range1d\":63,\"models/ranges/data_range\":64,\"core/util/bbox\":65,\"models/util\":66,\"models/ranges/factor_range\":67,\"models/annotations/arrow\":68,\"models/annotations/data_annotation\":69,\"models/sources/columnar_data_source\":70,\"models/sources/data_source\":71,\"models/selections/selection\":72,\"core/selection_manager\":73,\"models/selections/interaction_policy\":74,\"models/sources/column_data_source\":75,\"core/util/typed_array\":76,\"core/util/set\":77,\"core/util/projections\":78,\"models/annotations/arrow_head\":112,\"core/build_views\":113,\"models/annotations/band\":114,\"models/annotations/upper_lower\":115,\"models/annotations/box_annotation\":116,\"models/annotations/color_bar\":117,\"models/annotations/title\":118,\"models/annotations/text_annotation\":119,\"core/graphics\":120,\"core/util/text\":121,\"core/util/affine\":122,\"core/layout/side_panel\":123,\"core/layout/types\":124,\"core/layout/layoutable\":125,\"models/canvas/cartesian_frame\":126,\"models/axes/index\":127,\"models/axes/axis\":128,\"models/renderers/guide_renderer\":129,\"models/tickers/ticker\":130,\"models/formatters/tick_formatter\":131,\"models/policies/labeling\":132,\"models/text/base_text\":133,\"models/text/utils\":134,\"models/text/math_text\":135,\"core/util/image\":136,\"models/text/providers\":137,\"core/util/modules\":138,\"models/text/plain_text\":139,\"models/axes/categorical_axis\":140,\"models/tickers/categorical_ticker\":141,\"models/formatters/categorical_tick_formatter\":142,\"models/axes/continuous_axis\":143,\"models/axes/datetime_axis\":144,\"models/axes/linear_axis\":145,\"models/formatters/basic_tick_formatter\":146,\"models/tickers/basic_ticker\":147,\"models/tickers/adaptive_ticker\":148,\"models/tickers/continuous_ticker\":149,\"models/formatters/datetime_tick_formatter\":150,\"core/util/templating\":152,\"models/tickers/datetime_ticker\":155,\"models/tickers/composite_ticker\":156,\"models/tickers/days_ticker\":157,\"models/tickers/single_interval_ticker\":158,\"models/tickers/util\":159,\"models/tickers/months_ticker\":160,\"models/tickers/years_ticker\":161,\"models/axes/log_axis\":162,\"models/formatters/log_tick_formatter\":163,\"models/tickers/log_ticker\":164,\"models/axes/mercator_axis\":165,\"models/formatters/mercator_tick_formatter\":166,\"models/tickers/mercator_ticker\":167,\"models/tickers/index\":168,\"models/tickers/fixed_ticker\":169,\"models/tickers/binned_ticker\":170,\"models/mappers/scanning_color_mapper\":171,\"models/mappers/continuous_color_mapper\":172,\"models/mappers/color_mapper\":173,\"models/mappers/mapper\":174,\"models/renderers/glyph_renderer\":175,\"models/renderers/data_renderer\":176,\"models/glyphs/line\":177,\"models/glyphs/xy_glyph\":178,\"models/glyphs/glyph\":179,\"core/util/ragged_array\":180,\"core/util/spatial\":181,\"models/glyphs/utils\":184,\"core/hittest\":185,\"models/glyphs/patch\":186,\"models/glyphs/harea\":187,\"models/glyphs/area\":188,\"models/glyphs/varea\":189,\"models/sources/cds_view\":190,\"models/filters/filter\":191,\"models/formatters/index\":192,\"models/formatters/func_tick_formatter\":193,\"models/formatters/numeral_tick_formatter\":194,\"models/formatters/printf_tick_formatter\":195,\"models/mappers/index\":196,\"models/mappers/categorical_color_mapper\":197,\"models/mappers/categorical_mapper\":198,\"models/mappers/categorical_marker_mapper\":199,\"models/mappers/categorical_pattern_mapper\":200,\"models/mappers/linear_color_mapper\":201,\"models/mappers/log_color_mapper\":202,\"models/mappers/eqhist_color_mapper\":203,\"models/scales/index\":204,\"models/scales/linear_interpolation_scale\":205,\"models/ranges/index\":206,\"core/layout/index\":207,\"core/layout/alignments\":208,\"core/layout/grid\":209,\"core/layout/html\":210,\"core/layout/border\":211,\"models/annotations/label\":212,\"models/annotations/label_set\":213,\"models/annotations/legend\":214,\"models/annotations/legend_item\":215,\"core/vectorization\":216,\"models/annotations/poly_annotation\":217,\"models/annotations/slope\":218,\"models/annotations/span\":219,\"models/annotations/toolbar_panel\":220,\"models/tools/toolbar\":221,\"models/tools/tool\":222,\"models/tools/gestures/gesture_tool\":223,\"models/tools/button_tool\":224,\"core/dom_view\":226,\"styles/toolbar.css\":227,\"styles/icons.css\":228,\"styles/menus.css\":229,\"core/util/menus\":230,\"models/tools/on_off_button\":231,\"models/tools/inspectors/inspect_tool\":232,\"models/tools/toolbar_base\":233,\"core/util/iterator\":234,\"core/util/canvas\":235,\"core/util/svg\":236,\"core/util/random\":237,\"models/tools/actions/action_tool\":238,\"models/tools/actions/help_tool\":239,\"styles/logo.css\":240,\"models/annotations/tooltip\":241,\"styles/tooltips.css\":242,\"models/annotations/whisker\":243,\"models/callbacks/index\":244,\"models/callbacks/customjs\":245,\"models/callbacks/callback\":246,\"models/callbacks/open_url\":247,\"models/canvas/index\":248,\"models/canvas/canvas\":249,\"core/ui_events\":250,\"core/bokeh_events\":251,\"core/util/wheel\":252,\"models/expressions/index\":253,\"models/expressions/expression\":254,\"models/expressions/customjs_expr\":255,\"models/expressions/stack\":256,\"models/expressions/cumsum\":257,\"models/expressions/minimum\":258,\"models/expressions/maximum\":259,\"models/expressions/coordinate_transform\":260,\"models/expressions/polar\":261,\"models/filters/index\":262,\"models/filters/boolean_filter\":263,\"models/filters/customjs_filter\":264,\"models/filters/group_filter\":265,\"models/filters/index_filter\":266,\"models/glyphs/index\":267,\"models/glyphs/annular_wedge\":268,\"models/glyphs/annulus\":269,\"models/glyphs/arc\":270,\"models/glyphs/bezier\":271,\"models/glyphs/circle\":272,\"models/glyphs/ellipse\":273,\"models/glyphs/ellipse_oval\":274,\"models/glyphs/center_rotatable\":275,\"models/glyphs/hbar\":276,\"models/glyphs/box\":277,\"models/glyphs/hex_tile\":278,\"models/glyphs/image\":279,\"models/glyphs/image_base\":280,\"models/glyphs/image_rgba\":281,\"models/glyphs/image_url\":282,\"models/glyphs/multi_line\":283,\"models/glyphs/multi_polygons\":284,\"models/glyphs/oval\":285,\"models/glyphs/patches\":286,\"models/glyphs/quad\":287,\"models/glyphs/quadratic\":288,\"models/glyphs/ray\":289,\"models/glyphs/rect\":290,\"models/glyphs/scatter\":291,\"models/glyphs/marker\":292,\"models/glyphs/defs\":293,\"models/glyphs/segment\":294,\"models/glyphs/spline\":295,\"core/util/interpolation\":296,\"models/glyphs/step\":297,\"models/glyphs/text\":298,\"models/glyphs/vbar\":299,\"models/glyphs/wedge\":300,\"models/graphs/index\":301,\"models/graphs/graph_hit_test_policy\":302,\"models/graphs/layout_provider\":303,\"models/graphs/static_layout_provider\":304,\"models/grids/index\":305,\"models/grids/grid\":306,\"models/layouts/index\":307,\"models/layouts/box\":308,\"models/layouts/layout_dom\":309,\"models/layouts/column\":310,\"models/layouts/grid_box\":311,\"models/layouts/html_box\":312,\"models/layouts/panel\":313,\"models/layouts/row\":314,\"models/layouts/spacer\":315,\"models/layouts/tabs\":316,\"styles/tabs.css\":317,\"styles/buttons.css\":318,\"models/layouts/widget_box\":319,\"models/text/index\":320,\"models/transforms/index\":321,\"models/transforms/customjs_transform\":322,\"models/transforms/dodge\":323,\"models/transforms/range_transform\":324,\"models/transforms/interpolator\":325,\"models/transforms/jitter\":326,\"models/transforms/linear_interpolator\":327,\"models/transforms/step_interpolator\":328,\"models/plots/index\":329,\"models/plots/gmap_plot\":330,\"models/plots/plot\":331,\"models/plots/plot_canvas\":332,\"core/util/throttle\":333,\"models/plots/range_manager\":334,\"models/plots/state_manager\":335,\"models/plots/gmap_plot_canvas\":336,\"models/policies/index\":337,\"models/renderers/index\":338,\"models/renderers/graph_renderer\":339,\"models/selections/index\":340,\"models/sources/index\":341,\"models/sources/server_sent_data_source\":342,\"models/sources/web_data_source\":343,\"models/sources/ajax_data_source\":344,\"models/sources/geojson_data_source\":345,\"models/tiles/index\":346,\"models/tiles/bbox_tile_source\":347,\"models/tiles/mercator_tile_source\":348,\"models/tiles/tile_source\":349,\"models/tiles/tile_utils\":350,\"models/tiles/quadkey_tile_source\":351,\"models/tiles/tile_renderer\":352,\"models/tiles/wmts_tile_source\":353,\"styles/tiles.css\":354,\"models/tiles/tms_tile_source\":355,\"models/textures/index\":356,\"models/textures/canvas_texture\":357,\"models/textures/texture\":358,\"models/textures/image_url_texture\":359,\"models/tools/index\":360,\"models/tools/actions/custom_action\":361,\"models/tools/actions/redo_tool\":362,\"models/tools/actions/reset_tool\":363,\"models/tools/actions/save_tool\":364,\"models/tools/actions/undo_tool\":365,\"models/tools/actions/zoom_in_tool\":366,\"models/tools/actions/zoom_base_tool\":367,\"core/util/zoom\":368,\"models/tools/actions/zoom_out_tool\":369,\"models/tools/edit/edit_tool\":370,\"models/tools/edit/box_edit_tool\":371,\"models/tools/edit/freehand_draw_tool\":372,\"models/tools/edit/point_draw_tool\":373,\"models/tools/edit/poly_draw_tool\":374,\"models/tools/edit/poly_tool\":375,\"models/tools/edit/poly_edit_tool\":376,\"models/tools/gestures/box_select_tool\":377,\"models/tools/gestures/select_tool\":378,\"models/tools/gestures/box_zoom_tool\":379,\"models/tools/gestures/lasso_select_tool\":380,\"models/tools/gestures/poly_select_tool\":381,\"models/tools/edit/line_edit_tool\":382,\"models/tools/edit/line_tool\":383,\"models/tools/gestures/pan_tool\":384,\"models/tools/gestures/range_tool\":385,\"models/tools/gestures/tap_tool\":386,\"models/tools/gestures/wheel_pan_tool\":387,\"models/tools/gestures/wheel_zoom_tool\":388,\"models/tools/inspectors/crosshair_tool\":389,\"models/tools/inspectors/customjs_hover\":390,\"models/tools/inspectors/hover_tool\":391,\"models/dom/index\":392,\"models/dom/styles\":393,\"models/tools/tool_proxy\":394,\"models/tools/toolbar_box\":395,\"document/defs\":396,\"embed/standalone\":397,\"embed/dom\":398,\"embed/server\":399,\"client/connection\":400,\"protocol/message\":401,\"protocol/receiver\":402,\"client/session\":403,\"embed/notebook\":404,\"styles/notebook.css\":405,\"protocol/index\":406,\"testing\":407,\"safely\":408}, {});});\n", + "\n", + " /* END bokeh.min.js */\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-gl.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.4.3\");\n", + " })(this, function(Bokeh, version) {\n", + " let define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 409: function _(n,c,f,i,o){i(),n(410)},\n", + " 410: function _(t,_,r,e,o){e();const a=t(1);o(\"get_regl\",t(411).get_regl),(0,a.__exportStar)(t(419),r),(0,a.__exportStar)(t(423),r),(0,a.__exportStar)(t(425),r),(0,a.__exportStar)(t(426),r),(0,a.__exportStar)(t(427),r),(0,a.__exportStar)(t(428),r),(0,a.__exportStar)(t(429),r),(0,a.__exportStar)(t(424),r)},\n", + " 411: function _(t,i,e,_,a){_();const r=t(1),o=(0,r.__importDefault)(t(412)),n=t(413),s=(0,r.__importDefault)(t(415)),l=(0,r.__importDefault)(t(416)),p=(0,r.__importDefault)(t(417)),h=(0,r.__importDefault)(t(418));let c;e.get_regl=function(t){return null==c&&(c=new u(t)),c};class u{constructor(t){try{this._regl=(0,o.default)({gl:t,extensions:[\"ANGLE_instanced_arrays\",\"EXT_blend_minmax\"]}),this._regl_available=!0,this._line_geometry=this._regl.buffer({usage:\"static\",type:\"float\",data:[[-2,0],[-1,-1],[1,-1],[2,0],[1,1],[-1,1]]}),this._line_triangles=this._regl.elements({usage:\"static\",primitive:\"triangles\",data:[[0,1,5],[1,2,5],[5,2,4],[2,3,4]]})}catch(t){this._regl_available=!1}}buffer(t){return this._regl.buffer(t)}clear(t,i){this._viewport={x:0,y:0,width:t,height:i},this._regl.clear({color:[0,0,0,0]})}get has_webgl(){return this._regl_available}get scissor(){return this._scissor}set_scissor(t,i,e,_){this._scissor={x:t,y:i,width:e,height:_}}get viewport(){return this._viewport}dashed_line(){return null==this._dashed_line&&(this._dashed_line=function(t,i,e){const _={vert:`#define DASHED\\n\\n${s.default}`,frag:`#define DASHED\\n\\n${l.default}`,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT),a_length_so_far:(t,i)=>i.length_so_far.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\"),u_dash_tex:t.prop(\"dash_tex\"),u_dash_tex_info:t.prop(\"dash_tex_info\"),u_dash_scale:t.prop(\"dash_scale\"),u_dash_offset:t.prop(\"dash_offset\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._dashed_line}get_dash(t){return null==this._dash_cache&&(this._dash_cache=new n.DashCache(this._regl)),this._dash_cache.get(t)}marker_no_hatch(t){null==this._marker_no_hatch_map&&(this._marker_no_hatch_map=new Map);let i=this._marker_no_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:p.default,frag:`#define USE_${i.toUpperCase()}\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_no_hatch_map.set(t,i)),i}marker_hatch(t){null==this._marker_hatch_map&&(this._marker_hatch_map=new Map);let i=this._marker_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:`#define HATCH\\n${p.default}`,frag:`#define USE_${i.toUpperCase()}\\n#define HATCH\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config(),a_hatch_pattern:(t,i)=>i.hatch_pattern.to_attribute_config(),a_hatch_scale:(t,i)=>i.hatch_scale.to_attribute_config(),a_hatch_weight:(t,i)=>i.hatch_weight.to_attribute_config(),a_hatch_color:(t,i)=>i.hatch_color.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_hatch_map.set(t,i)),i}solid_line(){return null==this._solid_line&&(this._solid_line=function(t,i,e){const _={vert:s.default,frag:l.default,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT)},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._solid_line}}e.ReglWrapper=u,u.__name__=\"ReglWrapper\"},\n", + " 412: function _(e,t,r,n,a){var i,o;i=this,o=function(){\"use strict\";var e=function(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof Uint8ClampedArray},t=function(e,t){for(var r=Object.keys(t),n=0;n=0&&(0|e)===e||n(\"invalid parameter type, (\"+e+\")\"+i(t)+\". must be a nonnegative integer\")},oneOf:f,shaderError:function(e,t,n,i,o){if(!e.getShaderParameter(t,e.COMPILE_STATUS)){var f=e.getShaderInfoLog(t),u=i===e.FRAGMENT_SHADER?\"fragment\":\"vertex\";g(n,\"string\",u+\" shader source must be a string\",o);var c=h(n,o),l=function(e){var t=[];return e.split(\"\\n\").forEach((function(e){if(!(e.length<5)){var r=/^ERROR:\\s+(\\d+):(\\d+):\\s*(.*)$/.exec(e);r?t.push(new d(0|r[1],0|r[2],r[3].trim())):e.length>0&&t.push(new d(\"unknown\",0,e))}})),t}(f);!function(e,t){t.forEach((function(t){var r=e[t.file];if(r){var n=r.index[t.line];if(n)return n.errors.push(t),void(r.hasErrors=!0)}e.unknown.hasErrors=!0,e.unknown.lines[0].errors.push(t)}))}(c,l),Object.keys(c).forEach((function(e){var t=c[e];if(t.hasErrors){var n=[\"\"],a=[\"\"];i(\"file number \"+e+\": \"+t.name+\"\\n\",\"color:red;text-decoration:underline;font-weight:bold\"),t.lines.forEach((function(e){if(e.errors.length>0){i(s(e.number,4)+\"| \",\"background-color:yellow; font-weight:bold\"),i(e.line+r,\"color:red; background-color:yellow; font-weight:bold\");var t=0;e.errors.forEach((function(n){var a=n.message,o=/^\\s*'(.*)'\\s*:\\s*(.*)$/.exec(a);if(o){var f=o[1];a=o[2],\"assign\"===f&&(f=\"=\"),t=Math.max(e.line.indexOf(f,t),0)}else t=0;i(s(\"| \",6)),i(s(\"^^^\",t+3)+r,\"font-weight:bold\"),i(s(\"| \",6)),i(a+r,\"font-weight:bold\")})),i(s(\"| \",6)+r)}else i(s(e.number,4)+\"| \"),i(e.line+r,\"color:red\")})),\"undefined\"==typeof document||window.chrome?console.log(n.join(\"\")):(a[0]=n.join(\"%c\"),console.log.apply(console,a))}function i(e,t){n.push(e),a.push(t||\"\")}})),a.raise(\"Error compiling \"+u+\" shader, \"+c[0].name)}},linkError:function(e,t,n,i,o){if(!e.getProgramParameter(t,e.LINK_STATUS)){var f=e.getProgramInfoLog(t),u=h(n,o),s='Error linking program with vertex shader, \"'+h(i,o)[0].name+'\", and fragment shader \"'+u[0].name+'\"';\"undefined\"!=typeof document?console.log(\"%c\"+s+\"\\n%c\"+f,\"color:red;text-decoration:underline;font-weight:bold\",\"color:red\"):console.log(s+r+f),a.raise(s)}},callSite:p,saveCommandRef:b,saveDrawInfo:function(e,t,r,n){function a(e){return e?n.id(e):0}function i(e,t){Object.keys(t).forEach((function(t){e[n.id(t)]=!0}))}b(e),e._fragId=a(e.static.frag),e._vertId=a(e.static.vert);var o=e._uniformSet={};i(o,t.static),i(o,t.dynamic);var f=e._attributeSet={};i(f,r.static),i(f,r.dynamic),e._hasCount=\"count\"in e.static||\"count\"in e.dynamic||\"elements\"in e.static||\"elements\"in e.dynamic},framebufferFormat:function(e,t,r){e.texture?f(e.texture._texture.internalformat,t,\"unsupported texture format for attachment\"):f(e.renderbuffer._renderbuffer.format,r,\"unsupported renderbuffer format for attachment\")},guessCommand:m,texture2D:function(e,t,r){var n,i=t.width,o=t.height,f=t.channels;a(i>0&&i<=r.maxTextureSize&&o>0&&o<=r.maxTextureSize,\"invalid texture shape\"),e.wrapS===y&&e.wrapT===y||a(A(i)&&A(o),\"incompatible wrap mode for texture, both width and height must be power of 2\"),1===t.mipmask?1!==i&&1!==o&&a(9984!==e.minFilter&&9986!==e.minFilter&&9985!==e.minFilter&&9987!==e.minFilter,\"min filter requires mipmap\"):(a(A(i)&&A(o),\"texture must be a square power of 2 to support mipmapping\"),a(t.mipmask===(i<<1)-1,\"missing or incomplete mipmap data\")),5126===t.type&&(r.extensions.indexOf(\"oes_texture_float_linear\")<0&&a(9728===e.minFilter&&9728===e.magFilter,\"filter not supported, must enable oes_texture_float_linear\"),a(!e.genMipmaps,\"mipmap generation not supported with float textures\"));var u=t.images;for(n=0;n<16;++n)if(u[n]){var s=i>>n,c=o>>n;a(t.mipmask&1<0&&i<=n.maxTextureSize&&o>0&&o<=n.maxTextureSize,\"invalid texture shape\"),a(i===o,\"cube map must be square\"),a(t.wrapS===y&&t.wrapT===y,\"wrap mode not supported by cube map\");for(var u=0;u>l,p=o>>l;a(s.mipmask&1<1&&t===r&&('\"'===t||\"'\"===t))return['\"'+O(e.substr(1,e.length-2))+'\"'];var n=/\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(e);if(n)return E(e.substr(0,n.index)).concat(E(n[1])).concat(E(e.substr(n.index+n[0].length)));var a=e.split(\".\");if(1===a.length)return['\"'+O(e)+'\"'];for(var i=[],o=0;o0,\"invalid pixel ratio\"))):_.raise(\"invalid arguments to regl\"),r&&(\"canvas\"===r.nodeName.toLowerCase()?a=r:n=r),!i){if(!a){_(\"undefined\"!=typeof document,\"must manually specify webgl context outside of DOM environments\");var h=function(e,r,n){var a,i=document.createElement(\"canvas\");function o(){var t=window.innerWidth,r=window.innerHeight;if(e!==document.body){var a=i.getBoundingClientRect();t=a.right-a.left,r=a.bottom-a.top}i.width=n*t,i.height=n*r}return t(i.style,{border:0,margin:0,padding:0,top:0,left:0,width:\"100%\",height:\"100%\"}),e.appendChild(i),e===document.body&&(i.style.position=\"absolute\",t(e.style,{margin:0,padding:0})),e!==document.body&&\"function\"==typeof ResizeObserver?(a=new ResizeObserver((function(){setTimeout(o)}))).observe(e):window.addEventListener(\"resize\",o,!1),o(),{canvas:i,onDestroy:function(){a?a.disconnect():window.removeEventListener(\"resize\",o),e.removeChild(i)}}}(n||document.body,0,l);if(!h)return null;a=h.canvas,p=h.onDestroy}void 0===u.premultipliedAlpha&&(u.premultipliedAlpha=!0),i=function(e,t){function r(r){try{return e.getContext(r,t)}catch(e){return null}}return r(\"webgl\")||r(\"experimental-webgl\")||r(\"webgl-experimental\")}(a,u)}return i?{gl:i,canvas:a,container:n,extensions:s,optionalExtensions:c,pixelRatio:l,profile:d,onDone:m,onDestroy:p}:(p(),m(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\"),null)}function V(e,t){for(var r=Array(e),n=0;n65535)<<4,t|=r=((e>>>=t)>255)<<3,t|=r=((e>>>=r)>15)<<2,(t|=r=((e>>>=r)>3)<<1)|(e>>>=r)>>1}function P(){var e=V(8,(function(){return[]}));function t(t){var r=function(e){for(var t=16;t<=1<<28;t*=16)if(e<=t)return t;return 0}(t),n=e[I(r)>>2];return n.length>0?n.pop():new ArrayBuffer(r)}function r(t){e[I(t.byteLength)>>2].push(t)}return{alloc:t,free:r,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(e){r(e.buffer)}}}var L=P();L.zero=P();var R=3553,M=6408,W=5126,U=36160;function G(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||e(t.data))}var H=function(e){return Object.keys(e).map((function(t){return e[t]}))},N={shape:function(e){for(var t=[],r=e;r.length;r=r[0])t.push(r.length);return t},flatten:function(e,t,r,n){var a=1;if(t.length)for(var i=0;i>>31<<15,i=(n<<1>>>24)-127,o=n>>13&1023;if(i<-24)t[r]=a;else if(i<-14){var f=-14-i;t[r]=a+(o+1024>>f)}else t[r]=i>15?a+31744:a+(i+15<<10)+o}return t}function me(t){return Array.isArray(t)||e(t)}var pe=function(e){return!(e&e-1||!e)},he=3553,be=34067,ve=34069,ge=6408,ye=6406,xe=6407,we=6409,Ae=6410,_e=32855,ke=6402,Se=34041,Oe=35904,Ee=35906,Te=36193,De=33776,je=33777,Ce=33778,ze=33779,Fe=5121,Be=5123,Ve=5125,Ie=5126,Pe=33071,Le=9728,Re=9984,Me=9987,We=4352,Ue=33984,Ge=[Re,9986,9985,Me],He=[0,we,Ae,xe,ge],Ne={};function qe(e){return\"[object \"+e+\"]\"}Ne[6409]=Ne[6406]=Ne[6402]=1,Ne[34041]=Ne[6410]=2,Ne[6407]=Ne[35904]=3,Ne[6408]=Ne[35906]=4;var Qe=qe(\"HTMLCanvasElement\"),Ye=qe(\"OffscreenCanvas\"),Xe=qe(\"CanvasRenderingContext2D\"),$e=qe(\"ImageBitmap\"),Ke=qe(\"HTMLImageElement\"),Je=qe(\"HTMLVideoElement\"),Ze=Object.keys(Y).concat([Qe,Ye,Xe,$e,Ke,Je]),et=[];et[5121]=1,et[5126]=4,et[36193]=2,et[5123]=2,et[5125]=4;var tt=[];function rt(e){return Array.isArray(e)&&(0===e.length||\"number\"==typeof e[0])}function nt(e){return!!Array.isArray(e)&&!(0===e.length||!me(e[0]))}function at(e){return Object.prototype.toString.call(e)}function it(e){return at(e)===Qe}function ot(e){return at(e)===Ye}function ft(e){if(!e)return!1;var t=at(e);return Ze.indexOf(t)>=0||rt(e)||nt(e)||G(e)}function ut(e){return 0|Y[Object.prototype.toString.call(e)]}function st(e,t){return L.allocType(e.type===Te?Ie:e.type,t)}function ct(e,t){e.type===Te?(e.data=de(t),L.freeType(t)):e.data=t}function lt(e,t,r,n,a,i){var o;if(o=void 0!==tt[e]?tt[e]:Ne[e]*et[t],i&&(o*=6),a){for(var f=0,u=r;u>=1;)f+=o*u*u,u/=2;return f}return o*r*n}function dt(r,n,a,i,o,f,u){var s={\"don't care\":We,\"dont care\":We,nice:4354,fast:4353},c={repeat:10497,clamp:Pe,mirror:33648},l={nearest:Le,linear:9729},d=t({mipmap:Me,\"nearest mipmap nearest\":Re,\"linear mipmap nearest\":9985,\"nearest mipmap linear\":9986,\"linear mipmap linear\":Me},l),m={none:0,browser:37444},p={uint8:Fe,rgba4:32819,rgb565:33635,\"rgb5 a1\":32820},h={alpha:ye,luminance:we,\"luminance alpha\":Ae,rgb:xe,rgba:ge,rgba4:32854,\"rgb5 a1\":_e,rgb565:36194},b={};n.ext_srgb&&(h.srgb=Oe,h.srgba=Ee),n.oes_texture_float&&(p.float32=p.float=Ie),n.oes_texture_half_float&&(p.float16=p[\"half float\"]=Te),n.webgl_depth_texture&&(t(h,{depth:ke,\"depth stencil\":Se}),t(p,{uint16:Be,uint32:Ve,\"depth stencil\":34042})),n.webgl_compressed_texture_s3tc&&t(b,{\"rgb s3tc dxt1\":De,\"rgba s3tc dxt1\":je,\"rgba s3tc dxt3\":Ce,\"rgba s3tc dxt5\":ze}),n.webgl_compressed_texture_atc&&t(b,{\"rgb atc\":35986,\"rgba atc explicit alpha\":35987,\"rgba atc interpolated alpha\":34798}),n.webgl_compressed_texture_pvrtc&&t(b,{\"rgb pvrtc 4bppv1\":35840,\"rgb pvrtc 2bppv1\":35841,\"rgba pvrtc 4bppv1\":35842,\"rgba pvrtc 2bppv1\":35843}),n.webgl_compressed_texture_etc1&&(b[\"rgb etc1\"]=36196);var v=Array.prototype.slice.call(r.getParameter(34467));Object.keys(b).forEach((function(e){var t=b[e];v.indexOf(t)>=0&&(h[e]=t)}));var g=Object.keys(h);a.textureFormats=g;var y=[];Object.keys(h).forEach((function(e){var t=h[e];y[t]=e}));var x=[];Object.keys(p).forEach((function(e){var t=p[e];x[t]=e}));var w=[];Object.keys(l).forEach((function(e){w[l[e]]=e}));var A=[];Object.keys(d).forEach((function(e){var t=d[e];A[t]=e}));var k=[];Object.keys(c).forEach((function(e){k[c[e]]=e}));var S=g.reduce((function(e,t){var r=h[t];return r===we||r===ye||r===we||r===Ae||r===ke||r===Se||n.ext_srgb&&(r===Oe||r===Ee)?e[r]=r:r===_e||t.indexOf(\"rgba\")>=0?e[r]=ge:e[r]=xe,e}),{});function O(){this.internalformat=ge,this.format=ge,this.type=Fe,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function E(e,t){e.internalformat=t.internalformat,e.format=t.format,e.type=t.type,e.compressed=t.compressed,e.premultiplyAlpha=t.premultiplyAlpha,e.flipY=t.flipY,e.unpackAlignment=t.unpackAlignment,e.colorSpace=t.colorSpace,e.width=t.width,e.height=t.height,e.channels=t.channels}function T(e,t){if(\"object\"==typeof t&&t){if(\"premultiplyAlpha\"in t&&(_.type(t.premultiplyAlpha,\"boolean\",\"invalid premultiplyAlpha\"),e.premultiplyAlpha=t.premultiplyAlpha),\"flipY\"in t&&(_.type(t.flipY,\"boolean\",\"invalid texture flip\"),e.flipY=t.flipY),\"alignment\"in t&&(_.oneOf(t.alignment,[1,2,4,8],\"invalid texture unpack alignment\"),e.unpackAlignment=t.alignment),\"colorSpace\"in t&&(_.parameter(t.colorSpace,m,\"invalid colorSpace\"),e.colorSpace=m[t.colorSpace]),\"type\"in t){var r=t.type;_(n.oes_texture_float||!(\"float\"===r||\"float32\"===r),\"you must enable the OES_texture_float extension in order to use floating point textures.\"),_(n.oes_texture_half_float||!(\"half float\"===r||\"float16\"===r),\"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.\"),_(n.webgl_depth_texture||!(\"uint16\"===r||\"uint32\"===r||\"depth stencil\"===r),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(r,p,\"invalid texture type\"),e.type=p[r]}var i=e.width,o=e.height,f=e.channels,u=!1;\"shape\"in t?(_(Array.isArray(t.shape)&&t.shape.length>=2,\"shape must be an array\"),i=t.shape[0],o=t.shape[1],3===t.shape.length&&(f=t.shape[2],_(f>0&&f<=4,\"invalid number of channels\"),u=!0),_(i>=0&&i<=a.maxTextureSize,\"invalid width\"),_(o>=0&&o<=a.maxTextureSize,\"invalid height\")):(\"radius\"in t&&(i=o=t.radius,_(i>=0&&i<=a.maxTextureSize,\"invalid radius\")),\"width\"in t&&(i=t.width,_(i>=0&&i<=a.maxTextureSize,\"invalid width\")),\"height\"in t&&(o=t.height,_(o>=0&&o<=a.maxTextureSize,\"invalid height\")),\"channels\"in t&&(f=t.channels,_(f>0&&f<=4,\"invalid number of channels\"),u=!0)),e.width=0|i,e.height=0|o,e.channels=0|f;var s=!1;if(\"format\"in t){var c=t.format;_(n.webgl_depth_texture||!(\"depth\"===c||\"depth stencil\"===c),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(c,h,\"invalid texture format\");var l=e.internalformat=h[c];e.format=S[l],c in p&&(\"type\"in t||(e.type=p[c])),c in b&&(e.compressed=!0),s=!0}!u&&s?e.channels=Ne[e.format]:u&&!s?e.channels!==He[e.format]&&(e.format=e.internalformat=He[e.channels]):s&&u&&_(e.channels===Ne[e.format],\"number of channels inconsistent with specified format\")}}function D(e){r.pixelStorei(37440,e.flipY),r.pixelStorei(37441,e.premultiplyAlpha),r.pixelStorei(37443,e.colorSpace),r.pixelStorei(3317,e.unpackAlignment)}function j(){O.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function C(t,r){var n=null;if(ft(r)?n=r:r&&(_.type(r,\"object\",\"invalid pixel data type\"),T(t,r),\"x\"in r&&(t.xOffset=0|r.x),\"y\"in r&&(t.yOffset=0|r.y),ft(r.data)&&(n=r.data)),_(!t.compressed||n instanceof Uint8Array,\"compressed texture data must be stored in a uint8array\"),r.copy){_(!n,\"can not specify copy and data field for the same texture\");var i=o.viewportWidth,f=o.viewportHeight;t.width=t.width||i-t.xOffset,t.height=t.height||f-t.yOffset,t.needsCopy=!0,_(t.xOffset>=0&&t.xOffset=0&&t.yOffset0&&t.width<=i&&t.height>0&&t.height<=f,\"copy texture read out of bounds\")}else if(n){if(e(n))t.channels=t.channels||4,t.data=n,\"type\"in r||t.type!==Fe||(t.type=ut(n));else if(rt(n))t.channels=t.channels||4,function(e,t){var r=t.length;switch(e.type){case Fe:case Be:case Ve:case Ie:var n=L.allocType(e.type,r);n.set(t),e.data=n;break;case Te:e.data=de(t);break;default:_.raise(\"unsupported texture type, must specify a typed array\")}}(t,n),t.alignment=1,t.needsFree=!0;else if(G(n)){var u=n.data;Array.isArray(u)||t.type!==Fe||(t.type=ut(u));var s,c,l,d,m,p,h=n.shape,b=n.stride;3===h.length?(l=h[2],p=b[2]):(_(2===h.length,\"invalid ndarray pixel data, must be 2 or 3D\"),l=1,p=1),s=h[0],c=h[1],d=b[0],m=b[1],t.alignment=1,t.width=s,t.height=c,t.channels=l,t.format=t.internalformat=He[l],t.needsFree=!0,function(e,t,r,n,a,i){for(var o=e.width,f=e.height,u=e.channels,s=st(e,o*f*u),c=0,l=0;l=0,\"oes_texture_float extension not enabled\"):t.type===Te&&_(a.extensions.indexOf(\"oes_texture_half_float\")>=0,\"oes_texture_half_float extension not enabled\")}function z(e,t,n){var a=e.element,o=e.data,f=e.internalformat,u=e.format,s=e.type,c=e.width,l=e.height;D(e),a?r.texImage2D(t,n,u,u,s,a):e.compressed?r.compressedTexImage2D(t,n,f,c,l,0,o):e.needsCopy?(i(),r.copyTexImage2D(t,n,u,e.xOffset,e.yOffset,c,l,0)):r.texImage2D(t,n,u,c,l,0,u,s,o||null)}function F(e,t,n,a,o){var f=e.element,u=e.data,s=e.internalformat,c=e.format,l=e.type,d=e.width,m=e.height;D(e),f?r.texSubImage2D(t,o,n,a,c,l,f):e.compressed?r.compressedTexSubImage2D(t,o,n,a,s,d,m,u):e.needsCopy?(i(),r.copyTexSubImage2D(t,o,n,a,e.xOffset,e.yOffset,d,m)):r.texSubImage2D(t,o,n,a,d,m,c,l,u)}var B=[];function V(){return B.pop()||new j}function I(e){e.needsFree&&L.freeType(e.data),j.call(e),B.push(e)}function P(){O.call(this),this.genMipmaps=!1,this.mipmapHint=We,this.mipmask=0,this.images=Array(16)}function R(e,t,r){var n=e.images[0]=V();e.mipmask=1,n.width=e.width=t,n.height=e.height=r,n.channels=e.channels=4}function M(e,t){var r=null;if(ft(t))E(r=e.images[0]=V(),e),C(r,t),e.mipmask=1;else if(T(e,t),Array.isArray(t.mipmap))for(var n=t.mipmap,a=0;a>=a,r.height>>=a,C(r,n[a]),e.mipmask|=1<=0&&!(\"faces\"in t)&&(e.genMipmaps=!0)}if(\"mag\"in t){var n=t.mag;_.parameter(n,l),e.magFilter=l[n]}var i=e.wrapS,o=e.wrapT;if(\"wrap\"in t){var f=t.wrap;\"string\"==typeof f?(_.parameter(f,c),i=o=c[f]):Array.isArray(f)&&(_.parameter(f[0],c),_.parameter(f[1],c),i=c[f[0]],o=c[f[1]])}else{if(\"wrapS\"in t){var u=t.wrapS;_.parameter(u,c),i=c[u]}if(\"wrapT\"in t){var m=t.wrapT;_.parameter(m,c),o=c[m]}}if(e.wrapS=i,e.wrapT=o,\"anisotropic\"in t){var p=t.anisotropic;_(\"number\"==typeof p&&p>=1&&p<=a.maxAnisotropic,\"aniso samples must be between 1 and \"),e.anisotropic=t.anisotropic}if(\"mipmap\"in t){var h=!1;switch(typeof t.mipmap){case\"string\":_.parameter(t.mipmap,s,\"invalid mipmap hint\"),e.mipmapHint=s[t.mipmap],e.genMipmaps=!0,h=!0;break;case\"boolean\":h=e.genMipmaps=t.mipmap;break;case\"object\":_(Array.isArray(t.mipmap),\"invalid mipmap type\"),e.genMipmaps=!1,h=!0;break;default:_.raise(\"invalid mipmap type\")}h&&!(\"min\"in t)&&(e.minFilter=Re)}}function $(e,t){r.texParameteri(t,10241,e.minFilter),r.texParameteri(t,10240,e.magFilter),r.texParameteri(t,10242,e.wrapS),r.texParameteri(t,10243,e.wrapT),n.ext_texture_filter_anisotropic&&r.texParameteri(t,34046,e.anisotropic),e.genMipmaps&&(r.hint(33170,e.mipmapHint),r.generateMipmap(t))}var K=0,J={},Z=a.maxTextureUnits,ee=Array(Z).map((function(){return null}));function te(e){O.call(this),this.mipmask=0,this.internalformat=ge,this.id=K++,this.refCount=1,this.target=e,this.texture=r.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Y,u.profile&&(this.stats={size:0})}function re(e){r.activeTexture(Ue),r.bindTexture(e.target,e.texture)}function ne(){var e=ee[0];e?r.bindTexture(e.target,e.texture):r.bindTexture(he,null)}function ae(e){var t=e.texture;_(t,\"must not double destroy texture\");var n=e.unit,a=e.target;n>=0&&(r.activeTexture(Ue+n),r.bindTexture(a,null),ee[n]=null),r.deleteTexture(t),e.texture=null,e.params=null,e.pixels=null,e.refCount=0,delete J[e.id],f.textureCount--}return t(te.prototype,{bind:function(){var e=this;e.bindCount+=1;var t=e.unit;if(t<0){for(var n=0;n0)continue;a.unit=-1}ee[n]=e,t=n;break}t>=Z&&_.raise(\"insufficient number of texture units\"),u.profile&&f.maxTextureUnits>u)-o,s.height=s.height||(n.height>>u)-f,_(n.type===s.type&&n.format===s.format&&n.internalformat===s.internalformat,\"incompatible format for texture.subimage\"),_(o>=0&&f>=0&&o+s.width<=n.width&&f+s.height<=n.height,\"texture.subimage write out of bounds\"),_(n.mipmask&1<>f;++f){var s=a>>f,c=o>>f;if(!s||!c)break;r.texImage2D(he,f,n.format,s,c,0,n.format,n.type,null)}return ne(),u.profile&&(n.stats.size=lt(n.internalformat,n.type,a,o,!1,!1)),i},i._reglType=\"texture2d\",i._texture=n,u.profile&&(i.stats=n.stats),i.destroy=function(){n.decRef()},i},createCube:function(e,t,n,i,o,s){var c=new te(be);J[c.id]=c,f.cubeCount++;var l=new Array(6);function d(e,t,r,n,i,o){var f,s=c.texInfo;for(Y.call(s),f=0;f<6;++f)l[f]=q();if(\"number\"!=typeof e&&e)if(\"object\"==typeof e)if(t)M(l[0],e),M(l[1],t),M(l[2],r),M(l[3],n),M(l[4],i),M(l[5],o);else if(X(s,e),T(c,e),\"faces\"in e){var m=e.faces;for(_(Array.isArray(m)&&6===m.length,\"cube faces must be a length 6 array\"),f=0;f<6;++f)_(\"object\"==typeof m[f]&&!!m[f],\"invalid input for cube map face\"),E(l[f],c),M(l[f],m[f])}else for(f=0;f<6;++f)M(l[f],e);else _.raise(\"invalid arguments to cube map\");else{var p=0|e||1;for(f=0;f<6;++f)R(l[f],p,p)}for(E(c,l[0]),_.optional((function(){a.npotTextureCube||_(pe(c.width)&&pe(c.height),\"your browser does not support non power or two texture dimensions\")})),s.genMipmaps?c.mipmask=(l[0].width<<1)-1:c.mipmask=l[0].mipmask,_.textureCube(c,s,l,a),c.internalformat=l[0].internalformat,d.width=l[0].width,d.height=l[0].height,re(c),f=0;f<6;++f)W(l[f],ve+f);for($(s,be),ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,s.genMipmaps,!0)),d.format=y[c.internalformat],d.type=x[c.type],d.mag=w[s.magFilter],d.min=A[s.minFilter],d.wrapS=k[s.wrapS],d.wrapT=k[s.wrapT],f=0;f<6;++f)Q(l[f]);return d}return d(e,t,n,i,o,s),d.subimage=function(e,t,r,n,a){_(!!t,\"must specify image data\"),_(\"number\"==typeof e&&e===(0|e)&&e>=0&&e<6,\"invalid face\");var i=0|r,o=0|n,f=0|a,u=V();return E(u,c),u.width=0,u.height=0,C(u,t),u.width=u.width||(c.width>>f)-i,u.height=u.height||(c.height>>f)-o,_(c.type===u.type&&c.format===u.format&&c.internalformat===u.internalformat,\"incompatible format for texture.subimage\"),_(i>=0&&o>=0&&i+u.width<=c.width&&o+u.height<=c.height,\"texture.subimage write out of bounds\"),_(c.mipmask&1<>a;++a)r.texImage2D(ve+n,a,c.format,t>>a,t>>a,0,c.format,c.type,null);return ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,!1,!0)),d}},d._reglType=\"textureCube\",d._texture=c,u.profile&&(d.stats=c.stats),d.destroy=function(){c.decRef()},d},clear:function(){for(var e=0;e>t,e.height>>t,0,e.internalformat,e.type,null);else for(var n=0;n<6;++n)r.texImage2D(ve+n,t,e.internalformat,e.width>>t,e.height>>t,0,e.internalformat,e.type,null);$(e.texInfo,e.target)}))},refresh:function(){for(var e=0;e=0&&c=0&&l0&&d+c<=a.framebufferWidth,\"invalid width for read pixels\"),_(m>0&&m+l<=a.framebufferHeight,\"invalid height for read pixels\"),n();var h=d*m*4;return p||(s===Dt?p=new Uint8Array(h):s===jt&&(p=p||new Float32Array(h))),_.isTypedArray(p,\"data buffer for regl.read() must be a typedarray\"),_(p.byteLength>=h,\"data buffer for regl.read() too small\"),t.pixelStorei(3333,4),t.readPixels(c,l,d,m,6408,s,p),p}return function(e){return e&&\"framebuffer\"in e?function(e){var t;return r.setFBO({framebuffer:e.framebuffer},(function(){t=u(e)})),t}(e):u(e)}}function zt(e){return Array.prototype.slice.call(e)}function Ft(e){return zt(e).join(\"\")}var Bt=\"xyzw\".split(\"\"),Vt=\"dither\",It=\"blend.enable\",Pt=\"blend.color\",Lt=\"blend.equation\",Rt=\"blend.func\",Mt=\"depth.enable\",Wt=\"depth.func\",Ut=\"depth.range\",Gt=\"depth.mask\",Ht=\"colorMask\",Nt=\"cull.enable\",qt=\"cull.face\",Qt=\"frontFace\",Yt=\"lineWidth\",Xt=\"polygonOffset.enable\",$t=\"polygonOffset.offset\",Kt=\"sample.alpha\",Jt=\"sample.enable\",Zt=\"sample.coverage\",er=\"stencil.enable\",tr=\"stencil.mask\",rr=\"stencil.func\",nr=\"stencil.opFront\",ar=\"stencil.opBack\",ir=\"scissor.enable\",or=\"scissor.box\",fr=\"viewport\",ur=\"profile\",sr=\"framebuffer\",cr=\"vert\",lr=\"frag\",dr=\"elements\",mr=\"primitive\",pr=\"count\",hr=\"offset\",br=\"instances\",vr=\"vao\",gr=\"Width\",yr=\"Height\",xr=sr+gr,wr=sr+yr,Ar=\"drawingBufferWidth\",_r=\"drawingBufferHeight\",kr=[Rt,Lt,rr,nr,ar,Zt,fr,or,$t],Sr=34962,Or=34963,Er=5126,Tr=35664,Dr=35665,jr=35666,Cr=5124,zr=35667,Fr=35668,Br=35669,Vr=35670,Ir=35671,Pr=35672,Lr=35673,Rr=35674,Mr=35675,Wr=35676,Ur=35678,Gr=35680,Hr=1028,Nr=1029,qr=2305,Qr=7680,Yr={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},Xr=[\"constant color, constant alpha\",\"one minus constant color, constant alpha\",\"constant color, one minus constant alpha\",\"one minus constant color, one minus constant alpha\",\"constant alpha, constant color\",\"constant alpha, one minus constant color\",\"one minus constant alpha, constant color\",\"one minus constant alpha, one minus constant color\"],$r={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Jr={frag:35632,vert:35633},Zr={cw:2304,ccw:qr};function en(t){return Array.isArray(t)||e(t)||G(t)}function tn(e){return e.sort((function(e,t){return e===fr?-1:t===fr?1:e=1,n>=2,t)}if(4===r){var a=e.data;return new rn(a.thisDep,a.contextDep,a.propDep,t)}if(5===r)return new rn(!1,!1,!1,t);if(6===r){for(var i=!1,o=!1,f=!1,u=0;u=1&&(o=!0),c>=2&&(f=!0)}else 4===s.type&&(i=i||s.data.thisDep,o=o||s.data.contextDep,f=f||s.data.propDep)}return new rn(i,o,f,t)}return new rn(3===r,2===r,1===r,t)}var fn=new rn(!1,!1,!1,(function(){}));function un(e,r,n,a,i,o,f,u,s,c,l,d,m,p,h){var b=c.Record,v={add:32774,subtract:32778,\"reverse subtract\":32779};n.ext_blend_minmax&&(v.min=32775,v.max=32776);var g=n.angle_instanced_arrays,y=n.webgl_draw_buffers,x=n.oes_vertex_array_object,w={dirty:!0,profile:h.profile},A={},k=[],S={},O={};function E(e){return e.replace(\".\",\"_\")}function T(e,t,r){var n=E(e);k.push(e),A[n]=w[n]=!!r,S[n]=t}function j(e,t,r){var n=E(e);k.push(e),Array.isArray(r)?(w[n]=r.slice(),A[n]=r.slice()):w[n]=A[n]=r,O[n]=t}T(Vt,3024),T(It,3042),j(Pt,\"blendColor\",[0,0,0,0]),j(Lt,\"blendEquationSeparate\",[32774,32774]),j(Rt,\"blendFuncSeparate\",[1,0,1,0]),T(Mt,2929,!0),j(Wt,\"depthFunc\",513),j(Ut,\"depthRange\",[0,1]),j(Gt,\"depthMask\",!0),j(Ht,Ht,[!0,!0,!0,!0]),T(Nt,2884),j(qt,\"cullFace\",Nr),j(Qt,Qt,qr),j(Yt,Yt,1),T(Xt,32823),j($t,\"polygonOffset\",[0,0]),T(Kt,32926),T(Jt,32928),j(Zt,\"sampleCoverage\",[1,!1]),T(er,2960),j(tr,\"stencilMask\",-1),j(rr,\"stencilFunc\",[519,0,-1]),j(nr,\"stencilOpSeparate\",[Hr,Qr,Qr,Qr]),j(ar,\"stencilOpSeparate\",[Nr,Qr,Qr,Qr]),T(ir,3089),j(or,\"scissor\",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]),j(fr,fr,[0,0,e.drawingBufferWidth,e.drawingBufferHeight]);var C={gl:e,context:m,strings:r,next:A,current:w,draw:d,elements:o,buffer:i,shader:l,attributes:c.state,vao:c,uniforms:s,framebuffer:u,extensions:n,timer:p,isBufferArgs:en},z={primTypes:ie,compareFuncs:$r,blendFuncs:Yr,blendEquations:v,stencilOps:Kr,glTypes:X,orientationType:Zr};_.optional((function(){C.isArrayLike=me})),y&&(z.backBuffer=[Nr],z.drawBuffer=V(a.maxDrawbuffers,(function(e){return 0===e?[0]:V(e,(function(e){return 36064+e}))})));var F=0;function B(){var e=function(){var e=0,r=[],n=[];function a(){var r=[],n=[];return t((function(){r.push.apply(r,zt(arguments))}),{def:function(){var t=\"v\"+e++;return n.push(t),arguments.length>0&&(r.push(t,\"=\"),r.push.apply(r,zt(arguments)),r.push(\";\")),t},toString:function(){return Ft([n.length>0?\"var \"+n.join(\",\")+\";\":\"\",Ft(r)])}})}function i(){var e=a(),r=a(),n=e.toString,i=r.toString;function o(t,n){r(t,n,\"=\",e.def(t,n),\";\")}return t((function(){e.apply(e,zt(arguments))}),{def:e.def,entry:e,exit:r,save:o,set:function(t,r,n){o(t,r),e(t,r,\"=\",n,\";\")},toString:function(){return n()+i()}})}var o=a(),f={};return{global:o,link:function(t){for(var a=0;a=0,'unknown parameter \"'+t+'\"',d.commandStr)}))}t(m),t(p)}));var h=function(e,t){var r=e.static;if(\"string\"==typeof r[lr]&&\"string\"==typeof r[cr]){if(Object.keys(t.dynamic).length>0)return null;var n=t.static,a=Object.keys(n);if(a.length>0&&\"number\"==typeof n[a[0]]){for(var i=[],o=0;o=0,\"invalid \"+e,r.commandStr)):u=!1,\"height\"in i?(f=0|i.height,_.command(f>=0,\"invalid \"+e,r.commandStr)):u=!1,new rn(!u&&t&&t.thisDep,!u&&t&&t.contextDep,!u&&t&&t.propDep,(function(e,t){var r=e.shared.context,n=o;\"width\"in i||(n=t.def(r,\".\",xr,\"-\",s));var a=f;return\"height\"in i||(a=t.def(r,\".\",wr,\"-\",c)),[s,c,n,a]}))}if(e in a){var l=a[e],d=on(l,(function(t,r){var n=t.invoke(r,l);_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)}));var a=t.shared.context,i=r.def(n,\".x|0\"),o=r.def(n,\".y|0\"),f=r.def('\"width\" in ',n,\"?\",n,\".width|0:\",\"(\",a,\".\",xr,\"-\",i,\")\"),u=r.def('\"height\" in ',n,\"?\",n,\".height|0:\",\"(\",a,\".\",wr,\"-\",o,\")\");return _.optional((function(){t.assert(r,f+\">=0&&\"+u+\">=0\",\"invalid \"+e)})),[i,o,f,u]}));return t&&(d.thisDep=d.thisDep||t.thisDep,d.contextDep=d.contextDep||t.contextDep,d.propDep=d.propDep||t.propDep),d}return t?new rn(t.thisDep,t.contextDep,t.propDep,(function(e,t){var r=e.shared.context;return[0,0,t.def(r,\".\",xr),t.def(r,\".\",wr)]})):null}var o=i(fr);if(o){var f=o;o=new rn(o.thisDep,o.contextDep,o.propDep,(function(e,t){var r=f.append(e,t),n=e.shared.context;return t.set(n,\".viewportWidth\",r[2]),t.set(n,\".viewportHeight\",r[3]),r}))}return{viewport:o,scissor_box:i(or)}}(e,y,d),w=function(e,t){var r=e.static,n=e.dynamic,a={},i=!1,f=function(){if(vr in r){var e=r[vr];return null!==e&&null===c.getVAO(e)&&(e=c.createVAO(e)),i=!0,a.vao=e,an((function(t){var r=c.getVAO(e);return r?t.link(r):\"null\"}))}if(vr in n){i=!0;var t=n[vr];return on(t,(function(e,r){var n=e.invoke(r,t);return r.def(e.shared.vao+\".getVAO(\"+n+\")\")}))}return null}(),u=!1,s=function(){if(dr in r){var e=r[dr];if(a.elements=e,en(e)){var s=a.elements=o.create(e,!0);e=o.getElements(s),u=!0}else e&&(e=o.getElements(e),u=!0,_.command(e,\"invalid elements\",t.commandStr));var c=an((function(t,r){if(e){var n=t.link(e);return t.ELEMENTS=n,n}return t.ELEMENTS=null,null}));return c.value=e,c}if(dr in n){u=!0;var l=n[dr];return on(l,(function(e,t){var r=e.shared,n=r.isBufferArgs,a=r.elements,i=e.invoke(t,l),o=t.def(\"null\"),f=t.def(n,\"(\",i,\")\"),u=e.cond(f).then(o,\"=\",a,\".createStream(\",i,\");\").else(o,\"=\",a,\".getElements(\",i,\");\");return _.optional((function(){e.assert(u.else,\"!\"+i+\"||\"+o,\"invalid elements\")})),t.entry(u),t.exit(e.cond(f).then(a,\".destroyStream(\",o,\");\")),e.ELEMENTS=o,o}))}return i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.elements+\".getElements(\"+e.shared.vao+\".currentVAO.elements):null\")})):null}();function l(e,o){if(e in r){var s=0|r[e];return o?a.offset=s:a.instances=s,_.command(!o||s>=0,\"invalid \"+e,t.commandStr),an((function(e,t){return o&&(e.OFFSET=s),s}))}if(e in n){var c=n[e];return on(c,(function(t,r){var n=t.invoke(r,c);return o&&(t.OFFSET=n,_.optional((function(){t.assert(r,n+\">=0\",\"invalid \"+e)}))),n}))}if(o){if(u)return an((function(e,t){return e.OFFSET=0,0}));if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.offset:0\")}))}else if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.instances:-1\")}));return null}var d=l(hr,!0),m=function(){if(mr in r){var e=r[mr];return a.primitive=e,_.commandParameter(e,ie,\"invalid primitve\",t.commandStr),an((function(t,r){return ie[e]}))}if(mr in n){var o=n[mr];return on(o,(function(e,t){var r=e.constants.primTypes,n=e.invoke(t,o);return _.optional((function(){e.assert(t,n+\" in \"+r,\"invalid primitive, must be one of \"+Object.keys(ie))})),t.def(r,\"[\",n,\"]\")}))}return u?nn(s)?s.value?an((function(e,t){return t.def(e.ELEMENTS,\".primType\")})):an((function(){return 4})):new rn(s.thisDep,s.contextDep,s.propDep,(function(e,t){var r=e.ELEMENTS;return t.def(r,\"?\",r,\".primType:\",4)})):i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.primitive:4\")})):null}(),p=function(){if(pr in r){var e=0|r[pr];return a.count=e,_.command(\"number\"==typeof e&&e>=0,\"invalid vertex count\",t.commandStr),an((function(){return e}))}if(pr in n){var o=n[pr];return on(o,(function(e,t){var r=e.invoke(t,o);return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=0&&\"+r+\"===(\"+r+\"|0)\",\"invalid vertex count\")})),r}))}if(u){if(nn(s)){if(s)return d?new rn(d.thisDep,d.contextDep,d.propDep,(function(e,t){var r=t.def(e.ELEMENTS,\".vertCount-\",e.OFFSET);return _.optional((function(){e.assert(t,r+\">=0\",\"invalid vertex offset/element buffer too small\")})),r})):an((function(e,t){return t.def(e.ELEMENTS,\".vertCount\")}));var c=an((function(){return-1}));return _.optional((function(){c.MISSING=!0})),c}var l=new rn(s.thisDep||d.thisDep,s.contextDep||d.contextDep,s.propDep||d.propDep,(function(e,t){var r=e.ELEMENTS;return e.OFFSET?t.def(r,\"?\",r,\".vertCount-\",e.OFFSET,\":-1\"):t.def(r,\"?\",r,\".vertCount:-1\")}));return _.optional((function(){l.DYNAMIC=!0})),l}if(i){var m=new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao,\".currentVAO?\",e.shared.vao,\".currentVAO.count:-1\")}));return m}return null}(),h=l(br,!1);return{elements:s,primitive:m,count:p,instances:h,offset:d,vao:f,vaoActive:i,elementsActive:u,static:a}}(e,d),A=function(e,t){var r=e.static,n=e.dynamic,i={};return k.forEach((function(e){var o=E(e);function f(t,a){if(e in r){var f=t(r[e]);i[o]=an((function(){return f}))}else if(e in n){var u=n[e];i[o]=on(u,(function(e,t){return a(e,t,e.invoke(t,u))}))}}switch(e){case Nt:case It:case Vt:case er:case Mt:case ir:case Xt:case Kt:case Jt:case Gt:return f((function(r){return _.commandType(r,\"boolean\",e,t.commandStr),r}),(function(t,r,n){return _.optional((function(){t.assert(r,\"typeof \"+n+'===\"boolean\"',\"invalid flag \"+e,t.commandStr)})),n}));case Wt:return f((function(r){return _.commandParameter(r,$r,\"invalid \"+e,t.commandStr),$r[r]}),(function(t,r,n){var a=t.constants.compareFuncs;return _.optional((function(){t.assert(r,n+\" in \"+a,\"invalid \"+e+\", must be one of \"+Object.keys($r))})),r.def(a,\"[\",n,\"]\")}));case Ut:return f((function(e){return _.command(me(e)&&2===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&e[0]<=e[1],\"depth range is 2d array\",t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===2&&typeof \"+r+'[0]===\"number\"&&typeof '+r+'[1]===\"number\"&&'+r+\"[0]<=\"+r+\"[1]\",\"depth range must be a 2d array\")})),[t.def(\"+\",r,\"[0]\"),t.def(\"+\",r,\"[1]\")]}));case Rt:return f((function(e){_.commandType(e,\"object\",\"blend.func\",t.commandStr);var r=\"srcRGB\"in e?e.srcRGB:e.src,n=\"srcAlpha\"in e?e.srcAlpha:e.src,a=\"dstRGB\"in e?e.dstRGB:e.dst,i=\"dstAlpha\"in e?e.dstAlpha:e.dst;return _.commandParameter(r,Yr,o+\".srcRGB\",t.commandStr),_.commandParameter(n,Yr,o+\".srcAlpha\",t.commandStr),_.commandParameter(a,Yr,o+\".dstRGB\",t.commandStr),_.commandParameter(i,Yr,o+\".dstAlpha\",t.commandStr),_.command(-1===Xr.indexOf(r+\", \"+a),\"unallowed blending combination (srcRGB, dstRGB) = (\"+r+\", \"+a+\")\",t.commandStr),[Yr[r],Yr[a],Yr[n],Yr[i]]}),(function(t,r,n){var a=t.constants.blendFuncs;function i(i,o){var f=r.def('\"',i,o,'\" in ',n,\"?\",n,\".\",i,o,\":\",n,\".\",i);return _.optional((function(){t.assert(r,f+\" in \"+a,\"invalid \"+e+\".\"+i+o+\", must be one of \"+Object.keys(Yr))})),f}_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid blend func, must be an object\")}));var o=i(\"src\",\"RGB\"),f=i(\"dst\",\"RGB\");_.optional((function(){var e=t.constants.invalidBlendCombinations;t.assert(r,e+\".indexOf(\"+o+'+\", \"+'+f+\") === -1 \",\"unallowed blending combination for (srcRGB, dstRGB)\")}));var u=r.def(a,\"[\",o,\"]\"),s=r.def(a,\"[\",i(\"src\",\"Alpha\"),\"]\");return[u,r.def(a,\"[\",f,\"]\"),s,r.def(a,\"[\",i(\"dst\",\"Alpha\"),\"]\")]}));case Lt:return f((function(r){return\"string\"==typeof r?(_.commandParameter(r,v,\"invalid \"+e,t.commandStr),[v[r],v[r]]):\"object\"==typeof r?(_.commandParameter(r.rgb,v,e+\".rgb\",t.commandStr),_.commandParameter(r.alpha,v,e+\".alpha\",t.commandStr),[v[r.rgb],v[r.alpha]]):void _.commandRaise(\"invalid blend.equation\",t.commandStr)}),(function(t,r,n){var a=t.constants.blendEquations,i=r.def(),o=r.def(),f=t.cond(\"typeof \",n,'===\"string\"');return _.optional((function(){function r(e,r,n){t.assert(e,n+\" in \"+a,\"invalid \"+r+\", must be one of \"+Object.keys(v))}r(f.then,e,n),t.assert(f.else,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e),r(f.else,e+\".rgb\",n+\".rgb\"),r(f.else,e+\".alpha\",n+\".alpha\")})),f.then(i,\"=\",o,\"=\",a,\"[\",n,\"];\"),f.else(i,\"=\",a,\"[\",n,\".rgb];\",o,\"=\",a,\"[\",n,\".alpha];\"),r(f),[i,o]}));case Pt:return f((function(e){return _.command(me(e)&&4===e.length,\"blend.color must be a 4d array\",t.commandStr),V(4,(function(t){return+e[t]}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"blend.color must be a 4d array\")})),V(4,(function(e){return t.def(\"+\",r,\"[\",e,\"]\")}))}));case tr:return f((function(e){return _.commandType(e,\"number\",o,t.commandStr),0|e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"',\"invalid stencil.mask\")})),t.def(r,\"|0\")}));case rr:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.cmp||\"keep\",a=r.ref||0,i=\"mask\"in r?r.mask:-1;return _.commandParameter(n,$r,e+\".cmp\",t.commandStr),_.commandType(a,\"number\",e+\".ref\",t.commandStr),_.commandType(i,\"number\",e+\".mask\",t.commandStr),[$r[n],a,i]}),(function(e,t,r){var n=e.constants.compareFuncs;return _.optional((function(){function a(){e.assert(t,Array.prototype.join.call(arguments,\"\"),\"invalid stencil.func\")}a(r+\"&&typeof \",r,'===\"object\"'),a('!(\"cmp\" in ',r,\")||(\",r,\".cmp in \",n,\")\")})),[t.def('\"cmp\" in ',r,\"?\",n,\"[\",r,\".cmp]\",\":\",Qr),t.def(r,\".ref|0\"),t.def('\"mask\" in ',r,\"?\",r,\".mask|0:-1\")]}));case nr:case ar:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.fail||\"keep\",a=r.zfail||\"keep\",i=r.zpass||\"keep\";return _.commandParameter(n,Kr,e+\".fail\",t.commandStr),_.commandParameter(a,Kr,e+\".zfail\",t.commandStr),_.commandParameter(i,Kr,e+\".zpass\",t.commandStr),[e===ar?Nr:Hr,Kr[n],Kr[a],Kr[i]]}),(function(t,r,n){var a=t.constants.stencilOps;function i(i){return _.optional((function(){t.assert(r,'!(\"'+i+'\" in '+n+\")||(\"+n+\".\"+i+\" in \"+a+\")\",\"invalid \"+e+\".\"+i+\", must be one of \"+Object.keys(Kr))})),r.def('\"',i,'\" in ',n,\"?\",a,\"[\",n,\".\",i,\"]:\",Qr)}return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[e===ar?Nr:Hr,i(\"fail\"),i(\"zfail\"),i(\"zpass\")]}));case $t:return f((function(e){_.commandType(e,\"object\",o,t.commandStr);var r=0|e.factor,n=0|e.units;return _.commandType(r,\"number\",o+\".factor\",t.commandStr),_.commandType(n,\"number\",o+\".units\",t.commandStr),[r,n]}),(function(t,r,n){return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[r.def(n,\".factor|0\"),r.def(n,\".units|0\")]}));case qt:return f((function(e){var r=0;return\"front\"===e?r=Hr:\"back\"===e&&(r=Nr),_.command(!!r,o,t.commandStr),r}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"front\"||'+r+'===\"back\"',\"invalid cull.face\")})),t.def(r,'===\"front\"?',Hr,\":\",Nr)}));case Yt:return f((function(e){return _.command(\"number\"==typeof e&&e>=a.lineWidthDims[0]&&e<=a.lineWidthDims[1],\"invalid line width, must be a positive number between \"+a.lineWidthDims[0]+\" and \"+a.lineWidthDims[1],t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=\"+a.lineWidthDims[0]+\"&&\"+r+\"<=\"+a.lineWidthDims[1],\"invalid line width\")})),r}));case Qt:return f((function(e){return _.commandParameter(e,Zr,o,t.commandStr),Zr[e]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"cw\"||'+r+'===\"ccw\"',\"invalid frontFace, must be one of cw,ccw\")})),t.def(r+'===\"cw\"?2304:'+qr)}));case Ht:return f((function(e){return _.command(me(e)&&4===e.length,\"color.mask must be length 4 array\",t.commandStr),e.map((function(e){return!!e}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"invalid color.mask\")})),V(4,(function(e){return\"!!\"+r+\"[\"+e+\"]\"}))}));case Zt:return f((function(e){_.command(\"object\"==typeof e&&e,o,t.commandStr);var r=\"value\"in e?e.value:1,n=!!e.invert;return _.command(\"number\"==typeof r&&r>=0&&r<=1,\"sample.coverage.value must be a number between 0 and 1\",t.commandStr),[r,n]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+\"&&typeof \"+r+'===\"object\"',\"invalid sample.coverage\")})),[t.def('\"value\" in ',r,\"?+\",r,\".value:1\"),t.def(\"!!\",r,\".invert\")]}))}})),i}(e,d),S=function(e,t,n){var a=e.static,i=e.dynamic;function o(e){if(e in a){var t=r.id(a[e]);_.optional((function(){l.shader(Jr[e],t,_.guessCommand())}));var n=an((function(){return t}));return n.id=t,n}if(e in i){var o=i[e];return on(o,(function(t,r){var n=t.invoke(r,o),a=r.def(t.shared.strings,\".id(\",n,\")\");return _.optional((function(){r(t.shared.shader,\".shader(\",Jr[e],\",\",a,\",\",t.command,\");\")})),a}))}return null}var f,u=o(lr),s=o(cr),c=null;return nn(u)&&nn(s)?(c=l.program(s.id,u.id,null,n),f=an((function(e,t){return e.link(c)}))):f=new rn(u&&u.thisDep||s&&s.thisDep,u&&u.contextDep||s&&s.contextDep,u&&u.propDep||s&&s.propDep,(function(e,t){var r,n=e.shared.shader;r=u?u.append(e,t):t.def(n,\".\",lr);var a=n+\".program(\"+(s?s.append(e,t):t.def(n,\".\",cr))+\",\"+r;return _.optional((function(){a+=\",\"+e.command})),t.def(a+\")\")})),{frag:u,vert:s,progVar:f,program:c}}(e,0,h);function O(e){var t=x[e];t&&(A[e]=t)}O(fr),O(E(or));var T=Object.keys(A).length>0,D={framebuffer:y,draw:w,shader:S,state:A,dirty:T,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(D.profile=function(e){var t,r=e.static,n=e.dynamic;if(ur in r){var a=!!r[ur];(t=an((function(e,t){return a}))).enable=a}else if(ur in n){var i=n[ur];t=on(i,(function(e,t){return e.invoke(t,i)}))}return t}(e),D.uniforms=function(e,t){var r=e.static,n=e.dynamic,a={};return Object.keys(r).forEach((function(e){var n,i=r[e];if(\"number\"==typeof i||\"boolean\"==typeof i)n=an((function(){return i}));else if(\"function\"==typeof i){var o=i._reglType;\"texture2d\"===o||\"textureCube\"===o?n=an((function(e){return e.link(i)})):\"framebuffer\"===o||\"framebufferCube\"===o?(_.command(i.color.length>0,'missing color attachment for framebuffer sent to uniform \"'+e+'\"',t.commandStr),n=an((function(e){return e.link(i.color[0])}))):_.commandRaise('invalid data for uniform \"'+e+'\"',t.commandStr)}else me(i)?n=an((function(t){return t.global.def(\"[\",V(i.length,(function(r){return _.command(\"number\"==typeof i[r]||\"boolean\"==typeof i[r],\"invalid uniform \"+e,t.commandStr),i[r]})),\"]\")})):_.commandRaise('invalid or missing data for uniform \"'+e+'\"',t.commandStr);n.value=i,a[e]=n})),Object.keys(n).forEach((function(e){var t=n[e];a[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),a}(f,d),D.drawVAO=D.scopeVAO=w.vao,!D.drawVAO&&S.program&&!h&&n.angle_instanced_arrays&&w.static.elements){var j=!0,C=S.program.attributes.map((function(e){var r=t.static[e];return j=j&&!!r,r}));if(j&&C.length>0){var z=c.getVAO(c.createVAO({attributes:C,elements:w.static.elements}));D.drawVAO=new rn(null,null,null,(function(e,t){return e.link(z)})),D.useVAO=!0}}return h?D.useVAO=!0:D.attributes=function(e,t){var n=e.static,a=e.dynamic,o={};return Object.keys(n).forEach((function(e){var a=n[e],f=r.id(e),u=new b;if(en(a))u.state=1,u.buffer=i.getBuffer(i.create(a,Sr,!1,!0)),u.type=0;else{var s=i.getBuffer(a);if(s)u.state=1,u.buffer=s,u.type=0;else if(_.command(\"object\"==typeof a&&a,\"invalid data for attribute \"+e,t.commandStr),\"constant\"in a){var c=a.constant;u.buffer=\"null\",u.state=2,\"number\"==typeof c?u.x=c:(_.command(me(c)&&c.length>0&&c.length<=4,\"invalid constant for attribute \"+e,t.commandStr),Bt.forEach((function(e,t){t=0,'invalid offset for attribute \"'+e+'\"',t.commandStr);var d=0|a.stride;_.command(d>=0&&d<256,'invalid stride for attribute \"'+e+'\", must be integer betweeen [0, 255]',t.commandStr);var m=0|a.size;_.command(!(\"size\"in a)||m>0&&m<=4,'invalid size for attribute \"'+e+'\", must be 1,2,3,4',t.commandStr);var p=!!a.normalized,h=0;\"type\"in a&&(_.commandParameter(a.type,X,\"invalid type for attribute \"+e,t.commandStr),h=X[a.type]);var v=0|a.divisor;_.optional((function(){\"divisor\"in a&&(_.command(0===v||g,'cannot specify divisor for attribute \"'+e+'\", instancing not supported',t.commandStr),_.command(v>=0,'invalid divisor for attribute \"'+e+'\"',t.commandStr));var r=t.commandStr,n=[\"buffer\",\"offset\",\"divisor\",\"normalized\",\"type\",\"size\",\"stride\"];Object.keys(a).forEach((function(t){_.command(n.indexOf(t)>=0,'unknown parameter \"'+t+'\" for attribute pointer \"'+e+'\" (valid parameters are '+n+\")\",r)}))})),u.buffer=s,u.state=1,u.size=m,u.normalized=p,u.type=h||s.dtype,u.offset=l,u.stride=d,u.divisor=v}}o[e]=an((function(e,t){var r=e.attribCache;if(f in r)return r[f];var n={isStream:!1};return Object.keys(u).forEach((function(e){n[e]=u[e]})),u.buffer&&(n.buffer=e.link(u.buffer),n.type=n.type||n.buffer+\".dtype\"),r[f]=n,n}))})),Object.keys(a).forEach((function(e){var t=a[e];o[e]=on(t,(function(r,n){var a=r.invoke(n,t),i=r.shared,o=r.constants,f=i.isBufferArgs,u=i.buffer;_.optional((function(){r.assert(n,a+\"&&(typeof \"+a+'===\"object\"||typeof '+a+'===\"function\")&&('+f+\"(\"+a+\")||\"+u+\".getBuffer(\"+a+\")||\"+u+\".getBuffer(\"+a+\".buffer)||\"+f+\"(\"+a+'.buffer)||(\"constant\" in '+a+\"&&(typeof \"+a+'.constant===\"number\"||'+i.isArrayLike+\"(\"+a+\".constant))))\",'invalid dynamic attribute \"'+e+'\"')}));var s={isStream:n.def(!1)},c=new b;c.state=1,Object.keys(c).forEach((function(e){s[e]=n.def(\"\"+c[e])}));var l=s.buffer,d=s.type;function m(e){n(s[e],\"=\",a,\".\",e,\"|0;\")}return n(\"if(\",f,\"(\",a,\")){\",s.isStream,\"=true;\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\");\",d,\"=\",l,\".dtype;\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\");\",\"if(\",l,\"){\",d,\"=\",l,\".dtype;\",'}else if(\"constant\" in ',a,\"){\",s.state,\"=\",2,\";\",\"if(typeof \"+a+'.constant === \"number\"){',s[Bt[0]],\"=\",a,\".constant;\",Bt.slice(1).map((function(e){return s[e]})).join(\"=\"),\"=0;\",\"}else{\",Bt.map((function(e,t){return s[e]+\"=\"+a+\".constant.length>\"+t+\"?\"+a+\".constant[\"+t+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",f,\"(\",a,\".buffer)){\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\".buffer);\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\".buffer);\",\"}\",d,'=\"type\" in ',a,\"?\",o.glTypes,\"[\",a,\".type]:\",l,\".dtype;\",s.normalized,\"=!!\",a,\".normalized;\"),m(\"size\"),m(\"offset\"),m(\"stride\"),m(\"divisor\"),n(\"}}\"),n.exit(\"if(\",s.isStream,\"){\",u,\".destroyStream(\",l,\");\",\"}\"),s}))})),o}(t,d),D.context=function(e){var t=e.static,r=e.dynamic,n={};return Object.keys(t).forEach((function(e){var r=t[e];n[e]=an((function(e,t){return\"number\"==typeof r||\"boolean\"==typeof r?\"\"+r:e.link(r)}))})),Object.keys(r).forEach((function(e){var t=r[e];n[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),n}(s),D}function P(e,t,r){var n=e.shared.context,a=e.scope();Object.keys(r).forEach((function(i){t.save(n,\".\"+i);var o=r[i].append(e,t);Array.isArray(o)?a(n,\".\",i,\"=[\",o.join(),\"];\"):a(n,\".\",i,\"=\",o,\";\")})),t(a)}function L(e,t,r,n){var a,i=e.shared,o=i.gl,f=i.framebuffer;y&&(a=t.def(i.extensions,\".webgl_draw_buffers\"));var u,s=e.constants,c=s.drawBuffer,l=s.backBuffer;u=r?r.append(e,t):t.def(f,\".next\"),n||t(\"if(\",u,\"!==\",f,\".cur){\"),t(\"if(\",u,\"){\",o,\".bindFramebuffer(\",36160,\",\",u,\".framebuffer);\"),y&&t(a,\".drawBuffersWEBGL(\",c,\"[\",u,\".colorAttachments.length]);\"),t(\"}else{\",o,\".bindFramebuffer(\",36160,\",null);\"),y&&t(a,\".drawBuffersWEBGL(\",l,\");\"),t(\"}\",f,\".cur=\",u,\";\"),n||t(\"}\")}function R(e,t,r){var n=e.shared,a=n.gl,i=e.current,o=e.next,f=n.current,u=n.next,s=e.cond(f,\".dirty\");k.forEach((function(t){var n,c,l=E(t);if(!(l in r.state))if(l in o){n=o[l],c=i[l];var d=V(w[l].length,(function(e){return s.def(n,\"[\",e,\"]\")}));s(e.cond(d.map((function(e,t){return e+\"!==\"+c+\"[\"+t+\"]\"})).join(\"||\")).then(a,\".\",O[l],\"(\",d,\");\",d.map((function(e,t){return c+\"[\"+t+\"]=\"+e})).join(\";\"),\";\"))}else{n=s.def(u,\".\",l);var m=e.cond(n,\"!==\",f,\".\",l);s(m),l in S?m(e.cond(n).then(a,\".enable(\",S[l],\");\").else(a,\".disable(\",S[l],\");\"),f,\".\",l,\"=\",n,\";\"):m(a,\".\",O[l],\"(\",n,\");\",f,\".\",l,\"=\",n,\";\")}})),0===Object.keys(r.state).length&&s(f,\".dirty=false;\"),t(s)}function M(e,t,r,n){var a=e.shared,i=e.current,o=a.current,f=a.gl;tn(Object.keys(r)).forEach((function(a){var u=r[a];if(!n||n(u)){var s=u.append(e,t);if(S[a]){var c=S[a];nn(u)?t(f,s?\".enable(\":\".disable(\",c,\");\"):t(e.cond(s).then(f,\".enable(\",c,\");\").else(f,\".disable(\",c,\");\")),t(o,\".\",a,\"=\",s,\";\")}else if(me(s)){var l=i[a];t(f,\".\",O[a],\"(\",s,\");\",s.map((function(e,t){return l+\"[\"+t+\"]=\"+e})).join(\";\"),\";\")}else t(f,\".\",O[a],\"(\",s,\");\",o,\".\",a,\"=\",s,\";\")}}))}function W(e,t){g&&(e.instancing=t.def(e.shared.extensions,\".angle_instanced_arrays\"))}function U(e,t,r,n,a){var i,o,f,u=e.shared,s=e.stats,c=u.current,l=u.timer,d=r.profile;function m(){return\"undefined\"==typeof performance?\"Date.now()\":\"performance.now()\"}function h(e){e(i=t.def(),\"=\",m(),\";\"),\"string\"==typeof a?e(s,\".count+=\",a,\";\"):e(s,\".count++;\"),p&&(n?e(o=t.def(),\"=\",l,\".getNumPendingQueries();\"):e(l,\".beginQuery(\",s,\");\"))}function b(e){e(s,\".cpuTime+=\",m(),\"-\",i,\";\"),p&&(n?e(l,\".pushScopeStats(\",o,\",\",l,\".getNumPendingQueries(),\",s,\");\"):e(l,\".endQuery();\"))}function v(e){var r=t.def(c,\".profile\");t(c,\".profile=\",e,\";\"),t.exit(c,\".profile=\",r,\";\")}if(d){if(nn(d))return void(d.enable?(h(t),b(t.exit),v(\"true\")):v(\"false\"));v(f=d.append(e,t))}else f=t.def(c,\".profile\");var g=e.block();h(g),t(\"if(\",f,\"){\",g,\"}\");var y=e.block();b(y),t.exit(\"if(\",f,\"){\",y,\"}\")}function G(e,t,r,n,a){var i=e.shared;n.forEach((function(n){var o,f=n.name,u=r.attributes[f];if(u){if(!a(u))return;o=u.append(e,t)}else{if(!a(fn))return;var s=e.scopeAttrib(f);_.optional((function(){e.assert(t,s+\".state\",\"missing attribute \"+f)})),o={},Object.keys(new b).forEach((function(e){o[e]=t.def(s,\".\",e)}))}!function(r,n,a){var o=i.gl,f=t.def(r,\".location\"),u=t.def(i.attributes,\"[\",f,\"]\"),s=a.state,c=a.buffer,l=[a.x,a.y,a.z,a.w],d=[\"buffer\",\"normalized\",\"offset\",\"stride\"];function m(){t(\"if(!\",u,\".buffer){\",o,\".enableVertexAttribArray(\",f,\");}\");var r,i=a.type;if(r=a.size?t.def(a.size,\"||\",n):n,t(\"if(\",u,\".type!==\",i,\"||\",u,\".size!==\",r,\"||\",d.map((function(e){return u+\".\"+e+\"!==\"+a[e]})).join(\"||\"),\"){\",o,\".bindBuffer(\",Sr,\",\",c,\".buffer);\",o,\".vertexAttribPointer(\",[f,r,i,a.normalized,a.stride,a.offset],\");\",u,\".type=\",i,\";\",u,\".size=\",r,\";\",d.map((function(e){return u+\".\"+e+\"=\"+a[e]+\";\"})).join(\"\"),\"}\"),g){var s=a.divisor;t(\"if(\",u,\".divisor!==\",s,\"){\",e.instancing,\".vertexAttribDivisorANGLE(\",[f,s],\");\",u,\".divisor=\",s,\";}\")}}function p(){t(\"if(\",u,\".buffer){\",o,\".disableVertexAttribArray(\",f,\");\",u,\".buffer=null;\",\"}if(\",Bt.map((function(e,t){return u+\".\"+e+\"!==\"+l[t]})).join(\"||\"),\"){\",o,\".vertexAttrib4f(\",f,\",\",l,\");\",Bt.map((function(e,t){return u+\".\"+e+\"=\"+l[t]+\";\"})).join(\"\"),\"}\")}1===s?m():2===s?p():(t(\"if(\",s,\"===\",1,\"){\"),m(),t(\"}else{\"),p(),t(\"}\"))}(e.link(n),function(e){switch(e){case Tr:case zr:case Ir:return 2;case Dr:case Fr:case Pr:return 3;case jr:case Br:case Lr:return 4;default:return 1}}(n.info.type),o)}))}function H(e,t,n,a,i,o){for(var f,u=e.shared,s=u.gl,c={},l=0;l1){if(!b)continue;var v=m.replace(\"[0]\",\"\");if(c[v])continue;c[v]=1}var g,y=e.link(d)+\".location\";if(b){if(!i(b))continue;if(nn(b)){var x=b.value;if(_.command(null!=x,'missing uniform \"'+m+'\"',e.commandStr),p===Ur||p===Gr){_.command(\"function\"==typeof x&&(p===Ur&&(\"texture2d\"===x._reglType||\"framebuffer\"===x._reglType)||p===Gr&&(\"textureCube\"===x._reglType||\"framebufferCube\"===x._reglType)),\"invalid texture for uniform \"+m,e.commandStr);var w=e.link(x._texture||x.color[0]._texture);t(s,\".uniform1i(\",y,\",\",w+\".bind());\"),t.exit(w,\".unbind();\")}else if(p===Rr||p===Mr||p===Wr){_.optional((function(){_.command(me(x),\"invalid matrix for uniform \"+m,e.commandStr),_.command(p===Rr&&4===x.length||p===Mr&&9===x.length||p===Wr&&16===x.length,\"invalid length for matrix uniform \"+m,e.commandStr)}));var A=e.global.def(\"new Float32Array([\"+Array.prototype.slice.call(x)+\"])\"),k=2;p===Mr?k=3:p===Wr&&(k=4),t(s,\".uniformMatrix\",k,\"fv(\",y,\",false,\",A,\");\")}else{switch(p){case Er:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1f\";break;case Tr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2f\";break;case Dr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3f\";break;case jr:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4f\";break;case Vr:1===h?_.commandType(x,\"boolean\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Cr:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Ir:case zr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2i\";break;case Pr:case Fr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3i\";break;case Lr:case Br:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4i\"}h>1?(f+=\"v\",x=e.global.def(\"[\"+Array.prototype.slice.call(x)+\"]\")):x=me(x)?Array.prototype.slice.call(x):x,t(s,\".uniform\",f,\"(\",y,\",\",x,\");\")}continue}g=b.append(e,t)}else{if(!i(fn))continue;g=t.def(u.uniforms,\"[\",r.id(m),\"]\")}p===Ur?(_(!Array.isArray(g),\"must specify a scalar prop for textures\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebuffer\"){',g,\"=\",g,\".color[0];\",\"}\")):p===Gr&&(_(!Array.isArray(g),\"must specify a scalar prop for cube maps\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebufferCube\"){',g,\"=\",g,\".color[0];\",\"}\")),_.optional((function(){function r(r,n){e.assert(t,r,'bad data or missing for uniform \"'+m+'\". '+n)}function n(e,t){1===t&&_(!Array.isArray(g),\"must not specify an array type for uniform\"),r(\"Array.isArray(\"+g+\") && typeof \"+g+'[0]===\" '+e+'\" || typeof '+g+'===\"'+e+'\"',\"invalid type, expected \"+e)}function a(t,n,a){Array.isArray(g)?_(g.length&&g.length%t==0&&g.length<=t*a,\"must have length of \"+(1===a?\"\":\"n * \")+t):r(u.isArrayLike+\"(\"+g+\")&&\"+g+\".length && \"+g+\".length % \"+t+\" === 0 && \"+g+\".length<=\"+t*a,\"invalid vector, should have length of \"+(1===a?\"\":\"n * \")+t,e.commandStr)}function i(t){_(!Array.isArray(g),\"must not specify a value type\"),r(\"typeof \"+g+'===\"function\"&&'+g+'._reglType===\"texture'+(3553===t?\"2d\":\"Cube\")+'\"',\"invalid texture type\",e.commandStr)}switch(p){case Cr:n(\"number\",h);break;case zr:a(2,0,h);break;case Fr:a(3,0,h);break;case Br:a(4,0,h);break;case Er:n(\"number\",h);break;case Tr:a(2,0,h);break;case Dr:a(3,0,h);break;case jr:a(4,0,h);break;case Vr:n(\"boolean\",h);break;case Ir:a(2,0,h);break;case Pr:a(3,0,h);break;case Lr:case Rr:a(4,0,h);break;case Mr:a(9,0,h);break;case Wr:a(16,0,h);break;case Ur:i(3553);break;case Gr:i(34067)}}));var S=1;switch(p){case Ur:case Gr:var O=t.def(g,\"._texture\");t(s,\".uniform1i(\",y,\",\",O,\".bind());\"),t.exit(O,\".unbind();\");continue;case Cr:case Vr:f=\"1i\";break;case zr:case Ir:f=\"2i\",S=2;break;case Fr:case Pr:f=\"3i\",S=3;break;case Br:case Lr:f=\"4i\",S=4;break;case Er:f=\"1f\";break;case Tr:f=\"2f\",S=2;break;case Dr:f=\"3f\",S=3;break;case jr:f=\"4f\",S=4;break;case Rr:f=\"Matrix2fv\";break;case Mr:f=\"Matrix3fv\";break;case Wr:f=\"Matrix4fv\"}if(-1===f.indexOf(\"Matrix\")&&h>1&&(f+=\"v\",S=1),\"M\"===f.charAt(0)){t(s,\".uniform\",f,\"(\",y,\",\");var E=Math.pow(p-Rr+2,2),T=e.global.def(\"new Float32Array(\",E,\")\");Array.isArray(g)?t(\"false,(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g[e]})),\",\",T,\")\"):t(\"false,(Array.isArray(\",g,\")||\",g,\" instanceof Float32Array)?\",g,\":(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g+\"[\"+e+\"]\"})),\",\",T,\")\"),t(\");\")}else if(S>1){for(var D=[],j=[],C=0;C=0\",\"missing vertex count\")}))):(a=u.def(o,\".\",pr),_.optional((function(){e.assert(u,a+\">=0\",\"missing vertex count\")}))),a}();if(\"number\"==typeof p){if(0===p)return}else r(\"if(\",p,\"){\"),r.exit(\"}\");g&&(c=s(br),l=e.instancing);var h=u+\".type\",b=f.elements&&nn(f.elements)&&!f.vaoActive;function v(){function e(){r(l,\".drawElementsInstancedANGLE(\",[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\",c],\");\")}function t(){r(l,\".drawArraysInstancedANGLE(\",[d,m,p,c],\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}function y(){function e(){r(i+\".drawElements(\"+[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\"]+\");\")}function t(){r(i+\".drawArrays(\"+[d,m,p]+\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}g&&(\"number\"!=typeof c||c>=0)?\"string\"==typeof c?(r(\"if(\",c,\">0){\"),v(),r(\"}else if(\",c,\"<0){\"),y(),r(\"}\")):v():y()}function q(e,t,r,n,a){var i=B(),o=i.proc(\"body\",a);return _.optional((function(){i.commandStr=t.commandStr,i.command=i.link(t.commandStr)})),g&&(i.instancing=o.def(i.shared.extensions,\".angle_instanced_arrays\")),e(i,o,r,n),i.compile().body}function Q(e,t,r,n){W(e,t),r.useVAO?r.drawVAO?t(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,t),\");\"):t(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(t(e.shared.vao,\".setVAO(null);\"),G(e,t,r,n.attributes,(function(){return!0}))),H(e,t,r,n.uniforms,(function(){return!0}),!1),N(e,t,t,r)}function Y(e,t,r,n){function a(){return!0}e.batchId=\"a1\",W(e,t),G(e,t,r,n.attributes,a),H(e,t,r,n.uniforms,a,!1),N(e,t,t,r)}function $(e,t,r,n){W(e,t);var a=r.contextDep,i=t.def(),o=t.def();e.shared.props=o,e.batchId=i;var f=e.scope(),u=e.scope();function s(e){return e.contextDep&&a||e.propDep}function c(e){return!s(e)}if(t(f.entry,\"for(\",i,\"=0;\",i,\"<\",\"a1\",\";++\",i,\"){\",o,\"=\",\"a0\",\"[\",i,\"];\",u,\"}\",f.exit),r.needsContext&&P(e,u,r.context),r.needsFramebuffer&&L(e,u,r.framebuffer),M(e,u,r.state,s),r.profile&&s(r.profile)&&U(e,u,r,!1,!0),n)r.useVAO?r.drawVAO?s(r.drawVAO)?u(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,u),\");\"):f(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,f),\");\"):f(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(f(e.shared.vao,\".setVAO(null);\"),G(e,f,r,n.attributes,c),G(e,u,r,n.attributes,s)),H(e,f,r,n.uniforms,c,!1),H(e,u,r,n.uniforms,s,!0),N(e,f,u,r);else{var l=e.global.def(\"{}\"),d=r.shader.progVar.append(e,u),m=u.def(d,\".id\"),p=u.def(l,\"[\",m,\"]\");u(e.shared.gl,\".useProgram(\",d,\".program);\",\"if(!\",p,\"){\",p,\"=\",l,\"[\",m,\"]=\",e.link((function(t){return q(Y,e,r,t,2)})),\"(\",d,\");}\",p,\".call(this,a0[\",i,\"],\",i,\");\")}}function K(e,t,r){var n=t.static[r];if(n&&function(e){if(\"object\"==typeof e&&!me(e)){for(var t=Object.keys(e),r=0;r0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),function(e,t){var n=e.proc(\"scope\",3);e.batchId=\"a2\";var a=e.shared,i=a.current;function o(r){var i=t.shader[r];i&&n.set(a.shader,\".\"+r,i.append(e,n))}P(e,n,t.context),t.framebuffer&&t.framebuffer.append(e,n),tn(Object.keys(t.state)).forEach((function(r){var i=t.state[r].append(e,n);me(i)?i.forEach((function(t,a){n.set(e.next[r],\"[\"+a+\"]\",t)})):n.set(a.next,\".\"+r,i)})),U(e,n,t,!0,!0),[dr,hr,pr,br,mr].forEach((function(r){var i=t.draw[r];i&&n.set(a.draw,\".\"+r,\"\"+i.append(e,n))})),Object.keys(t.uniforms).forEach((function(i){var o=t.uniforms[i].append(e,n);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),n.set(a.uniforms,\"[\"+r.id(i)+\"]\",o)})),Object.keys(t.attributes).forEach((function(r){var a=t.attributes[r].append(e,n),i=e.scopeAttrib(r);Object.keys(new b).forEach((function(e){n.set(i,\".\"+e,a[e])}))})),t.scopeVAO&&n.set(a.vao,\".targetVAO\",t.scopeVAO.append(e,n)),o(cr),o(lr),Object.keys(t.state).length>0&&(n(i,\".dirty=true;\"),n.exit(i,\".dirty=true;\")),n(\"a1(\",e.shared.context,\",a0,\",e.batchId,\");\")}(f,u),function(e,t){var r=e.proc(\"batch\",2);e.batchId=\"0\",W(e,r);var n=!1,a=!0;Object.keys(t.context).forEach((function(e){n=n||t.context[e].propDep})),n||(P(e,r,t.context),a=!1);var i=t.framebuffer,o=!1;function f(e){return e.contextDep&&n||e.propDep}i?(i.propDep?n=o=!0:i.contextDep&&n&&(o=!0),o||L(e,r,i)):L(e,r,null),t.state.viewport&&t.state.viewport.propDep&&(n=!0),R(e,r,t),M(e,r,t.state,(function(e){return!f(e)})),t.profile&&f(t.profile)||U(e,r,t,!1,\"a1\"),t.contextDep=n,t.needsContext=a,t.needsFramebuffer=o;var u=t.shader.progVar;if(u.contextDep&&n||u.propDep)$(e,r,t,null);else{var s=u.append(e,r);if(r(e.shared.gl,\".useProgram(\",s,\".program);\"),t.shader.program)$(e,r,t,t.shader.program);else{r(e.shared.vao,\".setVAO(null);\");var c=e.global.def(\"{}\"),l=r.def(s,\".id\"),d=r.def(c,\"[\",l,\"]\");r(e.cond(d).then(d,\".call(this,a0,a1);\").else(d,\"=\",c,\"[\",l,\"]=\",e.link((function(r){return q($,e,t,r,2)})),\"(\",s,\");\",d,\".call(this,a0,a1);\"))}}Object.keys(t.state).length>0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),t(f.compile(),{destroy:function(){u.shader.program.destroy()}})}}}var sn=function(e,t){if(!t.ext_disjoint_timer_query)return null;var r=[];function n(e){r.push(e)}var a=[];function i(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var o=[];function f(e){o.push(e)}var u=[];function s(e,t,r){var n=o.pop()||new i;n.startQueryIndex=e,n.endQueryIndex=t,n.sum=0,n.stats=r,u.push(n)}var c=[],l=[];return{beginQuery:function(e){var n=r.pop()||t.ext_disjoint_timer_query.createQueryEXT();t.ext_disjoint_timer_query.beginQueryEXT(35007,n),a.push(n),s(a.length-1,a.length,e)},endQuery:function(){t.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:s,update:function(){var e,r,i=a.length;if(0!==i){l.length=Math.max(l.length,i+1),c.length=Math.max(c.length,i+1),c[0]=0,l[0]=0;var o=0;for(e=0,r=0;r0)if(Array.isArray(r[0])){f=J(r);for(var c=1,l=1;l0)if(\"number\"==typeof t[0]){var i=L.allocType(d.dtype,t.length);ne(i,t),p(i,a),L.freeType(i)}else if(Array.isArray(t[0])||e(t[0])){n=J(t);var o=K(t,n,d.dtype);p(o,a),L.freeType(o)}else _.raise(\"invalid buffer data\")}else if(G(t)){n=t.shape;var f=t.stride,u=0,s=0,c=0,l=0;1===n.length?(u=n[0],s=1,c=f[0],l=0):2===n.length?(u=n[0],s=n[1],c=f[0],l=f[1]):_.raise(\"invalid shape\");var h=Array.isArray(t.data)?d.dtype:re(t.data),b=L.allocType(h,u*s);ae(b,t.data,u,s,c,l,t.offset),p(b,a),L.freeType(b)}else _.raise(\"invalid data for buffer subdata\");return m},n.profile&&(m.stats=d.stats),m.destroy=function(){l(d)},m},createStream:function(e,t){var r=u.pop();return r||(r=new f(e)),r.bind(),c(r,t,35040,0,1,!1),r},destroyStream:function(e){u.push(e)},clear:function(){H(o).forEach(l),u.forEach(l)},getBuffer:function(e){return e&&e._buffer instanceof f?e._buffer:null},restore:function(){H(o).forEach((function(e){e.buffer=t.createBuffer(),t.bindBuffer(e.type,e.buffer),t.bufferData(e.type,e.persistentData||e.byteLength,e.usage)}))},_initBuffer:c}}(a,l,n,(function(e){return A.destroyBuffer(e)})),w=function(t,r,n,a){var i={},o=0,f={uint8:oe,uint16:fe};function u(e){this.id=o++,i[this.id]=this,this.buffer=e,this.primType=4,this.vertCount=0,this.type=0}r.oes_element_index_uint&&(f.uint32=ue),u.prototype.bind=function(){this.buffer.bind()};var s=[];function c(a,i,o,f,u,s,c){var l;if(a.buffer.bind(),i){var d=c;c||e(i)&&(!G(i)||e(i.data))||(d=r.oes_element_index_uint?ue:fe),n._initBuffer(a.buffer,i,o,d,3)}else t.bufferData(se,s,o),a.buffer.dtype=l||oe,a.buffer.usage=o,a.buffer.dimension=3,a.buffer.byteLength=s;if(l=c,!c){switch(a.buffer.dtype){case oe:case 5120:l=oe;break;case fe:case 5122:l=fe;break;case ue:case 5124:l=ue;break;default:_.raise(\"unsupported type for element array\")}a.buffer.dtype=l}a.type=l,_(l!==ue||!!r.oes_element_index_uint,\"32 bit element buffers not supported, enable oes_element_index_uint first\");var m=u;m<0&&(m=a.buffer.byteLength,l===fe?m>>=1:l===ue&&(m>>=2)),a.vertCount=m;var p=f;if(f<0){p=4;var h=a.buffer.dimension;1===h&&(p=0),2===h&&(p=1),3===h&&(p=4)}a.primType=p}function l(e){a.elementsCount--,_(null!==e.buffer,\"must not double destroy elements\"),delete i[e.id],e.buffer.destroy(),e.buffer=null}return{create:function(t,r){var i=n.create(null,se,!0),o=new u(i._buffer);function s(t){if(t)if(\"number\"==typeof t)i(t),o.primType=4,o.vertCount=0|t,o.type=oe;else{var r=null,n=35044,a=-1,u=-1,l=0,d=0;Array.isArray(t)||e(t)||G(t)?r=t:(_.type(t,\"object\",\"invalid arguments for elements\"),\"data\"in t&&(r=t.data,_(Array.isArray(r)||e(r)||G(r),\"invalid data for element buffer\")),\"usage\"in t&&(_.parameter(t.usage,$,\"invalid element buffer usage\"),n=$[t.usage]),\"primitive\"in t&&(_.parameter(t.primitive,ie,\"invalid element buffer primitive\"),a=ie[t.primitive]),\"count\"in t&&(_(\"number\"==typeof t.count&&t.count>=0,\"invalid vertex count for elements\"),u=0|t.count),\"type\"in t&&(_.parameter(t.type,f,\"invalid buffer type\"),d=f[t.type]),\"length\"in t?l=0|t.length:(l=u,d===fe||5122===d?l*=2:d!==ue&&5124!==d||(l*=4))),c(o,r,n,a,u,l,d)}else i(),o.primType=4,o.vertCount=0,o.type=oe;return s}return a.elementsCount++,s(t),s._reglType=\"elements\",s._elements=o,s.subdata=function(e,t){return i.subdata(e,t),s},s.destroy=function(){l(o)},s},createStream:function(e){var t=s.pop();return t||(t=new u(n.create(null,se,!0,!1)._buffer)),c(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){s.push(e)},getElements:function(e){return\"function\"==typeof e&&e._elements instanceof u?e._elements:null},clear:function(){H(i).forEach(l)}}}(a,d,x,l),A=function(t,r,n,a,i,o,f){for(var u=n.maxAttributes,s=new Array(u),c=0;c{for(var e=Object.keys(t),r=0;r=0,'invalid option for vao: \"'+e[r]+'\" valid options are '+Et)})),_(Array.isArray(a),\"attributes must be an array\")}_(a.length0,\"must specify at least one attribute\");var c={},l=n.attributes;l.length=a.length;for(var d=0;d=b.byteLength?m.subdata(b):(m.destroy(),n.buffers[d]=null)),n.buffers[d]||(m=n.buffers[d]=i.create(p,34962,!1,!0)),h.buffer=i.getBuffer(m),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1,c[d]=1):i.getBuffer(p)?(h.buffer=i.getBuffer(p),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1):i.getBuffer(p.buffer)?(h.buffer=i.getBuffer(p.buffer),h.size=0|(+p.size||h.buffer.dimension),h.normalized=!!p.normalized||!1,\"type\"in p?(_.parameter(p.type,X,\"invalid buffer type\"),h.type=X[p.type]):h.type=h.buffer.dtype,h.offset=0|(p.offset||0),h.stride=0|(p.stride||0),h.divisor=0|(p.divisor||0),h.state=1,_(h.size>=1&&h.size<=4,\"size must be between 1 and 4\"),_(h.offset>=0,\"invalid offset\"),_(h.stride>=0&&h.stride<=255,\"stride must be between 0 and 255\"),_(h.divisor>=0,\"divisor must be positive\"),_(!h.divisor||!!r.angle_instanced_arrays,\"ANGLE_instanced_arrays must be enabled to use divisor\")):\"x\"in p?(_(d>0,\"first attribute must not be a constant\"),h.x=+p.x||0,h.y=+p.y||0,h.z=+p.z||0,h.w=+p.w||0,h.state=2):_(!1,\"invalid attribute spec for location \"+d)}for(var v=0;v1)for(var v=0;v1&&(y=y.replace(\"[0]\",\"\")),u(b,new f(y,r.id(y),e.getUniformLocation(m,y),c))}var x=e.getProgramParameter(m,35721);a.profile&&(t.stats.attributesCount=x);var w=t.attributes;for(o=0;oe&&(e=t.stats.uniformsCount)})),e},n.getMaxAttributesCount=function(){var e=0;return l.forEach((function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)})),e}),{clear:function(){var t=e.deleteShader.bind(e);H(i).forEach(t),i={},H(o).forEach(t),o={},l.forEach((function(t){e.deleteProgram(t.program)})),l.length=0,c={},n.shaderCount=0},program:function(r,a,f,u){_.command(r>=0,\"missing vertex shader\",f),_.command(a>=0,\"missing fragment shader\",f);var s=c[a];s||(s=c[a]={});var d=s[r];if(d&&(d.refCount++,!u))return d;var h=new m(a,r);return n.shaderCount++,p(h,f,u),d||(s[r]=h),l.push(h),t(h,{destroy:function(){if(h.refCount--,h.refCount<=0){e.deleteProgram(h.program);var t=l.indexOf(h);l.splice(t,1),n.shaderCount--}s[h.vertId].refCount<=0&&(e.deleteShader(o[h.vertId]),delete o[h.vertId],delete c[h.fragId][h.vertId]),Object.keys(c[h.fragId]).length||(e.deleteShader(i[h.fragId]),delete i[h.fragId],delete c[h.fragId])}})},restore:function(){i={},o={};for(var e=0;e=2,\"invalid renderbuffer shape\"),f=0|m[0],u=0|m[1]}else\"radius\"in d&&(f=u=0|d.radius),\"width\"in d&&(f=0|d.width),\"height\"in d&&(u=0|d.height);\"format\"in d&&(_.parameter(d.format,i,\"invalid renderbuffer format\"),s=i[d.format])}else\"number\"==typeof t?(f=0|t,u=\"number\"==typeof n?0|n:f):t?_.raise(\"invalid arguments to renderbuffer constructor\"):f=u=1;if(_(f>0&&u>0&&f<=r.maxRenderbufferSize&&u<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),f!==c.width||u!==c.height||s!==c.format)return l.width=c.width=f,l.height=c.height=u,c.format=s,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,s,f,u),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height)),l.format=o[c.format],l}return u[c.id]=c,n.renderbufferCount++,l(t,f),l.resize=function(t,n){var i=0|t,o=0|n||i;return i===c.width&&o===c.height||(_(i>0&&o>0&&i<=r.maxRenderbufferSize&&o<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),l.width=c.width=i,l.height=c.height=o,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,c.format,i,o),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height))),l},l._reglType=\"renderbuffer\",l._renderbuffer=c,a.profile&&(l.stats=c.stats),l.destroy=function(){c.decRef()},l},clear:function(){H(u).forEach(c)},restore:function(){H(u).forEach((function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(mt,t.renderbuffer),e.renderbufferStorage(mt,t.format,t.width,t.height)})),e.bindRenderbuffer(mt,null)}}}(a,d,y,l,n),E=function(e,r,n,a,i,o){var f={cur:null,next:null,dirty:!1,setFBO:null},u=[\"rgba\"],s=[\"rgba4\",\"rgb565\",\"rgb5 a1\"];r.ext_srgb&&s.push(\"srgba\"),r.ext_color_buffer_half_float&&s.push(\"rgba16f\",\"rgb16f\"),r.webgl_color_buffer_float&&s.push(\"rgba32f\");var c=[\"uint8\"];function l(e,t,r){this.target=e,this.texture=t,this.renderbuffer=r;var n=0,a=0;t?(n=t.width,a=t.height):r&&(n=r.width,a=r.height),this.width=n,this.height=a}function d(e){e&&(e.texture&&e.texture._texture.decRef(),e.renderbuffer&&e.renderbuffer._renderbuffer.decRef())}function m(e,t,r){if(e)if(e.texture){var n=e.texture._texture,a=Math.max(1,n.width),i=Math.max(1,n.height);_(a===t&&i===r,\"inconsistent width/height for supplied texture\"),n.refCount+=1}else{var o=e.renderbuffer._renderbuffer;_(o.width===t&&o.height===r,\"inconsistent width/height for renderbuffer\"),o.refCount+=1}}function p(t,r){r&&(r.texture?e.framebufferTexture2D(vt,t,r.target,r.texture._texture.texture,0):e.framebufferRenderbuffer(vt,t,gt,r.renderbuffer._renderbuffer.renderbuffer))}function h(e){var t=yt,r=null,n=null,a=e;\"object\"==typeof e&&(a=e.data,\"target\"in e&&(t=0|e.target)),_.type(a,\"function\",\"invalid attachment data\");var i=a._reglType;return\"texture2d\"===i?(r=a,_(t===yt)):\"textureCube\"===i?(r=a,_(t>=xt&&t<34075,\"invalid cube map target\")):\"renderbuffer\"===i?(n=a,t=gt):_.raise(\"invalid regl object for attachment\"),new l(t,r,n)}function b(e,t,r,n,o){if(r){var f=a.create2D({width:e,height:t,format:n,type:o});return f._texture.refCount=0,new l(yt,f,null)}var u=i.create({width:e,height:t,format:n});return u._renderbuffer.refCount=0,new l(gt,null,u)}function v(e){return e&&(e.texture||e.renderbuffer)}function g(e,t,r){e&&(e.texture?e.texture.resize(t,r):e.renderbuffer&&e.renderbuffer.resize(t,r),e.width=t,e.height=r)}r.oes_texture_half_float&&c.push(\"half float\",\"float16\"),r.oes_texture_float&&c.push(\"float\",\"float32\");var y=0,x={};function w(){this.id=y++,x[this.id]=this,this.framebuffer=e.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function A(e){e.colorAttachments.forEach(d),d(e.depthAttachment),d(e.stencilAttachment),d(e.depthStencilAttachment)}function k(t){var r=t.framebuffer;_(r,\"must not double destroy framebuffer\"),e.deleteFramebuffer(r),t.framebuffer=null,o.framebufferCount--,delete x[t.id]}function S(t){var r;e.bindFramebuffer(vt,t.framebuffer);var a=t.colorAttachments;for(r=0;r=2,\"invalid shape for framebuffer\"),o=z[0],d=z[1]}else\"radius\"in C&&(o=d=C.radius),\"width\"in C&&(o=C.width),\"height\"in C&&(d=C.height);(\"color\"in C||\"colors\"in C)&&(y=C.color||C.colors,Array.isArray(y)&&_(1===y.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),y||(\"colorCount\"in C&&(O=0|C.colorCount,_(O>0,\"invalid color buffer count\")),\"colorTexture\"in C&&(x=!!C.colorTexture,w=\"rgba4\"),\"colorType\"in C&&(k=C.colorType,x?(_(r.oes_texture_float||!(\"float\"===k||\"float32\"===k),\"you must enable OES_texture_float in order to use floating point framebuffer objects\"),_(r.oes_texture_half_float||!(\"half float\"===k||\"float16\"===k),\"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects\")):\"half float\"===k||\"float16\"===k?(_(r.ext_color_buffer_half_float,\"you must enable EXT_color_buffer_half_float to use 16-bit render buffers\"),w=\"rgba16f\"):\"float\"!==k&&\"float32\"!==k||(_(r.webgl_color_buffer_float,\"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers\"),w=\"rgba32f\"),_.oneOf(k,c,\"invalid color type\")),\"colorFormat\"in C&&(w=C.colorFormat,u.indexOf(w)>=0?x=!0:s.indexOf(w)>=0?x=!1:_.optional((function(){x?_.oneOf(C.colorFormat,u,\"invalid color format for texture\"):_.oneOf(C.colorFormat,s,\"invalid color format for renderbuffer\")})))),(\"depthTexture\"in C||\"depthStencilTexture\"in C)&&(j=!(!C.depthTexture&&!C.depthStencilTexture),_(!j||r.webgl_depth_texture,\"webgl_depth_texture extension not supported\")),\"depth\"in C&&(\"boolean\"==typeof C.depth?p=C.depth:(E=C.depth,g=!1)),\"stencil\"in C&&(\"boolean\"==typeof C.stencil?g=C.stencil:(T=C.stencil,p=!1)),\"depthStencil\"in C&&(\"boolean\"==typeof C.depthStencil?p=g=C.depthStencil:(D=C.depthStencil,p=!1,g=!1))}else o=d=1;var F=null,B=null,V=null,I=null;if(Array.isArray(y))F=y.map(h);else if(y)F=[h(y)];else for(F=new Array(O),a=0;a=0||F[a].renderbuffer&&kt.indexOf(F[a].renderbuffer._renderbuffer.format)>=0,\"framebuffer color attachment \"+a+\" is invalid\"),F[a]&&F[a].texture){var L=At[F[a].texture._texture.format]*_t[F[a].texture._texture.type];null===P?P=L:_(P===L,\"all color attachments much have the same number of bits per pixel.\")}return m(B,o,d),_(!B||B.texture&&6402===B.texture._texture.format||B.renderbuffer&&33189===B.renderbuffer._renderbuffer.format,\"invalid depth attachment for framebuffer object\"),m(V,o,d),_(!V||V.renderbuffer&&36168===V.renderbuffer._renderbuffer.format,\"invalid stencil attachment for framebuffer object\"),m(I,o,d),_(!I||I.texture&&34041===I.texture._texture.format||I.renderbuffer&&34041===I.renderbuffer._renderbuffer.format,\"invalid depth-stencil attachment for framebuffer object\"),A(i),i.width=o,i.height=d,i.colorAttachments=F,i.depthAttachment=B,i.stencilAttachment=V,i.depthStencilAttachment=I,l.color=F.map(v),l.depth=v(B),l.stencil=v(V),l.depthStencil=v(I),l.width=i.width,l.height=i.height,S(i),l}return o.framebufferCount++,l(e,a),t(l,{resize:function(e,t){_(f.next!==i,\"can not resize a framebuffer which is currently in use\");var r=Math.max(0|e,1),n=Math.max(0|t||r,1);if(r===i.width&&n===i.height)return l;for(var a=i.colorAttachments,o=0;o=2,\"invalid shape for framebuffer\"),_(g[0]===g[1],\"cube framebuffer must be square\"),d=g[0]}else\"radius\"in v&&(d=0|v.radius),\"width\"in v?(d=0|v.width,\"height\"in v&&_(v.height===d,\"must be square\")):\"height\"in v&&(d=0|v.height);(\"color\"in v||\"colors\"in v)&&(m=v.color||v.colors,Array.isArray(m)&&_(1===m.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),m||(\"colorCount\"in v&&(b=0|v.colorCount,_(b>0,\"invalid color buffer count\")),\"colorType\"in v&&(_.oneOf(v.colorType,c,\"invalid color type\"),h=v.colorType),\"colorFormat\"in v&&(p=v.colorFormat,_.oneOf(v.colorFormat,u,\"invalid color format for texture\"))),\"depth\"in v&&(l.depth=v.depth),\"stencil\"in v&&(l.stencil=v.stencil),\"depthStencil\"in v&&(l.depthStencil=v.depthStencil)}else d=1;if(m)if(Array.isArray(m))for(s=[],n=0;n0&&(l.depth=i[0].depth,l.stencil=i[0].stencil,l.depthStencil=i[0].depthStencil),i[n]?i[n](l):i[n]=O(l)}return t(o,{width:d,height:d,color:s})}return o(e),t(o,{faces:i,resize:function(e){var t,r=0|e;if(_(r>0&&r<=n.maxCubeMapSize,\"invalid radius for cube fbo\"),r===o.width)return o;var a=o.color;for(t=0;t=0;--e){var t=I[e];t&&t(v,null,0)}a.flush(),m&&m.update()}function ce(){!Q&&I.length>0&&(Q=j.next(Y))}function le(){Q&&(j.cancel(Y),Q=null)}function de(e){e.preventDefault(),o=!0,le(),P.forEach((function(e){e()}))}function me(e){a.getError(),o=!1,f.restore(),k.restore(),x.restore(),S.restore(),O.restore(),E.restore(),A.restore(),m&&m.restore(),T.procs.refresh(),ce(),N.forEach((function(e){e()}))}function pe(e){function r(e,t){var r={},n={};return Object.keys(e).forEach((function(a){var i=e[a];if(D.isDynamic(i))n[a]=D.unbox(i,a);else{if(t&&Array.isArray(i))for(var o=0;o0)return l.call(this,function(e){for(;m.length=0,\"cannot cancel a frame twice\"),I[t]=function e(){var t=dn(I,e);I[t]=I[I.length-1],I.length-=1,I.length<=0&&le()}}}}function ge(){var e=F.viewport,t=F.scissor_box;e[0]=e[1]=t[0]=t[1]=0,v.viewportWidth=v.framebufferWidth=v.drawingBufferWidth=e[2]=t[2]=a.drawingBufferWidth,v.viewportHeight=v.framebufferHeight=v.drawingBufferHeight=e[3]=t[3]=a.drawingBufferHeight}function ye(){v.tick+=1,v.time=we(),ge(),T.procs.poll()}function xe(){S.refresh(),ge(),T.procs.refresh(),m&&m.update()}function we(){return(C()-p)/1e3}xe();var Ae=t(pe,{clear:function(e){if(_(\"object\"==typeof e&&e,\"regl.clear() takes an object as input\"),\"framebuffer\"in e)if(e.framebuffer&&\"framebufferCube\"===e.framebuffer_reglType)for(var r=0;r<6;++r)he(t({framebuffer:e.framebuffer.faces[r]},e),be);else he(e,be);else be(0,e)},prop:D.define.bind(null,1),context:D.define.bind(null,2),this:D.define.bind(null,3),draw:pe({}),buffer:function(e){return x.create(e,34962,!1,!1)},elements:function(e){return w.create(e,!1)},texture:S.create2D,cube:S.createCube,renderbuffer:O.create,framebuffer:E.create,framebufferCube:E.createCube,vao:A.createVAO,attributes:i,frame:ve,on:function(e,t){var r;switch(_.type(t,\"function\",\"listener callback must be a function\"),e){case\"frame\":return ve(t);case\"lost\":r=P;break;case\"restore\":r=N;break;case\"destroy\":r=q;break;default:_.raise(\"invalid event, must be one of frame,lost,restore,destroy\")}return r.push(t),{cancel:function(){for(var e=0;e=0},read:z,destroy:function(){I.length=0,le(),V&&(V.removeEventListener(cn,de),V.removeEventListener(ln,me)),k.clear(),E.clear(),O.clear(),A.clear(),S.clear(),w.clear(),x.clear(),m&&m.clear(),q.forEach((function(e){e()}))},_gl:a,_refresh:xe,poll:function(){ye(),m&&m.update()},now:we,stats:l});return n.onDone(null,Ae),Ae}},\"object\"==typeof r&&void 0!==t?t.exports=o():\"function\"==typeof define&&define.amd?define(o):i.createREGL=o()},\n", + " 413: function _(t,e,a,s,r){s();const n=t(414),_=t(9),o=t(12);class c{constructor(t){this._regl=t,this._map=new Map}_create_texture(t){const e=t.length;let a=0;const s=[];let r=0,_=0;for(let n=0;nc[f+1]&&f++;const s=t[f],n=c[f]+.5*s;let o=.5*s-Math.abs(a-n);f%2==1&&(o=-o),m[e]=Math.round(255*(o-r)/(_-r))}return[[a,u,r,_],this._regl.texture({shape:[l,1,1],data:m,wrapS:\"repeat\",format:\"alpha\",type:\"uint8\",mag:\"linear\",min:\"linear\"})]}_get_key(t){return t.join(\",\")}_get_or_create(t){const e=this._get_key(t);let a=this._map.get(e);if(null==a){const s=(0,n.gcd)(t);if(s>1){t=(0,o.map)(t,(t=>t/s)),a=this._get_or_create(t);const[r,n,_]=a;a=[r,n,s],this._map.set(e,a)}else{const[r,n]=this._create_texture(t);a=[r,n,s],this._map.set(e,a)}}return a}get(t){return t.length%2==1&&(t=(0,_.concat)([t,t])),this._get_or_create(t)}}a.DashCache=c,c.__name__=\"DashCache\"},\n", + " 414: function _(n,t,e,r,o){function u(n,t){let e,r;n>t?(e=n,r=t):(e=t,r=n);let o=e%r;for(;0!=o;)e=r,r=o,o=e%r;return r}r(),e.gcd=function(n){let t=n[0];for(let e=1;e= 0.0 ? 1.0 : -1.0;\\n}\\n\\nvoid main()\\n{\\n if (a_show_curr < 0.5) {\\n // Line segment has non-finite value at one or both ends, do not render.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n const float min_miter_factor_round_join_mesh = sqrt(2.0);\\n\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n vec2 segment_along = normalize(a_point_end - a_point_start); // unit vector.\\n v_segment_length = length(a_point_end - a_point_start);\\n vec2 segment_right = right_vector(segment_along); // unit vector.\\n vec2 xy;\\n\\n bool miter_too_large_start = false;\\n bool miter_too_large_end = false;\\n\\n v_coords.y = a_position.y*halfwidth; // Overwritten later for end points.\\n\\n bool has_start_cap = a_show_prev < 0.5;\\n bool has_end_cap = a_show_next < 0.5;\\n\\n vec2 point_normal_start;\\n float cos_theta_start;\\n float turn_right_start;\\n if (has_start_cap)\\n point_normal_start = segment_right;\\n else {\\n vec2 prev_right = right_vector(normalize(a_point_start - a_point_prev));\\n point_normal_start = normalize(segment_right + prev_right);\\n cos_theta_start = dot(segment_right, point_normal_start); // Always +ve\\n turn_right_start = sign_no_zero(dot(segment_right, a_point_prev - a_point_start));\\n }\\n\\n vec2 point_normal_end;\\n float cos_theta_end;\\n float turn_right_end;\\n if (has_end_cap)\\n point_normal_end = segment_right;\\n else {\\n vec2 next_right = right_vector(normalize(a_point_next - a_point_end));\\n point_normal_end = normalize(segment_right + next_right);\\n cos_theta_end = dot(segment_right, point_normal_end); // Always +ve\\n turn_right_end = sign_no_zero(dot(segment_right, a_point_next - a_point_end));\\n }\\n\\n float miter_factor_start = 1.0 / dot(segment_right, point_normal_start);\\n float miter_factor_end = 1.0 / dot(segment_right, point_normal_end);\\n if (join_type == miter_join) {\\n // If miter too large, use bevel join instead.\\n miter_too_large_start = (miter_factor_start > u_miter_limit);\\n miter_too_large_end = (miter_factor_end > u_miter_limit);\\n }\\n\\n float sign_at_start = -sign(a_position.x); // +ve at segment start, -ve end.\\n vec2 point = sign_at_start > 0.0 ? a_point_start : a_point_end;\\n vec2 adjacent_point =\\n sign_at_start > 0.0 ? (has_start_cap ? a_point_start : a_point_prev)\\n : (has_end_cap ? a_point_end : a_point_next);\\n\\n if ( (has_start_cap && sign_at_start > 0.0) ||\\n (has_end_cap && sign_at_start < 0.0) ) {\\n // Cap.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (cap_type == butt_cap)\\n xy -= sign_at_start*0.5*u_antialias*segment_along;\\n else\\n xy -= sign_at_start*halfwidth*segment_along;\\n }\\n else { // Join.\\n // +ve if turning to right, -ve if to left.\\n float turn_sign = sign_at_start > 0.0 ? turn_right_start : turn_right_end;\\n\\n vec2 adjacent_right = sign_at_start*normalize(right_vector(point - adjacent_point));\\n vec2 point_right = normalize(segment_right + adjacent_right);\\n float miter_factor = sign_at_start > 0.0 ? miter_factor_start : miter_factor_end;\\n bool miter_too_large = sign_at_start > 0.0 ? miter_too_large_start : miter_too_large_end;\\n\\n if (abs(a_position.x) > 1.5) {\\n // Outer point, meets prev/next segment.\\n float factor; // multiplied by halfwidth...\\n\\n if (join_type == bevel_join || (join_type == miter_join && miter_too_large))\\n factor = 1.0 / miter_factor; // cos_theta.\\n else if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh)\\n factor = 1.0;\\n else // miter, or round (small angle only).\\n factor = miter_factor;\\n\\n xy = point - point_right*(halfwidth*turn_sign*factor);\\n v_coords.y = turn_sign*halfwidth*factor / miter_factor;\\n }\\n else if (turn_sign*a_position.y < 0.0) {\\n // Inner point, meets prev/next segment.\\n float len = halfwidth*miter_factor;\\n float segment_len = v_segment_length;\\n float adjacent_len = distance(point, adjacent_point);\\n\\n if (len <= min(segment_len, adjacent_len))\\n // Normal behaviour.\\n xy = point - point_right*(len*a_position.y);\\n else\\n // For short wide line segments the inner point using the above\\n // calculation can be outside of the line. Here clipping it.\\n xy = point + segment_right*(halfwidth*turn_sign);\\n }\\n else {\\n // Point along outside edge.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh) {\\n xy = line_intersection(xy, segment_along,\\n point - turn_sign*point_right*halfwidth,\\n right_vector(point_right));\\n }\\n }\\n }\\n\\n vec2 pos = xy + 0.5; // Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n\\n v_coords.x = dot(xy - a_point_start, segment_along);\\n v_flags = float(int(has_start_cap) +\\n 2*int(has_end_cap) +\\n 4*int(miter_too_large_start) +\\n 8*int(miter_too_large_end));\\n v_cos_theta_turn_right_start = cos_theta_start*turn_right_start;\\n v_cos_theta_turn_right_end = cos_theta_end*turn_right_end;\\n\\n#ifdef DASHED\\n v_length_so_far = a_length_so_far;\\n#endif\\n}\\n\"},\n", + " 416: function _(n,t,a,i,e){i();a.default=\"\\nprecision mediump float;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\nuniform float u_linewidth;\\nuniform float u_antialias;\\nuniform float u_line_join;\\nuniform float u_line_cap;\\nuniform vec4 u_line_color;\\n#ifdef DASHED\\nuniform sampler2D u_dash_tex;\\nuniform vec4 u_dash_tex_info;\\nuniform float u_dash_scale;\\nuniform float u_dash_offset;\\n#endif\\n\\nvarying float v_segment_length;\\nvarying vec2 v_coords;\\nvarying float v_flags;\\nvarying float v_cos_theta_turn_right_start;\\nvarying float v_cos_theta_turn_right_end;\\n#ifdef DASHED\\nvarying float v_length_so_far;\\n#endif\\n\\nfloat cross_z(in vec2 v0, in vec2 v1)\\n{\\n return v0.x*v1.y - v0.y*v1.x;\\n}\\n\\nfloat point_line_side(in vec2 point, in vec2 start, in vec2 end)\\n{\\n // +ve if point to right of line.\\n // Alternatively could do dot product with right_vector.\\n return cross_z(point - start, end - start);\\n}\\n\\nfloat point_line_distance(in vec2 point, in vec2 start, in vec2 end)\\n{\\n return point_line_side(point, start, end) / distance(start, end);\\n}\\n\\nvec2 right_vector(in vec2 v)\\n{\\n return vec2(v.y, -v.x);\\n}\\n\\nfloat bevel_join_distance(in float sign_start, in float halfwidth)\\n{\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n float distance_along = sign_start > 0.0 ? 0.0 : v_segment_length;\\n\\n // In v_coords reference frame (x is along segment, y across).\\n vec2 line_start = vec2(distance_along, halfwidth*turn_right);\\n float sin_alpha = cos_theta;\\n float cos_alpha = sqrt(1.0 - sin_alpha*sin_alpha);\\n vec2 line_along = vec2(-sign_start*turn_right*sin_alpha, -cos_alpha);\\n\\n return halfwidth + sign_start*point_line_distance(\\n v_coords, line_start, line_start+line_along);\\n}\\n\\nfloat cap(in int cap_type, in float x, in float y)\\n{\\n // x is distance along segment in direction away from end of segment,\\n // y is distance across segment.\\n if (cap_type == butt_cap)\\n return max(0.5*u_linewidth - x, abs(y));\\n else if (cap_type == square_cap)\\n return max(-x, abs(y));\\n else // cap_type == round_cap\\n return distance(vec2(min(x, 0.0), y), vec2(0.0, 0.0));\\n}\\n\\nfloat distance_to_alpha(in float dist)\\n{\\n return 1.0 - smoothstep(0.5*(u_linewidth - u_antialias),\\n 0.5*(u_linewidth + u_antialias), dist);\\n}\\n\\n#ifdef DASHED\\nfloat dash_distance(in float x)\\n{\\n // x is in direction of v_coords.x, i.e. along segment.\\n float tex_length = u_dash_tex_info.x;\\n float tex_offset = u_dash_tex_info.y;\\n float tex_dist_min = u_dash_tex_info.z;\\n float tex_dist_max = u_dash_tex_info.w;\\n\\n // Apply offset.\\n x += v_length_so_far - u_dash_scale*tex_offset + u_dash_offset;\\n\\n // Interpolate within texture to obtain distance to dash.\\n float dist = texture2D(u_dash_tex,\\n vec2(x / (tex_length*u_dash_scale), 0.0)).a;\\n\\n // Scale distance within min and max limits.\\n dist = tex_dist_min + dist*(tex_dist_max - tex_dist_min);\\n\\n return u_dash_scale*dist;\\n}\\n\\nfloat clip_dash_distance(in float x, in float offset, in float sign_along)\\n{\\n // Return clipped dash distance, sign_along is +1.0 if looking forward\\n // into next segment and -1.0 if looking backward into previous segment.\\n float half_antialias = 0.5*u_antialias;\\n\\n if (sign_along*x > half_antialias) {\\n // Outside antialias region, use usual dash distance.\\n return dash_distance(offset + x);\\n }\\n else {\\n // Inside antialias region.\\n // Dash distance at edge of antialias region clipped to half_antialias.\\n float edge_dist = min(dash_distance(offset + sign_along*half_antialias), half_antialias);\\n\\n // Physical distance from dash distance at edge of antialias region.\\n return edge_dist + sign_along*x - half_antialias;\\n }\\n}\\n\\nmat2 rotation_matrix(in float sign_start)\\n{\\n // Rotation matrix for v_coords from this segment to prev or next segment.\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n\\n float sin_theta = sqrt(1.0 - cos_theta*cos_theta)*sign_start*turn_right;\\n float cos_2theta = 2.0*cos_theta*cos_theta - 1.0;\\n float sin_2theta = 2.0*sin_theta*cos_theta;\\n return mat2(cos_2theta, -sin_2theta, sin_2theta, cos_2theta);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n float half_antialias = 0.5*u_antialias;\\n\\n // Extract flags.\\n int flags = int(v_flags + 0.5);\\n bool miter_too_large_end = (flags / 8 > 0);\\n flags -= 8*int(miter_too_large_end);\\n bool miter_too_large_start = (flags / 4 > 0);\\n flags -= 4*int(miter_too_large_start);\\n bool has_end_cap = (flags / 2 > 0);\\n flags -= 2*int(has_end_cap);\\n bool has_start_cap = flags > 0;\\n\\n float dist = v_coords.y; // For straight segment, and miter join.\\n\\n // Along-segment coords with respect to end of segment, +ve inside segment\\n // so equivalent to v_coords.x at start of segment.\\n float end_coords_x = v_segment_length - v_coords.x;\\n\\n if (v_coords.x <= half_antialias) {\\n // At start of segment, either cap or join.\\n if (has_start_cap)\\n dist = cap(cap_type, v_coords.x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(0.0, 0.0));\\n else if (join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_start))\\n dist = max(abs(dist), bevel_join_distance(1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n else if (end_coords_x <= half_antialias) {\\n // At end of segment, either cap or join.\\n if (has_end_cap)\\n dist = cap(cap_type, end_coords_x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(v_segment_length, 0));\\n else if ((join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_end)))\\n dist = max(abs(dist), bevel_join_distance(-1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n\\n float alpha = distance_to_alpha(abs(dist));\\n\\n#ifdef DASHED\\n if (u_dash_tex_info.x >= 0.0) {\\n // Dashes in straight segments (outside of joins) are easily calculated.\\n dist = dash_distance(v_coords.x);\\n\\n if (!has_start_cap && cap_type == butt_cap) {\\n if (v_coords.x < half_antialias) {\\n // Outer of start join rendered solid color or not at all\\n // depending on whether corner point is in dash or gap, with\\n // antialiased ends.\\n if (dash_distance(0.0) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -v_coords.x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (v_coords.x > -half_antialias) {\\n // Consider antialias region of dash after start region.\\n float edge_dist = min(dash_distance(half_antialias), half_antialias);\\n dist = max(dist, edge_dist + v_coords.x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 prev_coords = rotation_matrix(1.0)*v_coords;\\n\\n if (abs(prev_coords.y) < halfwidth && prev_coords.x < half_antialias) {\\n // Extend dashes across from end of previous segment, with antialiased end.\\n float new_dist = clip_dash_distance(prev_coords.x, 0.0, -1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(prev_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n if (!has_end_cap && cap_type == butt_cap) {\\n if (end_coords_x < half_antialias) {\\n // Similar for end join.\\n if (dash_distance(v_segment_length) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -end_coords_x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(v_segment_length - half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (end_coords_x > -half_antialias) {\\n // Consider antialias region of dash before end region.\\n float edge_dist = min(dash_distance(v_segment_length - half_antialias),\\n half_antialias);\\n dist = max(dist, edge_dist + end_coords_x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 next_coords = rotation_matrix(-1.0)*(v_coords - vec2(v_segment_length, 0.0));\\n\\n if (abs(next_coords.y) < halfwidth && next_coords.x > -half_antialias) {\\n // Extend dashes across from next segment, with antialiased end.\\n float new_dist = clip_dash_distance(next_coords.x, v_segment_length, 1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(next_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n dist = cap(cap_type, dist, v_coords.y);\\n\\n float dash_alpha = distance_to_alpha(dist);\\n alpha = min(alpha, dash_alpha);\\n }\\n#endif\\n\\n alpha = u_line_color.a*alpha;\\n gl_FragColor = vec4(u_line_color.rgb*alpha, alpha); // Premultiplied alpha.\\n}\\n\"},\n", + " 417: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nattribute vec2 a_position;\\nattribute vec2 a_center;\\nattribute float a_width;\\nattribute float a_height;\\nattribute float a_angle; // In radians\\nattribute float a_linewidth;\\nattribute vec4 a_line_color;\\nattribute vec4 a_fill_color;\\nattribute float a_line_cap;\\nattribute float a_line_join;\\nattribute float a_show;\\n#ifdef HATCH\\nattribute float a_hatch_pattern;\\nattribute float a_hatch_scale;\\nattribute float a_hatch_weight;\\nattribute vec4 a_hatch_color;\\n#endif\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform float u_antialias;\\nuniform float u_size_hint;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size; // 2D size for rects compared to 1D for markers.\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\nvoid main()\\n{\\n if (a_show < 0.5) {\\n // Do not show this rect.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n v_size = vec2(a_width, a_height);\\n v_linewidth = a_linewidth;\\n v_line_color = a_line_color;\\n v_fill_color = a_fill_color;\\n v_line_cap = a_line_cap;\\n v_line_join = a_line_join;\\n\\n if (v_linewidth < 1.0) {\\n // Linewidth less than 1 is implemented as 1 but with reduced alpha.\\n v_line_color.a *= v_linewidth;\\n v_linewidth = 1.0;\\n }\\n\\n#ifdef HATCH\\n v_hatch_pattern = a_hatch_pattern;\\n v_hatch_scale = a_hatch_scale;\\n v_hatch_weight = a_hatch_weight;\\n v_hatch_color = a_hatch_color;\\n#endif\\n\\n vec2 enclosing_size;\\n // Need extra size of (v_linewidth+u_antialias) if edge of marker parallel to\\n // edge of bounding box. If symmetric spike towards edge then multiply by\\n // 1/cos(theta) where theta is angle between spike and bbox edges.\\n int size_hint = int(u_size_hint + 0.5);\\n if (size_hint == 1) // Dash\\n enclosing_size = vec2(v_size.x + v_linewidth + u_antialias,\\n v_linewidth + u_antialias);\\n else if (size_hint == 2) // Dot\\n enclosing_size = 0.25*v_size + u_antialias;\\n else if (size_hint == 3) // Diamond\\n enclosing_size = vec2(v_size.x*(2.0/3.0) + (v_linewidth + u_antialias)*1.20185,\\n v_size.y + (v_linewidth + u_antialias)*1.80278);\\n else if (size_hint == 4) // Hex\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(2.0/sqrt(3.0), 1.0);\\n else if (size_hint == 5) // Square pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*3.1;\\n else if (size_hint == 6) // Triangle\\n enclosing_size = vec2(v_size.x + (v_linewidth + u_antialias)*sqrt(3.0),\\n v_size.y*(2.0/sqrt(3.0)) + (v_linewidth + u_antialias)*2.0);\\n else if (size_hint == 7) // Triangle pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(4.8, 6.0);\\n else if (size_hint == 8) // Star\\n enclosing_size = vec2(v_size.x*0.95106 + (v_linewidth + u_antialias)*3.0,\\n v_size.y + (v_linewidth + u_antialias)*3.2);\\n else\\n enclosing_size = v_size + v_linewidth + u_antialias;\\n\\n // Coordinates in rotated frame with respect to center of marker, used for\\n // distance functions in fragment shader.\\n v_coords = a_position*enclosing_size;\\n\\n float c = cos(-a_angle);\\n float s = sin(-a_angle);\\n mat2 rotation = mat2(c, -s, s, c);\\n\\n vec2 pos = a_center + rotation*v_coords;\\n#ifdef HATCH\\n // Coordinates for hatching in unrotated frame of reference.\\n v_hatch_coords = pos - 0.5;\\n#endif\\n pos += 0.5; // Make up for Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // 0 to 1.\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n}\\n\"},\n", + " 418: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nconst float SQRT2 = sqrt(2.0);\\nconst float SQRT3 = sqrt(3.0);\\nconst float PI = 3.14159265358979323846;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\n#ifdef HATCH\\nconst int hatch_dot = 1;\\nconst int hatch_ring = 2;\\nconst int hatch_horizontal_line = 3;\\nconst int hatch_vertical_line = 4;\\nconst int hatch_cross = 5;\\nconst int hatch_horizontal_dash = 6;\\nconst int hatch_vertical_dash = 7;\\nconst int hatch_spiral = 8;\\nconst int hatch_right_diagonal_line = 9;\\nconst int hatch_left_diagonal_line = 10;\\nconst int hatch_diagonal_cross = 11;\\nconst int hatch_right_diagonal_dash = 12;\\nconst int hatch_left_diagonal_dash = 13;\\nconst int hatch_horizontal_wave = 14;\\nconst int hatch_vertical_wave = 15;\\nconst int hatch_criss_cross = 16;\\n#endif\\n\\nuniform float u_antialias;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size;\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\n// Lines within the marker (dot, cross, x and y) are added at the end as they are\\n// on top of the fill rather than astride it.\\n#if defined(USE_CIRCLE_DOT) || defined(USE_DIAMOND_DOT) || defined(USE_DOT) || defined(USE_HEX_DOT) || defined(USE_SQUARE_DOT) || defined(USE_STAR_DOT) || defined(USE_TRIANGLE_DOT)\\n #define APPEND_DOT\\n#endif\\n\\n#if defined(USE_CIRCLE_CROSS) || defined(USE_SQUARE_CROSS)\\n #define APPEND_CROSS\\n#endif\\n\\n#ifdef USE_DIAMOND_CROSS\\n #define APPEND_CROSS_2\\n#endif\\n\\n#ifdef USE_CIRCLE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (0.5*v_size.x)\\n#endif\\n\\n#ifdef USE_SQUARE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (v_size.x/SQRT2)\\n#endif\\n\\n#ifdef USE_CIRCLE_Y\\n #define APPEND_Y\\n#endif\\n\\n#if defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_DASH) || defined(USE_DOT) || defined(USE_X) || defined(USE_Y)\\n // No fill.\\n #define LINE_ONLY\\n#endif\\n\\n#if defined(LINE_ONLY) || defined(APPEND_CROSS) || defined(APPEND_CROSS_2) || defined(APPEND_X) || defined(APPEND_Y)\\nfloat end_cap_distance(in vec2 p, in vec2 end_point, in vec2 unit_direction, in int line_cap)\\n{\\n vec2 offset = p - end_point;\\n if (line_cap == butt_cap)\\n return dot(offset, unit_direction) + 0.5*v_linewidth;\\n else if (line_cap == square_cap)\\n return dot(offset, unit_direction);\\n else if (line_cap == round_cap && dot(offset, unit_direction) > 0.0)\\n return length(offset);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if !(defined(LINE_ONLY) || defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN))\\n// For line join at a vec2 corner where 2 line segments meet, consider bevel points which are the 2\\n// points obtained by moving half a linewidth away from the corner point in the directions normal to\\n// the line segments. The line through these points is the bevel line, characterised by a vec2\\n// unit_normal and offset distance from the corner point. Edge of bevel join straddles this line,\\n// round join occurs outside of this line centred on the corner point. In general\\n// offset = (linewidth/2)*sin(alpha/2)\\n// where alpha is the angle between the 2 line segments at the corner.\\nfloat line_join_distance_no_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join)\\n{\\n // Simplified version of line_join_distance ignoring miter which most markers do implicitly\\n // as they are composed of straight line segments.\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN)\\n// Line join distance including miter but only one-sided check as assuming use of symmetry in\\n// calling function.\\nfloat line_join_distance_incl_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join,\\n vec2 miter_unit_normal)\\n{\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == miter_join && dist_outside > 0.0)\\n return dot((p - corner), miter_unit_normal);\\n else if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(APPEND_CROSS) || defined(APPEND_X) || defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_X)\\nfloat one_cross(in vec2 p, in int line_cap, in float len)\\n{\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#ifdef APPEND_CROSS_2\\nfloat one_cross_2(in vec2 p, in int line_cap, in vec2 lengths)\\n{\\n // Cross with different length in x and y directions.\\n p = abs(p);\\n bool switch_xy = (p.y > p.x);\\n p = switch_xy ? p.yx : p.xy;\\n float len = switch_xy ? lengths.y : lengths.x;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(APPEND_Y) || defined(USE_Y)\\nfloat one_y(in vec2 p, in int line_cap, in float len)\\n{\\n p = vec2(abs(p.x), -p.y);\\n\\n // End point of line to right is (1/2, 1/3)*len*SQRT3.\\n // Unit vector along line is (1/2, 1/3)*k where k = 6/SQRT13.\\n const float k = 6.0/sqrt(13.0);\\n vec2 unit_along = vec2(0.5*k, k/3.0);\\n vec2 end_point = vec2(0.5*len*SQRT3, len*SQRT3/3.0);\\n float dist = max(abs(dot(p, vec2(-unit_along.y, unit_along.x))),\\n end_cap_distance(p, end_point, unit_along, line_cap));\\n\\n if (p.y < 0.0) {\\n // Vertical line.\\n float vert_dist = max(p.x,\\n end_cap_distance(p, vec2(0.0, -len), vec2(0.0, -1.0), line_cap));\\n dist = min(dist, vert_dist);\\n }\\n return dist;\\n}\\n#endif\\n\\n// One marker_distance function per marker type.\\n// Distance is zero on edge of marker, +ve outside and -ve inside.\\n\\n#ifdef USE_ASTERISK\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n vec2 p_diag = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n float len = 0.5*v_size.x;\\n return min(one_cross(p, line_cap, len), // cross\\n one_cross(p_diag, line_cap, len)); // x\\n}\\n#endif\\n\\n#if defined(USE_CIRCLE) || defined(USE_CIRCLE_CROSS) || defined(USE_CIRCLE_DOT) || defined(USE_CIRCLE_X) || defined(USE_CIRCLE_Y)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return length(p) - 0.5*v_size.x;\\n}\\n#endif\\n\\n#ifdef USE_CROSS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_DASH\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n p = abs(p);\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(0.5*v_size.x, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(USE_DIAMOND) || defined(USE_DIAMOND_CROSS) || defined(USE_DIAMOND_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider +ve quadrant, the 2 end points are (2r/3, 0) and (0, r)\\n // where r = radius = v_size.x/2.\\n // Line has outward-facing unit normal vec2(1, 2/3)/k where k = SQRT13/3\\n // hence vec2(3, 2)/SQRT13, and distance from origin of 2r/(3k) = 2r/SQRT13.\\n p = abs(p);\\n float r = 0.5*v_size.x;\\n const float SQRT13 = sqrt(13.0);\\n float dist = dot(p, vec2(3.0, 2.0))/SQRT13 - 2.0*r/SQRT13;\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, r), vec2(0.0, 1.0), v_linewidth/SQRT13, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r*2.0/3.0, 0.0), vec2(1.0, 0.0), v_linewidth*(1.5/SQRT13), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_DOT\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Dot is always appended.\\n return v_linewidth+u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_HEX) || defined(USE_HEX_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // A regular hexagon has v_size.x == v.size_y = r where r is the length of\\n // each of the 3 sides of the 6 equilateral triangles that comprise the hex.\\n // Only consider +ve quadrant, the 3 corners are at (0, h), (rx/2, h), (rx, 0)\\n // where rx = 0.5*v_size.x, ry = 0.5*v_size.y and h = ry*SQRT3/2.\\n // Sloping line has outward normal vec2(h, rx/2). Length of this is\\n // len = sqrt(h**2 + rx**2/4) to give unit normal (h, rx/2)/len and distance\\n // from origin of this line is rx*h/len.\\n p = abs(p);\\n float rx = v_size.x/2.0;\\n float h = v_size.y*(SQRT3/4.0);\\n float len_normal = sqrt(h*h + 0.25*rx*rx);\\n vec2 unit_normal = vec2(h, 0.5*rx) / len_normal;\\n float dist = max(dot(p, unit_normal) - rx*h/len_normal, // Distance from sloping line.\\n p.y - h); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(rx, 0.0), vec2(1.0, 0.0), 0.5*v_linewidth*unit_normal.x, line_join));\\n\\n unit_normal = normalize(unit_normal + vec2(0.0, 1.0)); // At (rx/2, h) corner.\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.5*rx, h), unit_normal, 0.5*v_linewidth*unit_normal.y, line_join));\\n }\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_PLUS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider one octant, the +ve quadrant with x >= y.\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n\\n // 3 corners are (r, 0), (r, 3r/8) and (3r/8, 3r/8).\\n float r = 0.5*v_size.x;\\n p = p - vec2(r, 0.375*r); // Distance with respect to outside corner\\n float dist = max(p.x, p.y);\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n // Inside corner\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(-5.0*r/8.0, 0.0), vec2(-1.0/SQRT2, -1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE) || defined(USE_SQUARE_CROSS) || defined(USE_SQUARE_DOT) || defined(USE_SQUARE_X)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n vec2 p2 = abs(p) - v_size/2.0; // Offset from corner\\n float dist = max(p2.x, p2.y);\\n\\n if (line_join != miter_join)\\n dist = max(dist, line_join_distance_no_miter(\\n p2, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_SQUARE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n // p is in octant between y=0 and y=x.\\n // Quadratic bezier curve passes through (r, r), (11r/16, 0) and (r, -r).\\n // Circular arc that passes through the same points has center at\\n // x = r + 231r/160 = 2.44275r and y = 0 and hence radius is\\n // x - 11r/16 = 1.75626 precisely.\\n float r = 0.5*v_size.x;\\n float center_x = r*2.44375;\\n float radius = r*1.75626;\\n float dist = radius - distance(p, vec2(center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8/5) - pi/4)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(r, r), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth*0.1124297533493792, line_join,\\n vec2(8.0/sqrt(89.0), -5.0/sqrt(89.0))));\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_STAR) || defined(USE_STAR_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n const float SQRT5 = sqrt(5.0);\\n const float COS72 = 0.25*(SQRT5 - 1.0);\\n const float SIN72 = sqrt((5.0+SQRT5) / 8.0);\\n\\n float angle = atan(p.x, p.y); // In range -pi to +pi clockwise from +y direction.\\n angle = mod(angle, 0.4*PI) - 0.2*PI; // In range -pi/5 to +pi/5 clockwise from +y direction.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in pi/10 (36 degree) sector.\\n\\n // 2 corners are at (r, 0) and (r-a*SIN72, a*COS72) where a = r sqrt(5-2*sqrt(5)).\\n // Line has outward-facing unit normal vec2(COS72, SIN72) and distance from\\n // origin of dot(vec2(r, 0), vec2(COS72, SIN72)) = r*COS72\\n float r = 0.5*v_size.x;\\n float a = r*sqrt(5.0 - 2.0*SQRT5);\\n float dist = dot(p, vec2(COS72, SIN72)) - r*COS72;\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, 0.0), vec2(1.0, 0.0), v_linewidth*(0.5*COS72), line_join));\\n\\n // Inside corner\\n const float COS36 = sqrt(0.5 + COS72/2.0);\\n const float SIN36 = sqrt(0.5 - COS72/2.0);\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(r-a*SIN72, a*COS72), vec2(-COS36, -SIN36), v_linewidth*(0.5*COS36), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_TRIANGLE) || defined(USE_TRIANGLE_DOT) || defined(USE_INVERTED_TRIANGLE)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // For normal triangle 3 corners are at (-r, a), (r, a), (0, a-h)=(0, -2h/3)\\n // given r = radius = v_size.x/2, h = SQRT3*r, a = h/3.\\n // Sloping line has outward-facing unit normal vec2(h, -r)/2r = vec2(SQRT3, -1)/2\\n // and distance from origin of a. Horizontal line has outward-facing unit normal\\n // vec2(0, 1) and distance from origin of a.\\n float r = 0.5*v_size.x;\\n float a = r*SQRT3/3.0;\\n\\n // Only need to consider +ve x.\\n#ifdef USE_INVERTED_TRIANGLE\\n p = vec2(abs(p.x), -p.y);\\n#else\\n p = vec2(abs(p.x), p.y);\\n#endif\\n\\n float dist = max(0.5*dot(p, vec2(SQRT3, -1.0)) - a, // Distance from sloping line.\\n p.y - a); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, -(2.0/SQRT3)*r), vec2(0.0, -1.0), v_linewidth*0.25, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, a), vec2(SQRT3/2.0, 0.5), v_linewidth*0.25, line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_TRIANGLE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n float angle = atan(p.x, -p.y); // In range -pi to +pi.\\n angle = mod(angle, PI*2.0/3.0) - PI/3.0; // In range -pi/3 to pi/3.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in range 0 to pi/3.\\n // Quadratic bezier curve passes through (a, r), ((a+b)/2, 0) and (a, -r) where\\n // a = r/SQRT3, b = 3a/8 = r SQRT3/8. Circular arc that passes through the same points has\\n // center at (a+x, 0) and radius x+c where c = (a-b)/2 and x = (r**2 - c**2) / (2c).\\n // Ignore r factor until the end so can use const.\\n const float a = 1.0/SQRT3;\\n const float b = SQRT3/8.0;\\n const float c = (a-b)/2.0;\\n const float x = (1.0 - c*c) / (2.0*c);\\n const float center_x = x + a;\\n const float radius = x + c;\\n float r = 0.5*v_size.x;\\n float dist = r*radius - distance(p, vec2(r*center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8*sqrt(3)/5) - pi/3)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(a*r, r), vec2(0.5, 0.5*SQRT3), v_linewidth*0.0881844526878324, line_join,\\n vec2(8.0*SQRT3, -5.0)/sqrt(217.0)));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_X\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_Y\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_y(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n// Convert distance from edge of marker to fraction in range 0 to 1, depending\\n// on antialiasing width.\\nfloat distance_to_fraction(in float dist)\\n{\\n return 1.0 - smoothstep(-0.5*u_antialias, 0.5*u_antialias, dist);\\n}\\n\\n// Return fraction from 0 (no fill color) to 1 (full fill color).\\nfloat fill_fraction(in float dist)\\n{\\n return distance_to_fraction(dist);\\n}\\n\\n// Return fraction in range 0 (no line color) to 1 (full line color).\\nfloat line_fraction(in float dist)\\n{\\n return distance_to_fraction(abs(dist) - 0.5*v_linewidth);\\n}\\n\\n// Return fraction (in range 0 to 1) of a color, with premultiplied alpha.\\nvec4 fractional_color(in vec4 color, in float fraction)\\n{\\n color.a *= fraction;\\n color.rgb *= color.a;\\n return color;\\n}\\n\\n// Blend colors that have premultiplied alpha.\\nvec4 blend_colors(in vec4 src, in vec4 dest)\\n{\\n return (1.0 - src.a)*dest + src;\\n}\\n\\n#ifdef APPEND_DOT\\nfloat dot_fraction(in vec2 p)\\n{\\n // Assuming v_size.x == v_size.y\\n float radius = 0.125*v_size.x;\\n float dot_distance = max(length(p) - radius, -0.5*u_antialias);\\n return fill_fraction(dot_distance);\\n}\\n#endif\\n\\n#ifdef HATCH\\n// Wrap coordinate(s) by removing integer part to give distance from center of\\n// repeat, in the range -0.5 to +0.5.\\nfloat wrap(in float x)\\n{\\n return fract(x) - 0.5;\\n}\\n\\nvec2 wrap(in vec2 xy)\\n{\\n return fract(xy) - 0.5;\\n}\\n\\n// Return fraction from 0 (no hatch color) to 1 (full hatch color).\\nfloat hatch_fraction(in vec2 coords, in int hatch_pattern)\\n{\\n float scale = v_hatch_scale; // Hatch repeat distance.\\n\\n // Coordinates and linewidth/halfwidth are scaled to hatch repeat distance.\\n coords = coords / scale;\\n float halfwidth = 0.5*v_hatch_weight / scale; // Half the hatch linewidth.\\n\\n // Default is to return fraction of zero, i.e. no pattern.\\n float dist = u_antialias;\\n\\n if (hatch_pattern == hatch_dot) {\\n const float dot_radius = 0.25;\\n dist = length(wrap(coords)) - dot_radius;\\n }\\n else if (hatch_pattern == hatch_ring) {\\n const float ring_radius = 0.25;\\n dist = abs(length(wrap(coords)) - ring_radius) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_line) {\\n dist = abs(wrap(coords.y)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_line) {\\n dist = abs(wrap(coords.x)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_cross) {\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_dash) {\\n // Dashes have square caps.\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.y)),\\n abs(wrap(coords.x) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_dash) {\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.x)),\\n abs(wrap(coords.y) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_spiral) {\\n vec2 wrap2 = wrap(coords);\\n float angle = wrap(atan(wrap2.y, wrap2.x) / (2.0*PI));\\n // Canvas spiral radius increases by scale*pi/15 each rotation.\\n const float dr = PI/15.0;\\n float radius = length(wrap2);\\n // At any angle, spiral lines are equally spaced dr apart.\\n // Find distance to nearest of these lines.\\n float frac = fract((radius - dr*angle) / dr); // 0 to 1.\\n dist = dr*(abs(frac - 0.5));\\n dist = min(dist, radius) - halfwidth; // Consider center point also.\\n }\\n else if (hatch_pattern == hatch_right_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x + coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x - coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_diagonal_cross) {\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_right_diagonal_dash) {\\n float across = coords.x + coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x - coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_dash) {\\n float across = coords.x - coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x + coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_wave) {\\n float wrapx = wrap(coords.x);\\n float wrapy = wrap(coords.y - 0.25 + abs(wrapx));\\n dist = abs(wrapy) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_wave) {\\n float wrapy = wrap(coords.y);\\n float wrapx = wrap(coords.x - 0.25 + abs(wrapy));\\n dist = abs(wrapx) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_criss_cross) {\\n float plus = min(abs(wrap(coords.x)), abs(wrap(coords.y)));\\n\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n float X = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2;\\n\\n dist = min(plus, X) - halfwidth;\\n }\\n\\n return distance_to_fraction(dist*scale);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int line_cap = int(v_line_cap + 0.5);\\n int line_join = int(v_line_join + 0.5);\\n#ifdef HATCH\\n int hatch_pattern = int(v_hatch_pattern + 0.5);\\n#endif\\n\\n float dist = marker_distance(v_coords, line_cap, line_join);\\n\\n#ifdef LINE_ONLY\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n#else\\n float fill_frac = fill_fraction(dist);\\n vec4 color = fractional_color(v_fill_color, fill_frac);\\n#endif\\n\\n#if defined(HATCH) && !defined(LINE_ONLY)\\n if (hatch_pattern > 0 && fill_frac > 0.0) {\\n float hatch_frac = hatch_fraction(v_hatch_coords, hatch_pattern);\\n vec4 hatch_color = fractional_color(v_hatch_color, hatch_frac*fill_frac);\\n color = blend_colors(hatch_color, color);\\n }\\n#endif\\n\\n float line_frac = line_fraction(dist);\\n\\n#ifdef APPEND_DOT\\n line_frac = max(line_frac, dot_fraction(v_coords));\\n#endif\\n#ifdef APPEND_CROSS\\n line_frac = max(line_frac, line_fraction(one_cross(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n#ifdef APPEND_CROSS_2\\n vec2 lengths = vec2(v_size.x/3.0, v_size.x/2.0);\\n line_frac = max(line_frac, line_fraction(one_cross_2(v_coords, line_cap, lengths)));\\n#endif\\n#ifdef APPEND_X\\n vec2 p = vec2((v_coords.x + v_coords.y)/SQRT2, (v_coords.x - v_coords.y)/SQRT2);\\n line_frac = max(line_frac, line_fraction(one_cross(p, line_cap, APPEND_X_LEN)));\\n#endif\\n#ifdef APPEND_Y\\n line_frac = max(line_frac, line_fraction(one_y(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n\\n if (line_frac > 0.0) {\\n vec4 line_color = fractional_color(v_line_color, line_frac);\\n color = blend_colors(line_color, color);\\n }\\n\\n gl_FragColor = color;\\n}\\n\"},\n", + " 419: function _(t,_,i,h,e){h();const s=t(420),a=t(421),r=t(422);class l extends s.BaseGLGlyph{constructor(t,_){super(t,_),this.glyph=_,this._antialias=1.5,this._show_all=!1}_draw_one_marker_type(t,_,i){const h={scissor:this.regl_wrapper.scissor,viewport:this.regl_wrapper.viewport,canvas_size:[_.width,_.height],pixel_ratio:_.pixel_ratio,center:i._centers,width:i._widths,height:i._heights,angle:i._angles,size_hint:(0,r.marker_type_to_size_hint)(t),nmarkers:i.nvertices,antialias:this._antialias,linewidth:this._linewidths,line_color:this._line_rgba,fill_color:this._fill_rgba,line_cap:this._line_caps,line_join:this._line_joins,show:this._show};if(this._have_hatch){const _=Object.assign(Object.assign({},h),{hatch_pattern:this._hatch_patterns,hatch_scale:this._hatch_scales,hatch_weight:this._hatch_weights,hatch_color:this._hatch_rgba});this.regl_wrapper.marker_hatch(t)(_)}else this.regl_wrapper.marker_no_hatch(t)(h)}_set_visuals(){const t=this._get_visuals(),_=t.fill,i=t.line;if(null==this._linewidths&&(this._linewidths=new a.Float32Buffer(this.regl_wrapper),this._line_caps=new a.Uint8Buffer(this.regl_wrapper),this._line_joins=new a.Uint8Buffer(this.regl_wrapper),this._line_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper),this._fill_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._linewidths.set_from_prop(i.line_width),this._line_caps.set_from_line_cap(i.line_cap),this._line_joins.set_from_line_join(i.line_join),this._line_rgba.set_from_color(i.line_color,i.line_alpha),this._fill_rgba.set_from_color(_.fill_color,_.fill_alpha),this._have_hatch=t.hatch.doit,this._have_hatch){const _=t.hatch;null==this._hatch_patterns&&(this._hatch_patterns=new a.Uint8Buffer(this.regl_wrapper),this._hatch_scales=new a.Float32Buffer(this.regl_wrapper),this._hatch_weights=new a.Float32Buffer(this.regl_wrapper),this._hatch_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._hatch_patterns.set_from_hatch_pattern(_.hatch_pattern),this._hatch_scales.set_from_prop(_.hatch_scale),this._hatch_weights.set_from_prop(_.hatch_weight),this._hatch_rgba.set_from_color(_.hatch_color,_.hatch_alpha)}}}i.BaseMarkerGL=l,l.__name__=\"BaseMarkerGL\",l.missing_point=-1e4},\n", + " 420: function _(e,t,s,i,h){i();class a{constructor(e,t){this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.regl_wrapper=e}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,s){if(0==t.length)return!0;const{width:i,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:i,height:h};return this.draw(t,s,a),!0}}s.BaseGLGlyph=a,a.__name__=\"BaseGLGlyph\"},\n", + " 421: function _(r,t,a,e,s){e();const i=r(422),_=r(22);class n{constructor(r){this.regl_wrapper=r,this.is_scalar=!0}get_sized_array(r){return null!=this.array&&this.array.length==r||(this.array=this.new_array(r)),this.array}is_normalized(){return!1}get length(){return null!=this.array?this.array.length:0}set_from_array(r){const t=r.length,a=this.get_sized_array(t);for(let e=0;e0}_set_data(){const s=this.glyph.sx.length,i=s-1;this._is_closed=s>2&&this.glyph.sx[0]==this.glyph.sx[s-1]&&this.glyph.sy[0]==this.glyph.sy[s-1]&&isFinite(this.glyph.sx[0])&&isFinite(this.glyph.sy[0]),null==this._points&&(this._points=new o.Float32Buffer(this.regl_wrapper));const t=this._points.get_sized_array(2*(s+2));for(let i=1;is/255)),this._linewidth=s.line_width.value,this._linewidth<1&&(this._color[3]*=this._linewidth,this._linewidth=1),this._line_dash=(0,a.resolve_line_dash)(s.line_dash.value),this._is_dashed()&&([this._dash_tex_info,this._dash_tex,this._dash_scale]=this.regl_wrapper.get_dash(this._line_dash),this._dash_offset=s.line_dash_offset.value)}}t.LineGL=r,r.__name__=\"LineGL\"},\n", + " 427: function _(s,t,i,e,r){e();const h=s(421),a=s(424);class n extends a.SingleMarkerGL{constructor(s,t){super(s,t),this.glyph=t}draw(s,t,i){this._draw_impl(s,i,t.glglyph,\"square\")}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new h.Float32Buffer(this.regl_wrapper),this._widths=new h.Float32Buffer(this.regl_wrapper),this._heights=new h.Float32Buffer(this.regl_wrapper),this._angles=new h.Float32Buffer(this.regl_wrapper),this._angles.set_from_scalar(0));const t=this._centers.get_sized_array(2*s),i=this._heights.get_sized_array(s),e=this._widths.get_sized_array(s);for(let r=0;r1||s.length<_){this._show_all=!1,n.fill(0),r=0;for(const e of s)1!=h&&i._marker_types.get(e)!=t||(n[e]=255,r++)}else this._show_all&&a==_||(this._show_all=!0,n.fill(255));this._show.update(),0!=r&&this._draw_one_marker_type(t,e,i)}}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new r.Float32Buffer(this.regl_wrapper),this._widths=new r.Float32Buffer(this.regl_wrapper),this._heights=this._widths,this._angles=new r.Float32Buffer(this.regl_wrapper));const t=this._centers.get_sized_array(2*s);for(let e=0;ethis.render()))}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),d.default]}_render_button(...t){return(0,c.button)({type:\"button\",disabled:this.model.disabled,class:[h.btn,h[`btn_${this.model.button_type}`]]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",(()=>this.click())),null!=this.icon_view&&(\"\"!=this.model.label?(0,c.prepend)(this.button_el,this.icon_view.el,(0,c.nbsp)()):(0,c.prepend)(this.button_el,this.icon_view.el),this.icon_view.render()),this.group_el=(0,c.div)({class:h.btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=b,b.__name__=\"AbstractButtonView\";class p extends _.Control{constructor(t){super(t)}}n.AbstractButton=p,o=p,p.__name__=\"AbstractButton\",o.define((({String:t,Ref:e,Nullable:n})=>({label:[t,\"Button\"],icon:[n(e(a.AbstractIcon)),null],button_type:[r.ButtonType,\"default\"]})))},\n", + " 442: function _(t,e,o,s,n){s();const i=t(512),l=t(43);class c extends i.WidgetView{connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.disabled,(()=>{for(const t of this.controls())(0,l.toggle_attribute)(t,\"disabled\",this.model.disabled)}))}}o.ControlView=c,c.__name__=\"ControlView\";class r extends i.Widget{constructor(t){super(t)}}o.Control=r,r.__name__=\"Control\"},\n", + " 512: function _(i,e,t,n,o){var r;n();const s=i(312);class _ extends s.HTMLBoxView{get orientation(){return\"horizontal\"}get default_size(){return this.model.default_size}_width_policy(){return\"horizontal\"==this.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.orientation?null==i.width&&(i.width=this.default_size):null==i.height&&(i.height=this.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class h extends s.HTMLBox{constructor(i){super(i)}}t.Widget=h,r=h,h.__name__=\"Widget\",r.define((({Number:i})=>({default_size:[i,300]}))),r.override({margin:[5,5,5,5]})},\n", + " 444: function _(c,t,s,n,e){n();const o=c(53),_=c(226);class a extends _.DOMView{}s.AbstractIconView=a,a.__name__=\"AbstractIconView\";class r extends o.Model{constructor(c){super(c)}}s.AbstractIcon=r,r.__name__=\"AbstractIcon\"},\n", + " 445: function _(e,t,n,s,i){s();const h=e(1);var o;const _=e(446),u=e(43),r=e(10),c=(0,h.__importStar)(e(229)),a=c;class l extends _.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",(e=>this._keydown(e))),this.input_el.addEventListener(\"keyup\",(e=>this._keyup(e))),this.menu=(0,u.div)({class:[a.menu,a.below]}),this.menu.addEventListener(\"click\",(e=>this._menu_click(e))),this.menu.addEventListener(\"mouseover\",(e=>this._menu_hover(e))),this.el.appendChild(this.menu),(0,u.undisplay)(this.menu)}change_input(){this._open&&this.menu.children.length>0?(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu()):this.model.restrict||super.change_input()}_update_completions(e){(0,u.empty)(this.menu);for(const t of e){const e=(0,u.div)(t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(a.active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,(0,u.display)(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,u.undisplay)(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(a.active),this._hover_index=(0,r.clamp)(e,0,t-1),this.menu.children[this._hover_index].classList.add(a.active))}_keydown(e){}_keyup(e){switch(e.keyCode){case u.Keys.Enter:this.change_input();break;case u.Keys.Esc:this._hide_menu();break;case u.Keys.Up:this._bump_hover(this._hover_index-1);break;case u.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)s(n).startsWith(s(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class d extends _.TextInput{constructor(e){super(e)}}n.AutocompleteInput=d,o=d,d.__name__=\"AutocompleteInput\",o.prototype.default_view=l,o.define((({Boolean:e,Int:t,String:n,Array:s})=>({completions:[s(n),[]],min_characters:[t,2],case_sensitive:[e,!0],restrict:[e,!0]})))},\n", + " 446: function _(t,e,n,p,_){p();const u=t(1);var i;const s=t(447),r=t(43),x=(0,u.__importStar)(t(449));class a extends s.TextLikeInputView{_render_input(){this.input_el=(0,r.input)({type:\"text\",class:x.input})}}n.TextInputView=a,a.__name__=\"TextInputView\";class c extends s.TextLikeInput{constructor(t){super(t)}}n.TextInput=c,i=c,c.__name__=\"TextInput\",i.prototype.default_view=a},\n", + " 447: function _(e,t,n,i,l){var s;i();const h=e(448);class a extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>this.input_el.value=this.model.value)),this.connect(this.model.properties.value_input.change,(()=>this.input_el.value=this.model.value_input)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.max_length.change,(()=>{const{max_length:e}=this.model;null!=e?this.input_el.maxLength=e:this.input_el.removeAttribute(\"maxLength\")}))}render(){var e;super.render(),this._render_input();const{input_el:t}=this;t.name=null!==(e=this.model.name)&&void 0!==e?e:\"\",t.value=this.model.value,t.disabled=this.model.disabled,t.placeholder=this.model.placeholder,null!=this.model.max_length&&(t.maxLength=this.model.max_length),t.addEventListener(\"change\",(()=>this.change_input())),t.addEventListener(\"input\",(()=>this.change_input_value())),this.group_el.appendChild(t)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_value(){this.model.value_input=this.input_el.value,super.change_input()}}n.TextLikeInputView=a,a.__name__=\"TextLikeInputView\";class u extends h.InputWidget{constructor(e){super(e)}}n.TextLikeInput=u,s=u,u.__name__=\"TextLikeInput\",s.define((({Int:e,String:t,Nullable:n})=>({value:[t,\"\"],value_input:[t,\"\"],placeholder:[t,\"\"],max_length:[n(e),null]})))},\n", + " 448: function _(e,t,n,s,l){s();const i=e(1);var o;const r=e(442),_=e(43),p=(0,i.__importStar)(e(449)),a=p;class c extends r.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,(()=>{this.label_el.textContent=this.model.title}))}styles(){return[...super.styles(),p.default]}render(){super.render();const{title:e}=this.model;this.label_el=(0,_.label)({style:{display:0==e.length?\"none\":\"\"}},e),this.group_el=(0,_.div)({class:a.input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}n.InputWidgetView=c,c.__name__=\"InputWidgetView\";class d extends r.Control{constructor(e){super(e)}}n.InputWidget=d,o=d,d.__name__=\"InputWidget\",o.define((({String:e})=>({title:[e,\"\"]})))},\n", + " 449: function _(o,p,t,n,i){n(),t.root=\"bk-root\",t.input=\"bk-input\",t.input_group=\"bk-input-group\",t.inline=\"bk-inline\",t.spin_wrapper=\"bk-spin-wrapper\",t.spin_btn=\"bk-spin-btn\",t.spin_btn_up=\"bk-spin-btn-up\",t.spin_btn_down=\"bk-spin-btn-down\",t.default='.bk-root .bk-input{display:inline-block;width:100%;flex-grow:1;min-height:31px;padding:0 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;}.bk-root .bk-input:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);}.bk-root .bk-input::placeholder,.bk-root .bk-input:-ms-input-placeholder,.bk-root .bk-input::-moz-placeholder,.bk-root .bk-input::-webkit-input-placeholder{color:#999;opacity:1;}.bk-root .bk-input[disabled]{cursor:not-allowed;background-color:#eee;opacity:1;}.bk-root select:not([multiple]).bk-input,.bk-root select:not([size]).bk-input{height:auto;appearance:none;-webkit-appearance:none;background-image:url(\\'data:image/svg+xml;utf8,\\');background-position:right 0.5em center;background-size:8px 6px;background-repeat:no-repeat;}.bk-root select[multiple].bk-input,.bk-root select[size].bk-input,.bk-root textarea.bk-input{height:auto;}.bk-root .bk-input-group{width:100%;height:100%;display:inline-flex;flex-wrap:nowrap;align-items:start;flex-direction:column;white-space:nowrap;}.bk-root .bk-input-group.bk-inline{flex-direction:row;}.bk-root .bk-input-group.bk-inline > *:not(:first-child){margin-left:5px;}.bk-root .bk-input-group input[type=\"checkbox\"] + span,.bk-root .bk-input-group input[type=\"radio\"] + span{position:relative;top:-2px;margin-left:3px;}.bk-root .bk-input-group > .bk-spin-wrapper{display:inherit;width:inherit;height:inherit;position:relative;overflow:hidden;padding:0;vertical-align:middle;}.bk-root .bk-input-group > .bk-spin-wrapper input{padding-right:20px;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn{position:absolute;display:block;height:50%;min-height:0;min-width:0;width:30px;padding:0;margin:0;right:0;border:none;background:none;cursor:pointer;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before{content:\"\";display:inline-block;transform:translateY(-50%);border-left:5px solid transparent;border-right:5px solid transparent;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up{top:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before{border-bottom:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before{border-bottom-color:grey;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down{bottom:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before{border-top:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before{border-top-color:grey;}'},\n", + " 450: function _(t,e,n,o,c){var s;o();const u=t(441),r=t(251);class i extends u.AbstractButtonView{click(){this.model.trigger_event(new r.ButtonClick),super.click()}}n.ButtonView=i,i.__name__=\"ButtonView\";class _ extends u.AbstractButton{constructor(t){super(t)}}n.Button=_,s=_,_.__name__=\"Button\",s.prototype.default_view=i,s.override({label:\"Button\"})},\n", + " 451: function _(t,e,o,c,a){c();const s=t(1);var n;const i=t(452),r=t(43),u=(0,s.__importStar)(t(318));class _ extends i.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach(((e,o)=>{(0,r.classes)(e).toggle(u.active,t.has(o))}))}}o.CheckboxButtonGroupView=_,_.__name__=\"CheckboxButtonGroupView\";class h extends i.ButtonGroup{constructor(t){super(t)}}o.CheckboxButtonGroup=h,n=h,h.__name__=\"CheckboxButtonGroup\",n.prototype.default_view=_,n.define((({Int:t,Array:e})=>({active:[e(t),[]]})))},\n", + " 452: function _(t,e,n,s,i){s();const o=t(1);var r;const a=t(453),l=t(20),d=t(43),u=(0,o.__importStar)(t(318)),_=u;class c extends a.OrientedControlView{get default_size(){return\"horizontal\"==this.orientation?this.model.default_size:void 0}*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,(()=>this.render())),this.on_change(t.labels,(()=>this.render())),this.on_change(t.active,(()=>this._update_active()))}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map(((t,e)=>{const n=(0,d.div)({class:[_.btn,_[`btn_${this.model.button_type}`]],disabled:this.model.disabled},t);return n.addEventListener(\"click\",(()=>this.change_active(e))),n})),this._update_active();const t=\"horizontal\"==this.model.orientation?_.horizontal:_.vertical,e=(0,d.div)({class:[_.btn_group,t]},this._buttons);this.el.appendChild(e)}}n.ButtonGroupView=c,c.__name__=\"ButtonGroupView\";class h extends a.OrientedControl{constructor(t){super(t)}}n.ButtonGroup=h,r=h,h.__name__=\"ButtonGroup\",r.define((({String:t,Array:e})=>({labels:[e(t),[]],button_type:[l.ButtonType,\"default\"]})))},\n", + " 453: function _(n,t,e,o,r){var i;o();const a=n(442),l=n(20);class s extends a.ControlView{get orientation(){return this.model.orientation}}e.OrientedControlView=s,s.__name__=\"OrientedControlView\";class _ extends a.Control{constructor(n){super(n)}}e.OrientedControl=_,i=_,_.__name__=\"OrientedControl\",i.define((()=>({orientation:[l.Orientation,\"horizontal\"]})))},\n", + " 454: function _(e,t,n,i,s){i();const o=e(1);var a;const c=e(455),l=e(43),d=e(9),p=(0,o.__importStar)(e(449));class r extends c.InputGroupView{render(){super.render();const e=(0,l.div)({class:[p.input_group,this.model.inline?p.inline:null]});this.el.appendChild(e);const{active:t,labels:n}=this.model;this._inputs=[];for(let i=0;ithis.change_active(i))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),(0,d.includes)(t,i)&&(s.checked=!0);const o=(0,l.label)(s,(0,l.span)(n[i]));e.appendChild(o)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}n.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class h extends c.InputGroup{constructor(e){super(e)}}n.CheckboxGroup=h,a=h,h.__name__=\"CheckboxGroup\",a.prototype.default_view=r,a.define((({Boolean:e,Int:t,String:n,Array:i})=>({active:[i(t),[]],labels:[i(n),[]],inline:[e,!1]})))},\n", + " 455: function _(n,t,e,s,o){s();const r=n(1),u=n(442),c=(0,r.__importDefault)(n(449));class _ extends u.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}styles(){return[...super.styles(),c.default]}}e.InputGroupView=_,_.__name__=\"InputGroupView\";class i extends u.Control{constructor(n){super(n)}}e.InputGroup=i,i.__name__=\"InputGroup\"},\n", + " 456: function _(e,t,i,n,o){n();const s=e(1);var l;const r=e(448),c=e(43),a=e(22),d=(0,s.__importStar)(e(449));class h extends r.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.color.change,(()=>this.input_el.value=(0,a.color2hexrgb)(this.model.color))),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled))}render(){super.render(),this.input_el=(0,c.input)({type:\"color\",class:d.input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}i.ColorPickerView=h,h.__name__=\"ColorPickerView\";class p extends r.InputWidget{constructor(e){super(e)}}i.ColorPicker=p,l=p,p.__name__=\"ColorPicker\",l.prototype.default_view=h,l.define((({Color:e})=>({color:[e,\"#000000\"]})))},\n", + " 457: function _(e,t,i,n,s){n();const a=e(1);var l;const o=(0,a.__importDefault)(e(458)),d=e(448),r=e(43),c=e(20),u=e(8),h=(0,a.__importStar)(e(449)),_=(0,a.__importDefault)(e(459));function p(e){const t=[];for(const i of e)if((0,u.isString)(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class m extends d.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.setDate(this.model.value)})),this.connect(t.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",this.model.min_date)})),this.connect(i.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",this.model.max_date)})),this.connect(n.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",this.model.disabled_dates)})),this.connect(s.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",this.model.enabled_dates)})),this.connect(a.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",this.model.position)})),this.connect(l.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",this.model.inline)}))}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),_.default]}render(){var e,t;null==this._picker&&(super.render(),this.input_el=(0,r.input)({type:\"text\",class:h.input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=(0,o.default)(this.input_el,{defaultDate:this.model.value,minDate:null!==(e=this.model.min_date)&&void 0!==e?e:void 0,maxDate:null!==(t=this.model.max_date)&&void 0!==t?t:void 0,inline:this.model.inline,position:this.model.position,disable:p(this.model.disabled_dates),enable:p(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=m,m.__name__=\"DatePickerView\";class v extends d.InputWidget{constructor(e){super(e)}}i.DatePicker=v,l=v,v.__name__=\"DatePicker\",l.prototype.default_view=m,l.define((({Boolean:e,String:t,Array:i,Tuple:n,Or:s,Nullable:a})=>{const l=i(s(t,n(t,t)));return{value:[t],min_date:[a(t),null],max_date:[a(t),null],disabled_dates:[l,[]],enabled_dates:[l,[]],position:[c.CalendarPosition,\"auto\"],inline:[e,!1]}}))},\n", + " 458: function _(e,n,t,a,i){\n", + " /* flatpickr v4.6.6, @license MIT */var o,r;o=this,r=function(){\"use strict\";\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation.\n", + " \n", + " Permission to use, copy, modify, and/or distribute this software for any\n", + " purpose with or without fee is hereby granted.\n", + " \n", + " THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n", + " REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n", + " AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n", + " INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n", + " LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n", + " OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n", + " PERFORMANCE OF THIS SOFTWARE.\n", + " ***************************************************************************** */var e=function(){return e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return\"th\";switch(n%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),(\"000\"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n,t){var a;return void 0===t&&(t=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,t||e.apply(i,o)}),n),t&&!a&&e.apply(i,o)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function s(e,n,t){var a=window.document.createElement(e);return n=n||\"\",t=t||\"\",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=s(\"div\",\"numInputWrapper\"),a=s(\"input\",\"numInput \"+e),i=s(\"span\",\"arrowUp\"),o=s(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return\"function\"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?\"shorthand\":\"longhand\"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],\"i\").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split(\"\").map((function(n,a,o){return w[n]&&\"\\\\\"!==o[a-1]?w[n](e,i,t):\"\\\\\"!==n?n:\"\"})).join(\"\"):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=n||(t||a).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(t&&t.parseDate)l=t.parseDate(e,s);else{l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h=\"\";gl&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&H(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var c=w._input.value;I(),be(),w._input.value!==c&&w._debouncedChange()}function I(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(t,a,i)}}function S(e){var n=e||w.latestSelectedDateObj;n&&O(n.getHours(),n.getMinutes(),n.getSeconds())}function _(){var e=w.config.defaultHour,n=w.config.defaultMinute,t=w.config.defaultSeconds;if(void 0!==w.config.minDate){var a=w.config.minDate.getHours(),i=w.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(n=Math.max(i,n)),e===a&&n===i&&(t=w.config.minDate.getSeconds())}if(void 0!==w.config.maxDate){var o=w.config.maxDate.getHours(),r=w.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(n=Math.min(r,n)),e===o&&n===r&&(t=w.config.maxDate.getSeconds())}return{hours:e,minutes:n,seconds:t}}function O(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function F(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&Q(t)}function N(e,n,t,a){return n instanceof Array?n.forEach((function(n){return N(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return N(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({element:e,event:n,handler:t,options:a}))}function A(){pe(\"onChange\")}function P(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0}(n)&&!ve(n)&&o.classList.add(\"inRange\"),w.weekNumbers&&1===w.config.showMonths&&\"prevMonthDay\"!==e&&t%7==1&&w.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+w.config.getWeek(n)+\"\"),pe(\"onDayCreate\",o),o}function L(e){e.focus(),\"range\"===w.config.mode&&ae(e)}function W(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&X(c.dateObj))return c}}function R(e,n){var t=ee(document.activeElement||document.body),a=void 0!==e?e:t?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(n>0?1:-1);void 0===a?w._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(n))return L(s)}w.changeMonth(i),R(W(i),0)}(a,n):L(a)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",d=a+1-t,u=0;d<=a;d++,u++)o.appendChild(j(l,new Date(e,n-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(j(\"\",new Date(e,n,d),d,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(j(c,new Date(e,n+1,f%i),f,u));var m=s(\"div\",\"dayContainer\");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||\"dropdown\"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML=\"\";for(var n=0;n<12;n++)if(e(n)){var t=s(\"option\",\"flatpickr-monthDropdown-month\");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function U(){var e,n=s(\"div\",\"flatpickr-month\"),t=window.document.createDocumentFragment();w.config.showMonths>1||\"static\"===w.config.monthSelectorType?e=s(\"span\",\"cur-month\"):(w.monthsDropdownContainer=s(\"select\",\"flatpickr-monthDropdown-months\"),w.monthsDropdownContainer.setAttribute(\"aria-label\",w.l10n.monthAriaLabel),N(w.monthsDropdownContainer,\"change\",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),pe(\"onMonthChange\")})),K(),e=w.monthsDropdownContainer);var a=m(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute(\"min\",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute(\"max\",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=U();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s(\"div\",\"flatpickr-weekdays\");for(var e=w.config.showMonths;e--;){var n=s(\"div\",\"flatpickr-weekdaycontainer\");w.weekdayContainer.appendChild(n)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\\n \"+t.join(\"\")+\"\\n \\n \"}}function G(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe(\"onYearChange\"),K()),J(),pe(\"onMonthChange\"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=V(n),a=n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!t&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&\"\"!==w.input.value&&void 0!==w.input.value&&T(),w.close(),w.config&&\"range\"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),pe(\"onYearChange\"),K())}}function X(e,n){void 0===n&&(n=!0);var t=w.parseDate(e,void 0,n);if(w.config.minDate&&t&&M(t,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&t&&M(t,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(0===w.config.enable.length&&0===w.config.disable.length)return!0;if(void 0===t)return!1;for(var a=w.config.enable.length>0,i=a?w.config.enable:w.config.disable,o=0,r=void 0;o=r.from.getTime()&&t.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==w.daysContainer&&-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&w.daysContainer.contains(e)}function ne(e){e.target!==w._input||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function te(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),n.blur();w.open()}else if(V(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),T(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):n===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),T(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(n);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],I(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],I(),be()}(t||V(n))&&pe(\"onKeyDown\",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var n=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),t=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(n,w.selectedDates[0].getTime()),i=Math.max(n,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>t&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(n<=w.selectedDates[0].getTime()?\"startRange\":\"endRange\"),tn&&m===t&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=t,u=n,(c=m)>Math.min(d,u)&&c0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||\"min\"!==e||S(t),be()),w.daysContainer&&(de(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function re(){return w.config.wrap?p.querySelector(\"[data-input]\"):p}function le(){\"object\"!=typeof w.config.locale&&void 0===k.l10ns[w.config.locale]&&w.config.errorHandler(new Error(\"flatpickr: invalid locale \"+w.config.locale)),w.l10n=e(e({},k.l10ns.default),\"object\"==typeof w.config.locale?w.config.locale:\"default\"!==w.config.locale?k.l10ns[w.config.locale]:void 0),D.K=\"(\"+w.l10n.amPM[0]+\"|\"+w.l10n.amPM[1]+\"|\"+w.l10n.amPM[0].toLowerCase()+\"|\"+w.l10n.amPM[1].toLowerCase()+\")\",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===k.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if(void 0!==w.calendarContainer){pe(\"onPreCalendarPosition\");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&ct,u=window.pageYOffset+l.top+(s?-t-2:n.offsetHeight+2);if(d(w.calendarContainer,\"arrowTop\",!s),d(w.calendarContainer,\"arrowBottom\",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;\"center\"===r?(f-=(a-l.width)/2,m=!0):\"right\"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,\"arrowLeft\",!m&&!g),d(w.calendarContainer,\"arrowCenter\",m),d(w.calendarContainer,\"arrowRight\",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,\"rightMost\",h),!w.config.static)if(w.calendarContainer.style.top=u+\"px\",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&\"range\"!==w.config.mode;if(w.selectedDateElem=t,\"single\"===w.config.mode)w.selectedDates=[a];else if(\"multiple\"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else\"range\"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(I(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe(\"onYearChange\"),K()),pe(\"onMonthChange\")}if(De(),J(),be(),i||\"range\"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l=\"single\"===w.config.mode&&!w.config.enableTime,c=\"range\"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}A()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=N,w._setHoursFromDate=S,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),w.input.value=\"\",void 0!==w.altInput&&(w.altInput.value=\"\"),void 0!==w.mobileInput&&(w.mobileInput.value=\"\"),w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth()),!0===w.config.enableTime){var t=_(),a=t.hours,i=t.minutes,o=t.seconds;O(a,i,o)}w.redraw(),e&&pe(\"onChange\")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove(\"open\"),void 0!==w._input&&w._input.classList.remove(\"active\")),pe(\"onClose\")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe(\"onDestroy\");for(var e=w._handlers.length;e--;){var n=w._handlers[e];n.element.removeEventListener(n.event,n.handler,n.options)}if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type=\"text\",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput),w.input&&(w.input.type=w.input._type,w.input.classList.remove(\"flatpickr-input\"),w.input.removeAttribute(\"readonly\")),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,n){if(void 0===n&&(n=w._positionElement),!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe(\"onOpen\")}if(!w._input.disabled&&!w.config.inline){var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add(\"open\"),w._input.classList.add(\"active\"),pe(\"onOpen\"),ce(n)),!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))}},w.redraw=de,w.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),be(!0)},w.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=w.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);me(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,n),S(),0===w.selectedDates.length&&w.clear(!1),be(n),n&&pe(\"onChange\")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,E,$],minDate:[P],maxDate:[P]};function me(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||\"number\"==typeof e)t=[w.parseDate(e,n)];else if(\"string\"==typeof e)switch(w.config.mode){case\"single\":case\"time\":t=[w.parseDate(e,n)];break;case\"multiple\":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case\"range\":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&X(e,!1)})),\"range\"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function ge(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||\"static\"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+\" \":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(n){return w.formatDate(n,e)})).filter((function(e,n,t){return\"range\"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join(\"range\"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):\"\"),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe(\"onValueUpdate\")}function Ce(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?G(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains(\"arrowUp\")?w.changeYear(w.currentYear+1):n.classList.contains(\"arrowDown\")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,\"enable\",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,\"disable\",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=k.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):l+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=k.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(w.config,\"minDate\",{get:function(){return w.config._minDate},set:oe(\"min\")}),Object.defineProperty(w.config,\"maxDate\",{get:function(){return w.config._maxDate},set:oe(\"max\")});var s=function(e){return function(n){w.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=w.parseDate(n,\"H:i:S\")}};Object.defineProperty(w.config,\"minTime\",{get:function(){return w.config._minTime},set:s(\"min\")}),Object.defineProperty(w.config,\"maxTime\",{get:function(){return w.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0),Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(x).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+\" \"+w.config.altInputClass),pe(\"onParseConfig\")}(),le(),w.input=re(),w.input?(w.input._type=w.input.type,w.input.type=\"text\",w.input.classList.add(\"flatpickr-input\"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type=\"text\",w.input.setAttribute(\"type\",\"hidden\"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling)),w.config.allowInput||w._input.setAttribute(\"readonly\",\"readonly\"),w._positionElement=w.config.positionElement||w._input):w.config.errorHandler(new Error(\"Invalid input element specified\")),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||(\"INPUT\"!==w.input.nodeName&&\"TEXTAREA\"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat),w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]),void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,\"H:i\")),void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,\"H:i\")),w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s(\"div\",\"flatpickr-calendar\"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s(\"div\",\"flatpickr-months\"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s(\"span\",\"flatpickr-prev-month\"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s(\"span\",\"flatpickr-next-month\"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,\"_hidePrevMonthArrow\",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,\"flatpickr-disabled\",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,\"_hideNextMonthArrow\",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,\"flatpickr-disabled\",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s(\"div\",\"flatpickr-innerContainer\"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add(\"hasWeeks\");var e=s(\"div\",\"flatpickr-weekwrapper\");e.appendChild(s(\"span\",\"flatpickr-weekday\",w.l10n.weekAbbreviation));var n=s(\"div\",\"flatpickr-weeks\");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=s(\"div\",\"flatpickr-rContainer\"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s(\"div\",\"flatpickr-days\"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add(\"hasTime\"),w.config.noCalendar&&w.calendarContainer.classList.add(\"noCalendar\"),w.timeContainer=s(\"div\",\"flatpickr-time\"),w.timeContainer.tabIndex=-1;var e=s(\"span\",\"flatpickr-time-separator\",\":\"),n=m(\"flatpickr-hour\",{\"aria-label\":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName(\"input\")[0];var t=m(\"flatpickr-minute\",{\"aria-label\":w.l10n.minuteAriaLabel});if(w.minuteElement=t.getElementsByTagName(\"input\")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?w.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(w.config.defaultHour)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():w.config.defaultMinute),w.hourElement.setAttribute(\"step\",w.config.hourIncrement.toString()),w.minuteElement.setAttribute(\"step\",w.config.minuteIncrement.toString()),w.hourElement.setAttribute(\"min\",w.config.time_24hr?\"0\":\"1\"),w.hourElement.setAttribute(\"max\",w.config.time_24hr?\"23\":\"12\"),w.minuteElement.setAttribute(\"min\",\"0\"),w.minuteElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(e),w.timeContainer.appendChild(t),w.config.time_24hr&&w.timeContainer.classList.add(\"time24hr\"),w.config.enableSeconds){w.timeContainer.classList.add(\"hasSeconds\");var a=m(\"flatpickr-second\");w.secondElement=a.getElementsByTagName(\"input\")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():w.config.defaultSeconds),w.secondElement.setAttribute(\"step\",w.minuteElement.getAttribute(\"step\")),w.secondElement.setAttribute(\"min\",\"0\"),w.secondElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(s(\"span\",\"flatpickr-time-separator\",\":\")),w.timeContainer.appendChild(a)}return w.config.time_24hr||(w.amPM=s(\"span\",\"flatpickr-am-pm\",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM)),w.timeContainer}()),d(w.calendarContainer,\"rangeMode\",\"range\"===w.config.mode),d(w.calendarContainer,\"animate\",!0===w.config.animate),d(w.calendarContainer,\"multiMonth\",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?\"inline\":\"static\"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s(\"div\",\"flatpickr-wrapper\");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){if(w.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(n){return N(n,\"click\",w[e])}))})),w.isMobile)!function(){var e=w.config.enableTime?w.config.noCalendar?\"time\":\"datetime-local\":\"date\";w.mobileInput=s(\"input\",w.input.className+\" flatpickr-mobile\"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr)),w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,\"Y-m-d\")),w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,\"Y-m-d\")),w.input.getAttribute(\"step\")&&(w.mobileInput.step=String(w.input.getAttribute(\"step\"))),w.input.type=\"hidden\",void 0!==w.altInput&&(w.altInput.type=\"hidden\");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}N(w.mobileInput,\"change\",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe(\"onChange\"),pe(\"onClose\")}))}();else{var e=l(ie,50);if(w._debouncedChange=l(A,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(w.daysContainer,\"mouseover\",(function(e){\"range\"===w.config.mode&&ae(g(e))})),N(window.document.body,\"keydown\",te),w.config.inline||w.config.static||N(window,\"resize\",e),void 0!==window.ontouchstart?N(window.document,\"touchstart\",Z):N(window.document,\"click\",Z),N(window.document,\"focus\",Z,{capture:!0}),!0===w.config.clickOpens&&(N(w._input,\"focus\",w.open),N(w._input,\"click\",w.open)),void 0!==w.daysContainer&&(N(w.monthNav,\"click\",Ce),N(w.monthNav,[\"keyup\",\"increment\"],F),N(w.daysContainer,\"click\",ue)),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};N(w.timeContainer,[\"increment\"],T),N(w.timeContainer,\"blur\",T,{capture:!0}),N(w.timeContainer,\"click\",Y),N([w.hourElement,w.minuteElement],[\"focus\",\"click\"],n),void 0!==w.secondElement&&N(w.secondElement,\"focus\",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&N(w.amPM,\"click\",(function(e){T(e),A()}))}w.config.allowInput&&N(w._input,\"blur\",ne)}}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&S(w.config.noCalendar?w.latestSelectedDateObj||w.config.minDate:void 0),be(!1)),E();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&ce(),pe(\"onReady\")}(),w}function E(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render()));const{start:s,end:l,value:o,step:r,title:n}=this.model.properties;this.on_change([s,l,o,r],(()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0)}));const{bar_color:a}=this.model.properties;this.on_change(a,(()=>{this._set_bar_color()}));const{show_value:d}=this.model.properties;this.on_change([o,n,d],(()=>this._update_title()))}styles(){return[...super.styles(),p.default,u.default]}_update_title(){var t;(0,a.empty)(this.title_el);const e=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=e?\"none\":\"\",!e&&(0!=(null===(t=this.model.title)||void 0===t?void 0:t.length)&&(this.title_el.textContent=`${this.model.title}: `),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map((t=>this.model.pretty(t))).join(\" .. \");this.title_el.appendChild((0,a.span)({class:m.slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=(0,_.color2css)(this.model.bar_color)}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let l;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};l=(0,d.repeat)(t,i.length)}else l=!1;if(null==this.slider_el){this.slider_el=(0,a.div)(),this._noUiSlider=n.default.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:l,orientation:this.model.orientation,direction:this.model.direction}),this._noUiSlider.on(\"slide\",((t,e,i)=>this._slide(i))),this._noUiSlider.on(\"change\",((t,e,i)=>this._change(i)));const o=(t,e)=>{if(!l)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this._noUiSlider.on(\"start\",((t,e)=>o(e,!0))),this._noUiSlider.on(\"end\",((t,e)=>o(e,!1)))}else this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0);this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=(0,a.div)({class:m.slider_title}),this._update_title(),this.group_el=(0,a.div)({class:v.input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){const e=this._calc_from(t);this.model.setv({value:e,value_throttled:e})}}b.__name__=\"AbstractBaseSliderView\";class g extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=g,g.__name__=\"AbstractSliderView\";class f extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=f,f.__name__=\"AbstractRangeSliderView\";class S extends h.OrientedControl{constructor(t){super(t),this.connected=!1}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=S,r=S,S.__name__=\"AbstractSlider\",r.define((({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:o,Enum:r,Ref:n,Nullable:a})=>({title:[a(s),\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[o(s,n(c.TickFormatter))],direction:[r(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]})))},\n", + " 462: function _(t,e,r,n,i){var o,s;o=this,s=function(t){\"use strict\";var e,r;function n(t){return\"object\"==typeof t&&\"function\"==typeof t.to}function i(t){t.parentElement.removeChild(t)}function o(t){return null!=t}function s(t){t.preventDefault()}function a(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function l(t,e,r){r>0&&(f(t,e),setTimeout((function(){d(t,e)}),r))}function u(t){return Math.max(Math.min(t,100),0)}function c(t){return Array.isArray(t)?t:[t]}function p(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function f(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function d(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function h(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function m(t,e){return 100/(e-t)}function g(t,e,r){return 100*e/(t[r+1]-t[r])}function v(t,e){for(var r=1;t>=e[r];)r+=1;return r}function b(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=v(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return g(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/m(s,a)}function S(t,e,r,n){if(100===n)return n;var i=v(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}t.PipsMode=void 0,(e=t.PipsMode||(t.PipsMode={})).Range=\"range\",e.Steps=\"steps\",e.Positions=\"positions\",e.Count=\"count\",e.Values=\"values\",t.PipsType=void 0,(r=t.PipsType||(t.PipsType={}))[r.None=-1]=\"None\",r[r.NoValue=0]=\"NoValue\",r[r.LargeValue=1]=\"LargeValue\",r[r.SmallValue=2]=\"SmallValue\";var x=function(){function t(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[],this.xNumSteps=[],this.xHighestCompleteStep=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.snap=e;var i=[];for(Object.keys(t).forEach((function(e){i.push([c(t[e]),e])})),i.sort((function(t,e){return t[0][0]-e[0][0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++,null===e&&(e=[]);var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},t.prototype.toStepping=function(t){return t=b(this.xVal,this.xPct,t)},t.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=v(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*m(s,e[n]))}(this.xVal,this.xPct,t)},t.prototype.getStep=function(t){return t=S(this.xPct,this.xSteps,this.snap,t)},t.prototype.getDefaultStep=function(t,e,r){var n=v(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},t.prototype.getNearbySteps=function(t){var e=v(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},t.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(p);return Math.max.apply(null,t)},t.prototype.hasNoSize=function(){return this.xVal[0]===this.xVal[this.xVal.length-1]},t.prototype.convert=function(t){return this.getStep(this.toStepping(t))},t.prototype.handleEntryPoint=function(t,e){var r;if(!a(r=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!a(e[0]))throw new Error(\"noUiSlider: 'range' value isn't numeric.\");this.xPct.push(r),this.xVal.push(e[0]);var n=Number(e[1]);r?this.xSteps.push(!isNaN(n)&&n):isNaN(n)||(this.xSteps[0]=n),this.xHighestCompleteStep.push(0)},t.prototype.handleStepPoint=function(t,e){if(e)if(this.xVal[t]!==this.xVal[t+1]){this.xSteps[t]=g([this.xVal[t],this.xVal[t+1]],e,0)/m(this.xPct[t],this.xPct[t+1]);var r=(this.xVal[t+1]-this.xVal[t])/this.xNumSteps[t],n=Math.ceil(Number(r.toFixed(3))-1),i=this.xVal[t]+this.xNumSteps[t]*n;this.xHighestCompleteStep[t]=i}else this.xSteps[t]=this.xHighestCompleteStep[t]=this.xVal[t]},t}(),y={to:function(t){return void 0===t?\"\":t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"},E=\".__tooltips\",P=\".__aria\";function C(t,e){if(!a(e))throw new Error(\"noUiSlider: 'step' is not numeric.\");t.singleStep=e}function N(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function V(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");t.keyboardMultiplier=e}function k(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function M(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider: 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");t.spectrum=new x(e,t.snap||!1,t.singleStep)}function A(t,e){if(e=c(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider: 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");t.snap=e}function D(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");t.animate=e}function O(t,e){if(\"number\"!=typeof e)throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");t.animationDuration=e}function L(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\")}}function F(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider: 'direction' option was not recognized.\")}}function R(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0,l=e.indexOf(\"drag-all\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");j(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,dragAll:l,fixed:i,snap:o,hover:s,unconstrained:a}}function _(t,e){if(!1!==e)if(!0===e||n(e)){t.tooltips=[];for(var r=0;r= 2) required for mode 'count'.\");for(var r=e.values-1,n=100/r,i=[];r--;)i[r]=r*n;return i.push(100),q(i,e.stepped)}return e.mode===t.PipsMode.Positions?q(e.values,e.stepped):e.mode===t.PipsMode.Values?e.stepped?e.values.map((function(t){return C.fromStepping(C.getStep(C.toStepping(t)))})):e.values:[]}(e),i={},o=C.xVal[0],s=C.xVal[C.xVal.length-1],a=!1,l=!1,u=0;return r=n.slice().sort((function(t,e){return t-e})),(n=r.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(n.unshift(o),a=!0),n[n.length-1]!==s&&(n.push(s),l=!0),n.forEach((function(r,o){var s,c,p,f,d,h,m,g,v,b,S=r,x=n[o+1],y=e.mode===t.PipsMode.Steps;for(y&&(s=C.xNumSteps[o]),s||(s=x-S),void 0===x&&(x=S),s=Math.max(s,1e-7),c=S;c<=x;c=Number((c+s).toFixed(7))){for(g=(d=(f=C.toStepping(c))-u)/(e.density||1),b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[C.fromStepping(h),0];m=n.indexOf(c)>-1?t.PipsType.LargeValue:y?t.PipsType.SmallValue:t.PipsType.NoValue,!o&&a&&c!==x&&(m=0),c===x&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}function Y(e,n,i){var o,s,a=U.createElement(\"div\"),l=((o={})[t.PipsType.None]=\"\",o[t.PipsType.NoValue]=r.cssClasses.valueNormal,o[t.PipsType.LargeValue]=r.cssClasses.valueLarge,o[t.PipsType.SmallValue]=r.cssClasses.valueSub,o),u=((s={})[t.PipsType.None]=\"\",s[t.PipsType.NoValue]=r.cssClasses.markerNormal,s[t.PipsType.LargeValue]=r.cssClasses.markerLarge,s[t.PipsType.SmallValue]=r.cssClasses.markerSub,s),c=[r.cssClasses.valueHorizontal,r.cssClasses.valueVertical],p=[r.cssClasses.markerHorizontal,r.cssClasses.markerVertical];function d(t,e){var n=e===r.cssClasses.value,i=n?l:u;return e+\" \"+(n?c:p)[r.ort]+\" \"+i[t]}return f(a,r.cssClasses.pips),f(a,0===r.ort?r.cssClasses.pipsHorizontal:r.cssClasses.pipsVertical),Object.keys(e).forEach((function(o){!function(e,o,s){if((s=n?n(o,s):s)!==t.PipsType.None){var l=T(a,!1);l.className=d(s,r.cssClasses.marker),l.style[r.style]=e+\"%\",s>t.PipsType.NoValue&&((l=T(a,!1)).className=d(s,r.cssClasses.value),l.setAttribute(\"data-value\",String(o)),l.style[r.style]=e+\"%\",l.innerHTML=String(i.to(o)))}}(o,e[o][0],e[o][1])})),a}function I(){g&&(i(g),g=null)}function W(t){I();var e=X(t),r=t.filter,n=t.format||{to:function(t){return String(Math.round(t))}};return g=w.appendChild(Y(e,r,n))}function $(){var t=a.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||a[e]:t.height||a[e]}function J(t,e,n,i){var o=function(o){var s,a,l=function(t,e,r){var n=0===t.type.indexOf(\"touch\"),i=0===t.type.indexOf(\"mouse\"),o=0===t.type.indexOf(\"pointer\"),s=0,a=0;if(0===t.type.indexOf(\"MSPointer\")&&(o=!0),\"mousedown\"===t.type&&!t.buttons&&!t.touches)return!1;if(n){var l=function(e){var n=e.target;return n===r||r.contains(n)||t.composed&&t.composedPath().shift()===r};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;s=u[0].pageX,a=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;s=c.pageX,a=c.pageY}}return e=e||h(U),(i||o)&&(s=t.clientX+e.x,a=t.clientY+e.y),t.pageOffset=e,t.points=[s,a],t.cursor=i||o,t}(o,i.pageOffset,i.target||e);return!!l&&!(F()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==l.buttons&&l.buttons>1)&&(!i.hover||!l.buttons)&&(y||l.preventDefault(),l.calcPoint=l.points[r.ort],void n(l,i)))},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!y&&{passive:!0}),s.push([t,o])})),s}function K(t){var e,n,i,o,s,l,c=100*(t-(e=a,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,s=o.documentElement,l=h(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(l.x=0),n?i.top+l.y-s.clientTop:i.left+l.x-s.clientLeft))/$();return c=u(c),r.dir?100-c:c}function Q(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&tt(t,e)}function Z(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return tt(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);ut(n>0,100*n/e.baseSize,e.locations,e.handleNumbers,e.connect)}function tt(t,e){e.handle&&(d(e.handle,r.cssClasses.active),M-=1),e.listeners.forEach((function(t){D.removeEventListener(t[0],t[1])})),0===M&&(d(w,r.cssClasses.drag),pt(),t.cursor&&(O.style.cursor=\"\",O.removeEventListener(\"selectstart\",s))),e.handleNumbers.forEach((function(t){st(\"change\",t),st(\"set\",t),st(\"end\",t)}))}function et(t,e){if(!e.handleNumbers.some(R)){var n;1===e.handleNumbers.length&&(n=p[e.handleNumbers[0]].children[0],M+=1,f(n,r.cssClasses.active)),t.stopPropagation();var i=[],o=J(x.move,D,Z,{target:t.target,handle:n,connect:e.connect,listeners:i,startCalcPoint:t.calcPoint,baseSize:$(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:V.slice()}),a=J(x.end,D,tt,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers}),l=J(\"mouseout\",D,Q,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers});i.push.apply(i,o.concat(a,l)),t.cursor&&(O.style.cursor=getComputedStyle(t.target).cursor,p.length>1&&f(w,r.cssClasses.drag),O.addEventListener(\"selectstart\",s,!1)),e.handleNumbers.forEach((function(t){st(\"start\",t)}))}}function rt(t){t.stopPropagation();var e=K(t.calcPoint),n=function(t){var e=100,r=!1;return p.forEach((function(n,i){if(!R(i)){var o=V[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);!1!==n&&(r.events.snap||l(w,r.cssClasses.tap,r.animationDuration),ft(n,e,!0,!0),pt(),st(\"slide\",n,!0),st(\"update\",n,!0),r.events.snap?et(t,{handleNumbers:[n]}):(st(\"change\",n,!0),st(\"set\",n,!0)))}function nt(t){var e=K(t.calcPoint),r=C.getStep(e),n=C.fromStepping(r);Object.keys(A).forEach((function(t){\"hover\"===t.split(\".\")[0]&&A[t].forEach((function(t){t.call(bt,n)}))}))}function it(t,e){A[t]=A[t]||[],A[t].push(e),\"update\"===t.split(\".\")[0]&&p.forEach((function(t,e){st(\"update\",e)}))}function ot(t){var e=t&&t.split(\".\")[0],r=e?t.substring(e.length):t;Object.keys(A).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||function(t){return t===P||t===E}(i)&&r!==i||delete A[t]}))}function st(t,e,n){Object.keys(A).forEach((function(i){var o=i.split(\".\")[0];t===o&&A[i].forEach((function(t){t.call(bt,N.map(r.format.to),e,N.slice(),n||!1,V.slice(),bt)}))}))}function at(t,e,n,i,o,s){var a;return p.length>1&&!r.events.unconstrained&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.margin,!1),n=Math.max(n,a)),o&&e1&&r.limit&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.limit,!1),n=Math.min(n,a)),o&&e1?n.forEach((function(t,r){var n=at(o,t,o[t]+e,a[r],l[r],!1);!1===n?e=0:(e=n-o[t],o[t]=n)})):a=l=[!0];var u=!1;n.forEach((function(t,n){u=ft(t,r[t]+e,a[n],l[n])||u})),u&&(n.forEach((function(t){st(\"update\",t),st(\"slide\",t)})),null!=i&&st(\"drag\",s))}function ct(t,e){return r.dir?100-t-e:t}function pt(){k.forEach((function(t){var e=V[t]>50?-1:1,r=3+(p.length+e*t);p[t].style.zIndex=String(r)}))}function ft(t,e,n,i,o){return o||(e=at(V,t,e,n,i,!1)),!1!==e&&(function(t,e){V[t]=e,N[t]=C.fromStepping(e);var n=\"translate(\"+lt(10*(ct(e,0)-L)+\"%\",\"0\")+\")\";p[t].style[r.transformRule]=n,dt(t),dt(t+1)}(t,e),!0)}function dt(t){if(m[t]){var e=0,n=100;0!==t&&(e=V[t-1]),t!==m.length-1&&(n=V[t]);var i=n-e,o=\"translate(\"+lt(ct(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+lt(i/100,\"1\")+\")\";m[t].style[r.transformRule]=o+\" \"+s}}function ht(t,e){return null===t||!1===t||void 0===t?V[e]:(\"number\"==typeof t&&(t=String(t)),!1!==(t=r.format.from(t))&&(t=C.toStepping(t)),!1===t||isNaN(t)?V[e]:t)}function mt(t,e,n){var i=c(t),o=void 0===V[0];e=void 0===e||e,r.animate&&!o&&l(w,r.cssClasses.tap,r.animationDuration),k.forEach((function(t){ft(t,ht(i[t],t),!0,!1,n)}));var s=1===k.length?0:1;if(o&&C.hasNoSize()&&(n=!0,V[0]=0,k.length>1)){var a=100/(k.length-1);k.forEach((function(t){V[t]=t*a}))}for(;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=C.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}f(b=w,r.cssClasses.target),0===r.dir?f(b,r.cssClasses.ltr):f(b,r.cssClasses.rtl),0===r.ort?f(b,r.cssClasses.horizontal):f(b,r.cssClasses.vertical),f(b,\"rtl\"===getComputedStyle(b).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),a=T(b,r.cssClasses.base),function(t,e){var n=T(e,r.cssClasses.connects);p=[],(m=[]).push(z(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip{-webkit-transform:translate(50%, 0);transform:translate(50%, 0);left:auto;bottom:10px;}.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip{-webkit-transform:translate(0, -18px);transform:translate(0, -18px);top:auto;right:28px;}.bk-root .noUi-handle{cursor:grab;cursor:-webkit-grab;}.bk-root .noUi-handle.noUi-active{cursor:grabbing;cursor:-webkit-grabbing;}.bk-root .noUi-handle:after,.bk-root .noUi-handle:before{display:none;}.bk-root .noUi-tooltip{display:none;white-space:nowrap;}.bk-root .noUi-handle:hover .noUi-tooltip{display:block;}.bk-root .noUi-horizontal{width:100%;height:10px;}.bk-root .noUi-vertical{width:10px;height:100%;}.bk-root .noUi-horizontal .noUi-handle{width:14px;height:18px;right:-7px;top:-5px;}.bk-root .noUi-vertical .noUi-handle{width:18px;height:14px;right:-5px;top:-7px;}.bk-root .noUi-target.noUi-horizontal{margin:5px 0px;}.bk-root .noUi-target.noUi-vertical{margin:0px 5px;}'},\n", + " 465: function _(e,t,r,a,i){a();var s;const d=(0,e(1).__importDefault)(e(151)),o=e(461),_=e(8);class n extends o.AbstractSliderView{}r.DateSliderView=n,n.__name__=\"DateSliderView\";class c extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,_.isString)(t)?(0,d.default)(e,t):t.compute(e)}}r.DateSlider=c,s=c,c.__name__=\"DateSlider\",s.prototype.default_view=n,s.override({format:\"%d %b %Y\"})},\n", + " 466: function _(e,t,r,a,i){a();var n;const s=(0,e(1).__importDefault)(e(151)),d=e(461),o=e(8);class _ extends d.AbstractRangeSliderView{}r.DatetimeRangeSliderView=_,_.__name__=\"DatetimeRangeSliderView\";class c extends d.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,t){return(0,o.isString)(t)?(0,s.default)(e,t):t.compute(e)}}r.DatetimeRangeSlider=c,n=c,c.__name__=\"DatetimeRangeSlider\",n.prototype.default_view=_,n.override({format:\"%d %b %Y %H:%M:%S\",step:36e5})},\n", + " 467: function _(e,t,s,r,i){var _;r();const n=e(468);class a extends n.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.has_math_disabled()?this.model.text:this.process_tex()}}s.DivView=a,a.__name__=\"DivView\";class d extends n.Markup{constructor(e){super(e)}}s.Div=d,_=d,d.__name__=\"Div\",_.prototype.default_view=a,_.define((({Boolean:e})=>({render_as_text:[e,!1]})))},\n", + " 468: function _(t,e,s,i,r){i();const a=t(1);var n;const o=t(210),d=t(43),h=t(137),l=t(512),_=(0,a.__importStar)(t(469));class u extends l.WidgetView{get provider(){return h.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>{this.contains_tex_string()&&this.rerender()}))}after_layout(){super.after_layout(),\"loading\"===this.provider.status&&(this._has_finished=!1)}rerender(){this.layout.invalidate_cache(),this.render(),this.root.compute_layout()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>{this.rerender()}))}styles(){return[...super.styles(),_.default]}_update_layout(){this.layout=new o.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const t=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=(0,d.div)({class:_.clearfix,style:t}),this.el.appendChild(this.markup_el),\"failed\"!=this.provider.status&&\"loaded\"!=this.provider.status||(this._has_finished=!0)}has_math_disabled(){return this.model.disable_math||!this.contains_tex_string()}process_tex(){if(!this.provider.MathJax)return this.model.text;const{text:t}=this.model,e=this.provider.MathJax.find_tex(t),s=[];let i=0;for(const r of e)s.push(t.slice(i,r.start.n)),s.push(this.provider.MathJax.tex2svg(r.math,{display:r.display}).outerHTML),i=r.end.n;return i0}}s.MarkupView=u,u.__name__=\"MarkupView\";class p extends l.Widget{constructor(t){super(t)}}s.Markup=p,n=p,p.__name__=\"Markup\",n.define((({Boolean:t,String:e,Dict:s})=>({text:[e,\"\"],style:[s(e),{}],disable_math:[t,!1]})))},\n", + " 469: function _(o,r,e,t,a){t(),e.root=\"bk-root\",e.clearfix=\"bk-clearfix\",e.default='.bk-root .bk-clearfix:before,.bk-root .bk-clearfix:after{content:\"\";display:table;}.bk-root .bk-clearfix:after{clear:both;}'},\n", + " 470: function _(e,t,i,n,s){n();const o=e(1);var l;const r=e(441),d=e(251),_=e(43),u=e(8),c=(0,o.__importStar)(e(318)),h=(0,o.__importStar)(e(229)),m=h;class p extends r.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=(0,_.div)({class:[m.caret,m.down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(c.dropdown_toggle),t.addEventListener(\"click\",(()=>this._toggle_menu())),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map(((e,t)=>{if(null==e)return(0,_.div)({class:m.divider});{const i=(0,u.isString)(e)?e:e[0],n=(0,_.div)(i);return n.addEventListener(\"click\",(()=>this._item_click(t))),n}}));this.menu=(0,_.div)({class:[m.menu,m.below]},t),this.el.appendChild(this.menu),(0,_.undisplay)(this.menu)}_show_menu(){if(!this._open){this._open=!0,(0,_.display)(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,_.undisplay)(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new d.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=(0,u.isString)(t)?t:t[1];(0,u.isString)(i)?this.model.trigger_event(new d.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class a extends r.AbstractButton{constructor(e){super(e)}get is_split(){return this.split}}i.Dropdown=a,l=a,a.__name__=\"Dropdown\",l.prototype.default_view=p,l.define((({Null:e,Boolean:t,String:i,Array:n,Tuple:s,Or:o})=>({split:[t,!1],menu:[n(o(i,s(i,o(i)),e)),[]]}))),l.override({label:\"Dropdown\"})},\n", + " 471: function _(e,l,i,t,s){var n;t();const a=e(43),o=e(512);class d extends o.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}render(){const{multiple:e,accept:l,disabled:i,width:t}=this.model;null==this.dialog_el&&(this.dialog_el=(0,a.input)({type:\"file\",multiple:e}),this.dialog_el.onchange=()=>{const{files:e}=this.dialog_el;null!=e&&this.load_files(e)},this.el.appendChild(this.dialog_el)),null!=l&&\"\"!=l&&(this.dialog_el.accept=l),this.dialog_el.style.width=`${t}px`,this.dialog_el.disabled=i}async load_files(e){const l=[],i=[],t=[];for(const s of e){const e=await this._read_file(s),[,n=\"\",,a=\"\"]=e.split(/[:;,]/,4);l.push(a),i.push(s.name),t.push(n)}this.model.multiple?this.model.setv({value:l,filename:i,mime_type:t}):this.model.setv({value:l[0],filename:i[0],mime_type:t[0]})}_read_file(e){return new Promise(((l,i)=>{const t=new FileReader;t.onload=()=>{var s;const{result:n}=t;null!=n?l(n):i(null!==(s=t.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},t.readAsDataURL(e)}))}}i.FileInputView=d,d.__name__=\"FileInputView\";class r extends o.Widget{constructor(e){super(e)}}i.FileInput=r,n=r,r.__name__=\"FileInput\",n.prototype.default_view=d,n.define((({Boolean:e,String:l,Array:i,Or:t})=>({value:[t(l,i(l)),\"\"],mime_type:[t(l,i(l)),\"\"],filename:[t(l,i(l)),\"\"],accept:[l,\"\"],multiple:[e,!1]})))},\n", + " 472: function _(e,t,i,s,n){s();const l=e(1);var o;const r=e(43),c=e(8),h=e(448),p=(0,l.__importStar)(e(449));class d extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,(()=>this.render_selection())),this.connect(this.model.properties.options.change,(()=>this.render())),this.connect(this.model.properties.name.change,(()=>this.render())),this.connect(this.model.properties.title.change,(()=>this.render())),this.connect(this.model.properties.size.change,(()=>this.render())),this.connect(this.model.properties.disabled.change,(()=>this.render()))}render(){super.render();const e=this.model.options.map((e=>{let t,i;return(0,c.isString)(e)?t=i=e:[t,i]=e,(0,r.option)({value:t},i)}));this.input_el=(0,r.select)({multiple:!0,class:p.input,name:this.model.name,disabled:this.model.disabled},e),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.input_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiSelectView=d,d.__name__=\"MultiSelectView\";class u extends h.InputWidget{constructor(e){super(e)}}i.MultiSelect=u,o=u,u.__name__=\"MultiSelect\",o.prototype.default_view=d,o.define((({Int:e,String:t,Array:i,Tuple:s,Or:n})=>({value:[i(t),[]],options:[i(n(t,s(t,t))),[]],size:[e,4]})))},\n", + " 473: function _(e,a,r,t,s){var n;t();const p=e(468),_=e(43);class i extends p.MarkupView{render(){super.render();const e=(0,_.p)({style:{margin:0}});this.has_math_disabled()?e.textContent=this.model.text:e.innerHTML=this.process_tex(),this.markup_el.appendChild(e)}}r.ParagraphView=i,i.__name__=\"ParagraphView\";class h extends p.Markup{constructor(e){super(e)}}r.Paragraph=h,n=h,h.__name__=\"Paragraph\",n.prototype.default_view=i},\n", + " 474: function _(e,s,t,n,r){var p;n();const u=e(446);class a extends u.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}t.PasswordInputView=a,a.__name__=\"PasswordInputView\";class o extends u.TextInput{constructor(e){super(e)}}t.PasswordInput=o,p=o,o.__name__=\"PasswordInput\",p.prototype.default_view=a},\n", + " 475: function _(e,t,i,l,s){l();const o=e(1);var n;const h=(0,o.__importDefault)(e(476)),a=e(43),u=e(8),c=e(210),_=(0,o.__importStar)(e(449)),d=(0,o.__importDefault)(e(477)),r=e(448);class m extends r.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,(()=>this.set_disabled()));const{value:e,max_items:t,option_limit:i,search_option_limit:l,delete_button:s,placeholder:o,options:n,name:h,title:a}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h,a],(()=>this.render()))}styles(){return[...super.styles(),d.default]}_update_layout(){this.layout=new c.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.input_el=(0,a.select)({multiple:!0,class:_.input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el);const e=new Set(this.model.value),t=this.model.options.map((t=>{let i,l;return(0,u.isString)(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}})),i=this.model.solid?\"solid\":\"light\",l=`choices__item ${i}`,s=`choices__button ${i}`,o={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:s}};null!=this.model.placeholder&&(o.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(o.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(o.renderChoiceLimit=this.model.option_limit),null!=this.model.search_option_limit&&(o.searchResultLimit=this.model.search_option_limit),this.choice_el=new h.default(this.input_el,o);const n=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=n()&&this.root.invalidate_layout(),this._last_height=n(),this.input_el.addEventListener(\"change\",(()=>this.change_input()))}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiChoiceView=m,m.__name__=\"MultiChoiceView\";class p extends r.InputWidget{constructor(e){super(e)}}i.MultiChoice=p,n=p,p.__name__=\"MultiChoice\",n.prototype.default_view=m,n.define((({Boolean:e,Int:t,String:i,Array:l,Tuple:s,Or:o,Nullable:n})=>({value:[l(i),[]],options:[l(o(i,s(i,i))),[]],max_items:[n(t),null],delete_button:[e,!0],placeholder:[n(i),null],option_limit:[n(t),null],search_option_limit:[n(t),null],solid:[e,!0]})))},\n", + " 476: function _(e,t,i,n,s){\n", + " /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n", + " var r,o;r=window,o=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n", + " /*!\n", + " * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n", + " *\n", + " * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n", + " * All Rights Reserved. Apache Software License 2.0\n", + " *\n", + " * http://www.apache.org/licenses/LICENSE-2.0\n", + " */\n", + " e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=\"text\",oe=\"select-one\",ae=\"select-multiple\",ce=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function le(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function de(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},be=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ye=function(e,t){return{type:$,id:e,highlighted:t}},Ee=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},Ie=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function Se(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ye(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ye(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(be(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(be(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(be(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1,p=\"[data-choice-selectable]\";if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(p);else{var m=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=m?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(m,p,d):this.dropdown.element.querySelector(p)}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(we&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(Ee({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(Ee({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;r{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value})),this.connect(this.model.properties.low.change,(()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&e{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&e>l&&(this.model.value=l)})),this.connect(this.model.properties.high.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder))}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",(()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}}))}render(){super.render(),this.input_el=(0,r.input)({type:\"text\",class:_.input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.input_el.addEventListener(\"focusout\",(()=>this.input_el.value=this.format_value)),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter((e=>m.test(e))):\"float\"==this.model.mode&&this._set_input_filter((e=>c.test(e)))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!=this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=v,v.__name__=\"NumericInputView\";class g extends o.InputWidget{constructor(e){super(e)}_formatter(e,t){return(0,d.isString)(t)?h.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):`${e}`}}l.NumericInput=g,u=g,g.__name__=\"NumericInput\",u.prototype.default_view=v,u.define((({Number:e,String:t,Enum:l,Ref:i,Or:n,Nullable:s})=>({value:[s(e),null],placeholder:[t,\"\"],mode:[l(\"int\",\"float\"),\"int\"],format:[s(n(t,i(a.TickFormatter))),null],low:[s(e),null],high:[s(e),null]})))},\n", + " 479: function _(e,t,r,s,n){var a;s();const o=e(468),_=e(43);class p extends o.MarkupView{render(){super.render();const e=(0,_.pre)({style:{overflow:\"auto\"}},this.model.text);this.markup_el.appendChild(e)}}r.PreTextView=p,p.__name__=\"PreTextView\";class u extends o.Markup{constructor(e){super(e)}}r.PreText=u,a=u,u.__name__=\"PreText\",a.prototype.default_view=p},\n", + " 480: function _(t,o,e,a,i){a();const n=t(1);var u;const s=t(452),c=t(43),_=(0,n.__importStar)(t(318));class r extends s.ButtonGroupView{change_active(t){this.model.active!==t&&(this.model.active=t)}_update_active(){const{active:t}=this.model;this._buttons.forEach(((o,e)=>{(0,c.classes)(o).toggle(_.active,t===e)}))}}e.RadioButtonGroupView=r,r.__name__=\"RadioButtonGroupView\";class l extends s.ButtonGroup{constructor(t){super(t)}}e.RadioButtonGroup=l,u=l,l.__name__=\"RadioButtonGroup\",u.prototype.default_view=r,u.define((({Int:t,Nullable:o})=>({active:[o(t),null]})))},\n", + " 481: function _(e,n,i,t,a){t();const s=e(1);var l;const o=e(43),d=e(34),p=e(455),r=(0,s.__importStar)(e(449));class u extends p.InputGroupView{render(){super.render();const e=(0,o.div)({class:[r.input_group,this.model.inline?r.inline:null]});this.el.appendChild(e);const n=(0,d.uniqueId)(),{active:i,labels:t}=this.model;this._inputs=[];for(let a=0;athis.change_active(a))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),a==i&&(s.checked=!0);const l=(0,o.label)(s,(0,o.span)(t[a]));e.appendChild(l)}}change_active(e){this.model.active=e}}i.RadioGroupView=u,u.__name__=\"RadioGroupView\";class c extends p.InputGroup{constructor(e){super(e)}}i.RadioGroup=c,l=c,c.__name__=\"RadioGroup\",l.prototype.default_view=u,l.define((({Boolean:e,Int:n,String:i,Array:t,Nullable:a})=>({active:[a(n),null],labels:[t(i),[]],inline:[e,!1]})))},\n", + " 482: function _(e,r,t,a,i){a();var n;const o=(0,e(1).__importStar)(e(153)),s=e(461),_=e(8);class d extends s.AbstractRangeSliderView{}t.RangeSliderView=d,d.__name__=\"RangeSliderView\";class c extends s.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,r){return(0,_.isString)(r)?o.format(e,r):r.compute(e)}}t.RangeSlider=c,n=c,c.__name__=\"RangeSlider\",n.prototype.default_view=d,n.override({format:\"0[.]00\"})},\n", + " 483: function _(e,t,n,s,i){s();const l=e(1);var u;const a=e(43),o=e(8),p=e(13),_=e(448),r=(0,l.__importStar)(e(449));class c extends _.InputWidgetView{constructor(){super(...arguments),this._known_values=new Set}connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,(()=>{this._update_value()})),this.on_change(t,(()=>{(0,a.empty)(this.input_el),(0,a.append)(this.input_el,...this.options_el()),this._update_value()}))}options_el(){const{_known_values:e}=this;function t(t){return t.map((t=>{let n,s;return(0,o.isString)(t)?n=s=t:[n,s]=t,e.add(n),(0,a.option)({value:n},s)}))}e.clear();const{options:n}=this.model;return(0,o.isArray)(n)?t(n):(0,p.entries)(n).map((([e,n])=>(0,a.optgroup)({label:e},t(n))))}render(){super.render(),this.input_el=(0,a.select)({class:r.input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;this._known_values.has(e)?this.input_el.value=e:this.input_el.removeAttribute(\"value\")}}n.SelectView=c,c.__name__=\"SelectView\";class h extends _.InputWidget{constructor(e){super(e)}}n.Select=h,u=h,h.__name__=\"Select\",u.prototype.default_view=c,u.define((({String:e,Array:t,Tuple:n,Dict:s,Or:i})=>{const l=t(i(e,n(e,e)));return{value:[e,\"\"],options:[i(l,s(l)),[]]}}))},\n", + " 484: function _(e,t,r,i,a){i();var o;const s=(0,e(1).__importStar)(e(153)),_=e(461),n=e(8);class c extends _.AbstractSliderView{}r.SliderView=c,c.__name__=\"SliderView\";class d extends _.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,n.isString)(t)?s.format(e,t):t.compute(e)}}r.Slider=d,o=d,d.__name__=\"Slider\",o.prototype.default_view=c,o.override({format:\"0[.]00\"})},\n", + " 485: function _(e,t,i,n,s){var l;n();const o=e(478),r=e(43),{min:a,max:h,floor:_,abs:u}=Math;function d(e){return _(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends o.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._handles={interval:void 0,timeout:void 0},this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,(()=>{for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled)}))}render(){super.render(),this.wrapper_el=(0,r.div)({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",(e=>this._btn_mouse_down(e))),e.addEventListener(\"mouseup\",(()=>this._btn_mouse_up())),e.addEventListener(\"mouseleave\",(()=>this._btn_mouse_leave()));this.input_el.addEventListener(\"keydown\",(e=>this._input_key_down(e))),this.input_el.addEventListener(\"keyup\",(()=>this.model.value_throttled=this.model.value)),this.input_el.addEventListener(\"wheel\",(e=>this._input_mouse_wheel(e))),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,o=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),o&&e.apply(l,s)}}((()=>{this.model.value_throttled=this.model.value}),this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model,n=d;return h(n(u(null!=e?e:0)),n(u(null!=t?t:0)),n(u(i)))}remove(){this._stop_incrementation(),super.remove()}_start_incrementation(e){clearInterval(this._handles.interval),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(e)),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(2*e)),this._interval/10))}this.increment(e)};this._handles.interval=setInterval((()=>i(e*t)),this._interval)}_stop_incrementation(){clearTimeout(this._handles.timeout),this._handles.timeout=void 0,clearInterval(this._handles.interval),this._handles.interval=void 0,this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._handles.timeout=setTimeout((()=>this._start_incrementation(t)),this._interval)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?a(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?h(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class m extends o.NumericInput{constructor(e){super(e)}}i.Spinner=m,l=m,m.__name__=\"Spinner\",l.prototype.default_view=p,l.define((({Number:e,Nullable:t})=>({value_throttled:[t(e),null],step:[e,1],page_step_multiplier:[e,10],wheel_wait:[e,100]}))),l.override({mode:\"float\"})},\n", + " 486: function _(e,t,s,n,i){n();const o=e(1);var r;const c=e(447),l=e(43),p=(0,o.__importStar)(e(449));class _ extends c.TextLikeInputView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.rows.change,(()=>this.input_el.rows=this.model.rows)),this.connect(this.model.properties.cols.change,(()=>this.input_el.cols=this.model.cols))}_render_input(){this.input_el=(0,l.textarea)({class:p.input})}render(){super.render(),this.input_el.cols=this.model.cols,this.input_el.rows=this.model.rows}}s.TextAreaInputView=_,_.__name__=\"TextAreaInputView\";class a extends c.TextLikeInput{constructor(e){super(e)}}s.TextAreaInput=a,r=a,a.__name__=\"TextAreaInput\",r.prototype.default_view=_,r.define((({Int:e})=>({cols:[e,20],rows:[e,2]}))),r.override({max_length:500})},\n", + " 487: function _(e,t,s,c,i){c();const o=e(1);var a;const n=e(441),l=e(43),_=(0,o.__importStar)(e(318));class r extends n.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._update_active()))}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){(0,l.classes)(this.button_el).toggle(_.active,this.model.active)}}s.ToggleView=r,r.__name__=\"ToggleView\";class g extends n.AbstractButton{constructor(e){super(e)}}s.Toggle=g,a=g,g.__name__=\"Toggle\",a.prototype.default_view=r,a.define((({Boolean:e})=>({active:[e,!1]}))),a.override({label:\"Toggle\"})},\n", + " }, 439, {\"models/widgets/main\":439,\"models/widgets/index\":440,\"models/widgets/abstract_button\":441,\"models/widgets/control\":442,\"models/widgets/widget\":512,\"models/widgets/abstract_icon\":444,\"models/widgets/autocomplete_input\":445,\"models/widgets/text_input\":446,\"models/widgets/text_like_input\":447,\"models/widgets/input_widget\":448,\"styles/widgets/inputs.css\":449,\"models/widgets/button\":450,\"models/widgets/checkbox_button_group\":451,\"models/widgets/button_group\":452,\"models/widgets/oriented_control\":453,\"models/widgets/checkbox_group\":454,\"models/widgets/input_group\":455,\"models/widgets/color_picker\":456,\"models/widgets/date_picker\":457,\"styles/widgets/flatpickr.css\":459,\"models/widgets/date_range_slider\":460,\"models/widgets/abstract_slider\":461,\"styles/widgets/sliders.css\":463,\"styles/widgets/nouislider.css\":464,\"models/widgets/date_slider\":465,\"models/widgets/datetime_range_slider\":466,\"models/widgets/div\":467,\"models/widgets/markup\":468,\"styles/clearfix.css\":469,\"models/widgets/dropdown\":470,\"models/widgets/file_input\":471,\"models/widgets/multiselect\":472,\"models/widgets/paragraph\":473,\"models/widgets/password_input\":474,\"models/widgets/multichoice\":475,\"styles/widgets/choices.css\":477,\"models/widgets/numeric_input\":478,\"models/widgets/pretext\":479,\"models/widgets/radio_button_group\":480,\"models/widgets/radio_group\":481,\"models/widgets/range_slider\":482,\"models/widgets/selectbox\":483,\"models/widgets/slider\":484,\"models/widgets/spinner\":485,\"models/widgets/textarea_input\":486,\"models/widgets/toggle\":487}, {});});\n", + "\n", + " /* END bokeh-widgets.min.js */\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-tables.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.4.3\");\n", + " })(this, function(Bokeh, version) {\n", + " let define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 488: function _(t,e,o,r,s){r();const _=(0,t(1).__importStar)(t(489));o.Tables=_;(0,t(7).register_models)(_)},\n", + " 489: function _(g,a,r,e,t){e();const o=g(1);(0,o.__exportStar)(g(490),r),(0,o.__exportStar)(g(493),r),t(\"DataTable\",g(496).DataTable),t(\"TableColumn\",g(514).TableColumn),t(\"TableWidget\",g(513).TableWidget);var n=g(516);t(\"AvgAggregator\",n.AvgAggregator),t(\"MinAggregator\",n.MinAggregator),t(\"MaxAggregator\",n.MaxAggregator),t(\"SumAggregator\",n.SumAggregator);var A=g(517);t(\"GroupingInfo\",A.GroupingInfo),t(\"DataCube\",A.DataCube)},\n", + " 490: function _(e,t,i,s,a){s();const r=e(1);var l,n,u,d,o,p,_,c,h;const E=e(43),V=e(226),m=e(53),f=e(491),v=(0,r.__importStar)(e(492));class w extends V.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(v.cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",(e=>{switch(e.keyCode){case E.Keys.Left:case E.Keys.Right:case E.Keys.Up:case E.Keys.Down:case E.Keys.PageUp:case E.Keys.PageDown:e.stopImmediatePropagation()}}))}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[f.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=w,w.__name__=\"CellEditorView\";class g extends m.Model{}i.CellEditor=g,g.__name__=\"CellEditor\";class x extends w{get emptyValue(){return\"\"}_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=x,x.__name__=\"StringEditorView\";class y extends g{}i.StringEditor=y,l=y,y.__name__=\"StringEditor\",l.prototype.default_view=x,l.define((({String:e,Array:t})=>({completions:[t(e),[]]})));class I extends w{_createInput(){return(0,E.textarea)()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=I,I.__name__=\"TextEditorView\";class b extends g{}i.TextEditor=b,n=b,b.__name__=\"TextEditor\",n.prototype.default_view=I;class N extends w{_createInput(){return(0,E.select)()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild((0,E.option)({value:e},e));this.focus()}}i.SelectEditorView=N,N.__name__=\"SelectEditorView\";class C extends g{}i.SelectEditor=C,u=C,C.__name__=\"SelectEditor\",u.prototype.default_view=N,u.define((({String:e,Array:t})=>({options:[t(e),[]]})));class D extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.PercentEditorView=D,D.__name__=\"PercentEditorView\";class S extends g{}i.PercentEditor=S,d=S,S.__name__=\"PercentEditor\",d.prototype.default_view=D;class k extends w{_createInput(){return(0,E.input)({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=k,k.__name__=\"CheckboxEditorView\";class z extends g{}i.CheckboxEditor=z,o=z,z.__name__=\"CheckboxEditor\",o.prototype.default_view=k;class P extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseInt(this.getValue(),10))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=P,P.__name__=\"IntEditorView\";class T extends g{}i.IntEditor=T,p=T,T.__name__=\"IntEditor\",p.prototype.default_view=P,p.define((({Int:e})=>({step:[e,1]})));class K extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseFloat(this.getValue()))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=K,K.__name__=\"NumberEditorView\";class A extends g{}i.NumberEditor=A,_=A,A.__name__=\"NumberEditor\",_.prototype.default_view=K,_.define((({Number:e})=>({step:[e,.01]})));class M extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.TimeEditorView=M,M.__name__=\"TimeEditorView\";class O extends g{}i.TimeEditor=O,c=O,O.__name__=\"TimeEditor\",c.prototype.default_view=M;class F extends w{_createInput(){return(0,E.input)({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=F,F.__name__=\"DateEditorView\";class L extends g{}i.DateEditor=L,h=L,L.__name__=\"DateEditor\",h.prototype.default_view=F},\n", + " 491: function _(_,n,i,t,d){t(),i.DTINDEX_NAME=\"__bkdt_internal_index__\"},\n", + " 492: function _(e,l,o,t,r){t(),o.root=\"bk-root\",o.data_table=\"bk-data-table\",o.cell_special_defaults=\"bk-cell-special-defaults\",o.cell_select=\"bk-cell-select\",o.cell_index=\"bk-cell-index\",o.header_index=\"bk-header-index\",o.cell_editor=\"bk-cell-editor\",o.cell_editor_completion=\"bk-cell-editor-completion\",o.default='.bk-root .bk-data-table{box-sizing:content-box;font-size:11px;}.bk-root .bk-data-table input[type=\"checkbox\"]{margin-left:4px;margin-right:4px;}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .slick-cell.bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;background:#f0f0f0;color:#909090;}.bk-root .bk-header-index .slick-column-name{float:right;}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent;}.bk-root .slick-row.odd{background:#f0f0f0;}.bk-root .slick-cell{padding-left:4px;padding-right:4px;border-right-color:transparent;border:0.25px solid transparent;}.bk-root .slick-cell .bk{line-height:inherit;}.bk-root .slick-cell.active{border-style:dashed;}.bk-root .slick-cell.selected{background-color:#F0F8FF;}.bk-root .slick-cell.editable{padding-left:0;padding-right:0;}.bk-root .bk-cell-editor{display:contents;}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline;}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px;}.bk-root .bk-cell-editor-completion{font-size:11px;}'},\n", + " 493: function _(t,e,r,n,o){n();const a=t(1);var s,i,l,c,u,m;const _=(0,a.__importDefault)(t(151)),d=(0,a.__importStar)(t(153)),f=t(494),g=t(43),F=t(20),h=t(8),p=t(34),S=t(22),x=t(53);class b extends x.Model{constructor(t){super(t)}doFormat(t,e,r,n,o){return null==r?\"\":`${r}`.replace(/&/g,\"&\").replace(//g,\">\")}}r.CellFormatter=b,b.__name__=\"CellFormatter\";class M extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{font_style:a,text_align:s,text_color:i}=this,l=(0,g.div)(null==r?\"\":`${r}`);switch(a){case\"bold\":l.style.fontWeight=\"bold\";break;case\"italic\":l.style.fontStyle=\"italic\"}return null!=s&&(l.style.textAlign=s),null!=i&&(l.style.color=(0,S.color2css)(i)),l.outerHTML}}r.StringFormatter=M,s=M,M.__name__=\"StringFormatter\",s.define((({Color:t,Nullable:e,String:r})=>({font_style:[F.FontStyle,\"normal\"],text_align:[F.TextAlign,\"left\"],text_color:[e(t),null],nan_format:[r,\"-\"]})));class w extends M{constructor(t){super(t)}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}doFormat(t,e,r,n,o){const a=Math.abs(r)<=this.scientific_limit_low||Math.abs(r)>=this.scientific_limit_high;let s=this.precision;return s<1&&(s=1),r=null==r||isNaN(r)?this.nan_format:0==r?(0,p.to_fixed)(r,1):a?r.toExponential(s):(0,p.to_fixed)(r,s),super.doFormat(t,e,r,n,o)}}r.ScientificFormatter=w,i=w,w.__name__=\"ScientificFormatter\",i.define((({Number:t})=>({precision:[t,10],power_limit_high:[t,5],power_limit_low:[t,-3]})));class C extends M{constructor(t){super(t)}doFormat(t,e,r,n,o){const{format:a,language:s,nan_format:i}=this,l=(()=>{switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}})();return r=null==r||isNaN(r)?i:d.format(r,a,s,l),super.doFormat(t,e,r,n,o)}}r.NumberFormatter=C,l=C,C.__name__=\"NumberFormatter\",l.define((({String:t})=>({format:[t,\"0,0\"],language:[t,\"en\"],rounding:[F.RoundingFunction,\"round\"]})));class y extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){return r?(0,g.i)({class:this.icon}).outerHTML:\"\"}}r.BooleanFormatter=y,c=y,y.__name__=\"BooleanFormatter\",c.define((({String:t})=>({icon:[t,\"check\"]})));class N extends M{constructor(t){super(t)}getFormat(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}}doFormat(t,e,r,n,o){const{nan_format:a}=this;let s;return s=null==(r=(0,h.isString)(r)?parseInt(r,10):r)||isNaN(r)||-9223372036854776===r?a:(0,_.default)(r,this.getFormat()),super.doFormat(t,e,s,n,o)}}r.DateFormatter=N,u=N,N.__name__=\"DateFormatter\",u.define((({String:t})=>({format:[t,\"ISO-8601\"]})));class T extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{template:a}=this;if(null==r)return\"\";return f._.template(a)(Object.assign(Object.assign({},o),{value:r}))}}r.HTMLTemplateFormatter=T,m=T,T.__name__=\"HTMLTemplateFormatter\",m.define((({String:t})=>({template:[t,\"<%= value %>\"]})))},\n", + " 494: function _(e,n,t,f,i){var o=e(495),d=o.template;function r(e,n,t){return d(e,n,t)}r._=o,n.exports=r,\"function\"==typeof define&&define.amd?define((function(){return r})):\"undefined\"==typeof window&&\"undefined\"==typeof navigator||(window.UnderscoreTemplate=r)},\n", + " 495: function _(r,e,n,t,a){\n", + " // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " var u={},c=Array.prototype,o=Object.prototype,l=c.slice,i=o.toString,f=o.hasOwnProperty,s=c.forEach,p=Object.keys,_=Array.isArray,h=function(){},v=h.each=h.forEach=function(r,e,n){if(null!=r)if(s&&r.forEach===s)r.forEach(e,n);else if(r.length===+r.length){for(var t=0,a=r.length;t\":\">\",'\"':\""\",\"'\":\"'\"}},y={escape:new RegExp(\"[\"+h.keys(g.escape).join(\"\")+\"]\",\"g\")};h.each([\"escape\"],(function(r){h[r]=function(e){return null==e?\"\":(\"\"+e).replace(y[r],(function(e){return g[r][e]}))}})),h.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var j=/(.)^/,b={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\t\":\"t\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},w=/\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;h.template=function(r,e,n){var t;n=h.defaults({},n,h.templateSettings);var a=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join(\"|\")+\"|$\",\"g\"),u=0,c=\"__p+='\";r.replace(a,(function(e,n,t,a,o){return c+=r.slice(u,o).replace(w,(function(r){return\"\\\\\"+b[r]})),n&&(c+=\"'+\\n((__t=(\"+n+\"))==null?'':_.escape(__t))+\\n'\"),t&&(c+=\"'+\\n((__t=(\"+t+\"))==null?'':__t)+\\n'\"),a&&(c+=\"';\\n\"+a+\"\\n__p+='\"),u=o+e.length,e})),c+=\"';\\n\",n.variable||(c=\"with(obj||{}){\\n\"+c+\"}\\n\"),c=\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\n\"+c+\"return __p;\\n\";try{t=new Function(n.variable||\"obj\",\"_\",c)}catch(r){throw r.source=c,r}if(e)return t(e,h);var o=function(r){return t.call(this,r,h)};return o.source=\"function(\"+(n.variable||\"obj\")+\"){\\n\"+c+\"}\",o},e.exports=h},\n", + " 496: function _(e,t,i,s,o){s();const n=e(1);var l;const r=e(497),d=e(501),a=e(502),h=e(503),u=e(34),c=e(8),_=e(9),m=e(13),g=e(19),p=e(512),f=e(491),b=e(513),w=e(514),x=(0,n.__importStar)(e(492)),C=x,v=(0,n.__importDefault)(e(515));i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};let z=!1;class A{constructor(e,t){this.init(e,t)}init(e,t){if(f.DTINDEX_NAME in e.data)throw new Error(`special name ${f.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of(0,m.keys)(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[f.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==f.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return(0,_.range)(0,this.getLength()).map((e=>this.getItem(e)))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,(0,_.range)(e,t,i).map((e=>this.getItem(e)))}sort(e){let t=e.map((e=>[e.sortCol.field,e.sortAsc?1:-1]));0==t.length&&(t=[[f.DTINDEX_NAME,1]]);const i=this.getRecords(),s=this.index.slice();this.index.sort(((e,o)=>{for(const[n,l]of t){const t=i[s.indexOf(e)][n],r=i[s.indexOf(o)][n];if(t!==r)return(0,c.isNumber)(t)&&(0,c.isNumber)(r)?l*(t-r||+isNaN(t)-+isNaN(r)):`${t}`>`${r}`?l:-l}return 0}))}}i.TableDataProvider=A,A.__name__=\"TableDataProvider\";class M extends p.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render())),this.connect(this.model.source.streaming,(()=>this.updateGrid())),this.connect(this.model.source.patching,(()=>this.updateGrid())),this.connect(this.model.source.change,(()=>this.updateGrid())),this.connect(this.model.source.properties.data.change,(()=>this.updateGrid())),this.connect(this.model.source.selected.change,(()=>this.updateSelection())),this.connect(this.model.source.selected.properties.indices.change,(()=>this.updateSelection()));for(const e of this.model.columns)this.connect(e.change,(()=>{this.invalidate_layout(),this.render()}))}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),v.default,x.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map((t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc})));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map((e=>this.data.index.indexOf(e))).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:(0,u.uniqueId)(),name:this.model.index_header,field:f.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:C.cell_index,headerCssClass:C.header_index}}css_classes(){return super.css_classes().concat(C.data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.filter((e=>e.visible)).map((e=>Object.assign(Object.assign({},e.toColumn()),{parent:this})));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new d.CheckboxSelectColumn({cssClass:C.cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:o}=this.model;!o||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(z||(g.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),z=!0),o=!1);let n=-1,l=!1;const{frozen_rows:u,frozen_columns:_}=this.model,m=null==_?-1:_-1;null!=u&&(l=u<0,n=Math.abs(u));const p={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:o,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:m,frozenRow:n,frozenBottom:l},f=null!=this.grid;if(this.data=new A(this.model.source,this.model.view),this.grid=new h.Grid(this.el,this.data,t,p),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe(((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))})),!1!==this.model.selectable){this.grid.setSelectionModel(new r.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return(0,c.isString)(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new a.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe(((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map((e=>this.data.index[e])))})),this.updateSelection(),this.model.header_row||this._hide_header()}f&&this.updateLayout(f,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=M,M.__name__=\"DataTableView\";class D extends b.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}update_sort_columns(e){this._sort_columns=e.map((({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t})))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?(0,_.some)(t,(t=>e.top<=t&&t<=e.bottom))?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=D,l=D,D.__name__=\"DataTable\",l.prototype.default_view=M,l.define((({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Nullable:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(w.TableColumn)),[]],fit_columns:[r(t),null],frozen_columns:[r(i),null],frozen_rows:[r(i),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[r(i),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]}))),l.override({width:600,height:400})},\n", + " 497: function _(e,t,n,o,r){var l=e(498),i=e(500);t.exports={RowSelectionModel:function(e){var t,n,o,r=[],c=this,u=new i.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&r0&&t-1 in e)}w.fn=w.prototype={jquery:b,constructor:w,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\\\x20\\\\t\\\\r\\\\n\\\\f])[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*(even|odd|(([+-]|)(\\\\d*)n|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:([+-]|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\\\\d+)|))[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*((?:-\\\\d)?\\\\d*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(D=O.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){H={apply:D.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&j.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|[\\\\x20\\\\t\\\\r\\\\n\\\\f])\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i)),s.selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);w.find=C,w.expr=C.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=C.uniqueSort,w.text=C.getText,w.isXMLDoc=C.isXML,w.contains=C.contains,w.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=w.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return h(t)?w.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?w.grep(e,(function(e){return s.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?w(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,D=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,\"parentNode\")},parentsUntil:function(e,t,n){return E(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return E(e,\"nextSibling\")},prevAll:function(e){return E(e,\"previousSibling\")},nextUntil:function(e,t,n){return E(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return E(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(H[e]||w.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}}));var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return w.each(e.match(P)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:R,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:R)),n[2][3].add(a(0,e,h(r)?r:M))})).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)I(o[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var F=w.Deferred();function B(){v.removeEventListener(\"DOMContentLoaded\",B),e.removeEventListener(\"load\",B),w.ready()}w.fn.ready=function(e){return F.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(v,[w]))}}),w.ready.then=F.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(w.ready):(v.addEventListener(\"DOMContentLoaded\",B),e.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Q.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){w.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:w.Callbacks(\"once memory\").add((function(){Y.remove(e,[t+\"queue\",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,ge=/^$|^module$|\\/(?:java|ecma)script/i;fe=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(pe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),pe.setAttribute(\"checked\",\"checked\"),pe.setAttribute(\"name\",\"t\"),fe.appendChild(pe),d.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\"\",d.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML=\"\",d.option=!!fe.lastChild;var ve={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n\",\"\"]);var xe=/<|&#?\\w+;/;function be(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),\"script\"),l&&me(a),n)for(c=0;o=a[c++];)ge.test(o.type||\"\")&&n.push(o);return f}var we=/^([^.]*)(?:\\.(.+)|)/;function Te(){return!0}function Ce(){return!1}function Ee(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function Se(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ce;else if(!i)return e;return 1===o&&(a=i,i=function(e){return w().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=w.guid++)),e.each((function(){w.event.add(this,t,i,r,n)}))}function ke(e,t,n){n?(Y.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),Y.set(this,t,a),r=n(this,t),this[t](),a!==(o=Y.get(this,t))||r?Y.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o&&o.value}else a.length&&(Y.set(this,t,{value:w.event.trigger(w.extend(a[0],w.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&w.event.add(e,t,Te)}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(re,i),n.guid||(n.guid=w.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)if(d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=w.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=w.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function De(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&w(e).children(\"tbody\")[0]||e}function qe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Le(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function He(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&Ne.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Pe(o,t,n,r)}));if(p&&(a=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=w.map(ye(i,\"script\"),qe)).length;f0&&me(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Pe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||De(this,e).appendChild(e)}))},prepend:function(){return Pe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=De(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ve[(he.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===w.css(e,\"boxSizing\",!1,r),o=i,a=Be(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===w.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===w.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),\"normal\"===i&&t in Qe&&(i=Qe[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Ve.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,t,r):We(e,Ye,(function(){return Ze(e,t,r)}))},set:function(e,n,r){var i,o=Ie(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===w.css(e,\"boxSizing\",!1,o),u=r?Ke(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ke(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Je(0,n,u)}}})),w.cssHooks.marginLeft=$e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Be(e,\"marginLeft\"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),w.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Je)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a1)}}),w.Tween=et,et.prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}},et.prototype.init.prototype=et.prototype,et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},et.propHooks.scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=et.prototype.init,w.fx.step={};var tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){nt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(ot):e.setTimeout(ot,w.fx.interval),w.fx.tick())}function at(){return e.setTimeout((function(){tt=void 0})),tt=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=ft[t]||w.find.attr;ft[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ft[a],ft[a]=i,i=null!=n(e,t,r)?a:null,ft[a]=o),i}}));var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,gt(this)))}));if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,gt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,gt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=w(this),a=vt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=gt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+ht(gt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var yt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(yt,\"\"):null==n?\"\":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:ht(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!mt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,mt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(Y.get(a,\"events\")||Object.create(null))[t.type]&&Y.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&V(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!V(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),w.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,xt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,xt),w.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}}));var bt=e.location,wt={guid:Date.now()},Tt=/\\?/;w.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){}return r=n&&n.getElementsByTagName(\"parsererror\")[0],n&&!r||w.error(\"Invalid XML: \"+(r?w.map(r.childNodes,(function(e){return e.textContent})).join(\"\\n\"):t)),n};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||Ct.test(e)?r(e,i):At(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)At(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}})):{name:t.name,value:n.replace(Et,\"\\r\\n\")}})).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=v.createElement(\"a\");function It(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Wt(e,t,n,r){var i={},o=e===Pt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Ft(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}Mt.href=bt.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,w.ajaxSettings),t):Ft(w.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,y=w.Deferred(),m=w.Callbacks(\"once memory\"),x=d.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=qt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=Mt.protocol+\"//\"+Mt.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Wt(Ot,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Lt.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Nt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Tt.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Dt,\"$1\"),p=(Tt.test(i)?\"&\":\"?\")+\"_=\"+wt.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[i]),w.etag[i]&&E.setRequestHeader(\"If-None-Match\",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Wt(Pt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(b,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,b,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&w.inArray(\"script\",d.dataTypes)>-1&&w.inArray(\"json\",d.dataTypes)<0&&(d.converters[\"text script\"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,b,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,f=!(v=b.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=w.ajaxSettings.xhr();d.cors=!!$t&&\"withCredentials\"in $t,d.ajax=$t=!!$t,w.ajaxTransport((function(t){var n,r;if(d.cors||$t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Bt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),w.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w(\"" + ], + "text/plain": [ + ":DynamicMap [time]\n", + " :Overlay\n", + " .Image.I :Image [lon,lat] (tas)\n", + " .Coastline.I :Feature [Longitude,Latitude]" + ] + }, + "execution_count": 30, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "5661" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "dset.isel(#time=0,\n", + " member_id=0).hvplot.quadmesh(x='lon', y='lat'\n", + " , rasterize=True\n", + " , geo=True\n", + " , global_extent=False\n", + " , projection=ccrs.Orthographic(30, 90) \n", + " , project=True\n", + " , cmap='coolwarm'\n", + " , coastline='50m' \n", + " , frame_width=400\n", + " , title=dset.attrs['references']\n", + " #, title=\"Near-surface Temperature over Norway (CMIP6 CESM2)\"\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "ec05dbb2-42b5-4973-be58-3b5d7c5e5b9a", + "metadata": {}, + "source": [ + "
\n", + " Go Further\n", + "
\n", + "
    \n", + "
  • Compare the data size and 'used' data size for each worker in dask dashboard
  • \n", + "
  • Lets try to zoom. What happend with your plot? How was the dask dashboard reacted with zooming?
  • \n", + "
  • What is rastersize=True ? (Hint: https://hvplot.holoviz.org/user_guide/Customization.html#datashading-options)
  • \n", + "
  • What is 'cluster.scale(4)' ?
  • \n", + "
  • instead of .compute, try using .persist, how's the dashboard?\n", + "
\n", + "
\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df67cb31-b8f2-4d91-a37f-95d2a4ca328b", + "metadata": {}, + "outputs": [], + "source": [ + "client.close()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1499dae2-f69e-4764-b1fd-fb3aef29e29d", + "metadata": { + "tags": [ + "skip-execution" + ] + }, + "outputs": [], + "source": [ + "cluster.shutdown()" + ] + }, + { + "cell_type": "markdown", + "id": "d86a4ec6-bbf8-45c5-92d3-4c2ff2b0d119", + "metadata": {}, + "source": [ + "
\n", + " Go Further \n", + "
\n", + "
    \n", + "
  • Dask will try to hold data on the memory, then try to spill that to hard disk of worker. If you would like to avoid that dask worker use your local disk (It may slow down your computation depending on what kind of hardware you have), you can use following command after importing dask.distributed.
  • \n", + " dask.config.set({\"distributed.worker.memory.spill\": 0})\n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "56304d1c", + "metadata": {}, + "source": [ + "## Packages citation\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"dask\" and topic % \"package\"\n", + ":keyprefix: e-\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/data_discovery.ipynb b/docs/data_discovery.ipynb new file mode 100755 index 0000000..8108b20 --- /dev/null +++ b/docs/data_discovery.ipynb @@ -0,0 +1,39628 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2ee67085-c7cb-42e0-893f-9ca7a176a16d", + "metadata": {}, + "source": [ + "# Data access and discovery" + ] + }, + { + "cell_type": "markdown", + "id": "a50b9ab8-508f-47f4-85dd-03cb034a8e19", + "metadata": {}, + "source": [ + "## Authors & Contributors\n", + "\n", + "### Authors\n", + "\n", + "- Pier Lorenzo Marasco, Ispra (Italy), [@pl-marasco](https://github.com/pl-marasco)\n", + "- Alejandro Coca-Castro, The Alan Turing Institute (United Kingdom), [@acocac](https://github.com/acocac)\n", + "- Anne Fouilloux, Simula Research Laboratory (Norway), [@annefou](https://github.com/annefou)\n", + "\n", + "### Contributors\n", + "- Tina Odaka, Ifremer (France), [@tinaok](https://github.com/tinaok)" + ] + }, + { + "cell_type": "markdown", + "id": "550c0486-d262-42b7-b711-45fddaa0bfbc", + "metadata": {}, + "source": [ + "
\n", + " Overview\n", + "
\n", + "
\n", + " Questions\n", + "
    \n", + "
  • How to access online (remote) datasets?
  • \n", + "
  • How to prepare and discover online geoscience datasets?
  • \n", + "
  • What is Analysis Ready, Cloud Optimized data (ARCO)?
  • \n", + "
  • What is pangeo-forge?
  • \n", + "
  • What is stac?
  • \n", + "
\n", + " Objectives\n", + "
    \n", + "
  • Learn to access datasets from online object storage
  • \n", + "
  • Learn about preparing and discovery online datasets
  • \n", + "
  • Learn about Analysis Cloud Optimized (ARCO) data
  • \n", + "
  • Learn about the Pangeo Forge initiative
  • \n", + "
  • Learn about stac
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "be651606-d4ae-4833-8825-4dc66f2503e1", + "metadata": {}, + "source": [ + "## Context\n", + "\n", + "We will be using CMIP6 data and access them through [S3-compatible storage](https://en.wikipedia.org/wiki/Amazon_S3) using [Pangeo Catalog](https://pangeo-data.github.io/pangeo-cmip6-cloud/pangeo_catalog.html). \n", + "\n", + "We will also discuss the generation of Cloud-Optimised Datasets by introducing the [pangeo-forge](https://pangeo-forge.org) initiative. Finally, we will explore [Sentinel-2 Cloud-Optimised Dataset](https://registry.opendata.aws/sentinel-2-l2a-cogs/) online through SpatioTemporal Asset Catalogs ([STAC](https://stacspec.org/en))." + ] + }, + { + "cell_type": "markdown", + "id": "d60c3071-fbb6-4419-abb5-3f8783284438", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This episode uses the following main Python packages:\n", + "\n", + "- xarray {cite:ps}`c-xarray-hoyer2017` with [`netCDF4`](https://pypi.org/project/h5netcdf/) and [`h5netcdf`](https://pypi.org/project/h5netcdf/) engines\n", + "- intake-esm {cite:ps}`c-intake-esm`\n", + "- s3fs {cite:ps}`c-s3fs-2016`\n", + "\n", + "Please install these packages if not already available in your Python environment.\n", + "\n", + "### Packages\n", + "\n", + "In this episode, Python packages are imported when we start to use them. However, for best software practices, we recommend you to install and import all the necessary libraries at the top of your Jupyter notebook." + ] + }, + { + "cell_type": "markdown", + "id": "031bfc56-e201-4da5-b9c4-db0e99eb095e", + "metadata": {}, + "source": [ + "### Introduction to CMIP6 data\n", + "\n", + "Coupled Model Intercomparison project Phase 6\n", + "- Project under World Climate Research Programme (WCRP) \n", + "- Since 1995 CMIP has coordinated climate model experiments \n", + "- Defines common experiment protocols, forcings and output. \n", + "- 33 model groups participate\n", + "\n", + "\n", + "#### Very useful links:\n", + "- Database for data request: http://clipc-services.ceda.ac.uk/dreq/index.html\n", + " - **-->SEARCH FOR VARIABLES**: http://clipc-services.ceda.ac.uk/dreq/mipVars.html\n", + " - Search for experiments: http://clipc-services.ceda.ac.uk/dreq/experiments.html\n", + "- Overview: https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6\n", + "- ES-DOCs: https://search.es-doc.org/\n", + "\n", + "\n", + "#### Other links:\n", + "GMD special issue with articles explaining all MIPs in CMIP6 :\n", + "https://www.geosci-model-dev.net/special_issue590.html\n", + "\n", + "- General CMIP6 website https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6\n", + "- Guidance documents: (https://pcmdi.llnl.gov/CMIP6/)\n", + "- Emissions/Forcing datasets (https://esgf-node.llnl.gov/projects/input4mips/)\n", + "- Participating Modelling Groups (https://rawgit.com/WCRP-CMIP/CMIP6_CVs/master/src/CMIP6_institution_id.html)\n", + "- Model and experiment documentation (https://search.es-doc.org/)\n", + "- CMIP6 ESMValTool evaluation and analysis results (https://cmip-esmvaltool.dkrz.de/)\n", + "\n", + "- Emission visualising: https://eccad.aeris-data.fr\n", + "\n", + "\n", + "#### Advantages:\n", + "- Homogenized and standardized outputs\n", + "- Same variable name\n", + "- Same experiments\n", + "\n", + "#### Experiments (DECK)\n", + "![image](https://user-images.githubusercontent.com/17406708/139691209-ec237004-637b-4947-bb12-104d78a2fe44.png)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "8591f316-6817-4a2e-8f9a-7177c4824587", + "metadata": {}, + "source": [ + "### S3-compatible Object Storage to access online data\n", + "\n", + "Up to now we have downloaded data locally and then opened with Xarray `open_dataset`. When willing to manipulate large amount of data, this approach is not optimal (since it requires a lot of unnecessary local downloads). Sharing data online as Object Storage allows for data sharing and access to much larger amounts of data.\n", + "\n", + "One of the most popular methods to access online remote data is through Amazon Simple Storage Service (S3) and you don't necessarily need to use Amazon services to benefit from S3 object storage. Many other providers offer S3-compatible object storage that can be accessed in a very similar way.\n", + "\n", + "When using S3-compatible object storage, you still need to list all the files you would like to access. With such amount of data, it would be very cumbersome. This is why a catalog is created: this catalog is a text file (`json` format) which describes where and which data to get. It adds additional metadata too. CMIP6 Pangeo online catalog can be loaded using `intake-esm` Python package.\n" + ] + }, + { + "cell_type": "markdown", + "id": "3d976a91-0952-4247-9a1e-b52b850fdb7b", + "metadata": {}, + "source": [ + "### Introduction to the Pangeo CMIP6 online catalog" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9fc855e8-bc73-413a-ace8-8e0d363a4c02", + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr\n", + "xr.set_options(display_style='html')\n", + "import intake\n", + "import cftime" + ] + }, + { + "cell_type": "markdown", + "id": "6bf6a7c8-3399-4b67-b904-5003fcbe7aaf", + "metadata": {}, + "source": [ + "### Open CMIP6 online catalog" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "64a5edab-bf8e-4c75-b695-59f0e5288536", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

pangeo-cmip6 catalog with 7674 dataset(s) from 514818 asset(s):

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
unique
activity_id18
institution_id36
source_id88
experiment_id170
member_id657
table_id37
variable_id700
grid_label10
zstore514818
dcpp_init_year60
version736
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "cat_url = \"https://storage.googleapis.com/cmip6/pangeo-cmip6.json\"\n", + "col = intake.open_esm_datastore(cat_url)\n", + "col" + ] + }, + { + "cell_type": "markdown", + "id": "ae7f872e-c371-4c79-9523-f3a02e8d152d", + "metadata": {}, + "source": [ + "### Search corresponding data\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "dd563871-1c61-4a4c-ab16-ae1ac304c30d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
activity_idinstitution_idsource_idexperiment_idmember_idtable_idvariable_idgrid_labelzstoredcpp_init_yearversion
0CMIPNCARCESM2historicalr1i1p1f1Amontasgngs://cmip6/CMIP6/CMIP/NCAR/CESM2/historical/r1...NaN20190308
\n", + "
" + ], + "text/plain": [ + " activity_id institution_id source_id experiment_id member_id table_id \\\n", + "0 CMIP NCAR CESM2 historical r1i1p1f1 Amon \n", + "\n", + " variable_id grid_label zstore \\\n", + "0 tas gn gs://cmip6/CMIP6/CMIP/NCAR/CESM2/historical/r1... \n", + "\n", + " dcpp_init_year version \n", + "0 NaN 20190308 " + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cat = col.search(source_id=['CESM2'], experiment_id=['historical'], table_id=['Amon'], variable_id=['tas'], member_id=['r1i1p1f1'])\n", + "cat.df" + ] + }, + { + "cell_type": "markdown", + "id": "b48c94e0-2738-4eba-832e-27e556ec3163", + "metadata": {}, + "source": [ + "## Create dictionary from the list of datasets we found\n", + "- This step may take several minutes so be patient!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1b38780d-81ab-4d41-8fa6-83277d69fe60", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "--> The keys in the returned dictionary of datasets are constructed as follows:\n", + "\t'activity_id.institution_id.source_id.experiment_id.table_id.grid_label'\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + " 100.00% [1/1 00:00<00:00]\n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "dset_dict = cat.to_dataset_dict(zarr_kwargs={'use_cftime':True})" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8b5e03d5-c41c-4b9b-bb66-bc0ee3c6fbce", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['CMIP.NCAR.CESM2.historical.Amon.gn']" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset_list = list(dset_dict.keys())\n", + "dataset_list" + ] + }, + { + "cell_type": "markdown", + "id": "6bcca94a-4042-406a-8958-0ec670af991b", + "metadata": {}, + "source": [ + "## Open dataset\n", + "\n", + "- Use `xarray` python package to analyze netCDF dataset\n", + "- `open_dataset` allows to get all the metadata without loading data into memory. \n", + "- with `xarray`, we only load into memory what is needed." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "facb69b0-57cc-44e1-8feb-295f4c44925f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "    lat_bnds   (lat, nbnd) float32 dask.array<chunksize=(192, 2), meta=np.ndarray>\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds   (lon, nbnd) float32 dask.array<chunksize=(288, 2), meta=np.ndarray>\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object dask.array<chunksize=(1980, 2), meta=np.ndarray>\n",
+       "  * member_id  (member_id) <U8 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time, lat, lon) float32 dask.array<chunksize=(1, 600, 192, 288), meta=np.ndarray>\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      ['tas']\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " lat_bnds (lat, nbnd) float32 dask.array\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (lon, nbnd) float32 dask.array\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object dask.array\n", + " * member_id (member_id) \n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: ['tas']\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dset = dset_dict[dataset_list[0]]\n", + "dset" + ] + }, + { + "cell_type": "markdown", + "id": "1aab50ed-457a-4724-8808-0b1353b62705", + "metadata": {}, + "source": [ + "### Get metadata corresponding to near-surface air temperature (tas)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ec973216-e644-49f8-80ab-72943920a650", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "dask.array\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:                                              (YDim:mod08: 180,\n",
+       "                                                          XDim:mod08: 360,\n",
+       "                                                          Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08: 7)\n",
+       "Dimensions without coordinates: YDim:mod08, XDim:mod08,\n",
+       "                                Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08\n",
+       "Data variables: (12/13)\n",
+       "    Aerosol_Optical_Depth_Land_Ocean_Mean_Mean           (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean     (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Aerosol_Optical_Depth_Average_Ocean_Mean_Mean        (Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08, YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Cloud_Top_Temperature_Mean_Mean                      (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Cloud_Effective_Emissivity_Mean_Mean                 (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Cloud_Fraction_Mean_Mean                             (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    ...                                                   ...\n",
+       "    Cloud_Effective_Radius_Liquid_Mean_Mean              (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Cloud_Water_Path_Liquid_Mean_Mean                    (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Cloud_Water_Path_Ice_Mean_Mean                       (YDim:mod08, XDim:mod08) float32 ...\n",
+       "    Effective_Optical_Depth_Average_Ocean_Micron_Levels  (Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08) float32 ...\n",
+       "    XDim                                                 (XDim:mod08) float32 ...\n",
+       "    YDim                                                 (YDim:mod08) float32 ...\n",
+       "Attributes:\n",
+       "    HDFEOSVersion:                     HDFEOS_V2.19\n",
+       "    StructMetadata.0:                  GROUP=SwathStructure\\nEND_GROUP=SwathS...\n",
+       "    StructMetadata.1:                  Min"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n",
+       "    StructMetadata.2:                  BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n",
+       "    StructMetadata.3:                  NT16\\n\\t\\t\\t\\tDimList=("YDim","XDim")\\...\n",
+       "    StructMetadata.4:                  \\t\\tDataFieldName="Cloud_Retrieval_Fra...\n",
+       "    StructMetadata.5:                  List=("YDim","XDim")\\n\\t\\t\\tEND_OBJECT...\n",
+       "    StructMetadata.6:                  CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n",
+       "    CoreMetadata.0:                    \\nGROUP                  = INVENTORYME...\n",
+       "    ArchiveMetadata.0:                 \\nGROUP                  = ARCHIVEDMET...\n",
+       "    identifier_product_doi:            10.5067/MODIS/MOD08_M3.061\n",
+       "    identifier_product_doi_authority:  http://dx.doi.org
" + ], + "text/plain": [ + "\n", + "Dimensions: (YDim:mod08: 180,\n", + " XDim:mod08: 360,\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08: 7)\n", + "Dimensions without coordinates: YDim:mod08, XDim:mod08,\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08\n", + "Data variables: (12/13)\n", + " Aerosol_Optical_Depth_Land_Ocean_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Aerosol_Optical_Depth_Average_Ocean_Mean_Mean (Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08, YDim:mod08, XDim:mod08) float32 ...\n", + " Cloud_Top_Temperature_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Cloud_Effective_Emissivity_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Cloud_Fraction_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " ... ...\n", + " Cloud_Effective_Radius_Liquid_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Cloud_Water_Path_Liquid_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Cloud_Water_Path_Ice_Mean_Mean (YDim:mod08, XDim:mod08) float32 ...\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels (Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08) float32 ...\n", + " XDim (XDim:mod08) float32 ...\n", + " YDim (YDim:mod08) float32 ...\n", + "Attributes:\n", + " HDFEOSVersion: HDFEOS_V2.19\n", + " StructMetadata.0: GROUP=SwathStructure\\nEND_GROUP=SwathS...\n", + " StructMetadata.1: Min\"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n", + " StructMetadata.2: BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n", + " StructMetadata.3: NT16\\n\\t\\t\\t\\tDimList=(\"YDim\",\"XDim\")\\...\n", + " StructMetadata.4: \\t\\tDataFieldName=\"Cloud_Retrieval_Fra...\n", + " StructMetadata.5: List=(\"YDim\",\"XDim\")\\n\\t\\t\\tEND_OBJECT...\n", + " StructMetadata.6: CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n", + " CoreMetadata.0: \\nGROUP = INVENTORYME...\n", + " ArchiveMetadata.0: \\nGROUP = ARCHIVEDMET...\n", + " identifier_product_doi: 10.5067/MODIS/MOD08_M3.061\n", + " identifier_product_doi_authority: http://dx.doi.org" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis" + ] + }, + { + "cell_type": "markdown", + "id": "1a33023e-d4ac-471f-901b-9083665c8bcd", + "metadata": {}, + "source": [ + "### Rename dimensions and variables " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "cc80a65c-cf99-42e6-a76d-5b1aeca5369c", + "metadata": {}, + "outputs": [], + "source": [ + "modis = modis.rename_dims({'YDim:mod08': 'lat', 'XDim:mod08':'lon', 'Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08':'levels'})" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ac4129ed-e918-44f4-906a-7acf86153353", + "metadata": {}, + "outputs": [], + "source": [ + "modis = modis.rename_vars({'YDim':'lat', 'XDim':'lon', 'Effective_Optical_Depth_Average_Ocean_Micron_Levels': 'levels'})" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "db94a631-cbfd-49fb-8301-c6fb432f2c44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:                                           (lat: 180, lon: 360,\n",
+       "                                                       levels: 7)\n",
+       "Dimensions without coordinates: lat, lon, levels\n",
+       "Data variables: (12/13)\n",
+       "    Aerosol_Optical_Depth_Land_Ocean_Mean_Mean        (lat, lon) float32 nan ...\n",
+       "    AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean  (lat, lon) float32 nan ...\n",
+       "    Aerosol_Optical_Depth_Average_Ocean_Mean_Mean     (levels, lat, lon) float32 ...\n",
+       "    Cloud_Top_Temperature_Mean_Mean                   (lat, lon) float32 -1.4...\n",
+       "    Cloud_Effective_Emissivity_Mean_Mean              (lat, lon) float32 0.93...\n",
+       "    Cloud_Fraction_Mean_Mean                          (lat, lon) float32 0.88...\n",
+       "    ...                                                ...\n",
+       "    Cloud_Effective_Radius_Liquid_Mean_Mean           (lat, lon) float32 12.3...\n",
+       "    Cloud_Water_Path_Liquid_Mean_Mean                 (lat, lon) float32 146....\n",
+       "    Cloud_Water_Path_Ice_Mean_Mean                    (lat, lon) float32 249....\n",
+       "    levels                                            (levels) float32 0.47 ....\n",
+       "    lon                                               (lon) float32 -179.5 .....\n",
+       "    lat                                               (lat) float32 89.5 ... ...\n",
+       "Attributes:\n",
+       "    HDFEOSVersion:                     HDFEOS_V2.19\n",
+       "    StructMetadata.0:                  GROUP=SwathStructure\\nEND_GROUP=SwathS...\n",
+       "    StructMetadata.1:                  Min"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n",
+       "    StructMetadata.2:                  BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n",
+       "    StructMetadata.3:                  NT16\\n\\t\\t\\t\\tDimList=("YDim","XDim")\\...\n",
+       "    StructMetadata.4:                  \\t\\tDataFieldName="Cloud_Retrieval_Fra...\n",
+       "    StructMetadata.5:                  List=("YDim","XDim")\\n\\t\\t\\tEND_OBJECT...\n",
+       "    StructMetadata.6:                  CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n",
+       "    CoreMetadata.0:                    \\nGROUP                  = INVENTORYME...\n",
+       "    ArchiveMetadata.0:                 \\nGROUP                  = ARCHIVEDMET...\n",
+       "    identifier_product_doi:            10.5067/MODIS/MOD08_M3.061\n",
+       "    identifier_product_doi_authority:  http://dx.doi.org
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 180, lon: 360,\n", + " levels: 7)\n", + "Dimensions without coordinates: lat, lon, levels\n", + "Data variables: (12/13)\n", + " Aerosol_Optical_Depth_Land_Ocean_Mean_Mean (lat, lon) float32 nan ...\n", + " AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean (lat, lon) float32 nan ...\n", + " Aerosol_Optical_Depth_Average_Ocean_Mean_Mean (levels, lat, lon) float32 ...\n", + " Cloud_Top_Temperature_Mean_Mean (lat, lon) float32 -1.4...\n", + " Cloud_Effective_Emissivity_Mean_Mean (lat, lon) float32 0.93...\n", + " Cloud_Fraction_Mean_Mean (lat, lon) float32 0.88...\n", + " ... ...\n", + " Cloud_Effective_Radius_Liquid_Mean_Mean (lat, lon) float32 12.3...\n", + " Cloud_Water_Path_Liquid_Mean_Mean (lat, lon) float32 146....\n", + " Cloud_Water_Path_Ice_Mean_Mean (lat, lon) float32 249....\n", + " levels (levels) float32 0.47 ....\n", + " lon (lon) float32 -179.5 .....\n", + " lat (lat) float32 89.5 ... ...\n", + "Attributes:\n", + " HDFEOSVersion: HDFEOS_V2.19\n", + " StructMetadata.0: GROUP=SwathStructure\\nEND_GROUP=SwathS...\n", + " StructMetadata.1: Min\"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n", + " StructMetadata.2: BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n", + " StructMetadata.3: NT16\\n\\t\\t\\t\\tDimList=(\"YDim\",\"XDim\")\\...\n", + " StructMetadata.4: \\t\\tDataFieldName=\"Cloud_Retrieval_Fra...\n", + " StructMetadata.5: List=(\"YDim\",\"XDim\")\\n\\t\\t\\tEND_OBJECT...\n", + " StructMetadata.6: CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n", + " CoreMetadata.0: \\nGROUP = INVENTORYME...\n", + " ArchiveMetadata.0: \\nGROUP = ARCHIVEDMET...\n", + " identifier_product_doi: 10.5067/MODIS/MOD08_M3.061\n", + " identifier_product_doi_authority: http://dx.doi.org" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis" + ] + }, + { + "cell_type": "markdown", + "id": "fe892a35-521d-4349-a88e-dd365bcc32fb", + "metadata": {}, + "source": [ + "### Coordinates" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "3d1f2756-18ff-4c74-8270-8f28b20867ff", + "metadata": {}, + "outputs": [], + "source": [ + "x = modis.lon.squeeze().reset_coords(drop=True)\n", + "y = modis.lat.squeeze().reset_coords(drop=True)\n", + "z = modis.levels.squeeze().reset_coords(drop=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "5081f449-8f50-4617-a790-9afda1ca95e7", + "metadata": {}, + "outputs": [], + "source": [ + "modis = modis.assign_coords({\"lon\": x, \"lat\": y, 'levels': z})" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2c5d972e-7214-47ff-8413-a231969ad2d1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:                                           (lat: 180, lon: 360,\n",
+       "                                                       levels: 7)\n",
+       "Coordinates:\n",
+       "  * levels                                            (levels) float32 0.47 ....\n",
+       "  * lon                                               (lon) float32 -179.5 .....\n",
+       "  * lat                                               (lat) float32 89.5 ... ...\n",
+       "Data variables:\n",
+       "    Aerosol_Optical_Depth_Land_Ocean_Mean_Mean        (lat, lon) float32 nan ...\n",
+       "    AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean  (lat, lon) float32 nan ...\n",
+       "    Aerosol_Optical_Depth_Average_Ocean_Mean_Mean     (levels, lat, lon) float32 ...\n",
+       "    Cloud_Top_Temperature_Mean_Mean                   (lat, lon) float32 -1.4...\n",
+       "    Cloud_Effective_Emissivity_Mean_Mean              (lat, lon) float32 0.93...\n",
+       "    Cloud_Fraction_Mean_Mean                          (lat, lon) float32 0.88...\n",
+       "    Cloud_Optical_Thickness_Liquid_Mean_Mean          (lat, lon) float32 20.9...\n",
+       "    Cloud_Effective_Radius_Liquid_Mean_Mean           (lat, lon) float32 12.3...\n",
+       "    Cloud_Water_Path_Liquid_Mean_Mean                 (lat, lon) float32 146....\n",
+       "    Cloud_Water_Path_Ice_Mean_Mean                    (lat, lon) float32 249....\n",
+       "Attributes:\n",
+       "    HDFEOSVersion:                     HDFEOS_V2.19\n",
+       "    StructMetadata.0:                  GROUP=SwathStructure\\nEND_GROUP=SwathS...\n",
+       "    StructMetadata.1:                  Min"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n",
+       "    StructMetadata.2:                  BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n",
+       "    StructMetadata.3:                  NT16\\n\\t\\t\\t\\tDimList=("YDim","XDim")\\...\n",
+       "    StructMetadata.4:                  \\t\\tDataFieldName="Cloud_Retrieval_Fra...\n",
+       "    StructMetadata.5:                  List=("YDim","XDim")\\n\\t\\t\\tEND_OBJECT...\n",
+       "    StructMetadata.6:                  CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n",
+       "    CoreMetadata.0:                    \\nGROUP                  = INVENTORYME...\n",
+       "    ArchiveMetadata.0:                 \\nGROUP                  = ARCHIVEDMET...\n",
+       "    identifier_product_doi:            10.5067/MODIS/MOD08_M3.061\n",
+       "    identifier_product_doi_authority:  http://dx.doi.org
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 180, lon: 360,\n", + " levels: 7)\n", + "Coordinates:\n", + " * levels (levels) float32 0.47 ....\n", + " * lon (lon) float32 -179.5 .....\n", + " * lat (lat) float32 89.5 ... ...\n", + "Data variables:\n", + " Aerosol_Optical_Depth_Land_Ocean_Mean_Mean (lat, lon) float32 nan ...\n", + " AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean (lat, lon) float32 nan ...\n", + " Aerosol_Optical_Depth_Average_Ocean_Mean_Mean (levels, lat, lon) float32 ...\n", + " Cloud_Top_Temperature_Mean_Mean (lat, lon) float32 -1.4...\n", + " Cloud_Effective_Emissivity_Mean_Mean (lat, lon) float32 0.93...\n", + " Cloud_Fraction_Mean_Mean (lat, lon) float32 0.88...\n", + " Cloud_Optical_Thickness_Liquid_Mean_Mean (lat, lon) float32 20.9...\n", + " Cloud_Effective_Radius_Liquid_Mean_Mean (lat, lon) float32 12.3...\n", + " Cloud_Water_Path_Liquid_Mean_Mean (lat, lon) float32 146....\n", + " Cloud_Water_Path_Ice_Mean_Mean (lat, lon) float32 249....\n", + "Attributes:\n", + " HDFEOSVersion: HDFEOS_V2.19\n", + " StructMetadata.0: GROUP=SwathStructure\\nEND_GROUP=SwathS...\n", + " StructMetadata.1: Min\"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n", + " StructMetadata.2: BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n", + " StructMetadata.3: NT16\\n\\t\\t\\t\\tDimList=(\"YDim\",\"XDim\")\\...\n", + " StructMetadata.4: \\t\\tDataFieldName=\"Cloud_Retrieval_Fra...\n", + " StructMetadata.5: List=(\"YDim\",\"XDim\")\\n\\t\\t\\tEND_OBJECT...\n", + " StructMetadata.6: CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n", + " CoreMetadata.0: \\nGROUP = INVENTORYME...\n", + " ArchiveMetadata.0: \\nGROUP = ARCHIVEDMET...\n", + " identifier_product_doi: 10.5067/MODIS/MOD08_M3.061\n", + " identifier_product_doi_authority: http://dx.doi.org" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b1214bb3-e404-4b73-be98-5c9d5072280e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array(0.134, dtype=float32)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis.sel(lat=60, lon=10.75, method='nearest')['Aerosol_Optical_Depth_Land_Ocean_Mean_Mean'].values" + ] + }, + { + "cell_type": "markdown", + "id": "9a7d6ed7-e43c-4fec-8e34-caf8641948d0", + "metadata": {}, + "source": [ + "#### Access multiple remote files " + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "1366d570-3f48-4e11-a647-5d7caf668276", + "metadata": {}, + "outputs": [], + "source": [ + "s3path = 's3://MODIS/*.nc'" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "085418aa-87ef-42c0-aacb-bbcd89543940", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['MODIS/MOD08_M3.A2000032.061.2017276183309.nc',\n", + " 'MODIS/MOD08_M3.A2000061.061.2017272215822.nc',\n", + " 'MODIS/MOD08_M3.A2000092.061.2017276174940.nc',\n", + " 'MODIS/MOD08_M3.A2000122.061.2017275191641.nc',\n", + " 'MODIS/MOD08_M3.A2000153.061.2017276072839.nc',\n", + " 'MODIS/MOD08_M3.A2000183.061.2017276075622.nc',\n", + " 'MODIS/MOD08_M3.A2000214.061.2017276050502.nc',\n", + " 'MODIS/MOD08_M3.A2000245.061.2017276075932.nc',\n", + " 'MODIS/MOD08_M3.A2000275.061.2017276173030.nc',\n", + " 'MODIS/MOD08_M3.A2000306.061.2017276190346.nc',\n", + " 'MODIS/MOD08_M3.A2000336.061.2017276203640.nc',\n", + " 'MODIS/MOD08_M3.A2001001.061.2017277122349.nc',\n", + " 'MODIS/MOD08_M3.A2001032.061.2017277112301.nc',\n", + " 'MODIS/MOD08_M3.A2001060.061.2017277125646.nc',\n", + " 'MODIS/MOD08_M3.A2001091.061.2017277145429.nc',\n", + " 'MODIS/MOD08_M3.A2001121.061.2017277185847.nc',\n", + " 'MODIS/MOD08_M3.A2001152.061.2017277193228.nc',\n", + " 'MODIS/MOD08_M3.A2001182.061.2017277232025.nc',\n", + " 'MODIS/MOD08_M3.A2001213.061.2017278042002.nc',\n", + " 'MODIS/MOD08_M3.A2001244.061.2017278143507.nc',\n", + " 'MODIS/MOD08_M3.A2001274.061.2017278155329.nc',\n", + " 'MODIS/MOD08_M3.A2001305.061.2017278180906.nc',\n", + " 'MODIS/MOD08_M3.A2001335.061.2017278195919.nc',\n", + " 'MODIS/MOD08_M3.A2002001.061.2018116210818.nc',\n", + " 'MODIS/MOD08_M3.A2002032.061.2018086185625.nc',\n", + " 'MODIS/MOD08_M3.A2002060.061.2018116231409.nc',\n", + " 'MODIS/MOD08_M3.A2002091.061.2017279185034.nc',\n", + " 'MODIS/MOD08_M3.A2002121.061.2017279235924.nc',\n", + " 'MODIS/MOD08_M3.A2002152.061.2017280023717.nc',\n", + " 'MODIS/MOD08_M3.A2002182.061.2017280205715.nc',\n", + " 'MODIS/MOD08_M3.A2002213.061.2017280223026.nc',\n", + " 'MODIS/MOD08_M3.A2002244.061.2017280234438.nc',\n", + " 'MODIS/MOD08_M3.A2002274.061.2017281015551.nc',\n", + " 'MODIS/MOD08_M3.A2002305.061.2017281025115.nc',\n", + " 'MODIS/MOD08_M3.A2002335.061.2017281035150.nc',\n", + " 'MODIS/MOD08_M3.A2003001.061.2018117155743.nc',\n", + " 'MODIS/MOD08_M3.A2003032.061.2018116235452.nc',\n", + " 'MODIS/MOD08_M3.A2003060.061.2018117002319.nc',\n", + " 'MODIS/MOD08_M3.A2003091.061.2018117160200.nc',\n", + " 'MODIS/MOD08_M3.A2003121.061.2017283030440.nc',\n", + " 'MODIS/MOD08_M3.A2003152.061.2017283052308.nc',\n", + " 'MODIS/MOD08_M3.A2003182.061.2017283075355.nc',\n", + " 'MODIS/MOD08_M3.A2003213.061.2017283082726.nc',\n", + " 'MODIS/MOD08_M3.A2003244.061.2017283173012.nc',\n", + " 'MODIS/MOD08_M3.A2003274.061.2017283173119.nc',\n", + " 'MODIS/MOD08_M3.A2003305.061.2017283174124.nc',\n", + " 'MODIS/MOD08_M3.A2003335.061.2017283174833.nc',\n", + " 'MODIS/MOD08_M3.A2004001.061.2017284131754.nc',\n", + " 'MODIS/MOD08_M3.A2004032.061.2017284231722.nc',\n", + " 'MODIS/MOD08_M3.A2004061.061.2017285135054.nc',\n", + " 'MODIS/MOD08_M3.A2004092.061.2017285200445.nc',\n", + " 'MODIS/MOD08_M3.A2004122.061.2017286064100.nc',\n", + " 'MODIS/MOD08_M3.A2004153.061.2017286155932.nc',\n", + " 'MODIS/MOD08_M3.A2004183.061.2017287000057.nc',\n", + " 'MODIS/MOD08_M3.A2004214.061.2017287092018.nc',\n", + " 'MODIS/MOD08_M3.A2004245.061.2017288152313.nc',\n", + " 'MODIS/MOD08_M3.A2004275.061.2017288212405.nc',\n", + " 'MODIS/MOD08_M3.A2004306.061.2017288212156.nc',\n", + " 'MODIS/MOD08_M3.A2004336.061.2017289083810.nc',\n", + " 'MODIS/MOD08_M3.A2005001.061.2019072160440.nc',\n", + " 'MODIS/MOD08_M3.A2005032.061.2019072154406.nc',\n", + " 'MODIS/MOD08_M3.A2005060.061.2017291031953.nc',\n", + " 'MODIS/MOD08_M3.A2005091.061.2017290210757.nc',\n", + " 'MODIS/MOD08_M3.A2005121.061.2019072154947.nc',\n", + " 'MODIS/MOD08_M3.A2005152.061.2017298025833.nc',\n", + " 'MODIS/MOD08_M3.A2005182.061.2017292152251.nc',\n", + " 'MODIS/MOD08_M3.A2005213.061.2017293045950.nc',\n", + " 'MODIS/MOD08_M3.A2005244.061.2017293143200.nc',\n", + " 'MODIS/MOD08_M3.A2005274.061.2017293234404.nc',\n", + " 'MODIS/MOD08_M3.A2005305.061.2017294072541.nc',\n", + " 'MODIS/MOD08_M3.A2005335.061.2017296182027.nc',\n", + " 'MODIS/MOD08_M3.A2006001.061.2017272042922.nc',\n", + " 'MODIS/MOD08_M3.A2006032.061.2017272120606.nc',\n", + " 'MODIS/MOD08_M3.A2006060.061.2017272165438.nc',\n", + " 'MODIS/MOD08_M3.A2006091.061.2017272222236.nc',\n", + " 'MODIS/MOD08_M3.A2006121.061.2017276144021.nc',\n", + " 'MODIS/MOD08_M3.A2006152.061.2017277133958.nc',\n", + " 'MODIS/MOD08_M3.A2006182.061.2017275215927.nc',\n", + " 'MODIS/MOD08_M3.A2006213.061.2017279005924.nc',\n", + " 'MODIS/MOD08_M3.A2006244.061.2017277022732.nc',\n", + " 'MODIS/MOD08_M3.A2006274.061.2017278000639.nc',\n", + " 'MODIS/MOD08_M3.A2006305.061.2017278200246.nc',\n", + " 'MODIS/MOD08_M3.A2006335.061.2017279033150.nc',\n", + " 'MODIS/MOD08_M3.A2007001.061.2017282123406.nc',\n", + " 'MODIS/MOD08_M3.A2007032.061.2017282123335.nc',\n", + " 'MODIS/MOD08_M3.A2007060.061.2017282123411.nc',\n", + " 'MODIS/MOD08_M3.A2007091.061.2017282123415.nc',\n", + " 'MODIS/MOD08_M3.A2007121.061.2017283040324.nc',\n", + " 'MODIS/MOD08_M3.A2007152.061.2017283231630.nc',\n", + " 'MODIS/MOD08_M3.A2007182.061.2017285083949.nc',\n", + " 'MODIS/MOD08_M3.A2007213.061.2017285131028.nc',\n", + " 'MODIS/MOD08_M3.A2007244.061.2017285234236.nc',\n", + " 'MODIS/MOD08_M3.A2007274.061.2017286113952.nc',\n", + " 'MODIS/MOD08_M3.A2007305.061.2017287030845.nc',\n", + " 'MODIS/MOD08_M3.A2007335.061.2017287173138.nc',\n", + " 'MODIS/MOD08_M3.A2008001.061.2017288092622.nc',\n", + " 'MODIS/MOD08_M3.A2008032.061.2017289180803.nc',\n", + " 'MODIS/MOD08_M3.A2008061.061.2017291151011.nc',\n", + " 'MODIS/MOD08_M3.A2008092.061.2017291002057.nc',\n", + " 'MODIS/MOD08_M3.A2008122.061.2017291141050.nc',\n", + " 'MODIS/MOD08_M3.A2008153.061.2017292153358.nc',\n", + " 'MODIS/MOD08_M3.A2008183.061.2019072155257.nc',\n", + " 'MODIS/MOD08_M3.A2008214.061.2017293113821.nc',\n", + " 'MODIS/MOD08_M3.A2008245.061.2017294002156.nc',\n", + " 'MODIS/MOD08_M3.A2008275.061.2017297203335.nc',\n", + " 'MODIS/MOD08_M3.A2008306.061.2017295071904.nc',\n", + " 'MODIS/MOD08_M3.A2008336.061.2017296110255.nc',\n", + " 'MODIS/MOD08_M3.A2009001.061.2017298012528.nc',\n", + " 'MODIS/MOD08_M3.A2009032.061.2017298063546.nc',\n", + " 'MODIS/MOD08_M3.A2009060.061.2017298174606.nc',\n", + " 'MODIS/MOD08_M3.A2009091.061.2017299003246.nc',\n", + " 'MODIS/MOD08_M3.A2009121.061.2017299201650.nc',\n", + " 'MODIS/MOD08_M3.A2009152.061.2017303185329.nc',\n", + " 'MODIS/MOD08_M3.A2009182.061.2017304132125.nc',\n", + " 'MODIS/MOD08_M3.A2009213.061.2017319011248.nc',\n", + " 'MODIS/MOD08_M3.A2009244.061.2017306062357.nc',\n", + " 'MODIS/MOD08_M3.A2009274.061.2017307010542.nc',\n", + " 'MODIS/MOD08_M3.A2009305.061.2017307213730.nc',\n", + " 'MODIS/MOD08_M3.A2009335.061.2017308144544.nc',\n", + " 'MODIS/MOD08_M3.A2010001.061.2017310220725.nc',\n", + " 'MODIS/MOD08_M3.A2010032.061.2017311073823.nc',\n", + " 'MODIS/MOD08_M3.A2010060.061.2017311183851.nc',\n", + " 'MODIS/MOD08_M3.A2010091.061.2017312081103.nc',\n", + " 'MODIS/MOD08_M3.A2010121.061.2017312231425.nc',\n", + " 'MODIS/MOD08_M3.A2010152.061.2017313162026.nc',\n", + " 'MODIS/MOD08_M3.A2010182.061.2017314041948.nc',\n", + " 'MODIS/MOD08_M3.A2010213.061.2017318023643.nc',\n", + " 'MODIS/MOD08_M3.A2010244.061.2017318110207.nc',\n", + " 'MODIS/MOD08_M3.A2010274.061.2017318133158.nc',\n", + " 'MODIS/MOD08_M3.A2010305.061.2017318184613.nc',\n", + " 'MODIS/MOD08_M3.A2010335.061.2017320004241.nc',\n", + " 'MODIS/MOD08_M3.A2011001.061.2017320154950.nc',\n", + " 'MODIS/MOD08_M3.A2011032.061.2017321185442.nc',\n", + " 'MODIS/MOD08_M3.A2011060.061.2017322121213.nc',\n", + " 'MODIS/MOD08_M3.A2011091.061.2017323161255.nc',\n", + " 'MODIS/MOD08_M3.A2011121.061.2017324112918.nc',\n", + " 'MODIS/MOD08_M3.A2011152.061.2017325012251.nc',\n", + " 'MODIS/MOD08_M3.A2011182.061.2017325182247.nc',\n", + " 'MODIS/MOD08_M3.A2011213.061.2017326102442.nc',\n", + " 'MODIS/MOD08_M3.A2011244.061.2017327040751.nc',\n", + " 'MODIS/MOD08_M3.A2011274.061.2017328001250.nc',\n", + " 'MODIS/MOD08_M3.A2011305.061.2017328173108.nc',\n", + " 'MODIS/MOD08_M3.A2011335.061.2017330001115.nc',\n", + " 'MODIS/MOD08_M3.A2012001.061.2017332005900.nc',\n", + " 'MODIS/MOD08_M3.A2012032.061.2017332052720.nc',\n", + " 'MODIS/MOD08_M3.A2012061.061.2017332125551.nc',\n", + " 'MODIS/MOD08_M3.A2012092.061.2017333070458.nc',\n", + " 'MODIS/MOD08_M3.A2012122.061.2017334103546.nc',\n", + " 'MODIS/MOD08_M3.A2012153.061.2017335121954.nc',\n", + " 'MODIS/MOD08_M3.A2012183.061.2017336234843.nc',\n", + " 'MODIS/MOD08_M3.A2012214.061.2017338084514.nc',\n", + " 'MODIS/MOD08_M3.A2012245.061.2017339022214.nc',\n", + " 'MODIS/MOD08_M3.A2012275.061.2017339215337.nc',\n", + " 'MODIS/MOD08_M3.A2012306.061.2017340192241.nc',\n", + " 'MODIS/MOD08_M3.A2012336.061.2017341184807.nc',\n", + " 'MODIS/MOD08_M3.A2013001.061.2017298193816.nc',\n", + " 'MODIS/MOD08_M3.A2013032.061.2017297150003.nc',\n", + " 'MODIS/MOD08_M3.A2013060.061.2017298024454.nc',\n", + " 'MODIS/MOD08_M3.A2013091.061.2017298192533.nc',\n", + " 'MODIS/MOD08_M3.A2013121.061.2017299031432.nc',\n", + " 'MODIS/MOD08_M3.A2013152.061.2017299180328.nc',\n", + " 'MODIS/MOD08_M3.A2013182.061.2017300185420.nc',\n", + " 'MODIS/MOD08_M3.A2013213.061.2017304210739.nc',\n", + " 'MODIS/MOD08_M3.A2013244.061.2017304161740.nc',\n", + " 'MODIS/MOD08_M3.A2013274.061.2017305070652.nc',\n", + " 'MODIS/MOD08_M3.A2013305.061.2017306211731.nc',\n", + " 'MODIS/MOD08_M3.A2013335.061.2017308042052.nc',\n", + " 'MODIS/MOD08_M3.A2014001.061.2018116210846.nc',\n", + " 'MODIS/MOD08_M3.A2014032.061.2018116210744.nc',\n", + " 'MODIS/MOD08_M3.A2014060.061.2017310230130.nc',\n", + " 'MODIS/MOD08_M3.A2014091.061.2017311200138.nc',\n", + " 'MODIS/MOD08_M3.A2014121.061.2017312151500.nc',\n", + " 'MODIS/MOD08_M3.A2014152.061.2017313093158.nc',\n", + " 'MODIS/MOD08_M3.A2014182.061.2017314034734.nc',\n", + " 'MODIS/MOD08_M3.A2014213.061.2017314130249.nc',\n", + " 'MODIS/MOD08_M3.A2014244.061.2017317000542.nc',\n", + " 'MODIS/MOD08_M3.A2014274.061.2017317101857.nc',\n", + " 'MODIS/MOD08_M3.A2014305.061.2017317202015.nc',\n", + " 'MODIS/MOD08_M3.A2014335.061.2017318225533.nc',\n", + " 'MODIS/MOD08_M3.A2015001.061.2017319074723.nc',\n", + " 'MODIS/MOD08_M3.A2015032.061.2017319153036.nc',\n", + " 'MODIS/MOD08_M3.A2015060.061.2017320125759.nc',\n", + " 'MODIS/MOD08_M3.A2015091.061.2017320205832.nc',\n", + " 'MODIS/MOD08_M3.A2015121.061.2017321074517.nc',\n", + " 'MODIS/MOD08_M3.A2015152.061.2017321195647.nc',\n", + " 'MODIS/MOD08_M3.A2015182.061.2017322063945.nc',\n", + " 'MODIS/MOD08_M3.A2015213.061.2017322192741.nc',\n", + " 'MODIS/MOD08_M3.A2015244.061.2017323024455.nc',\n", + " 'MODIS/MOD08_M3.A2015274.061.2017323115746.nc',\n", + " 'MODIS/MOD08_M3.A2015305.061.2017323221600.nc',\n", + " 'MODIS/MOD08_M3.A2015335.061.2017324201044.nc',\n", + " 'MODIS/MOD08_M3.A2016001.061.2017325101827.nc',\n", + " 'MODIS/MOD08_M3.A2016032.061.2017325143021.nc',\n", + " 'MODIS/MOD08_M3.A2016061.061.2017326005020.nc',\n", + " 'MODIS/MOD08_M3.A2016092.061.2017326123542.nc',\n", + " 'MODIS/MOD08_M3.A2016122.061.2017326222614.nc',\n", + " 'MODIS/MOD08_M3.A2016153.061.2017327071005.nc',\n", + " 'MODIS/MOD08_M3.A2016183.061.2017327181105.nc',\n", + " 'MODIS/MOD08_M3.A2016214.061.2017328034102.nc',\n", + " 'MODIS/MOD08_M3.A2016245.061.2017328135749.nc',\n", + " 'MODIS/MOD08_M3.A2016275.061.2017353013021.nc',\n", + " 'MODIS/MOD08_M3.A2016306.061.2017329084922.nc',\n", + " 'MODIS/MOD08_M3.A2016336.061.2017329140013.nc',\n", + " 'MODIS/MOD08_M3.A2017001.061.2017316214128.nc',\n", + " 'MODIS/MOD08_M3.A2017032.061.2017313053532.nc',\n", + " 'MODIS/MOD08_M3.A2017060.061.2017314102914.nc',\n", + " 'MODIS/MOD08_M3.A2017091.061.2017314221045.nc',\n", + " 'MODIS/MOD08_M3.A2017121.061.2017315132821.nc',\n", + " 'MODIS/MOD08_M3.A2017152.061.2017315220820.nc',\n", + " 'MODIS/MOD08_M3.A2017182.061.2017317043341.nc',\n", + " 'MODIS/MOD08_M3.A2017213.061.2017318193955.nc',\n", + " 'MODIS/MOD08_M3.A2017244.061.2017285132541.nc',\n", + " 'MODIS/MOD08_M3.A2017274.061.2017305195215.nc',\n", + " 'MODIS/MOD08_M3.A2017305.061.2017335084629.nc',\n", + " 'MODIS/MOD08_M3.A2017335.061.2019072155425.nc',\n", + " 'MODIS/MOD08_M3.A2018001.061.2018032091034.nc',\n", + " 'MODIS/MOD08_M3.A2018032.061.2018064190408.nc',\n", + " 'MODIS/MOD08_M3.A2018060.061.2018093210347.nc',\n", + " 'MODIS/MOD08_M3.A2018091.061.2018121152525.nc',\n", + " 'MODIS/MOD08_M3.A2018121.061.2018152090257.nc',\n", + " 'MODIS/MOD08_M3.A2018152.061.2018182091458.nc',\n", + " 'MODIS/MOD08_M3.A2018182.061.2018213092526.nc',\n", + " 'MODIS/MOD08_M3.A2018213.061.2018247180628.nc',\n", + " 'MODIS/MOD08_M3.A2018244.061.2018278214421.nc',\n", + " 'MODIS/MOD08_M3.A2018274.061.2018312191357.nc',\n", + " 'MODIS/MOD08_M3.A2018305.061.2018335100840.nc',\n", + " 'MODIS/MOD08_M3.A2018335.061.2019072155558.nc',\n", + " 'MODIS/MOD08_M3.A2019001.061.2019038190346.nc',\n", + " 'MODIS/MOD08_M3.A2019032.061.2019063205813.nc',\n", + " 'MODIS/MOD08_M3.A2019060.061.2019091091201.nc',\n", + " 'MODIS/MOD08_M3.A2019091.061.2019121094111.nc',\n", + " 'MODIS/MOD08_M3.A2019121.061.2019152091235.nc',\n", + " 'MODIS/MOD08_M3.A2019213.061.2019247234417.nc',\n", + " 'MODIS/MOD08_M3.A2019244.061.2019275214642.nc',\n", + " 'MODIS/MOD08_M3.A2019274.061.2019305094830.nc',\n", + " 'MODIS/MOD08_M3.A2019305.061.2019336215510.nc',\n", + " 'MODIS/MOD08_M3.A2019335.061.2020002234053.nc',\n", + " 'MODIS/MOD08_M3.A2020001.061.2020032093438.nc',\n", + " 'MODIS/MOD08_M3.A2020032.061.2020063080211.nc',\n", + " 'MODIS/MOD08_M3.A2020061.061.2020092090542.nc',\n", + " 'MODIS/MOD08_M3.A2020092.061.2020125212701.nc',\n", + " 'MODIS/MOD08_M3.A2020122.061.2020153091858.nc',\n", + " 'MODIS/MOD08_M3.A2020153.061.2020183102654.nc',\n", + " 'MODIS/MOD08_M3.A2020183.061.2020214100214.nc',\n", + " 'MODIS/MOD08_M3.A2020214.061.2020245105303.nc',\n", + " 'MODIS/MOD08_M3.A2020245.061.2020275103907.nc',\n", + " 'MODIS/MOD08_M3.A2020275.061.2020306092007.nc',\n", + " 'MODIS/MOD08_M3.A2020306.061.2020336212521.nc',\n", + " 'MODIS/MOD08_M3.A2020336.061.2021001085852.nc',\n", + " 'MODIS/MOD08_M3.A2021001.061.2021032165629.nc',\n", + " 'MODIS/MOD08_M3.A2021032.061.2021060103941.nc',\n", + " 'MODIS/MOD08_M3.A2021060.061.2021092223659.nc',\n", + " 'MODIS/MOD08_M3.A2021091.061.2021122121127.nc',\n", + " 'MODIS/MOD08_M3.A2021121.061.2021152100135.nc',\n", + " 'MODIS/MOD08_M3.A2021152.061.2021183012452.nc',\n", + " 'MODIS/MOD08_M3.A2021182.061.2021213142147.nc',\n", + " 'MODIS/MOD08_M3.A2021213.061.2021244103656.nc',\n", + " 'MODIS/MOD08_M3.A2021244.061.2021276153158.nc']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "remote_files = fs.glob(s3path)\n", + "remote_files" + ] + }, + { + "cell_type": "markdown", + "id": "e8235a22-dfb4-442e-9c78-e450ccd32cce", + "metadata": {}, + "source": [ + "We need to add a time dimension to concatenate data. For this, we define a function that will be called for each remote file (via the `preprocess` parameter of Xarray `open_mfdataset`.)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "39bc368c-3aad-4bf8-b249-40768fc6c49e", + "metadata": {}, + "outputs": [], + "source": [ + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "128871ee-64ab-421a-bbcd-f9913ae54fad", + "metadata": {}, + "outputs": [], + "source": [ + "def paths_to_datetimeindex(paths):\n", + " return [datetime.strptime(date.split('.A')[-1].split('.')[0], '%Y%j') for date in paths]" + ] + }, + { + "cell_type": "markdown", + "id": "94bb2bfc-a068-435a-80b7-bc50a7a8088a", + "metadata": {}, + "source": [ + "Xarray `open_mfdataset` allows opening multiple files at the same time." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "db0b6dd4-05c8-4c0e-8ca8-712665b0af21", + "metadata": {}, + "outputs": [], + "source": [ + "# Iterate through remote_files to create a fileset\n", + "fileset = [fs.open(file) for file in remote_files]" + ] + }, + { + "cell_type": "markdown", + "id": "dc0e55ec-488a-486c-8d15-83e040ad656b", + "metadata": {}, + "source": [ + "When opening remote files, you can also select the variables you wish to analyze." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "53d3ac56-4a2d-4a12-8fff-53caa519a425", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Variable (time: 258)>\n",
+       "array(['2000-02-01T00:00:00.000000000', '2000-03-01T00:00:00.000000000',\n",
+       "       '2000-04-01T00:00:00.000000000', '2000-05-01T00:00:00.000000000',\n",
+       "       '2000-06-01T00:00:00.000000000', '2000-07-01T00:00:00.000000000',\n",
+       "       '2000-08-01T00:00:00.000000000', '2000-09-01T00:00:00.000000000',\n",
+       "       '2000-10-01T00:00:00.000000000', '2000-11-01T00:00:00.000000000',\n",
+       "       '2000-12-01T00:00:00.000000000', '2001-01-01T00:00:00.000000000',\n",
+       "       '2001-02-01T00:00:00.000000000', '2001-03-01T00:00:00.000000000',\n",
+       "       '2001-04-01T00:00:00.000000000', '2001-05-01T00:00:00.000000000',\n",
+       "       '2001-06-01T00:00:00.000000000', '2001-07-01T00:00:00.000000000',\n",
+       "       '2001-08-01T00:00:00.000000000', '2001-09-01T00:00:00.000000000',\n",
+       "       '2001-10-01T00:00:00.000000000', '2001-11-01T00:00:00.000000000',\n",
+       "       '2001-12-01T00:00:00.000000000', '2002-01-01T00:00:00.000000000',\n",
+       "       '2002-02-01T00:00:00.000000000', '2002-03-01T00:00:00.000000000',\n",
+       "       '2002-04-01T00:00:00.000000000', '2002-05-01T00:00:00.000000000',\n",
+       "       '2002-06-01T00:00:00.000000000', '2002-07-01T00:00:00.000000000',\n",
+       "       '2002-08-01T00:00:00.000000000', '2002-09-01T00:00:00.000000000',\n",
+       "       '2002-10-01T00:00:00.000000000', '2002-11-01T00:00:00.000000000',\n",
+       "       '2002-12-01T00:00:00.000000000', '2003-01-01T00:00:00.000000000',\n",
+       "       '2003-02-01T00:00:00.000000000', '2003-03-01T00:00:00.000000000',\n",
+       "       '2003-04-01T00:00:00.000000000', '2003-05-01T00:00:00.000000000',\n",
+       "...\n",
+       "       '2018-06-01T00:00:00.000000000', '2018-07-01T00:00:00.000000000',\n",
+       "       '2018-08-01T00:00:00.000000000', '2018-09-01T00:00:00.000000000',\n",
+       "       '2018-10-01T00:00:00.000000000', '2018-11-01T00:00:00.000000000',\n",
+       "       '2018-12-01T00:00:00.000000000', '2019-01-01T00:00:00.000000000',\n",
+       "       '2019-02-01T00:00:00.000000000', '2019-03-01T00:00:00.000000000',\n",
+       "       '2019-04-01T00:00:00.000000000', '2019-05-01T00:00:00.000000000',\n",
+       "       '2019-08-01T00:00:00.000000000', '2019-09-01T00:00:00.000000000',\n",
+       "       '2019-10-01T00:00:00.000000000', '2019-11-01T00:00:00.000000000',\n",
+       "       '2019-12-01T00:00:00.000000000', '2020-01-01T00:00:00.000000000',\n",
+       "       '2020-02-01T00:00:00.000000000', '2020-03-01T00:00:00.000000000',\n",
+       "       '2020-04-01T00:00:00.000000000', '2020-05-01T00:00:00.000000000',\n",
+       "       '2020-06-01T00:00:00.000000000', '2020-07-01T00:00:00.000000000',\n",
+       "       '2020-08-01T00:00:00.000000000', '2020-09-01T00:00:00.000000000',\n",
+       "       '2020-10-01T00:00:00.000000000', '2020-11-01T00:00:00.000000000',\n",
+       "       '2020-12-01T00:00:00.000000000', '2021-01-01T00:00:00.000000000',\n",
+       "       '2021-02-01T00:00:00.000000000', '2021-03-01T00:00:00.000000000',\n",
+       "       '2021-04-01T00:00:00.000000000', '2021-05-01T00:00:00.000000000',\n",
+       "       '2021-06-01T00:00:00.000000000', '2021-07-01T00:00:00.000000000',\n",
+       "       '2021-08-01T00:00:00.000000000', '2021-09-01T00:00:00.000000000'],\n",
+       "      dtype='datetime64[ns]')
" + ], + "text/plain": [ + "\n", + "array(['2000-02-01T00:00:00.000000000', '2000-03-01T00:00:00.000000000',\n", + " '2000-04-01T00:00:00.000000000', '2000-05-01T00:00:00.000000000',\n", + " '2000-06-01T00:00:00.000000000', '2000-07-01T00:00:00.000000000',\n", + " '2000-08-01T00:00:00.000000000', '2000-09-01T00:00:00.000000000',\n", + " '2000-10-01T00:00:00.000000000', '2000-11-01T00:00:00.000000000',\n", + " '2000-12-01T00:00:00.000000000', '2001-01-01T00:00:00.000000000',\n", + " '2001-02-01T00:00:00.000000000', '2001-03-01T00:00:00.000000000',\n", + " '2001-04-01T00:00:00.000000000', '2001-05-01T00:00:00.000000000',\n", + " '2001-06-01T00:00:00.000000000', '2001-07-01T00:00:00.000000000',\n", + " '2001-08-01T00:00:00.000000000', '2001-09-01T00:00:00.000000000',\n", + " '2001-10-01T00:00:00.000000000', '2001-11-01T00:00:00.000000000',\n", + " '2001-12-01T00:00:00.000000000', '2002-01-01T00:00:00.000000000',\n", + " '2002-02-01T00:00:00.000000000', '2002-03-01T00:00:00.000000000',\n", + " '2002-04-01T00:00:00.000000000', '2002-05-01T00:00:00.000000000',\n", + " '2002-06-01T00:00:00.000000000', '2002-07-01T00:00:00.000000000',\n", + " '2002-08-01T00:00:00.000000000', '2002-09-01T00:00:00.000000000',\n", + " '2002-10-01T00:00:00.000000000', '2002-11-01T00:00:00.000000000',\n", + " '2002-12-01T00:00:00.000000000', '2003-01-01T00:00:00.000000000',\n", + " '2003-02-01T00:00:00.000000000', '2003-03-01T00:00:00.000000000',\n", + " '2003-04-01T00:00:00.000000000', '2003-05-01T00:00:00.000000000',\n", + "...\n", + " '2018-06-01T00:00:00.000000000', '2018-07-01T00:00:00.000000000',\n", + " '2018-08-01T00:00:00.000000000', '2018-09-01T00:00:00.000000000',\n", + " '2018-10-01T00:00:00.000000000', '2018-11-01T00:00:00.000000000',\n", + " '2018-12-01T00:00:00.000000000', '2019-01-01T00:00:00.000000000',\n", + " '2019-02-01T00:00:00.000000000', '2019-03-01T00:00:00.000000000',\n", + " '2019-04-01T00:00:00.000000000', '2019-05-01T00:00:00.000000000',\n", + " '2019-08-01T00:00:00.000000000', '2019-09-01T00:00:00.000000000',\n", + " '2019-10-01T00:00:00.000000000', '2019-11-01T00:00:00.000000000',\n", + " '2019-12-01T00:00:00.000000000', '2020-01-01T00:00:00.000000000',\n", + " '2020-02-01T00:00:00.000000000', '2020-03-01T00:00:00.000000000',\n", + " '2020-04-01T00:00:00.000000000', '2020-05-01T00:00:00.000000000',\n", + " '2020-06-01T00:00:00.000000000', '2020-07-01T00:00:00.000000000',\n", + " '2020-08-01T00:00:00.000000000', '2020-09-01T00:00:00.000000000',\n", + " '2020-10-01T00:00:00.000000000', '2020-11-01T00:00:00.000000000',\n", + " '2020-12-01T00:00:00.000000000', '2021-01-01T00:00:00.000000000',\n", + " '2021-02-01T00:00:00.000000000', '2021-03-01T00:00:00.000000000',\n", + " '2021-04-01T00:00:00.000000000', '2021-05-01T00:00:00.000000000',\n", + " '2021-06-01T00:00:00.000000000', '2021-07-01T00:00:00.000000000',\n", + " '2021-08-01T00:00:00.000000000', '2021-09-01T00:00:00.000000000'],\n", + " dtype='datetime64[ns]')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Create variable used for time axis\n", + "time_var = xr.Variable('time', paths_to_datetimeindex(remote_files))\n", + "time_var" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "5fdd5d54-25b6-42d2-9d85-f7657eb8b809", + "metadata": {}, + "outputs": [], + "source": [ + "# Load in and concatenate all individual GeoTIFFs\n", + "modis = xr.concat([xr.open_mfdataset([i],) for i in fileset],\n", + " dim=time_var)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "aa48c30a-36bc-4225-bc9c-a145f090f9af", + "metadata": { + "tags": [] + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:                                              (time: 258,\n",
+       "                                                          YDim:mod08: 180,\n",
+       "                                                          XDim:mod08: 360,\n",
+       "                                                          Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08: 7)\n",
+       "Coordinates:\n",
+       "  * time                                                 (time) datetime64[ns] ...\n",
+       "Dimensions without coordinates: YDim:mod08, XDim:mod08,\n",
+       "                                Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08\n",
+       "Data variables: (12/13)\n",
+       "    Aerosol_Optical_Depth_Land_Ocean_Mean_Mean           (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean     (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Aerosol_Optical_Depth_Average_Ocean_Mean_Mean        (time, Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 7, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Top_Temperature_Mean_Mean                      (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Effective_Emissivity_Mean_Mean                 (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Fraction_Mean_Mean                             (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    ...                                                   ...\n",
+       "    Cloud_Effective_Radius_Liquid_Mean_Mean              (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Water_Path_Liquid_Mean_Mean                    (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Water_Path_Ice_Mean_Mean                       (time, YDim:mod08, XDim:mod08) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Effective_Optical_Depth_Average_Ocean_Micron_Levels  (time, Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08) float32 dask.array<chunksize=(1, 7), meta=np.ndarray>\n",
+       "    XDim                                                 (time, XDim:mod08) float32 dask.array<chunksize=(1, 360), meta=np.ndarray>\n",
+       "    YDim                                                 (time, YDim:mod08) float32 dask.array<chunksize=(1, 180), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    HDFEOSVersion:                     HDFEOS_V2.19\n",
+       "    StructMetadata.0:                  GROUP=SwathStructure\\nEND_GROUP=SwathS...\n",
+       "    StructMetadata.1:                  Min"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n",
+       "    StructMetadata.2:                  BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n",
+       "    StructMetadata.3:                  NT16\\n\\t\\t\\t\\tDimList=("YDim","XDim")\\...\n",
+       "    StructMetadata.4:                  \\t\\tDataFieldName="Cloud_Retrieval_Fra...\n",
+       "    StructMetadata.5:                  List=("YDim","XDim")\\n\\t\\t\\tEND_OBJECT...\n",
+       "    StructMetadata.6:                  CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n",
+       "    CoreMetadata.0:                    \\nGROUP                  = INVENTORYME...\n",
+       "    ArchiveMetadata.0:                 \\nGROUP                  = ARCHIVEDMET...\n",
+       "    identifier_product_doi:            10.5067/MODIS/MOD08_M3.061\n",
+       "    identifier_product_doi_authority:  http://dx.doi.org
" + ], + "text/plain": [ + "\n", + "Dimensions: (time: 258,\n", + " YDim:mod08: 180,\n", + " XDim:mod08: 360,\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08: 7)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] ...\n", + "Dimensions without coordinates: YDim:mod08, XDim:mod08,\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08\n", + "Data variables: (12/13)\n", + " Aerosol_Optical_Depth_Land_Ocean_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Aerosol_Optical_Depth_Average_Ocean_Mean_Mean (time, Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Cloud_Top_Temperature_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Cloud_Effective_Emissivity_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Cloud_Fraction_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " ... ...\n", + " Cloud_Effective_Radius_Liquid_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Cloud_Water_Path_Liquid_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Cloud_Water_Path_Ice_Mean_Mean (time, YDim:mod08, XDim:mod08) float32 dask.array\n", + " Effective_Optical_Depth_Average_Ocean_Micron_Levels (time, Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08) float32 dask.array\n", + " XDim (time, XDim:mod08) float32 dask.array\n", + " YDim (time, YDim:mod08) float32 dask.array\n", + "Attributes:\n", + " HDFEOSVersion: HDFEOS_V2.19\n", + " StructMetadata.0: GROUP=SwathStructure\\nEND_GROUP=SwathS...\n", + " StructMetadata.1: Min\"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n", + " StructMetadata.2: BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n", + " StructMetadata.3: NT16\\n\\t\\t\\t\\tDimList=(\"YDim\",\"XDim\")\\...\n", + " StructMetadata.4: \\t\\tDataFieldName=\"Cloud_Retrieval_Fra...\n", + " StructMetadata.5: List=(\"YDim\",\"XDim\")\\n\\t\\t\\tEND_OBJECT...\n", + " StructMetadata.6: CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n", + " CoreMetadata.0: \\nGROUP = INVENTORYME...\n", + " ArchiveMetadata.0: \\nGROUP = ARCHIVEDMET...\n", + " identifier_product_doi: 10.5067/MODIS/MOD08_M3.061\n", + " identifier_product_doi_authority: http://dx.doi.org" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis" + ] + }, + { + "cell_type": "markdown", + "id": "80224bc3-41d8-42ff-abb7-167937754e55", + "metadata": {}, + "source": [ + "### Apply the same pre-processing as earlier" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "5485973e-0972-4eba-85c0-50a68689c3a0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "modis = modis.rename_dims({'YDim:mod08': 'lat', 'XDim:mod08':'lon', 'Effective_Optical_Depth_Average_Ocean_Micron_Levels:mod08':'levels'})" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "5d1cd31f-a75b-4172-b389-36a46b9da908", + "metadata": {}, + "outputs": [], + "source": [ + "modis = modis.rename_vars({'YDim':'lat', 'XDim':'lon', 'Effective_Optical_Depth_Average_Ocean_Micron_Levels': 'levels'})" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "26319158-cd58-4ceb-8c3d-ed9be49d536a", + "metadata": {}, + "outputs": [], + "source": [ + "modis = modis.assign_coords({\"longitude\": x, \"latitude\": y, 'levels': z})" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "2c804588-0840-4847-a021-b142653b213f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:                                           (time: 258, lat: 180,\n",
+       "                                                       lon: 360, levels: 7)\n",
+       "Coordinates:\n",
+       "  * levels                                            (levels) float32 0.47 ....\n",
+       "    lon                                               (time, lon) float32 dask.array<chunksize=(1, 360), meta=np.ndarray>\n",
+       "    lat                                               (time, lat) float32 dask.array<chunksize=(1, 180), meta=np.ndarray>\n",
+       "  * time                                              (time) datetime64[ns] 2...\n",
+       "    longitude                                         (lon) float32 -179.5 .....\n",
+       "    latitude                                          (lat) float32 89.5 ... ...\n",
+       "Data variables:\n",
+       "    Aerosol_Optical_Depth_Land_Ocean_Mean_Mean        (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean  (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Aerosol_Optical_Depth_Average_Ocean_Mean_Mean     (time, levels, lat, lon) float32 dask.array<chunksize=(1, 7, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Top_Temperature_Mean_Mean                   (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Effective_Emissivity_Mean_Mean              (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Fraction_Mean_Mean                          (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Optical_Thickness_Liquid_Mean_Mean          (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Effective_Radius_Liquid_Mean_Mean           (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Water_Path_Liquid_Mean_Mean                 (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "    Cloud_Water_Path_Ice_Mean_Mean                    (time, lat, lon) float32 dask.array<chunksize=(1, 180, 360), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    HDFEOSVersion:                     HDFEOS_V2.19\n",
+       "    StructMetadata.0:                  GROUP=SwathStructure\\nEND_GROUP=SwathS...\n",
+       "    StructMetadata.1:                  Min"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n",
+       "    StructMetadata.2:                  BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n",
+       "    StructMetadata.3:                  NT16\\n\\t\\t\\t\\tDimList=("YDim","XDim")\\...\n",
+       "    StructMetadata.4:                  \\t\\tDataFieldName="Cloud_Retrieval_Fra...\n",
+       "    StructMetadata.5:                  List=("YDim","XDim")\\n\\t\\t\\tEND_OBJECT...\n",
+       "    StructMetadata.6:                  CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n",
+       "    CoreMetadata.0:                    \\nGROUP                  = INVENTORYME...\n",
+       "    ArchiveMetadata.0:                 \\nGROUP                  = ARCHIVEDMET...\n",
+       "    identifier_product_doi:            10.5067/MODIS/MOD08_M3.061\n",
+       "    identifier_product_doi_authority:  http://dx.doi.org
" + ], + "text/plain": [ + "\n", + "Dimensions: (time: 258, lat: 180,\n", + " lon: 360, levels: 7)\n", + "Coordinates:\n", + " * levels (levels) float32 0.47 ....\n", + " lon (time, lon) float32 dask.array\n", + " lat (time, lat) float32 dask.array\n", + " * time (time) datetime64[ns] 2...\n", + " longitude (lon) float32 -179.5 .....\n", + " latitude (lat) float32 89.5 ... ...\n", + "Data variables:\n", + " Aerosol_Optical_Depth_Land_Ocean_Mean_Mean (time, lat, lon) float32 dask.array\n", + " AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Aerosol_Optical_Depth_Average_Ocean_Mean_Mean (time, levels, lat, lon) float32 dask.array\n", + " Cloud_Top_Temperature_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Effective_Emissivity_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Fraction_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Optical_Thickness_Liquid_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Effective_Radius_Liquid_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Water_Path_Liquid_Mean_Mean (time, lat, lon) float32 dask.array\n", + " Cloud_Water_Path_Ice_Mean_Mean (time, lat, lon) float32 dask.array\n", + "Attributes:\n", + " HDFEOSVersion: HDFEOS_V2.19\n", + " StructMetadata.0: GROUP=SwathStructure\\nEND_GROUP=SwathS...\n", + " StructMetadata.1: Min\"\\n\\t\\t\\t\\tDataType=DFNT_INT16\\n\\t\\...\n", + " StructMetadata.2: BJECT=DataField_295\\n\\t\\t\\tOBJECT=Data...\n", + " StructMetadata.3: NT16\\n\\t\\t\\t\\tDimList=(\"YDim\",\"XDim\")\\...\n", + " StructMetadata.4: \\t\\tDataFieldName=\"Cloud_Retrieval_Fra...\n", + " StructMetadata.5: List=(\"YDim\",\"XDim\")\\n\\t\\t\\tEND_OBJECT...\n", + " StructMetadata.6: CT=DataField_1037\\n\\t\\t\\t\\tDataFieldNa...\n", + " CoreMetadata.0: \\nGROUP = INVENTORYME...\n", + " ArchiveMetadata.0: \\nGROUP = ARCHIVEDMET...\n", + " identifier_product_doi: 10.5067/MODIS/MOD08_M3.061\n", + " identifier_product_doi_authority: http://dx.doi.org" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "modis" + ] + }, + { + "cell_type": "markdown", + "id": "307e4bbb-2965-462c-bfc7-d7f61531071f", + "metadata": {}, + "source": [ + ":::{tip}\n", + "If you use one of xarray’s open methods such as xarray.open_dataset to load netCDF files with the default engine, it is recommended to use decode_coords=”all”. This will load the grid mapping variable into coordinates for compatibility with rioxarray. See [rioxarray documentation](https://corteva.github.io/rioxarray/stable/getting_started/getting_started.html#xarray).\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "bc464ec7", + "metadata": {}, + "source": [ + "## Preparing and discover online datasets\n", + "\n", + "With the plethora of cloud storage, there are many available online datasets. To ease the preparation and discovery of such datasets, we describe emerging community-driven initiatives promoting standards suited to both geospatial and geoscience communities. Most of the material below is adapted from a previous Pangeo 101 training {cite:ps}`galaxy2022-pangeo`." + ] + }, + { + "cell_type": "markdown", + "id": "cfe9f5bd", + "metadata": {}, + "source": [ + ":::{tip}\n", + "While we provide a general intro to some initiatives, we suggest below a list of FOSS4G 2022 talks with very interesting developments to prepare and discover spatio-temporal datasets in the cloud. Enjoy!\n", + "\n", + "- [STAC Best Practices and Tools](https://talks.osgeo.org/foss4g-2022/talk/9RRYZM/), 2022-08-24, 11:00–11:30\n", + "- [Early use of FOSS4G in a space start up](https://talks.osgeo.org/foss4g-2022/talk/HG7RLR/), 2022-08-24, 11:30–12:00\n", + "- [Exploring Data Interoperability with STAC and the Microsoft Planetary Computer](https://talks.osgeo.org/foss4g-2022/talk/L3KNY8/), 2022-08-24, 12:10–12:15\n", + "- [Serving oblique aerial imagery using STAC and Cloud Optimized Geotiffs](https://talks.osgeo.org/foss4g-2022/talk/SQYE9A/), 2022-08-24, 14:45–15:15\n", + "- [Pangeo Forge: Crowdsourcing Open Data in the Cloud](https://talks.osgeo.org/foss4g-2022/talk/DABTGG/). 2022-08-26, 10:00-10:30.\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "e5f7daeb-be5e-4fc8-bee5-bd82a50fa57c", + "metadata": {}, + "source": [ + "### Analysis Ready, cloud optimized data (ARCO)\n", + "When analyzing data at scale, the data format used is key. For years, the main data format was netCDF e.g. Network Common Data Form but with the use of cloud computing and interest in Open Science, different formats are often more suitable.\n", + "\n", + "Formats for analyzing data from the cloud are refered to as \"Analysis Ready, Cloud Optimized\" data formats or in short ARCO. Find further info about ARCO datasets in {cite:ps}`Abernathey2022-arco`.\n", + "\n", + "What is \"Analysis Ready\"?\n", + "* Think in terms of \"Datasets\" not \"data files\"\n", + "* No need for tedious homogenizing / cleaning setup guides\n", + "* Curated and cataloged\n", + "\n", + "What is \"Cloud Optimized\"?\n", + "* Compatible with object storage e.g. access via HTTP\n", + "* Supports lazy access and intelligent subsetting\n", + "* Integrates with high-level analysis libraries and distributed frameworks\n", + "\n", + "Instead of having a big dataset, ARCO datasets are chunked appropriately for analysis and have rich metadata (See Figure 1).\n", + "\n", + "\n", + "\n", + "*Fig 1. Example of an ARCO dataset. Source: {cite:ps}`galaxy2022-pangeo`.*" + ] + }, + { + "cell_type": "markdown", + "id": "66c8411a", + "metadata": {}, + "source": [ + "### The Pangeo forge initiative\n", + "\n", + "[Pangeo Forge](https://pangeo-forge.org/) is an open source platform for data **Extraction**, **Transformation**, and **Loading** (ETL). The goal of *Pangeo Forge* is to make it easy to extract data from traditional repositories and deposit this data in cloud object storage in an analysis-ready, cloud optimized (ARCO) format {cite:ps}`galaxy2022-pangeo`.\n", + "\n", + "Pangeo Forge is inspired directly by Conda Forge, a community-led collection of recipes for building conda packages.\n", + "\n", + "It is under active development and the Pangeo community hopes it will play a role in democratizing the publication of datasets in ARCO format.\n", + "\n", + "#### How does Pangeo Forge work?\n", + "\n", + "Pangeo Forge defines the concept of a recipe, which specifies the logic for transforming a specific data archive into an ARCO data store.\n", + "All contributions to Pangeo Forge must include an executable Python module, named recipe.py or similar, in which the data transformation logic is embedded (Figure 2).\n", + "The recipe contributor is expected to use one of a predefined set of template algorithms defined by Pangeo Forge.\n", + "Each of these templated algorithms is designed to transform data of a particular source type into a corresponding ARCO format, and requires only that the contributor populate the template with information unique to their specific data transformation, including the location of the source files and the way in which they should be aligned in the resulting ARCO data store {cite:ps}`Abernathey2022-arco`.\n", + "\n", + "The diagram below looks complicated but like for conda forge most of the process is automated.\n", + "\n", + "\n", + "\n", + "*Fig 2. A recipe in relation to Pangeo Forge architecture. Source: {cite:ps}`Abernathey2022-arco`.*\n", + "\n", + "The next step after preparing the dataset is then to tell the community where and how to access to your transformed dataset.\n", + "\n", + "This is done by creating a catalog." + ] + }, + { + "cell_type": "markdown", + "id": "2469aa6f", + "metadata": {}, + "source": [ + "### Spatio Temporal Asset Catalogs (STAC)\n", + "\n", + "The [STAC](https://stacspec.org/en/) specification is a common language to describe geospatial information, so it can more easily be worked with, indexed, and discovered.\n", + "\n", + "#### Why STAC?\n", + "* Each provider has its own catalog and interface (APIs).\n", + "* Every time you want to access a new catalog, you need to change your program.\n", + "* We have lots of data providers and each with a bespoke interface.\n", + "* It is becoming quickly difficult for programmers who need to design a new data connector each time.\n", + "\n", + "#### Features\n", + "- STAC catalogs are extremely simple.\n", + "- They are composed of three layers:\n", + " - **Catalogs**\n", + " - **Collections**\n", + " - **Items**\n", + "- STAC is very popular for Earth Observation satellite imagery.\n", + "- For instance it can be used to access Sentinel-2 in AWS (see Figure 3).\n", + "\n", + "\n", + "\n", + "*Fig 3. Example of STAC collection of Sentinel-2 images hosted in AWS.\n", + "Source: {cite:ps}`galaxy2022-pangeo`.*\n", + "\n", + "\n", + "#### STAC and Pangeo Forge\n", + "- Pangeo-forge supports the creation of analysis-ready cloud optimized (ARCO) data in cloud object storage from \"classical\" data repositories.\n", + "- STAC is used to create catalogs and goes beyond the Pangeo ecosystem.\n", + "- Work is ongoing to figure out the best way to expose Pangeo-Forge-generated data assets via STAC catalogs." + ] + }, + { + "cell_type": "markdown", + "id": "531077be", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + ":::{tip}\n", + "Pangeo members, Scott Henderson (University of Washington) and Tom Augspurger (Microsoft), provided a great workshop in FOSS4G 2021 covering STAC.\n", + "\n", + "Feel free to explore the GitHub repository of the [here](https://github.com/pangeo-data/foss4g-2021).\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "c17df17e-70c7-4120-823d-2df7c535f874", + "metadata": {}, + "source": [ + "
\n", + " Key Points\n", + "
\n", + "
    \n", + "
  • Access to remote dataset
  • \n", + "
  • ARCO datasets
  • \n", + "
  • Pangeo Forge
  • \n", + "
  • STAC
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "b77853a3", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"data-access\"\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "5c6c0b22", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Packages citation\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"access\" and topic % \"package\"\n", + ":keyprefix: c-\n", + "```" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/images/chunked.png b/docs/images/chunked.png new file mode 100644 index 0000000000000000000000000000000000000000..e918fef990e9bf95a9b0d96919117b638a54e7ed GIT binary patch literal 17266 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 literal 0 HcmV?d00001 diff --git a/docs/images/dashboardlink.png b/docs/images/dashboardlink.png new file mode 100644 index 0000000000000000000000000000000000000000..4f947020b72925c9e7640aa653fe44902531a0bb GIT binary patch literal 187264 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%0AhpI7pEz3q(>;7rI5vMp|@i6O@O~{u7hQ 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

L!2ImBDTghLzyYgW0r>iwK`OkE`1prO3RT z_iw~Gk6q}^d`O-GsAvNO{gBiDX=NE*Qnk>iS*9_w@L>HJLrqk(XBK3d$w?t~ss3?a zSHG9aXye~KetYVOs&n)$o^CNo+CLm`LVST~oq=xS6#d&!~h`t9+bLg z_PIlN#{0A8m)*o><1@Y6MA!E`HdRk-(@61* z$v^FKbQ0lQ41svstebCL0_*kGy7($J;(Y;&w(gVMANGDF3G&~jyDV68FXo({Nd|a zT@&-%Vm)vT@o6@m@*MQkd1Ai?vDL9(SH<UrncKMLc(vImbeA5# zJ4CvZTFP@h`<2u4r4KdFkr`bB^7SweQpm5>j^D}th-9s+S~eiYEoaC zX@ao<6~OP?faK9L@CcIX`9ax%E$EASiSJ&d&7yM zV2}y6Ju)e9efc<@LS0nhoQbG6EBl<=W4~Y;c&fp@c;ovc5U(|sWxTgkgg${7K`M$k zHE#0NuFCT|Wg3v{@<8?MK+%k}9@j8xQRC!5!7y{8D83{S7`GH*EuGZ3It^UdU5(&K zx{|slEo7W|BmMHqTZ(Zii$8haowEd578~jan3g{a|W8#$RSiJ%*19dDqkRSFsCU z>sRZ)z_w{FKn)RHb(N8K^R2N79)O|%3#@mOQZ2C1j|S263O(O3wLhbm_EbfW`7hbl zRa_EOlV&v-sR>9|fh!p|k10Yje>hkj;gbQP_763>vyU#WtYY~| zg48eX>NyFO;qnJq2G23#jFj3c^WCl;5h7|ZSFPf-F<;i5PLa>&e#)~D|J;KOYV%nC z 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�oQ$s{0~ma`btl4 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 J8jx@Hg8^4nr9pqyr=Gk$S*6cCt(BNx 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

!?Nvg!{%+`+lV*6K94Z> zFQGh^9qj9S4iVSY)rC)PaGyRc>){~^HjRM!-qa+cu1*cn{Pry$!kmqj_2E(kUVidG zFYXC11l&=Qd%vN*J)t%I!^7v*s%m>|Mt@fyr5AOVv$f^LRq??aJU0^)6A|71{^xCM zc#Jc!>E5684xKphPe#)d**Gy}$~&J9m6eqt7&@lsx7`!tJbs)Jg}=+s_AhOvUDVG z{wa`2SxKoNA5Qj)fo(kVi>PhTg zV`K4`2fK;XhDg}&Es5cvwB{jIRn-n4QfVoM#urn{e$OttLuCR_ecojvv*3{-T!`3t z_bvz@rSpr5Qk0b~jTcppLJHKYxTWO)1h~sf*LHsv zMN>1g&xSk_(|R`9t(Q6X0d=tl?^~|}0A?1(tCA4r^+Ft;pALbeVaz5J&NlWcdS3pZ zsQdG!zzi1rvP^W{4-Sxn;rR53=X-Q`%p+ETq1Z?J~Ea}fUiv#g7SKbZY za{%uKcF8-5%(#l+I4@th!nmLO`a=OWuRDklXdh~7DTEKH=Q+~+m8=)aYL+)Q=K!eU zgp}3P?&CvfFRHHE*!ZE@45@PoOGmNkMLlL%aN2sfFn_(8?37DwjAue-tlP@xTyH~^P5nPK7ST7Gc&^{V5lKGkBEpYMPxw$>7`x%_cCW}e7wr#%hEbJ z^eB;t%Icp#WnEl^Vq#)&FC|^wDlmD$R_*BH!H-2MCaQIJ0Arzu^$IDRhG;ma@Xl$4Y! zAMG9ib=f&MW)ZAx931nkE~?vzvrm;H#X4NjTea8-D z_wzF@K}b6uA)zw7?xgbsD^fB%I(5-q6vtCoSop7Hv%rB}WGDlhH{QP4L{AhSpFa;6 z-1VHCXi^(FJT-}`J=t&NdG_Q9xk8jk z1xystfty(rVhgluz;0oK8^KTDMi`?k(fg1^RgnpEdBoS7o!C!~Y~FaAL?OW+DQm#J z|M$Q^bVi21R@U`2fEebcll~0<}+t1 z&}$I`9MXClf0@q2cCxTM`1tWOylZh4m70&OT(T)@d$(@>Jv3zG=(s<)EOR&`n}Dn| z5n-1pM9{7Y=QAh?-90^S|C*P8!NF~;L?eO((-(|D(n9?->Ef-28#w=aDxK8e*;yyN z4ZAV3xb%BT#w!}|^62s7qaq^oG1dDc3`LzM9x}Mk+y+eoq7!+KVLa7Km#*^BHeM0B zsG@>tlVxdH+3m!m_|Tu}O!Zjg*s){BLZ8P{Up!lXJO~snck0xvXRw@WBSM~+m$!Oc zexveAg=u#cVZit#Tmk>kP?>Aj*wWI{82+Tu(bCSqp}Tzfa>p8mO-$JJ?>}4^#=OR) zD z04*fBxaVba-%omasN*<1aB7&OJkWhdSy;$0ufaC;1hc~6tvh`;K$$8h*Q4Ijd?OY- zbI91(`1kMMdd|*aAg+Jx=gFK}^titP;E4tQ9v+VW_%RGtsee=ySHzLKm&ey}p@ha; z5<$A_L6^6C+mL-NfCL3jLqnskv2h%3>$9MscgKI43xoq+c0YRbi1XO78vt8$WFHji z|AK#I9v|B=AI-Y`m$hSSP`B1G%I&%7384gJTW!C0c6}D0aK3ZW`Nru8jBLGt84j!v z5}NnCl7A{fA#ZU?i(bT48pIOkXbjf&d(wGjQxk&DA6hMb0nJ0b&`B5<5G3+MUA-74 z6BLKGgC!d~dnafuC;~pSRU*1Pt4K>nH|i){Q@sKJom3ea8NzOJ0ZB=0z%n*2uH{2< zPalAXJ5RD>rj$uQAV^VkF#uY}{a?RZU|KFRk^#i>?>d671%LfYw71GoG7zfWP`u!r zZ^~*+AtRw?J0_iRD?UL%+o?Yqd-m>yG6=VOzxwV^b#;`0D3XBSVE?eNxwcf#;Nald z(P9RSPHaTt!pij8%cAfsFp%jWPDF6+L=Lw}o0zb`_W0aymktDh#UZME=~8C=^xZiJ z#QKBX3||K)@k#$_4^&n^Xb5m@IAAsXE6=-;B)?q|v`!&mZ+L~IynKaAmGt%pUxeKk zLLj0sJ5~;N^rUU?lRrB^jT}~Q`tattIF*#L*WunZK}AIp_+Efd80aI?2X~84Pq)z~ zdwE1(U!MRuRP=?#5f5-^q3+&Z6P0dokWg^tciy@se9*^8}xU)87%2F*-43-V#J+^Cqym+iwI)`r0!##MQ z!jCViO)*VN7k!M>bAz{J#`QbOB2hk5Q})AcxsMSQwThy|ye^%Yfg!qsa58~&oiIOJ z^4!AF(onv9nblK~z*&9&9rwiG5LBbmA{T#IKMM|?*6Cvb=Y*x;3;zO&1dRYj(7c5X z!8;PYoLrUKs#VL0s;2yA6Q}t}Bkt>+$kjlfX z!>bVRTEi=vV%GyGHv&HS`S0nZvg9bRob=r>{piuQebm(3NIk2w$s5zt(oSG7=U!P) zbWYB5Sd6|A5xKuAv+ms4hz{tJ+Wy#>7*9kW#IeXX(z=zy)gKyj&VBpt9ga~B=>k+8 z;iogZdi6G);C1-(TR?$`CWle5MvC%Cd8kescnmsBq5-nRg z#MOJ@QKmwQ+STu`Xu>D|?HKKxCc~N&-G{9Xw^6M^vA+Cc!(BVc$uU68FUP#sJ>Nt7 zodooAZU25cx-I|$xErN}#<)Y^&6_u?fBble5ph^+&>xoHY>yp2d>bWYQN~OC- z#LgJCq-wMJ7b+S5?uoTErO#D+T#{JC@a#$Aq-2W9%lbrXd9D+DJ)am<5HN}S1G>)> zWYq#3*CQ#+h>td{$pYe%n}_E!rn7*=n>|0FFbB%slZ?5FZN!mS2xz^PYuBXQ^?-(+ zK0YnY7anVxZJ)x^1E<9F^*g^lznfGKb%WvB4WP)T=H@X;N!Yh@uC6(9?^nP|;ALPS z6?i_-4rB^nL;}v`%HpwRM4Z@FrkZDc9wj~FKV$w1o5;s)3^2V_ozYpGd!S$swW6%e9_E7*t=Z{laSPVmzC8dJWyy1IXj%J#u>hq=;+a|VQ2{kGphh{=bI;bCE&XbM8U!DS#M z^6}%txxx+L(V`1~H^G&FK>a)07nNa9ysO-JT*`cTfZ(!9$*Qpl2^Y1sJx?*;pZ(yZ zbdL1^^8q!b&sRVDo~7LW;+xD{&PVKl+XFT4X~v1gsTuHa6ebMHT(}Td_v=uD zK131bbab+%0yZZUTCJHEuQg<3Wa{ec2}w}grIF=wKKH3)42a^hkdT=+=Jb4ZR!V(q z>t|pJ5R|N(oGp}}Lf~cm-uUImkNwaA;qgN&$<-+VCJ4GhPPz%W1(A^(Tnun;$#L>0 z)D=(Y$(sX|QLbYpQcbB7Jq4iaUc=NFbdr&mxeAR+`Gep~zjkcix_Ki!8?jFmzpVF5 zY>Q!i!K(7cDn%)&?!^&JedQPk1k-A>%-?pJa?D4!jox5nW=7!{7yg^*-Zq`OLvq`w z)|zfJ52`k0JaYy$)9%!MhEHQ-Jiw}%MR%w<5l8JgABmW1*j@^flB5tYK(;i85gpEb zkDpVnJWlw-_L1U#yBerm=qN>>6L# z@Aeb>b~wlQ#s*M=0l7!*&TnVfDS7Y9uP9ID?OsP{l+BCEZcBJej@wemJ^+g9af6q^ zvH5Lxy3Xw8#QBX%ozs42*UIO;Xx1m*-uU{FhtaI?i@;|D<>xVGck0wBLUG%j*0^%z z%HACtR(Jo4_HG{^pW6ERd(A_}7(apqGvT}_)Qs%wY+T!Cu^fHi4!$x4ju7mM?A9ga(mSr4Ft?!ZXlZHp)6iVC zuy_Jd8)~{@s95X)F~IAeE3lAy-X0sXv9Yy<8#VIh1f|5wgoFq1_JM}daMLCyCqYVc zYm1%eQaLK9w<)oDjfs7&9e5$xJ-FwgrjQQxL(SF%T5nQ#OchVPHowGLb=2P|_eyqV zJzL+$qVjTbO#W=%xMBPD?Sv3ZZWRuGx^3Gw_zTaTKQ9N*Kp5jIOFZhlqwlSN>w~W8 z`D@p%UA40dfb#@X2?A?m;)JA>)C#3c)h)IVupR4`!9=b!yt=THq+BLd;^{AMQEyaw zskD`FyvnF&^8$LcwA4(_`v)%GoyNhqyu3(E9D;&QRW~o$kjgV&-teNfKYGI>X#rTdaCLJ5ejAm| z%gSyi274+eUl_|h@X(Kw6&!BW)W*>wQmOE4?XRQF9w~2d8!3-WZ3-mMVKRx~ysmx_^PUeuArPC=2s@ds*yeEcv z5+WX_C??02sXOKWTO(wD=kz?p_iww8@=oNa;?BABo}VZpE~f_O^@Gn~)`XzF+S-H& z1mQix&mZ{y{YkJv$(Yf=qB|8lANCO|ojJqI%J_kXq`TqSDhMLen1Sxpa zbf|9NMQs^Vt15f_j!!Jx#8dJIdxPhB_uSH4NnWqiBH;1a}K6tZqMLED!uk$9;Y~jzTF%dnhvC*;Rz5kQn0KBg~Hol>u zk91PoDUDin1W)nOdc&cH$qkDrkX z96Zm#kB7J?nu zh9KD3*qm4zKZ9En1PtmF`vi}>3nQg)&0aqq>=A9sMcec!=TSQ52XAN*nv;&C|PgH`A08QSNAf zCxVnfY4a&DB-k^4+TDgIw{9l*3I_b}DM!$OuNYf_C8SjwNTx;>rl#xjW~pspWVxnK ze`so`OxH#G&_Lso4~3QNs_3Waq&jip1nT}j)YMr?EC;-zVdSy0vq!&paqG{YKh&ju zu1~gg!P7(;LbnO)-+E81nnX2LSQki-Y7r1XIW{)-t)jxn&~S5#8r`w}EMMkoU-@)Q zp`fe03r;(*?q86}KlVZZOP)l4^+K;X$>@#tc2U9_gFp|Bh$ynaVozi zoke9yzZdV@^#I8!ncCQ8eUjiY_4V}(i%uYGH-HQ1>!H5`uN&q)Y7ufsL17ma6%|S_ zJ3BkJ0Di1>U*$ofiPS#QuH-Kxp$vx<%q9Kipc;G{7%b7LsXkHebB~~-ZT@zgL#5)T z_2vrTLA0egEi_DvXgF%?wn=ozDpLZZ;NFYlGpQFZp4Zg;IkJ>HK0ZzeHaNKk_%y29 z93O&^<-~~_Ukk1QwD3CHT+kjDge0<;A+pE5Rrx0D7*o#xZ=Q};UytYp`=aSnTzWZad zPFqHA503%YvexU0JguRdG<00cf0~bnadC0g*4BQ3$tx`_{o>UtFWjxYH3(7tcX7HM z>HG~1*~HXTmZL`vw5Ll_jY__SXo_|Xw0j5EGtu0e$z3-Fbc9NFlX{j{Rq+Z6X0h=` z1G<6p@PG*y!a3Kx)5$4U2L}O3E~9^ zb(u3rUfce-jrw)NWsb*1pV7tm7orkQ`2G8&XfPDQdBf4*7mbN zyt!$cceMjm=U*yKm?u+f7R@%aSDb?~BC&c9y|J-|%}O2Y{Q5Ksl{6^Da* z*N-NGhQ=pDo~s#64dNOiB1pad{=voGXn3KwugQP*Yu((zi@xC>`Dk~-0tLOxn<5q5CibZP{C}Vc;X1MExaItV$K_&0d!sSgZYf*yXTW^LDf>~I) zrf3Wl-IJ)Jg$bn@^sSMNih}&!)(4*%84GcekBjsVGcj$EP~Q6BOX_ASk0H0#uF>!4 z6a&8S;dQ_kXinR}2XrJOg`GZQmI)5xReZ7st)n}iKYzaIU^!|-s(SK(WJ2vfwNI)ggeQq@UjzAQsUy{?*na`L@~6|aJ%tXh!hV2gx9mefBm`|pI{;_Ez88x{*+1J z>G!G~ua(Et@+E~FFHvK(<*nvE>K5`zq0q2Mf~2AbP|wjjcHJ9CO9IRoVl?*s`~6UV z4Mww|c<&uYj{piOsj0{Dg{jKg+PQD0MqRa)1Z}Pyje7>p2Y*Qas{Ne_$756EyrjAJ z^`ti{4tmROp$+u9HobjQ*ABTS$9Z{p?wB~yblfX=vpJ@4WX&SnI;sh%gh^9fUHu8Z z37Q4yj#zrVLqD1q)*d=AyB=)vFJWXUB!zWMj9{Y=+x6?q1EK>9OV$R(7^5#gKG?FL zvltg0eP?FI5xS=P1$tk!$O@-!^G|vd5eka3ny2f9%#zMn2L!y8b8VwyE6%D!*MMAd zuYcEZ_nf6oDWa|TDkBPV(wI;>-$RD6R?DsWvq)rkRS@-Ptl>1AlKTXpm8RQ0st}~o z7cO*R`0oEObtYgvw(ZuB$5@7t%n?b*tRg8=#!w_l14)KbrYNb5g?Olpr6NN}B}p{M z5J?h>P-#*jNu@#K_q+1E`}mGy?{{xr^#9-Yb)Can>s;rByLV;xKf1O0*)lpY=`KAa zJtp+;^5yb~+u@VX?N?cm=-bt?Nq*|Q%znpA4lW9LHg#gsyAi|gbQu@4B&2hPS>Zn( z#q2t+D(^b_e~o13+tO+(O=)UBp@JDSC};AfKvFsEE4(#oj4R5y9jqgaKfpr}P(c#? zC=#lG7iku?K?uNY1+~e4F~BcXv7;X64m)?6dEoMd2L}bqLC{X!xk3>6!}CLXC&Y1jquyU<3e{n$|e#WLT?v zP%;$B_4T_%m49)czSj)H@qLH%m24w9+u!|*V=t%cTNI4DC^zie>K!(zf0X3@Mf)@R z4AFeH$EXneiYBRZyS4|kFMc)ljt~036LE6`tp)Hfu{>tfh6?*}kMEd}$wknNEJN(h zDfBsYN?ZX*9_IT00mZcaP_@uN1_gl-F7Vg6VAPfMfqkYXKC_y5j*xft)~)d|GykC1 z5EmHDt|*#6e|`n|2M(q%Y0}bezQmR{wH42kzQ@+>f75gKC<48Sf46w^SxVQ=%*ar` zwB-8h(s%0})cO5U0ptGla5bN7F=!711PL*l<+^zwoDntcojW?4HjM#fO8C=3fkKvW zFx9z689)uDkg<^YJ9gB#_gmWftQ7io(ipr{>Dsaj@2T=Xb zi7Fq*h8itE<-(@{X{|uEqw_r0o#ZaVEy8^y?uPd+nqXf#m~kp1$;44 zE>P&N-;p8653~wsIRFK2uS=67Qh{EdO)c))dq^McL)EUwsw)Fj-&`;pe<b4>7mIbzO-N{L!3Ykxc6wr+sEcC5>?x@T)+t0ON!sT z9kD`Qa_ZEnp6fqY5pq#AQDcjTICA90>(>txm&6xC>9ug-!p8jWZmXa!NtAKb?!~li zt_f%U(GQ7K3%Zi1{pf3eK}gGBukI1A>IdePwBIIka((hWx3zXU^={Q|>r=KJo-t$w zEEwVzP?e_Q(v>(o_3vNMP@WKc@#5Z$3`0P`WR5W+xSa8Y-;1`Md9>=pW+j~|H!ti8 zSbykof@Y$6Y3Z5zh51f_9o^)XhBUZ2?Aciz6)A16ZQZI2Fpk6lm|8KI4%jDIXYJbI z8>4pRMB5NE|jUu_%`aOSh4xuoE>8`D}E)7+mgg2ZSnZ)qN<8EC%{4iJn1 z{P+sog2@eKAQEm?*KJ`VkBIn-S-~s=8H_n+Iyk7%Nl%n+Pr1st%OUF5TQ-?v1r0<- zXW*ef<&fwxV7;I=b;(@69bS}Fi7pr7MDRXn{GG=6)I1O9>h)AmnrY}8s4amIzPk29 zrH1VArjgC$UW^cHCm;Y`RrO-2!J!XI z3xdq9Eb%&XCW%=no@RFJ&f^>wQSIyLnbtP-=;ncJvWUAcXdw_jjteQ*Yo<~Vf*0n40b`r{z@O;Kz4b`8vRt)l4=hC`sARUCS}Q7DxwGaxfs{M+ zpVEoik3RcN>Xqqo-4`raAcBg`G1y7uvh*Y-p`Zg)8}nz*Y~$qQWMyp)BQ$iyQtd+y z--^2Y`*l#$#a~rFy3Wh{Fn;JGouU%g1=` zn(29q7P($Zg1YDJ3FUSr$}@O|>*3+ZAFXGVkM5s*@85PK75YZx&v}>7_FwI|5S9O3 zWVK!|yH3ns5nhHGx+LTJQY4B3ziCEXzX~3UScYt8BZwL?<)=NL>i zz>W~wz)-+v0Iq_rz}*kyTqhg|6S6OaUy_h~k+ue7zxW-^ z^)V9^6T`j!N4-Q!%?UkCux>6*X!a~BT8p&gPl`qJKBUx0UrNKK%N_RsbgjTv1efbp zr4*zZ*XQlWf@3J|$d0^6v@U*BXZ&T6KInDPSWs@D_$AFPSRlpe+5hMvAZ+dwzgvJ1 z%*f1{6kc3h41~t9_Cc9#ZLN6j+&O-+Cdve45UG}KpLa&%12pb$UX?z5iSioDCGhFm)u?4DWbUXQ`ZG=%13&=-F4H@yvk8+~sac z365juid<6N?r$!U_FIXTvb6fat>Z6Kd|p4##1sLcJLAm9fgyx;z%(R-A9QkN# z-e*&Qzkd;tPv9;8F`1f8zn2c|=Am~ZaV6&_A4WhFcwiflSg10O{B#I53gO^ffVA&_ zRDE;a!*QSY4(ikntnUKQ6EfJh!2Uc2h%yl>sa4QwDsiw!j{K$;7#*Hczf|TRb2mf) zPB-$g5%la^{#33N9WnE#px{%E_wSb5x635tc5mEz7}WpR>`U@8k_Lu`iC@1eVX-v~tcGD;Z<;?93tuZ> zP7(AO;C_QTd&P==7B1Djk^ALNmMR@}YU8Xs4rA^jtOpd`9GioZZvBOM$T!|?-Ee@RGyU5L{Kibxj5%I4zDn@34$gw<(->~Vkv>Vd8n8UxS*A$&rt zP4_%?=g)yc=1H&-{1R8x);BX5@P$I1M%fxPseaeJ&$=&0U%7l4X{EM_i7y>-OwA|n z-A9H_)gKU_>vpBwV(j4J3P)O;hh;mU;Ev?jxm`;7T3T9&c8K(tzj;bfgLeEp#dov& zEpJi(>~(wh#Jj4^HXAM*=9Z?lmv@!=ubH&nN;$~YXAJ5IMHh@_y!l}NTXVke^LVnF znu-7R@?{0OI}uIq-#<6ltaS@ErsU>O}qXdJCLu(YteHA4I#&D6I1QSFX;zNgL7q7Z29wYoX7&Z4M)cbIk?f&pe~OA%e7oVp zbwBrg`pmh-=V1E6FWD;WkN z3Q5is&kIU+w0a#|n5Fw@WZNMH*dav_wFfn1u3ADkPHIc z74lq$6E>C4#;~VThy8-Pojh3wsE%Aw8ncl18=RhuYGvH%(~T#n5zv4=E~zpwHPus+ zIik5380?@nS|wtxkkyviyA6|(F{er&u@xxYJP9_3p8X3KpYE#gC zIG-N*_bo!GkThdN_JlHV3g?}A6vfAFV03PW`zxh^h@yyL%u4tmqos_ReQAqX#~?cA z(W6I;8Vn@_HZ%9`8MigCoaOCMl{&`z(f1v(xGFp>+NvArwn;TByg8Q_CA(;?fz*!S| zf@#qbn#$}^SAQ=p{fJU-PQuFV2p_;rbW+Zr!=M3?F=kUR@wqZHl^h>@CHyk1P!ibE zID*(y7&C4Jr4FdJkWd zA4pLNqORhRlAiFIb^q|;gM(SX>{eRzIbv@5D~>ymWzj-|P7(P!Z4JO6Pz%PHkAw1} z8*SWpIwG@Fx#&hN2S_SwaX(z+Lz*69x*ThqeKQF~FDItPIEH*9{5Nz+a3n3~uVnv+^fK6juG= zk2nsOR^da^h4NB3-vl2{KCK}t?5Dg6!goHqNxpy=+1&WyKmSV5ty|K5sZ353L6X7= z|H@2g?j4wx#D11Vix$0dAE@QE$`oV*_J}btiO?NQi-Tufl!n=cKbT~qxulc4>J2I^ zO!db5r9#cXX}C`CQ|sGBz)FZc(40KV-@F-UoeEYhH6VyXJN7@FgJmyfec-7z!3A+jP>YuZ+QkdjgZ)>YCY}kIb|Lj9yeDmDxbSTu%|B+>uK8%-P z;d5Nfnzd>SIh=?`B8-)}>9->z>4;XL_lgNVmSa~!Q6mBfVjK(Q)yxbEGSF6);jI*b zaFI&*9zaf9wLwJZBhV3}M|+atk?l>};D-(i-5hC@(fL2jzl-^ck}5C$wg}@qc)BQo zL%wK^rpcmB<)nYLPA_%IpZc}~=xVZ+iBE&dwRhjw&%0ouzSG0qoq87QoU_70iE|$Q zXUH6&JL1pLyJa93VjKh;8iDi* zef|M$Ak~hfw1l(m)wv0XO#d`Dl!I;H0CW;`Az5x0Cve*T9^QVF6)RRFkw*|D=1EY+ z(=oss6ql43$g~f6C#FnWK|ouglv`7&1!fP=tRqotzM?!7#lp2~UysSDO`7BbkqobN z?b@|Gs$*)CHyIf^Yanc3`C8AnJxmT3Trk z$92bB>bmnu-lthD2@!s_G+am%?r~~Su0F+z4hI}t-=<6f2%3RU(8W-%;WRsR`0#_M zV(9YCooD@?x2>IoXh&YP8<~`Ww?&JXh1R8UVRnwO zN%(iPONcuKqs;r@7!V)1t@|IX64)3tCS51DvXMNKHvuDpkhYx%C%(~eR{$EfAC0Z@#z|O#Q@d`rdyCx?}H#i+2>M7;Cv$xU>KDrh;)%ZgYJsk`=*A&n!mZxt>))+r5oGQTAE^Gze&|jn_OG`d5`vh zUTrRQSZFz<&;Dr%^RgQ<4DVdssCa#8$q%a=SC6VJOENAoJoj?&n#!b;S0^R}Ccpf= za^3A(*-IU=r*%Ht_tAQpxEcGii$)DejlaJ=yvpOE+l343b?)!BSa!N=j*Ub3I+b4< zO)JuBC-|H=u{qOwy|%_!!k`FO6bTrCJjIb=0RJ~?edfTo-?oEC3Dr9jkkm3snVDx! zoR9{>{&E0Svf~%UhCSe1^j(ZlAv>jKV-RRv_EiQe!E)#_=NlXM4Uemol)d8hXjd97whzCa;-z?pH;Hmzsz1Ei|NH07y?cR6@Gz))4KM!j8n~uUcO! zaX7&Gg}cytMM*>mSPTpdDz}Yfg5S%pF?Lr~@j^7`BsTd`qmGOSaI}0@tsNT^L+CGH z3!s#ooE(=^cns%80%}CV(bS z;ZbI0AGQoRcUV9@$FMMn^em~1);;_7g{|t&MHQ7UVfp6WBnR%+1Ze zR@bi_WUQu!Y={<`wTBwhr&rX}1Y~B8PJA*ROo?e69n^wHf^Kaooc$ih538^{-8yy3 zLsAa%<<7{A=pU(4@O$zONk&7Zu>{r9srkBV)(oQwT1!_9P6g`pv(p*qu{!L1#9YUY zSpPm2yS;#{dJPKC^PL9NaX72=mJs11H2Smm z>|WZ3oW`%%@pFey>EP+o(2JiTQyL-^PjcaT6 zN=u>L4(lEx#=Y947q^-D*QqH5q`@X?J~A7&mbldtGqoykd>Y%Jv?z@H7V=f`#j>| z{X$ouY1Utm7FejDBQEXP5kMQCRv8<}n3$ND+GxJZ$awww^$e0Pg_WC|8}2j$sO-~a{)sdT+Uev0TZ zte;=&>sbq`QbP zw#gk0C{5rwI_~LX?zk5>Ui)WBDyph*p6-1uu2Nt}!bn<^2l z`6DekIiI}<3Zq9a`0Q2SB~WY%atY6;6W2(u9pCrE-Aw}qyZr6}fkAI^f}y@+Okj2Q zG74cn=M5|zaS|jsY^xCmkw`RARn^@*JkV&zIFdeS#r2ir5{DuInoaR31`HJx4)FEH ze)HC%LLhTcEYIO2qm&T_i9Lmnz}cM)X27iSoJsIhJUtj#WI_y^tFR<~3f=ZgiX^b% zHMmD<)MjsUbaI+EOj15k!&r8v;khmYjM`9dC_e_r%K$}X#4E=lDwyV1Qf!|3_Z+B`*xVQlF_53(0Oj(KDkGa9$fcDvHO;Ginu3+T>zT!AK;v@ zBY3#mOAZ9llyPmOw1xCuw2j#Yve>0GZIPGj(EHvCv&9%7(8^Ie)3TC!@7KSj<-){k z8(L_g8D%W&)N*sL6|p>pG^=*MBB5Dibk9}i8q#P+YTA828iHZ$hN5OjuGuKU_}wr! zp}monjd@Wy=AC-Qz76G`$l@e2TaGUQ<|G=1)i%Y4&3D0_%rv_DU`^!_`pRe9Z2nR2 zR&c4My3dbGg>RKCE4rR^Gw*YQ5|kQ~n8XP{XH!w^XJ1K9s1mC;G*~stshHnsc;Zl4 z-}&@J%wjXQCD^;_YBSlSpWnXC<1xXXGj7QbPyX=XY~08LCz|g`S7|d|rzA-u0`~Np z`Tn_cJB1j9Zfz>tw0?b_=2!Esnt;?G);`Rd!0XjlzFhw&|~2V&AtT%mgvXF#sBV! zh24p?0&0vNCx&d4^Pleg-obh7q{UZH|LA4;K+pf(NgtnWX-O-UWtRurezzSZZzZ9e zxPRM}f#mt=e$Nt8{M+oa#UeGB=LXscR?i$;(V5X6>(#LnbtY`_N5G7lv^ zz1>VEQF5KLpx4Va>wc6(1@4*SS`?USeF>#FhluJ(Fer(MC;a@Tl{^fIi0A>2`AN7< zF#Y3`{AJW|M>Q@T$^&5pVrLgt+CY{?*+)yH%b$|I&!-*u)mUjli+4^sXi75~{U zKu^;i80AjVBG-hN7%W$GsMgUcq1TT6X}{G)fg6YX&+MP4%ym-m?^$`JZ}899xVV9S zsj6iz6YjTMSDZG#Rvo9G`S<|bxqE+k9{zG>GrixeKVRi6KVn3ZgDEKmI>XHM;nRJC zBo?IZis-9%`ge6rjpF3VGV$i)jtx!h=>Vk%tI?@*XR6HAD^lItcIwn=$f!}0!~*gj zeXpXj@{fqnUPas0&$X(h+hXuhx~wyII-*_uJ7$OPIYcZchk(FR)=4&7;?|@}VOx_5UW( z#B5^&&5Eq8l}=hMjoTo1O>G?L8B*)&KzgcZ{L^-^;_1icgKE?zVVP5WXrO;#*VQKa z@x$v4sjprIOgMo&qHxeAnmv`mW@gb6nybSRX#`fdYH4X9_MT#MOU)rRc2H6o%!t`c zYPDeM!kLfD{GJsl4c;fJ4s5SjaLpS1OlU+FT@)X4i~Ew&al?q z8FrMS0PFPI6;)NkK;9oK$zRqQD{H^bm*V1NdFG-wrjL`>l_9|${*64i zN?SRj&8?H2dPsfzVq)O4e2b*~=>Re-cN5-meblG5%XhIzp|G^{(8-0F|I-3M10vSP zt)$u5t%M=6*V);6XtzY^3Ti2+BrHCXqaK7yYu6WA=CdyC+8!ET5M{t|k*zS?dkyqL zdq?CY)CuJV=AZM3Thw+W&WrEnPZ@PU`nY#HgDNF8wVft&^$iVmY;AwsQQ0MT6<&hf zT7~uMT3UfbyXAiZ8A6J&zWvg0=&OxU0(H!ku-$rk33uU0(Cg2i7p-1>ar8q(=Wz`` zVNhG+SBhmIY^kPsC-I1t&V;@7V{3SQC0b3rJ8(ttx2uU~&{@_E`c%bq%^ zk)U!5NAG=)@)b)C8yftgQTa8u^g2wDfVfN;W($%jutZ)4YKL;A)VtKBnabDyCdlN} zREN|rj0MocF5#JsIqJKqCe={YudC-%ZJI{#uYc@Lxo7cs?o8b3v-f! z{FQfSg$6`lg;`*_U36?fEjBO0ca-cyum88~wEEPn$yN|2mvLwH6hWwd8e7t|7E~6y?U> zu24B;;$~M@SAGnK7CHqA_;*CSEN}qhvB!_&L!L+*0ibmG)~yr&IZ;%Gx73F>LP~9S zIoo;eAI;XFG4zz=vDso~nPQu!E1k*hz`((*pc5uIbj6$LUWMDa5Zilt`bbF;FeaQ( z2`WB^T7fUiX?z!D-ZR^GnV_sV^-th{tj*Hbg@F&7Mw-E3-uXBo+OLboRkQ-zLff>v z1>3M^V||s6FW1+nHHx>nwfe7uFZ)e3&-iNGK9RDgePo7 zh&2EZPRikHfl`rea6Bt&Yv-`~j?xZ^8uYCI4gdM)@Udf8kSalJ^9#(X*KXb{O&dOV zm83|4Gp^lJSre7}K8-yebOpiGQP-|1L3-eE^o&jgpL#}YP?0`OU8pJ9Tl-MbOxFg@ zw!CFf?QM0xR%6qxvdQR$)zp~A#@!;TlsFu)Q;YgyLiTs@7>Q=v|87&fbqadtRjPhw ztMw6knnlB9v<#YbOEKp`4p8j6uJf*H?$|i(bD2~5`>SAnb+ieQ9|=8S-Ck%jyx%YL&#jWj*bthR>ml znvLlhAgs^>hgGtvTjO@-g(cUi1BpTynW=>u2GK@ddXu+Zo!UkmF7)>M_U}LZFLU*8 z#%pLC#V?WZ+Hc1_+w1TfJX-33UcI8N<-2$7D$HRpkex><%+6miw1ZXu1UwLFsCLDh z_s5GvuE=qQZ{8ccQU-8e3&}%k;DFNiokSx8ZA9f7Q+{rg1l&Ye7TTZM_@<0ZN|33+ zn~0pIGc)3~FUAf^Z#rPVbnvt@4)JRpFG*mR^-g1*OK4vtlBhD!}sjj zJnHMPs5Q$*y}PrGQFYosF;!Vsb__dsC_WTbeDQkY6iIPnl zK9oBLE?uWH{rS;=>up||MhDj4!+TlRS@Y_v43k4MGctM}7`*#e8~*oE_O#ziACKsK z{Hk-yrM5M@cN_NCelB6mZHWU^qr&LO#0~H!j9a^o9mmD?Q=yB;u0mg5nu6StG~TX5 zhqlLA`qZyqKBVC8>UYb*3u4R%?BRup-tfQy>ArpE(gC4_P(TyLKo!HiXgXXkN8Y2D z;eVR8Y}pAj+W4oo?u%~wXzh{h*&s+KMXAaU?IkC-=syTX6y}HKNmut3w_b3lAbiUu zw&JCMC#rMq@cOGAx<#IP80+`{o>nJ&nTO*Z zxla&byLKJ=_h0iJrAr~hfI4QgO^^B%xAPw3#)T(Unn3n&Zzzixf~BjS0Se2WO&y(f z>6vX~axx~`bnj_O zN3da1WU=~%^V`E!uE^fDxNZ0L5)`vpWRRHrp%0c@uN8f!p!Dlk#|y7}I_5>aJRtf% z?L$TDk?n!Gtexs-jVS^4Y1niy&o02^zJ2RHXx3r4A13u3b3J3gJnj#YJBBI+j5~Jh zt7Yo1RW|R~w$0^MYYS_9Pezw{oS-Gwe}ODxJZ_8kGYc!=Upy8CU%GquG<9lbCUK-V zu$_U_3`}P_?0?kz5cV<+-GW|PM~=REHs#a2=t<}F!YW<2<+y$?qz04S)R4P)#bels zj@|6#GBQe>Pi&iZDljn6rsh-A>F<7@7J(@BlSpYjr`cpiU}oA+?v!$D;m%f*D9WL> z*^))1Ot&|?t|ZW{wc|_Us4I(WI9wq_@KAYqM1_+|clZ=xktp6(npNFoRZXIlJS&6{ z*@6V7VxX)G$%t*;Zon2Q#$Gf*a9*c3t^8=KN=z5S;J{yBzpl@0^0685B6qrc;uFQ0 z8EyNWUsOG0W>Ur`AYs=xHLz*^>8eXJubAAN6lANKb*J#`^|FPEKBEsf4YZlNuItY^P|hw+(lbgc6VJ$y%>iV3o8QE>XQw&hz+E8^%4 zg~sP(D(qoa)&Q7<%$T9thn~J0oLTy1&6q9N)IQ4lxrm!frCUH-BfLpHp0p};1U7l& z2A%ePe5Vg1fm=Iu0D?vVTk&)+E!M3xyvVpJ6RE z_ASp4e_)s24sMLfOHd)i^>|yqO6R|!y4UZ=VzyN@89-P^*ctbfA4{+U+T`29uT~RPr7T-s8xIq39o!L ztvov-5a9-+O>(s6L?a<=!XNQf-FXHliV^r;y>lm{x1PudknYA&B<~1XDe9 zmS%pT1x&CR`HZ31ihPg3OK>1UoPuwqB@IaT3^^hNP_jh&lPmY{6e@JSc;Kw2MDwqQ z%Lo4X(lXR$S={6!M4xG*$t^8SVGv5lBdMBL618?)Bc7q)>LTJ6g}b3pzIH>cVHC2K2nO6pxyca)Xh3BNQm><{I{^hN z#TR;cr6UESbUVJRYsqL>SO3}exPOYKb&N~6OO8#${p|PaCj-v+kd~go@euMzdT4}w z;GK|j!{EPgj)zO3D`9m|L2=Z&50i-Xs>9lXI zy?KpEIZKQ{NjqoGRN?v-TcZ+{?fci=k5at%J(Z;>tW0xLMAdt9q;^nzv0#Unm6Wi5}mJbS?!Mn}$i z5f$X+_oCDjZ3qPdrH;93QZ5}c#UbFSf}-Ns4^kgM{i3y+TN-m$&Q+T;Hnv}INA36$@dM+1`|T342S{OQ+UW?{VB z-G-kv1AU^)Yc#gSm)A69msKOYCgYnfm?8wdl;ZG2b=*RMhcRv|62nd7nN&2u)mtYV zmM+*kCU(fi?_JJ*)Hpiig{^9=c4u^L!X^(0{yRVCgJ+0QImn+4k!gzk zx^$p1aGY~bt@_D+LP*lPv4D(R)@gF<7;?n?bo9$uKMqlh+;Xn!jvaSPHGPt|&yham zG$l8IIofz`=v} zWjmxje-2i=F?p~vpc8{qv}Mx0d+XwW0Coo)e#qnf;DjuX8q04>+br@x24XO z9+c@+Iy}d)bDBc6NWVg;2B>57fh$2XU^cv7u_dRu`b%w|QQlOimM;zV-wW4e)wm|8 zRo8r}dgWl@6Yfx1Q)aQ)eJ!CB^p30Z*9U&E$CJIl4T?UUX=RA1U@*)FQ=f@pko5GW zpB=Rib-b;-?;7~otLvuy$Cv&P7!HvHrQo))3$5|>aQrm{V2{gjfRHNO^IDZ||9C## z_t7?Bi)@A=|1B;U|1f+=qdfh|S?+}g`Re|QI2ec1NUl({@PH#bnEL<@iRrz|m)ilB z(`yJgE%UsO&!phO+-Up36eSFRINx0Xm`EFfaYXC`O?J~Df`(+><|^=OVf#qSiN%Td zAZWTomJ?1+Qz>RB>dhVV+jHtn%LmZX(VWo>qRuJ{YXD{%2Ro_A4+wjm zwtn(whgg`czhi$%e;G}NU}ZgNhsxEpcKQ|lem21V-s6veJ1sHmq*YW7yhu(yr=rx$ za%xvcbPR_Y@+odmHbAh74<{(uKSRWv4ow%d1vskCoH@Pv^&2S_ASEy%xo*9GRqdLC zs5#^PyRDJYXHX~bNjV0>%!r8x^45lp8-pSuPz}hiZfeH%-~OwM3G(F}c!p_4U|r;B7Qw%os6gLDMf%Cwr!?SC3rOdCx)VTKg3zi(@lw&)mP4``U8U z{zo(H?0)`}rU1NM$fo+(@J))df-NRGGxN0W)#^0cGR@4p34tXs%O6h4nhI&1_0J|} ztt93ZcUst3rw%{VcxBVHr40)^7@+hbIA*Jus>5}a)^PVmC8!+i^7pA+&MXyz1|edO ziSdP4^zrhFxEwy}XIWVhcFK9M?l@BjhxpQ2om-!aI`A5kXR9s*=I8ey$^gwURYj2q zF0l#$4a<#=6&G96p$G#ER4FNzJ1X_WFY#s-8WMz$q79;Tg*hg`fd}%p;iw*`rglYa zm6vzH#`@e#9qPeOY8%?hpYDTB;i=`8&;~<&{qZ)Asw*C(sdRdtcBX^O#Jt|eQ>~8G z4u8|e=b-CBV+adzHA(3|>VjKF{_}b5`pP4*S0>LzfCm!v{M`X<T!^o zdl>AV8D~*UStCq#Pn$ zwp`**HdSXrPF7H%qggGjkDbC%7u~YZ%32P2}BzqRy zS%l*bA$L*;WM&aB5NA+xo7xzr8U~aDNbk%+vl%`4yzybjWS7n_)r3E`gy__vKS#z;jJMsOS!AQmwxqc14{P)dCzU) z_9Zg9)-yWG%Z=(BbimmC|Envl$EIbzd6PdX<&2L{mHvB^UfLbv3TAeg4;Jd^>?~Zn zh}WkRwQGgIdgo4*b+;5!wsw}cmX(ux#rgO{WlJ@c&m8p#1W9D=;afle^;fP;LGuVb zp3nZrp@J0Z9z)4cUs$lZrRx%zrz)f8g9nzEFW$Iu6yP5dTzKFMM322u1dXw=su%*? zi;ac<8oT!KLFwb?VX>3X#dNAHTk83=rG|ob3kJ!&1Z&$7M0W(!h{wQ%=kM>_@7Ix} zp~}if(e5HmV46^hu(V+4p{?rvj=Oe=eL~UbCWEH&vFeTykf{aN zK8`XINc~|ickkW}h`ZpY2Q&60H%)Qk{@A)}`9J4jWw88bgbZw^fovx41uc+PuS^_4Gs}8P1YeI7)%Vtvzam!H@Udf%U--Bjf}s+ILB&P_(-Mh*rrNad>t?<^K` z$JKui;jFUG^chn-0$M3T9|cC2Pgd+&#sH-mQ}Hi&Fq>uGJwH z5q3H1yg}I?r2(eBzC*a;8;W_As6c00TNisz z=!gy)J{pRAKO$sQTKk-HpiD#_tzvpwg6e9qHfL)jMkYV;9w5Fspgtn~- zVdcsJ48WGKJh@%__DmbZTD4eXYoo33|9|$^WC%(=AYC>E?Rk=)_ZJV_kBWRLjsj2| zxOc_X6?jqwCTXV3HIQK{7~%|lz)?I1gdrO{RK<6}f*%aYCOIH7x#uD>ictBW7p7U- z5$p0s&d0-}BLW|!#jFWBlc6_G5JbDVp>&U|{g zW=xUz8XY>^X07yaEl(C>$x8n3-qJQZ>JSUWQx^*ikam3`lQ8W=vSAVkl&y-Lm_n@B z+>p@X2LeR4Cmw247^if4mzl|gPV0#&@Kk)we9UzGvm6>LuD4l@cLzK?3iI$-A-M)C@3k-{iF~2eXcd2 z$Q~?fSu-fBB}sh)Z%-O8OC`~>Vl|1>MQQYC3UMLJ&(6+1bo8i#s_G7t4HsB+okvv< z+~CICrYMSNZpH3Z4VY%O@&yox+O};=`Q6@oPJqJ5_Sjf1vLbLne_g=dniIR<2w{MEK(&x zf_&F8%7etY1QZ={wL9wO0Jml*@BopJ06%#FC`vq-k?laU>Gb#7@olwV?k6SDQ3xR* z%NPVR`2PL-mH$joQ{w}|_>xewb8^hG&@A!zOjl>1DG)YVsEEWo4uTe8I>Upf_5g3E z)*|`3=4A@aI`?NioeGY>0D_QR0Ja=ZEYyxHpv75JjEdVL*~&wl!TxqzVt_TZy^2RpJ3LQ96H2qEiW-6%W5Mk z>iuulx7!@r=N+X7pGHYZX~>Wvm<}r26me%Y1am9CA{9gsKN;xtPl4w+VS$0=R=i3b zeYML&bYbu@vcsSIQ>mdPAcLPkaol(fcawfg<)fW1x9$p{o*9hXGOBYlC|~oVB}`boJnw29~bwlEe}{EEW{mxgN0J(HMHvFPoR@; zeTl%?+fEb}3k`keu3d+-mN~bjxfZ)7);s;&r6(Xiqnkq}PON-TYd^U^ppAHoN=F{! zItK(!8x}iXqFdLlEX9}w2G`BwN$-8Au=03MCQBiZ1hkHpoC#NFb59^*N_j@Y!9?cE&68lhKa7`G;;MI}KshqJKtx?(QmDcO4y_xw9zG zW(}><#incLEoTlL8%oP;*h%IeGcOpn$LDNRT?AAZ~3 zbI_nv`W-3(0d7!zY`C(u4T;4O6}?#E+!uK}-;xkQdigs+a`@%n(H|a{$9fPClA*A# z7NZg9&XJrjih>Ap_N5-^{%vhK;Kjvw=5sLs3tEbq#za<zpNS@biB5*awuc6lz3=|gjcbc_d)Xc_ALLrRPysV|BJ8t_&h?D zB%FxIi%#FJoIwZc<*mtQNnAtZ;kf_Rg&aP5^gqB3Y~4Crk)(m%Ex`HbR0)P31~71Z zEdATb*2nkX+!{Zl?jYV8qN5jEd6&My?7;rJsf=_`NNX0l7Vxmd=q;yggCTEa21t+yntaG{+i`~`k_(XRuXvs?Ii~9{ zks@dF>HjLR#2Y&{n`13jDp54QFQcDwWN+PJVknxD#&3(=n3Rrr(Zs)dPs{FYtJ|2g z`!jcj(f&}WqsMXwAM?7AA+b$MC z;Xgn@B0MIbzB_{@`}uW=<^vu&$X-JxCX;sNx+Kw-IiV$`>OEf(A#z!D#!_Jb1xdY) zVRclSom&;s^ZPIDB>&Ur=+VF5f1em+BQEiDS+gdF9MI_sNS;EI8jUUksWjGf^f}C6 zh8mTccp^3vqi}zfd7_j$abgD1oB$=VBeNG&8y)&2%teic*tIdqu228|FQmrB&0u&QoEsjBQJh59>ir@H zxpT)F{+IcT$79PylX@BN2jp-F8Mv3LVQnRtlOkH;Q!7xL($WR^1~KTt5uhPyYHAYP z!R9IJ5hBON4&W^#r~&gJP6_;lThD5!tp}HDXNRNm6h#s*0Y#9Q^2onm5-<#be}8ce zjIo37$m^p6@;-ffHc%=YK7=|ZpWuEUZf5x+v)s1rJ|kkna)6zX|26TG0=c%D&+YYE z4`Rg!Gu{;wV_W}*Q$ZDV=_0f|$Y-A(>CIyngOqe?{f|BCt>fhE3~Pw4L+s)JZ6nJ3 z-G+r>2*VwKm13b0VHrt>aQ6^|V5o^Md5+D$TZbmPhy`834~sg1dRuHCCX0|p?aVdB0xf)-QQXyDT0XEekIB}9#7r7a93SwI7aM51eBEpa=AS@j1pQ5?TNct z5OLNt_c~sN!ea(L(O~&<`0(M>2o%xe6puGuN8!Ha*X1Ga!oqv&ZaG!z z*Z3OE4xP>-#Ks&ay0zsaPa}lh%%WdmD+3IYM95|A`4K`Abd4kCz9b#OtWNps;3!5D z#llf9FZuF8d>YHW&1FW{4QUu|QHhC)88=UQC_$SvH|^NDa|8j8x?B_4y%>U^zYzDZ zefxQZq^*H-TZ@rH?Kj~NM$98k2e+5@bQy9}Ns@9%0E8)31m+h4908FK4KLz85-7pd z32i&A9RHT6HPDFx#&7!+KKs(SiYNPNjc5{>5ECW^XguLS#C*S4qJ~PafWB4?MS`e| zEgfw-B4xnXs6e&u-H&_JtTrHPi&u!FZ};xqNl4FMzC4LKgfp2(l}67_H^5Y*Fx6)C zH*VeFM_?DcZSIIz^D9K?1WBSW$nxdYoJP67&{pEUcZ}CD>m-1SOP8ouI^VjcH88MI z-;{QRbv!i9)UYYv|M|ht5kDcxqNRR0925EXiPc1K{>Att9DHhd?#!OC#CfVxKu8H= zpb&a~vh!vHlo;pD_{)NpfB-0B4F9Ulhb3sD#CRzJkV}+Z6d1!Rs#Kl2(0IW*k*BG^ zyT_$5yNp|iSW``1Foc#7lxJ*~{tEHc^;|a7eNg3KOIL*ImiiBWcGm86XP`B#fdi8- zrfk7uL_5JO8uuQVYm=@EQgY*N|Mvt~v?rpfsPA~ryfI4lOpg>#FK7$S05Keh5wiz! zaL%^8SQ#KD@m%Xm!$&GBU#7>SCE`ywQkGC>LmyUoMd_mH6^eap>#b}u6KPKj)zf_m z$6Nf>#Q4HT(;}n=DZ-mbpq5-=tke7#MSpesOh3_g;6MdfY<{{JTRwVp_k||TFoSb1 zkVgw+6h;{ZO42<}ON14T`Ue6R2>DS(OCi?cpjEB?vHynQDC7Z;7)*6%WC&)N5}_wG zq>xsx7={DNPwl@IjIuGvCAbjf`#!J@TnmyoLd+lOI%!aL!i_;oir`Hc!DcK|FZ@av zPR+u;iwpk-e-b*|=P4;`klhKCs?wJtVGDX@B-0#Dawvpzr**H+KeCR*Dn;NPw45fD zB}qW3q#`aqebrx56!yYX_2|}}JA-LN1ky`P;JRa-<$NLUIf)WuNo@`}{)znjnLx#qM;wuijn&=>yWZMGiv@2F z>I$Sds7(H%)AZsfouV#Bm^-+^=J&5(582;E=HyHWBN!ODqV8^W{}A|vKoOP`vATE5 zxuqfR#7HNUKGi4&vGpwFbZCR(kP8>u-d<*qQrmIqj^v{=oO#IirQo_qx_u54(E*_^+x(Y58V_x^D=!owHi;+4*mMP747 zj4LB=UNcfoLZaYAW+`U8`(5kuJ34IN4*IfK?)V(0ngW|Y(o~=*Sk4S%2K9Z*H-Z{3 zA-&_^-49*bNHn(Hrz9aE9SIn#J$yE%X}CUFMVS=3UcZHkeB^`)26$3zaT%LdN^e@v z&eLnGsvoVQvP>w2uy_mRbe`>WQFfcU|EFmCKq@{5^y&UuZsvhFnxZ2KMwq9E+vXxf#ri(>5@b5ytO@A188KmK;&lOR3uDSW3v2p>jqYX4WX}zu6Jlr)) zx;>8t-rwBunrE%#P}ZA{eSe~s2kP1s(~M8ZauCGjMn3g3w)CASU>Yiwf0%vSE{5ks08^PZ4Z-N!T;kmXw?_BX>zSCYbkvxyr~MRnwk0IOm+eA;Pc5g z5{Kl+ZClQ6=BxDOIrp~ALYl`P+I{i+&e)tV6o?_w(aWj()L8+VZ5OQ}x7akhyzRsJ zLt8)mn(4}GqK#1Of1@x>$LH+Jj@WAO!i@~?ZK>5aH#WWoYq!zLN(b^Ml%0q{+{Loo zgqDMv6WH&Q%V^xo%6=+WWk-UNU}t zVe`ap4Iei8+%)oID%wZ0xuZ+Vam^`Kecg9!2GVqhm&Tfv4YY!*=jE1=Tf@+U%n=tQ zx4A~mU)^Co&#%5Z+%4YvM(~-tm%atNT^{kyKsIuos;9i))0?Z5Uh4K=_tKqTt}ybH zkF2=d_Ir6@$zThqhn_>k*L`?<*YB@h_&{AGC@*0VB`%UPvJJJTV_KIEcy|L|TeCPv z0}IzbSGY&NOD$S_yI#+{MVahBWs5fT#fenwbhzXwRGs%t$M)|iVfj)^a**uetG-=) zUdnpf?(i7cZREhaM+T1iTyL^Fa} zbIq$9Kt9GE>iz9drh_zh8^hRtirr~%8eaS>Qexx00lo_77AmetwVrA#d#=oSYG3^= zNw#OLKD@lWGIipBXG`qC0^q& zA0JW1ac=|L;k~;*nRjHayFBBrKeGc3 zom(1k2beDh|9*x13Wqc=>~2PJ|f1+NF?t4I?;K-ET!0-i|yv@vko3y zT3=hTJ+`9biqQ9g4+13rof13Rxu^20G#k4ev)xxO(bnDvfZ(&oYF^)JjRoV1i;Awt z#F&uV-f=CfnMfZ!eR|Wue_z-|+mJ{4%gMb*AH1D%5E;@))+HZISbp=fl%JkrKX>`a zkNW$bjP;v7b5^>%|N4P%pWf{_ae(5eE`{6XCMzUs4bCtfqTrc&k=yz4rcpolh}SI% z+ZRftc@B}}A*5Jt-MR$pf;SZ8Jo&5qnD58bK097qeDc|C^s{9jB4*Jj)q_$wpeaz9 zJXwid0dyKttB#2q4r_dgawmkXNq8n+XTaf}b=VpSli$C76(N@@p^svI;F%}+uUFc~U!kLGVl*y8#2NbLcxL#vB;2u|ydBRr zZ-sER1u9Wd6P1mQX*yp1qp!2~m(Rv)a}{n&OWf|b@<&Zcfvd{7F6TCRCv94~XvgVM zqg~J$Fc2fvX56nEoq~8czg{qCjHk$D8Y(5}PG50Qc}qi;nf=9u^ea*-)(&RzyOz-a zEOBzWFUIyey%#7x@^3w|)|r%|x5z%L!S`uN@`vBstH{NXC&(hS|Ejoz!zu8lamR&}LSgz=XOM?=zabXJq0Zg#=< zYi@Wyt$@XR@#>Y)oH-t3sAU!wET(9B?BVC*a|trgf>JF87lG!=GYQmv8&N55akhwa zG}Rs2qo4c5AK9jx7#`=M>v-ge5OV1_vj8{HWXgYS02+uy8HI&<*y#L)x$2&tMFdA9_1}-yMxyAk z0JKaDRGDVW;g*r(CR|g(M=y8uI!Eu|`dO}#Jxs5iFI(P_RYupjL7)D==Xw458cNLo z2)joo5hpagasg40l#!u|44jp%Z4=`3(DWrItkDjTcnyM(I_-2|?CK8;7wkk+aX<#< z6JnNUa&#k;`{B$Vs`iGs9a<;zD)5w2C_jz3*rN*9|7igNhiuX5Jo1_Ehf(Z`eX>+489?= z1N&4co?csOlg~)KjxLkTI;l?0bux=6lu!2|x;P9}0NAgN3j5Hu%~nYu;mDPd=IQV2 zs{sSdaEMv_!qHlADGr#Oa?8(e0D*2JYUN`Q=rFCMeE#j>+4s`LAw8h?%E0IDDSG}l zhiNy4d7V1!<*V$&uYcRto+C%(iff2jDR3Vuol9o)&YjBw`1)CUP@^6#0nHk<;bvXIi_*VHn*$RWWIF1Q7M@7)HYIcQx3BUwT|z+Q|I4B zM{NmUj-%}Q`&T9=y=m&|=AHT30M&4ETAC*I2F_ALM@M={$R^O9XYF4`^|HzXl&~hn z#2i8q5@~0papFXZpTv|rY_t#%&cnEXn48>6fqVl`oF6|}Ir^)=aoXe_N85R|!@4jWAgx(kHtC2_+ow8*jM2oyuwW z9LFD|CC$54MT4QNDp*(a5xrleg?If~Urv@Af1bw-Mjo#PGzO>;q(2IP1_cv2OvKp$lOs4WK)2nvyA+o9yeRnTi*<2O z$bEHR^(gzh5Fx)oPd#QC*=aP?;~yLRe5c=xy#nU1p}IN>eI$~fJv$CF^fA-qDsDl) zj|@^C1NUfs`m`c=nHuzKxaaR5?J@ncaBQmvck^s9-B4)dS8vLZ^#?VWZzaVwsMTbS zrHVJ|n<*|*o5!EdoG@(&VeWMdYXeR|CW~mkNpmw~tO%I+u53mPjwTY`ii#XEO+)1> zYf&c;RE3m?u!u+^?&+=RZc7AX@E{Z1DguirT1{EA?{9iiwogsh#J!5xC?h*JBy)OV zu(r@@QrlP4`PHwI>;?49iBaBdthO(T*=}@i^2UIjWWxbJ} zJ{cq;+i-J)rlrO15Om07_~_QBW32dUIC$!Cm!)OK+JgFN7A07@j3VF)B#aaD^G~4t zyS9~8GVl=I%=p^5lPt8=K$e)w`sM7i#%`G+BSv7Yvm(r)k&#XH_4hEYJ9!)V7o_oG z5m}@pCdwn70ZIJbSC2hy=PJ#!s4iXr6&eLHi#Q`l+(;dV1{#fRUPMXVew6)4rTM7( zhA#+HPq?dG`7l&PRy>kFZOHll%25z2np#?12M(M-LIeH1>Yy9df7ah|dapGKpHSjm z4Wj`w8xJ1g^}zUS-Sm*orlU2}FoV};B{Wq>#EU#FSMzQ$c%CvJE$X}qo9%V|nc~4r z!e_W9@RR)MO(|ePwV{vFP*%PTK{YBvtCGW|AKuw2<{X8S<|4MW`ScUVW&b}Apt>RN49$?h z)6@W3!T>i`7MW8r+J~~}=bk!8i|KCJIOF*8RPk)B%;Z_c(4e58ik{Iv5 zLAR$rIUOGtX9+;qKRn!oj?a(K8Iwy=(g5D(+Re3&yl1R0CFbmj_q05@sNy;~f`%Jy zrz*|Qz0*j-L=Smr5rD_5zkkm_1|SY9O_+$J_;@+E7*If7{Z*JyZROmP8BN2I1;O6WvK(r!BtfJ=-dd5 zO`tG|^q^~Tz*LyHgoFXqU|nxEd*qd*#BepQipk(wq~N$8m7X*w&+>>o>}9P^^9~#? zgt_O3TJN?D>Ni+L+li#&C=k$zzj1dz3GHb$GRGVVbr&(9{5C!qDwOXf!4U%%W0ed(WV^%xhU0&7uD_016bdjlc^=bG5OSDhHA6R$ z0>xX-lP7#UFM6Hwh4=4I!rU9SZ9*|GTF1t+ks^#D3qop6rll7>7k%2}8j^0bLwt7X z%(Gzw&^fS#h#7>$#8Pn`jM(Hks(BA`7$7aMcEY=NMtfz0d=*FqTW>& zquUa7rOX?9YgW(RB@X$Szdjd(Xk56pEPVWta&aT@jA3g1&P?G4_66r4_Dw>Qm z-rL~`Zny_9mnlE&EVG)&Fxm!W+8gsMUJX%M?i_M-z#t7krgf*ZQx)h1A!Z`B94rlw zdt}bfPpF>5dS$zenxpE(4X?dm6PDxE7cP&nDilF%WMD{%j+RFAOjVEwXw3MS=ioh7 zoI~%KXwQlKjy}j`umm`a$q?9udAdfZQjhE@i(r31^#|@er{1&r5aJ1(^gO4*P$V79 z7|W8~j|ecyR9014L#W&N!g+-4rDw4L-XL-t$V3OB^n$!GBxBaBU0VU5+~@G9MLarH zD+OzThWLa8B(Wbz+ZTp*nzvEmMs^!M1F&53M1|K#yFR+-6Ce)jt^w4GpaF%2!Z7Mp z&7F3Mz*-3YFq^0I)(T2v2*ae?Ed?EU|GGX6#Lp0AKg%dL)zfQx?BRtIfI`Ki#1$f$ zl?wU>-sSDUI2YQjeH}`O7#}_5Q3;sh+2_XM)V{&X^17q69M3)yt6b1@zH^f=ED%r~ zqlL|m+s=Sz29s=Z)zx4muKsvaY`i&bDPx%hfdx z=IUNZ2nZMXN4kBVg?+eCWr`}Z#1eiLqx&ogVZJB5>7;p;9dXoGl(B+;m<&a zWYWr~9ri5tGD=TH31`2-+_*uI&85#~C?mRc`*uGOnIZz=yIQ&(i4xW8r*d@f<9Wf@ zlIR?teXnJ(5n~(2(E_v=TpaMLHQSvV5jPQHmUkV`Jt|K{xxj#mUk!{_!sp|y_91@i z9~#m+bg1<4P?rWm4%jIj1d=B{@DnSK9;GQ$MmfD68W3Vj`guNogF{G1J@d^va$G!P zDq!J5E0l-Iq@!p?&2sxSk6x|Wb}R2ng%*dAxc5T zcJD|R=O!P8yRu$qYWA%Y)cB@z?GC-SLJbQSGfjo@UT#od1eSpPkd`jt_Y}D$Ma@4C zQ4Qm^Q9SdSF_SwqB&6o|?*fbgN#0u5+WG*kUdYBo6k+o*TLFz$jwvbK!ulX=^7?rS z+Xw~$RAAn0Y!`kSlp}Nosf69AtVC#?+AoL|O2aNH5#bqv8?GC&#u9Zd#a zX?QUn$h^ZR`CXp|KenS(065PvAzh^-e1A+?m{OkPPu0%X0W5D#{Uh@3$1-tgZIhpy zt?QjTTyi9%MI$&eWy^u~YK%J=uRq(hM8#Qi9^R(>l43}^t*Zo(3uPPu&fxNqbh;lF z#*KFcHKl=jFKP||^3)K}tuEEk2{b80PnlZmb{s6@_|Vs|itza4wBjw^yLMT$7{}2nzKM;-Z(nWeKI-*luM|*tED5Y4Psg;j@uKNwrtVMb(2w2QL(nN>VI>V zp8lw!Snw`ZRtse7;byRVzU)|z*Q5Xk30HSEzm18RxgNYPAsYP3vr^Lmk_b@%ZpXse zSqFGm)cscmmM#a4{x%-yh^rWpJ(Q@*!J0Msrd`!9AzoN`f0C)S{F?5qHc79K`Ijb3 z3A|jo;cC?-t*nQ$(*b!OJyi-#vOx1yfBV*|zAf}*fghdbG3QP5?`hyc^Jy&# zPD~^)8Xhp)zN^e^Z8R%3um$KW$S#}kP8|t-&A@axEA0 z?bkyYoCkJl9P`f8NBuZ$jGe=f)Du6J)vF$Um z3y|4!^IpX7o>sF2yTLi+Dhl@FQEiMAV^U5IatL~PZWE6X0ta~{`RfQtN~Xh#1GF6R zM*xcWfqBnC=C#-Gs}-avBT8Hl9-zc32sO#sMx{PYKXd`rUD4-FNI)QpOsgO`5`~>n zNId0oJ4HTw%4B6Pdylnpd5_meZJ|_o8EWsHp=*6M()b8(Gv$BpykW26<1oe0wX$?H zN7u>HOPBW+!)RSW4Cs9Pzc>)+0^5twQAo3q&%rI4ojNu5SwhBIfrS<|d0}A8K(`=_ zPev@mw;H}#xa>@B3P5*<*IXg^4#HwV?f~0f7}$i7j&(@RkV^p|$|0cF0&*gJA$mA% z+~0G`Tg{(7*>p$ewGw0#J2QTdKJ@llcdE*vEI^f$b~QKMZ4PEn(Q7xB-8q_ml|vfT zUo85KE(;Y$?@6VUPF79FkN8vO|CegdIEk z>?tD_qmk@ecr)Z!h*82)0s45RrT2|Ek0FC@iO!A4IuSaK$VA26e|^s>8mcw>K+hFj z(kXk8ZqZ9!x|+I!8bVi2GRxFV{C9SpcVV#!(t&cWp{*?qB~RAQ&dy4a=dcy+0~*|AE&*e@!FZO06qw0FeuUCRqr|KYROV?E({iF@;R0NV!!H@)xN87r$=l*J+N zh=sHo-8Qv-UZe?Q59xlzJ~l8&2R6Rt>)Q*SIlWL+!5_{6{T4Uae8@P6V2#Aoi2Ss_ zJcxYcOU=!Eo1?_@ptT?8RB6EM8h%~>k)Y)0r^~+YaMs0(e$IVVNvVObwqP)TiV38L z%`rIFvkB>TEDQP&^dmKEWnoc`k2A|{c?PRRX%xYYL+66nl6(DiawD+A?t|&pxh**; zZ1DI!QjWkt^!(6+qN#pvuvw`e#J>l0PkK_vtYB%(mj99bkN-8nWzJ6kjp#U{npxT=9FfM4E@aI9Pa4I<;ogzotm_S zJ~eDc&8-Et5llo4G=*c}MbUA4-%u6MB}uXnp#XSef=IF9IMFao8IDlr6tTqW>N|@& z(!ojL1zLjjlGV?Laf@{SaUC7kiSZ!qBndBt(R5oDvzQ;ZK-QkZ!|-2#kJ-!B&@w%Q zoQe}D4F=%|a8|`Rz-2<)LZRb`=FkA3g)=`}K4M%!gDQS~K-Jtl9tp~B1j^vlKn`+Z zqn^o~&M9^R8;ZP4D#93X=kHQTk=_MR#S(!o4;s&b2&ZJ`yR`7?rGnP&b<@%z7PLI8 zxJc44<233vpjjAuv3y%EKs$!R2G9QPksLtW5sH@D73Y{38LLUg5~uTsKap!-pKw5P zMMDO3cW5yt^xB1wpVU{3!qz|PK2+6;+0e~$t!M3O_0yuW~L#@q$xDBO~Czt9nwPp;P*y~opwbcm~P0J>cQL+E`r3! zksd!ou-lqm1!w8-Sey5~0BQ$Qu*(MSRBN72x>sVr2t!iO9aDt;=_qPNBlf_ zcJeY2*7tsXbrZ0T#0hF@H8-{_r~Iy);10zrdYRmN1tfeU7#vJ!Ym{LehswfxSAXMF z?9(@Mzw znh@S5%}Zm2aAK>3dm^0tQ_1w^=HvK@^-@?Xv*Iep{5GuQ6eP1m?tpU!wEU=d#s+HS zc9)(lB#oisH5GvRf;1#NiSffJei%b}xrA7G+N@~n)a92C67APRRgQS+n?a74&`nZH za4)qV*Tx_sZ+9Kw1%_>XSgmyN9}F8JER_7l{7~I!nSISY(hwd;k_IRphtL8V7&u1fh?c~ za72qKvSH7hQAX_nx9e(5-Eu`&2||&B>KH)x5cJcEX!n})*w0KOy7GDQP9paa1Y zE%+bECrp*DSR>=*g!%GB@_?PH?&g*c6pAeb;v~p@+P--02&3$lYgo`4|SR$pX zi&t`3e?jvwaYM#h5Wta;B;ZXf&YptqhJgoHrMCmF+qC6r;*q(h?&LvhAAm!3KQuJ? z+qZAtZ(~3aVn3jX`_z3jK1u^|vTJ_nC|=G;k-z-pH7zq3yn;JH6k6b zMS1pJK7?sru>`&A;>q(MSR*GIdGw|R=c9^>8W3pVKXM>24N;62UMC|P#H^^KqzM@W zO3-W{5%b2uY3Sb@=wU00n*bs%GhesiK1YkO1!-z-^yj~KJ78EI|s7$G8%hb=kFi5Lj7zk1jlxTS1#vm-tb5>@RZN8aWQ2EpWG z3!b}(V^Kf>4nbBLv~w~H95_SdkacsWzmdcSNOe)i{(G2pkcu$85S^{Ki_UMP$jpOs zLrpw9@GZLiq$DRFAxr8$`Iy8dA3h)p$cDHQXq+@%e<;m`vxkreg@rJZIMBOSA3}B* z$l3M#r;8wpH&T0}_BB^^hQu%PRM0^*qQh!gz#UAXo+6IKcj)@f3$uKI0kzB|la3v! zjCg`1CgAk6d4F;8@;0E5J{3_>TY-x@X7=8PlS2?xbS7}=a@rH~5}%A@uy^;NCq%tE za9AIBX3Uoj!Y;++>|{89@V6;|E;zo>h2k5;6VWEf%il3#B%y0~cmqPA@n0h*IAS4+ zY=BNWe%mAijTnjfM|?rDuZVbnhmz6BUl~r|`O&QA)8O3E>ByU`(8rI-?d|$d!yM<~ zmYhL0DiJ^25625Cp#j;8bS(FuRCbLKMT>bp2XA}{Y$;9@NFEZ?;u(RPNb(jLctR&2 zz#@4TOqPRrQ-PlKp{hLY9-=vjSD;B1SdBNu4G9tKB^Mu`7Sc_Gyam&X_!2(Ptj&wa z!v-cK_JW?5h*W{{uzzq+6NzfrOzmCQ{9{phhaN#E2-7+2IdOov28b%KIQVv8y0GyN zDh@Vc^Z{bQH<6@_yCV7gFf&sS5sqp=KmfpkIyhf=M3ALebZA!aGWh(;cf#4CP#J&b zw>Iky{Z9+f_6VO!n%QA5ffVyGs;NtUZAUMIwiimd5(=9*wsASKVFTEIrp;@md>{%NzoTmyMPragYsU=PwFAlk9sSe-fxa_NnPcm%%$o51js z0}A*62$k=5p^qBTHUVwbBML^mMEZ2#jn~6JuZ*FjGS0_FFNKj5lxHouEQCvG-3Oy> zW0Qv544#xkjh8N6(lnq>fB5hqEKyT+^&OPkpv<2Khb8&x)8GawO6rPsOZ+PB#EOUb zN5)4ed$9b32Ec8iN&WyHHO2EJq)o)eNc{S=7}R<{sx8S$#i#TMQMfP7=g{%%l)!@^ z)N!Kkfnr5Cfb?7WOM9?5)+CFJ-^bY-M>9z!Fk8CyOVRdOWZ0I-=?I~!v166rFN*5qP9IJ2o zHRGwItc?5-L`Z6zmVRpJ@cQS9*zpMav2XDw$@!i+gFJ)Z^{%5wj?`k!9DA#YOC&G^ z(%oueC!54@a`B@$e+cn2c;>eUxjn-Wm^N4(Fy3fOa0K(b8-WYoF&khpNvA+G&OVB* zJcZhMQX{#PY7uA)MBF6eAqgEF9w24?8IQYcavSo`xbk?@}XJ+J4-RpriYL zVqduKScGpxK#1a~7~(eI#K@1~$sx7dy*mERq5`H>B;`K;RlzPUPVxlxkSY;I2KX6< zj1!)o?RJ%MrUmq)pc-(?SCEX@j{FPMorj1^fT09#H)ULQknVzZSw0Dg$rn!y;zAfB zFcn-t$hJuxIi2BmXQQ zSSe&Qj=$xLIO>Vg999STHGvap|YH zc{f9D@cC{e=Lj;u1e+34Ct-@q7WH9JfFC%Ok;dCy)&=h}!YzM#*NkR}82=J{O zA(jL|ixo0jkP zE#w_JEL8J8j$EpM4aoySPQX`Ui;<`Ry|lyBv<44lu=m0|Wsc)7GtlmFDWK>(xZo zKispZK){NVMAi8EB#eVctP{W1Y%uv{LfS}l z!}C@1;RdF9Yzzn?~bZ_MnO!T8%~j2`2yi z9uK%q@=hU`BIW>C9Rc#oFPU;X*1^&!_#;>Ps)UB0qQ7-v*~|ea|Ephl_ii3Iq5(y) z#8=#|p@94@oOo#xEzEy$v;1McLBkv)RP)uVmUI;Bg^Q(9U^S+uT>s0h;pV|(#2Qgj zE$1l!a*YfsIC$cjfS$oM;TG}QIo4mV7NIoq{Cy8Pi(r=Z)3vb(Ak_(+K!}66y|)${ zR?Z7V$)zrAG)4@DWG2ugN!r0W042oWQL?M5O(YuRw`Q$R*^6RZ1y30SmUv8^SR} z%#er55>R`thvpWQq0&EhOW-GLITk0mxYz)O6{k2Jcl(DQnZMf-FhU632=sw{{KK!P zVghm5qKxn$plp}+1!YBhRe6C4KD0Gk2INil|U&F$|E z(=JBzON2;3fy8z}PJ}O^)fb-1{XH>)EC^w+xkzRbz?ED^L`1%na?Sdm%Yev391J24 zIal%$U~-t2Nx2v2&S$E~lhYm`M+O-SIFn?24*D#~Euzi+yZ$Ubun16Z5q5*D?ZCiJ zU#kD}_ZVtL3P<2rq2$trzy%3pOGb+Qyl88Fag8zGOWV>i30#S=xOf^I0_e;OK8t9B z7CxqoTn4WYUMTlWTP?cuV8!?rR?HX8*AXwGngPSF($NzHhSma~a`i8=G*$#%3Pyn- zQ?kXgvwIPQfiDoEx$tzs(g>Cb_BPwjMT~bsy_197Z_nk zHBfH>cn`b*vK9QtZ7eFo!lL?sZ-P0*rzj${B|8xjDiZ71)q;Kt3m1$y4rdiljIn~z zBnRN&fLaq6PUC;}v&GC^_?^!R`uS{RJus)066(Bf)9qI+$L98d@FYvmvy85;c*Kc$V(#jY5+*|u-cc3Qs*wxhHp5vx|B8SRrTvqOYw-69CXwb zvDbWMXJ%5Z7diit+L9~NvZFAVoNEmJQUlH>_!s@Wzu1ZBR}9REU)T*Lk0KinUT=Uynaou3^x@aNgt63oc{f^A7E zWepXT;2I@G(KYclXXNXKUlwJxJa^CEC*s9p=XT)Epz_K+ZB%XVgQ}bPO!Kz9JAdj% zv+b03cKC~Dbv$3=dD&VFd)Svz(Z5`_|K&@X>uLfYN*>2fU#+=*+w+4z??o@MZJSi? z@N5Ym-CusV=RwnCfuw%U$)9~YhkG9DEITs3X2qttRhfBmYmQ#>(&0JgNMrC!Q; zxA`=E_g4`OF`LknqeD$w&bK~9AduhYnZ>~TVuPH|-{Vt83pl#}+}B?4;dPUvJ&qXn z=P_t)aMYT1S4hPV?>S7%OGW1fR8yRGJa2HnV>k$+Bj~pvC#JgiT#C_gba~7nQ(HDj z(@+wGQZr`P)-Z@{YOg0n6TYuzE({fO`Ee~_%N8-2WegXkqyQxRS@A?D^o3Y*=QZkO#XL0(a?P8S?;wOl5hy)T#SJC$(cd)I-ftUW~ zI_6iaqJ8b7&dfqFf-oAFC)GbO@&znh`ss;w6r@;{jOa{cwr}}+KnzzSW(kA`0fPkB zkbv6sgk9ID=Optc6iuHMejmmgflG(h*W^;->$6@@#eKM*{p!|HJ07pEcDL~1iWq@o zf1QB9GH*9orAP@qME4+S>-H5-D#bXo+sQ0f>)fhRlfLpQ;|s&;712A~q-%CsIb5Uh zTkoyb8KKr0X(t7-C`b9#bqly$&aBKB^je8uQovJr4t@USm7%**8bW_$ufN4k zH#3bk{B+ctOb*HZ4Bl~#Y0LVhYW|Ai5j!p?$ZSWAkI$c4O0qA?5~1Vnzqov>DoU}T z3Qs5WExO2Spo=|T5C63r-*#=JiQM6K=+&z5713uRojcVWXg8*77<@U`*|d7ElA*xD zQ_3lY3MriX`mP2dX;Q;L^0x@3EmuXeZaOF3`ozgBr+|AhTed2CN0Uv#Cr;68 zOa8r~4D8B2P%;|8+5mARmAYw<`D!=Uk+;ue16yzM)X{H}lilIY6dv7VBVuu5>jADj z=52A40_zuU#78MyRP!c1?=i%5aLVp!ed zf2SW^%{evq-0q)k8wf%3@~zHNfQh8zu_M~|@apAh;OP_wdS0%IWMr^9eZ8rL_xIdu zudLZS%Kv;gJaFZM{p#2;P3Tsgey-QKZqK{3t_Ei_7&< zzKbC&PT%VMX^~RMZdq(OLK&eUznoCzcScn~lY_^3po=N{AYCKL7`{F&{d=CTe#iAP z%Hm@$7)hZq`4XT}#Je<@e5(!NA0`(^qkhBc#iga8yUpHWU(m3kSU}3ze$+)eVdRx@ zCMgPKT+Ot-!O-O5qBrxB6LOUc_QoHxEp;;tFXAmYUE8Jrd7nrD=6BXqhS7KGm0TeG&%${9UfIHC`N#atfK z^PNmYH8f$IkVtX;a`!N}(cf{OoXt=^oC2FIif$HUuIc*+lTvzm+NPP!ruXUIM}GdQ zdPP0g&+K~wq8%LO$AeC7=c*h$avZMHi|ZsG7|uI-QHtdZMV7@|<1e&)F4AcyGWO~6 z+J0id@uJ8>5mt$;c&e85+qzX()xZvdV~Kd;hnWe7$6vhZ@-IHDp77=EnJk(y-y-)z7*Lk>3K9)eS-1zv(hMBt2?B1fJw;`rM#gbB8 zeu7#zWf7-Fy0@nVFu-Ee(YQ$DB@S6PA$5i=N#F9t(MW)$ka2u_@GlpF*L> zjL;OLNtVt%o7}!{ulV$yH6~Ovp%gvRU{<0y^L?6D3YI=eap!irWAo%Y*)o(a-@3l~ z#cRc)h&CE*9*U$8bsQCyxkeKWgWFBCzpJ?_%+;UlJW)q|wwovK(9+3(`g50AtWqjI0?*BtqFD zy>PjR|M5NzQ$~=Jw$$vG9^RpPac7F^;N{(-f%y(YeuR(BhW?-qL*dMt}+bbQKc z^5uyXt#{`?@5>zSle{cgWs-&^FN+)kb0{Kur-?DHAD&2&q*WE5^Vi(&4Gp;nt^Cr< z+nGFkGvyZ#@X;OPhz%P!$8rr(ewiyox@972oj=^y@0z+J#{HK_?YjBOSPewd*Q!W< zxJ?|;e&q2vm3HDFO3L{q&R$rjY6wtsnR;v@1$XNU5hCLTsYU;QB76953oJtDUYk%< zWW#2AU%4o4`hm7>GuPP%iFTF}-mw=Ygc?&ZLChG&(Oe~b7dKe``5iHUv8E`i&ym~0nZiRv$hwq;{Q}VWb5A6+8 z+GGB%8fVwBe9QSnr16OO9f@TB2szXAM8ogqwBGhe0dX>-=scEZTkS#=SC#~3y^+Xo!V6!R2a3agZ_fX zKfh<5qbuw&s#Lsx@W zvOdwK6F9kW_wNCEkPuQKry0UyRJMRHK6CFxmJY|0_&ig=rM?Rf_xN+E&twi zOaHy`OHgK$8^>WtM?#(?_edXaTVv@c;d)o&cG24ocs= z7=i3a%7%A4alb}WG9j_4et;NS4p%!JZcy7hmI zCtDP!dVDVdMPPIZN`q~D-80HbM_t2BE%k9>^DIFf7E!BXz7|nbA+bilA)FsH^ zyv7Vfs~j)^H`~#c^UB{Khb;r^+XwU=)HKilc!@bEyA*)9Va;&;gu9g0n-^ZMA?#y4 z>=tH&#r$`!>IojGt3%_`y`;ygo$SHc^Jl&3UF%Lc_Rq^F z5Dg-rM2swJbLk03>f0ZEKuGx_8Kl-Nxu4_BCi5 zXhQx*Rs@x5SP>GpLRo@eEvu|`$DaH@pNJgi*Z1KmkY(fY>Qku8PUbKAB^|(~gc!M) zR5OEtM{A|7uLl@+QcLwOoJA_P-iKH58BpJmsw3ziwINXZ17$${%25fNUa%(@5pNPS zjQkQ_Dv@TOpXi#!EW8WXyHtV76%#-4ct{2G&~gNFw)x6U#KkwgGaph`Z~ME(Qphst zJ~VpB6wj z+X7{lb5c?pSAYRNw!qF_!)$C6fb3M*SIY5miBx~;U($<3_oI^rF3CmUE`M7 z$3fY-kQSg^@coNDC=@BVzvcj+yz}qUP$+lSEj&2o^@_juOQD!9`TH^`l-&yncnW3H zg2niMAM^i*MLWK*xlq06&w8APzUwgks5KA$8>>u4NyZZ;1C_>^j46B1dSo5B%lCK3 zTwn}bqHsla@gljv%H-4engQSTF1@s!>9p@3%*}bA0)&(mbwqSi;W|00QmMbW2Z8Hr zw(tP&P`!w9pY?Rfx9tshG|>O7CcVALlgS3Z&hz$3%UDwG;WqJoUxwF$4!!<#W#7W- z5Rm!lnW;k}R=5!Sxp*$nA*Y;wqFnn+@V&T`SM@w*DQotXU2)6t_vQb7KbN=CnEI*w6y{?FFp^7o8Bg}?yhvf@;hjs3fWCL=R&)N|Cf7W*nn62T$29YZ)=fV&Mk{N>5eU&w>z=HpSGV2O-GgvW|#z+=&gaY6hT34y`vRy)$_!l=hDRo zmmWGeZ_2Ky#n>0>rtJkQ3CIV#hUQx*p6#bmdS6i&e!eYnF$35{sGClZl#FSqRsohjJBy7bgXIX9S8so8C7gR?D8im+KsH&n1oZ+UPL!o zsRxQ5ZFb6MQ#$*)GdNZufcfqFCn%Y!$evvp`7ZNd}6MhlyrRGeWW!{57J*SgoVEW5Li-Mye- zYG_p0?8e5tTVc1iI&KI?KmM^hE@0~+m#&Q#E!2^4`&f0QPK_^n4RdrYu3TAbJ|n7UG@(f zM!CUaHTJ0Mb);Q2-6k>F37;E$mCIxQbP*w_1usQLRw8hj>mkT=@J7+eC)nS8{lR(* z{e+q>FWF@`I}N$=_R;-AeqCU^`vMxZ-6b~-1uU*??EHS6#p+vXowMZKE-Bfc_o$cO z9lKE?zu+T2Q(vX&tmb6aeYtrpm+NVclEj+atvh9}Dt6LxJ!X!4Wh~fe@}>CVLWDwD zefOcP>5Asl@-IM8l?Q@@x?t%|)Q zA@kXpo!iPcGu)t1?_AjD@*KObQBPbuLMO6L=2rOl{`z5#S63bW=B_9&H>OW0K0dgt zY$(s%V+Tmcc{qnZ4(+&SI73xx6!*Wdh>`@U*Aj-V(;ieI(tePE&woA7pf#j0Qj7on zz5nM3|8whht1y2D+7x|>NWU@)ThyZn<(!ieNlv!hw+>E2t4i5$gr3k1ca9Scg@i{Q z>znSgNMwe{En>Tq_ch4z>7-fL2wk~`&GdUuCZC@KYO~Gf$pyH6xl0J|-AgkSN>cxU zfw$k7-JGzcY$&}Spp&%}SKk2A5F z`&=;c;drlqiUsEy@<@~zMsk7~9m!}^arCqAc6>1mGTKmVAwC07%ekGU&u@K`3A zscaE<)$q?gKdg_!pP&1_+3Fl-oX^lcPuzq22B?S4emmy|M<+@52*~&M2-5$8 z`#tF{e3@MAAw)%KHAfy&NSZqIK!;{UcR+kkgsx6pNo%xV4)d^=yG8=vmObJVFMki8 za@b#Xv?cB{3OY!xT&Vh{gg!0GcujtvX-L*Y;jhWr;{nHMe(rN;H~c-1FHLSBd_kO> z<34#7@~BOPF^%a4>EK?Opv99S>R$Y}a27lB0`|0x(ig3A%oq=SG-$zEo7o!j;r5=I zy*7Ghur~c`L)~P?r_#fQ?(w~iOmZ);zfx!U%>5W|q{pOde#0aGlF87|!O51BdjcXN zoorL`Tt!XFQn)xBILjsW^Hy*v?4dUIvv9@5^u`@Gjqaa#^vd2qJ6N0U+<6ygiRhNE zgHM_o8tOO|bcH-Z%<0~}kw3vc<*p#=nW-P%B%ypFKiBbDcb}CO2Izim&vAY^NaIV7 zNYye#`IipW^TD1G=Vcxb_#iXH7KBz%6LlEDdbdw(ud{je!?57b8)(GjH_`;POL_`{ zd)G2G>^ahM4aKvH46kDnAou^deeIL;gCFD2m}irCW(he?=9Nrn&fxLk;ahYCBPT}z zJ*SdxZ8GVumrs(q2~PuN!TIU=93InDUj})6LOPh2M5QKnjB%n^hR= z8z4&#!Cu`t94lp!;hlOziZ`u5v;%A+p*^X#LxmSlsuCcj(dPA8r`@#ygi zlfDvI!QSv`Ql-!<)3dtjxIXzK=01FrY5vP^`*TFGchlca7#(sA$NzZM0Jg%bhZI5(;q|nR}+X%19Uo+>- zBpX`u83w$HCO5d`75&clh>6ph>nfhvK4`OLW^!}I`J~wD`*zP*Ej??FiEIC?yH~b` z?3=lP@WJ>#?-q;6)+3rc`V|bkW!Y%Y$KJ|*)z*B)=2UhnlTB1Hhas5+#YMVu;-LDD zX+cleggFboRR=JWJNV@76P;Sw8!Il4%tu|m$6-OBlh#J{M(o9#W3apN?F`u8&?j&H zai$%@En@YM^jqm>%Y&Xu)vHAFod%CV7Xo|ceJ=bAsS8msaC28b*a zirGc4tw>2pK|cn~5+^hP(?C~4QaKB?efb)O9X&hUUktoqkMupD1Z#+fXag^=Z-8N) zh#Gxx-6aLLjPbCW>YO_B-yF`{5_dM}RCJYm`Poy(2b6m{bi}l6Pby61%t}SN&NSWn zWS&9G{W0li`IjMgZGN%YVf)4YPxx{@XAC5_Iy~U=ic+~6X0TO@c6{6L>3!a+{yq(L zJ!I{L&liQ&y8XT=;pk+5OkuCtx1V~~S3YFjw74-LKP^VGxXDXtx??)7{fwJ2| zj)wHPf%2*8^f|Gly(!k7$8lNZU(+$X%f~GzAg5^ZdLP7FmI`0MR`7JQOQza-hRqiR z9cK4D2y4)xq2$h!P>gla!?mb2i@(_l;~)RSp-ODj*S;wom5Hdqgh%3ytYU|1hAauh z`GS#IFw>Yp5Dglp`8t%WIu#PU&#&BMi8FQ&J{(GalFqH+wuo)1 zL2>adJHfNG{U{w4pBbx*pTt0F&9cA)8(Qr1X3N%Ro*3k;^lO_k^9x=pp%wlP+5cWs zjK6Tqf88?750pc(u&}2#id{e|ZA2+Bir8>ikoQ;CDY40z zEP45j3L##vcsLWa^tn)FJuB70H{$V@PXN+X^7%u{c3DkC_^p(V;GRz6jOy+0((Dn^lsGYjgoc;HQ#`A54cQeQEQ(v_DxV zyKzOz`s?~XH!VF^KV&03Zhl1j#M<%6J=9-&FZNY943=#aK3}kTk1f!HdhYPsC=+kl z-0^6)t(tIV%6g*o8}`n2w_=#p1$!>{4Ht3u{w1Ba?tU1u(e$d8{5Embar#kWO2WC9 zb(7iC(Z4SiUFn*Ldwf!z*;`@w=;2XO<->0B$GoDddN+wp488ijXpz(n0`s2-_ndv^ zYfppnVe6?jLo>?~sNK<_z?bFapi>y1|FpYA*Lh6eS;-&8?q($Z?fJ#Uy2YM_BhF8^ z-(yuz%8@afLC^gZRMaW>qa=-C-!+I;1wTH9;Ii}g6}LJJWH|1h4KntMiIVJ-Dpb}Q zzkQ6C7JP&U(;>?|yx4jwJMBnOj{TuT2b;sC_aAk?uXlRT_k{Bu@9raQg>^sk_FsF; z&6K^mJ$Gm>;z<1ay3$>9hu^)*W}Y?`Kl$V7)M5|8UEM$ul?Uq?(gcTZ(XdmWyE#^0 z!X=)Q!PWO1nly<7*a< z({eAE;eOONex*;6tUg73v9_V{vWxNTgwjBM%X!(kA3<|1^_wfV_13l6%taOn4~J|| zn7}LVvpwQvA?9?xC`H_M_T^aU`yszc|E2z)=5=c(V^eGV=EwxmwW6~c*{CXud3PGR zOvt0*wZ>oX^s~U2&YfG+`vIomO7&r!eJ9(9zs%gf@v=`9kSzJ%Ic_IR-rj#-=$5(F z(ev<8bGF=qnTrxLBV+pEc@FQgB^~MW#&VAP4b(KN>=M3JI@IyDu7SBOtMPbmEjFO5 zm67JLeS4XUb<#~D<}^+OwXEn~g>`BO=~nQ{Eo}RlH+y#IeE+v1j(pw|kHWepUe%qQ zjI~l36m|=0%L_>(v52tMn$)rNZ3bZ*eYpvhlGI~7Q?oBsn@VCIPu;V!M2sCu_ zoznV#@wQqQ0+wpzO=Y;{EyaeO{8`h5FK@kFg>Jq8G2d6R>Y6` znFj4N7k}19dJCy7jY>^@XHov*wgONuhN|9EG-yh}mHc_)K=DHcg1B9B`m zh3vNf_%PYzpC>O8JTp9F-5Q})`t00+ys>uQ17BaBWT`l>ct5M!EYJDlkc|@83a)p& zwQGwqOP@LiZEU#7rDqfVI=4rB!v@i>2jcsaysKVaaT!wS*u49i>(ejx>MM3BJc^DJ z9IP8Cj-Qn>cncSP{R_@Hs={{P%F;n!4ha2;iHEFerJK=JZ+_ikj83-q3qdbB9Bmpv zAu}Bl`=86F#=^=X*NFP)BPg;0e3P7hKl@btVr%%Y)tp!F>~)@k%wFBgp-3q@Yi#REL@KtIGNhcV%v#g+db-WuFVvS89!hYI~dS6 z9DjXY$>{4+x+Zdmtk3Zg$h|i&?}d!Cl&PFE73YC5fW!T>us%;Z#*2%M7V@h4FXez%xqN&&AU3~#sEF}!SG)f$_5UG9E+Shvf@S&F2 zL&{FymZs~^Io5SKGjw=%jB$H>SGc@2?8IG-JL}Kc$8;OMTbftQJJXpFze~Z}0?{XRaZ5_IA@ZnSO zZ0xlDeYYfUatH zk>5KkoFhugZEN;fdnX8g@Z2u?T>dI{(awS!57J*(xgy04N;wBe$k)bpr%j5(;HXbl z#Ge1X^mE)rVQftEA^TTUYjt&8rwYsfJ3{`QG7U4j`##T6Q=C04V?fiueY6}wsW6sd{X(nNlOGBl{nKkOp=Qb6^@NhM;yuPd1swa$)4Q#!?9GDcTT^~1Q^## zbmD-=^z87aQHShqL&deJy%W3q-#Rnyv>edrJ`m4UF43$Jn99J zPI!yWe#R`7>7kMyjbpvL%TnBWVw$@9&T^MWoN~3v&lNV0IiH-8E5CNVY_d)8NN!jRV(C#oF9|i@FE3hxu`m%BeP0D@CNsRPPD7uC1{(((f zXb#J{75MtN94&Wp$p7D-G9?g$W?wP$hUc+X?3@`4PS`g~hwvo6=64@^yR$<|eix zILEE3Tx!`Z*xEugDGP6C3cD(V4rmUEvHnKR(nPdVgL? z+;+}==)7Qs);&pe$zNsszWPSCxrL9wk#Hro%jF&tZ7~t(h?wyGs^lg=^Fji5(G_Ux zn*bQ(u;&9>^O(3kg@%3rou7!yF*!1^=I|Gx^=;n+leUg@u9~aa^`lnsOtO%wGXIp% z0bmqV`&+;9-&JPc3*t)7jOEUIkM_ZnRVJMWj93TfZO)E)n-eeFv7gc76hu1eIB@Xj zitN(BV$eUxP5jn2@Nj&+K@wacC`fGA{1}Z5GgHN$sSI1^Cbl1a zmNwfj*=sQSV{zR%FVX26M^1_D60s$ev0-}T9keM{A9rJiqW3*asg^HQIh z^L_h7xjc``&U&?${?q7a)}j;5%sxO+s}<1Nw39=KCq@*|U0=zF))>zVoe= z9qqIGT#Kzp5V6&Bd;Icm1e<%8&xt1q6bamXKd; zRF9}V+jGWMVRzXMCY#+kRry;6TzEX#V?Rpde$KbV&~hpiDd_%E-o@#;WdLl;=H*xL zra=|ncBA^x*cdn_`va{+{?Nu2uvBuxY+$MYh_)YP6oD~ABlx3%Jc368!Ej;HPZF#I zQyk5X(uCI(^s$gaJ*vFO)?*IosSF^>0)38Ne%3Y`c%8i03HjW4aNF14=ettwEP{oX zzvuW)b-H)$(9~8*z^J+AFUk?8o2MEJPK~9xRQ3LP<+^3`_bJ8KU2Dhsa_Zd1&l_xZ zZ_PyPob7(b?EmBHtD~ygyRK1CzyK5xq$MOoq&uZV8UYCj>F#btB_u?U4(SHz1}On4 z>29PurN6bk@B9AoG46PtG4ACY&e{97SIjxrT+)@9=UbOK9E{V^_WpwXZeh3HMfBti zK!2z;<|<;4ocHql?D@+tHBux$+HNarjjY(mF!G3h;*))lee?{jCG#Ugdg{0HAEYjK z4nMi-UU-oerJ5F8s!M+^U6}ggvnd#c*_8PB)MR4#t8_d*uBe0N7Ms@iTK)avo>+DV zt;U{qr+YE)A|Kz`0w~mfy#Mi(du2d`DS(vcE9;L_Oiz(}xeI+^P^P`*0>?!sYtOCY zqdD73abi(;5ay%I&QA`&w@YWtm5Q43<@~~}()z5-Os03VfP{s#+DS$74sN_jJ*^q9 zO^`TsYJ5Jnq~gvgBl?fW>4cFg7RCe`p6%O_IX4sUQD=+s6T^K(Y}xwd1TDfJAPWRn zQ(OPoA{K(`wXUVii2z^*WNF6Vf(i`H)@&%Z7cex$PZUU*+Jhkt1oH~K@&=uk){%>t z*(ob1A`A|hRrEx#<&kZOK5t#T1*Ig!T}-dxLl?VFyU;XOantrr+b7X#q)y)Z`mLD9 zn~n5H8)|89MP z=L4q|qFUPpnbbw6_?QR8TERVq$UrX)#=gE(jl7D|pfXC5N?>$qK5AtjOqfV%>Z%`1 zc8gen?$`!3N3L2h*u`>e!A)XxHBspTXOjKj@F5DSKs zEc~^GGP+~dnt)$TyuVWV(VyQqw*5#sOSG+wqG~A$LXqxdj>9FP)w|~!f61j||gC%Ftl06b@MvDn* z$6+@hb-gen2ye?XUem7MnU7*oQ8br)XH*q4=mwm@T zSnClSEcx2u)VyiBp7I2WwIndn4T|wu>1DE7840E+57B=yIGO)P_CWTR#tx@S)GPC< z6wNQeWdrbt-}o~^6MH?nC-ENdB7(q|EGI|=wL*=Y{d834k!^;3 zK6q5}X&ChJbv(tdx3tfSJOF(^uUmO_(!lA-yk2&)S2?}bZ$@Ue+I0*7PPhRHt)Oza zAnS_oP*`YpnQSVwu=Sqvttaq&0oI}bajQfai{GTEq;+w571j9E>o zM0zk0W%*ucAbM;zz_cLKM>fpCa56`5Ka8d!&YZA(74a%Aw@(=g^V^W1$?SkqSKSVz|iV&a(q~($TahPY!5=H7;pyH4x6SjikbFHne1`0LI zTBq*UZd!8zljiwEtw}&MUwMGzG0Lu69SBAo(QV*+Tes zpHKYx+*zxOlqBY(EU^1U@Qr^EtPg=9b~&Ko%ztii)oAWTwmoAt0oK?iwJyi>oX6F5w;GUn@`?c0kjV%VR-Ni&-N8tM7_H8JpfphVa3?d-$6LfdXW8l~lpAuw zSHb)-GHcHhw1tTj5Z%5;_d0u5eLYjR7~N&P1dez~ESR;wS#16-$}p&5UdrG1bR8di zthK$>_6uQVGx+l8Y<_KPR`C>>y?i-8!DKr){I!rAV3JTe2*E$EZP-tQvl2sBpk8bk z1mhMdkhRuY@X;+-Ghutw%a{EXmE2QHd(pw{DUYQ^6OTakGO=6e&QjS!guUicQqr>l zfGWmMF&reCywY+JgDVFQEvOM-Km_h0pt`Tb#9AsgO#=!G($jxd%&0?i(5JaQFJ?7e z%FJ4DaVMDi3i;04H$`v=5L;5P5WY1k;|Y9UdXWxk2u*tT-p!{q-)It?8!IHK)WJ8# z<`ohL0LYmbwwS1}8JRy)0>37pdH=~w{@KXGj73$x6M%qsI3PQ(g8eDS`33N@AlKlO z^^T2+*v=h(6P59D{4`cr<6`7B^=C5biw4(X%Ter{CN3Zs6#d?0-X3tOd)nx>r z8=_>X_T}++#tMYlm^xl|c-e+@!-9#Y@$~l#NKRCLc|9?V%hWG%(@=IZ4Y^3)_iYl) zlGf9p+4ZqHd*(KECfT^+J1+3mrW9qulQFV`jbm1a6F*Jk?<4OEox~NlG+=lEMFoU7 zU>x@d!i{pFu|*?_V3D+W6&%DCw7s35D^iZ?y+Ao3XmDqd14NM7Ml%svyI-jzTlEMC zSRw&%$|iwVc`-jrT1CYOEzQMhPQjzx7vwG1>7sEMZ;}dF0s&6EugcxO7Z#A@8jeKL zZv6QV(xIHyd$b_VA}@Y z6d7m%@eG)=2kGS^Zqi@BKHxlWzKIs5x%nLsJ7g~zmapFLu+DMje+9<}AH*-S0{~~h zccU^O+3M?8f(T$byX?WQ>F^7AY-#O(XFy=1&N$pH7LHX2Prcrax9NX+1_bkRdwV0) zk+9HvS_SQBH}BG#S#jNySG|gWviI5_?Vly5EtUa?<8`)Ja3F4$H&)MOwb~M|mzewD zTJZsJMl=j5M?dxrR#%xL$%Bmmol!(c(C-H7aYgbwXGts5(hrA#LsCD@?7#O_~YEVp1}1 zr|wC-nYfvQ(l;L}LCWm9P`BSF1*V#MW33L*94d`3b*ZzkUhK>d#F?Zc3Y8tFL)al=}7$l4FM4-0=!HaP+mLWsx4~+d67eJu#coquG?n(mHDF-E| z%v_FMbig8H)HZcuu2K`~r!b;9|Q zc8v@Ar@(J z4h8a?8{6|6dueaAGNd*&^BLA6XH}uR?DjlKfbjH4@}#Bza_e&<&Fu-%?@)$AWo1&s znXvq483am#WS$)90e%Qi{wxw=d`x$mZ;Td;MP&Eka|2Ck#6kz=cYcnDAu0#(Y?Ln8 zfvq9XNdzx7!RGS2N7ri_F0R8}&~ja&wiqj++nn|T#R`-Nf%TP;2U_>T;RP`~2OaW- z0C}~s3}>z5E4s)nn5Dio%iL+qTwZJ5iFka%mk9z3M9pB5R>kRHEhMf zE2j>(uU8=Y!jdp3T{`;i-fQq&q1Nmt3*%4L0_Lc{I}K13=!BRzt8QJ+vT z8@x+H6*NbLJQfCz?eT4oczzkM?QeeZ-1M4k@U;)BA8{6_*eN)i z^+X&l$*V^P^F7rbU(TJ!y!o!ux9L=WI{9_~e0}NkU=FOyjjgPF$uT|Dua3|qO_VE>opNw>i zKV#|4f{3<%^YC8Sx2LFHEN)9>lY8=EpLb#H-@15#M@(4DoJ{z|QEl;tK4W)a^nI=Ld!6Co9KWJ z5Jn}rJkPkmxsh#Swk<;{&P=MN5Vqs$0aDsmDtzGvr-IA$H&nbgpg!sQ?FN5$q~1%A z;r>m;dV56`MSeh-tv~BAf4++=u~F@z5u@j$Wd*^N3-c=6u4*AA7^p)_g5L(`C8bbn z8)IDGCK%{-g*K|Iz1n~As!zj@9dUm@MgE$$u3DCjPow6i$eGcCbF`;tv%buz z&$!jrz7HQ#p8Y&>pLlrUs9yJBkE|AV&jIcr^6%lTio;PAT!$p8U^)(Ft6%Kdowy4q zdp8-gC8wmIf=57_P`I<@`)3bJ%F4v!aR>BST8P=f6Z<~+OQTpit-_wj=RIOX;ym$i zN#G%tS5&-fmp=gP2J94S&P{|X0~NrFgL^Ku%mlZL?2$9R6@1eNG}T?tHyWM15LwB67BW)H8Q^LN+ZwIh#<+ht9iK z*Ybj@stLAztpsnXirhB2GacFH{$N+OQgs|0id$x8$ibQ`#c|<5khsaO4=~Q~zQe5D z1g7SNDc|W}Vsm_}RoWXo(&|e(ccW7~h4SO|VbA0TLK+d3 zSF!Vo_39^s+=_?jennO~`!9M<#Fk=Bd!6Akncc#!X0W@4yi94`n$pcBcuxFA-T}3` zlk1=aODnw^%t!j+R4|v5gen%)cpwiUWGa@28=~QVMX8i zNFim~+B24|Q0j+L&qh+~NmS=xFC3u53t{qU^yCI1yrI9z3TF)g8BTxb1qC0aB>zm+(DG;p z>J~N!odn?O#!5fx!k#iVz?ptLbw{^U{Y|NQSl#EJV+o{xB0&bQeeB*hx$-Cs6U&#< zH2RN-L`;`q*Kk^~=eq`Su;MQXnR6`}Q(h>;b>OzYauHh2SSc3KMS0gq zjUn%*dJR>UOC%BV>Y0)tDbSea*7>!bXFA=4)-Ct^VwhIA) zJK|}7h&HF*b>)?V$0mivio*dD|fQr^NUmbzwQ;8N;Gc(Y4G!Rw7%mobEmG-lymxjM;Rd+M4c5!B)i96;#PKxI0XFSeR~F zs0_)IJ;#6bExfJxR4 zfugYR4x&@jY(`+j(FfqR@w>P8iciC5C30xst^n++&=I*x5Dp{Q)|Hmi$NhbM?;t>c zt$*gDB{MU#uvH;}J30UfbPf!QUbPA}pndWr$mKPpD+L&u*zg#tKKrr3ECL(6Qn8z! zL(96idF!}N;;|IZsss)i8ynjUSU>lnOY!xan5pA>1`H8$&O}S(^q!3gw%*U93-{qy@85;Px`7>EU&y?KKdQ2k?H>(9q}w zm%&O#VVrxyv?;w9<>NsO4Z_GTKxAZ!?ZQD5X71Hs0LV%a=NCk~`g$@T6u?s-mYyxI zu70_S3P8qYs);|B{qkoe8r|z5QPg-=&v|NLzF$)Ken!7P{7K~P!0I6&ycK+cQ$Id@ zkpZpmiWU4Va5LRMJk&Kd#sIM5?fAyWUgH6SIUfGi49HlknI)e*eY+CsAgw zf^SO)6WisD4KXV#E5)Wa3CA-B?~5YSEoFYzn7vBHdq3vfbALrURZgJeTOa)^eH_y~ z8&t|s>a*d%!7V9Ibes1%fN5cQEwB2}3yI(*jQ=i_M z5|ClnUf;To3f=lW+$k{9=Zcqwf5Z;K=_1~=k7vg5XN0P(jmK_hBy`za@!jv2tUpKg zn3g8PWcb&hIcu)p`)GoiSvir13aI*8w@Zy`?KLkeFJ`;DbSIm_0h} z9Ub)-BKMZ34c}*y<-bVDHb5%VgUj=+P=mIg$02elUdvPhck&;V)Ik^}sAYZ!5q!S) zG(o-#70Cj=r}TKj-x_8#vJYPW{TrAqjmJ9?5FBl#TK|dDSGzIFd@55EN+i3M?;a@M z_4FP(nlmiWU?C6mzn@8)MHz7=eexF}oy0DOP_so-VBjG}<2N=j-gyI+*7{l-pwq=| zGx3x=5cn~#$%3FGtsX*N3YI@Op`@We70>KzCKV2=V$qTeML@Pm(MD0w1QG(Nkfmqh z;qHvV(N*JoUr#V0H%gMEl(vGrcV#OfAtCkG5}C_Q$N={`Y>S3wM+-=wUGVTC6-sc8 zm0o@A!&ynqBmP5T(}c5E>!s(<@!nsxL=UGx6~KKt9~DLTis2Lz!`#lVv>diAtc%?f znw0>PA^g*ckXD5n65;^`I4dj39CDhrpZzinrJx7)o+y>AX?}&f5+XIxH z>WMW?UQk{$cT5cp-M7=2HkpN$bL1$JqQXk=$e)ih5!|w2Rag+g!@|bSP~v z&r%;!{LfD^?@$evIa>WLRSz!vYS9boo$l&k zV&T!oL{;U-;M2RgVAbu7*zM_(UjN@uOp$CK&1okp){P0C)QU0q&!-v^mfc?#7Ktpx zAG>yHQ$I}{UK0}+7jN8(zxm)9E1hOTf<72%=>TJZaoq=8;4*V_MKv`^psFqOy7bii z7&egO87NNKX~+sz&yZq3C$cF2W!ELO%yKejz>#uE^6Iy7(f%bto}icb+KoR>J+jGP zQj|?!-jmgI$9$_$pWRu%!yhvJH=#9hSkOO%Y~&L|Q+CB#|E~-6GW}~T_{ls<>`QSZQ0n$8$>d34Qga3IP%y%pzMc?%r*|+L1SVTg;LBAHSI1NJb+1B&ZRHD zdW2UxV-6X4k!F(O=IiROD^46B9fMK*32xl+jKkT*M14+CO0&hqZkJD{%dWPbq4;E} zGiKe+53QQ*RcyQtw=;=CmoCRimIi2!{^w^gwtDg98!&{tx4`ZGmkEXmzHAcX%NPYG zsj4aMwz}TJ!;ikgF)_yM5l*42}+N8y=_%xyGbAt+Q`T(}|V8+v%b zZU&SIEPKKrac9_4xCRFZmg8mMarNJrfQky2a8Z^_A5A?Nq8>42K@?$S_Z&y=l71sZ21#b<;=g<6ZUE ze(d#@Uw%U4$04%w2S>8I{U87LF8FOe-=oJ-2BXt9Z)8@c@d_FsEU=b?AIuN?s^B8K zxw%a^AXB6#ZoumXEP?ZNa+AQ+38V%+0V|eh9X7%%6Ifr`Is{&|9l??@i7xuPXb(3p z825K2x{27w-&TX)zL<;mc(el8%AZ7LmulB&m#$;u^C;U%cyKvlb`_l4O(dO)TLsdR z8ZrKoUUq0l%86Wd%cvo@;#)cJ#oUxTG0)Nq+Wg-qUk+w1xT*jR6vXzvdAQ_f zXJ-`;9+8HiBhU;3LwE#q#b7@u83Jwk%-(Tw{yb>a6}NwYL*mrUiEeioDT*NF1P=Q; zQS-yzs_N?bO)J1~lihWH=;Zr#()Qhmz` za!7iC&JKCcZD+ndLH;oWc~Tw~rqqkvPCjZSs90!#>z%UYj!ww;74uq15hY75v_tL$ z%=iP3jY5))wqMx{A2j9&Hp_WkGMrIbWhGP-SAA38^2p(!u9?=>x}@5*B~@UEjUsG? z^R|cU>$e!L!-Nsi%DUw{Y*2gmzpUP6fglmsuvV*W2x2HLEv*pvQYEw20!9Tar;wHw zDUcI0N2khb$Y}A^t4Z=0kPMdB*Okz2y9cq zQfvgXFpz4Aokr$Q=@WaFM6|TD2E3m;IdQ`4K&r~GH_8Dn8lfxmww1rf#^@btVAfoW zMA}K9;8^|wGy)5YiwFvW*NlmF)w=R^pI&Si$J*(pJrA_QX?B_U`B?B_`sxABen?4) z3L6@RaCyT5NHSI>5k4 zz?lR!lJ9KbVV|U@rvPku_zr8tUAXzy&2L`!QLS}lhwJt^F|p^yoBzGmX@JW zD>EV1?!D1<(3e2PO?Oou4BZ0`ph|>2CND&0!2bg_5bDCfXIobnB)sd;8ufyWyQ(jr z^Ft$!SiEr@)Cao0pqae_w*V3x1hF~87I-~8>U1BMaffNHk2KqEj+NeoE);Gnt1G%C zoK0Onk;sk@pzf1&pfSvW%-QLBU!JD}9z&cPAE2W1N3J6*Dl+{9hTeUy&;UHza?s>UDqO z3|$yB8*d7mx5yoN;-UQz0)fZC5=F5R1@A1UNQSea< zh5c!;NC=ET?{%F2D-V+6pn8ScJ>cO|U)O&X{*4H+@o5*r@sW1>%D``z2nq% zzT?96)zui>E8NUs^6OM~)sql#mCxY+t$E@Dge(9BQ5;tTq^rmCfF?U>_1=<7*)?{# zi^ov5QZH5k{DKDXS^&4#OW7eF_sbppx%@RVqPXn9wC9g+=X__~8vlEeo@_F>6CCs* zyU3H`bql1RoiJa&K3Jhn1k1KC(5@O=SOjtJZ@W)Dy0hc@Uy|Qz(%h@uhAsmZ55uij z)L8@%JSM`Rw)Xb7uxG|TRf6(*bn}ny(PATLkl{HhgpIRcrrcufy#pHn0kUdZJD7t7 zdfq)tKBMM8L6m{F_Z(CzE0wBnA^@hGIdFw`KHz6pz3ttJu_QVl9^V~x;$O=Et=0|Qs!2Z0yWfpa1{_R z?7JtXrvCk>4M;iEl;Vjdj&1|Ft-{6ZE+AHcK}USF21JuJ?EXfic|Y6!o}zqvP*ZhO zEYuIzbaqZzP+TCk!=!0aL#Mk;2heHj;W_HR0Ipui5$Fg|ueARPBfVbnBuJ)DoZ4#o z5F+<@F>}oN=zi|&svAhG-3+*!J9ac;_qYGl1I4>jEE*8D>P643@e5)tA|ARY8t@*A zX8wMCbW=y)J`{D? zAW+^G#(_*}1M_RjF!8`Ex#$Av&_B=5onRECgsji2P;MXE$~T$jbu0W;J)U2(8E60mOw zBlZpsh0pw)NvH38lsMqR`z9tw%R_=h+!Yuphmzue{$-JMy z-TdPMYit*$L2tXSx3oT&GzCQrKcrVcS#NsAiZ-v^x%0#w4ES=5Ug7eGVe1KBjlQ@O_@Yr44Iu{tr?5FIQ0qK2Q*KA^^N2qn~av zR8d~u8-TTSSOmvxSwFni0$VrIguXWD%#h@Xvdu&O2^7~;wCiuVd*cHna7FbDE>3Eu za}*E2hu)p3bchZU*SvvTnbyluiQ2Ip z=~88Ye4+DJ)Ch6N?J~6MOyX|YT~l~f>|mK%{G@x(L-JL1?>vtPTcZC`M8Xmtd|-uV z0H`;HUiuloiH(ZF0MwVs`~5|9*P^wA1p4D(KSNQlnp`C`U?OOg&0ytYV}k_^O<*6# zz)!>YX%VjQEX)vohZPN))8-r+6|lH2$rkoje(yC_$^&Tm<70aIMqFH6=4nALE&_;o zZ+sfQsY}?{*f{Ix2o+L)scw!bj zE(%mX;9+LIlMhRf2F+MbGmUsS-uO1%+1%O+sjlxGlhQve zSI?V;RqXG_KJ>5L(yp|nPTByG-s7?y2TO=OKlwP3_UKQbM9m=p_hQ^HO(N$6ASZsb z;LsR20)4}W0C|(-;gL3>_=F`_pe@0_VZiX z;ae@xBM&eXu0mBHjtN=Df-NF5)?BHr4LUdtI!qf)XE=9Ez}!_BY}WTjpaq<@o&g`l zW+JPax6qP8Sb&P;5nHOFkr55-GEHj*4E#R=(`S0icX~?#dMXH2W8>owF|I;6qO`^h zvunCs`EcxjdPOPsMF(vi0Wh5@5h=iJ0(9G_S3MaFX#pIu8~)2UpFc`jSXzpMa(>Yj z8g_u;$uX`1{uL)n14Ry$*e^*JVWP&Ok4Y6s8eoReVU>ff-w^P*@aX`JJ`LUg*O^aN;ek1<7`S}0)o1~chAf%=oBPGf5IlH9aL`u%ZjP5@tK{GbBx1vs z>Cj-f+Cs|8UzIL*1c(5;x`F~b==yN{;5T4`L8XRctnls{yPzN$EIS?hcjiU2EtJhE z=a`{YhQvQo^;6ATTx2@Jq0Yc%fI=K91w?pY#P|@bf?TxL4n3vrdHscmfB-{-A>upWb$R%b`gWpq zG@~h7DGb_PI^yW2In6n7TTFxnJ5FG8@yiwGmtBr_Qj)t zKr$#tgg~)tW%U%!c<pJ7Z+_U2O*q7cwdORnrqYlka%soxn0l#!wt<62qET9 zmRigmH5Z3J39YeiB@hZA{0hHDWjG^xw^#w?`6yv1Oy|)UjKYi`8bnprvHX{lkdtgE z6fJTfpDL=!{42_m4OgL{{{gh)+QBoN_wS3s0Bk~7dy9ctYpBhn)Od6sl;$G_sR8Hv zFwQ$}n`_s!;n)P$O`ev^Pgqd3KJ~A>Z_y3Sck-+kTy>Cjyd00{HYyl6*V(GKaijB23q z6q&I5HoWLAKPfgA2@jlC9hPV|LDc?2kJ?pnD(%SD`M2%*Uy9@)Ua}X2044^79rAob zxq>2$Bme4^FWe;vLQ!3YFxYS6i4I=1APZ@QA~tPz+?)fhulZOBCX#g$yO9Z_yina&12 zr;gE7IRf?`7LvH!tbgE4n!+jm8L0d2C#T;5@v7lIyDM9Fnq1P2yy1NPDf>Up*46dT zI&)mrUl#G7j8{+)5S$v@3wyM~?p{GP)Vn|pU<6{laG>|l{#B*}R7!&DkFRCtTzd^` zT*sE5lw>OrKx&wS3jx(Ut)E)o5`}W5Hy7e_)c#QdzgzN!DlRHBw1CV$97ssKm@2o@ z?zF(i$Co1ct4ovX?gqQ`2&)F>cbZAYo)qa(_1dDyJ4A>hyJ~Aw#*Nub9k)BcyGAm; z1?;_Te4AhB#{wasz*|MhdmSQnwq^4!N-yf$U2n}A^2DkAk$)vt39`&s%4-YM@|M0* zaKP@NeYWCN(G=$ugpmCtPvjP#=y+ZKiYTl^duE}_(H%5Og)Q1OaLj_c@#w4FXX83t z)Z3w8{k%$ytW4Z{M$Dl`%=3~8#b31gb`tVD7-!#Kix>cgZx%{!vCn&2oZo+|JwIR=Ibg z01v}}2_S$kRL(sC{!ttssda-zLuRmtJeS}^rDr#_Pix?Ph5^yKdI>%eZHSfbaIyrU!w)_ewNq==5vsoMe4fJ38=U>~SkZt}a^ zM>_2;q6bw!GRfe8rP^xN9gy z**jA;_?7+%xx&D=3WC6dR&Acz04=Yze?j0wY1P8ljUeY_mzqRHw{rf@)_ODJ{L3|r zI2g~pT2GSJ~c2ew2sh4xORH9FnTj(x_*vFBaCM4rGPH+VAc8{;_`$ z^s^!w8~E9a~}@Q_Ucrt5l2!Uor*g)%9D^uqbB zY#uB~V#UBIVEoeqrFGQXl(@JauL*2y?4C+HJq~Ky;p!>F;z=sVhFwk&rfn$0<+hMzK9Q*;M$LtS3_8aP-R zpMCWP^g@0JUI1@ptwYHL5ZN;eizg7?zO5C?I8{G4n0!b64Pe|=A_F7gHJ0X&=79=& zGa8mA^a>J&JH<{5%?@qn8><$-wpu8yX2rHbm>tYmk`P2eY|rd6u(ph>rE9g4YqfQ& z=iKer!5-k)XG2FdrY`Lwm#LYF`iEi@2qS(Klm^R1WHeJ2{tw=NA$m~VEHrSn^uah0~%#S$pOy@zn{;w7wVc0TG7^hMWf_83-6EjNL66xM30TI7skGSxxz^SN+F2;u~_%o!3*IJFoFmAvL+oS zavTiWDOj#eUfT^wJy4|wBrneD9@lMxf&)|^%9}KctW3~h#=x665Ie@b9+rq3@qx$@Hph#>kQk;Iz3uZgZj3;^q!)bZe$wE~`1_5fBx1fewXP#eU zdmq)UP+t7V{)DA0ukJf?6b7iv^CTvzV<&SM( zQ9~Fh%%!?%4OUKVaP`_*^H?}kZE;3R2Y5fL$$gqY)K7zP73A~3Cnosjuh5hcB_FpN z79%*xB6}VHOyF`KDS%Kf*|_Qn#{?GnP5P`hB1t$P`=QpnnS3p&uhfHoO`MqVJ_?js zYy~Dzd_eury!0H;2mL?xfA~y`1QzU02LUw6UQUB0^Vm=pI05*G%4KTw4za=W$*omB z4dhS~Q4RX2{FX4cgE#4WoeJ1xz=;hPvEpGJIR?}@A?gur4}bN;y)J=!?LyBndCH^} zj3Ij7`qfjJ{KaF+8z_wK?&5fURogocTIPZNui!L`-~U^h6xN4hpN!;tt?`h1(c%#P zw;RbkGo3d8jIH6YXIcI19hxwr^j_vjATZV|zWLAZ5ATcL$^u;i%wd2*$mHd{x;n{d znWM4al7nl9K(T|gCDlVa(LxxCpR?V8rBN%OeIo$n5J8>;j_IETPW9Oc(`EypAIo2^iS@TFoW$w6Gy}n0SRFo0 zb8#%1oqKxyYS4p1Q&EvZvp^T_Z6R`R1>_Q-Us2Jp0d{(GOi|pwPv2udCdHF~MKaN7^gco@61;fIvP^~5kU_m$$|)E-EXl}{ zImqg)w8I6(Bj28JkSW&>xXaFq9qh*2w5*#zS92!`DIv@qFpbB@TU}^A0zgq{el;k8 zD$l*?M03#W(z@>D&fg>lM>-7Z$olT!Zq}}VTLnKd1(R4>#zNX2;=CQ-Q#Q$q6wc&D z{qI)gPgDEC8U2_LIzfekR6=ECF9dBh86$P0h>o#2ZB*-z$4m&h zkGftjn+rnoZ%J=2za!0DC(ZrnWbs)jN9bOeq1RTY&&Wt^c0s(xRbIpSFw%|=4|0i)4;XBdFZrB#mjR_d<~9rY4F ziH1h?S?G!qC{P{1oh01io4{u!g9ZZMx}uZ`LWtCg<~Ze9prV)vOIY@ie{`>3O^;yxw_w zpR~h+ei7$m3Df@+RP?ru&h^uYeb@?ln9B#7)*$hM;<5oi-n2?L5H;wk=C@f~_i1n; z^80d$k#Lh_1C%ID;Q%!ta>f5RAm{lY&hOxO39Zt|#$ou{5RD)IJ=45MsG?}qL0@3av{)3Vjx?SEp4Rv)TyO7QZ-b#3OjKK5VhM$O(H2C-g z;2o1-VgN^>`T@4|4RC;xiA^wTSCu}xarmAkX@8<_$|1!`hkuIa%VYv{iO^wQRSj)Q zN>?mj;bY9o)wrmff(dbuE{mZ0|vRG4Y2~pglvdW zxfr5X%6;T?QK)P^GZA@HCwhU`#aM_SHpoV>zk<+!W2#onm5;?yvh}fogZ;B?l&^oC0QTP3WKayLebIig;6H89(#SIul6Xu$B)BiQL-y)~eVF974JRx?6#F^8W2cODl7b|C`wvGjTp-ADMZdtH>18Y#D}=y32C zB^Y4M+H(ch2DlrriL>8>cb9Cdn7L+7x>S#UEPK>Ef=3FL)!gU&MsA23K*DYZ8*fCN zoSZt>LTgYZ*CzbdQ34#Cih7o$mSyMk$I<|nzsf0|!u*Fkd}^urnK`HEO&NFvR249L z!ji|m_@A_2UR9OWz!X4tm@K>ESWN=W38r@JLi{u!0ZFlJ|L!5>bfP`_&^6(xp~HpY z^EMA@=xbbFr&n*b@!a*TlnPgo2X{*TzM9veO?xdw5l>0}Lm{|PN3w_z*;ku(DhnGw~%t4?sg@CINz z#%1j^i%>EJ#&9FZg{mq+Ija3XmU_2vu>Z-fL~RW*j72c>M*mmu8`f-I6BYvAZh$NT zIzy=U`{qSI+D1!)NpGKK!3tjjE4TirdC9!ecy^6uNqKo|=LI5Fb72PA-{OLUq?u)! ze$VZc-ppl;FZBYuV=CZl{hK+#vO2KT5>$p=TTEg9a~C9m0|#nG0sI*i(Mu*RTS1Hu zfc?E;QIOUE!2=bKSeYIhz{H9=R0Ow@Q&Xvu*3z}chl?!@d89aOFYn$~Y}3v-NPx&j zfVHB+h@mwc9zwPL8McQJG1i(~RnR zBE^#LnDfznbFE^Tow3=TkMjt6(3EngVZe<{g>NXP-8;hQCc# z3tncOWBuyxPwPaaB3)sZ*)gA_HsLXx&nVyn0_C^&|3$5QSV&BGgW=u{6GsNPSSjDW zktdO*>ZX4gQ78l$H%c&}M(ZgEL6n;`5it}H&ok;txX7+ zbL1KW91K?!5LHorPa7}qcAm*|&w6_D&`p#Ktqra_S!IJTvPnk?i!YO*17nq+-8%;2 z{;5MV7jZCmZ+h|_ABE7<*v`s_Jwu4^@-_D_m1Wf9j37Q5xI%;RZj~5aU@KfI^`+95 zoo*7;ksrQQS8Lep$=TR21MPeV%NOqwsdm&8+x6eUehF|f{ta6=D-s}qHvX}tE(r!W zf2C^iz!kU7Um|2CSkks~s%hpTalP+$IbNslJ0yGi^%!SU90 zpSev(Ab>%3@CJHjP;s<%bcjewVgg;T?&$W6^z9o8+;=YP859Kj z1GxgQNqT_!gKn#DeF4AtJKRwOygQ132`Hoo-!R#TJZp^x3c}Ko5rh(HLhay2mzu<3 zs3$-P^-5Sfz>R>7GhVaV-QE2h8A;UB7x|VQGnylM^36 z%RX)@L9F|q3}mrh(XkK){S#tep{AyWFC04r#|P21g2Lu=aLUztW$?&Nm(X_&hu5u(|RZ1?nq&0Rhy@w($T&U95D4G7qIsVt%WY zL1W?d3xF8emdyJ)KoF*UEgIBFH5XHoEi8H8VrKLIK(!xHaoNXi)DInDINurn+25@( z&=DuC9)sriY+G}NO9B}W=)#0g4|)Wo+=~#Kvd~sh`3O|<`^{jGpMr41yW`J0Ky6{6 z(L3B;&s1?kHdvMdya@m|z>Bn;QP~2tsIasJ3uVF%rE12N*U(D`O$YyMw&?SNXdbXU z1Zx0?4;dkbAsNuE{MzeSmK1oOGHBWY1ruIR{a!aOfNlXi)1_wk@POhuMgD}f*iR>K z(_=h)))cuS8R8h12_e2|R>;ds5E%x+V$3^4o9KRLUp*;F@+sO7I{)$UPv9ZbuyrJL z`Gubo(kP-Hk4^|xGXsq`gl&+b4%BKQ6{L5YVd+c_v z`{(BzfoD8l^WV6vfyDd3HEqprcui)RH5d9%pq&&Y>fmAwn##D6cC1)x7gPbo)K{8c zQ1EmkI$_u47}y`(?zgm_=s4p64LZ-WJu@`Qv+6hp9pLD;Ocd;_(jucOeM{9`e2J~| zp>?>RUC$JuPEX`o7;tY%2{d=cN(w0eEm`q6nMwlE;5o|4IqOB$#}V)DVBrC4jJ#e#YHU>>y$jFltXD z59cC10o6%b_Y|;$AQ$U~8CYnfO9TcFJfv?zHkGlwJ+UcYK57m`f$w67P|jcg zC`cfv&Osam!%~nfU-uCvB+ZBLy7|5bt^`a=LNhG^gn-g@z|&xq5qRIOZuA`&VVt`c zJBe*>3k8MhdGOpKe@R3H6$&+wxd2xI3xklQ9tcN0(W+k_-Bt%1F@b4mghW-gvE!Vo zliH#y4C4(0j$p=|+MeB#)SNu&kS%r#4WkyR z#JBB8cqtq;S2Xg1vW4O%&lhrx<;_i5I#pxc6+II z1hxigx2gf%&smI$*{oaw+PP|LeLcMH6UwhjTS~}Q{!#6492vMnW&nW}nBL6PzN0_t zd=$}hS!Z-J!XW?i$3dc6=BuLmj1~b=WH(U$b!OZlI@Sw&opEySbC&t~17VIK$9W^l z8V>+Ug*-it&FQpS#=4pdNn~~>+-`M<%9D4S57C_W6&;M;Z`uCvKN7w+ZKIH?&Dios z%+NJN=4Qgg8^J|~&cH^Vx?{nd4XFK8EA8lWFrz_b+GmeJpmX`TSo^Y%YCi5E-o77T3B7!*_GIRlBUG$dv z{*J66XVqa1IxwB{IT;IqA4%|QhvK2!;oq|7=>>Lymd)eDuwNhr*g689 z9HvNNAc%TVU_~uKf9#Xi2H)t0IIDHLk9IF=`OXl6@bNeTku@ z>?vf+QkaPIe2U+6{yX2*rMa$|cYnWkd7k^epK;+n1lBt+puL(JyYT$;;5W@V8C-X? zbe1Oz#WR=IS@I{Q$rhXx&=dAQQ5y|hB2DXfE-)DR~!EJNm@JJC@Sj&~v0gB6;EnY>qnyX4G7 zo0O>NE5QB1B7k3B#Di&GQ?~i#>%oUAk6_3F!3IDIh{p^sJ~)E1i;g=590yKm0g&g2 z;8kMCft?FMK#PU6T+wz}gsb-E!fweO<2}IV0l7;XHN=oOwz()?^z_-YLTESeHHAh; z`+|HJV2#0{YXL9iSX*1efi*@k_MgGY;&T8mfTIqOpJpI{d6ne>08kK9QZ!^G9(PZk zMavt&xE5?X)M*CWS_`fCoBfEo6~HiT%)rZ#lClNBgVRgDKvAdWF6|a#)Qh4bcJNam ztg#6^|GA%EMOt+VoXU-LLQ;KV!*`ANvLNmQeOi66h7j$oz@?~=^&!*c8}R24+ul!7 zbB#9OtTQ=Ygn&`1%Z3sqCO-bTRGMFUgxQkg>_3oz$Hb~GK}s|P!P|-EG_~Wn#qcn6 z9z(8&r^YJ^UTrn$`VCaT&IK$pw%q1`@SIEl@N4g_n1OS;Di@59^}cafHN2TZ`Q5a1`rOfX+D2c zUvc&(tjVdvQym6oX2B4hI%!Ji>I*TCw5C(oXAW{ z!g5~Gix^!nC~pk6+Z=B`X&Mp)Y@NY(ykb7FyO4`59D$E!+d-pNlFz$#9lz80FbXz0 z03GWp8HWS!7C9!DbIu)426JuEp&;|)7m~$}6adjG?)<#w((L(u&(r9{OXqBiACy$s zYTr= zJt;&bE9rxsPsi74*e~7&#lzLqtPa@xDcEs0Lo4_U1{sDCJ5hvbp<(I zPPk4KKXMX8u*0AhF#W6ULfiIZ{#pK}&cj4O{DOSw0>UEE;`u3@eo$oO3@6WC!?JG` zhfRVJ;>l;MXreV0GreTOS8#-Rx%@||Y+)&4y0%?nzIV!*{tDt6XC{{cgb)EfuzwWb z0iY@%*f?SaVuq#RYjS)QZ0#TRoP8lb94A*fNqIzf^r6q3*&{fz{3Ri z{`-LI0PD9(-cFqTGxXi6aVs z2KLXlCA2m*_W;Ltr1hEvCoiuNnh4Z6$H|ZKJT!l$AA`{1&o2);c4dtyu)5Ey<*x08 z>&=^D0-%GXB{qKxJ;FKWIHiYTRAV9{#tc2?%@mHf7-!D@`S+1(*As$S=7)!w=!M>-YaA>;4{u zyh>|90Z?&lN?f>A{ggt7>ccWne~+De4^h|g(7>7;7$^veM4X_Z}*3n^EKbwJU13-%mS2>XT*7 zqfCyUs<-kmQ)Nd)4?v7=C5SD4l>+gkRXVZ{QQF*&DRJ9}xE+m1W#4!q;6sZXsM~zY zV|C3mD`h=VH~;yr$nuXYPf&^VhOXHI6X|m(^+b-XqdV%y>ZcNxc};ASzM_54G|e=Q zGzzi)Fe-o5wW~?GA}BO8w7#aQtIOE6q@ehOMU2?k50JD!#zeczLNhRNH)=*cUhF{Op|5e}P5bwScdiG4y>%r;J8}>%vW`w?#;bv6CNjaDH zHV07k1b?hA9BK1emohI@OlgkXV#A&5<1Y3(hj{)rp1D@YZU$t~o=5q<9xS=xpt}F# zE&#~xMa9itR#sM4avI(aJ5~rMRXxa<=@ti%T~L=(65HU2J2NxW0|`ykcZ0HLa)5Vm zP|yHd#UeU{y0gg`$FaAfXP6jJz|Uc9t)7>=bSN!y4`8kxhnqQov@ktNRRnX3zBk{1 zzc2x5?fwLY{{#nr*~HXt=7Y;7ylo6%p`!uI6y^`j;&)@5x}-g3wq?Lh#$C0Y?kVab zK3zEF*)wnLXeoJ`+gQ>vyso#ulQr41kgPf1t#iU=2jUpO-w1#qY#kjpM6 zgoe)Kxluris&!;;{P$6PprL1^#Dcvg)+$GW!=EH0E^dqRlD|$t zCOQUUiea8p7neH$4Onb6A`v5Z>?wmA@JcY3qPN^R0?wZ_4fi@J>!hoby`^lx?HdXe zq?!k@IOxj9{mWPK_ED~0QK3f*Fe9_ZXXlZVVX6p7XycK40=i;ycSN`u3!%gF->Ap1 z3eSCNXwdxDo~$j2S~*KvmiDA<11XM|z>eg(OjQVxV}34Sl^cl>(0O_VX2j~IfnmD{ zTYQegqqsOsF?bCfP(|lS%WA80YRJNX0bM@K$Bm-lgWP9$krrR=^my_kf{D?0n~<>Z zz1%YeH66EGTLiVE%EF*mJyAv4E7fVIQ&6Z2zs8L2yrteQ+9yE9u?sZI@={juZf?t8 zK1lT6*rX5TFDuE(%^g!$uT|tvSQ_G8^;?=M-3c;VgJfZ&R^X&^EWKX6hlynZ*X!$O9EfOWA)VgKnlboj72 zbfBro_$Nan8D(WkW0;_JGh8`4>qn5~((UKh6!0+E?V;{KQ5Bc(BJ)$dT-THi_b)Ck zhNJEm8}!weuO!Nk^)Ca>RAK1o=G9QPBhu1}enp|^z{Y%_o3ZU8tkTGwMCf%2I|Eg^#Pu(1R zoT@XU-k~465vurHLd(`4pG}+Yvq*NjK1kTnv0wwkxhu5Q9csAP`_01_${7^DKw+3F z8J8-c-eCB5WNzj=jY84RBDw$?Av`$1#lrqeEKhQGb1S2Bver#K5!jL4-q6sXCS_J~ zgWZePOYGwfSgwEob#ZRE#TZT@=hs&Z@@jwI-g^hbYVh2v<<~uJm<3OVK10tH2Z+~~DgXFnOKYp`<;ys*YQ$Id(H)%*PkP}& z2&9B5I-4y#$e%Z|Xr9xR&CSgt1_{OskC(=^n>WuS8)#;neQ~))v%NL=FSjI;8G4rNSE zUNbW_y}{63*y+LM^N*m|+<^!W4ShS>TkF>H%JjYaJ{z;WC5iU82`LXAp!WpgZt<?k~7NiK&{(qb{Cfa>9ME4<*LkfUr)+sz!~h* z_$3D{1#j&XN{cNkdhJ`|34|$i_o-*^w-#kCCFajZ$`0RAoQcs4z&Z9I{jM7Gb;6kuum zavk|MGPnELdL54F_3S3h&(D8e@+gegQ~ZxWIivSLFwY5^F`uu6_qpph6l=>ShU-b) zmbvFZTTnE*Ni@8{8cu_Rk(tfwnRu!>F`>n$1^DKA~DYGKn!(M(XbGZWfu_jIzn|bV__kRILzYy#I literal 0 HcmV?d00001 diff --git a/docs/images/dasklab.png b/docs/images/dasklab.png new file mode 100644 index 0000000000000000000000000000000000000000..c217250a56d36f2032a5810692db245e260413c2 GIT binary patch literal 253657 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


p)}au9nH=PCaIYc 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�$6h=X`i_qzE>&<0_jrBKCR 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

Q49h++D#jhi$`;z?E?4i*Tz?a{ zp!Q*Ad^B`3=;7DN`#kQ~zHzLgGivkQm>wAbcV-1NXEGMsFoX51yellsBGa$Y_LL5a z0~s%?CYW8ND2IfSim?d~v=#RiQKhHwksqF?)(QgZ%zQg0$wO z3)}<#UC1MvxU+5%*RL0)WNMcBhYjoX2E!$htJa_g%%|$5iKhP7v@;SaVoiIh$5m;0MNG zZsSoT=-P^@Oi9*Rh9cuLBVLZmp|VlIYGrIaHnm>vZPN^2AWAkYKqDS%pAzSue!bc8 zjRfI-Y<3S3h?ZX7v%t#w38>_L@IC!)3s?bn!B7`L6F zDFQ#*vX0g*m7v4>2pmW+sVm$q9p`f==Y&n@bMx~vUJ_ojN)lZjNFUB@o#{y!o-TXs zqHGl0A6U;41<7wo#FM#y1gV2G1`|#`^L?9v1}4YY3?)po{Z#jh4c@e-!ERi<;-xhW zp$zc4=rt%zPy=U+*p>&G@6fR0g!U%zbiqXONzCtjE(?*xIqxQaFb>HxA7GQX%aF{! z-|mGN@4wa!ej49)1}4KhdRhLEgDhHe8?!3U1{$nXDe5q1hH2EQ%QrnCO>8jK<8gDI z`W;~cuC==kx~9Lcu>Lvb`ca^_wQ16V^TD^2yCG;uFG=*Nw&-nf9(~X~?@WVOj(Qx7 zWnK2pqz*YqEM_MWS-zAPug$NMT+&yg_ zx$ssByKVYqJ)guFSU2HN3<#b+>gssQMt#`rnsLP1M|oQEN#R+O#ps8qj|Wvf##uoYILT1e zl)6R{f4OtlP5;bUBm1S%(a{`IR5aJq1&>F^m%lN1*!?aM{Ms^2p@UfH78P}SZf}lSm|DiD>F9pebV^Q;<<$E@~ z)Sg3ZDIwj@8__#F8`WwVQp9;>-t*&-(;wD&E4J}z{YR~7XdIH?E`C-Yx6O;0tJ_wy zF`-}LJ!90cb@LjAz8UgzsA@T0errGTlw!J0n|8jxRvCnkDtwbfkQ6-aV;k36&h9Rb5;^BQsdB>X0 zMEu~DCaS}g`_)IsDkdG>Dc20qY4|zMp2)mYFV>7X*0s|PIvy@$YhpV=!ir5g^4AcX z4*iPz_5czJsvXue;F+>}2~R4UHcBwSf}L|Z0YRjcx-G<1uP$@IAE0|=lB(i ztPViPThp`xO19qGn%-Ar6Z$#i(~uj3iyT+7ZGp%bkYsMb&9Zq+V_a+ojb6o*=e7|f zdFx9*We0nB6PA(iAhp=U?4~OKwLqAmq9>@>$&6qCf1Uy}i*>w`u+Mva7+W%1Ra`RJ zP)xTlDxzw|5h1g7+!;8Lr|bU^&ynVU>P*G`ULb6s0N=}swvY-R4PR9&WUegJtRk-h zjbl2UcA-fnJ>9v8*Ym5us;~1%aj6#pH7k;1kOg7x=haX7OH{^SFav&FgHitZ>U~j1 z?!Gn?wlIDM_K|o7Z>ELNXuCfAHK~h%Z{Lx~zO4sefbLL6LfMlWsx?2EoPfm#E_EOnYU494 zk!D(NYWIp@1aB*)`<7^k})v81&GKQ zYgmdkZYXCEZYDuFDc@RJfipwaA_1eZfOfK>II%CLZ}zjZY+|)qJYCDczH>!`OpVCB zkBa+c4vVP6xS8VYV|rmbe~ILoJllj!c2bG_=}|E-jl8fsQVB)Q^=Z|R=I57F-SNFO zP^B0VwS0PLk%I7voo)hqiu6}qRy?zo9xR76je(+;!!5{4GS5aru8pO@oKH4t|Bmf0 zE+M<+LE8L_xYh2m8a6>kR?MYE!M?Hx5Q?JXkh6l2 z;QICJK;AWg$vMbG{j{+WG%46mfVJ^zsKhZRo4>80oXMtw%pOU)2-Vf8aJBl=`6^7V z= zIrRle%efwr5&r>xj&X{Tc`W79SVxoUd!2g9DSDX(%Y%juOPQ)-H)Tbd`V(`Z?g16&p=dUI%ORPiORovL!9ppB(lF=+f?2oaBPTe{gIZ43tYBbc@9F ziSQFQqRdhL}yabNwCf+z(GFI!1DVc*Dd*hyY)aFbYTD+4^AoS@9 z4Fr3T#0mCSTzNObRTiAfDNRI+g!?yDZ$TEn*=IlR`44_hXq0)qhao}i$K~Vf$Yuh7 z-Q1f61zLV_DK1k)?_h7;Ot)%vn@cHb&x)6jkYMwq<^YCluKi@cVj;y;#zaeCfxP9| zx;A=#d}v}Fayq{C6YjqD3eUH2zgm>EXbSNa{fs?H3|K@Ka+=iYUIz~N9sCW1S;x+R9-XoJ>11efq|Pk2x6opHgSGJ;G|@km$= z`T5tfj9P2FD%E4KIe$|VgqQ%zUD1WX0j4gw{ud--}sI0boM*a2W=Ci zVeOcl3Efr+EDS0svD8i2%c?X=^l_vHOXqi-=;~jc=O(X*3dSNd^ zlQoaRdtli@OleDFWIaVn;wfV>Y)=k*N`A8C9f;A6agGdqIz9}cgpS$wE((sikypZwq7MSZ(1(;S*;=4sNo-{dTH}$JaMtlo#tnfUZbfQ7|J(}O`MU`^j1}< zs4NRLg1x@4?bJ(NCt%i_KnH5BULUctbY*BH5x`hKaY*Wb)RIe+h#9tZ-b=??itsp1 z)zOTL4Bs(0flvotExpzmhj=3cuXyR={X zauth-m|$u_%z412a201_LXpopa73%4usIdcGOh@Tq7|81hhzrxFU4hH9&(!ZlaRHF zX|fGRmpt5lR-u{$;T6ajaPF(PGM<@P54VP!3nQwMh;7N?68K;@G4#m%vZI6u6P;oB z!i~J_<|o@z<6}fDMiTCN$351NX0MvEX=F!DDR`7pR(P>q$;3REuPB_8ohnnw*o0w9 zEAMiC1g%M04dEIHglcG=`<#yheI@_aeXzM0YXIThHO-W@3bv zYXNkMb4lPwZ_%pt7ulXG0%zC@EmQ*7SVB%C>L-OK1%d5V>WsxUl5S?QBr70rdVUA( zP5#_7iM{a!$vuv>x9J`=iG4VS)VW7KF`I#j_h2cj{kpc@qL-bCi_=5U1!m2^RBMqZ zi1YGR(`PldERRHhBaQ9FlAK*0rIU4MV4`x_6=roXSWAG2()Q|I1N$oVlZWM>qI%mZ zXV?lsV)yD&UU&f#XnyOqxJ%7Tl1B&i9X6fthgj5%PpTtO%glEZe(){C5)QD;{~cE^ zx`E%vD0=Lk6o~nWT59n`cW}I%B%#NP)*{C^l%qYVL1eT|zSGZXVh-(nrgLc`-)zoO z(CW6$EYrkxSz8rg0AhQlPH1YO$X9JJMgwoL6a%%8TsmjOb(ZFv-v)%Ymn1r%)tz*k zdkvo@GTxePbbwrg##%BjbCWyJQ>cUv{ZQ=1<G^!rm{So9u!6(U1`Q!@EE$)32) zyb9ogccab;REPnh%(IUT_A!2cl%~0nBaHe1wd}bC*JDwX#WLH~l#}MF3^M4yBdZQ3 z;FzTAW9|`=JRN{Ryc0z2l_!Q)e#&O_E%Jfl3H!0J-`G6xbo_w}nUp@w{`>NpLDWs? zqafcdwRRo^p!7l%&*qxq&~)zEWbc|nvo2-lskSgmEk5sZRC~`;RLC41g^Uo1qA!Vb z&b|NjvH{?D3#Ilg=Vl6k^IGG&tw|dxuWu>I=jL|8d~l{_+IvL7hiQWY_hX=)E8mf3 zo$El-J4qKTOHe17|Bd<9L~*_AC#cExK`fSRkvSUyF{N)RFao1n8$sqxNw!}4^_s|( z{3O$A`1Zu62X5Pf7Es5eK34903_k`x5 z)Ds#kITo@5(aa>@sLdlbzq8hCtfORM`OQ70M1j%t$X)5)HnYEqjiRC<+21J+2~J=$ z=gd5n98Ld&bG2`AYoV$7xRM=IP#~v=pu=+3Q!W>CzwP-8pAy@2MPa8+u;`^;YtZrkE}*%C2z|Mz3G()$PKY@k1kxs&H~{gSFIuSGgbzG{E^mf)d{Q}HeJe8u zG`}(5k=BUgqd8Vv*p~p2JB@X=ixXuj9^}c*2jlXh-1ewLZNFI7j;b4ow(ZOReM!}! zMV4@CmD63m&isU|TEZ?ACoY=qCQklb+LNUmwLR4-wtIl`PPKSQ$IL$J@4xu~$am}c zSS(G90ob}ou5m2e;ET)8D^d!Uj}uwLpTH(y(n3XI-jDyR%7626a2WtNOWIlHjR^`i z{ZkFDdEWl|MfyXQ?137VVkGa2>TK<^X`j_%(bnjbt@ab8)iy)hnDo-MKsu(BP5*y% z6D0v;wKSYUKMbOh0z!~DOy7i+GlizHJwhm(@)cGlU7SmDEeUsOE?^Vdwd`!n4)|zsqf(P-BsZODBoCgMcP7?s^$?mUG(z zO+C1b{3H%)j?$CWgUy#OBQhMbAKD1e|KRYvv7~<+#}oQRcF_y(JWP@5pO5`!u~9y0 z-z0_ff%qFZ-ZCV5+D6U3TES?v+aQZxr|FTQcE70s_}BBwitYFhS;lgsowq*;s-j-B zmF1=~pCBY1Xk~o3#GAdcbX!^hNs7nBCj8@t$lC!$e4cU|q9awwE`H0n-}AE)y(gJI zZ26=#yq8LTA1HUHydj7ug*Ot4>&b>Qmy~p?Y z80rbV85{MN&=hW)0slE!$~PX?_kqc~exW#tl?~0QN3&)cEp5iLZ8hdK%AM(UA0N&d zip>rc{^R8or20-Q?@N$8DVUw#29`H2)z9fu@m>wa@Mvp_Wa!HiL65ePUA#RriebOL-fFz&Pz=%#_|lW&o$O9Z2$3K#+@Gb;-P4= z7m?10J~q=bkKH^=0G5HqW+r^W<9!R$1=`dXwdbb}FaL5CZbw|C)~?kWunbh4iDW7vPWuDn;@EiQPcb;H=Y;gk5uD`g5GXn`Mw0jF?g%#LM@Eiu-|Q2Zpz~{Ne@t zB(0pUNRms#wG;_uWA8nq!K+LJi_9<$Kp zhK(G69*uxJVCWS8#w<-%r;V^k+%d}#PIO)K$DDvE&}!LW-OS7ke5=vj$uV6D{_|_T zZr^8srzHUMG-aGzo$O=s>DhS(!8nVzN5ZtU5BkM_EXR+1(%WeQdP8uczsVRB+HWuv z2=mrcr#pbG|3!>De*QZ#9yFis@@q#as{o5k1$m0tj}1E!WPy%*e)dYEs_kR8lWv3_ z5&w@2`?m{~;X}VtObYn@+}%irk_EqvlSb|Cyl2S~cf9j@$nmt8U!!u6VkbFZ>7GGb z@>YD;{BiH#qu2Jis3INlD)`#=-(uXdW<=xl`mILfOoDj1=V{l8q4g&+*pX-YpTzmo z(q2tx`UN_mANGw=iQRv_eK-Z5D95o!GN{>GkLZoz3Ymp?u1AJ8_t@^$T~5vWc!<8o zNqEG%9$~hoh{fi1l(r(!Yq7X4upTQ>KbM9;$~SN!Fw3&k#;eiDPx{qxbDds6AmZtU z+euSaj$Z-NK<*#4JwDtxW5(XXQD^l8sHZD;f#ew}KjN!x@_Cy!_r*5Bx-sS=NZ9W~o(|MJ4mt~(PqW^4a2c_epYSbF}?NP~tYe$W2W`HodWSw%X z&WOJfJpxUuJLSApuDMbSo+NVfEx8h&J%;>I0c-5P ztgs|cYrOn>FwjfM(d z+X&Ghqbb1H&PZ*af6$3N>XA*=UebOc=eyvvUGfQ1uHq34g7cwOx(k66Fp zH9IZ{uXOk!Sh5Y=wLM>{w*4lAo5mko00jP#tN~&fppKSSW9jsktB>M06#sf+6myW+ zxCoJ&PuJ;b{^3d=mrbFb+)ANkaH)bo)J#X)xVen`MR2@l#;a+s9%gUWqVM$i;r;ah zCCz`@{ZU+$*yDf9Hf1}@$(|^rQ~Fy~$UUPI=Iq2W!Zg$O>NZK%bz|nTe*{%U!tI18 zbBYVV~p(?Lm5Lv99>;rqi{4v+q658nfMadS*9p zej>@ocpK|)dOtydsQo1zBjMg!L`3(pVQ)zLNR`UnWNNhe`-z`^sH`8sV8e?X2D54I zx>I=bKlOmS4soNc1TTNhmSIci&3elG&3}=7ps42QTPWF z-Dsw8J$V2Rey20i`MH23v~>;)zfT8JLO+tK0>3&r;r$g5L>BoT>g6h*8u0*|0N>Az zcBb#GTnh^q>v+VGOToUpoEktS|4o4~}^wYD;Ac!Gc0n1_1j)9K04=Xof1* z;mct|?{l3`<+_@L-a6i$1ZRB7F;Y$XSRNdsX6Mnold@DZlU|gQZICw*a!ppbw%T}H zf+@b6@{%KD?$);3Yqytj82|}tk&TEqI5@?cPOUMHI2AXC2DP5HdsfZDs>`3NG2B;H z4uZ+WC#kjp#-QX@%vnztn#$IYaD19c+}|ti3~pi3ycZi@RJnCLMU<39OA3(YMxttb zRrQspQgvS2rnYkQ4@jUd-}LmlR+mzej1x2Ny~EZ3l^j1VLf_gBGszhrFc^^DzQUiL1rJAOrI0Gu$2^j0@E7eATn@mMX? z6Slpilxyxk_NV3LLr6={;ZohkU~o5)$to7b8r2+vBlWY9m&YlI-lfvqZXalGO^xzf zkjh7?WuRip>H=p5G6a_sy zN{g_^tC=)2y;7ee!VF%x-375s1e=uZH5us(+p1+NR)j=AP_Pn4LjK3Yr8sN}C*V$a@-+3=@t>s`mk{jTzLuhwPp_=s?W;Iw_d67up+K4hkU~NVAm~w6QPW@`Fa<+r055RJA+At{4~a=2hmv@JYK0Y zPm%|WL3x#=zs^fV9QU0MFu2e6n6Sbb>jZ-0zZRe!Y->(vzKllTXk+tlvGJ^$uhZQA*26 z@sfK0;CGQ{1RmpIdI-rofi}#1z7nu=8<>9We(mNKJ)vp*My(v;;Kep#$d`UjLd}`h zIhwQ6&~obr6+A;=lu}a*A-jK*xg31q#V6#37BA#+zdqs_cr57L z<&iq7D~LnVqYvP7#J_E{Svx<7$bnhAX~^Q1MyPQl&azr^e!R=v^B#2~U7d7+zs(x{ zP4}@@J~gZt($T^5QN^Vpsna2htMi3PY>!632Y<%wev}j_D&~()B8j2TUt(O*j{yM^ zY_r>0z{ej~(=d1~u+YrjK*rni!q+#ntw=q+iJKq@vfOem8hwx4;`#9(f9whMwcZ{Q zk0KC&IFY@Z5m)P-)ac@oZBuFuJNSWYDzQHI>`!xOgS>5A!j7<)U~(Q6|0Ngpb~~QX z?4ZLe$soRR9D`ZYAfdGG<-oNg1qD5;k6m92MUPJ^{-NZVCy<@*6f=5Qr|qK{^pqMx zqp~MUD}Y(824$I@F2k2)s1)nmI0B0K3>Ci<6p2un%E}J;bcCXHwP&n1`bIgb>jE4q zuW0&6`8)01Q#6SMhPRA545`0DA3-Nn^6Lav%8b_k)dFa48vJSp995b~odf);Hn5+X zU6lvC-&wpn8h<;nTYbwyl_PD%Y!VB_W4zyKN%3@1{-_o2_Owzx2mINYH?A}6qzxET zA^y^tLjKI$UeNT37F7R7Kw93)RK(Y8F2~s5a1O~@M^;*H!YQDXM#G*{h8aUVko}~O z>tt8SHv5A7Ci$qS>j1NkdCXANsM%8HiDW)2)GS?1`YOS7wGPLV;wzTB82ST}d=znt)Hz>~);eeK*?bT+*6YIMZ!%C^a)h%t@9^NP!pluDwZG(*S4@%S9I4moxfBQ9gRSJ;jb?mH=<$$NuU{U-YkT73 z{(j;Oe+li=@3c(@Bf_>_=;PQc0V~A{AIGT^T;ZL?BP-2&Ni-^WlkQ7i8F3&=`(}&) zc&TxjX^O&|`iSEmLdNqF!Nk6wL+q07J8=oO(lhyAQDXta4bGlG-X#R6X%L0#Q~6I` zXtddJcHzoG_rqtsJNSO7C=rk#a{9hKTn0EEQx@>nOI~VH+kW5H-l28-DJBrFY4nJ* z8SeZEXH1_+Lew}0VRDD6LoSdNBC*}keBwr$(fXqy!WA>euW{u$s5Wb4%^K4MFQU~a z>q8TeTv+AhQ~*k$C^f{|n1);O0CGnmKmLdK#CUG!{9?CPYHd&DSTZ zZl#iVT{r}Y$oAaC&q~b=-8~<@hi%gG<}%Hb2^(w zT~?|lX$U^a{F-A4$@VRlm1Q?sVtmzDIe7gy*eEk+(*)Q7YQeCjh>yNKSwM z{F(h)!~K5SwchCan_#|O-%y@q7W46UD#vM|WWOV)D5JqZmnO}(Yvd@((t?LyQ@PhL zG^%qe4ZCI@H>*9Kb}0I#)cYT#0Q?2NBb;~l5sibEA)v;ZCw{X}8sLW^Mw?le1ZjL( zeIfuv^zDC(CJmxF3VYJn#U`m$Fl%T)4<9YqqA8aQMCR~k%$TElfa&m zEm6yA?ZrCu@@U%xXNRMMrn}-&*K?-a|57(~(*f!xda#DwCm054&uPUsTGHW?!$at3fTM--8Q?<>%UDJP}^G$ z2*;t+-0XNTiVBZLLVJQ{Sa! zbHeK`glxDIbBhR>{vn{kr30iQ(v7a^gsi!_HP!DCCt4k~NlJXb}D^Z*oearn%rMZ!S022w6_uSYLl|etWQ_l2}3M%+8R%ql5FJRyQPj*2mtDM zO;5%>k{MAeMC625c4cS`EVDbIv(lF@stq1%x$Ud^CouM;8xsLD+^FYc4t^2^)268D zlTPC-MsyvyCzRD?n|x6ouTytK$`Ptay!sE_}XLMtx4%I##DrcsqAx$zt;H8 z-k`&Lml7>H_n8(Y2h`qeD#BqEZj(PjYv1)9?DVfe@FTbYZN1xc!DL7fW&Iwsr~o}X zj$O|fMw21cLHFOk8Nm6ae19-aIq^Ydk{`_SiRBc$YKl63AadoT>qxlw+bDp0m3#@9 zr`&X)DtKrmnv4gdGlQRWyqYAcbyAN<|3YnVKN)4*Av37jONL~#J$2Pj?XLT}(aB!G zXupH|A4Aqfh#`%QW=0g15>*Z7jNlZl>+ef68Ig~Y5j|dwveUy4PRn}5uzA?Pmdwrq zF!sNEwm*My3P?@;_=S5 zSXZaZ0FWJ`pI4LU9FNv=v{PB-xoo3AMC2k^M$E$f9|OMWSFcpYtQ5_%`i5&7Hkkm} z580`89dl6M-oMRUl@>tePI-AjbqF8yYc?fFYt4>;gNwT#Ei--oT@}=gjKJCB?(l49iy z%I)y&p#`T5_fB2K3Er2af2>uAEU;G1T_nxq^By1xGq{I<=lR1 zq*y$0Z*3eibPo}H^g#Ne76b(8benW;=>}YlT^|2dh5{M8E=_XpsemeRn7DQy^zg6~ahO+s z!>JLOGlKsBs`F_wTttGl)fXo_xc^_E8n&U?{HRiV@bF{Kj?D|`+Y{Ty;_97~lanj= zGF`&7bqIgU&%y}{)BJHEt}H-zvU9n!OySg!}@HjjOSyH z*J0)nlmJ_fONto#SxC!Kqgq?iUc9lTHYSsf*%&$b-KKl1v0uFR-3=mi_fG{F?E5}g{%3a$}dm}el;De8rh=**HRt`-UlHoR=tG%LTMB4bX%5El_yu5XF9mi!E3-g?UMPrImEd z+n&_Lwd%d}(4CQhKhsid9NM|;V-4qX-iC`1HO-|i%&iSYia$&8@R&1+5<3>1u1Dzw z3gz{CX*#zWM%)SrNOX`}fYLh?Qo_wF3i=nR!UO~SZ}-r1(#yMliHPM@{)fA(9;!*7 zIt$@KzQJ;T?y7lZ=_Ssvqkn(Y;mJNhAJMv1+eV;gj)+ldJa#W(_NP($hI7+{y)u^&XG}3_dho3u)rXN|KTp76Ca@(c+!KhPWso1D-SyYHZ!if5Pn? zsr4e4ysDY&Q(M8&_p+7vuuk`ze32 z0m+Q3YKfnTCEqMCm>>xaRWTlM2QQCI*-X_8P{_6H#ieZqtnji{QH?Ee1~hH|@C1G^ zo8xM4nzYzD=tKZepw&DI3ceB(Pyp+H(BVjmlE_GGkG|*Qt-BN-LfjkUVoMwSDep4M zI0Y3`$AEvt_q$ElYx^ABQoHtf1XN@l7MOT_%VnJSvvS9tkLW8sDfQSvjBfo@2g5UZ z5d`Zo>r&!u(2dmPa~P07Uzjr?8&U2TiVoVBU`nJy*VQCoUowRY^@ns@W+Pw`HfH-} z38^(8p)j@#~&ZJAsU5Lq*|OT&Zc(Lp=4 zfZS5w_2-fS)bu^OGqf$BJLvA+@j#R`=PV@&HtOt=0L(bQIYgiq%!Z&;kef$eBCp%! zgNWmgn*^*Zl;G~`s1x2UMHDK_Dw4Ll*tM1QlMWRI12=gus)^e zIvXf>R-ekvvVi6s#yUc2ApWuce2iX7wUKPZUnM*Ie*81hT7>m1_C3pjznv-loy#f2>2Fk_F{^5jexzkq&Tw^pL3F zm>qYn^IuaRt}+dYG^-$~^5h!|O=RyHrC~o8rP8RpOOw3t+M!pu28paq*m_p;>M9xQ zmX6toxPdjq#FURx$7);WPGsz+t>si83e4OeNp-=q-1X@yOWj^rwlkC5Jhl%j!5 zSdD4-nur=()Wwo8WT=QDU27Cq_@l~aIOv;SO-ESKpO~SgrDK;TwW5*?&jZuTHxLR7HS z8}h>Xb->JaiKh|H z0ByFhAhZClSvO-Ril&J)I-FZl)p3l>1K$H=G}GmMaxz+#A?o-v*T}eKN)_wLR>23J zL7MOsI`*lnF<8>Mw^81OnK>3lMa2+!LOQMT4~ED5pm776{8CYGEGt`S-1hN(F?Sbf zqUZ8TI+AZ39F=S6G*p~HHK9F>%3#CX!xR6our)b|xxu+9Rh^kE$-r@TkLR&>d5~hv zsg%mJ*1VT)oMA$Jd76?%6RJ_VqeokdNgmVYOY9gWSBHGCue>Zlny0K6&3up5S_7Ndpk#SD7ro6)n^N46+{!Z5Pq2bv;0+yB|bfH-cyYJX!j7Db; z>gHhMwZXE?JtpN(c3#l0jN?=%Wrb+c+*UM{3|eoS_@;~34>szZ(sWD?VW8mOe3Vg3 z?ouAUMkk0H%NDP zcSv_%I{p_?AD`#-eZRH7weC9WTn^{X%$_~7Nr27Fbk#Js;YD87JNzaT9&sl*u1DK^R0029 zn#gokCH^B%?TbhCKHXH<;con?q=O6+=ym3zWn;{)3EJI>f==}7s?#=@1Kd|iFwCOT z4s1inktG+S`oMBjpR{9Y3ZqTIl>2ajaMa~=mUKuO4!WH?*y=P&N@Qg9y zihUOwi_Q+VmtA}fG_@2X;F0rFueviaGxE&XcWfV?@(@9X{5NXn4TLoJM(NxR%^Nd{ z2P(K=Q*iX7mpm3EB1JP5Hazk}ZZa7*C+-#2xr$$h`nW{~-0bLG&4Y6}m`y7n1y9^> zn;BjYH*cu=U#^epiwRW!2&IlA44Z8tjvK|A4dlUr+6py&EQ;{<^jA>?pc|5pN7&z< zUi@~)ws$E$mv&!r5N%*8O`F)kECN-tR6rT++KShy#w5`rwZ+$cpn?Q;zCC(UlF#T& z^zxE;r?2dZhe&wkdC!#D-v-h3DJTr@o z`=}Q}IEz_;_q6nDg3d&S01!z<6{u1d766xE*~O>^<_gXx!OSc&pR1l8n&9HNZ=Iq3 z4fv{vUjDqmGIFD21P<(Gt7|1RCL?{ib)MW_v&ZJXPD4OH~Po)qn_?+RGyWT}>#UCa^L!)BNP+uK4#T?C@>ni@6G-*7SCeNl} z>SXs#gv6|Gtpx^vwHqx}<7o4yF$u+tN5upfHtG=9v>-B_@H!^weO7vNsOS5L3HA3O zX0xvvEz3OTW`5d(W^y_yJxIVjB@9yD!xM+^%R#Res)d70Mkntz!6q3xujky^xh2xp zv*z})x{hMEg$CU)O7Et1Y=;V%w0$coEaTter%)b!#Y13Zy-9LA#j>idBn+kHh@?0l zmOXUXHq?|;4Z26w@Wd*T7j=pCP0XdbE7%-f78L|Wxm=wekFtsw8N=$qK3F$KeaKGh z31qrDKHhlQz-50u9dL6}07Tn9Di^W82Kc7Ow<`c~KQ#G)KKTirV907l6=O8mK?f64 z4R#2@?EZGj^9DtW_`-BwdwZGsG;hi~ji3hUOU>)M2gWxOf?)KudahL;=T zLlklpu1$hT=?oX*hC}L!7tRKFds9)CF%3;zyPQqd{waWO;}Ytl>l1)O_(W2t)1xDk z=I(vx$0);$e6P7L_Lf-tz@y}zN-!k;D8b;^;h|%P?fXO52L(N6n8eh%8kOK4MP&cP zd-{a&RUt)m(x_Wn>fC2jzBY}!3YuFp5xFmKjg@ZQ99zn&wvszHTx8>kc+j*4g}d(1 z$W~}DZ@i6GK4(bx*t7khN+S5-Ios!rovu@gO0`J$f=^uL&3YoCCF>7buV@Ky4$N093#?<_CEH(%3w{b&o@rp*0@!XdtOlM>Y4E_sXBIKNi^{>S(&hnHjEmTZ z!)bVzp&HLF3ojI^AKE*@(}yRjq@Z?be0e{@BN;TR_ztl$y=d1V&H$E&T5~^wwm%^A zVxXHu(zc;Vw0?fEKt?Gtlk_mAw}O4*rkW)bzht;6MBxOiz zXEty7F(sTQ{^d6??;|)w(?zLxf1X+3);hsTy`Az(eypm25tu|Q!kT=hSI z#XgKbfW;oSnvvI%nnXTW;SA5?cs@Yt+lzH_7CR#qot4i^z&f3$AECM7WXgpjkS+9A zyuK?dUT>UoR|@&m%}nfCNaSWOy5Yy}Tae4D%o!b1^0_BOerBkMiI*7G&!qLcGHD0g zyZLjUAxzd&-#E7L9OSi+P4g_|;=GY2^1^ql{vVrs8@U%E=~S}hS!g_orExJ1qprj$ zQTJ@V(q*NE*Ld2u`$f|y6CbReW+rc&ZlpZA0^!l1w!OQh6$yKirJ zT|L%we#F+~h=RaMoY9LqI@tT%Lwa(*apOJ@3iL2N7-ch|e#mR$odg1wk|-niZ4O4` zfv7kb??U2)GHOH!gF-6a9#6VaUKJGOq+h91s1-2~(c0H~Z^Sy&^aOl%>Y6~nAR2APC|C}a0QPb6`hPq-CNIcz^Zh6td+@FLsJ2>t$M5-ynRLr zOhQig8N9Skl3|3)t-OI&h^Hp%vBPk08i_Vn-HvMml7`<@?7R>+2_A|9{ZKP=M!mH zJrFE~M!z(e<*0_KuT5gY$*PIdVt9a?I&Tgpg=oC+IokSS&=qtMR}`I5!(uPcv322Q zI||YhQxd`n3^`CtEAIz#rNi+VcyW}QigHq*vV8|BEKEBk#1+AnnL;X4FUjKO@ebov z(FT&Lz7GY^cAraX>Rf!^{@ueoZg++h-}Xi&dHy(U=!I{MM3{Mz=%{&dy?qI=bYps& z;0MDC4HXL#n#o+o&81{xU|Q*NFwGSfD~VVn!7fzB4o&>6Qv|e%iHwvm)Am*lr+Pej z@|Cpk@^ni!Sbv^oC4F87+jX{Rq5nS#h#wDL*1@7QEamNbX!t6JdiH06J`S*D5amdmhz0d&&=sLC`(;Zq>vmVymaGzA}jGDF9A2b~v zv0F#}@F*7k(BlMP(FLGR6Yxs%Ah$-Yb4iW3*7tqd3iX|7n>@1)k=dAd$gw&l+jd0% zan|wl&2CPz)4HF$SXJ>Wfa59F$uxNF`Te!J{oTGxy+0%j5WL-EWn4xmW_*)RFq6)~ z_)M3Ks;XKsnXG@bF8)l>v%I)#$_Q?yxE6t!|q7jY?orT@`e%dNpzn z0%>?@k~IJ_28FTw109>;e$8%B!87H0{b}aFBFTDp!d?4}f%1(@7g&4bKuif1UUu02 zoZO8GR(cYzZi!GX4 zHa|QfKrjgJ3bmWKkYPygzrW_cmfbcQOv2HcG3pK@h~g3|+n&qka}pVDRz?bDUWu*EQAW_A-ql(6hM+&MK^v_gqYP`4?S|r5c{>o9)PRJ{%12 zO{QlJhEsMGe!d|Yqhfjvg)4VCt4PpeXQ<2^3?!uR=I$nUW8mM99DXTOAmt3cfc5 z4D{sr1R6A16%EV-NUO5aDA9^%QNd8``gc`0pmjtDtP6*f+hPtbha6iz&q|$ZKBg@< zpD^$rIK@`6*;1_NJkf(l#?-rp5;$m6j`#o0MzB?RL}#?!YPFobSt(b717$VMGvXTZY>wLs}hiA}E?wXnjq@PZ1kt#PeCS;WO;!4BLT zG4(GI!zI5f?`Lw>vj-3-W{s!zSkElkxcrml`2#SMF?`BD_GoJAecn3`)(^}aGrI;B z+-0bIS-}nqUWF2fyq3+&Zvy%s)>3;($Mm|87VdK&GRR}PPNoUjzy3p}`q3{vnOy#7 zQXfz%0=0}+(BC+5rC&M36#biiKhP})G9Z3mTfW)<_ z<5_^BW6HIfX9XUK_HVchYApqr#bJAtHfH#1Qh!fx4i<>@!q@0>C9xEf-0t4vjpMBD zXy+(4@PD0y_|)qKU^qoC`^~4sns=q${cVDv36xcM>i=_evrykOX_RLf{rrd#exyaM zN|hnt{U_iANCmc+z=DjM=OfJOIty!~%Di=cKf|s5V83p86QYT*Q}jv?Qzl zG-wbBEWTK_Z8nPbKL#ga4lL1;0a#D9`7cHA!z3Sb(6aJHwf|`BiR-_%zdaG=)qJi;I zZU4^*$|QkM?#z3^?f>kBk0w;17YjU8hUKaW`Y$GtQS}~}6G%#0j+7BG_>n=Qqt*V! zvGKgy$Ixnfl$6{bV0$l7VU#Wo3`DCuXZw*sgTL`?qY(GuZX5UNo~8P>Vw&2VC9uL0 zGh(oipW$7x*O>*L{Q0WaWL7d#z27c+wTQ+kDyVQNE_*3(=bm-t93~@+4aZ zMAZKebTVnywSn~XA%Lr7nO0?}dP!mA)9&cfTE(VTL)MW0A}!uZ!(Djro-Le-pDjD&eA)(A~A=-{UG$H7%*<@f$-xQ z85A%U-gMMAfp`Mw7LQNS|2MDf`_VZf+FEZ;RTq<{eG zeCBU!eq^Tt)j?EER47*l(cS5*4Yv2;9_C8|Ac1g3PHST`f$6ZA0dFtpnl#+??D5;V zk{dklTnL2mg>F3Vb2uKW8xBZ5)0>y{aIM}SI=`QzM6CbT4^B9bFrZ=PLmJwM^h%Co zT9EPRG}%rpWA5Pi0|F-b&-#-H-|3$x{0j_3OuShz?a^e)vG0^=($Lp<+24RzJni0p z(E-=K6*~L_h>QFRl8ZrFa`qdD8*8Z7H}~3ev9sQ0wfFR)J1&BE0Fs5r=!Me)Y5P!4 zY=6B|#ZyWT2sq+PlV|!5gCKF2iNZ#=d+)*ZJXCk8eCS+!KYG>{jG$A$54>L=|CO8* zk`+K@&Qb$BDE=yqNb0|E9OT=q+pTb5@d_Y{O5?ou;>{V6==K~5IlpT(M34t#OQf`M zo#7aB%q_R;CJ3ouRORL>4?lVAW$5py!1fV zS)S?fAV{E3dXZC5pvyG#Ac7-eLe4r4U=j`F%A!bHNa~d;u3VQRwP%&qUEC?&&~cxG zz6DYLjOR--Kqvjhkq9U;4=AyWE0n>Nw%UFiJ`)KDBL0t0P80a65!kmd^qnay#Ppgh zH&RzlQan<-vLnOvc1io7qmpeNE9ek}_xa!H=6hkxZTbxP1TZP!(v`o)i-x>WnC zQ88RW!rTxgi%<*tDI9D*+wmlyxTjNRhIxQD$V*5@^wD>rW8LdnU_;^0pu?U)k8^=~ zxU`Ko`U`y)^#T|9@fjt0wh9Seqt0wmuCt)WGjCh8;Q%DgRyRsGG! zF#HM#p%7tO+K3R`R9@Wb&9$>6%xL=pml~dCZY|Wpk|8E*)O;OZ`uz}ga=l~r24$59 z=hfKrINXuLBaf;WL>R-d#>&qWacAXDnVkM$nzpCSM7ytG`&!>ZeHIr+&3z8f*8?vH z371*-9GT2XFLMlT4miliaaw@h>kQwMq#5Ol?mrFl@rrK;+I{CUPcHK8W+HSQ%hET; zjhn3B5hxK4VaL@)uwl}wmCseB-t zy;>bT;7&gaa=oY8CwjC04h_ZJDLVaw#PebU*Yq1Uvv$z^xixCS>`86kJzL{3w=Rp$yY(|lD6Z45D`*qnNfqZhuTIp1ps@RW+b3QixPuZ zhJg*IbndF1TA*v*bErLR{-MmMks2l27%CWoCCX1GZueMNo)4?XO*#Mm0TU@gm`0qt z3o4iZD`>tDH)np01nSg`J4JV9J%`Yn9t!jT4F~PKUluGhF}IDS?=-$2RWVDZ;e~#~ zonf;J=dqE3)!XzPzQ`2)NNNkiNKUK@yGXx}@laQJdRIKK(jxQh{GWA~1I%QdT1xB> z5OizKoT$SKEf>H=osaj9=8yXEk`T*aWRI%SelAW)(6fNtgrTT%!e6^IImxrbum(l~ z+Psne$>Er)_)~~0wJK9Y$~W-%WY6x$FOw~P1f>+R4JDfR4L znp-8u6qdnad>ay9zS8B39flMl>JIc5SgShyM5$3;One{IE08n&W-ApmUv6yG8gji= zfAr=9)=BBtLs=$hAs>U4@j4a%pe;rOwbMO-pkYr~!-4QU&e}-J%gh4VZRjK(JhPK| z)*X^j?b9p?jM^Crko^f^!@-AZ|2vCdV~H&H?=?7CxQb3KIVS_O9?sH~4g?Yw9cIZK zMVVd7=DDZrVn|?hfKUy7eShSh<*t`hAHGM0n)Do~2SvE>)BxJ-9)%YVXyu1zcJ1RK zn*!9o_ht&-6j#%v*tqx$1z+U;;U|sZR7#) zd|C(E1ZCzx`-SUZ?&tg??WR@X#>LUw+*oH|tC(jGiPS|b=Rjyd3X#DF!9CDvIk=g%D$542MeZ$(yleu8y=f}HsqJRSjBRE zB-fLHDD}K>%lD)=>_+Pav~6hy<&h5kA_{qs+j=@g5?j`sG3kDhED<6H=kma*&xWT> zr0y!8?WE>M1~q=i`V3uf%Of+5B%jWF)6Pwn+||LRb&=#SZCC-naAN=Lv z7wvn8`6#dUls@bE+)~H&M#Wb{;39R?pH>J95*2eLE}|UGe^ZVG*%a5wV3Xw!#wQ|s z-j_$l+Qot^A`%hYD|F{)0P*Hq{_9y>$x9~p zqt(<3I|SC7W!E2E>K!kRA26IDLd^0|Gcj)}_vSb6UQ0c5*5exAVGg@2A#Tf>;uFFwpv)Ae$@siKM4bquq`05%Lq_w3mdWP5$Yk;y6LA

sQ6>0KWi+RM`)c^w>IS> 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 literal 0 HcmV?d00001 diff --git a/docs/images/datasize.png b/docs/images/datasize.png new file mode 100644 index 0000000000000000000000000000000000000000..beb8aad449fc7920b825e49822309820454506b8 GIT binary patch literal 271359 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

?At<+q*Z^z55J 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

n*lwql;;BOoL{VHfWaN=R?qLx=}E_J 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%0DJbw%B_PaF0&f_S>0b_rDze1|K1K>_xB5fO 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\n", + " Overview\n", + "
\n", + "
\n", + " Questions\n", + "

\n", + " Objectives\n", + "
    \n", + "
  • Learn about Holoviews and Xarray for creating interactive plots
  • \n", + "
  • Learn to create interactive maps with Holoviews
  • \n", + "
  • Learn to create multiple interactive plots with holoviews
  • \n", + "
  • Learn to create a 1D line plot with holoviews
  • \n", + "
\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "83d5b756", + "metadata": {}, + "source": [ + "## Context\n", + "\n", + "\n", + "We will be using [HoloViews](https://holoviews.org/), a tool part of the [HoloViz](https://holoviz.org/) ecosystem, with Xarray to visualize the near-surface temperature from CMIP6 CESM2 (monthly dataset).\n", + "\n", + "### Data\n", + "\n", + "We will visualize the same data that have been used in the previous episode.\n", + "\n", + "If the dataset is not present in the same folder as this Jupyter notebook, it will be downloaded from zenodo using `pooch`, a very handy python-based library to download and cache your data files locally (see further info [here](https://www.fatiando.org/pooch/latest/index.html))." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e26e7ca3", + "metadata": {}, + "outputs": [], + "source": [ + "import pooch\n", + "\n", + "tas_file = pooch.retrieve(\n", + " url=\"https://zenodo.org/record/7181714/files/CMIP6_NCAR_CESM2_historical_amon_gn.nc\",\n", + " known_hash=\"md5:5f86251e5bc5ef9b86a3a86cd06a536b\",\n", + " path=f\".\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b35084af", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This episode uses the following main Python packages:\n", + "\n", + "- xarray {cite:ps}`b-xarray-hoyer2017` with [`netCDF4`](https://pypi.org/project/h5netcdf/) and [`h5netcdf`](https://pypi.org/project/h5netcdf/) engines\n", + "- pooch {cite:ps}`b-pooch-Uieda2020`\n", + "- rioxarray {cite:ps}`b-rioxarray-snow2022`\n", + "- matplotlib {cite:ps}`b-matplotlib-Hunter2007`\n", + "- cartopy {cite:ps}`b-cartopy-mo2010`\n", + "- hvplot {cite:ps}`b-holoviews-rudiger2020`\n", + "- geopandas {cite:ps}`b-geopandas-jordahl2020`\n", + "\n", + "Please install these packages if not already available in your Python environment.\n", + "\n", + "### Packages\n", + "\n", + "In this episode, Python packages are imported when we start to use them. However, for best software practices, we recommend you to install and import all the necessary libraries at the top of your Jupyter notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "589df42a", + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr" + ] + }, + { + "cell_type": "markdown", + "id": "e1864936", + "metadata": {}, + "source": [ + "## Open local dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3a4e25c7", + "metadata": {}, + "outputs": [], + "source": [ + "tas_ds = xr.open_dataset(tas_file)" + ] + }, + { + "cell_type": "markdown", + "id": "05647913", + "metadata": {}, + "source": [ + ":::{tip}\n", + "If you get an error with the previous command, check the previous episode where the input file some_hash-CMIP6_NCAR_CESM2_historical_amon_gn.nc is downloaded locally and it is in the same directory as your Jupyter Notebook.\n", + ":::" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c471061b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "    lat_bnds   (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds   (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time, lat, lon) float32 ...\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " lat_bnds (lat, nbnd) float32 ...\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (lon, nbnd) float32 ...\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object ...\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time, lat, lon) float32 ...\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds" + ] + }, + { + "cell_type": "markdown", + "id": "53228b8a", + "metadata": {}, + "source": [ + "## Clipping data according to a polygon\n", + "\n", + "One of the basic concepts in GIS is to clip data using a vector geometry. Xarray is not directly capable of dealing with vectors but thanks to Rioxarray that can be easily achieved.\n", + "Rioxarray extends Xarray with most of the features that Rasterio (GDAL) brings." + ] + }, + { + "cell_type": "markdown", + "id": "72c3884f", + "metadata": {}, + "source": [ + "## Read a shapefile with the Area Of Interest (AOI)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "67a06c9b", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd" + ] + }, + { + "cell_type": "markdown", + "id": "42fa26af", + "metadata": {}, + "source": [ + "We define the area of interest using the Global Administrative Unit Layers [GAUL G2015_2014](https://data.apps.fao.org/map/catalog/srv/eng/catalog.search#/metadata/9c35ba10-5649-41c8-bdfc-eb78e9e65654) provided by FAO-UN (see [Documentation](https://data.apps.fao.org/map/catalog/srv/api/records/9c35ba10-5649-41c8-bdfc-eb78e9e65654/attachments/GAUL2015_Documentation.zip)).\n", + "[`GeoPandas`](https://geopandas.org/en/stable/), a python-based library extending the capabilities of [`Pandas`](https://pandas.pydata.org/) to deal with geometry and spatial operations, will help to manage geodata.\n", + "\n", + "The official data distribution from FAO is through the WFS service (see below how to retrieve data):\n", + "\n", + "```\n", + "GAUL = gpd.read_file('https://data.apps.fao.org/map/gsrv/gsrv1/gaul/wfs?'\n", + " 'service=WFS&version=2.0.0&'\n", + " 'Request=GetFeature&'\n", + " 'TypeNames=gaul:g2015_2014_2&'\n", + " 'srsName=EPSG%3A4326&'\n", + " 'maxFeatures=2500&'\n", + " 'outputFormat=json')\n", + "```\n", + "Unfortunately it seems that the service is pretty slow. As an alternative to this approach the JRC MARS unit is distributing the original dataset that was in shapefile format. To accelerate the fetch we highly recommend to follow this approach.\n", + "\n", + "For the training course, we also created a tiny file containing information about Norway only." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "b9ecc1bf", + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " GAUL = gpd.read_file('Norway.geojson')\n", + "except:\n", + " GAUL = gpd.read_file('zip+https://mars.jrc.ec.europa.eu/asap/files/gaul1_asap.zip') " + ] + }, + { + "cell_type": "markdown", + "id": "c81b3f59", + "metadata": {}, + "source": [ + "Data are organized in a tabular structure. For each element an index, data (made of columns) and a geometry are defined.\n", + "\n", + "Geometries are defined through [shapely](https://shapely.readthedocs.io/en/stable/) geometry objects with three different basic classes:\n", + "\n", + "- Points and Multi-Points\n", + "- Lines and Multi-Lines\n", + "- Polygons and Multi-Polygons" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "b6170902", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
asap1_idname1name1_shrname0asap0_idname0_shrkm2_totkm2_cropkm2_rangean_cropan_rangewater_limgeometry
01238HordalandHordalandNorway173Norway1402163181100MULTIPOLYGON (((5.67021 60.69386, 5.67357 60.6...
11446Nord-troendelagNord-troendelagNorway173Norway2231513449100MULTIPOLYGON (((11.93731 65.10981, 11.88333 65...
21472Soer-TroendelagSoer-TroendelagNorway173Norway1844113134100MULTIPOLYGON (((9.74026 63.62652, 9.72871 63.6...
31426OestfoldOestfoldNorway173Norway412810300100POLYGON ((11.94171 59.69688, 11.89933 59.69182...
41496VestfoldVestfoldNorway173Norway22326232100POLYGON ((10.39417 59.66410, 10.42124 59.62203...
\n", + "
" + ], + "text/plain": [ + " asap1_id name1 name1_shr name0 asap0_id name0_shr \\\n", + "0 1238 Hordaland Hordaland Norway 173 Norway \n", + "1 1446 Nord-troendelag Nord-troendelag Norway 173 Norway \n", + "2 1472 Soer-Troendelag Soer-Troendelag Norway 173 Norway \n", + "3 1426 Oestfold Oestfold Norway 173 Norway \n", + "4 1496 Vestfold Vestfold Norway 173 Norway \n", + "\n", + " km2_tot km2_crop km2_range an_crop an_range water_lim \\\n", + "0 14021 631 81 1 0 0 \n", + "1 22315 1344 9 1 0 0 \n", + "2 18441 1313 4 1 0 0 \n", + "3 4128 1030 0 1 0 0 \n", + "4 2232 623 2 1 0 0 \n", + "\n", + " geometry \n", + "0 MULTIPOLYGON (((5.67021 60.69386, 5.67357 60.6... \n", + "1 MULTIPOLYGON (((11.93731 65.10981, 11.88333 65... \n", + "2 MULTIPOLYGON (((9.74026 63.62652, 9.72871 63.6... \n", + "3 POLYGON ((11.94171 59.69688, 11.89933 59.69182... \n", + "4 POLYGON ((10.39417 59.66410, 10.42124 59.62203... " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "GAUL.head(5)" + ] + }, + { + "cell_type": "markdown", + "id": "90bb9677", + "metadata": {}, + "source": [ + "In the cell below, we subset the polygon geometry in which the `name0` field equals to `Norway`." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "76524c4d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 MULTIPOLYGON (((5.67021 60.69386, 5.67357 60.6...\n", + "1 MULTIPOLYGON (((11.93731 65.10981, 11.88333 65...\n", + "2 MULTIPOLYGON (((9.74026 63.62652, 9.72871 63.6...\n", + "3 POLYGON ((11.94171 59.69688, 11.89933 59.69182...\n", + "4 POLYGON ((10.39417 59.66410, 10.42124 59.62203...\n", + "5 MULTIPOLYGON (((22.69320 70.36594, 22.70137 70...\n", + "6 POLYGON ((8.13729 60.19619, 8.16250 60.19416, ...\n", + "7 MULTIPOLYGON (((13.97719 68.35144, 13.99107 68...\n", + "8 MULTIPOLYGON (((8.01763 63.32659, 7.97557 63.3...\n", + "9 POLYGON ((5.23273 62.19275, 5.25814 62.17775, ...\n", + "10 MULTIPOLYGON (((15.76350 68.74171, 15.77052 68...\n", + "11 POLYGON ((8.29320 61.08945, 8.31227 61.07882, ...\n", + "12 MULTIPOLYGON (((10.64400 59.90339, 10.63911 59...\n", + "13 POLYGON ((8.87194 62.37852, 8.89526 62.35425, ...\n", + "14 POLYGON ((11.13333 62.65833, 11.14690 62.64664...\n", + "15 POLYGON ((7.26296 59.65463, 7.33571 59.63810, ...\n", + "16 POLYGON ((7.02216 59.18047, 7.09886 59.17007, ...\n", + "17 POLYGON ((10.91103 59.92944, 10.89463 59.90425...\n", + "18 POLYGON ((6.51667 59.84167, 6.58167 59.83139, ...\n", + "Name: geometry, dtype: geometry" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "AOI_name = 'Norway'\n", + "AOI = GAUL[GAUL.name0 == AOI_name]\n", + "AOI_poly = AOI.geometry\n", + "AOI_poly" + ] + }, + { + "cell_type": "markdown", + "id": "609afdfe", + "metadata": {}, + "source": [ + "In a second step we set a EPSG:4326 Geodetic coordinate reference system to the polygon geometry. To achieve this we need to rely on rioxarray that extends xarray with the rasterio capabilities. The rio accessor is activated through importing rioxarray as has been done at the top." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fb168af1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:      (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * lat          (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "    lat_bnds     (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n",
+       "  * lon          (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds     (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n",
+       "  * time         (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds    (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id    (member_id) object 'r1i1p1f1'\n",
+       "    spatial_ref  int64 0\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas          (member_id, time, lat, lon) float32 ...\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " lat_bnds (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + " spatial_ref int64 0\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time, lat, lon) float32 ...\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.rio.write_crs(4326, inplace=True)" + ] + }, + { + "cell_type": "markdown", + "id": "3aa126da", + "metadata": {}, + "source": [ + "Once this has been done we can clip the data with the polygon that has been obtained through geopandas at the beginning of the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "692ffe23", + "metadata": {}, + "outputs": [], + "source": [ + "tas_AOI = tas_ds.tas.rio.clip(AOI_poly, crs=4326)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f3aaf0e9-cb9b-4cb7-bd00-9ce7b2763aaf", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 13, lon: 21)>\n",
+       "array([[[[      nan, 268.18625, 263.21762, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan, 261.4894 , 259.58054, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [270.17227, 260.38303, 257.93915, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         ...,\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ..., 262.4566 , 262.70773,\n",
+       "          262.97894]],\n",
+       "\n",
+       "        [[      nan, 274.94598, 272.1838 , ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan, 272.17087, 270.1366 , ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [276.09476, 271.16046, 269.08408, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "...\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ..., 268.94943, 268.97186,\n",
+       "          269.03262]],\n",
+       "\n",
+       "        [[      nan, 280.14944, 277.7591 , ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan, 276.78476, 274.67453, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [280.1642 , 275.19962, 273.14044, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         ...,\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ...,       nan,       nan,\n",
+       "                nan],\n",
+       "         [      nan,       nan,       nan, ..., 268.04092, 268.38055,\n",
+       "          268.77368]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat          (lat) float64 58.9 59.84 60.79 61.73 ... 68.32 69.27 70.21\n",
+       "  * lon          (lon) float64 5.0 6.25 7.5 8.75 10.0 ... 26.25 27.5 28.75 30.0\n",
+       "  * time         (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id    (member_id) object 'r1i1p1f1'\n",
+       "    spatial_ref  int64 0\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array([[[[ nan, 268.18625, 263.21762, ..., nan, nan,\n", + " nan],\n", + " [ nan, 261.4894 , 259.58054, ..., nan, nan,\n", + " nan],\n", + " [270.17227, 260.38303, 257.93915, ..., nan, nan,\n", + " nan],\n", + " ...,\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., 262.4566 , 262.70773,\n", + " 262.97894]],\n", + "\n", + " [[ nan, 274.94598, 272.1838 , ..., nan, nan,\n", + " nan],\n", + " [ nan, 272.17087, 270.1366 , ..., nan, nan,\n", + " nan],\n", + " [276.09476, 271.16046, 269.08408, ..., nan, nan,\n", + " nan],\n", + "...\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., 268.94943, 268.97186,\n", + " 269.03262]],\n", + "\n", + " [[ nan, 280.14944, 277.7591 , ..., nan, nan,\n", + " nan],\n", + " [ nan, 276.78476, 274.67453, ..., nan, nan,\n", + " nan],\n", + " [280.1642 , 275.19962, 273.14044, ..., nan, nan,\n", + " nan],\n", + " ...,\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., nan, nan,\n", + " nan],\n", + " [ nan, nan, nan, ..., 268.04092, 268.38055,\n", + " 268.77368]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 58.9 59.84 60.79 61.73 ... 68.32 69.27 70.21\n", + " * lon (lon) float64 5.0 6.25 7.5 8.75 10.0 ... 26.25 27.5 28.75 30.0\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + " spatial_ref int64 0\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI" + ] + }, + { + "cell_type": "markdown", + "id": "cc11b522", + "metadata": {}, + "source": [ + "## Visualize with matplotlib" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "8b8a5882", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import cartopy.crs as ccrs" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7d57475f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Near surface temperature in Norway')" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(1, figsize=[20, 10])\n", + "\n", + "# We're using cartopy and are plotting in PlateCarree projection \n", + "# (see documentation on cartopy)\n", + "ax = plt.subplot(1, 1, 1, projection=ccrs.AlbersEqualArea(central_longitude=20.0, central_latitude=40.0))\n", + "#ax.set_extent([15.5, 27.5, 36, 41], crs=ccrs.PlateCarree()) # lon1 lon2 lat1 lat2\n", + "ax.coastlines(resolution='10m')\n", + "ax.gridlines(draw_labels=True)\n", + "\n", + "tas_AOI.sel(time='1980-06-15').plot(ax=ax, transform=ccrs.PlateCarree(), cmap=\"coolwarm\")\n", + "\n", + "# One way to customize your title\n", + "plt.title(\"Near surface temperature in Norway\", fontsize=18)" + ] + }, + { + "cell_type": "markdown", + "id": "95420290", + "metadata": {}, + "source": [ + "## Visualization with HoloViews" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "ee46dfd3", + "metadata": {}, + "outputs": [ + { + "data": { + "application/javascript": [ + "(function(root) {\n", + " function now() {\n", + " return new Date();\n", + " }\n", + "\n", + " var force = true;\n", + "\n", + " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", + " root._bokeh_onload_callbacks = [];\n", + " root._bokeh_is_loading = undefined;\n", + " }\n", + "\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " root._bokeh_timeout = Date.now() + 5000;\n", + " root._bokeh_failed_load = false;\n", + " }\n", + "\n", + " function run_callbacks() {\n", + " try {\n", + " root._bokeh_onload_callbacks.forEach(function(callback) {\n", + " if (callback != null)\n", + " callback();\n", + " });\n", + " } finally {\n", + " delete root._bokeh_onload_callbacks\n", + " }\n", + " console.debug(\"Bokeh: all callbacks have finished\");\n", + " }\n", + "\n", + " function load_libs(css_urls, js_urls, js_modules, callback) {\n", + " if (css_urls == null) css_urls = [];\n", + " if (js_urls == null) js_urls = [];\n", + " if (js_modules == null) js_modules = [];\n", + "\n", + " root._bokeh_onload_callbacks.push(callback);\n", + " if (root._bokeh_is_loading > 0) {\n", + " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", + " return null;\n", + " }\n", + " if (js_urls.length === 0 && js_modules.length === 0) {\n", + " run_callbacks();\n", + " return null;\n", + " }\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + "\n", + " function on_load() {\n", + " root._bokeh_is_loading--;\n", + " if (root._bokeh_is_loading === 0) {\n", + " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", + " run_callbacks()\n", + " }\n", + " }\n", + "\n", + " function on_error() {\n", + " console.error(\"failed to load \" + url);\n", + " }\n", + "\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var skip = [];\n", + " if (window.requirejs) {\n", + " window.requirejs.config({'packages': {}, 'paths': {'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"gridstack\"], function(GridStack) {\n", + "\twindow.GridStack = GridStack\n", + "\ton_load()\n", + " })\n", + " require([\"notyf\"], function() {\n", + "\ton_load()\n", + " })\n", + " root._bokeh_is_loading = css_urls.length + 2;\n", + " } else {\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n", + " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", + " } for (var i = 0; i < js_urls.length; i++) {\n", + " var url = js_urls[i];\n", + " if (skip.indexOf(url) >= 0) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " for (var i = 0; i < js_modules.length; i++) {\n", + " var url = js_modules[i];\n", + " if (skip.indexOf(url) >= 0) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.src = url;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " document.head.appendChild(element);\n", + " }\n", + " if (!js_urls.length && !js_modules.length) {\n", + " on_load()\n", + " }\n", + " };\n", + "\n", + " function inject_raw_css(css) {\n", + " const element = document.createElement(\"style\");\n", + " element.appendChild(document.createTextNode(css));\n", + " document.body.appendChild(element);\n", + " }\n", + "\n", + " var js_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.js\"];\n", + " var js_modules = [];\n", + " var css_urls = [\"https://cdn.jsdelivr.net/npm/notyf@3/notyf.min.css\", \"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css\"];\n", + " var inline_js = [ function(Bokeh) {\n", + " inject_raw_css(\".bk.alert {\\n padding: 0.75rem 1.25rem;\\n border: 1px solid transparent;\\n border-radius: 0.25rem;\\n /* Don't set margin because that will not render correctly! */\\n /* margin-bottom: 1rem; */\\n margin-top: 15px;\\n margin-bottom: 15px;\\n}\\n.bk.alert a {\\n color: rgb(11, 46, 19); /* #002752; */\\n font-weight: 700;\\n text-decoration: rgb(11, 46, 19);\\n text-decoration-color: rgb(11, 46, 19);\\n text-decoration-line: none;\\n text-decoration-style: solid;\\n text-decoration-thickness: auto;\\n }\\n.bk.alert a:hover {\\n color: rgb(11, 46, 19);\\n font-weight: 700;\\n text-decoration: underline;\\n}\\n\\n.bk.alert-primary {\\n color: #004085;\\n background-color: #cce5ff;\\n border-color: #b8daff;\\n}\\n.bk.alert-primary hr {\\n border-top-color: #9fcdff;\\n}\\n\\n.bk.alert-secondary {\\n color: #383d41;\\n background-color: #e2e3e5;\\n border-color: #d6d8db;\\n }\\n.bk.alert-secondary hr {\\n border-top-color: #c8cbcf;\\n}\\n\\n.bk.alert-success {\\n color: #155724;\\n background-color: #d4edda;\\n border-color: #c3e6cb;\\n }\\n\\n.bk.alert-success hr {\\n border-top-color: #b1dfbb;\\n}\\n\\n.bk.alert-info {\\n color: #0c5460;\\n background-color: #d1ecf1;\\n border-color: #bee5eb;\\n }\\n.bk.alert-info hr {\\n border-top-color: #abdde5;\\n}\\n\\n.bk.alert-warning {\\n color: #856404;\\n background-color: #fff3cd;\\n border-color: #ffeeba;\\n }\\n\\n.bk.alert-warning hr {\\n border-top-color: #ffe8a1;\\n}\\n\\n.bk.alert-danger {\\n color: #721c24;\\n background-color: #f8d7da;\\n border-color: #f5c6cb;\\n}\\n.bk.alert-danger hr {\\n border-top-color: #f1b0b7;\\n}\\n\\n.bk.alert-light {\\n color: #818182;\\n background-color: #fefefe;\\n border-color: #fdfdfe;\\n }\\n.bk.alert-light hr {\\n border-top-color: #ececf6;\\n}\\n\\n.bk.alert-dark {\\n color: #1b1e21;\\n background-color: #d6d8d9;\\n border-color: #c6c8ca;\\n }\\n.bk.alert-dark hr {\\n border-top-color: #b9bbbe;\\n}\\n\\n\\n/* adjf\\u00e6l */\\n\\n.bk.alert-primary a {\\n color: #002752;\\n}\\n\\n.bk.alert-secondary a {\\n color: #202326;\\n}\\n\\n\\n.bk.alert-success a {\\n color: #0b2e13;\\n}\\n\\n\\n.bk.alert-info a {\\n color: #062c33;\\n}\\n\\n\\n.bk.alert-warning a {\\n color: #533f03;\\n}\\n\\n\\n.bk.alert-danger a {\\n color: #491217;\\n}\\n\\n.bk.alert-light a {\\n color: #686868;\\n}\\n\\n.bk.alert-dark a {\\n color: #040505;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".codehilite .hll { background-color: #ffffcc }\\n.codehilite { background: #f8f8f8; }\\n.codehilite .c { color: #408080; font-style: italic } /* Comment */\\n.codehilite .err { border: 1px solid #FF0000 } /* Error */\\n.codehilite .k { color: #008000; font-weight: bold } /* Keyword */\\n.codehilite .o { color: #666666 } /* Operator */\\n.codehilite .ch { color: #408080; font-style: italic } /* Comment.Hashbang */\\n.codehilite .cm { color: #408080; font-style: italic } /* Comment.Multiline */\\n.codehilite .cp { color: #BC7A00 } /* Comment.Preproc */\\n.codehilite .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */\\n.codehilite .c1 { color: #408080; font-style: italic } /* Comment.Single */\\n.codehilite .cs { color: #408080; font-style: italic } /* Comment.Special */\\n.codehilite .gd { color: #A00000 } /* Generic.Deleted */\\n.codehilite .ge { font-style: italic } /* Generic.Emph */\\n.codehilite .gr { color: #FF0000 } /* Generic.Error */\\n.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */\\n.codehilite .gi { color: #00A000 } /* Generic.Inserted */\\n.codehilite .go { color: #888888 } /* Generic.Output */\\n.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\\n.codehilite .gs { font-weight: bold } /* Generic.Strong */\\n.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\\n.codehilite .gt { color: #0044DD } /* Generic.Traceback */\\n.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\\n.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\\n.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\\n.codehilite .kp { color: #008000 } /* Keyword.Pseudo */\\n.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\\n.codehilite .kt { color: #B00040 } /* Keyword.Type */\\n.codehilite .m { color: #666666 } /* Literal.Number */\\n.codehilite .s { color: #BA2121 } /* Literal.String */\\n.codehilite .na { color: #7D9029 } /* Name.Attribute */\\n.codehilite .nb { color: #008000 } /* Name.Builtin */\\n.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */\\n.codehilite .no { color: #880000 } /* Name.Constant */\\n.codehilite .nd { color: #AA22FF } /* Name.Decorator */\\n.codehilite .ni { color: #999999; font-weight: bold } /* Name.Entity */\\n.codehilite .ne { color: #D2413A; font-weight: bold } /* Name.Exception */\\n.codehilite .nf { color: #0000FF } /* Name.Function */\\n.codehilite .nl { color: #A0A000 } /* Name.Label */\\n.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\\n.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */\\n.codehilite .nv { color: #19177C } /* Name.Variable */\\n.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\\n.codehilite .w { color: #bbbbbb } /* Text.Whitespace */\\n.codehilite .mb { color: #666666 } /* Literal.Number.Bin */\\n.codehilite .mf { color: #666666 } /* Literal.Number.Float */\\n.codehilite .mh { color: #666666 } /* Literal.Number.Hex */\\n.codehilite .mi { color: #666666 } /* Literal.Number.Integer */\\n.codehilite .mo { color: #666666 } /* Literal.Number.Oct */\\n.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */\\n.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */\\n.codehilite .sc { color: #BA2121 } /* Literal.String.Char */\\n.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */\\n.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\\n.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */\\n.codehilite .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */\\n.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */\\n.codehilite .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */\\n.codehilite .sx { color: #008000 } /* Literal.String.Other */\\n.codehilite .sr { color: #BB6688 } /* Literal.String.Regex */\\n.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */\\n.codehilite .ss { color: #19177C } /* Literal.String.Symbol */\\n.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */\\n.codehilite .fm { color: #0000FF } /* Name.Function.Magic */\\n.codehilite .vc { color: #19177C } /* Name.Variable.Class */\\n.codehilite .vg { color: #19177C } /* Name.Variable.Global */\\n.codehilite .vi { color: #19177C } /* Name.Variable.Instance */\\n.codehilite .vm { color: #19177C } /* Name.Variable.Magic */\\n.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */\\n\\n.markdown h1 { margin-block-start: 0.34em }\\n.markdown h2 { margin-block-start: 0.42em }\\n.markdown h3 { margin-block-start: 0.5em }\\n.markdown h4 { margin-block-start: 0.67em }\\n.markdown h5 { margin-block-start: 0.84em }\\n.markdown h6 { margin-block-start: 1.17em }\\n.markdown ul { padding-inline-start: 2em }\\n.markdown ol { padding-inline-start: 2em }\\n.markdown strong { font-weight: 600 }\\n.markdown a { color: -webkit-link }\\n.markdown a { color: -moz-hyperlinkText }\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\"table.panel-df {\\n margin-left: auto;\\n margin-right: auto;\\n border: none;\\n border-collapse: collapse;\\n border-spacing: 0;\\n color: black;\\n font-size: 12px;\\n table-layout: fixed;\\n width: 100%;\\n}\\n\\n.panel-df tr, .panel-df th, .panel-df td {\\n text-align: right;\\n vertical-align: middle;\\n padding: 0.5em 0.5em !important;\\n line-height: normal;\\n white-space: normal;\\n max-width: none;\\n border: none;\\n}\\n\\n.panel-df tbody {\\n display: table-row-group;\\n vertical-align: middle;\\n border-color: inherit;\\n}\\n\\n.panel-df tbody tr:nth-child(odd) {\\n background: #f5f5f5;\\n}\\n\\n.panel-df thead {\\n border-bottom: 1px solid black;\\n vertical-align: bottom;\\n}\\n\\n.panel-df tr:hover {\\n background: lightblue !important;\\n cursor: pointer;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.pn-loading:before {\\n position: absolute;\\n height: 100%;\\n width: 100%;\\n content: '';\\n z-index: 1000;\\n background-color: rgb(255,255,255,0.50);\\n border-color: lightgray;\\n background-repeat: no-repeat;\\n background-position: center;\\n background-size: auto 50%;\\n border-width: 1px;\\n cursor: progress;\\n}\\n.bk.pn-loading.arcs:hover:before {\\n cursor: progress;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-row,\\n.json-formatter-row a,\\n.json-formatter-row a:hover {\\n color: black;\\n text-decoration: none;\\n}\\n.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-row .json-formatter-string,\\n.json-formatter-row .json-formatter-stringifiable {\\n color: green;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-row .json-formatter-number {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-boolean {\\n color: red;\\n}\\n.json-formatter-row .json-formatter-null {\\n color: #855A00;\\n}\\n.json-formatter-row .json-formatter-undefined {\\n color: #ca0b69;\\n}\\n.json-formatter-row .json-formatter-function {\\n color: #FF20ED;\\n}\\n.json-formatter-row .json-formatter-date {\\n background-color: rgba(0, 0, 0, 0.05);\\n}\\n.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: blue;\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-bracket {\\n color: blue;\\n}\\n.json-formatter-row .json-formatter-key {\\n color: #00008B;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n.json-formatter-dark.json-formatter-row {\\n font-family: monospace;\\n}\\n.json-formatter-dark.json-formatter-row,\\n.json-formatter-dark.json-formatter-row a,\\n.json-formatter-dark.json-formatter-row a:hover {\\n color: white;\\n text-decoration: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-row {\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty {\\n opacity: 0.5;\\n margin-left: 1rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty:after {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-object:after {\\n content: \\\"No properties\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-children.json-formatter-empty.json-formatter-array:after {\\n content: \\\"[]\\\";\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-string,\\n.json-formatter-dark.json-formatter-row .json-formatter-stringifiable {\\n color: #31F031;\\n white-space: pre;\\n word-wrap: break-word;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-number {\\n color: #66C2FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-boolean {\\n color: #EC4242;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-null {\\n color: #EEC97D;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-undefined {\\n color: #ef8fbe;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-function {\\n color: #FD48CB;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-date {\\n background-color: rgba(255, 255, 255, 0.05);\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-url {\\n text-decoration: underline;\\n color: #027BFF;\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-bracket {\\n color: #9494FF;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-key {\\n color: #23A0DB;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler-link {\\n cursor: pointer;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler {\\n line-height: 1.2rem;\\n font-size: 0.7rem;\\n vertical-align: middle;\\n opacity: 0.6;\\n cursor: pointer;\\n padding-right: 0.2rem;\\n}\\n.json-formatter-dark.json-formatter-row .json-formatter-toggler:after {\\n display: inline-block;\\n transition: transform 100ms ease-in;\\n content: \\\"\\\\25BA\\\";\\n}\\n.json-formatter-dark.json-formatter-row > a > .json-formatter-preview-text {\\n opacity: 0;\\n transition: opacity 0.15s ease-in;\\n font-style: italic;\\n}\\n.json-formatter-dark.json-formatter-row:hover > a > .json-formatter-preview-text {\\n opacity: 0.6;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-toggler-link .json-formatter-toggler:after {\\n transform: rotate(90deg);\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > .json-formatter-children:after {\\n display: inline-block;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open > a > .json-formatter-preview-text {\\n display: none;\\n}\\n.json-formatter-dark.json-formatter-row.json-formatter-open.json-formatter-empty:after {\\n display: block;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.debugger-card {\\n border: 1px solid rgba(0,0,0,1);\\n color: rgba(255,255,255,1);\\n background-color: rgba(0,0,0,1);\\n border-radius: 0rem;\\n}\\n.bk.debugger-card-header {\\n align-items: center;\\n text-align: left;\\n background-color: rgba(0, 0, 0, 1)!important;\\n color: rgba(255, 255, 255, 1);\\n border-radius: 0rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.debugger-card-button {\\n background-color: transparent;\\n color: rgba(255, 255, 255, 1);\\n margin-left: 0.5em;\\n}\\n.bk.debugger-card-title {\\n align-items: center;\\n text-align: left;\\n color: rgba(255, 255, 255, 1);\\n font-size: 1em;\\n overflow-wrap: break-word;\\n}\\n\\n/* Special debugger buttons for clearing and saving */\\n.bk button.special_btn {\\n width: 25px;\\n height: 25px;\\n background-color: black;\\n color: white;\\n display: inline-block;\\n}\\n\\n\\n.bk button.special_btn .tooltiptext {\\n visibility: hidden;\\n width: 100px;\\n background-color: darkgray;\\n color: #fff;\\n text-align: center;\\n border-radius: 6px;\\n padding: 5px 0;\\n\\n /* Position the tooltip */\\n position: relative;\\n z-index: 1;\\n top: 100%;\\n left: 100%;\\n margin-left: -100px;\\n display: block;\\n}\\n\\n.bk button.special_btn:hover .tooltiptext {\\n visibility: visible;\\n}\\n\\n\\n\\n.bk button.clear_btn:hover .shown { display: none;}\\n.bk button.clear_btn:hover:before { content: \\\"\\u2611\\\"; }\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.card {\\n border: 1px solid rgba(0,0,0,.125);\\n border-radius: 0.25rem;\\n}\\n.bk.accordion {\\n border: 1px solid rgba(0,0,0,.125);\\n}\\n.bk.card-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0.25rem;\\n display: inline-flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.accordion-header {\\n align-items: center;\\n background-color: rgba(0, 0, 0, 0.03);\\n border-radius: 0;\\n display: flex;\\n justify-content: start;\\n width: 100%;\\n}\\n.bk.card-button {\\n background-color: transparent;\\n margin-left: 0.5em;\\n}\\n.bk.card-header-row {\\n position: relative !important;\\n}\\n.bk.card-title {\\n align-items: center;\\n font-size: 1.4em;\\n font-weight: bold;\\n overflow-wrap: break-word;\\n}\\n.bk.card-header-row > .bk {\\n overflow-wrap: break-word;\\n text-align: center;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\".bk.panel-widget-box {\\n min-height: 20px;\\n background-color: #f5f5f5;\\n border: 1px solid #e3e3e3;\\n border-radius: 4px;\\n -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n box-shadow: inset 0 1px 1px rgba(0,0,0,.05);\\n overflow-x: hidden;\\n overflow-y: hidden;\\n}\\n\\n.scrollable {\\n overflow: scroll;\\n}\\n\\nprogress {\\n appearance: none;\\n -moz-appearance: none;\\n -webkit-appearance: none;\\n border: none;\\n height: 20px;\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n color: royalblue;\\n position: relative;\\n margin: 0 0 1.5em;\\n}\\n\\nprogress[value]::-webkit-progress-bar {\\n background-color: whiteSmoke;\\n border-radius: 3px;\\n box-shadow: 0 2px 3px rgba(0,0,0,.5) inset;\\n}\\n\\nprogress[value]::-webkit-progress-value {\\n position: relative;\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress.active:not([value])::before {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress[value]::-moz-progress-bar {\\n background-size: 35px 20px, 100% 100%, 100% 100%;\\n border-radius:3px;\\n}\\n\\nprogress:not([value])::-moz-progress-bar {\\n border-radius:3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\nprogress.active:not([value])::-moz-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.active:not([value])::-webkit-progress-bar {\\n background-position: 10%;\\n animation-name: stripes;\\n animation-duration: 3s;\\n animation-timing-function: linear;\\n animation-iteration-count: infinite;\\n}\\n\\nprogress.primary[value]::-webkit-progress-value { background-color: #007bff; }\\nprogress.primary:not([value])::before { background-color: #007bff; }\\nprogress.primary:not([value])::-webkit-progress-bar { background-color: #007bff; }\\nprogress.primary::-moz-progress-bar { background-color: #007bff; }\\n\\nprogress.secondary[value]::-webkit-progress-value { background-color: #6c757d; }\\nprogress.secondary:not([value])::before { background-color: #6c757d; }\\nprogress.secondary:not([value])::-webkit-progress-bar { background-color: #6c757d; }\\nprogress.secondary::-moz-progress-bar { background-color: #6c757d; }\\n\\nprogress.success[value]::-webkit-progress-value { background-color: #28a745; }\\nprogress.success:not([value])::before { background-color: #28a745; }\\nprogress.success:not([value])::-webkit-progress-bar { background-color: #28a745; }\\nprogress.success::-moz-progress-bar { background-color: #28a745; }\\n\\nprogress.danger[value]::-webkit-progress-value { background-color: #dc3545; }\\nprogress.danger:not([value])::before { background-color: #dc3545; }\\nprogress.danger:not([value])::-webkit-progress-bar { background-color: #dc3545; }\\nprogress.danger::-moz-progress-bar { background-color: #dc3545; }\\n\\nprogress.warning[value]::-webkit-progress-value { background-color: #ffc107; }\\nprogress.warning:not([value])::before { background-color: #ffc107; }\\nprogress.warning:not([value])::-webkit-progress-bar { background-color: #ffc107; }\\nprogress.warning::-moz-progress-bar { background-color: #ffc107; }\\n\\nprogress.info[value]::-webkit-progress-value { background-color: #17a2b8; }\\nprogress.info:not([value])::before { background-color: #17a2b8; }\\nprogress.info:not([value])::-webkit-progress-bar { background-color: #17a2b8; }\\nprogress.info::-moz-progress-bar { background-color: #17a2b8; }\\n\\nprogress.light[value]::-webkit-progress-value { background-color: #f8f9fa; }\\nprogress.light:not([value])::before { background-color: #f8f9fa; }\\nprogress.light:not([value])::-webkit-progress-bar { background-color: #f8f9fa; }\\nprogress.light::-moz-progress-bar { background-color: #f8f9fa; }\\n\\nprogress.dark[value]::-webkit-progress-value { background-color: #343a40; }\\nprogress.dark:not([value])::-webkit-progress-bar { background-color: #343a40; }\\nprogress.dark:not([value])::before { background-color: #343a40; }\\nprogress.dark::-moz-progress-bar { background-color: #343a40; }\\n\\nprogress:not([value])::-webkit-progress-bar {\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\nprogress:not([value])::before {\\n content:\\\" \\\";\\n position:absolute;\\n height: 20px;\\n top:0;\\n left:0;\\n right:0;\\n bottom:0;\\n border-radius: 3px;\\n background: linear-gradient(-45deg, transparent 33%, rgba(0, 0, 0, 0.2) 33%, rgba(0, 0, 0, 0.2) 66%, transparent 66%) left/2.5em 1.5em;\\n}\\n\\n@keyframes stripes {\\n from {background-position: 0%}\\n to {background-position: 100%}\\n}\\n\\n.bk-root .bk.loader {\\n overflow: hidden;\\n}\\n\\n.bk.loader::after {\\n content: \\\"\\\";\\n border-radius: 50%;\\n -webkit-mask-image: radial-gradient(transparent 50%, rgba(0, 0, 0, 1) 54%);\\n width: 100%;\\n height: 100%;\\n left: 0;\\n top: 0;\\n position: absolute;\\n}\\n\\n.bk-root .bk.loader.dark::after {\\n background: #0f0f0f;\\n}\\n\\n.bk-root .bk.loader.light::after {\\n background: #f0f0f0;\\n}\\n\\n.bk-root .bk.loader.spin::after {\\n animation: spin 2s linear infinite;\\n}\\n\\n.bk-root div.bk.loader.spin.primary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #dc3545 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.warning-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.dark-light::after {\\n background: linear-gradient(135deg, #f0f0f0 50%, transparent 50%), linear-gradient(45deg, #f0f0f0 50%, #343a40 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.primary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #007bff 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.secondary-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #6c757d 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.success-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #28a745 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.danger-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #dc3545 50%)\\n}\\n\\n.bk-root div.bk.loader.spin.warning-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #ffc107 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.info-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #17a2b8 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.light-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #f8f9fa 50%);\\n}\\n\\n.bk-root div.bk.loader.spin.dark-dark::after {\\n background: linear-gradient(135deg, #0f0f0f 50%, transparent 50%), linear-gradient(45deg, #0f0f0f 50%, #343a40 50%);\\n}\\n\\n/* Safari */\\n@-webkit-keyframes spin {\\n 0% { -webkit-transform: rotate(0deg); }\\n 100% { -webkit-transform: rotate(360deg); }\\n}\\n\\n@keyframes spin {\\n 0% { transform: rotate(0deg); }\\n 100% { transform: rotate(360deg); }\\n}\\n\\n.dot div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n background-color: #fff;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled div {\\n height: 100%;\\n width: 100%;\\n border: 1px solid #000 !important;\\n border-radius: 50%;\\n display: inline-block;\\n}\\n\\n.dot-filled.primary div {\\n background-color: #007bff;\\n}\\n\\n.dot-filled.secondary div {\\n background-color: #6c757d;\\n}\\n\\n.dot-filled.success div {\\n background-color: #28a745;\\n}\\n\\n.dot-filled.danger div {\\n background-color: #dc3545;\\n}\\n\\n.dot-filled.warning div {\\n background-color: #ffc107;\\n}\\n\\n.dot-filled.info div {\\n background-color: #17a2b8;\\n}\\n\\n.dot-filled.dark div {\\n background-color: #343a40;\\n}\\n\\n.dot-filled.light div {\\n background-color: #f8f9fa;\\n}\\n\\n/* Slider editor */\\n.slider-edit .bk-input-group .bk-input {\\n border: 0;\\n border-radius: 0;\\n min-height: 0;\\n padding-left: 0;\\n padding-right: 0;\\n font-weight: bold;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper {\\n display: contents;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-up {\\n top: -6px;\\n}\\n\\n.slider-edit .bk-input-group .bk-spin-wrapper .bk.bk-spin-btn-down {\\n bottom: 3px;\\n}\\n\\n/* JSON Pane */\\n.bk-root .json-formatter-row .json-formatter-string, .bk-root .json-formatter-row .json-formatter-stringifiable {\\n white-space: pre-wrap;\\n}\\n\\n.ql-bubble .ql-editor {\\n border: 1px solid #ccc;\\n}\\n\");\n", + " }, function(Bokeh) {\n", + " inject_raw_css(\"\\n .bk.pn-loading.arcs:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0ibWFyZ2luOiBhdXRvOyBiYWNrZ3JvdW5kOiBub25lOyBkaXNwbGF5OiBibG9jazsgc2hhcGUtcmVuZGVyaW5nOiBhdXRvOyIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4gIDxjaXJjbGUgY3g9IjUwIiBjeT0iNTAiIHI9IjMyIiBzdHJva2Utd2lkdGg9IjgiIHN0cm9rZT0iI2MzYzNjMyIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+ICAgIDxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgdHlwZT0icm90YXRlIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCI+PC9hbmltYXRlVHJhbnNmb3JtPiAgPC9jaXJjbGU+PC9zdmc+\\\");\\n background-size: auto calc(min(50%, 400px));\\n }\\n \");\n", + " }, function(Bokeh) {\n", + " /* BEGIN bokeh.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " const bokeh = factory();\n", + " bokeh.__bokeh__ = true;\n", + " if (typeof root.Bokeh === \"undefined\" || typeof root.Bokeh.__bokeh__ === \"undefined\") {\n", + " root.Bokeh = bokeh;\n", + " }\n", + " const Bokeh = root.Bokeh;\n", + " Bokeh[bokeh.version] = bokeh;\n", + " })(this, function() {\n", + " let define;\n", + " const parent_require = typeof require === \"function\" && require\n", + " return (function(modules, entry, aliases, externals) {\n", + " if (aliases === undefined) aliases = {};\n", + " if (externals === undefined) externals = {};\n", + "\n", + " const cache = {};\n", + "\n", + " const normalize = function(name) {\n", + " if (typeof name === \"number\")\n", + " return name;\n", + "\n", + " if (name === \"bokehjs\")\n", + " return entry;\n", + "\n", + " if (!externals[name]) {\n", + " const prefix = \"@bokehjs/\"\n", + " if (name.slice(0, prefix.length) === prefix)\n", + " name = name.slice(prefix.length)\n", + " }\n", + "\n", + " const alias = aliases[name]\n", + " if (alias != null)\n", + " return alias;\n", + "\n", + " const trailing = name.length > 0 && name[name.lenght-1] === \"/\";\n", + " const index = aliases[name + (trailing ? \"\" : \"/\") + \"index\"];\n", + " if (index != null)\n", + " return index;\n", + "\n", + " return name;\n", + " }\n", + "\n", + " const require = function(name) {\n", + " let mod = cache[name];\n", + " if (!mod) {\n", + " const id = normalize(name);\n", + "\n", + " mod = cache[id];\n", + " if (!mod) {\n", + " if (!modules[id]) {\n", + " if (externals[id] === false || (externals[id] == true && parent_require)) {\n", + " try {\n", + " mod = {exports: externals[id] ? parent_require(id) : {}};\n", + " cache[id] = cache[name] = mod;\n", + " return mod.exports;\n", + " } catch (e) {}\n", + " }\n", + "\n", + " const err = new Error(\"Cannot find module '\" + name + \"'\");\n", + " err.code = 'MODULE_NOT_FOUND';\n", + " throw err;\n", + " }\n", + "\n", + " mod = {exports: {}};\n", + " cache[id] = cache[name] = mod;\n", + "\n", + " function __esModule() {\n", + " Object.defineProperty(mod.exports, \"__esModule\", {value: true});\n", + " }\n", + "\n", + " function __esExport(name, value) {\n", + " Object.defineProperty(mod.exports, name, {\n", + " enumerable: true, get: function () { return value; }\n", + " });\n", + " }\n", + "\n", + " modules[id].call(mod.exports, require, mod, mod.exports, __esModule, __esExport);\n", + " } else {\n", + " cache[name] = mod;\n", + " }\n", + " }\n", + "\n", + " return mod.exports;\n", + " }\n", + " require.resolve = function(name) {\n", + " return \"\"\n", + " }\n", + "\n", + " const main = require(entry);\n", + " main.require = require;\n", + "\n", + " if (typeof Proxy !== \"undefined\") {\n", + " // allow Bokeh.loader[\"@bokehjs/module/name\"] syntax\n", + " main.loader = new Proxy({}, {\n", + " get: function(_obj, module) {\n", + " return require(module);\n", + " }\n", + " });\n", + " }\n", + "\n", + " main.register_plugin = function(plugin_modules, plugin_entry, plugin_aliases, plugin_externals) {\n", + " if (plugin_aliases === undefined) plugin_aliases = {};\n", + " if (plugin_externals === undefined) plugin_externals = {};\n", + "\n", + " for (let name in plugin_modules) {\n", + " modules[name] = plugin_modules[name];\n", + " }\n", + "\n", + " for (let name in plugin_aliases) {\n", + " aliases[name] = plugin_aliases[name];\n", + " }\n", + "\n", + " for (let name in plugin_externals) {\n", + " externals[name] = plugin_externals[name];\n", + " }\n", + "\n", + " const plugin = require(plugin_entry);\n", + "\n", + " for (let name in plugin) {\n", + " main[name] = plugin[name];\n", + " }\n", + "\n", + " return plugin;\n", + " }\n", + "\n", + " return main;\n", + " })\n", + " ([\n", + " function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(2),n)},\n", + " function _(t,e,r,n,o){n();var a=function(t,e){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])},a(t,e)};r.__extends=function(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Class extends value \"+String(e)+\" is not a constructor or null\");function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)};function i(t){var e=\"function\"==typeof Symbol&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&\"number\"==typeof t.length)return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function c(t,e){var r=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,o,a=r.call(t),i=[];try{for(;(void 0===e||e-- >0)&&!(n=a.next()).done;)i.push(n.value)}catch(t){o={error:t}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}function u(t){return this instanceof u?(this.v=t,this):new u(t)}r.__assign=function(){return r.__assign=Object.assign||function(t){for(var e,r=1,n=arguments.length;r=0;c--)(o=t[c])&&(i=(a<3?o(i):a>3?o(e,r,i):o(e,r))||i);return a>3&&i&&Object.defineProperty(e,r,i),i},r.__param=function(t,e){return function(r,n){e(r,n,t)}},r.__metadata=function(t,e){if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.metadata)return Reflect.metadata(t,e)},r.__awaiter=function(t,e,r,n){return new(r||(r=Promise))((function(o,a){function i(t){try{u(n.next(t))}catch(t){a(t)}}function c(t){try{u(n.throw(t))}catch(t){a(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(i,c)}u((n=n.apply(t,e||[])).next())}))},r.__generator=function(t,e){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},\"function\"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(a){return function(c){return function(a){if(r)throw new TypeError(\"Generator is already executing.\");for(;i;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]1||c(t,e)}))})}function c(t,e){try{(r=o[t](e)).value instanceof u?Promise.resolve(r.value.v).then(f,l):s(a[0][2],r)}catch(t){s(a[0][3],t)}var r}function f(t){c(\"next\",t)}function l(t){c(\"throw\",t)}function s(t,e){t(e),a.shift(),a.length&&c(a[0][0],a[0][1])}},r.__asyncDelegator=function(t){var e,r;return e={},n(\"next\"),n(\"throw\",(function(t){throw t})),n(\"return\"),e[Symbol.iterator]=function(){return this},e;function n(n,o){e[n]=t[n]?function(e){return(r=!r)?{value:u(t[n](e)),done:\"return\"===n}:o?o(e):e}:o}},r.__asyncValues=function(t){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var e,r=t[Symbol.asyncIterator];return r?r.call(t):(t=i(t),e={},n(\"next\"),n(\"throw\"),n(\"return\"),e[Symbol.asyncIterator]=function(){return this},e);function n(r){e[r]=t[r]&&function(e){return new Promise((function(n,o){(function(t,e,r,n){Promise.resolve(n).then((function(e){t({value:e,done:r})}),e)})(n,o,(e=t[r](e)).done,e.value)}))}}},r.__makeTemplateObject=function(t,e){return Object.defineProperty?Object.defineProperty(t,\"raw\",{value:e}):t.raw=e,t};var f=Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e};r.__importStar=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)\"default\"!==n&&Object.prototype.hasOwnProperty.call(t,n)&&(0,r.__createBinding)(e,t,n);return f(e,t),e},r.__importDefault=function(t){return t&&t.__esModule?t:{default:t}},r.__classPrivateFieldGet=function(t,e,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"==typeof e?t!==e||!n:!e.has(t))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(t):n?n.value:e.get(t)},r.__classPrivateFieldSet=function(t,e,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"==typeof e?t!==e||!o:!e.has(t))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(t,r):o?o.value=r:e.set(t,r),r}},\n", + " function _(e,t,o,s,l){s();const n=e(1);l(\"version\",e(3).version),l(\"index\",e(4).index),o.embed=(0,n.__importStar)(e(4)),o.protocol=(0,n.__importStar)(e(406)),o._testing=(0,n.__importStar)(e(407));var r=e(19);l(\"logger\",r.logger),l(\"set_log_level\",r.set_log_level),l(\"settings\",e(28).settings),l(\"Models\",e(7).Models),l(\"documents\",e(5).documents),l(\"safely\",e(408).safely)},\n", + " function _(n,i,o,c,e){c(),o.version=\"2.4.3\"},\n", + " function _(e,o,t,n,s){n();const d=e(5),r=e(19),_=e(34),c=e(13),i=e(8),a=e(16),u=e(397),l=e(399),m=e(398);var f=e(397);s(\"add_document_standalone\",f.add_document_standalone),s(\"index\",f.index),s(\"add_document_from_session\",e(399).add_document_from_session);var g=e(404);async function w(e,o,t,n){(0,i.isString)(e)&&(e=JSON.parse((0,_.unescape)(e)));const s={};for(const[o,t]of(0,c.entries)(e))s[o]=d.Document.from_json(t);const a=[];for(const e of o){const o=(0,m._resolve_element)(e),d=(0,m._resolve_root_elements)(e);if(null!=e.docid)a.push(await(0,u.add_document_standalone)(s[e.docid],o,d,e.use_for_title));else{if(null==e.token)throw new Error(\"Error rendering Bokeh items: either 'docid' or 'token' was expected.\");{const s=(0,l._get_ws_url)(t,n);r.logger.debug(`embed: computed ws url: ${s}`);try{a.push(await(0,l.add_document_from_session)(s,e.token,o,d,e.use_for_title)),console.log(\"Bokeh items were rendered successfully\")}catch(e){console.log(\"Error rendering Bokeh items:\",e)}}}}return a}s(\"embed_items_notebook\",g.embed_items_notebook),s(\"kernels\",g.kernels),s(\"BOKEH_ROOT\",e(398).BOKEH_ROOT),t.embed_item=async function(e,o){const t={},n=(0,_.uuid4)();t[n]=e.doc,null==o&&(o=e.target_id);const s=document.getElementById(o);null!=s&&s.classList.add(m.BOKEH_ROOT);const d={roots:{[e.root_id]:o},root_ids:[e.root_id],docid:n};await(0,a.defer)();const[r]=await w(t,[d]);return r},t.embed_items=async function(e,o,t,n){return await(0,a.defer)(),w(e,o,t,n)}},\n", + " function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(6),o),(0,a.__exportStar)(t(35),o)},\n", + " function _(e,t,s,o,n){o();const i=e(1),r=e(7),l=e(3),_=e(19),a=e(251),c=e(14),d=e(30),h=e(15),f=e(17),u=e(31),m=e(29),g=e(9),v=e(13),p=(0,i.__importStar)(e(77)),w=e(26),b=e(8),y=e(309),k=e(75),M=e(53),j=e(396),z=e(35);class S{constructor(e){this.document=e,this.session=null,this.subscribed_models=new Set}send_event(e){const t=new z.MessageSentEvent(this.document,\"bokeh_event\",e.to_json());this.document._trigger_on_change(t)}trigger(e){for(const t of this.subscribed_models)null!=e.origin&&e.origin!=t||t._process_event(e)}}s.EventManager=S,S.__name__=\"EventManager\",s.documents=[],s.DEFAULT_TITLE=\"Bokeh Application\";class E{constructor(e){var t;s.documents.push(this),this._init_timestamp=Date.now(),this._resolver=null!==(t=null==e?void 0:e.resolver)&&void 0!==t?t:new r.ModelResolver,this._title=s.DEFAULT_TITLE,this._roots=[],this._all_models=new Map,this._all_models_freeze_count=0,this._callbacks=new Map,this._message_callbacks=new Map,this.event_manager=new S(this),this.idle=new h.Signal0(this,\"idle\"),this._idle_roots=new WeakMap,this._interactive_timestamp=null,this._interactive_plot=null}get layoutables(){return this._roots.filter((e=>e instanceof y.LayoutDOM))}get is_idle(){for(const e of this.layoutables)if(!this._idle_roots.has(e))return!1;return!0}notify_idle(e){this._idle_roots.set(e,!0),this.is_idle&&(_.logger.info(`document idle at ${Date.now()-this._init_timestamp} ms`),this.event_manager.send_event(new a.DocumentReady),this.idle.emit())}clear(){this._push_all_models_freeze();try{for(;this._roots.length>0;)this.remove_root(this._roots[0])}finally{this._pop_all_models_freeze()}}interactive_start(e,t=null){null==this._interactive_plot&&(this._interactive_plot=e,this._interactive_plot.trigger_event(new a.LODStart)),this._interactive_finalize=t,this._interactive_timestamp=Date.now()}interactive_stop(){null!=this._interactive_plot&&(this._interactive_plot.trigger_event(new a.LODEnd),null!=this._interactive_finalize&&this._interactive_finalize()),this._interactive_plot=null,this._interactive_timestamp=null,this._interactive_finalize=null}interactive_duration(){return null==this._interactive_timestamp?-1:Date.now()-this._interactive_timestamp}destructively_move(e){if(e===this)throw new Error(\"Attempted to overwrite a document with itself\");e.clear();const t=(0,g.copy)(this._roots);this.clear();for(const e of t)if(null!=e.document)throw new Error(`Somehow we didn't detach ${e}`);if(0!=this._all_models.size)throw new Error(`this._all_models still had stuff in it: ${this._all_models}`);for(const s of t)e.add_root(s);e.set_title(this._title)}_push_all_models_freeze(){this._all_models_freeze_count+=1}_pop_all_models_freeze(){this._all_models_freeze_count-=1,0===this._all_models_freeze_count&&this._recompute_all_models()}_invalidate_all_models(){_.logger.debug(\"invalidating document models\"),0===this._all_models_freeze_count&&this._recompute_all_models()}_recompute_all_models(){let e=new Set;for(const t of this._roots)e=p.union(e,t.references());const t=new Set(this._all_models.values()),s=p.difference(t,e),o=p.difference(e,t),n=new Map;for(const t of e)n.set(t.id,t);for(const e of s)e.detach_document();for(const e of o)e.attach_document(this);this._all_models=n}roots(){return this._roots}add_root(e,t){if(_.logger.debug(`Adding root: ${e}`),!(0,g.includes)(this._roots,e)){this._push_all_models_freeze();try{this._roots.push(e)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootAddedEvent(this,e,t))}}remove_root(e,t){const s=this._roots.indexOf(e);if(!(s<0)){this._push_all_models_freeze();try{this._roots.splice(s,1)}finally{this._pop_all_models_freeze()}this._trigger_on_change(new z.RootRemovedEvent(this,e,t))}}title(){return this._title}set_title(e,t){e!==this._title&&(this._title=e,this._trigger_on_change(new z.TitleChangedEvent(this,e,t)))}get_model_by_id(e){var t;return null!==(t=this._all_models.get(e))&&void 0!==t?t:null}get_model_by_name(e){const t=[];for(const s of this._all_models.values())s instanceof M.Model&&s.name==e&&t.push(s);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(`Multiple models are named '${e}'`)}}on_message(e,t){const s=this._message_callbacks.get(e);null==s?this._message_callbacks.set(e,new Set([t])):s.add(t)}remove_on_message(e,t){var s;null===(s=this._message_callbacks.get(e))||void 0===s||s.delete(t)}_trigger_on_message(e,t){const s=this._message_callbacks.get(e);if(null!=s)for(const e of s)e(t)}on_change(e,t=!1){this._callbacks.has(e)||this._callbacks.set(e,t)}remove_on_change(e){this._callbacks.delete(e)}_trigger_on_change(e){for(const[t,s]of this._callbacks)if(!s&&e instanceof z.DocumentEventBatch)for(const s of e.events)t(s);else t(e)}_notify_change(e,t,s,o,n){this._trigger_on_change(new z.ModelChangedEvent(this,e,t,s,o,null==n?void 0:n.setter_id,null==n?void 0:n.hint))}static _instantiate_object(e,t,s,o){const n=Object.assign(Object.assign({},s),{id:e,__deferred__:!0});return new(o.get(t))(n)}static _instantiate_references_json(e,t,s){var o;const n=new Map;for(const i of e){const e=i.id,r=i.type,l=null!==(o=i.attributes)&&void 0!==o?o:{};let _=t.get(e);null==_&&(_=E._instantiate_object(e,r,l,s),null!=i.subtype&&_.set_subtype(i.subtype)),n.set(_.id,_)}return n}static _resolve_refs(e,t,s,o){function n(e){var i;if((0,f.is_ref)(e)){const o=null!==(i=t.get(e.id))&&void 0!==i?i:s.get(e.id);if(null!=o)return o;throw new Error(`reference ${JSON.stringify(e)} isn't known (not in Document?)`)}if((0,u.is_NDArray_ref)(e)){const{buffer:t,dtype:s,shape:n}=(0,u.decode_NDArray)(e,o);return(0,m.ndarray)(t,{dtype:s,shape:n})}return(0,b.isArray)(e)?function(e){const t=[];for(const s of e)t.push(n(s));return t}(e):(0,b.isPlainObject)(e)?function(e){const t={};for(const[s,o]of(0,v.entries)(e))t[s]=n(o);return t}(e):e}return n(e)}static _initialize_references_json(e,t,s,o){const n=new Map;for(const{id:i,attributes:r}of e){const e=!t.has(i),l=e?s.get(i):t.get(i),_=E._resolve_refs(r,t,s,o);l.setv(_,{silent:!0}),n.set(i,{instance:l,is_new:e})}const i=[],r=new Set;function l(e){if(e instanceof c.HasProps){if(n.has(e.id)&&!r.has(e.id)){r.add(e.id);const{instance:t,is_new:s}=n.get(e.id),{attributes:o}=t;for(const e of(0,v.values)(o))l(e);s&&(t.finalize(),i.push(t))}}else if((0,b.isArray)(e))for(const t of e)l(t);else if((0,b.isPlainObject)(e))for(const t of(0,v.values)(e))l(t)}for(const e of n.values())l(e.instance);for(const e of i)e.connect_signals()}static _event_for_attribute_change(e,t,s,o,n){if(o.get_model_by_id(e.id).property(t).syncable){const i={kind:\"ModelChanged\",model:{id:e.id},attr:t,new:s};return c.HasProps._json_record_references(o,s,n,{recursive:!0}),i}return null}static _events_to_sync_objects(e,t,s,o){const n=Object.keys(e.attributes),i=Object.keys(t.attributes),r=(0,g.difference)(n,i),l=(0,g.difference)(i,n),a=(0,g.intersection)(n,i),c=[];for(const e of r)_.logger.warn(`Server sent key ${e} but we don't seem to have it in our JSON`);for(const n of l){const i=t.attributes[n];c.push(E._event_for_attribute_change(e,n,i,s,o))}for(const n of a){const i=e.attributes[n],r=t.attributes[n];null==i&&null==r||(null==i||null==r?c.push(E._event_for_attribute_change(e,n,r,s,o)):\"data\"==n||(0,w.is_equal)(i,r)||c.push(E._event_for_attribute_change(e,n,r,s,o)))}return c.filter((e=>null!=e))}static _compute_patch_since_json(e,t){const s=t.to_json(!1);function o(e){const t=new Map;for(const s of e.roots.references)t.set(s.id,s);return t}const n=o(e),i=new Map,r=[];for(const t of e.roots.root_ids)i.set(t,n.get(t)),r.push(t);const l=o(s),_=new Map,a=[];for(const e of s.roots.root_ids)_.set(e,l.get(e)),a.push(e);if(r.sort(),a.sort(),(0,g.difference)(r,a).length>0||(0,g.difference)(a,r).length>0)throw new Error(\"Not implemented: computing add/remove of document roots\");const c=new Set;let h=[];for(const e of t._all_models.keys())if(n.has(e)){const s=E._events_to_sync_objects(n.get(e),l.get(e),t,c);h=h.concat(s)}const f=new d.Serializer({include_defaults:!1});return f.to_serializable([...c]),{references:[...f.definitions],events:h}}to_json_string(e=!0){return JSON.stringify(this.to_json(e))}to_json(e=!0){const t=new d.Serializer({include_defaults:e}),s=t.to_serializable(this._roots);return{version:l.version,title:this._title,roots:{root_ids:s.map((e=>e.id)),references:[...t.definitions]}}}static from_json_string(e){const t=JSON.parse(e);return E.from_json(t)}static from_json(e){_.logger.debug(\"Creating Document from JSON\");const t=e.version,s=-1!==t.indexOf(\"+\")||-1!==t.indexOf(\"-\"),o=`Library versions: JS (${l.version}) / Python (${t})`;s||l.version.replace(/-(dev|rc)\\./,\"$1\")==t?_.logger.debug(o):(_.logger.warn(\"JS/Python version mismatch\"),_.logger.warn(o));const n=new r.ModelResolver;null!=e.defs&&(0,j.resolve_defs)(e.defs,n);const i=e.roots,a=i.root_ids,c=i.references,d=E._instantiate_references_json(c,new Map,n);E._initialize_references_json(c,new Map,d,new Map);const h=new E({resolver:n});h._push_all_models_freeze();for(const e of a){const t=d.get(e);null!=t&&h.add_root(t)}return h._pop_all_models_freeze(),h.set_title(e.title),h}replace_with_json(e){E.from_json(e).destructively_move(this)}create_json_patch_string(e){return JSON.stringify(this.create_json_patch(e))}create_json_patch(e){for(const t of e)if(t.document!=this)throw new Error(\"Cannot create a patch using events from a different document\");const t=new d.Serializer,s=t.to_serializable(e);for(const e of this._all_models.values())t.remove_def(e);return{events:s,references:[...t.definitions]}}apply_json_patch(e,t=new Map,s){const o=e.references,n=e.events,i=E._instantiate_references_json(o,this._all_models,this._resolver);t instanceof Map||(t=new Map(t));for(const e of n)switch(e.kind){case\"RootAdded\":case\"RootRemoved\":case\"ModelChanged\":{const t=e.model.id,s=this._all_models.get(t);if(null!=s)i.set(t,s);else if(!i.has(t))throw _.logger.warn(`Got an event for unknown model ${e.model}\"`),new Error(\"event model wasn't known\");break}}const r=new Map(this._all_models),l=new Map;for(const[e,t]of i)r.has(e)||l.set(e,t);E._initialize_references_json(o,r,l,t);for(const e of n)switch(e.kind){case\"MessageSent\":{const{msg_type:s,msg_data:o}=e;let n;if(void 0===o){if(1!=t.size)throw new Error(\"expected exactly one buffer\");{const[[,e]]=t;n=e}}else n=E._resolve_refs(o,r,l,t);this._trigger_on_message(s,n);break}case\"ModelChanged\":{const o=e.model.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot apply patch to ${o} which is not in the document`);const i=e.attr,_=E._resolve_refs(e.new,r,l,t);n.setv({[i]:_},{setter_id:s});break}case\"ColumnDataChanged\":{const o=e.column_source.id,n=this._all_models.get(o);if(null==n)throw new Error(`Cannot stream to ${o} which is not in the document`);const i=E._resolve_refs(e.new,new Map,new Map,t);if(null!=e.cols)for(const e in n.data)e in i||(i[e]=n.data[e]);n.setv({data:i},{setter_id:s,check_eq:!1});break}case\"ColumnsStreamed\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot stream to ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot stream to non-ColumnDataSource\");const n=e.data,i=e.rollover;o.stream(n,i,s);break}case\"ColumnsPatched\":{const t=e.column_source.id,o=this._all_models.get(t);if(null==o)throw new Error(`Cannot patch ${t} which is not in the document`);if(!(o instanceof k.ColumnDataSource))throw new Error(\"Cannot patch non-ColumnDataSource\");const n=e.patches;o.patch(n,s);break}case\"RootAdded\":{const t=e.model.id,o=i.get(t);this.add_root(o,s);break}case\"RootRemoved\":{const t=e.model.id,o=i.get(t);this.remove_root(o,s);break}case\"TitleChanged\":this.set_title(e.title,s);break;default:throw new Error(`Unknown patch event ${JSON.stringify(e)}`)}}}s.Document=E,E.__name__=\"Document\"},\n", + " function _(e,o,s,r,t){r();const l=e(1),i=e(8),d=e(13),n=e(14);s.overrides={};const a=new Map;s.Models=e=>{const o=s.Models.get(e);if(null!=o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)},s.Models.get=e=>{var o;return null!==(o=s.overrides[e])&&void 0!==o?o:a.get(e)},s.Models.register=(e,o)=>{s.overrides[e]=o},s.Models.unregister=e=>{delete s.overrides[e]},s.Models.register_models=(e,o=!1,s)=>{var r;if(null!=e)for(const t of(0,i.isArray)(e)?e:(0,d.values)(e))if(r=t,(0,i.isObject)(r)&&r.prototype instanceof n.HasProps){const e=t.__qualified__;o||!a.has(e)?a.set(e,t):null!=s?s(e):console.warn(`Model '${e}' was already registered`)}},s.register_models=s.Models.register_models,s.Models.registered_names=()=>[...a.keys()];class _{constructor(){this._known_models=new Map}get(e,o){var r;const t=null!==(r=s.Models.get(e))&&void 0!==r?r:this._known_models.get(e);if(null!=t)return t;if(void 0!==o)return o;throw new Error(`Model '${e}' does not exist. This could be due to a widget or a custom model not being registered before first usage.`)}register(e){const o=e.__qualified__;null==this.get(o,null)?this._known_models.set(o,e):console.warn(`Model '${o}' was already registered with this resolver`)}}s.ModelResolver=_,_.__name__=\"ModelResolver\";const g=(0,l.__importStar)(e(38));(0,s.register_models)(g);const u=(0,l.__importStar)(e(392));(0,s.register_models)(u)},\n", + " function _(n,t,r,e,i){e();\n", + " // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " const o=n(9),u=Object.prototype.toString;function c(n){return!0===n||!1===n||\"[object Boolean]\"===u.call(n)}function f(n){return\"[object Number]\"===u.call(n)}function l(n){return\"[object String]\"===u.call(n)}function s(n){return\"symbol\"==typeof n}function a(n){const t=typeof n;return\"function\"===t||\"object\"===t&&!!n}function b(n){return a(n)&&void 0!==n[Symbol.iterator]}r.isBoolean=c,r.isNumber=f,r.isInteger=function(n){return f(n)&&Number.isInteger(n)},r.isString=l,r.isSymbol=s,r.isPrimitive=function(n){return null===n||c(n)||f(n)||l(n)||s(n)},r.isFunction=function(n){return\"[object Function]\"===u.call(n)},r.isArray=function(n){return Array.isArray(n)},r.isArrayOf=function(n,t){return(0,o.every)(n,t)},r.isArrayableOf=function(n,t){for(let r=0,e=n.length;r0,\"'step' must be a positive number\"),null==t&&(t=n,n=0);const{max:r,ceil:o,abs:i}=Math,c=n<=t?e:-e,f=r(o(i(t-n)/e),0),s=new Array(f);for(let t=0;t=0?t:n.length+t]},e.zip=function(...n){if(0==n.length)return[];const t=(0,c.min)(n.map((n=>n.length))),e=n.length,r=new Array(t);for(let o=0;on.length))),r=Array(e);for(let n=0;nn[t]))},e.argmax=function(n){return(0,c.max_by)(m(n.length),(t=>n[t]))},e.sort_by=function(n,t){const e=n.map(((n,e)=>({value:n,index:e,key:t(n)})));return e.sort(((n,t)=>{const e=n.key,r=t.key;if(e!==r){if(e>r||void 0===e)return 1;if(en.value))},e.uniq=function(n){const t=new Set;for(const e of n)t.add(e);return[...t]},e.uniq_by=function(n,t){const e=[],r=[];for(const o of n){const n=t(o);l(r,n)||(r.push(n),e.push(o))}return e},e.union=function(...n){const t=new Set;for(const e of n)for(const n of e)t.add(n);return[...t]},e.intersection=function(n,...t){const e=[];n:for(const r of n)if(!l(e,r)){for(const n of t)if(!l(n,r))continue n;e.push(r)}return e},e.difference=function(n,...t){const e=a(t);return n.filter((n=>!l(e,n)))},e.remove_at=function(n,t){const e=s(n);return e.splice(t,1),e},e.remove_by=function(n,t){for(let e=0;e2*a;)n-=2*a;return n}function c(n,t){return u(n-t)}function f(){return Math.random()}function i(n){switch(n){case\"deg\":return a/180;case\"rad\":return 1;case\"grad\":return a/200;case\"turn\":return 2*a}}r.angle_norm=u,r.angle_dist=c,r.angle_between=function(n,t,r,e=!1){const o=c(t,r);if(0==o)return!1;if(o==2*a)return!0;const f=u(n),i=c(t,f)<=o&&c(f,r)<=o;return e?!i:i},r.random=f,r.randomIn=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},r.atan2=function(n,t){return Math.atan2(t[1]-n[1],t[0]-n[0])},r.radians=function(n){return n*(a/180)},r.degrees=function(n){return n/(a/180)},r.resolve_angle=function(n,t){return-i(t)*n},r.to_radians_coeff=i,r.rnorm=function(n,t){let r,e;for(;r=f(),e=f(),e=(2*e-1)*Math.sqrt(1/Math.E*2),!(-4*r*r*Math.log(r)>=e*e););let o=e/r;return o=n+t*o,o},r.clamp=function(n,t,r){return nr?r:n},r.log=function(n,t=Math.E){return Math.log(n)/Math.log(t)},r.float32_epsilon=1.1920928955078125e-7},\n", + " function _(r,n,e,o,s){o();class t extends Error{}e.AssertionError=t,t.__name__=\"AssertionError\",e.assert=function(r,n){if(!(!0===r||!1!==r&&r()))throw new t(null!=n?n:\"Assertion failed\")},e.unreachable=function(){throw new Error(\"unreachable code\")}},\n", + " function _(n,t,e,r,o){r();const i=n(10);function l(n,t,e,...r){const o=n.length;t<0&&(t+=o),t<0?t=0:t>o&&(t=o),null==e||e>o-t?e=o-t:e<0&&(e=0);const i=o-e+r.length,l=new n.constructor(i);let u=0;for(;u0?0:r-1;for(;o>=0&&ot[t.length-1])return t.length;let e=0,r=t.length-1;for(;r-e!=1;){const o=e+Math.floor((r-e)/2);n>=t[o]?e=o:r=o}return e}e.is_empty=function(n){return 0==n.length},e.copy=function(n){return Array.isArray(n)?n.slice():new n.constructor(n)},e.splice=l,e.head=u,e.insert=function(n,t,e){return l(n,e,0,t)},e.append=function(n,t){return l(n,n.length,0,t)},e.prepend=function(n,t){return l(n,0,0,t)},e.indexOf=function(n,t){for(let e=0,r=n.length;ee&&(e=t);return e},e.minmax=function(n){let t,e=1/0,r=-1/0;for(let o=0,i=n.length;or&&(r=t));return[e,r]},e.minmax2=function(n,t){let e,r,o=1/0,i=-1/0,l=1/0,u=-1/0;const c=Math.min(n.length,t.length);for(let f=0;fi&&(i=e),ru&&(u=r));return[o,i,l,u]},e.min_by=function(n,t){if(0==n.length)throw new Error(\"min_by() called with an empty array\");let e=n[0],r=t(e);for(let o=1,i=n.length;or&&(e=i,r=l)}return e},e.sum=function(n){let t=0;for(let e=0,r=n.length;et[r]=n+e),0),t},e.every=function(n,t){for(let e=0,r=n.length;e(n-t)/r))}},\n", + " function _(t,e,n,c,o){c();const s=t(9),{hasOwnProperty:r}=Object.prototype;function i(t){return Object.keys(t).length}function u(t){return 0==i(t)}n.keys=Object.keys,n.values=Object.values,n.entries=Object.entries,n.extend=Object.assign,n.clone=function(t){return Object.assign({},t)},n.merge=function(t,e){const n=Object.create(Object.prototype),c=(0,s.concat)([Object.keys(t),Object.keys(e)]);for(const o of c){const c=r.call(t,o)?t[o]:[],i=r.call(e,o)?e[o]:[];n[o]=(0,s.union)(c,i)}return n},n.size=i,n.is_empty=u,n.isEmpty=u,n.to_object=function(t){const e={};for(const[n,c]of t)e[n]=c;return e}},\n", + " function _(e,t,s,n,r){n();const i=e(1);var o;const c=e(15),a=e(17),_=(0,i.__importStar)(e(18)),h=(0,i.__importStar)(e(21)),u=e(34),l=e(13),f=e(8),p=e(26),d=e(30),g=e(35),y=e(26),v=e(36),m=e(37),b=(0,i.__importStar)(e(21));class w extends((0,c.Signalable)()){constructor(e={}){var t,s;super(),this._subtype=void 0,this.document=null,this.destroyed=new c.Signal0(this,\"destroyed\"),this.change=new c.Signal0(this,\"change\"),this.transformchange=new c.Signal0(this,\"transformchange\"),this.exprchange=new c.Signal0(this,\"exprchange\"),this.properties={},this._watchers=new WeakMap,this._pending=!1,this._changing=!1;const n=e instanceof Map?e.get.bind(e):t=>e[t];this.id=null!==(t=n(\"id\"))&&void 0!==t?t:(0,u.uniqueId)();for(const[e,{type:t,default_value:s,options:r}]of(0,l.entries)(this._props)){let i;t instanceof _.PropertyAlias?Object.defineProperty(this.properties,e,{get:()=>this.properties[t.attr],configurable:!1,enumerable:!1}):(i=t instanceof h.Kind?new _.PrimitiveProperty(this,e,t,s,n(e),r):new t(this,e,h.Any,s,n(e),r),this.properties[e]=i)}null!==(s=n(\"__deferred__\"))&&void 0!==s&&s||(this.finalize(),this.connect_signals())}get is_syncable(){return!0}set type(e){console.warn(\"prototype.type = 'ModelName' is deprecated, use static __name__ instead\"),this.constructor.__name__=e}get type(){return this.constructor.__qualified__}static get __qualified__(){const{__module__:e,__name__:t}=this;return null!=e?`${e}.${t}`:t}static get[Symbol.toStringTag](){return this.__name__}static _fix_default(e,t){if(void 0===e||(0,f.isFunction)(e))return e;if((0,f.isPrimitive)(e))return()=>e;{const t=new m.Cloner;return()=>t.clone(e)}}static define(e){for(const[t,s]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){if(null!=this.prototype._props[t])throw new Error(`attempted to redefine property '${this.prototype.type}.${t}'`);if(null!=this.prototype[t])throw new Error(`attempted to redefine attribute '${this.prototype.type}.${t}'`);Object.defineProperty(this.prototype,t,{get(){return this.properties[t].get_value()},set(e){return this.setv({[t]:e}),this},configurable:!1,enumerable:!0});const[e,n,r={}]=s,i={type:e,default_value:this._fix_default(n,t),options:r},o=Object.assign({},this.prototype._props);o[t]=i,this.prototype._props=o}}static internal(e){const t={};for(const[s,n]of(0,l.entries)((0,f.isFunction)(e)?e(b):e)){const[e,r,i={}]=n;t[s]=[e,r,Object.assign(Object.assign({},i),{internal:!0})]}this.define(t)}static mixins(e){function t(e,t){const s={};for(const[n,r]of(0,l.entries)(t))s[e+n]=r;return s}const s={},n=[];for(const r of(0,f.isArray)(e)?e:[e])if((0,f.isArray)(r)){const[e,i]=r;(0,l.extend)(s,t(e,i)),n.push([e,i])}else{const e=r;(0,l.extend)(s,e),n.push([\"\",e])}this.define(s),this.prototype._mixins=[...this.prototype._mixins,...n]}static override(e){for(const[t,s]of(0,l.entries)(e)){const e=this._fix_default(s,t),n=this.prototype._props[t];if(null==n)throw new Error(`attempted to override nonexistent '${this.prototype.type}.${t}'`);const r=Object.assign({},this.prototype._props);r[t]=Object.assign(Object.assign({},n),{default_value:e}),this.prototype._props=r}}toString(){return`${this.type}(${this.id})`}property(e){const t=this.properties[e];if(null!=t)return t;throw new Error(`unknown property ${this.type}.${e}`)}get attributes(){const e={};for(const t of this)e[t.attr]=t.get_value();return e}[m.clone](e){const t=new Map;for(const s of this)s.dirty&&t.set(s.attr,e.clone(s.get_value()));return new this.constructor(t)}[y.equals](e,t){for(const s of this){const n=e.property(s.attr);if(!t.eq(s.get_value(),n.get_value()))return!1}return!0}[v.pretty](e){const t=e.token,s=[];for(const n of this)if(n.dirty){const r=n.get_value();s.push(`${n.attr}${t(\":\")} ${e.to_string(r)}`)}return`${this.constructor.__qualified__}${t(\"(\")}${t(\"{\")}${s.join(`${t(\",\")} `)}${t(\"}\")}${t(\")\")}`}[d.serialize](e){const t=this.ref();e.add_ref(this,t);const s=this.struct();for(const t of this)t.syncable&&(e.include_defaults||t.dirty)&&(s.attributes[t.attr]=e.to_serializable(t.get_value()));return e.add_def(this,s),t}finalize(){for(const e of this){if(!(e instanceof _.VectorSpec||e instanceof _.ScalarSpec))continue;const t=e.get_value();if(null!=t){const{transform:e,expr:s}=t;null!=e&&this.connect(e.change,(()=>this.transformchange.emit())),null!=s&&this.connect(s.change,(()=>this.exprchange.emit()))}}this.initialize()}initialize(){}connect_signals(){}disconnect_signals(){c.Signal.disconnectReceiver(this)}destroy(){this.disconnect_signals(),this.destroyed.emit()}clone(){return(new m.Cloner).clone(this)}changed_for(e){const t=this._watchers.get(e);return this._watchers.set(e,!1),null==t||t}_setv(e,t){const s=t.check_eq,n=[],r=this._changing;this._changing=!0;for(const[t,r]of e)!1!==s&&(0,p.is_equal)(t.get_value(),r)||(t.set_value(r),n.push(t));n.length>0&&(this._watchers=new WeakMap,this._pending=!0);for(const e of n)e.change.emit();if(!r){if(!t.no_change)for(;this._pending;)this._pending=!1,this.change.emit();this._pending=!1,this._changing=!1}}setv(e,t={}){const s=(0,l.entries)(e);if(0==s.length)return;if(!0===t.silent){this._watchers=new WeakMap;for(const[e,t]of s)this.properties[e].set_value(t);return}const n=new Map,r=new Map;for(const[e,t]of s){const s=this.properties[e];n.set(s,t),r.set(s,s.get_value())}this._setv(n,t);const{document:i}=this;if(null!=i){const e=[];for(const[t,s]of r)e.push([t,s,t.get_value()]);for(const[,t,s]of e)if(this._needs_invalidate(t,s)){i._invalidate_all_models();break}this._push_changes(e,t)}}getv(e){return this.property(e).get_value()}ref(){return{id:this.id}}struct(){const e={type:this.type,id:this.id,attributes:{}};return null!=this._subtype&&(e.subtype=this._subtype),e}set_subtype(e){this._subtype=e}*[Symbol.iterator](){yield*(0,l.values)(this.properties)}*syncable_properties(){for(const e of this)e.syncable&&(yield e)}serializable_attributes(){const e={};for(const t of this.syncable_properties())e[t.attr]=t.get_value();return e}static _json_record_references(e,t,s,n){const{recursive:r}=n;if((0,a.is_ref)(t)){const n=e.get_model_by_id(t.id);null==n||s.has(n)||w._value_record_references(n,s,{recursive:r})}else if((0,f.isArray)(t))for(const n of t)w._json_record_references(e,n,s,{recursive:r});else if((0,f.isPlainObject)(t))for(const n of(0,l.values)(t))w._json_record_references(e,n,s,{recursive:r})}static _value_record_references(e,t,s){const{recursive:n}=s;if(e instanceof w){if(!t.has(e)&&(t.add(e),n))for(const s of e.syncable_properties()){const e=s.get_value();w._value_record_references(e,t,{recursive:n})}}else if((0,f.isArray)(e))for(const s of e)w._value_record_references(s,t,{recursive:n});else if((0,f.isPlainObject)(e))for(const s of(0,l.values)(e))w._value_record_references(s,t,{recursive:n})}references(){const e=new Set;return w._value_record_references(this,e,{recursive:!0}),e}_doc_attached(){}_doc_detached(){}attach_document(e){if(null!=this.document&&this.document!=e)throw new Error(\"models must be owned by only a single document\");this.document=e,this._doc_attached()}detach_document(){this._doc_detached(),this.document=null}_needs_invalidate(e,t){const s=new Set;w._value_record_references(t,s,{recursive:!1});const n=new Set;w._value_record_references(e,n,{recursive:!1});for(const e of s)if(!n.has(e))return!0;for(const e of n)if(!s.has(e))return!0;return!1}_push_changes(e,t={}){if(!this.is_syncable)return;const{document:s}=this;if(null==s)return;const{setter_id:n}=t,r=[];for(const[t,i,o]of e)t.syncable&&r.push(new g.ModelChangedEvent(s,this,t.attr,i,o,n));if(0!=r.length){let e;1==r.length?[e]=r:e=new g.DocumentEventBatch(s,r,n),s._trigger_on_change(e)}}on_change(e,t){for(const s of(0,f.isArray)(e)?e:[e])this.connect(s.change,t)}}s.HasProps=w,(o=w).prototype._props={},o.prototype._mixins=[]},\n", + " function _(n,t,e,l,s){l();const i=n(16),o=n(9);class c{constructor(n,t){this.sender=n,this.name=t}connect(n,t=null){u.has(this.sender)||u.set(this.sender,[]);const e=u.get(this.sender);if(null!=g(e,this,n,t))return!1;const l=null!=t?t:n;a.has(l)||a.set(l,[]);const s=a.get(l),i={signal:this,slot:n,context:t};return e.push(i),s.push(i),!0}disconnect(n,t=null){const e=u.get(this.sender);if(null==e||0===e.length)return!1;const l=g(e,this,n,t);if(null==l)return!1;const s=null!=t?t:n,i=a.get(s);return l.signal=null,d(e),d(i),!0}emit(n){var t;const e=null!==(t=u.get(this.sender))&&void 0!==t?t:[];for(const{signal:t,slot:l,context:s}of e)t===this&&l.call(s,n,this.sender)}}e.Signal=c,c.__name__=\"Signal\";class r extends c{emit(){super.emit(void 0)}}e.Signal0=r,r.__name__=\"Signal0\",function(n){function t(n,t){const e=u.get(n);if(null==e||0===e.length)return;const l=a.get(t);if(null!=l&&0!==l.length){for(const t of l){if(null==t.signal)return;t.signal.sender===n&&(t.signal=null)}d(e),d(l)}}function e(n){var t;const e=u.get(n);if(null!=e&&0!==e.length){for(const n of e){if(null==n.signal)return;const e=null!==(t=n.context)&&void 0!==t?t:n.slot;n.signal=null,d(a.get(e))}d(e)}}function l(n,t,e){const l=a.get(n);if(null!=l&&0!==l.length){for(const n of l){if(null==n.signal)return;if(null!=t&&n.slot!=t)continue;const l=n.signal.sender;null!=e&&e.has(l)||(n.signal=null,d(u.get(l)))}d(l)}}function s(n){const t=u.get(n);if(null!=t&&0!==t.length){for(const n of t)n.signal=null;d(t)}const e=a.get(n);if(null!=e&&0!==e.length){for(const n of e)n.signal=null;d(e)}}n.disconnect_between=t,n.disconnect_sender=e,n.disconnect_receiver=l,n.disconnect_all=s,n.disconnectBetween=t,n.disconnectSender=e,n.disconnectReceiver=l,n.disconnectAll=s}(c||(e.Signal=c={})),e.Signalable=function(){return class{connect(n,t){return n.connect(t,this)}disconnect(n,t){return n.disconnect(t,this)}}};const u=new WeakMap,a=new WeakMap;function g(n,t,e,l){return(0,o.find)(n,(n=>n.signal===t&&n.slot===e&&n.context===l))}const f=new Set;function d(n){0===f.size&&(async()=>{await(0,i.defer)(),function(){for(const n of f)(0,o.remove_by)(n,(n=>null==n.signal));f.clear()}()})(),f.add(n)}},\n", + " function _(e,n,t,s,o){s();const r=new MessageChannel,a=new Map;r.port1.onmessage=e=>{const n=e.data,t=a.get(n);if(null!=t)try{t()}finally{a.delete(n)}};let i=1;t.defer=function(){return new Promise((e=>{const n=i++;a.set(n,e),r.port2.postMessage(n)}))},t.wait=function(e){return new Promise((n=>setTimeout(n,e)))}},\n", + " function _(n,t,i,e,c){e();const r=n(8),s=n(13);i.is_ref=function(n){if((0,r.isPlainObject)(n)){const t=(0,s.keys)(n);return 1==t.length&&\"id\"==t[0]}return!1}},\n", + " function _(e,t,n,r,a){r(),n.YCoordinateSeqSeqSeqSpec=n.XCoordinateSeqSeqSeqSpec=n.YCoordinateSeqSpec=n.XCoordinateSeqSpec=n.YCoordinateSpec=n.XCoordinateSpec=n.CoordinateSeqSeqSeqSpec=n.CoordinateSeqSpec=n.CoordinateSpec=n.BaseCoordinateSpec=n.NumberUnitsSpec=n.UnitsSpec=n.DataSpec=n.VectorSpec=n.TextBaselineScalar=n.TextAlignScalar=n.FontStyleScalar=n.FontSizeScalar=n.FontScalar=n.LineDashScalar=n.LineCapScalar=n.LineJoinScalar=n.ArrayScalar=n.NullStringScalar=n.StringScalar=n.NumberScalar=n.ColorScalar=n.AnyScalar=n.ScalarSpec=n.VerticalAlign=n.UpdateMode=n.TooltipAttachment=n.TickLabelOrientation=n.TextureRepetition=n.TextBaseline=n.TextAlign=n.TapBehavior=n.StepMode=n.StartEnd=n.SpatialUnits=n.Sort=n.SizingMode=n.Side=n.RoundingFunction=n.ResetPolicy=n.RenderMode=n.RenderLevel=n.RadiusDimension=n.PointPolicy=n.Place=void 0,n.TextBaselineSpec=n.TextAlignSpec=n.FontStyleSpec=n.FontSizeSpec=n.FontSpec=n.LineDashSpec=n.LineCapSpec=n.LineJoinSpec=n.MarkerSpec=n.ArraySpec=n.NullStringSpec=n.StringSpec=n.AnySpec=n.NDArraySpec=n.ColorSpec=n.ScreenSizeSpec=n.NumberSpec=n.IntSpec=n.BooleanSpec=n.NullDistanceSpec=n.DistanceSpec=n.AngleSpec=void 0;const i=e(1),s=e(15),l=e(19),o=(0,i.__importStar)(e(20)),c=e(24),_=e(9),u=e(12),d=e(10),S=e(22),p=e(27),m=e(8),h=e(28),v=e(29),y=e(33);function x(e){try{return JSON.stringify(e)}catch(t){return e.toString()}}function g(e){return(0,m.isPlainObject)(e)&&(void 0===e.value?0:1)+(void 0===e.field?0:1)+(void 0===e.expr?0:1)==1}a(\"Uniform\",y.Uniform),a(\"UniformScalar\",y.UniformScalar),a(\"UniformVector\",y.UniformVector),n.isSpec=g;class f{constructor(e,t,n,r,a,i={}){var l;let o;if(this.obj=e,this.attr=t,this.kind=n,this.default_value=r,this._dirty=!1,this.change=new s.Signal0(this.obj,\"change\"),this.internal=null!==(l=i.internal)&&void 0!==l&&l,this.convert=i.convert,this.on_update=i.on_update,void 0!==a)o=a,this._dirty=!0;else{const t=this._default_override();if(void 0!==t)o=t;else{if(void 0===r)return void(this.spec={value:null});o=r(e)}}this._update(o)}get is_value(){return void 0!==this.spec.value}get syncable(){return!this.internal}get_value(){return this.spec.value}set_value(e){this._update(e),this._dirty=!0}_default_override(){}get dirty(){return this._dirty}_update(e){var t;if(this.validate(e),null!=this.convert){const t=this.convert(e);void 0!==t&&(e=t)}this.spec={value:e},null===(t=this.on_update)||void 0===t||t.call(this,e,this.obj)}toString(){return`Prop(${this.obj}.${this.attr}, spec: ${x(this.spec)})`}normalize(e){return e}validate(e){if(!this.valid(e))throw new Error(`${this.obj}.${this.attr} given invalid value: ${x(e)}`)}valid(e){return this.kind.valid(e)}_value(e=!0){if(!this.is_value)throw new Error(\"attempted to retrieve property value for property without value specification\");let t=this.normalize([this.spec.value])[0];return null!=this.spec.transform&&e&&(t=this.spec.transform.compute(t)),t}}n.Property=f,f.__name__=\"Property\";class A{constructor(e){this.attr=e}}n.PropertyAlias=A,A.__name__=\"PropertyAlias\",n.Alias=function(e){return new A(e)};class C extends f{}n.PrimitiveProperty=C,C.__name__=\"PrimitiveProperty\";class T extends f{}n.Any=T,T.__name__=\"Any\";class L extends f{valid(e){return(0,m.isArray)(e)||(0,m.isTypedArray)(e)}}n.Array=L,L.__name__=\"Array\";class w extends f{valid(e){return(0,m.isBoolean)(e)}}n.Boolean=w,w.__name__=\"Boolean\";class P extends f{valid(e){return(0,S.is_Color)(e)}}n.Color=P,P.__name__=\"Color\";class b extends f{}n.Instance=b,b.__name__=\"Instance\";class q extends f{valid(e){return(0,m.isNumber)(e)}}n.Number=q,q.__name__=\"Number\";class N extends q{valid(e){return(0,m.isNumber)(e)&&(0|e)==e}}n.Int=N,N.__name__=\"Int\";class z extends q{}n.Angle=z,z.__name__=\"Angle\";class B extends q{valid(e){return(0,m.isNumber)(e)&&0<=e&&e<=1}}n.Percent=B,B.__name__=\"Percent\";class F extends f{valid(e){return(0,m.isString)(e)}}n.String=F,F.__name__=\"String\";class D extends f{valid(e){return null===e||(0,m.isString)(e)}}n.NullString=D,D.__name__=\"NullString\";class U extends F{}n.FontSize=U,U.__name__=\"FontSize\";class M extends F{_default_override(){return h.settings.dev?\"Bokeh\":void 0}}n.Font=M,M.__name__=\"Font\";class R extends f{valid(e){return(0,m.isString)(e)&&(0,_.includes)(this.enum_values,e)}}function k(e){return class extends R{get enum_values(){return[...e]}}}n.EnumProperty=R,R.__name__=\"EnumProperty\",n.Enum=k;class O extends R{get enum_values(){return[...o.Direction]}normalize(e){const t=new Uint8Array(e.length);for(let n=0;n=0}}n.ScreenSizeSpec=fe,fe.__name__=\"ScreenSizeSpec\";class Ae extends ne{materialize(e){return(0,S.encode_rgba)((0,S.color2rgba)(e))}v_materialize(e){if(!(0,v.is_NDArray)(e)){const t=e.length,n=new c.RGBAArray(4*t);let r=0;for(const t of e){const[e,a,i,s]=(0,S.color2rgba)(t);n[r++]=e,n[r++]=a,n[r++]=i,n[r++]=s}return new c.ColorArray(n.buffer)}if(\"uint32\"==e.dtype&&1==e.dimension)return(0,p.to_big_endian)(e);if(\"uint8\"==e.dtype&&1==e.dimension){const[t]=e.shape,n=new c.RGBAArray(4*t);let r=0;for(const t of e)n[r++]=t,n[r++]=t,n[r++]=t,n[r++]=255;return new c.ColorArray(n.buffer)}if(\"uint8\"==e.dtype&&2==e.dimension){const[t,n]=e.shape;if(4==n)return new c.ColorArray(e.buffer);if(3==n){const r=new c.RGBAArray(4*t);for(let a=0,i=0;a0){let o=r[e];return null==o&&(r[e]=o=new v(e,l)),o}throw new TypeError(\"Logger.get() expects a non-empty string name and an optional log-level\")}get level(){return this.get_level()}get_level(){return this._log_level}set_level(e){if(e instanceof i)this._log_level=e;else{if(!(0,s.isString)(e)||null==v.log_levels[e])throw new Error(\"Logger.set_level() expects a log-level object or a string name of a log-level\");this._log_level=v.log_levels[e]}const l=`[${this._name}]`;for(const[e,o]of(0,g.entries)(v.log_levels))o.level\",\"*\"),t.HTTPMethod=(0,a.Enum)(\"POST\",\"GET\"),t.HexTileOrientation=(0,a.Enum)(\"pointytop\",\"flattop\"),t.HoverMode=(0,a.Enum)(\"mouse\",\"hline\",\"vline\"),t.LatLon=(0,a.Enum)(\"lat\",\"lon\"),t.LegendClickPolicy=(0,a.Enum)(\"none\",\"hide\",\"mute\"),t.LegendLocation=t.Anchor,t.LineCap=(0,a.Enum)(\"butt\",\"round\",\"square\"),t.LineJoin=(0,a.Enum)(\"miter\",\"round\",\"bevel\"),t.LineDash=(0,a.Enum)(\"solid\",\"dashed\",\"dotted\",\"dotdash\",\"dashdot\"),t.LinePolicy=(0,a.Enum)(\"prev\",\"next\",\"nearest\",\"interp\",\"none\"),t.Location=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.Logo=(0,a.Enum)(\"normal\",\"grey\"),t.MarkerType=(0,a.Enum)(\"asterisk\",\"circle\",\"circle_cross\",\"circle_dot\",\"circle_x\",\"circle_y\",\"cross\",\"dash\",\"diamond\",\"diamond_cross\",\"diamond_dot\",\"dot\",\"hex\",\"hex_dot\",\"inverted_triangle\",\"plus\",\"square\",\"square_cross\",\"square_dot\",\"square_pin\",\"square_x\",\"star\",\"star_dot\",\"triangle\",\"triangle_dot\",\"triangle_pin\",\"x\",\"y\"),t.MutedPolicy=(0,a.Enum)(\"show\",\"ignore\"),t.Orientation=(0,a.Enum)(\"vertical\",\"horizontal\"),t.OutputBackend=(0,a.Enum)(\"canvas\",\"svg\",\"webgl\"),t.PaddingUnits=(0,a.Enum)(\"percent\",\"absolute\"),t.Place=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\",\"center\"),t.PointPolicy=(0,a.Enum)(\"snap_to_data\",\"follow_mouse\",\"none\"),t.RadiusDimension=(0,a.Enum)(\"x\",\"y\",\"max\",\"min\"),t.RenderLevel=(0,a.Enum)(\"image\",\"underlay\",\"glyph\",\"guide\",\"annotation\",\"overlay\"),t.RenderMode=(0,a.Enum)(\"canvas\",\"css\"),t.ResetPolicy=(0,a.Enum)(\"standard\",\"event_only\"),t.RoundingFunction=(0,a.Enum)(\"round\",\"nearest\",\"floor\",\"rounddown\",\"ceil\",\"roundup\"),t.SelectionMode=(0,a.Enum)(\"replace\",\"append\",\"intersect\",\"subtract\"),t.Side=(0,a.Enum)(\"above\",\"below\",\"left\",\"right\"),t.SizingMode=(0,a.Enum)(\"stretch_width\",\"stretch_height\",\"stretch_both\",\"scale_width\",\"scale_height\",\"scale_both\",\"fixed\"),t.Sort=(0,a.Enum)(\"ascending\",\"descending\"),t.SpatialUnits=(0,a.Enum)(\"screen\",\"data\"),t.StartEnd=(0,a.Enum)(\"start\",\"end\"),t.StepMode=(0,a.Enum)(\"after\",\"before\",\"center\"),t.TapBehavior=(0,a.Enum)(\"select\",\"inspect\"),t.TextAlign=(0,a.Enum)(\"left\",\"right\",\"center\"),t.TextBaseline=(0,a.Enum)(\"top\",\"middle\",\"bottom\",\"alphabetic\",\"hanging\",\"ideographic\"),t.TextureRepetition=(0,a.Enum)(\"repeat\",\"repeat_x\",\"repeat_y\",\"no_repeat\"),t.TickLabelOrientation=(0,a.Enum)(\"vertical\",\"horizontal\",\"parallel\",\"normal\"),t.TooltipAttachment=(0,a.Enum)(\"horizontal\",\"vertical\",\"left\",\"right\",\"above\",\"below\"),t.UpdateMode=(0,a.Enum)(\"replace\",\"append\"),t.VerticalAlign=(0,a.Enum)(\"top\",\"middle\",\"bottom\")},\n", + " function _(e,n,t,s,r){s();const i=(0,e(1).__importStar)(e(8)),a=e(22),l=e(13),_=window.Map,{hasOwnProperty:u}=Object.prototype;class d{}t.Kind=d,d.__name__=\"Kind\",function(e){class n extends d{valid(e){return!0}}n.__name__=\"Any\",e.Any=n;class t extends d{valid(e){return!0}}t.__name__=\"Unknown\",e.Unknown=t;class s extends d{valid(e){return i.isBoolean(e)}}s.__name__=\"Boolean\",e.Boolean=s;class r extends d{constructor(e){super(),this.obj_type=e}valid(e){return!0}}r.__name__=\"Ref\",e.Ref=r;class c extends d{valid(e){return!0}}c.__name__=\"AnyRef\",e.AnyRef=c;class o extends d{valid(e){return i.isNumber(e)}}o.__name__=\"Number\",e.Number=o;class p extends o{valid(e){return super.valid(e)&&i.isInteger(e)}}p.__name__=\"Int\",e.Int=p;class y extends o{valid(e){return super.valid(e)&&0<=e&&e<=1}}y.__name__=\"Percent\",e.Percent=y;class m extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){return this.types.some((n=>n.valid(e)))}}m.__name__=\"Or\",e.Or=m;class v extends d{constructor(e){super(),this.types=e,this.types=e}valid(e){if(!i.isArray(e))return!1;for(let n=0;nthis.item_type.valid(e)))}}f.__name__=\"Array\",e.Array=f;class K extends d{valid(e){return null===e}}K.__name__=\"Null\",e.Null=K;class b extends d{constructor(e){super(),this.base_type=e}valid(e){return null===e||this.base_type.valid(e)}}b.__name__=\"Nullable\",e.Nullable=b;class A extends d{constructor(e){super(),this.base_type=e}valid(e){return void 0===e||this.base_type.valid(e)}}A.__name__=\"Opt\",e.Opt=A;class x extends d{valid(e){return i.isString(e)}}x.__name__=\"String\",e.String=x;class S extends d{constructor(e){super(),this.values=new Set(e)}valid(e){return this.values.has(e)}*[Symbol.iterator](){yield*this.values}}S.__name__=\"Enum\",e.Enum=S;class N extends d{constructor(e){super(),this.item_type=e}valid(e){if(!i.isPlainObject(e))return!1;for(const n in e)if(u.call(e,n)){const t=e[n];if(!this.item_type.valid(t))return!1}return!0}}N.__name__=\"Dict\",e.Dict=N;class O extends d{constructor(e,n){super(),this.key_type=e,this.item_type=n}valid(e){if(!(e instanceof _))return!1;for(const[n,t]of e.entries())if(!this.key_type.valid(n)||!this.item_type.valid(t))return!1;return!0}}O.__name__=\"Map\",e.Map=O;class g extends d{valid(e){return(0,a.is_Color)(e)}}g.__name__=\"Color\",e.Color=g;class P extends d{valid(e){return i.isFunction(e)}}P.__name__=\"Function\",e.Function=P}(t.Kinds||(t.Kinds={})),t.Any=new t.Kinds.Any,t.Unknown=new t.Kinds.Unknown,t.Boolean=new t.Kinds.Boolean,t.Number=new t.Kinds.Number,t.Int=new t.Kinds.Int,t.String=new t.Kinds.String,t.Null=new t.Kinds.Null;t.Nullable=e=>new t.Kinds.Nullable(e);t.Opt=e=>new t.Kinds.Opt(e);t.Or=(...e)=>new t.Kinds.Or(e);t.Tuple=(...e)=>new t.Kinds.Tuple(e);t.Struct=e=>new t.Kinds.Struct(e),t.Arrayable=new t.Kinds.Arrayable;t.Array=e=>new t.Kinds.Array(e);t.Dict=e=>new t.Kinds.Dict(e);t.Map=(e,n)=>new t.Kinds.Map(e,n);t.Enum=(...e)=>new t.Kinds.Enum(e);t.Ref=e=>new t.Kinds.Ref(e);t.AnyRef=()=>new t.Kinds.AnyRef;t.Function=()=>new t.Kinds.Function,t.Percent=new t.Kinds.Percent,t.Alpha=t.Percent,t.Color=new t.Kinds.Color,t.Auto=(0,t.Enum)(\"auto\"),t.FontSize=t.String,t.Font=t.String,t.Angle=t.Number},\n", + " function _(n,t,r,e,s){e();const u=n(23),c=n(10),l=n(8),{round:i}=Math;function o(n){return(0,c.clamp)(i(n),0,255)}function a(){return[0,0,0,0]}function f(n){return[n>>24&255,n>>16&255,n>>8&255,255&n]}function d(n,t){var r;let e,s,u,c;return null==n?[e,s,u,c]=[0,0,0,0]:(0,l.isInteger)(n)?[e,s,u,c]=f(n):(0,l.isString)(n)?[e,s,u,c]=null!==(r=_(n))&&void 0!==r?r:[0,0,0,0]:([e,s,u,c=1]=n,c=o(255*c)),255==c&&null!=t&&(c=o(255*t)),[e,s,u,c]}r.transparent=a,r.encode_rgba=function([n,t,r,e]){return n<<24|t<<16|r<<8|e},r.decode_rgba=f,r.compose_alpha=function(n,t){return 255==(255&n)?4294967040&n|o(255*t):n},r.color2rgba=d;const h={0:\"0\",1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",10:\"a\",11:\"b\",12:\"c\",13:\"d\",14:\"e\",15:\"f\"};function g(n){return h[n>>4]+h[15&n]}r.color2css=function(n,t){const[r,e,s,u]=d(n,t);return`rgba(${r}, ${e}, ${s}, ${u/255})`},r.color2hex=function(n,t){const[r,e,s,u]=d(n,t),c=`#${g(r)}${g(e)}${g(s)}`;return 255==u?c:`${c}${g(u)}`},r.color2hexrgb=function(n){const[t,r,e]=d(n);return`#${g(t)}${g(r)}${g(e)}`};const b=/^rgba?\\(\\s*([^\\s,]+?)\\s+([^\\s,]+?)\\s+([^\\s,]+?)(?:\\s*\\/\\s*([^\\s,]+?))?\\s*\\)$/,$=/^rgba?\\(\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)\\s*,\\s*([^\\s,]+?)(?:\\s*,\\s*([^\\s,]+?))?\\s*\\)$/,m=(()=>{const n=document.createElement(\"canvas\");n.width=1,n.height=1;const t=n.getContext(\"2d\"),r=t.createLinearGradient(0,0,1,1);return n=>{t.fillStyle=r,t.fillStyle=n;const e=t.fillStyle;return e!=r?e:null}})();function _(n){var t;if(!(n=n.trim().toLowerCase()))return null;if(\"transparent\"==n)return[0,0,0,0];if((0,u.is_named_color)(n))return f(u.named_colors[n]);if(\"#\"==n[0]){const t=Number(`0x${n.substr(1)}`);if(isNaN(t))return null;switch(n.length-1){case 3:{const n=t>>8&15,r=t>>4&15,e=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,255]}case 4:{const n=t>>12&15,r=t>>8&15,e=t>>4&15,s=t>>0&15;return[n<<4|n,r<<4|r,e<<4|e,s<<4|s]}case 6:return[t>>16&255,t>>8&255,t>>0&255,255];case 8:return[t>>24&255,t>>16&255,t>>8&255,t>>0&255]}}else if(n.startsWith(\"rgb\")){const r=null!==(t=n.match(b))&&void 0!==t?t:n.match($);if(null!=r){let[,n,t,e,s=\"1\"]=r;const u=n.endsWith(\"%\"),c=t.endsWith(\"%\"),l=e.endsWith(\"%\"),i=s.endsWith(\"%\");if(!(u&&c&&l)&&(u||c||l))return null;u&&(n=n.slice(0,-1)),c&&(t=t.slice(0,-1)),l&&(e=e.slice(0,-1)),i&&(s=s.slice(0,-1));let a=Number(n),f=Number(t),d=Number(e),h=Number(s);return isNaN(a+f+d+h)?null:(u&&(a=a/100*255),c&&(f=f/100*255),l&&(d=d/100*255),h=255*(i?h/100:h),a=o(a),f=o(f),d=o(d),h=o(h),[a,f,d,h])}}else{const t=m(n);if(null!=t)return _(t)}return null}r.css4_parse=_,r.is_Color=function(n){return!!(0,l.isInteger)(n)||(!(!(0,l.isString)(n)||null==_(n))||!(!(0,l.isArray)(n)||3!=n.length&&4!=n.length))},r.is_dark=function([n,t,r]){return 1-(.299*n+.587*t+.114*r)/255>=.6}},\n", + " function _(e,r,l,a,i){a();l.named_colors={aliceblue:4042850303,antiquewhite:4209760255,aqua:16777215,aquamarine:2147472639,azure:4043309055,beige:4126530815,bisque:4293182719,black:255,blanchedalmond:4293643775,blue:65535,blueviolet:2318131967,brown:2771004159,burlywood:3736635391,cadetblue:1604231423,chartreuse:2147418367,chocolate:3530104575,coral:4286533887,cornflowerblue:1687547391,cornsilk:4294499583,crimson:3692313855,cyan:16777215,darkblue:35839,darkcyan:9145343,darkgoldenrod:3095792639,darkgray:2846468607,darkgreen:6553855,darkgrey:2846468607,darkkhaki:3182914559,darkmagenta:2332068863,darkolivegreen:1433087999,darkorange:4287365375,darkorchid:2570243327,darkred:2332033279,darksalmon:3918953215,darkseagreen:2411499519,darkslateblue:1211993087,darkslategray:793726975,darkslategrey:793726975,darkturquoise:13554175,darkviolet:2483082239,deeppink:4279538687,deepskyblue:12582911,dimgray:1768516095,dimgrey:1768516095,dodgerblue:512819199,firebrick:2988581631,floralwhite:4294635775,forestgreen:579543807,fuchsia:4278255615,gainsboro:3705462015,ghostwhite:4177068031,gold:4292280575,goldenrod:3668254975,gray:2155905279,green:8388863,greenyellow:2919182335,grey:2155905279,honeydew:4043305215,hotpink:4285117695,indianred:3445382399,indigo:1258324735,ivory:4294963455,khaki:4041641215,lavender:3873897215,lavenderblush:4293981695,lawngreen:2096890111,lemonchiffon:4294626815,lightblue:2916673279,lightcoral:4034953471,lightcyan:3774873599,lightgoldenrodyellow:4210742015,lightgray:3553874943,lightgreen:2431553791,lightgrey:3553874943,lightpink:4290167295,lightsalmon:4288707327,lightseagreen:548580095,lightskyblue:2278488831,lightslategray:2005441023,lightslategrey:2005441023,lightsteelblue:2965692159,lightyellow:4294959359,lime:16711935,limegreen:852308735,linen:4210091775,magenta:4278255615,maroon:2147483903,mediumaquamarine:1724754687,mediumblue:52735,mediumorchid:3126187007,mediumpurple:2473647103,mediumseagreen:1018393087,mediumslateblue:2070474495,mediumspringgreen:16423679,mediumturquoise:1221709055,mediumvioletred:3340076543,midnightblue:421097727,mintcream:4127193855,mistyrose:4293190143,moccasin:4293178879,navajowhite:4292783615,navy:33023,oldlace:4260751103,olive:2155872511,olivedrab:1804477439,orange:4289003775,orangered:4282712319,orchid:3664828159,palegoldenrod:4008225535,palegreen:2566625535,paleturquoise:2951671551,palevioletred:3681588223,papayawhip:4293907967,peachpuff:4292524543,peru:3448061951,pink:4290825215,plum:3718307327,powderblue:2967529215,purple:2147516671,rebeccapurple:1714657791,red:4278190335,rosybrown:3163525119,royalblue:1097458175,saddlebrown:2336560127,salmon:4202722047,sandybrown:4104413439,seagreen:780883967,seashell:4294307583,sienna:2689740287,silver:3233857791,skyblue:2278484991,slateblue:1784335871,slategray:1887473919,slategrey:1887473919,snow:4294638335,springgreen:16744447,steelblue:1182971135,tan:3535047935,teal:8421631,thistle:3636451583,tomato:4284696575,turquoise:1088475391,violet:4001558271,wheat:4125012991,white:4294967295,whitesmoke:4126537215,yellow:4294902015,yellowgreen:2597139199},l.is_named_color=function(e){return e in l.named_colors}},\n", + " function _(r,t,n,a,o){a(),n.GeneratorFunction=Object.getPrototypeOf((function*(){})).constructor,n.ColorArray=Uint32Array,n.RGBAArray=Uint8ClampedArray,n.infer_type=function(r,t){return r instanceof Float64Array||r instanceof Array||t instanceof Float64Array||t instanceof Array?Float64Array:Float32Array},n.ScreenArray=Float32Array,n.to_screen=function(r){return r instanceof Float32Array?r:Float32Array.from(r)},o(\"Indices\",r(25).BitSet)},\n", + " function _(t,s,r,e,i){var n;e();const o=t(26),a=t(11);class _{constructor(t,s=0){this.size=t,this[n]=\"BitSet\",this._count=null,this._nwords=Math.ceil(t/32),0==s||1==s?(this._array=new Uint32Array(this._nwords),1==s&&this._array.fill(4294967295)):((0,a.assert)(s.length==this._nwords,\"Initializer size mismatch\"),this._array=s)}clone(){return new _(this.size,new Uint32Array(this._array))}[(n=Symbol.toStringTag,o.equals)](t,s){if(!s.eq(this.size,t.size))return!1;const{_nwords:r}=this,e=this.size%r,i=0==e?r:r-1;for(let s=0;s>>5,r=31&t;return!!(this._array[s]>>r&1)}set(t,s=!0){this._check_bounds(t),this._count=null;const r=t>>>5,e=31&t;s?this._array[r]|=1<>>t&1&&(e+=1)}return e}*ones(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1&&(yield e);else e+=32}}*zeros(){const{_array:t,_nwords:s,size:r}=this;for(let e=0,i=0;i>>t&1||(yield e);else e+=32}}_check_size(t){(0,a.assert)(this.size==t.size,\"Size mismatch\")}add(t){this._check_size(t);for(let s=0;s{if(a(t)&&a(e))return t[r.equals](e,this);switch(n){case\"[object Array]\":case\"[object Uint8Array]\":case\"[object Int8Array]\":case\"[object Uint16Array]\":case\"[object Int16Array]\":case\"[object Uint32Array]\":case\"[object Int32Array]\":case\"[object Float32Array]\":case\"[object Float64Array]\":return this.arrays(t,e);case\"[object Map]\":return this.maps(t,e);case\"[object Set]\":return this.sets(t,e);case\"[object Object]\":if(t.constructor==e.constructor&&(null==t.constructor||t.constructor===Object))return this.objects(t,e);case\"[object Function]\":if(t.constructor==e.constructor&&t.constructor===Function)return this.eq(`${t}`,`${e}`)}if(t instanceof Node)return this.nodes(t,e);throw Error(`can't compare objects of type ${n}`)})();return s.pop(),o.pop(),u}numbers(t,e){return Object.is(t,e)}arrays(t,e){const{length:r}=t;if(r!=e.length)return!1;for(let n=0;n{const n=navigator.userAgent;return n.includes(\"MSIE\")||n.includes(\"Trident\")||n.includes(\"Edge\")})(),e.is_mobile=\"undefined\"!=typeof window&&(\"ontouchstart\"in window||navigator.maxTouchPoints>0),e.is_little_endian=(()=>{const n=new ArrayBuffer(4),i=new Uint8Array(n);new Uint32Array(n)[1]=168496141;let e=!0;return 10==i[4]&&11==i[5]&&12==i[6]&&13==i[7]&&(e=!1),e})(),e.BYTE_ORDER=e.is_little_endian?\"little\":\"big\",e.to_big_endian=function(n){if(e.is_little_endian){const i=new Uint32Array(n.length),e=new DataView(i.buffer);let t=0;for(const i of n)e.setUint32(t,i),t+=4;return i}return n}},\n", + " function _(e,t,r,s,_){s();class i{constructor(){this._dev=!1,this._wireframe=!1,this._force_webgl=!1}set dev(e){this._dev=e}get dev(){return this._dev}set wireframe(e){this._wireframe=e}get wireframe(){return this._wireframe}set force_webgl(e){this._force_webgl=e}get force_webgl(){return this._force_webgl}}r.Settings=i,i.__name__=\"Settings\",r.settings=new i},\n", + " function _(e,s,t,i,r){var a,n,l,h,u,o,p,c;i();const y=e(8),_=e(11),A=e(26),q=e(30),d=e(31),z=Symbol(\"__ndarray__\");class D extends Uint8Array{constructor(e,s){super(e),this[a]=!0,this.dtype=\"uint8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>D.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>D.prototype[q.serialize].call(this,e))}[(a=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint8NDArray=D,D.__name__=\"Uint8NDArray\";class N extends Int8Array{constructor(e,s){super(e),this[n]=!0,this.dtype=\"int8\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>N.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>N.prototype[q.serialize].call(this,e))}[(n=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int8NDArray=N,N.__name__=\"Int8NDArray\";class f extends Uint16Array{constructor(e,s){super(e),this[l]=!0,this.dtype=\"uint16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>f.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>f.prototype[q.serialize].call(this,e))}[(l=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint16NDArray=f,f.__name__=\"Uint16NDArray\";class m extends Int16Array{constructor(e,s){super(e),this[h]=!0,this.dtype=\"int16\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>m.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>m.prototype[q.serialize].call(this,e))}[(h=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int16NDArray=m,m.__name__=\"Int16NDArray\";class g extends Uint32Array{constructor(e,s){super(e),this[u]=!0,this.dtype=\"uint32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>g.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>g.prototype[q.serialize].call(this,e))}[(u=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Uint32NDArray=g,g.__name__=\"Uint32NDArray\";class I extends Int32Array{constructor(e,s){super(e),this[o]=!0,this.dtype=\"int32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>I.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>I.prototype[q.serialize].call(this,e))}[(o=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Int32NDArray=I,I.__name__=\"Int32NDArray\";class U extends Float32Array{constructor(e,s){super(e),this[p]=!0,this.dtype=\"float32\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>U.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>U.prototype[q.serialize].call(this,e))}[(p=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}t.Float32NDArray=U,U.__name__=\"Float32NDArray\";class w extends Float64Array{constructor(e,s){super(e),this[c]=!0,this.dtype=\"float64\",this.shape=null!=s?s:x(e)?e.shape:[this.length],this.dimension=this.shape.length,null==this[A.equals]&&(this[A.equals]=(e,s)=>w.prototype[A.equals].call(this,e,s)),null==this[q.serialize]&&(this[q.serialize]=e=>w.prototype[q.serialize].call(this,e))}[(c=z,A.equals)](e,s){return s.eq(this.shape,e.shape)&&s.arrays(this,e)}[q.serialize](e){return(0,d.encode_NDArray)(this)}}function x(e){return(0,y.isObject)(e)&&void 0!==e[z]}t.Float64NDArray=w,w.__name__=\"Float64NDArray\",t.is_NDArray=x,t.ndarray=function(e,s={}){let{dtype:t}=s;null==t&&(t=e instanceof ArrayBuffer||(0,y.isArray)(e)?\"float64\":(()=>{switch(!0){case e instanceof Uint8Array:return\"uint8\";case e instanceof Int8Array:return\"int8\";case e instanceof Uint16Array:return\"uint16\";case e instanceof Int16Array:return\"int16\";case e instanceof Uint32Array:return\"uint32\";case e instanceof Int32Array:return\"int32\";case e instanceof Float32Array:return\"float32\";case e instanceof Float64Array:return\"float64\";default:(0,_.unreachable)()}})());const{shape:i}=s;switch(t){case\"uint8\":return new D(e,i);case\"int8\":return new N(e,i);case\"uint16\":return new f(e,i);case\"int16\":return new m(e,i);case\"uint32\":return new g(e,i);case\"int32\":return new I(e,i);case\"float32\":return new U(e,i);case\"float64\":return new w(e,i)}}},\n", + " function _(e,r,t,i,s){i();const n=e(11),a=e(13),l=e(8);t.serialize=Symbol(\"serialize\");class o extends Error{}t.SerializationError=o,o.__name__=\"SerializationError\";class f{constructor(e){var r;this._references=new Map,this._definitions=new Map,this._refmap=new Map,this.include_defaults=null===(r=null==e?void 0:e.include_defaults)||void 0===r||r}get_ref(e){return this._references.get(e)}add_ref(e,r){(0,n.assert)(!this._references.has(e)),this._references.set(e,r)}add_def(e,r){const t=this.get_ref(e);(0,n.assert)(null!=t),this._definitions.set(e,r),this._refmap.set(t,r)}get objects(){return new Set(this._references.keys())}get references(){return new Set(this._references.values())}get definitions(){return new Set(this._definitions.values())}resolve_ref(e){return this._refmap.get(e)}remove_ref(e){return this._references.delete(e)}remove_def(e){return this._definitions.delete(e)}to_serializable(e){const r=this.get_ref(e);if(null!=r)return r;if(function(e){return(0,l.isObject)(e)&&void 0!==e[t.serialize]}(e))return e[t.serialize](this);if((0,l.isArray)(e)||(0,l.isTypedArray)(e)){const r=e.length,t=new Array(r);for(let i=0;i(0,s.buffer_to_base64)(_.buffer)};return Object.assign({__ndarray__:e},r)}}},\n", + " function _(t,n,e,r,o){r(),e.buffer_to_base64=function(t){const n=new Uint8Array(t),e=Array.from(n).map((t=>String.fromCharCode(t)));return btoa(e.join(\"\"))},e.base64_to_buffer=function(t){const n=atob(t),e=n.length,r=new Uint8Array(e);for(let t=0,o=e;t\"'`])/g,(t=>{switch(t){case\"&\":return\"&\";case\"<\":return\"<\";case\">\":return\">\";case'\"':return\""\";case\"'\":return\"'\";case\"`\":return\"`\";default:return t}}))},r.unescape=function(t){return t.replace(/&(amp|lt|gt|quot|#x27|#x60);/g,((t,e)=>{switch(e){case\"amp\":return\"&\";case\"lt\":return\"<\";case\"gt\":return\">\";case\"quot\":return'\"';case\"#x27\":return\"'\";case\"#x60\":return\"`\";default:return e}}))},r.use_strict=function(t){return`'use strict';\\n${t}`},r.to_fixed=function(t,e){return t.toFixed(e).replace(/(\\.[0-9]*?)0+$/,\"$1\").replace(/\\.$/,\"\")}},\n", + " function _(e,t,s,n,o){n();const i=e(30);class r{constructor(e){this.document=e}}s.DocumentEvent=r,r.__name__=\"DocumentEvent\";class a extends r{constructor(e,t,s){super(e),this.events=t,this.setter_id=s}}s.DocumentEventBatch=a,a.__name__=\"DocumentEventBatch\";class d extends r{}s.DocumentChangedEvent=d,d.__name__=\"DocumentChangedEvent\";class l extends d{constructor(e,t,s){super(e),this.msg_type=t,this.msg_data=s}[i.serialize](e){const t=this.msg_data,s=e.to_serializable(t);return{kind:\"MessageSent\",msg_type:this.msg_type,msg_data:s}}}s.MessageSentEvent=l,l.__name__=\"MessageSentEvent\";class _ extends d{constructor(e,t,s,n,o,i,r){super(e),this.model=t,this.attr=s,this.old=n,this.new_=o,this.setter_id=i,this.hint=r}[i.serialize](e){if(null!=this.hint)return e.to_serializable(this.hint);const t=this.new_,s=e.to_serializable(t);return this.model!=t&&e.remove_def(this.model),{kind:\"ModelChanged\",model:this.model.ref(),attr:this.attr,new:s}}}s.ModelChangedEvent=_,_.__name__=\"ModelChangedEvent\";class c extends d{constructor(e,t,s){super(e),this.column_source=t,this.patches=s}[i.serialize](e){return{kind:\"ColumnsPatched\",column_source:this.column_source,patches:this.patches}}}s.ColumnsPatchedEvent=c,c.__name__=\"ColumnsPatchedEvent\";class h extends d{constructor(e,t,s,n){super(e),this.column_source=t,this.data=s,this.rollover=n}[i.serialize](e){return{kind:\"ColumnsStreamed\",column_source:this.column_source,data:this.data,rollover:this.rollover}}}s.ColumnsStreamedEvent=h,h.__name__=\"ColumnsStreamedEvent\";class m extends d{constructor(e,t,s){super(e),this.title=t,this.setter_id=s}[i.serialize](e){return{kind:\"TitleChanged\",title:this.title}}}s.TitleChangedEvent=m,m.__name__=\"TitleChangedEvent\";class u extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootAdded\",model:e.to_serializable(this.model)}}}s.RootAddedEvent=u,u.__name__=\"RootAddedEvent\";class v extends d{constructor(e,t,s){super(e),this.model=t,this.setter_id=s}[i.serialize](e){return{kind:\"RootRemoved\",model:this.model.ref()}}}s.RootRemovedEvent=v,v.__name__=\"RootRemovedEvent\"},\n", + " function _(t,i,r,n,s){n();const e=t(8),o=t(13);r.pretty=Symbol(\"pretty\");class c{constructor(t){this.visited=new Set,this.precision=null==t?void 0:t.precision}to_string(t){if((0,e.isObject)(t)){if(this.visited.has(t))return\"\";this.visited.add(t)}return function(t){return(0,e.isObject)(t)&&void 0!==t[r.pretty]}(t)?t[r.pretty](this):(0,e.isBoolean)(t)?this.boolean(t):(0,e.isNumber)(t)?this.number(t):(0,e.isString)(t)?this.string(t):(0,e.isArray)(t)?this.array(t):(0,e.isIterable)(t)?this.iterable(t):(0,e.isPlainObject)(t)?this.object(t):(0,e.isSymbol)(t)?this.symbol(t):`${t}`}token(t){return t}boolean(t){return`${t}`}number(t){return null!=this.precision?t.toFixed(this.precision):`${t}`}string(t){return`\"${t.replace(/'/g,\"\\\\'\")}\"`}symbol(t){return t.toString()}array(t){const i=this.token,r=[];for(const i of t)r.push(this.to_string(i));return`${i(\"[\")}${r.join(`${i(\",\")} `)}${i(\"]\")}`}iterable(t){var i;const r=this.token,n=null!==(i=Object(t)[Symbol.toStringTag])&&void 0!==i?i:\"Object\",s=this.array(t);return`${n}${r(\"(\")}${s}${r(\")\")}`}object(t){const i=this.token,r=[];for(const[n,s]of(0,o.entries)(t))r.push(`${n}${i(\":\")} ${this.to_string(s)}`);return`${i(\"{\")}${r.join(`${i(\",\")} `)}${i(\"}\")}`}}r.Printer=c,c.__name__=\"Printer\",r.to_string=function(t,i){return new c(i).to_string(t)}},\n", + " function _(n,o,r,e,t){e();const l=n(13),i=n(8);function c(n){return(0,i.isObject)(n)&&void 0!==n[r.clone]}r.clone=Symbol(\"clone\"),r.is_Cloneable=c;class s extends Error{}r.CloningError=s,s.__name__=\"CloningError\";class a{constructor(){}clone(n){if(c(n))return n[r.clone](this);if((0,i.isArray)(n)){const o=n.length,r=new Array(o);for(let e=0;e{null!=this.layout&&(this.layout.visible=this.model.visible,this.plot_view.request_layout())}))}get needs_clip(){return null==this.layout}serializable_state(){const t=super.serializable_state();return null==this.layout?t:Object.assign(Object.assign({},t),{bbox:this.layout.bbox.box})}}i.AnnotationView=r,r.__name__=\"AnnotationView\";class a extends l.Renderer{constructor(t){super(t)}}i.Annotation=a,o=a,a.__name__=\"Annotation\",o.override({level:\"annotation\"})},\n", + " function _(e,i,t,n,s){n();const r=e(1);var o,a;const _=e(42),l=(0,r.__importStar)(e(45)),d=e(20),h=e(53),u=e(54);class c extends h.Model{constructor(e){super(e)}}t.RendererGroup=c,o=c,c.__name__=\"RendererGroup\",o.define((({Boolean:e})=>({visible:[e,!0]})));class p extends _.View{get coordinates(){const{_coordinates:e}=this;return null!=e?e:this._coordinates=this._initialize_coordinates()}initialize(){super.initialize(),this.visuals=new l.Visuals(this),this.needs_webgl_blit=!1}connect_signals(){super.connect_signals();const{x_range_name:e,y_range_name:i}=this.model.properties;this.on_change([e,i],(()=>this._initialize_coordinates()));const{group:t}=this.model;null!=t&&this.on_change(t.properties.visible,(()=>{this.model.visible=t.visible}))}_initialize_coordinates(){const{coordinates:e}=this.model,{frame:i}=this.plot_view;if(null!=e)return e.get_transform(i);{const{x_range_name:e,y_range_name:t}=this.model,n=i.x_scales.get(e),s=i.y_scales.get(t);return new u.CoordinateTransform(n,s)}}get plot_view(){return this.parent}get plot_model(){return this.parent.model}get layer(){const{overlays:e,primary:i}=this.canvas;return\"overlay\"==this.model.level?e:i}get canvas(){return this.plot_view.canvas_view}request_render(){this.request_paint()}request_paint(){this.plot_view.request_paint(this)}request_layout(){this.plot_view.request_layout()}notify_finished(){this.plot_view.notify_finished()}notify_finished_after_paint(){this.plot_view.notify_finished_after_paint()}get needs_clip(){return!1}get has_webgl(){return!1}render(){this.model.visible&&this._render(),this._has_finished=!0}renderer_view(e){}}t.RendererView=p,p.__name__=\"RendererView\";class g extends h.Model{constructor(e){super(e)}}t.Renderer=g,a=g,g.__name__=\"Renderer\",a.define((({Boolean:e,String:i,Ref:t,Nullable:n})=>({group:[n(t(c)),null],level:[d.RenderLevel,\"image\"],visible:[e,!0],x_range_name:[i,\"default\"],y_range_name:[i,\"default\"],coordinates:[n(t(u.CoordinateMapping)),null]})))},\n", + " function _(t,e,s,i,n){i();const o=t(1),h=t(15),r=t(43),l=t(8),_=(0,o.__importDefault)(t(44));class d{constructor(t){this.removed=new h.Signal0(this,\"removed\"),this._ready=Promise.resolve(void 0),this._slots=new WeakMap,this._idle_notified=!1;const{model:e,parent:s}=t;this.model=e,this.parent=s,this.root=null==s?this:s.root,this.removed.emit()}get ready(){return this._ready}connect(t,e){let s=this._slots.get(e);return null==s&&(s=(t,s)=>{const i=Promise.resolve(e.call(this,t,s));this._ready=this._ready.then((()=>i))},this._slots.set(e,s)),t.connect(s,this)}disconnect(t,e){return t.disconnect(e,this)}initialize(){this._has_finished=!1,this.is_root&&(this._stylesheet=r.stylesheet);for(const t of this.styles())this.stylesheet.append(t)}async lazy_initialize(){}remove(){this.disconnect_signals(),this.removed.emit()}toString(){return`${this.model.type}View(${this.model.id})`}serializable_state(){return{type:this.model.type}}get is_root(){return null==this.parent}has_finished(){return this._has_finished}get is_idle(){return this.has_finished()}connect_signals(){}disconnect_signals(){h.Signal.disconnect_receiver(this)}on_change(t,e){for(const s of(0,l.isArray)(t)?t:[t])this.connect(s.change,e)}cursor(t,e){return null}get stylesheet(){return this.is_root?this._stylesheet:this.root.stylesheet}styles(){return[_.default]}notify_finished(){this.is_root?!this._idle_notified&&this.has_finished()&&null!=this.model.document&&(this._idle_notified=!0,this.model.document.notify_idle(this.model)):this.root.notify_finished()}}s.View=d,d.__name__=\"View\"},\n", + " function _(t,e,n,i,o){i();const s=t(8),l=t(13),r=t=>(e={},...n)=>{const i=document.createElement(t);i.classList.add(\"bk\"),(0,s.isPlainObject)(e)||(n=[e,...n],e={});for(let[t,n]of(0,l.entries)(e))if(null!=n&&(!(0,s.isBoolean)(n)||n))if(\"class\"===t&&((0,s.isString)(n)&&(n=n.split(/\\s+/)),(0,s.isArray)(n)))for(const t of n)null!=t&&i.classList.add(t);else if(\"style\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.style[t]=e;else if(\"data\"===t&&(0,s.isPlainObject)(n))for(const[t,e]of(0,l.entries)(n))i.dataset[t]=e;else i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i};function a(t){const e=t.parentNode;null!=e&&e.removeChild(t)}function c(t,...e){const n=t.firstChild;for(const i of e)t.insertBefore(i,n)}function d(t,e){var n,i,o;const s=Element.prototype;return(null!==(o=null!==(i=null!==(n=s.matches)&&void 0!==n?n:s.webkitMatchesSelector)&&void 0!==i?i:s.mozMatchesSelector)&&void 0!==o?o:s.msMatchesSelector).call(t,e)}function h(t){return parseFloat(t)||0}function f(t){const e=getComputedStyle(t);return{border:{top:h(e.borderTopWidth),bottom:h(e.borderBottomWidth),left:h(e.borderLeftWidth),right:h(e.borderRightWidth)},margin:{top:h(e.marginTop),bottom:h(e.marginBottom),left:h(e.marginLeft),right:h(e.marginRight)},padding:{top:h(e.paddingTop),bottom:h(e.paddingBottom),left:h(e.paddingLeft),right:h(e.paddingRight)}}}function u(t){const e=t.getBoundingClientRect();return{width:Math.ceil(e.width),height:Math.ceil(e.height)}}n.createElement=function(t,e,...n){return r(t)(e,...n)},n.div=r(\"div\"),n.span=r(\"span\"),n.canvas=r(\"canvas\"),n.link=r(\"link\"),n.style=r(\"style\"),n.a=r(\"a\"),n.p=r(\"p\"),n.i=r(\"i\"),n.pre=r(\"pre\"),n.button=r(\"button\"),n.label=r(\"label\"),n.input=r(\"input\"),n.select=r(\"select\"),n.option=r(\"option\"),n.optgroup=r(\"optgroup\"),n.textarea=r(\"textarea\"),n.createSVGElement=function(t,e,...n){const i=document.createElementNS(\"http://www.w3.org/2000/svg\",t);for(const[t,n]of(0,l.entries)(null!=e?e:{}))null==n||(0,s.isBoolean)(n)&&!n||i.setAttribute(t,n);function o(t){if((0,s.isString)(t))i.appendChild(document.createTextNode(t));else if(t instanceof Node)i.appendChild(t);else if(t instanceof NodeList||t instanceof HTMLCollection)for(const e of t)i.appendChild(e);else if(null!=t&&!1!==t)throw new Error(`expected a DOM element, string, false or null, got ${JSON.stringify(t)}`)}for(const t of n)if((0,s.isArray)(t))for(const e of t)o(e);else o(t);return i},n.nbsp=function(){return document.createTextNode(\"\\xa0\")},n.append=function(t,...e){for(const n of e)t.appendChild(n)},n.remove=a,n.removeElement=a,n.replaceWith=function(t,e){const n=t.parentNode;null!=n&&n.replaceChild(e,t)},n.prepend=c,n.empty=function(t,e=!1){let n;for(;n=t.firstChild;)t.removeChild(n);if(e&&t instanceof Element)for(const e of t.attributes)t.removeAttributeNode(e)},n.display=function(t){t.style.display=\"\"},n.undisplay=function(t){t.style.display=\"none\"},n.show=function(t){t.style.visibility=\"\"},n.hide=function(t){t.style.visibility=\"hidden\"},n.offset=function(t){const e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},n.matches=d,n.parent=function(t,e){let n=t;for(;n=n.parentElement;)if(d(n,e))return n;return null},n.extents=f,n.size=u,n.scroll_size=function(t){return{width:Math.ceil(t.scrollWidth),height:Math.ceil(t.scrollHeight)}},n.outer_size=function(t){const{margin:{left:e,right:n,top:i,bottom:o}}=f(t),{width:s,height:l}=u(t);return{width:Math.ceil(s+e+n),height:Math.ceil(l+i+o)}},n.content_size=function(t){const{left:e,top:n}=t.getBoundingClientRect(),{padding:i}=f(t);let o=0,s=0;for(const l of t.children){const t=l.getBoundingClientRect();o=Math.max(o,Math.ceil(t.left-e-i.left+t.width)),s=Math.max(s,Math.ceil(t.top-n-i.top+t.height))}return{width:o,height:s}},n.position=function(t,e,n){const{style:i}=t;if(i.left=`${e.x}px`,i.top=`${e.y}px`,i.width=`${e.width}px`,i.height=`${e.height}px`,null==n)i.margin=\"\";else{const{top:t,right:e,bottom:o,left:s}=n;i.margin=`${t}px ${e}px ${o}px ${s}px`}},n.children=function(t){return Array.from(t.children)};class p{constructor(t){this.el=t,this.classList=t.classList}get values(){const t=[];for(let e=0;e{document.addEventListener(\"DOMContentLoaded\",(()=>t()),{once:!0})}))}},\n", + " function _(o,i,t,e,r){e(),t.root=\"bk-root\",t.default=\".bk-root{position:relative;width:auto;height:auto;box-sizing:border-box;font-family:Helvetica, Arial, sans-serif;font-size:13px;}.bk-root .bk,.bk-root .bk:before,.bk-root .bk:after{box-sizing:inherit;margin:0;border:0;padding:0;background-image:none;font-family:inherit;font-size:100%;line-height:1.42857143;}.bk-root pre.bk{font-family:Courier, monospace;}\"},\n", + " function _(e,t,r,a,c){a();const n=e(1),l=e(46);c(\"Line\",l.Line),c(\"LineScalar\",l.LineScalar),c(\"LineVector\",l.LineVector);const i=e(49);c(\"Fill\",i.Fill),c(\"FillScalar\",i.FillScalar),c(\"FillVector\",i.FillVector);const s=e(50);c(\"Text\",s.Text),c(\"TextScalar\",s.TextScalar),c(\"TextVector\",s.TextVector);const o=e(51);c(\"Hatch\",o.Hatch),c(\"HatchScalar\",o.HatchScalar),c(\"HatchVector\",o.HatchVector);const u=(0,n.__importStar)(e(48)),V=e(47);c(\"VisualProperties\",V.VisualProperties),c(\"VisualUniforms\",V.VisualUniforms);class h{constructor(e){this._visuals=[];for(const[t,r]of e.model._mixins){const a=(()=>{switch(r){case u.Line:return new l.Line(e,t);case u.LineScalar:return new l.LineScalar(e,t);case u.LineVector:return new l.LineVector(e,t);case u.Fill:return new i.Fill(e,t);case u.FillScalar:return new i.FillScalar(e,t);case u.FillVector:return new i.FillVector(e,t);case u.Text:return new s.Text(e,t);case u.TextScalar:return new s.TextScalar(e,t);case u.TextVector:return new s.TextVector(e,t);case u.Hatch:return new o.Hatch(e,t);case u.HatchScalar:return new o.HatchScalar(e,t);case u.HatchVector:return new o.HatchVector(e,t);default:throw new Error(\"unknown visual\")}})();a instanceof V.VisualProperties&&a.update(),this._visuals.push(a),Object.defineProperty(this,t+a.type,{get:()=>a,configurable:!1,enumerable:!0})}}*[Symbol.iterator](){yield*this._visuals}}r.Visuals=h,h.__name__=\"Visuals\"},\n", + " function _(e,t,i,l,s){l();const a=e(1),n=e(47),h=(0,a.__importStar)(e(48)),o=e(22),_=e(8);function r(e){if((0,_.isArray)(e))return e;switch(e){case\"solid\":return[];case\"dashed\":return[6];case\"dotted\":return[2,4];case\"dotdash\":return[2,4,6,4];case\"dashdot\":return[6,4,2,4];default:return e.split(\" \").map(Number).filter(_.isInteger)}}i.resolve_line_dash=r;class u extends n.VisualProperties{get doit(){const e=this.line_color.get_value(),t=this.line_alpha.get_value(),i=this.line_width.get_value();return!(null==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.get_value(),alpha:this.line_alpha.get_value(),width:this.line_width.get_value(),join:this.line_join.get_value(),cap:this.line_cap.get_value(),dash:this.line_dash.get_value(),offset:this.line_dash_offset.get_value()}}set_value(e){const t=this.line_color.get_value(),i=this.line_alpha.get_value();e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.get_value(),e.lineJoin=this.line_join.get_value(),e.lineCap=this.line_cap.get_value(),e.lineDash=r(this.line_dash.get_value()),e.lineDashOffset=this.line_dash_offset.get_value()}}i.Line=u,u.__name__=\"Line\";class c extends n.VisualUniforms{get doit(){const e=this.line_color.value,t=this.line_alpha.value,i=this.line_width.value;return!(0==e||0==t||0==i)}apply(e){const{doit:t}=this;return t&&(this.set_value(e),e.stroke()),t}values(){return{color:this.line_color.value,alpha:this.line_alpha.value,width:this.line_width.value,join:this.line_join.value,cap:this.line_cap.value,dash:this.line_dash.value,offset:this.line_dash_offset.value}}set_value(e){const t=this.line_color.value,i=this.line_alpha.value;e.strokeStyle=(0,o.color2css)(t,i),e.lineWidth=this.line_width.value,e.lineJoin=this.line_join.value,e.lineCap=this.line_cap.value,e.lineDash=r(this.line_dash.value),e.lineDashOffset=this.line_dash_offset.value}}i.LineScalar=c,c.__name__=\"LineScalar\";class d extends n.VisualUniforms{get doit(){const{line_color:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{line_alpha:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{line_width:i}=this;return!i.is_Scalar()||0!=i.value}apply(e,t){const{doit:i}=this;return i&&(this.set_vectorize(e,t),e.stroke()),i}values(e){return{color:this.line_color.get(e),alpha:this.line_alpha.get(e),width:this.line_width.get(e),join:this.line_join.get(e),cap:this.line_cap.get(e),dash:this.line_dash.get(e),offset:this.line_dash_offset.get(e)}}set_vectorize(e,t){const i=this.line_color.get(t),l=this.line_alpha.get(t),s=this.line_width.get(t),a=this.line_join.get(t),n=this.line_cap.get(t),h=this.line_dash.get(t),_=this.line_dash_offset.get(t);e.strokeStyle=(0,o.color2css)(i,l),e.lineWidth=s,e.lineJoin=a,e.lineCap=n,e.lineDash=r(h),e.lineDashOffset=_}}i.LineVector=d,d.__name__=\"LineVector\",u.prototype.type=\"line\",u.prototype.attrs=Object.keys(h.Line),c.prototype.type=\"line\",c.prototype.attrs=Object.keys(h.LineScalar),d.prototype.type=\"line\",d.prototype.attrs=Object.keys(h.LineVector)},\n", + " function _(t,s,o,i,r){i();class e{constructor(t,s=\"\"){this.obj=t,this.prefix=s;const o=this;this._props=[];for(const i of this.attrs){const r=t.model.properties[s+i];r.change.connect((()=>this.update())),o[i]=r,this._props.push(r)}}*[Symbol.iterator](){yield*this._props}update(){}}o.VisualProperties=e,e.__name__=\"VisualProperties\";class p{constructor(t,s=\"\"){this.obj=t,this.prefix=s;for(const o of this.attrs)Object.defineProperty(this,o,{get:()=>t[s+o]})}*[Symbol.iterator](){for(const t of this.attrs)yield this.obj.model.properties[this.prefix+t]}update(){}}o.VisualUniforms=p,p.__name__=\"VisualUniforms\"},\n", + " function _(e,l,t,a,c){a();const r=e(1),o=(0,r.__importStar)(e(18)),n=e(20),i=(0,r.__importStar)(e(21)),_=e(13);t.Line={line_color:[i.Nullable(i.Color),\"black\"],line_alpha:[i.Alpha,1],line_width:[i.Number,1],line_join:[n.LineJoin,\"bevel\"],line_cap:[n.LineCap,\"butt\"],line_dash:[i.Or(n.LineDash,i.Array(i.Number)),[]],line_dash_offset:[i.Number,0]},t.Fill={fill_color:[i.Nullable(i.Color),\"gray\"],fill_alpha:[i.Alpha,1]},t.Hatch={hatch_color:[i.Nullable(i.Color),\"black\"],hatch_alpha:[i.Alpha,1],hatch_scale:[i.Number,12],hatch_pattern:[i.Nullable(i.Or(n.HatchPatternType,i.String)),null],hatch_weight:[i.Number,1],hatch_extra:[i.Dict(i.AnyRef()),{}]},t.Text={text_color:[i.Nullable(i.Color),\"#444444\"],text_alpha:[i.Alpha,1],text_font:[o.Font,\"helvetica\"],text_font_size:[i.FontSize,\"16px\"],text_font_style:[n.FontStyle,\"normal\"],text_align:[n.TextAlign,\"left\"],text_baseline:[n.TextBaseline,\"bottom\"],text_line_height:[i.Number,1.2]},t.LineScalar={line_color:[o.ColorScalar,\"black\"],line_alpha:[o.NumberScalar,1],line_width:[o.NumberScalar,1],line_join:[o.LineJoinScalar,\"bevel\"],line_cap:[o.LineCapScalar,\"butt\"],line_dash:[o.LineDashScalar,[]],line_dash_offset:[o.NumberScalar,0]},t.FillScalar={fill_color:[o.ColorScalar,\"gray\"],fill_alpha:[o.NumberScalar,1]},t.HatchScalar={hatch_color:[o.ColorScalar,\"black\"],hatch_alpha:[o.NumberScalar,1],hatch_scale:[o.NumberScalar,12],hatch_pattern:[o.NullStringScalar,null],hatch_weight:[o.NumberScalar,1],hatch_extra:[o.AnyScalar,{}]},t.TextScalar={text_color:[o.ColorScalar,\"#444444\"],text_alpha:[o.NumberScalar,1],text_font:[o.FontScalar,\"helvetica\"],text_font_size:[o.FontSizeScalar,\"16px\"],text_font_style:[o.FontStyleScalar,\"normal\"],text_align:[o.TextAlignScalar,\"left\"],text_baseline:[o.TextBaselineScalar,\"bottom\"],text_line_height:[o.NumberScalar,1.2]},t.LineVector={line_color:[o.ColorSpec,\"black\"],line_alpha:[o.NumberSpec,1],line_width:[o.NumberSpec,1],line_join:[o.LineJoinSpec,\"bevel\"],line_cap:[o.LineCapSpec,\"butt\"],line_dash:[o.LineDashSpec,[]],line_dash_offset:[o.NumberSpec,0]},t.FillVector={fill_color:[o.ColorSpec,\"gray\"],fill_alpha:[o.NumberSpec,1]},t.HatchVector={hatch_color:[o.ColorSpec,\"black\"],hatch_alpha:[o.NumberSpec,1],hatch_scale:[o.NumberSpec,12],hatch_pattern:[o.NullStringSpec,null],hatch_weight:[o.NumberSpec,1],hatch_extra:[o.AnyScalar,{}]},t.TextVector={text_color:[o.ColorSpec,\"#444444\"],text_alpha:[o.NumberSpec,1],text_font:[o.FontSpec,\"helvetica\"],text_font_size:[o.FontSizeSpec,\"16px\"],text_font_style:[o.FontStyleSpec,\"normal\"],text_align:[o.TextAlignSpec,\"left\"],text_baseline:[o.TextBaselineSpec,\"bottom\"],text_line_height:[o.NumberSpec,1.2]},t.attrs_of=function(e,l,t,a=!1){const c={};for(const r of(0,_.keys)(t)){const t=`${l}${r}`,o=e[t];c[a?t:r]=o}return c}},\n", + " function _(l,t,e,i,s){i();const a=l(1),o=l(47),r=(0,a.__importStar)(l(48)),_=l(22);class c extends o.VisualProperties{get doit(){const l=this.fill_color.get_value(),t=this.fill_alpha.get_value();return!(null==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.get_value(),alpha:this.fill_alpha.get_value()}}set_value(l){const t=this.fill_color.get_value(),e=this.fill_alpha.get_value();l.fillStyle=(0,_.color2css)(t,e)}}e.Fill=c,c.__name__=\"Fill\";class h extends o.VisualUniforms{get doit(){const l=this.fill_color.value,t=this.fill_alpha.value;return!(0==l||0==t)}apply(l,t){const{doit:e}=this;return e&&(this.set_value(l),l.fill(t)),e}values(){return{color:this.fill_color.value,alpha:this.fill_alpha.value}}set_value(l){const t=this.fill_color.value,e=this.fill_alpha.value;l.fillStyle=(0,_.color2css)(t,e)}}e.FillScalar=h,h.__name__=\"FillScalar\";class u extends o.VisualUniforms{get doit(){const{fill_color:l}=this;if(l.is_Scalar()&&0==l.value)return!1;const{fill_alpha:t}=this;return!t.is_Scalar()||0!=t.value}apply(l,t,e){const{doit:i}=this;return i&&(this.set_vectorize(l,t),l.fill(e)),i}values(l){return{color:this.fill_color.get(l),alpha:this.fill_alpha.get(l)}}set_vectorize(l,t){const e=this.fill_color.get(t),i=this.fill_alpha.get(t);l.fillStyle=(0,_.color2css)(e,i)}}e.FillVector=u,u.__name__=\"FillVector\",c.prototype.type=\"fill\",c.prototype.attrs=Object.keys(r.Fill),h.prototype.type=\"fill\",h.prototype.attrs=Object.keys(r.FillScalar),u.prototype.type=\"fill\",u.prototype.attrs=Object.keys(r.FillVector)},\n", + " function _(t,e,l,s,_){s();const i=t(1),a=t(47),o=(0,i.__importStar)(t(48)),n=t(22);class h extends a.VisualProperties{get doit(){const t=this.text_color.get_value(),e=this.text_alpha.get_value();return!(null==t||0==e)}values(){return{color:this.text_color.get_value(),alpha:this.text_alpha.get_value(),font:this.text_font.get_value(),font_size:this.text_font_size.get_value(),font_style:this.text_font_style.get_value(),align:this.text_align.get_value(),baseline:this.text_baseline.get_value(),line_height:this.text_line_height.get_value()}}set_value(t){const e=this.text_color.get_value(),l=this.text_alpha.get_value();t.fillStyle=(0,n.color2css)(e,l),t.font=this.font_value(),t.textAlign=this.text_align.get_value(),t.textBaseline=this.text_baseline.get_value()}font_value(){return`${this.text_font_style.get_value()} ${this.text_font_size.get_value()} ${this.text_font.get_value()}`}}l.Text=h,h.__name__=\"Text\";class x extends a.VisualUniforms{get doit(){const t=this.text_color.value,e=this.text_alpha.value;return!(0==t||0==e)}values(){return{color:this.text_color.value,alpha:this.text_alpha.value,font:this.text_font.value,font_size:this.text_font_size.value,font_style:this.text_font_style.value,align:this.text_align.value,baseline:this.text_baseline.value,line_height:this.text_line_height.value}}set_value(t){const e=this.text_color.value,l=this.text_alpha.value,s=this.font_value(),_=this.text_align.value,i=this.text_baseline.value;t.fillStyle=(0,n.color2css)(e,l),t.font=s,t.textAlign=_,t.textBaseline=i}font_value(){return`${this.text_font_style.value} ${this.text_font_size.value} ${this.text_font.value}`}}l.TextScalar=x,x.__name__=\"TextScalar\";class u extends a.VisualUniforms{values(t){return{color:this.text_color.get(t),alpha:this.text_alpha.get(t),font:this.text_font.get(t),font_size:this.text_font_size.get(t),font_style:this.text_font_style.get(t),align:this.text_align.get(t),baseline:this.text_baseline.get(t),line_height:this.text_line_height.get(t)}}get doit(){const{text_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{text_alpha:e}=this;return!e.is_Scalar()||0!=e.value}set_vectorize(t,e){const l=this.text_color.get(e),s=this.text_alpha.get(e),_=this.font_value(e),i=this.text_align.get(e),a=this.text_baseline.get(e);t.fillStyle=(0,n.color2css)(l,s),t.font=_,t.textAlign=i,t.textBaseline=a}font_value(t){return`${this.text_font_style.get(t)} ${this.text_font_size.get(t)} ${this.text_font.get(t)}`}}l.TextVector=u,u.__name__=\"TextVector\",h.prototype.type=\"text\",h.prototype.attrs=Object.keys(o.Text),x.prototype.type=\"text\",x.prototype.attrs=Object.keys(o.TextScalar),u.prototype.type=\"text\",u.prototype.attrs=Object.keys(o.TextVector)},\n", + " function _(t,e,a,r,i){r();const h=t(1),s=t(47),n=t(52),c=(0,h.__importStar)(t(18)),_=(0,h.__importStar)(t(48));class l extends s.VisualProperties{constructor(){super(...arguments),this._update_iteration=0}update(){if(this._update_iteration++,this._hatch_image=null,!this.doit)return;const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_scale.get_value(),r=this.hatch_pattern.get_value(),i=this.hatch_weight.get_value(),h=t=>{this._hatch_image=t},s=this.hatch_extra.get_value()[r];if(null!=s){const r=s.get_pattern(t,e,a,i);if(r instanceof Promise){const{_update_iteration:t}=this;r.then((e=>{this._update_iteration==t&&(h(e),this.obj.request_render())}))}else h(r)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,r,t,e,a,i);h(c)}}get doit(){const t=this.hatch_color.get_value(),e=this.hatch_alpha.get_value(),a=this.hatch_pattern.get_value();return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){const e=this.pattern(t);t.fillStyle=null!=e?e:\"transparent\"}pattern(t){const e=this._hatch_image;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.get_value(),e=this.hatch_extra.get_value()[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.Hatch=l,l.__name__=\"Hatch\";class o extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const t=this.hatch_color.value,e=this.hatch_alpha.value,a=this.hatch_pattern.value;return!(null==t||0==e||\" \"==a||\"blank\"==a||null==a)}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=this.hatch_color.value,a=this.hatch_alpha.value,r=this.hatch_scale.value,i=this.hatch_pattern.value,h=this.hatch_weight.value,s=e=>{this._hatch_image=new c.UniformScalar(e,t)},_=this.hatch_extra.value[i];if(null!=_){const t=_.get_pattern(e,a,r,h);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(s(t),this.obj.request_render())}))}else s(t)}else{const t=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(t,i,e,a,r,h);s(c)}}get doit(){return this._static_doit}apply(t,e){const{doit:a}=this;return a&&(this.set_value(t),t.layer.undo_transform((()=>t.fill(e)))),a}set_value(t){var e;t.fillStyle=null!==(e=this.pattern(t))&&void 0!==e?e:\"transparent\"}pattern(t){const e=this._hatch_image.value;return null==e?null:t.createPattern(e,this.repetition())}repetition(){const t=this.hatch_pattern.value,e=this.hatch_extra.value[t];if(null==e)return\"repeat\";switch(e.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchScalar=o,o.__name__=\"HatchScalar\";class u extends s.VisualUniforms{constructor(){super(...arguments),this._static_doit=!1,this._update_iteration=0}_compute_static_doit(){const{hatch_color:t}=this;if(t.is_Scalar()&&0==t.value)return!1;const{hatch_alpha:e}=this;if(e.is_Scalar()&&0==e.value)return!1;const{hatch_pattern:a}=this;if(a.is_Scalar()){const t=a.value;if(\" \"==t||\"blank\"==t||null==t)return!1}return!0}update(){this._update_iteration++;const t=this.hatch_color.length;if(this._hatch_image=new c.UniformScalar(null,t),this._static_doit=this._compute_static_doit(),!this._static_doit)return;const e=(t,e,a,r,i,h)=>{const s=this.hatch_extra.value[t];if(null!=s){const t=s.get_pattern(e,a,r,i);if(t instanceof Promise){const{_update_iteration:e}=this;t.then((t=>{this._update_iteration==e&&(h(t),this.obj.request_render())}))}else h(t)}else{const s=this.obj.canvas.create_layer(),c=(0,n.get_pattern)(s,t,e,a,r,i);h(c)}};if(this.hatch_color.is_Scalar()&&this.hatch_alpha.is_Scalar()&&this.hatch_scale.is_Scalar()&&this.hatch_pattern.is_Scalar()&&this.hatch_weight.is_Scalar()){const a=this.hatch_color.value,r=this.hatch_alpha.value,i=this.hatch_scale.value;e(this.hatch_pattern.value,a,r,i,this.hatch_weight.value,(e=>{this._hatch_image=new c.UniformScalar(e,t)}))}else{const a=new Array(t);a.fill(null),this._hatch_image=new c.UniformVector(a);for(let r=0;r{a[r]=t}))}}}get doit(){return this._static_doit}apply(t,e,a){const{doit:r}=this;return r&&(this.set_vectorize(t,e),t.layer.undo_transform((()=>t.fill(a)))),r}set_vectorize(t,e){var a;t.fillStyle=null!==(a=this.pattern(t,e))&&void 0!==a?a:\"transparent\"}pattern(t,e){const a=this._hatch_image.get(e);return null==a?null:t.createPattern(a,this.repetition(e))}repetition(t){const e=this.hatch_pattern.get(t),a=this.hatch_extra.value[e];if(null==a)return\"repeat\";switch(a.repetition){case\"repeat\":return\"repeat\";case\"repeat_x\":return\"repeat-x\";case\"repeat_y\":return\"repeat-y\";case\"no_repeat\":return\"no-repeat\"}}}a.HatchVector=u,u.__name__=\"HatchVector\",l.prototype.type=\"hatch\",l.prototype.attrs=Object.keys(_.Hatch),o.prototype.type=\"hatch\",o.prototype.attrs=Object.keys(_.HatchScalar),u.prototype.type=\"hatch\",u.prototype.attrs=Object.keys(_.HatchVector)},\n", + " function _(e,o,a,s,r){s();const i=e(22);function l(e,o,a){e.moveTo(0,a+.5),e.lineTo(o,a+.5),e.stroke()}function n(e,o,a){e.moveTo(a+.5,0),e.lineTo(a+.5,o),e.stroke()}function t(e,o){e.moveTo(0,o),e.lineTo(o,0),e.stroke(),e.moveTo(0,0),e.lineTo(o,o),e.stroke()}a.hatch_aliases={\" \":\"blank\",\".\":\"dot\",o:\"ring\",\"-\":\"horizontal_line\",\"|\":\"vertical_line\",\"+\":\"cross\",'\"':\"horizontal_dash\",\":\":\"vertical_dash\",\"@\":\"spiral\",\"/\":\"right_diagonal_line\",\"\\\\\":\"left_diagonal_line\",x:\"diagonal_cross\",\",\":\"right_diagonal_dash\",\"`\":\"left_diagonal_dash\",v:\"horizontal_wave\",\">\":\"vertical_wave\",\"*\":\"criss_cross\"},a.get_pattern=function(e,o,s,r,c,k){return e.resize(c,c),e.prepare(),function(e,o,s,r,c,k){var _;const T=c,v=T/2,h=v/2,d=(0,i.color2css)(s,r);switch(e.strokeStyle=d,e.fillStyle=d,e.lineCap=\"square\",e.lineWidth=k,null!==(_=a.hatch_aliases[o])&&void 0!==_?_:o){case\"blank\":break;case\"dot\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.fill();break;case\"ring\":e.arc(v,v,v/2,0,2*Math.PI,!0),e.stroke();break;case\"horizontal_line\":l(e,T,v);break;case\"vertical_line\":n(e,T,v);break;case\"cross\":l(e,T,v),n(e,T,v);break;case\"horizontal_dash\":l(e,v,v);break;case\"vertical_dash\":n(e,v,v);break;case\"spiral\":{const o=T/30;e.moveTo(v,v);for(let a=0;a<360;a++){const s=.1*a,r=v+o*s*Math.cos(s),i=v+o*s*Math.sin(s);e.lineTo(r,i)}e.stroke();break}case\"right_diagonal_line\":e.moveTo(.5-h,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(5*h+.5,0),e.stroke(),e.stroke();break;case\"left_diagonal_line\":e.moveTo(h+.5,T),e.lineTo(.5-h,0),e.stroke(),e.moveTo(3*h+.5,T),e.lineTo(h+.5,0),e.stroke(),e.moveTo(5*h+.5,T),e.lineTo(3*h+.5,0),e.stroke(),e.stroke();break;case\"diagonal_cross\":t(e,T);break;case\"right_diagonal_dash\":e.moveTo(h+.5,3*h+.5),e.lineTo(3*h+.5,h+.5),e.stroke();break;case\"left_diagonal_dash\":e.moveTo(h+.5,h+.5),e.lineTo(3*h+.5,3*h+.5),e.stroke();break;case\"horizontal_wave\":e.moveTo(0,h),e.lineTo(v,3*h),e.lineTo(T,h),e.stroke();break;case\"vertical_wave\":e.moveTo(h,0),e.lineTo(3*h,v),e.lineTo(h,T),e.stroke();break;case\"criss_cross\":t(e,T),l(e,T,v),n(e,T,v)}}(e.ctx,o,s,r,c,k),e.canvas}},\n", + " function _(e,t,s,n,c){var a;n();const i=e(14),r=e(8),l=e(13),o=e(26),_=e(19);class h extends i.HasProps{constructor(e){super(e)}get is_syncable(){return this.syncable}[o.equals](e,t){return t.eq(this.id,e.id)&&super[o.equals](e,t)}initialize(){super.initialize(),this._js_callbacks=new Map}connect_signals(){super.connect_signals(),this._update_property_callbacks(),this.connect(this.properties.js_property_callbacks.change,(()=>this._update_property_callbacks())),this.connect(this.properties.js_event_callbacks.change,(()=>this._update_event_callbacks())),this.connect(this.properties.subscribed_events.change,(()=>this._update_event_callbacks()))}_process_event(e){var t;for(const s of null!==(t=this.js_event_callbacks[e.event_name])&&void 0!==t?t:[])s.execute(e);null!=this.document&&this.subscribed_events.some((t=>t==e.event_name))&&this.document.event_manager.send_event(e)}trigger_event(e){null!=this.document&&(e.origin=this,this.document.event_manager.trigger(e))}_update_event_callbacks(){null!=this.document?this.document.event_manager.subscribed_models.add(this):_.logger.warn(\"WARNING: Document not defined for updating event callbacks\")}_update_property_callbacks(){const e=e=>{const[t,s=null]=e.split(\":\");return null!=s?this.properties[s][t]:this[t]};for(const[t,s]of this._js_callbacks){const n=e(t);for(const e of s)this.disconnect(n,e)}this._js_callbacks.clear();for(const[t,s]of(0,l.entries)(this.js_property_callbacks)){const n=s.map((e=>()=>e.execute(this)));this._js_callbacks.set(t,n);const c=e(t);for(const e of n)this.connect(c,e)}}_doc_attached(){(0,l.isEmpty)(this.js_event_callbacks)&&0==this.subscribed_events.length||this._update_event_callbacks()}_doc_detached(){this.document.event_manager.subscribed_models.delete(this)}select(e){if((0,r.isString)(e))return[...this.references()].filter((t=>t instanceof h&&t.name===e));if(e.prototype instanceof i.HasProps)return[...this.references()].filter((t=>t instanceof e));throw new Error(\"invalid selector\")}select_one(e){const t=this.select(e);switch(t.length){case 0:return null;case 1:return t[0];default:throw new Error(\"found more than one object matching given selector\")}}}s.Model=h,a=h,h.__name__=\"Model\",a.define((({Any:e,Unknown:t,Boolean:s,String:n,Array:c,Dict:a,Nullable:i})=>({tags:[c(t),[]],name:[i(n),null],js_property_callbacks:[a(c(e)),{}],js_event_callbacks:[a(c(e)),{}],subscribed_events:[c(n),[]],syncable:[s,!0]})))},\n", + " function _(e,t,s,a,r){var c,n;a();const _=e(12),o=e(53),i=e(55),l=e(59),u=e(61),g=e(62),h=e(57),p=e(63),m=e(67);class x{constructor(e,t){this.x_scale=e,this.y_scale=t,this.x_source=this.x_scale.source_range,this.y_source=this.y_scale.source_range,this.ranges=[this.x_source,this.y_source],this.scales=[this.x_scale,this.y_scale]}map_to_screen(e,t){return[this.x_scale.v_compute(e),this.y_scale.v_compute(t)]}map_from_screen(e,t){return[this.x_scale.v_invert(e),this.y_scale.v_invert(t)]}}s.CoordinateTransform=x,x.__name__=\"CoordinateTransform\";class y extends o.Model{constructor(e){super(e)}get x_ranges(){return new Map([[\"default\",this.x_source]])}get y_ranges(){return new Map([[\"default\",this.y_source]])}_get_scale(e,t,s){if(e instanceof m.FactorRange!=t instanceof g.CategoricalScale)throw new Error(`Range ${e.type} is incompatible is Scale ${t.type}`);t instanceof u.LogScale&&e instanceof p.DataRange1d&&(e.scale_hint=\"log\");const a=t.clone();return a.setv({source_range:e,target_range:s}),a}get_transform(e){const{x_source:t,x_scale:s,x_target:a}=this,r=this._get_scale(t,s,a),{y_source:c,y_scale:n,y_target:_}=this,o=this._get_scale(c,n,_),i=new v({source_scale:r,source_range:r.source_range,target_scale:e.x_scale,target_range:e.x_target}),l=new v({source_scale:o,source_range:o.source_range,target_scale:e.y_scale,target_range:e.y_target});return new x(i,l)}}s.CoordinateMapping=y,c=y,y.__name__=\"CoordinateMapping\",c.define((({Ref:e})=>({x_source:[e(h.Range),()=>new p.DataRange1d],y_source:[e(h.Range),()=>new p.DataRange1d],x_scale:[e(i.Scale),()=>new l.LinearScale],y_scale:[e(i.Scale),()=>new l.LinearScale],x_target:[e(h.Range)],y_target:[e(h.Range)]})));class v extends i.Scale{constructor(e){super(e)}get s_compute(){const e=this.source_scale.s_compute,t=this.target_scale.s_compute;return s=>t(e(s))}get s_invert(){const e=this.source_scale.s_invert,t=this.target_scale.s_invert;return s=>e(t(s))}compute(e){return this.s_compute(e)}v_compute(e){const{s_compute:t}=this;return(0,_.map)(e,t)}invert(e){return this.s_invert(e)}v_invert(e){const{s_invert:t}=this;return(0,_.map)(e,t)}}s.CompositeScale=v,n=v,v.__name__=\"CompositeScale\",n.internal((({Ref:e})=>({source_scale:[e(i.Scale)],target_scale:[e(i.Scale)]})))},\n", + " function _(e,t,r,n,s){var _;n();const a=e(56),c=e(57),o=e(58),i=e(24);class u extends a.Transform{constructor(e){super(e)}compute(e){return this.s_compute(e)}v_compute(e){const t=new i.ScreenArray(e.length),{s_compute:r}=this;for(let n=0;n({source_range:[e(c.Range)],target_range:[e(o.Range1d)]})))},\n", + " function _(n,s,o,r,c){r();const e=n(53);class t extends e.Model{constructor(n){super(n)}}o.Transform=t,t.__name__=\"Transform\"},\n", + " function _(e,t,n,i,s){var r;i();const a=e(53);class l extends a.Model{constructor(e){super(e),this.have_updated_interactively=!1}get is_reversed(){return this.start>this.end}get is_valid(){return isFinite(this.min)&&isFinite(this.max)}get span(){return Math.abs(this.end-this.start)}}n.Range=l,r=l,l.__name__=\"Range\",r.define((({Number:e,Tuple:t,Or:n,Auto:i,Nullable:s})=>({bounds:[s(n(t(s(e),s(e)),i)),null],min_interval:[s(e),null],max_interval:[s(e),null]}))),r.internal((({Array:e,AnyRef:t})=>({plots:[e(t()),[]]})))},\n", + " function _(t,e,s,n,r){var a;n();const i=t(57);class _ extends i.Range{constructor(t){super(t)}_set_auto_bounds(){if(\"auto\"==this.bounds){const t=Math.min(this._reset_start,this._reset_end),e=Math.max(this._reset_start,this._reset_end);this.setv({bounds:[t,e]},{silent:!0})}}initialize(){super.initialize(),this._set_auto_bounds()}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}reset(){this._set_auto_bounds();const{_reset_start:t,_reset_end:e}=this;this.start!=t||this.end!=e?this.setv({start:t,end:e}):this.change.emit()}map(t){return new _({start:t(this.start),end:t(this.end)})}widen(t){let{start:e,end:s}=this;return this.is_reversed?(e+=t,s-=t):(e-=t,s+=t),new _({start:e,end:s})}}s.Range1d=_,a=_,_.__name__=\"Range1d\",a.define((({Number:t,Nullable:e})=>({start:[t,0],end:[t,1],reset_start:[e(t),null,{on_update(t,e){e._reset_start=null!=t?t:e.start}}],reset_end:[e(t),null,{on_update(t,e){e._reset_end=null!=t?t:e.end}}]})))},\n", + " function _(t,e,n,r,s){r();const a=t(60);class _ extends a.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e]=this._linear_compute_state();return n=>t*n+e}get s_invert(){const[t,e]=this._linear_compute_state();return n=>(n-e)/t}_linear_compute_state(){const t=this.source_range.start,e=this.source_range.end,n=this.target_range.start,r=(this.target_range.end-n)/(e-t);return[r,-r*t+n]}}n.LinearScale=_,_.__name__=\"LinearScale\"},\n", + " function _(n,c,o,s,e){s();const t=n(55);class u extends t.Scale{constructor(n){super(n)}}o.ContinuousScale=u,u.__name__=\"ContinuousScale\"},\n", + " function _(t,e,a,o,s){o();const r=t(60);class n extends r.ContinuousScale{constructor(t){super(t)}get s_compute(){const[t,e,a,o]=this._compute_state();return s=>{if(0==a)return 0;{const r=(Math.log(s)-o)/a;return isFinite(r)?r*t+e:NaN}}}get s_invert(){const[t,e,a,o]=this._compute_state();return s=>{const r=(s-e)/t;return Math.exp(a*r+o)}}_get_safe_factor(t,e){let a=t<0?0:t,o=e<0?0:e;if(a==o)if(0==a)[a,o]=[1,10];else{const t=Math.log(a)/Math.log(10);a=10**Math.floor(t),o=Math.ceil(t)!=Math.floor(t)?10**Math.ceil(t):10**(Math.ceil(t)+1)}return[a,o]}_compute_state(){const t=this.source_range.start,e=this.source_range.end,a=this.target_range.start,o=this.target_range.end-a,[s,r]=this._get_safe_factor(t,e);let n,c;0==s?(n=Math.log(r),c=0):(n=Math.log(r)-Math.log(s),c=Math.log(s));return[o,a,n,c]}}a.LogScale=n,n.__name__=\"LogScale\"},\n", + " function _(t,e,c,a,s){a();const n=t(55),r=t(59),{_linear_compute_state:o}=r.LinearScale.prototype;class l extends n.Scale{constructor(t){super(t)}get s_compute(){const[t,e]=o.call(this),c=this.source_range;return a=>t*c.synthetic(a)+e}get s_invert(){const[t,e]=o.call(this);return c=>(c-e)/t}}c.CategoricalScale=l,l.__name__=\"CategoricalScale\"},\n", + " function _(t,i,n,e,a){e();const s=t(1);var l;const _=t(64),o=t(20),r=t(9),h=t(19),d=(0,s.__importStar)(t(65)),u=t(66);class g extends _.DataRange{constructor(t){super(t),this.have_updated_interactively=!1}initialize(){super.initialize(),this._initial_start=this.start,this._initial_end=this.end,this._initial_range_padding=this.range_padding,this._initial_range_padding_units=this.range_padding_units,this._initial_follow=this.follow,this._initial_follow_interval=this.follow_interval,this._initial_default_span=this.default_span,this._plot_bounds=new Map}get min(){return Math.min(this.start,this.end)}get max(){return Math.max(this.start,this.end)}computed_renderers(){const{renderers:t,names:i}=this,n=(0,r.concat)(this.plots.map((t=>t.data_renderers)));return(0,u.compute_renderers)(0==t.length?\"auto\":t,n,i)}_compute_plot_bounds(t,i){let n=d.empty();for(const e of t){const t=i.get(e);null==t||!e.visible&&this.only_visible||(n=d.union(n,t))}return n}adjust_bounds_for_aspect(t,i){const n=d.empty();let e=t.x1-t.x0;e<=0&&(e=1);let a=t.y1-t.y0;a<=0&&(a=1);const s=.5*(t.x1+t.x0),l=.5*(t.y1+t.y0);return el&&(\"start\"==this.follow?a=e+s*l:\"end\"==this.follow&&(e=a-s*l)),[e,a]}update(t,i,n,e){if(this.have_updated_interactively)return;const a=this.computed_renderers();let s=this._compute_plot_bounds(a,t);null!=e&&(s=this.adjust_bounds_for_aspect(s,e)),this._plot_bounds.set(n,s);const[l,_]=this._compute_min_max(this._plot_bounds.entries(),i);let[o,r]=this._compute_range(l,_);null!=this._initial_start&&(\"log\"==this.scale_hint?this._initial_start>0&&(o=this._initial_start):o=this._initial_start),null!=this._initial_end&&(\"log\"==this.scale_hint?this._initial_end>0&&(r=this._initial_end):r=this._initial_end);let h=!1;\"auto\"==this.bounds&&(this.setv({bounds:[o,r]},{silent:!0}),h=!0);const[d,u]=[this.start,this.end];if(o!=d||r!=u){const t={};o!=d&&(t.start=o),r!=u&&(t.end=r),this.setv(t),h=!1}h&&this.change.emit()}reset(){this.have_updated_interactively=!1,this.setv({range_padding:this._initial_range_padding,range_padding_units:this._initial_range_padding_units,follow:this._initial_follow,follow_interval:this._initial_follow_interval,default_span:this._initial_default_span},{silent:!0}),this.change.emit()}}n.DataRange1d=g,l=g,g.__name__=\"DataRange1d\",l.define((({Boolean:t,Number:i,Nullable:n})=>({start:[i],end:[i],range_padding:[i,.1],range_padding_units:[o.PaddingUnits,\"percent\"],flipped:[t,!1],follow:[n(o.StartEnd),null],follow_interval:[n(i),null],default_span:[i,2],only_visible:[t,!1]}))),l.internal((({Enum:t})=>({scale_hint:[t(\"log\",\"auto\"),\"auto\"]})))},\n", + " function _(e,n,a,r,s){var t;r();const c=e(57);class _ extends c.Range{constructor(e){super(e)}}a.DataRange=_,t=_,_.__name__=\"DataRange\",t.define((({String:e,Array:n,AnyRef:a})=>({names:[n(e),[]],renderers:[n(a()),[]]})))},\n", + " function _(t,i,e,h,r){h();const s=t(24),n=t(26),{min:x,max:y}=Math;e.empty=function(){return{x0:1/0,y0:1/0,x1:-1/0,y1:-1/0}},e.positive_x=function(){return{x0:Number.MIN_VALUE,y0:-1/0,x1:1/0,y1:1/0}},e.positive_y=function(){return{x0:-1/0,y0:Number.MIN_VALUE,x1:1/0,y1:1/0}},e.union=function(t,i){return{x0:x(t.x0,i.x0),x1:y(t.x1,i.x1),y0:x(t.y0,i.y0),y1:y(t.y1,i.y1)}};class o{constructor(t){if(null==t)this.x0=0,this.y0=0,this.x1=0,this.y1=0;else if(\"x0\"in t){const{x0:i,y0:e,x1:h,y1:r}=t;if(!(i<=h&&e<=r))throw new Error(`invalid bbox {x0: ${i}, y0: ${e}, x1: ${h}, y1: ${r}}`);this.x0=i,this.y0=e,this.x1=h,this.y1=r}else if(\"x\"in t){const{x:i,y:e,width:h,height:r}=t;if(!(h>=0&&r>=0))throw new Error(`invalid bbox {x: ${i}, y: ${e}, width: ${h}, height: ${r}}`);this.x0=i,this.y0=e,this.x1=i+h,this.y1=e+r}else{let i,e,h,r;if(\"width\"in t)if(\"left\"in t)i=t.left,e=i+t.width;else if(\"right\"in t)e=t.right,i=e-t.width;else{const h=t.width/2;i=t.hcenter-h,e=t.hcenter+h}else i=t.left,e=t.right;if(\"height\"in t)if(\"top\"in t)h=t.top,r=h+t.height;else if(\"bottom\"in t)r=t.bottom,h=r-t.height;else{const i=t.height/2;h=t.vcenter-i,r=t.vcenter+i}else h=t.top,r=t.bottom;if(!(i<=e&&h<=r))throw new Error(`invalid bbox {left: ${i}, top: ${h}, right: ${e}, bottom: ${r}}`);this.x0=i,this.y0=h,this.x1=e,this.y1=r}}static from_rect({left:t,right:i,top:e,bottom:h}){return new o({x0:Math.min(t,i),y0:Math.min(e,h),x1:Math.max(t,i),y1:Math.max(e,h)})}equals(t){return this.x0==t.x0&&this.y0==t.y0&&this.x1==t.x1&&this.y1==t.y1}[n.equals](t,i){return i.eq(this.x0,t.x0)&&i.eq(this.y0,t.y0)&&i.eq(this.x1,t.x1)&&i.eq(this.y1,t.y1)}toString(){return`BBox({left: ${this.left}, top: ${this.top}, width: ${this.width}, height: ${this.height}})`}get left(){return this.x0}get top(){return this.y0}get right(){return this.x1}get bottom(){return this.y1}get p0(){return[this.x0,this.y0]}get p1(){return[this.x1,this.y1]}get x(){return this.x0}get y(){return this.y0}get width(){return this.x1-this.x0}get height(){return this.y1-this.y0}get size(){return{width:this.width,height:this.height}}get rect(){const{x0:t,y0:i,x1:e,y1:h}=this;return{p0:{x:t,y:i},p1:{x:e,y:i},p2:{x:e,y:h},p3:{x:t,y:h}}}get box(){const{x:t,y:i,width:e,height:h}=this;return{x:t,y:i,width:e,height:h}}get h_range(){return{start:this.x0,end:this.x1}}get v_range(){return{start:this.y0,end:this.y1}}get ranges(){return[this.h_range,this.v_range]}get aspect(){return this.width/this.height}get hcenter(){return(this.left+this.right)/2}get vcenter(){return(this.top+this.bottom)/2}get area(){return this.width*this.height}relative(){const{width:t,height:i}=this;return new o({x:0,y:0,width:t,height:i})}translate(t,i){const{x:e,y:h,width:r,height:s}=this;return new o({x:t+e,y:i+h,width:r,height:s})}relativize(t,i){return[t-this.x,i-this.y]}contains(t,i){return this.x0<=t&&t<=this.x1&&this.y0<=i&&i<=this.y1}clip(t,i){return tthis.x1&&(t=this.x1),ithis.y1&&(i=this.y1),[t,i]}grow_by(t){return new o({left:this.left-t,right:this.right+t,top:this.top-t,bottom:this.bottom+t})}shrink_by(t){return new o({left:this.left+t,right:this.right-t,top:this.top+t,bottom:this.bottom-t})}union(t){return new o({x0:x(this.x0,t.x0),y0:x(this.y0,t.y0),x1:y(this.x1,t.x1),y1:y(this.y1,t.y1)})}intersection(t){return this.intersects(t)?new o({x0:y(this.x0,t.x0),y0:y(this.y0,t.y0),x1:x(this.x1,t.x1),y1:x(this.y1,t.y1)}):null}intersects(t){return!(t.x1this.x1||t.y1this.y1)}get xview(){return{compute:t=>this.left+t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.left;for(let h=0;hthis.bottom-t,v_compute:t=>{const i=new s.ScreenArray(t.length),e=this.bottom;for(let h=0;h0&&(r=r.filter((n=>(0,l.includes)(t,n.name)))),r}},\n", + " function _(t,n,e,i,s){var r;i();const a=t(57),o=t(20),g=t(21),p=t(24),c=t(9),l=t(8),u=t(11);function h(t,n,e=0){const i=new Map;for(let s=0;sa.get(t).value)));r.set(t,{value:l/s,mapping:a}),o+=s+n+p}return[r,(a.size-1)*n+g]}function _(t,n,e,i,s=0){var r;const a=new Map,o=new Map;for(const[n,e,i]of t){const t=null!==(r=o.get(n))&&void 0!==r?r:[];o.set(n,[...t,[e,i]])}let g=s,p=0;for(const[t,s]of o){const r=s.length,[o,l]=d(s,e,i,g);p+=l;const u=(0,c.sum)(s.map((([t])=>o.get(t).value)));a.set(t,{value:u/r,mapping:o}),g+=r+n+l}return[a,(o.size-1)*n+p]}e.Factor=(0,g.Or)(g.String,(0,g.Tuple)(g.String,g.String),(0,g.Tuple)(g.String,g.String,g.String)),e.FactorSeq=(0,g.Or)((0,g.Array)(g.String),(0,g.Array)((0,g.Tuple)(g.String,g.String)),(0,g.Array)((0,g.Tuple)(g.String,g.String,g.String))),e.map_one_level=h,e.map_two_levels=d,e.map_three_levels=_;class f extends a.Range{constructor(t){super(t)}get min(){return this.start}get max(){return this.end}initialize(){super.initialize(),this._init(!0)}connect_signals(){super.connect_signals(),this.connect(this.properties.factors.change,(()=>this.reset())),this.connect(this.properties.factor_padding.change,(()=>this.reset())),this.connect(this.properties.group_padding.change,(()=>this.reset())),this.connect(this.properties.subgroup_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding.change,(()=>this.reset())),this.connect(this.properties.range_padding_units.change,(()=>this.reset()))}reset(){this._init(!1),this.change.emit()}_lookup(t){switch(t.length){case 1:{const[n]=t,e=this._mapping.get(n);return null!=e?e.value:NaN}case 2:{const[n,e]=t,i=this._mapping.get(n);if(null!=i){const t=i.mapping.get(e);if(null!=t)return t.value}return NaN}case 3:{const[n,e,i]=t,s=this._mapping.get(n);if(null!=s){const t=s.mapping.get(e);if(null!=t){const n=t.mapping.get(i);if(null!=n)return n.value}}return NaN}default:(0,u.unreachable)()}}synthetic(t){if((0,l.isNumber)(t))return t;if((0,l.isString)(t))return this._lookup([t]);let n=0;const e=t[t.length-1];return(0,l.isNumber)(e)&&(n=e,t=t.slice(0,-1)),this._lookup(t)+n}v_synthetic(t){const n=t.length,e=new p.ScreenArray(n);for(let i=0;i{if((0,c.every)(this.factors,l.isString)){const t=this.factors,[n,e]=h(t,this.factor_padding);return{levels:1,mapping:n,tops:null,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&2==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])))){const t=this.factors,[n,e]=d(t,this.group_padding,this.factor_padding),i=[...n.keys()];return{levels:2,mapping:n,tops:i,mids:null,inside_padding:e}}if((0,c.every)(this.factors,(t=>(0,l.isArray)(t)&&3==t.length&&(0,l.isString)(t[0])&&(0,l.isString)(t[1])&&(0,l.isString)(t[2])))){const t=this.factors,[n,e]=_(t,this.group_padding,this.subgroup_padding,this.factor_padding),i=[...n.keys()],s=[];for(const[t,e]of n)for(const n of e.mapping.keys())s.push([t,n]);return{levels:3,mapping:n,tops:i,mids:s,inside_padding:e}}(0,u.unreachable)()})();this._mapping=e,this.tops=i,this.mids=s;let a=0,o=this.factors.length+r;if(\"percent\"==this.range_padding_units){const t=(o-a)*this.range_padding/2;a-=t,o+=t}else a-=this.range_padding,o+=this.range_padding;this.setv({start:a,end:o,levels:n},{silent:t}),\"auto\"==this.bounds&&this.setv({bounds:[a,o]},{silent:!0})}}e.FactorRange=f,r=f,f.__name__=\"FactorRange\",r.define((({Number:t})=>({factors:[e.FactorSeq,[]],factor_padding:[t,0],subgroup_padding:[t,.8],group_padding:[t,1.4],range_padding:[t,0],range_padding_units:[o.PaddingUnits,\"percent\"],start:[t],end:[t]}))),r.internal((({Number:t,String:n,Array:e,Tuple:i,Nullable:s})=>({levels:[t],mids:[s(e(i(n,n))),null],tops:[s(e(n)),null]})))},\n", + " function _(t,e,s,a,i){a();const n=t(1);var _;const r=t(69),o=t(112),l=t(48),d=t(20),h=t(24),c=t(113),u=(0,n.__importStar)(t(18)),v=t(10);class p extends r.DataAnnotationView{async lazy_initialize(){await super.lazy_initialize();const{start:t,end:e}=this.model;null!=t&&(this.start=await(0,c.build_view)(t,{parent:this})),null!=e&&(this.end=await(0,c.build_view)(e,{parent:this}))}set_data(t){var e,s;super.set_data(t),null===(e=this.start)||void 0===e||e.set_data(t),null===(s=this.end)||void 0===s||s.set_data(t)}remove(){var t,e;null===(t=this.start)||void 0===t||t.remove(),null===(e=this.end)||void 0===e||e.remove(),super.remove()}map_data(){const{frame:t}=this.plot_view;\"data\"==this.model.start_units?(this._sx_start=this.coordinates.x_scale.v_compute(this._x_start),this._sy_start=this.coordinates.y_scale.v_compute(this._y_start)):(this._sx_start=t.bbox.xview.v_compute(this._x_start),this._sy_start=t.bbox.yview.v_compute(this._y_start)),\"data\"==this.model.end_units?(this._sx_end=this.coordinates.x_scale.v_compute(this._x_end),this._sy_end=this.coordinates.y_scale.v_compute(this._y_end)):(this._sx_end=t.bbox.xview.v_compute(this._x_end),this._sy_end=t.bbox.yview.v_compute(this._y_end));const{_sx_start:e,_sy_start:s,_sx_end:a,_sy_end:i}=this,n=e.length,_=this._angles=new h.ScreenArray(n);for(let t=0;t({x_start:[u.XCoordinateSpec,{field:\"x_start\"}],y_start:[u.YCoordinateSpec,{field:\"y_start\"}],start_units:[d.SpatialUnits,\"data\"],start:[e(t(o.ArrowHead)),null],x_end:[u.XCoordinateSpec,{field:\"x_end\"}],y_end:[u.YCoordinateSpec,{field:\"y_end\"}],end_units:[d.SpatialUnits,\"data\"],end:[e(t(o.ArrowHead)),()=>new o.OpenHead]})))},\n", + " function _(t,e,n,s,a){s();const o=t(1);var i;const c=t(40),r=t(70),_=t(75),l=t(78),h=(0,o.__importStar)(t(18));class d extends c.AnnotationView{constructor(){super(...arguments),this._initial_set_data=!1}connect_signals(){super.connect_signals();const t=()=>{this.set_data(this.model.source),this._rerender()};this.connect(this.model.change,t),this.connect(this.model.source.streaming,t),this.connect(this.model.source.patching,t),this.connect(this.model.source.change,t)}_rerender(){this.request_render()}set_data(t){const e=this;for(const n of this.model)if(n instanceof h.VectorSpec||n instanceof h.ScalarSpec)if(n instanceof h.BaseCoordinateSpec){const s=n.array(t);e[`_${n.attr}`]=s}else{const s=n.uniform(t);e[`${n.attr}`]=s}this.plot_model.use_map&&(null!=e._x&&l.inplace.project_xy(e._x,e._y),null!=e._xs&&l.inplace.project_xsys(e._xs,e._ys));for(const t of this.visuals)t.update()}_render(){this._initial_set_data||(this.set_data(this.model.source),this._initial_set_data=!0),this.map_data(),this.paint(this.layer.ctx)}}n.DataAnnotationView=d,d.__name__=\"DataAnnotationView\";class u extends c.Annotation{constructor(t){super(t)}}n.DataAnnotation=u,i=u,u.__name__=\"DataAnnotation\",i.define((({Ref:t})=>({source:[t(r.ColumnarDataSource),()=>new _.ColumnDataSource]})))},\n", + " function _(t,e,n,s,a){var i;s();const r=t(71),l=t(15),c=t(19),o=t(73),h=t(8),u=t(9),g=t(13),d=t(72),_=t(74),m=t(29);class w extends r.DataSource{constructor(t){super(t),this.selection_manager=new o.SelectionManager(this)}get_array(t){let e=this.data[t];return null==e?this.data[t]=e=[]:(0,h.isArray)(e)||(this.data[t]=e=Array.from(e)),e}initialize(){super.initialize(),this._select=new l.Signal0(this,\"select\"),this.inspect=new l.Signal(this,\"inspect\"),this.streaming=new l.Signal0(this,\"streaming\"),this.patching=new l.Signal(this,\"patching\")}get_column(t){const e=this.data[t];return null!=e?e:null}columns(){return(0,g.keys)(this.data)}get_length(t=!0){const e=(0,u.uniq)((0,g.values)(this.data).map((t=>(0,m.is_NDArray)(t)?t.shape[0]:t.length)));switch(e.length){case 0:return null;case 1:return e[0];default:{const n=\"data source has columns of inconsistent lengths\";if(t)return c.logger.warn(n),e.sort()[0];throw new Error(n)}}}get length(){var t;return null!==(t=this.get_length())&&void 0!==t?t:0}clear(){const t={};for(const e of this.columns())t[e]=new this.data[e].constructor(0);this.data=t}}n.ColumnarDataSource=w,i=w,w.__name__=\"ColumnarDataSource\",i.define((({Ref:t})=>({selection_policy:[t(_.SelectionPolicy),()=>new _.UnionRenderers]}))),i.internal((({AnyRef:t})=>({inspected:[t(),()=>new d.Selection]})))},\n", + " function _(e,c,n,t,o){var a;t();const s=e(53),r=e(72);class l extends s.Model{constructor(e){super(e)}}n.DataSource=l,a=l,l.__name__=\"DataSource\",a.define((({Ref:e})=>({selected:[e(r.Selection),()=>new r.Selection]})))},\n", + " function _(i,e,s,t,n){var l;t();const c=i(53),d=i(9),h=i(13);class _ extends c.Model{constructor(i){super(i)}get_view(){return this.view}get selected_glyph(){return this.selected_glyphs.length>0?this.selected_glyphs[0]:null}add_to_selected_glyphs(i){this.selected_glyphs.push(i)}update(i,e=!0,s=\"replace\"){switch(s){case\"replace\":this.indices=i.indices,this.line_indices=i.line_indices,this.multiline_indices=i.multiline_indices,this.image_indices=i.image_indices,this.view=i.view,this.selected_glyphs=i.selected_glyphs;break;case\"append\":this.update_through_union(i);break;case\"intersect\":this.update_through_intersection(i);break;case\"subtract\":this.update_through_subtraction(i)}}clear(){this.indices=[],this.line_indices=[],this.multiline_indices={},this.image_indices=[],this.view=null,this.selected_glyphs=[]}map(i){return new _(Object.assign(Object.assign({},this.attributes),{indices:this.indices.map(i),multiline_indices:(0,h.to_object)((0,h.entries)(this.multiline_indices).map((([e,s])=>[i(Number(e)),s]))),image_indices:this.image_indices.map((e=>Object.assign(Object.assign({},e),{index:i(e.index)})))}))}is_empty(){return 0==this.indices.length&&0==this.line_indices.length&&0==this.image_indices.length}update_through_union(i){this.indices=(0,d.union)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_intersection(i){this.indices=(0,d.intersection)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}update_through_subtraction(i){this.indices=(0,d.difference)(this.indices,i.indices),this.selected_glyphs=(0,d.union)(i.selected_glyphs,this.selected_glyphs),this.line_indices=(0,d.union)(i.line_indices,this.line_indices),this.view=i.view,this.multiline_indices=(0,h.merge)(i.multiline_indices,this.multiline_indices)}}s.Selection=_,l=_,_.__name__=\"Selection\",l.define((({Int:i,Array:e,Dict:s})=>({indices:[e(i),[]],line_indices:[e(i),[]],multiline_indices:[s(e(i)),{}]}))),l.internal((({Int:i,Array:e,AnyRef:s,Struct:t,Nullable:n})=>({selected_glyphs:[e(s()),[]],view:[n(s()),null],image_indices:[e(t({index:i,dim1:i,dim2:i,flat_index:i})),[]]})))},\n", + " function _(e,t,o,s,c){s();const n=e(72);function i(e){return\"GlyphRenderer\"==e.model.type}function l(e){return\"GraphRenderer\"==e.model.type}class r{constructor(e){this.source=e,this.inspectors=new Map}select(e,t,o,s=\"replace\"){const c=[],n=[];for(const t of e)i(t)?c.push(t):l(t)&&n.push(t);let r=!1;for(const e of n){const c=e.model.selection_policy.hit_test(t,e);r=r||e.model.selection_policy.do_selection(c,e.model,o,s)}if(c.length>0){const e=this.source.selection_policy.hit_test(t,c);r=r||this.source.selection_policy.do_selection(e,this.source,o,s)}return r}inspect(e,t){let o=!1;if(i(e)){const s=e.hit_test(t);if(null!=s){o=!s.is_empty();const c=this.get_or_create_inspector(e.model);c.update(s,!0,\"replace\"),this.source.setv({inspected:c},{silent:!0}),this.source.inspect.emit([e.model,{geometry:t}])}}else if(l(e)){const s=e.model.inspection_policy.hit_test(t,e);o=o||e.model.inspection_policy.do_inspection(s,t,e,!1,\"replace\")}return o}clear(e){this.source.selected.clear(),null!=e&&this.get_or_create_inspector(e.model).clear()}get_or_create_inspector(e){let t=this.inspectors.get(e);return null==t&&(t=new n.Selection,this.inspectors.set(e,t)),t}}o.SelectionManager=r,r.__name__=\"SelectionManager\"},\n", + " function _(e,t,n,s,o){s();const r=e(53);class c extends r.Model{do_selection(e,t,n,s){return null!=e&&(t.selected.update(e,n,s),t._select.emit(),!t.selected.is_empty())}}n.SelectionPolicy=c,c.__name__=\"SelectionPolicy\";class l extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_intersection(t);return e}return null}}n.IntersectRenderers=l,l.__name__=\"IntersectRenderers\";class _ extends c{hit_test(e,t){const n=[];for(const s of t){const t=s.hit_test(e);null!=t&&n.push(t)}if(n.length>0){const e=n[0];for(const t of n)e.update_through_union(t);return e}return null}}n.UnionRenderers=_,_.__name__=\"UnionRenderers\"},\n", + " function _(t,n,e,s,o){s();const r=t(1);var l;const c=t(70),i=t(8),a=t(13),u=(0,r.__importStar)(t(76)),h=t(77),d=t(35);function f(t,n,e){if((0,i.isArray)(t)){const s=t.concat(n);return null!=e&&s.length>e?s.slice(-e):s}if((0,i.isTypedArray)(t)){const s=t.length+n.length;if(null!=e&&s>e){const o=s-e,r=t.length;let l;t.length({data:[t(n),{}]})))},\n", + " function _(t,n,o,e,c){e(),o.concat=function(t,...n){let o=t.length;for(const t of n)o+=t.length;const e=new t.constructor(o);e.set(t,0);let c=t.length;for(const t of n)e.set(t,c),c+=t.length;return e}},\n", + " function _(n,o,t,e,f){function c(...n){const o=new Set;for(const t of n)for(const n of t)o.add(n);return o}e(),t.union=c,t.intersection=function(n,...o){const t=new Set;n:for(const e of n){for(const n of o)if(!n.has(e))continue n;t.add(e)}return t},t.difference=function(n,...o){const t=new Set(n);for(const n of c(...o))t.delete(n);return t}},\n", + " function _(n,t,e,o,r){o();const c=n(1),l=(0,c.__importDefault)(n(79)),i=(0,c.__importDefault)(n(80)),u=n(24),a=new i.default(\"GOOGLE\"),s=new i.default(\"WGS84\"),f=(0,l.default)(s,a);e.wgs84_mercator={compute:(n,t)=>isFinite(n)&&isFinite(t)?f.forward([n,t]):[NaN,NaN],invert:(n,t)=>isFinite(n)&&isFinite(t)?f.inverse([n,t]):[NaN,NaN]};const _={lon:[-20026376.39,20026376.39],lat:[-20048966.1,20048966.1]},p={lon:[-180,180],lat:[-85.06,85.06]},{min:g,max:h}=Math;function m(n,t){const o=g(n.length,t.length),r=(0,u.infer_type)(n,t),c=new r(o),l=new r(o);return e.inplace.project_xy(n,t,c,l),[c,l]}e.clip_mercator=function(n,t,e){const[o,r]=_[e];return[h(n,o),g(t,r)]},e.in_bounds=function(n,t){const[e,o]=p[t];return e2?void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name?\"number\"==typeof o.z?[o.x,o.y,o.z].concat(t.splice(3)):[o.x,o.y,t[2]].concat(t.splice(3)):[o.x,o.y].concat(t.splice(2)):[o.x,o.y]):(a=(0,c.default)(e,n,t,r),2===(i=Object.keys(t)).length||i.forEach((function(r){if(void 0!==e.name&&\"geocent\"===e.name||void 0!==n.name&&\"geocent\"===n.name){if(\"x\"===r||\"y\"===r||\"z\"===r)return}else if(\"x\"===r||\"y\"===r)return;a[r]=t[r]})),a)}function l(e){return e instanceof i.default?e:e.oProj?e.oProj:(0,i.default)(e)}t.default=function(e,n,t){e=l(e);var r,o=!1;return void 0===n?(n=e,e=u,o=!0):(void 0!==n.x||Array.isArray(n))&&(t=n,n=e,e=u,o=!0),n=l(n),t?f(e,n,t):(r={forward:function(t,r){return f(e,n,t,r)},inverse:function(t,r){return f(n,e,t,r)}},o&&(r.oProj=n),r)}},\n", + " function _(t,e,a,s,i){s();const l=t(1),u=(0,l.__importDefault)(t(81)),r=(0,l.__importDefault)(t(92)),d=(0,l.__importDefault)(t(93)),o=t(101),f=(0,l.__importDefault)(t(103)),p=(0,l.__importDefault)(t(104)),m=(0,l.__importDefault)(t(88)),n=t(105);function h(t,e){if(!(this instanceof h))return new h(t);e=e||function(t){if(t)throw t};var a=(0,u.default)(t);if(\"object\"==typeof a){var s=h.projections.get(a.projName);if(s){if(a.datumCode&&\"none\"!==a.datumCode){var i=(0,m.default)(f.default,a.datumCode);i&&(a.datum_params=a.datum_params||(i.towgs84?i.towgs84.split(\",\"):null),a.ellps=i.ellipse,a.datumName=i.datumName?i.datumName:a.datumCode)}a.k0=a.k0||1,a.axis=a.axis||\"enu\",a.ellps=a.ellps||\"wgs84\",a.lat1=a.lat1||a.lat0;var l=(0,o.sphere)(a.a,a.b,a.rf,a.ellps,a.sphere),d=(0,o.eccentricity)(l.a,l.b,l.rf,a.R_A),_=(0,n.getNadgrids)(a.nadgrids),c=a.datum||(0,p.default)(a.datumCode,a.datum_params,l.a,l.b,d.es,d.ep2,_);(0,r.default)(this,a),(0,r.default)(this,s),this.a=l.a,this.b=l.b,this.rf=l.rf,this.sphere=l.sphere,this.es=d.es,this.e=d.e,this.ep2=d.ep2,this.datum=c,this.init(),e(null,this)}else e(t)}else e(t)}h.projections=d.default,h.projections.start(),a.default=h},\n", + " function _(t,r,n,u,e){u();const f=t(1),i=(0,f.__importDefault)(t(82)),a=(0,f.__importDefault)(t(89)),o=(0,f.__importDefault)(t(84)),l=(0,f.__importDefault)(t(88));var C=[\"PROJECTEDCRS\",\"PROJCRS\",\"GEOGCS\",\"GEOCCS\",\"PROJCS\",\"LOCAL_CS\",\"GEODCRS\",\"GEODETICCRS\",\"GEODETICDATUM\",\"ENGCRS\",\"ENGINEERINGCRS\"];var d=[\"3857\",\"900913\",\"3785\",\"102113\"];n.default=function(t){if(!function(t){return\"string\"==typeof t}(t))return t;if(function(t){return t in i.default}(t))return i.default[t];if(function(t){return C.some((function(r){return t.indexOf(r)>-1}))}(t)){var r=(0,a.default)(t);if(function(t){var r=(0,l.default)(t,\"authority\");if(r){var n=(0,l.default)(r,\"epsg\");return n&&d.indexOf(n)>-1}}(r))return i.default[\"EPSG:3857\"];var n=function(t){var r=(0,l.default)(t,\"extension\");if(r)return(0,l.default)(r,\"proj4\")}(r);return n?(0,o.default)(n):r}return function(t){return\"+\"===t[0]}(t)?(0,o.default)(t):void 0}},\n", + " function _(t,r,i,e,n){e();const f=t(1),a=(0,f.__importDefault)(t(83)),l=(0,f.__importDefault)(t(84)),u=(0,f.__importDefault)(t(89));function o(t){var r=this;if(2===arguments.length){var i=arguments[1];\"string\"==typeof i?\"+\"===i.charAt(0)?o[t]=(0,l.default)(arguments[1]):o[t]=(0,u.default)(arguments[1]):o[t]=i}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?o.apply(r,t):o(t)}));if(\"string\"==typeof t){if(t in o)return o[t]}else\"EPSG\"in t?o[\"EPSG:\"+t.EPSG]=t:\"ESRI\"in t?o[\"ESRI:\"+t.ESRI]=t:\"IAU2000\"in t?o[\"IAU2000:\"+t.IAU2000]=t:console.log(t);return}}(0,a.default)(o),i.default=o},\n", + " function _(t,l,G,S,e){S(),G.default=function(t){t(\"EPSG:4326\",\"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\"),t(\"EPSG:4269\",\"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\"),t(\"EPSG:3857\",\"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\"),t.WGS84=t[\"EPSG:4326\"],t[\"EPSG:3785\"]=t[\"EPSG:3857\"],t.GOOGLE=t[\"EPSG:3857\"],t[\"EPSG:900913\"]=t[\"EPSG:3857\"],t[\"EPSG:102113\"]=t[\"EPSG:3857\"]}},\n", + " function _(t,n,o,a,u){a();const e=t(1),r=t(85),i=(0,e.__importDefault)(t(86)),f=(0,e.__importDefault)(t(87)),l=(0,e.__importDefault)(t(88));o.default=function(t){var n,o,a,u={},e=t.split(\"+\").map((function(t){return t.trim()})).filter((function(t){return t})).reduce((function(t,n){var o=n.split(\"=\");return o.push(!0),t[o[0].toLowerCase()]=o[1],t}),{}),c={proj:\"projName\",datum:\"datumCode\",rf:function(t){u.rf=parseFloat(t)},lat_0:function(t){u.lat0=t*r.D2R},lat_1:function(t){u.lat1=t*r.D2R},lat_2:function(t){u.lat2=t*r.D2R},lat_ts:function(t){u.lat_ts=t*r.D2R},lon_0:function(t){u.long0=t*r.D2R},lon_1:function(t){u.long1=t*r.D2R},lon_2:function(t){u.long2=t*r.D2R},alpha:function(t){u.alpha=parseFloat(t)*r.D2R},gamma:function(t){u.rectified_grid_angle=parseFloat(t)},lonc:function(t){u.longc=t*r.D2R},x_0:function(t){u.x0=parseFloat(t)},y_0:function(t){u.y0=parseFloat(t)},k_0:function(t){u.k0=parseFloat(t)},k:function(t){u.k0=parseFloat(t)},a:function(t){u.a=parseFloat(t)},b:function(t){u.b=parseFloat(t)},r_a:function(){u.R_A=!0},zone:function(t){u.zone=parseInt(t,10)},south:function(){u.utmSouth=!0},towgs84:function(t){u.datum_params=t.split(\",\").map((function(t){return parseFloat(t)}))},to_meter:function(t){u.to_meter=parseFloat(t)},units:function(t){u.units=t;var n=(0,l.default)(f.default,t);n&&(u.to_meter=n.to_meter)},from_greenwich:function(t){u.from_greenwich=t*r.D2R},pm:function(t){var n=(0,l.default)(i.default,t);u.from_greenwich=(n||parseFloat(t))*r.D2R},nadgrids:function(t){\"@null\"===t?u.datumCode=\"none\":u.nadgrids=t},axis:function(t){var n=\"ewnsud\";3===t.length&&-1!==n.indexOf(t.substr(0,1))&&-1!==n.indexOf(t.substr(1,1))&&-1!==n.indexOf(t.substr(2,1))&&(u.axis=t)},approx:function(){u.approx=!0}};for(n in e)o=e[n],n in c?\"function\"==typeof(a=c[n])?a(o):u[a]=o:u[n]=o;return\"string\"==typeof u.datumCode&&\"WGS84\"!==u.datumCode&&(u.datumCode=u.datumCode.toLowerCase()),u}},\n", + " function _(S,_,P,R,I){R(),P.PJD_3PARAM=1,P.PJD_7PARAM=2,P.PJD_GRIDSHIFT=3,P.PJD_WGS84=4,P.PJD_NODATUM=5,P.SRS_WGS84_SEMIMAJOR=6378137,P.SRS_WGS84_SEMIMINOR=6356752.314,P.SRS_WGS84_ESQUARED=.0066943799901413165,P.SEC_TO_RAD=484813681109536e-20,P.HALF_PI=Math.PI/2,P.SIXTH=.16666666666666666,P.RA4=.04722222222222222,P.RA6=.022156084656084655,P.EPSLN=1e-10,P.D2R=.017453292519943295,P.R2D=57.29577951308232,P.FORTPI=Math.PI/4,P.TWO_PI=2*Math.PI,P.SPI=3.14159265359},\n", + " function _(o,r,a,e,s){e();var n={};a.default=n,n.greenwich=0,n.lisbon=-9.131906111111,n.paris=2.337229166667,n.bogota=-74.080916666667,n.madrid=-3.687938888889,n.rome=12.452333333333,n.bern=7.439583333333,n.jakarta=106.807719444444,n.ferro=-17.666666666667,n.brussels=4.367975,n.stockholm=18.058277777778,n.athens=23.7163375,n.oslo=10.722916666667},\n", + " function _(t,e,f,o,u){o(),f.default={ft:{to_meter:.3048},\"us-ft\":{to_meter:1200/3937}}},\n", + " function _(e,r,t,a,n){a();var o=/[\\s_\\-\\/\\(\\)]/g;t.default=function(e,r){if(e[r])return e[r];for(var t,a=Object.keys(e),n=r.toLowerCase().replace(o,\"\"),f=-1;++f0?90:-90),e.lat_ts=e.lat1)}(n),n}},\n", + " function _(t,e,r,i,s){i(),r.default=function(t){return new d(t).output()};var h=/\\s/,o=/[A-Za-z]/,n=/[A-Za-z84]/,a=/[,\\]]/,u=/[\\d\\.E\\-\\+]/;function d(t){if(\"string\"!=typeof t)throw new Error(\"not a string\");this.text=t.trim(),this.level=0,this.place=0,this.root=null,this.stack=[],this.currentObject=null,this.state=1}d.prototype.readCharicter=function(){var t=this.text[this.place++];if(4!==this.state)for(;h.test(t);){if(this.place>=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},d.prototype.afterquote=function(t){if('\"'===t)return this.word+='\"',void(this.state=4);if(a.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in afterquote yet, index '+this.place)},d.prototype.afterItem=function(t){return\",\"===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):\"]\"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},d.prototype.number=function(t){if(!u.test(t)){if(a.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error(\"havn't handled \\\"\"+t+'\" in number yet, index '+this.place)}this.word+=t},d.prototype.quoted=function(t){'\"'!==t?this.word+=t:this.state=5},d.prototype.keyword=function(t){if(n.test(t))this.word+=t;else{if(\"[\"===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in keyword yet, index '+this.place);this.afterItem(t)}},d.prototype.neutral=function(t){if(o.test(t))return this.word=t,void(this.state=2);if('\"'===t)return this.word=\"\",void(this.state=4);if(u.test(t))return this.word=t,void(this.state=3);if(!a.test(t))throw new Error(\"havn't handled \\\"\"+t+'\" in neutral yet, index '+this.place);this.afterItem(t)},d.prototype.output=function(){for(;this.place90&&a*o.R2D<-90&&h*o.R2D>180&&h*o.R2D<-180)return null;if(Math.abs(Math.abs(a)-o.HALF_PI)<=o.EPSLN)return null;if(this.sphere)i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0+this.a*this.k0*Math.log(Math.tan(o.FORTPI+.5*a));else{var e=Math.sin(a),r=(0,l.default)(this.e,a,e);i=this.x0+this.a*this.k0*(0,n.default)(h-this.long0),s=this.y0-this.a*this.k0*Math.log(r)}return t.x=i,t.y=s,t}function M(t){var i,s,h=t.x-this.x0,a=t.y-this.y0;if(this.sphere)s=o.HALF_PI-2*Math.atan(Math.exp(-a/(this.a*this.k0)));else{var e=Math.exp(-a/(this.a*this.k0));if(-9999===(s=(0,u.default)(this.e,e)))return null}return i=(0,n.default)(this.long0+h/(this.a*this.k0)),t.x=i,t.y=s,t}s.init=f,s.forward=_,s.inverse=M,s.names=[\"Mercator\",\"Popular Visualisation Pseudo Mercator\",\"Mercator_1SP\",\"Mercator_Auxiliary_Sphere\",\"merc\"],s.default={init:f,forward:_,inverse:M,names:s.names}},\n", + " function _(t,n,r,u,a){u(),r.default=function(t,n,r){var u=t*n;return r/Math.sqrt(1-u*u)}},\n", + " function _(t,n,u,a,f){a();const e=t(1),o=t(85),_=(0,e.__importDefault)(t(97));u.default=function(t){return Math.abs(t)<=o.SPI?t:t-(0,_.default)(t)*o.TWO_PI}},\n", + " function _(n,t,u,f,c){f(),u.default=function(n){return n<0?-1:1}},\n", + " function _(t,n,a,o,u){o();const c=t(85);a.default=function(t,n,a){var o=t*a,u=.5*t;return o=Math.pow((1-o)/(1+o),u),Math.tan(.5*(c.HALF_PI-n))/o}},\n", + " function _(t,a,n,r,f){r();const h=t(85);n.default=function(t,a){for(var n,r,f=.5*t,o=h.HALF_PI-2*Math.atan(a),u=0;u<=15;u++)if(n=t*Math.sin(o),o+=r=h.HALF_PI-2*Math.atan(a*Math.pow((1-n)/(1+n),f))-o,Math.abs(r)<=1e-10)return o;return-9999}},\n", + " function _(n,i,e,t,r){function a(){}function f(n){return n}t(),e.init=a,e.forward=f,e.inverse=f,e.names=[\"longlat\",\"identity\"],e.default={init:a,forward:f,inverse:f,names:e.names}},\n", + " function _(t,r,e,a,n){a();const f=t(1),i=t(85),u=(0,f.__importStar)(t(102)),c=(0,f.__importDefault)(t(88));e.eccentricity=function(t,r,e,a){var n=t*t,f=r*r,u=(n-f)/n,c=0;return a?(n=(t*=1-u*(i.SIXTH+u*(i.RA4+u*i.RA6)))*t,u=0):c=Math.sqrt(u),{es:u,e:c,ep2:(n-f)/f}},e.sphere=function(t,r,e,a,n){if(!t){var f=(0,c.default)(u.default,a);f||(f=u.WGS84),t=f.a,r=f.b,e=f.rf}return e&&!r&&(r=(1-1/e)*t),(0===e||Math.abs(t-r)3&&(0===s.datum_params[3]&&0===s.datum_params[4]&&0===s.datum_params[5]&&0===s.datum_params[6]||(s.datum_type=d.PJD_7PARAM,s.datum_params[3]*=d.SEC_TO_RAD,s.datum_params[4]*=d.SEC_TO_RAD,s.datum_params[5]*=d.SEC_TO_RAD,s.datum_params[6]=s.datum_params[6]/1e6+1))),r&&(s.datum_type=d.PJD_GRIDSHIFT,s.grids=r),s.a=_,s.b=t,s.es=u,s.ep2=p,s}},\n", + " function _(t,e,n,r,i){r();var u={};function l(t){if(0===t.length)return null;var e=\"@\"===t[0];return e&&(t=t.slice(1)),\"null\"===t?{name:\"null\",mandatory:!e,grid:null,isNull:!0}:{name:t,mandatory:!e,grid:u[t]||null,isNull:!1}}function o(t){return t/3600*Math.PI/180}function a(t,e,n){return String.fromCharCode.apply(null,new Uint8Array(t.buffer.slice(e,n)))}function d(t){return t.map((function(t){return[o(t.longitudeShift),o(t.latitudeShift)]}))}function g(t,e,n){return{name:a(t,e+8,e+16).trim(),parent:a(t,e+24,e+24+8).trim(),lowerLatitude:t.getFloat64(e+72,n),upperLatitude:t.getFloat64(e+88,n),lowerLongitude:t.getFloat64(e+104,n),upperLongitude:t.getFloat64(e+120,n),latitudeInterval:t.getFloat64(e+136,n),longitudeInterval:t.getFloat64(e+152,n),gridNodeCount:t.getInt32(e+168,n)}}function s(t,e,n,r){for(var i=e+176,u=[],l=0;l1&&console.log(\"Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored\");var l=function(t,e,n){for(var r=176,i=[],u=0;ua.y||f>a.x||N1e-12&&Math.abs(n.y)>1e-12);if(d<0)return console.log(\"Inverse grid shift iterator failed to converge.\"),a;a.x=(0,u.default)(l.x+t.ll[0]),a.y=l.y+t.ll[1]}else isNaN(l.x)||(a.x=r.x+l.x,a.y=r.y+l.y);return a}function f(r,e){var t,a={x:r.x/e.del[0],y:r.y/e.del[1]},i=Math.floor(a.x),l=Math.floor(a.y),n=a.x-1*i,o=a.y-1*l,u={x:Number.NaN,y:Number.NaN};if(i<0||i>=e.lim[0])return u;if(l<0||l>=e.lim[1])return u;t=l*e.lim[0]+i;var d=e.cvs[t][0],s=e.cvs[t][1];t++;var y=e.cvs[t][0],f=e.cvs[t][1];t+=e.lim[0];var x=e.cvs[t][0],m=e.cvs[t][1];t--;var N=e.cvs[t][0],c=e.cvs[t][1],_=n*o,g=n*(1-o),v=(1-n)*(1-o),S=(1-n)*o;return u.x=v*d+g*y+S*N+_*x,u.y=v*s+g*f+S*c+_*m,u}t.default=function(r,e,t){if((0,o.compareDatums)(r,e))return t;if(r.datum_type===n.PJD_NODATUM||e.datum_type===n.PJD_NODATUM)return t;var a=r.a,i=r.es;if(r.datum_type===n.PJD_GRIDSHIFT){if(0!==s(r,!1,t))return;a=n.SRS_WGS84_SEMIMAJOR,i=n.SRS_WGS84_ESQUARED}var l=e.a,u=e.b,y=e.es;if(e.datum_type===n.PJD_GRIDSHIFT&&(l=n.SRS_WGS84_SEMIMAJOR,u=n.SRS_WGS84_SEMIMINOR,y=n.SRS_WGS84_ESQUARED),i===y&&a===l&&!d(r.datum_type)&&!d(e.datum_type))return t;if(t=(0,o.geodeticToGeocentric)(t,i,a),d(r.datum_type)&&(t=(0,o.geocentricToWgs84)(t,r.datum_type,r.datum_params)),d(e.datum_type)&&(t=(0,o.geocentricFromWgs84)(t,e.datum_type,e.datum_params)),t=(0,o.geocentricToGeodetic)(t,y,l,u),e.datum_type===n.PJD_GRIDSHIFT&&0!==s(e,!0,t))return;return t},t.applyGridShift=s},\n", + " function _(a,t,r,m,s){m();const u=a(85);r.compareDatums=function(a,t){return a.datum_type===t.datum_type&&(!(a.a!==t.a||Math.abs(a.es-t.es)>5e-11)&&(a.datum_type===u.PJD_3PARAM?a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]:a.datum_type!==u.PJD_7PARAM||a.datum_params[0]===t.datum_params[0]&&a.datum_params[1]===t.datum_params[1]&&a.datum_params[2]===t.datum_params[2]&&a.datum_params[3]===t.datum_params[3]&&a.datum_params[4]===t.datum_params[4]&&a.datum_params[5]===t.datum_params[5]&&a.datum_params[6]===t.datum_params[6]))},r.geodeticToGeocentric=function(a,t,r){var m,s,_,e,n=a.x,d=a.y,i=a.z?a.z:0;if(d<-u.HALF_PI&&d>-1.001*u.HALF_PI)d=-u.HALF_PI;else if(d>u.HALF_PI&&d<1.001*u.HALF_PI)d=u.HALF_PI;else{if(d<-u.HALF_PI)return{x:-1/0,y:-1/0,z:a.z};if(d>u.HALF_PI)return{x:1/0,y:1/0,z:a.z}}return n>Math.PI&&(n-=2*Math.PI),s=Math.sin(d),e=Math.cos(d),_=s*s,{x:((m=r/Math.sqrt(1-t*_))+i)*e*Math.cos(n),y:(m+i)*e*Math.sin(n),z:(m*(1-t)+i)*s}},r.geocentricToGeodetic=function(a,t,r,m){var s,_,e,n,d,i,p,P,y,z,M,o,A,c,x,h=1e-12,f=a.x,I=a.y,F=a.z?a.z:0;if(s=Math.sqrt(f*f+I*I),_=Math.sqrt(f*f+I*I+F*F),s/r1e-24&&A<30);return{x:c,y:Math.atan(M/Math.abs(z)),z:x}},r.geocentricToWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x+r[0],y:a.y+r[1],z:a.z+r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6];return{x:i*(a.x-d*a.y+n*a.z)+m,y:i*(d*a.x+a.y-e*a.z)+s,z:i*(-n*a.x+e*a.y+a.z)+_}}},r.geocentricFromWgs84=function(a,t,r){if(t===u.PJD_3PARAM)return{x:a.x-r[0],y:a.y-r[1],z:a.z-r[2]};if(t===u.PJD_7PARAM){var m=r[0],s=r[1],_=r[2],e=r[3],n=r[4],d=r[5],i=r[6],p=(a.x-m)/i,P=(a.y-s)/i,y=(a.z-_)/i;return{x:p+d*P-n*y,y:-d*p+P+e*y,z:n*p-e*P+y}}}},\n", + " function _(e,a,i,r,s){r(),i.default=function(e,a,i){var r,s,n,c=i.x,d=i.y,f=i.z||0,u={};for(n=0;n<3;n++)if(!a||2!==n||void 0!==i.z)switch(0===n?(r=c,s=-1!==\"ew\".indexOf(e.axis[n])?\"x\":\"y\"):1===n?(r=d,s=-1!==\"ns\".indexOf(e.axis[n])?\"y\":\"x\"):(r=f,s=\"z\"),e.axis[n]){case\"e\":u[s]=r;break;case\"w\":u[s]=-r;break;case\"n\":u[s]=r;break;case\"s\":u[s]=-r;break;case\"u\":void 0!==i[s]&&(u.z=r);break;case\"d\":void 0!==i[s]&&(u.z=-r);break;default:return null}return u}},\n", + " function _(n,t,e,u,f){u(),e.default=function(n){var t={x:n[0],y:n[1]};return n.length>2&&(t.z=n[2]),n.length>3&&(t.m=n[3]),t}},\n", + " function _(e,i,n,t,r){function o(e){if(\"function\"==typeof Number.isFinite){if(Number.isFinite(e))return;throw new TypeError(\"coordinates must be finite numbers\")}if(\"number\"!=typeof e||e!=e||!isFinite(e))throw new TypeError(\"coordinates must be finite numbers\")}t(),n.default=function(e){o(e.x),o(e.y)}},\n", + " function _(e,i,s,t,o){t();const n=e(1);var l,a,r,_,c;const d=e(53),v=e(42),u=(0,n.__importStar)(e(45)),h=e(48),m=(0,n.__importStar)(e(18));class T extends v.View{initialize(){super.initialize(),this.visuals=new u.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.parent.canvas}set_data(e){const i=this;for(const s of this.model){if(!(s instanceof m.VectorSpec||s instanceof m.ScalarSpec))continue;const t=s.uniform(e);i[`${s.attr}`]=t}}}s.ArrowHeadView=T,T.__name__=\"ArrowHeadView\";class p extends d.Model{constructor(e){super(e)}}s.ArrowHead=p,l=p,p.__name__=\"ArrowHead\",l.define((()=>({size:[m.NumberSpec,25]})));class V extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,0),e.lineTo(.5*s,s)}render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.stroke()}}}s.OpenHeadView=V,V.__name__=\"OpenHeadView\";class f extends p{constructor(e){super(e)}}s.OpenHead=f,a=f,f.__name__=\"OpenHead\",a.prototype.default_view=V,a.mixins(h.LineVector);class w extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._normal(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._normal(e,i),e.stroke())}_normal(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.closePath()}}s.NormalHeadView=w,w.__name__=\"NormalHeadView\";class H extends p{constructor(e){super(e)}}s.NormalHead=H,r=H,H.__name__=\"NormalHead\",r.prototype.default_view=w,r.mixins([h.LineVector,h.FillVector]),r.override({fill_color:\"black\"});class z extends T{clip(e,i){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.moveTo(.5*s,s),e.lineTo(.5*s,-2),e.lineTo(-.5*s,-2),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.lineTo(.5*s,s)}render(e,i){this.visuals.fill.doit&&(this.visuals.fill.set_vectorize(e,i),this._vee(e,i),e.fill()),this.visuals.line.doit&&(this.visuals.line.set_vectorize(e,i),this._vee(e,i),e.stroke())}_vee(e,i){const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,s),e.lineTo(0,0),e.lineTo(-.5*s,s),e.lineTo(0,.5*s),e.closePath()}}s.VeeHeadView=z,z.__name__=\"VeeHeadView\";class x extends p{constructor(e){super(e)}}s.VeeHead=x,_=x,x.__name__=\"VeeHead\",_.prototype.default_view=z,_.mixins([h.LineVector,h.FillVector]),_.override({fill_color:\"black\"});class g extends T{render(e,i){if(this.visuals.line.doit){this.visuals.line.set_vectorize(e,i);const s=this.size.get(i);e.beginPath(),e.moveTo(.5*s,0),e.lineTo(-.5*s,0),e.stroke()}}clip(e,i){}}s.TeeHeadView=g,g.__name__=\"TeeHeadView\";class b extends p{constructor(e){super(e)}}s.TeeHead=b,c=b,b.__name__=\"TeeHead\",c.prototype.default_view=g,c.mixins(h.LineVector)},\n", + " function _(n,e,t,i,o){i();const s=n(9);async function c(n,e,t){const i=new n(Object.assign(Object.assign({},t),{model:e}));return i.initialize(),await i.lazy_initialize(),i}t.build_view=async function(n,e={parent:null},t=(n=>n.default_view)){const i=await c(t(n),n,e);return i.connect_signals(),i},t.build_views=async function(n,e,t={parent:null},i=(n=>n.default_view)){const o=(0,s.difference)([...n.keys()],e);for(const e of o)n.get(e).remove(),n.delete(e);const a=[],f=e.filter((e=>!n.has(e)));for(const e of f){const o=await c(i(e),e,t);n.set(e,o),a.push(o)}for(const n of a)n.connect_signals();return a},t.remove_views=function(n){for(const[e,t]of n)t.remove(),n.delete(e)}},\n", + " function _(e,s,_,i,l){i();const t=e(1);var o;const r=e(115),p=(0,t.__importStar)(e(48));class h extends r.UpperLowerView{paint(e){e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);for(let s=this._upper_sx.length-1;s>=0;s--)e.lineTo(this._upper_sx[s],this._upper_sy[s]);e.closePath(),this.visuals.fill.apply(e),e.beginPath(),e.moveTo(this._lower_sx[0],this._lower_sy[0]);for(let s=0,_=this._lower_sx.length;s<_;s++)e.lineTo(this._lower_sx[s],this._lower_sy[s]);this.visuals.line.apply(e),e.beginPath(),e.moveTo(this._upper_sx[0],this._upper_sy[0]);for(let s=0,_=this._upper_sx.length;s<_;s++)e.lineTo(this._upper_sx[s],this._upper_sy[s]);this.visuals.line.apply(e)}}_.BandView=h,h.__name__=\"BandView\";class n extends r.UpperLower{constructor(e){super(e)}}_.Band=n,o=n,n.__name__=\"Band\",o.prototype.default_view=h,o.mixins([p.Line,p.Fill]),o.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(e,t,i,s,o){s();const r=e(1);var n;const p=e(69),a=e(20),_=(0,r.__importStar)(e(18));class h extends p.DataAnnotationView{map_data(){const{frame:e}=this.plot_view,t=this.model.dimension,i=this.coordinates.x_scale,s=this.coordinates.y_scale,o=\"height\"==t?s:i,r=\"height\"==t?i:s,n=\"height\"==t?e.bbox.yview:e.bbox.xview,p=\"height\"==t?e.bbox.xview:e.bbox.yview;let a,_,h;a=\"data\"==this.model.properties.lower.units?o.v_compute(this._lower):n.v_compute(this._lower),_=\"data\"==this.model.properties.upper.units?o.v_compute(this._upper):n.v_compute(this._upper),h=\"data\"==this.model.properties.base.units?r.v_compute(this._base):p.v_compute(this._base);const[d,c]=\"height\"==t?[1,0]:[0,1],u=[a,h],l=[_,h];this._lower_sx=u[d],this._lower_sy=u[c],this._upper_sx=l[d],this._upper_sy=l[c]}}i.UpperLowerView=h,h.__name__=\"UpperLowerView\";class d extends _.CoordinateSpec{get dimension(){return\"width\"==this.obj.dimension?\"x\":\"y\"}get units(){var e;return null!==(e=this.spec.units)&&void 0!==e?e:\"data\"}}i.XOrYCoordinateSpec=d,d.__name__=\"XOrYCoordinateSpec\";class c extends p.DataAnnotation{constructor(e){super(e)}}i.UpperLower=c,n=c,c.__name__=\"UpperLower\",n.define((()=>({dimension:[a.Dimension,\"height\"],lower:[d,{field:\"lower\"}],upper:[d,{field:\"upper\"}],base:[d,{field:\"base\"}]})))},\n", + " function _(t,o,i,n,e){n();const s=t(1);var l;const r=t(40),a=(0,s.__importStar)(t(48)),c=t(20),h=t(65);i.EDGE_TOLERANCE=2.5;class b extends r.AnnotationView{constructor(){super(...arguments),this.bbox=new h.BBox}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{left:t,right:o,top:i,bottom:n}=this.model;if(null==t&&null==o&&null==i&&null==n)return;const{frame:e}=this.plot_view,s=this.coordinates.x_scale,l=this.coordinates.y_scale,r=(t,o,i,n,e)=>{let s;return s=null!=t?this.model.screen?t:\"data\"==o?i.compute(t):n.compute(t):e,s};this.bbox=h.BBox.from_rect({left:r(t,this.model.left_units,s,e.bbox.xview,e.bbox.left),right:r(o,this.model.right_units,s,e.bbox.xview,e.bbox.right),top:r(i,this.model.top_units,l,e.bbox.yview,e.bbox.top),bottom:r(n,this.model.bottom_units,l,e.bbox.yview,e.bbox.bottom)}),this._paint_box()}_paint_box(){const{ctx:t}=this.layer;t.save();const{left:o,top:i,width:n,height:e}=this.bbox;t.beginPath(),t.rect(o,i,n,e),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t),t.restore()}interactive_bbox(){const t=this.model.line_width+i.EDGE_TOLERANCE;return this.bbox.grow_by(t)}interactive_hit(t,o){if(null==this.model.in_cursor)return!1;return this.interactive_bbox().contains(t,o)}cursor(t,o){const{left:i,right:n,bottom:e,top:s}=this.bbox;return Math.abs(t-i)<3||Math.abs(t-n)<3?this.model.ew_cursor:Math.abs(o-e)<3||Math.abs(o-s)<3?this.model.ns_cursor:this.bbox.contains(t,o)?this.model.in_cursor:null}}i.BoxAnnotationView=b,b.__name__=\"BoxAnnotationView\";class u extends r.Annotation{constructor(t){super(t)}update({left:t,right:o,top:i,bottom:n}){this.setv({left:t,right:o,top:i,bottom:n,screen:!0})}}i.BoxAnnotation=u,l=u,u.__name__=\"BoxAnnotation\",l.prototype.default_view=b,l.mixins([a.Line,a.Fill,a.Hatch]),l.define((({Number:t,Nullable:o})=>({top:[o(t),null],top_units:[c.SpatialUnits,\"data\"],bottom:[o(t),null],bottom_units:[c.SpatialUnits,\"data\"],left:[o(t),null],left_units:[c.SpatialUnits,\"data\"],right:[o(t),null],right_units:[c.SpatialUnits,\"data\"],render_mode:[c.RenderMode,\"canvas\"]}))),l.internal((({Boolean:t,String:o,Nullable:i})=>({screen:[t,!1],ew_cursor:[i(o),null],ns_cursor:[i(o),null],in_cursor:[i(o),null]}))),l.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(t,e,i,o,n){o();const a=t(1);var r;const s=t(40),l=t(118),_=t(126),c=t(127),h=t(130),u=t(168),p=t(131),m=t(192),g=t(132),d=t(173),f=t(172),w=t(196),b=t(204),v=t(206),x=t(133),y=t(20),k=(0,a.__importStar)(t(48)),z=t(9),j=t(207),C=t(208),L=t(211),B=t(123),S=t(11),M=t(113),T=t(65),A=t(8);class O extends s.AnnotationView{get orientation(){return this._orientation}initialize(){super.initialize();const{ticker:t,formatter:e,color_mapper:i}=this.model;this._ticker=\"auto\"!=t?t:(()=>{switch(!0){case i instanceof w.LogColorMapper:return new u.LogTicker;case i instanceof w.ScanningColorMapper:return new u.BinnedTicker({mapper:i});case i instanceof w.CategoricalColorMapper:return new u.CategoricalTicker;default:return new u.BasicTicker}})(),this._formatter=\"auto\"!=e?e:(()=>{switch(!0){case this._ticker instanceof u.LogTicker:return new m.LogTickFormatter;case i instanceof w.CategoricalColorMapper:return new m.CategoricalTickFormatter;default:return new m.BasicTickFormatter}})(),this._major_range=(()=>{if(i instanceof w.CategoricalColorMapper){const{factors:t}=i;return new v.FactorRange({factors:t})}if(i instanceof f.ContinuousColorMapper){const{min:t,max:e}=i.metrics;return new v.Range1d({start:t,end:e})}(0,S.unreachable)()})(),this._major_scale=(()=>{if(i instanceof w.LinearColorMapper)return new b.LinearScale;if(i instanceof w.LogColorMapper)return new b.LogScale;if(i instanceof w.ScanningColorMapper){const{binning:t}=i.metrics;return new b.LinearInterpolationScale({binning:t})}if(i instanceof w.CategoricalColorMapper)return new b.CategoricalScale;(0,S.unreachable)()})(),this._minor_range=new v.Range1d({start:0,end:1}),this._minor_scale=new b.LinearScale;const o=k.attrs_of(this.model,\"major_label_\",k.Text,!0),n=k.attrs_of(this.model,\"major_tick_\",k.Line,!0),a=k.attrs_of(this.model,\"minor_tick_\",k.Line,!0),r=k.attrs_of(this.model,\"title_\",k.Text),s=i instanceof w.CategoricalColorMapper?c.CategoricalAxis:i instanceof w.LogColorMapper?c.LogAxis:c.LinearAxis;this._axis=new s(Object.assign(Object.assign(Object.assign({ticker:this._ticker,formatter:this._formatter,major_tick_in:this.model.major_tick_in,major_tick_out:this.model.major_tick_out,minor_tick_in:this.model.minor_tick_in,minor_tick_out:this.model.minor_tick_out,major_label_standoff:this.model.label_standoff,major_label_overrides:this.model.major_label_overrides,major_label_policy:this.model.major_label_policy,axis_line_color:null},o),n),a));const{title:_}=this.model;_&&(this._title=new l.Title(Object.assign({text:_,standoff:this.model.title_standoff},r)))}async lazy_initialize(){await super.lazy_initialize();const t=this,e={get parent(){return t.parent},get root(){return t.root},get frame(){return t._frame},get canvas_view(){return t.parent.canvas_view},request_layout(){t.parent.request_layout()}};this._axis_view=await(0,M.build_view)(this._axis,{parent:e}),null!=this._title&&(this._title_view=await(0,M.build_view)(this._title,{parent:e}))}remove(){var t;null===(t=this._title_view)||void 0===t||t.remove(),this._axis_view.remove(),super.remove()}connect_signals(){super.connect_signals(),this.connect(this._ticker.change,(()=>this.request_render())),this.connect(this._formatter.change,(()=>this.request_render())),this.connect(this.model.color_mapper.metrics_change,(()=>{const t=this._major_range,e=this._major_scale,{color_mapper:i}=this.model;if(i instanceof f.ContinuousColorMapper&&t instanceof v.Range1d){const{min:e,max:o}=i.metrics;t.setv({start:e,end:o})}if(i instanceof w.ScanningColorMapper&&e instanceof b.LinearInterpolationScale){const{binning:t}=i.metrics;e.binning=t}this._set_canvas_image(),this.plot_view.request_layout()}))}_set_canvas_image(){const{orientation:t}=this,e=(()=>{const{palette:e}=this.model.color_mapper;return\"vertical\"==t?(0,z.reversed)(e):e})(),[i,o]=\"vertical\"==t?[1,e.length]:[e.length,1],n=this._image=document.createElement(\"canvas\");n.width=i,n.height=o;const a=n.getContext(\"2d\"),r=a.getImageData(0,0,i,o),s=new w.LinearColorMapper({palette:e}).rgba_mapper.v_compute((0,z.range)(0,e.length));r.data.set(s),a.putImageData(r,0,0)}update_layout(){const{location:t,width:e,height:i,padding:o,margin:n}=this.model,[a,r]=(()=>{if(!(0,A.isString)(t))return[\"end\",\"start\"];switch(t){case\"top_left\":return[\"start\",\"start\"];case\"top\":case\"top_center\":return[\"start\",\"center\"];case\"top_right\":return[\"start\",\"end\"];case\"bottom_left\":return[\"end\",\"start\"];case\"bottom\":case\"bottom_center\":return[\"end\",\"center\"];case\"bottom_right\":return[\"end\",\"end\"];case\"left\":case\"center_left\":return[\"center\",\"start\"];case\"center\":case\"center_center\":return[\"center\",\"center\"];case\"right\":case\"center_right\":return[\"center\",\"end\"]}})(),s=this._orientation=(()=>{const{orientation:t}=this.model;return\"auto\"==t?null!=this.panel?this.panel.is_horizontal?\"horizontal\":\"vertical\":\"start\"==r||\"end\"==r||\"center\"==r&&\"center\"==a?\"vertical\":\"horizontal\":t})(),l=new C.NodeLayout,c=new C.VStack,h=new C.VStack,u=new C.HStack,p=new C.HStack;l.absolute=!0,c.absolute=!0,h.absolute=!0,u.absolute=!0,p.absolute=!0;const[m,g,d,f]=(()=>\"horizontal\"==s?[this._major_scale,this._minor_scale,this._major_range,this._minor_range]:[this._minor_scale,this._major_scale,this._minor_range,this._major_range])();this._frame=new _.CartesianFrame(m,g,d,f),l.on_resize((t=>this._frame.set_geometry(t)));const w=new L.BorderLayout;this._inner_layout=w,w.absolute=!0,w.center_panel=l,w.top_panel=c,w.bottom_panel=h,w.left_panel=u,w.right_panel=p;const b={left:o,right:o,top:o,bottom:o},v=(()=>{if(null==this.panel){if((0,A.isString)(t))return{left:n,right:n,top:n,bottom:n};{const[e,i]=t;return{left:e,right:n,top:n,bottom:i}}}if(!(0,A.isString)(t)){const[e,i]=t;return w.fixup_geometry=(t,o)=>{const n=t,a=this.layout.bbox,{width:r,height:s}=t;if(t=new T.BBox({left:a.left+e,bottom:a.bottom-i,width:r,height:s}),null!=o){const e=t.left-n.left,i=t.top-n.top,{left:a,top:r,width:s,height:l}=o;o=new T.BBox({left:a+e,top:r+i,width:s,height:l})}return[t,o]},{left:e,right:0,top:0,bottom:i}}w.fixup_geometry=(t,e)=>{const i=t;if(\"horizontal\"==s){const{top:e,width:i,height:o}=t;if(\"end\"==r){const{right:n}=this.layout.bbox;t=new T.BBox({right:n,top:e,width:i,height:o})}else if(\"center\"==r){const{hcenter:n}=this.layout.bbox;t=new T.BBox({hcenter:Math.round(n),top:e,width:i,height:o})}}else{const{left:e,width:i,height:o}=t;if(\"end\"==a){const{bottom:n}=this.layout.bbox;t=new T.BBox({left:e,bottom:n,width:i,height:o})}else if(\"center\"==a){const{vcenter:n}=this.layout.bbox;t=new T.BBox({left:e,vcenter:Math.round(n),width:i,height:o})}}if(null!=e){const o=t.left-i.left,n=t.top-i.top,{left:a,top:r,width:s,height:l}=e;e=new T.BBox({left:a+o,top:r+n,width:s,height:l})}return[t,e]}})();let x,y,k,z;if(w.padding=b,null!=this.panel?(x=\"max\",y=void 0,k=void 0,z=void 0):\"auto\"==(\"horizontal\"==s?e:i)?(x=\"fixed\",y=25*this.model.color_mapper.palette.length,k={percent:.3},z={percent:.8}):(x=\"fit\",y=void 0),\"horizontal\"==s){const t=\"auto\"==e?void 0:e,o=\"auto\"==i?25:i;w.set_sizing({width_policy:x,height_policy:\"min\",width:y,min_width:k,max_width:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"auto\"==e?\"fit\":\"fixed\",height_policy:\"fixed\",width:t,height:o})}else{const t=\"auto\"==e?25:e,o=\"auto\"==i?void 0:i;w.set_sizing({width_policy:\"min\",height_policy:x,height:y,min_height:k,max_height:z,halign:r,valign:a,margin:v}),w.center_panel.set_sizing({width_policy:\"fixed\",height_policy:\"auto\"==i?\"fit\":\"fixed\",width:t,height:o})}c.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),h.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),u.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),p.set_sizing({width_policy:\"min\",height_policy:\"fit\"});const{_title_view:S}=this;null!=S&&(\"horizontal\"==s?(S.panel=new B.Panel(\"above\"),S.update_layout(),c.children.push(S.layout)):(S.panel=new B.Panel(\"left\"),S.update_layout(),u.children.push(S.layout)));const{panel:M}=this,O=null!=M&&s==M.orientation?M.side:\"horizontal\"==s?\"below\":\"right\",R=(()=>{switch(O){case\"above\":return c;case\"below\":return h;case\"left\":return u;case\"right\":return p}})(),{_axis_view:F}=this;if(F.panel=new B.Panel(O),F.update_layout(),R.children.push(F.layout),null!=this.panel){const t=new j.Grid([{layout:w,row:0,col:0}]);t.absolute=!0,\"horizontal\"==s?t.set_sizing({width_policy:\"max\",height_policy:\"min\"}):t.set_sizing({width_policy:\"min\",height_policy:\"max\"}),this.layout=t}else this.layout=this._inner_layout;const{visible:I}=this.model;this.layout.sizing.visible=I,this._set_canvas_image()}_render(){var t;const{ctx:e}=this.layer;e.save(),this._paint_bbox(e,this._inner_layout.bbox),this._paint_image(e,this._inner_layout.center_panel.bbox),null===(t=this._title_view)||void 0===t||t.render(),this._axis_view.render(),e.restore()}_paint_bbox(t,e){const{x:i,y:o}=e;let{width:n,height:a}=e;i+n>=this.parent.canvas_view.bbox.width&&(n-=1),o+a>=this.parent.canvas_view.bbox.height&&(a-=1),t.save(),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(t),t.fillRect(i,o,n,a)),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}_paint_image(t,e){const{x:i,y:o,width:n,height:a}=e;t.save(),t.setImageSmoothingEnabled(!1),t.globalAlpha=this.model.scale_alpha,t.drawImage(this._image,i,o,n,a),this.visuals.bar_line.doit&&(this.visuals.bar_line.set_value(t),t.strokeRect(i,o,n,a)),t.restore()}serializable_state(){const t=super.serializable_state(),{children:e=[]}=t,i=(0,a.__rest)(t,[\"children\"]);return null!=this._title_view&&e.push(this._title_view.serializable_state()),e.push(this._axis_view.serializable_state()),Object.assign(Object.assign({},i),{children:e})}}i.ColorBarView=O,O.__name__=\"ColorBarView\";class R extends s.Annotation{constructor(t){super(t)}}i.ColorBar=R,r=R,R.__name__=\"ColorBar\",r.prototype.default_view=O,r.mixins([[\"major_label_\",k.Text],[\"title_\",k.Text],[\"major_tick_\",k.Line],[\"minor_tick_\",k.Line],[\"border_\",k.Line],[\"bar_\",k.Line],[\"background_\",k.Fill]]),r.define((({Alpha:t,Number:e,String:i,Tuple:o,Dict:n,Or:a,Ref:r,Auto:s,Nullable:l})=>({location:[a(y.Anchor,o(e,e)),\"top_right\"],orientation:[a(y.Orientation,s),\"auto\"],title:[l(i),null],title_standoff:[e,2],width:[a(e,s),\"auto\"],height:[a(e,s),\"auto\"],scale_alpha:[t,1],ticker:[a(r(h.Ticker),s),\"auto\"],formatter:[a(r(p.TickFormatter),s),\"auto\"],major_label_overrides:[n(a(i,r(x.BaseText))),{}],major_label_policy:[r(g.LabelingPolicy),()=>new g.NoOverlap],color_mapper:[r(d.ColorMapper)],label_standoff:[e,5],margin:[e,30],padding:[e,10],major_tick_in:[e,5],major_tick_out:[e,0],minor_tick_in:[e,0],minor_tick_out:[e,0]}))),r.override({background_fill_color:\"#ffffff\",background_fill_alpha:.95,bar_line_color:null,border_line_color:null,major_label_text_font_size:\"11px\",major_tick_line_color:\"#ffffff\",minor_tick_line_color:null,title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n", + " function _(t,e,i,s,l){s();const o=t(1);var a;const n=t(119),r=t(20),c=t(120),h=(0,o.__importStar)(t(48));class _ extends n.TextAnnotationView{_get_location(){const t=this.model.offset,e=this.model.standoff/2;let i,s;const{bbox:l}=this.layout;switch(this.panel.side){case\"above\":case\"below\":switch(this.model.vertical_align){case\"top\":s=l.top+e;break;case\"middle\":s=l.vcenter;break;case\"bottom\":s=l.bottom-e}switch(this.model.align){case\"left\":i=l.left+t;break;case\"center\":i=l.hcenter;break;case\"right\":i=l.right-t}break;case\"left\":switch(this.model.vertical_align){case\"top\":i=l.left+e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.right-e}switch(this.model.align){case\"left\":s=l.bottom-t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.top+t}break;case\"right\":switch(this.model.vertical_align){case\"top\":i=l.right-e;break;case\"middle\":i=l.hcenter;break;case\"bottom\":i=l.left+e}switch(this.model.align){case\"left\":s=l.top+t;break;case\"center\":s=l.vcenter;break;case\"right\":s=l.bottom-t}}return[i,s]}_render(){const{text:t}=this.model;if(null==t||0==t.length)return;this.model.text_baseline=this.model.vertical_align,this.model.text_align=this.model.align;const[e,i]=this._get_location(),s=this.panel.get_label_angle_heuristic(\"parallel\");(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,t,e,i,s)}_get_size(){const{text:t}=this.model,e=new c.TextBox({text:t});e.visuals=this.visuals.text.values();const{width:i,height:s}=e.size();return{width:i,height:0==s?0:2+s+this.model.standoff}}}i.TitleView=_,_.__name__=\"TitleView\";class d extends n.TextAnnotation{constructor(t){super(t)}}i.Title=d,a=d,d.__name__=\"Title\",a.prototype.default_view=_,a.mixins([h.Text,[\"border_\",h.Line],[\"background_\",h.Fill]]),a.define((({Number:t,String:e})=>({text:[e,\"\"],vertical_align:[r.VerticalAlign,\"bottom\"],align:[r.TextAlign,\"left\"],offset:[t,0],standoff:[t,10]}))),a.prototype._props.text_align.options.internal=!0,a.prototype._props.text_baseline.options.internal=!0,a.override({text_font_size:\"13px\",text_font_style:\"bold\",text_line_height:1,background_fill_color:null,border_line_color:null})},\n", + " function _(e,t,s,i,l){var n;i();const o=e(40),a=e(43),r=e(20),d=e(120),u=e(123),c=e(11);class h extends o.AnnotationView{update_layout(){const{panel:e}=this;this.layout=null!=e?new u.SideLayout(e,(()=>this.get_size()),!0):void 0}initialize(){super.initialize(),\"css\"==this.model.render_mode&&(this.el=(0,a.div)(),this.plot_view.canvas_view.add_overlay(this.el))}remove(){null!=this.el&&(0,a.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),\"css\"==this.model.render_mode?this.connect(this.model.change,(()=>this.render())):this.connect(this.model.change,(()=>this.request_render()))}render(){this.model.visible||\"css\"!=this.model.render_mode||(0,a.undisplay)(this.el),super.render()}_canvas_text(e,t,s,i,l){const n=new d.TextBox({text:t});n.angle=l,n.position={sx:s,sy:i},n.visuals=this.visuals.text.values();const{background_fill:o,border_line:a}=this.visuals;if(o.doit||a.doit){const{p0:t,p1:s,p2:i,p3:l}=n.rect();e.beginPath(),e.moveTo(t.x,t.y),e.lineTo(s.x,s.y),e.lineTo(i.x,i.y),e.lineTo(l.x,l.y),e.closePath(),this.visuals.background_fill.apply(e),this.visuals.border_line.apply(e)}this.visuals.text.doit&&n.paint(e)}_css_text(e,t,s,i,l){const{el:n}=this;(0,c.assert)(null!=n),(0,a.undisplay)(n),n.textContent=t,this.visuals.text.set_value(e),n.style.position=\"absolute\",n.style.left=`${s}px`,n.style.top=`${i}px`,n.style.color=e.fillStyle,n.style.font=e.font,n.style.lineHeight=\"normal\",n.style.whiteSpace=\"pre\";const[o,r]=(()=>{switch(this.visuals.text.text_align.get_value()){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,u]=(()=>{switch(this.visuals.text.text_baseline.get_value()){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${r}, ${u})`;l&&(h+=`rotate(${l}rad)`),n.style.transformOrigin=`${o} ${d}`,n.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),n.style.backgroundColor=e.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_value(e),n.style.borderStyle=e.lineDash.length<2?\"solid\":\"dashed\",n.style.borderWidth=`${e.lineWidth}px`,n.style.borderColor=e.strokeStyle),(0,a.display)(n)}}s.TextAnnotationView=h,h.__name__=\"TextAnnotationView\";class _ extends o.Annotation{constructor(e){super(e)}}s.TextAnnotation=_,n=_,_.__name__=\"TextAnnotation\",n.define((()=>({render_mode:[r.RenderMode,\"canvas\"]})))},\n", + " function _(t,e,s,i,n){i();const h=t(65),o=t(121),r=t(9),a=t(8),c=t(122),_=t(22);s.text_width=(()=>{const t=document.createElement(\"canvas\").getContext(\"2d\");let e=\"\";return(s,i)=>(i!=e&&(e=i,t.font=i),t.measureText(s).width)})();class l{constructor(){this._position={sx:0,sy:0},this.font_size_scale=1,this.align=\"left\",this._base_font_size=13,this._x_anchor=\"left\",this._y_anchor=\"center\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}set position(t){this._position=t}get position(){return this._position}infer_text_height(){return\"ascent_descent\"}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new h.BBox({left:n,right:r,top:o,bottom:a})}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new c.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e.x),h(e.y)),t.lineTo(h(s.x),h(s.y)),t.lineTo(h(i.x),h(i.y)),t.lineTo(h(n.x),h(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:h}=Math;t.moveTo(h(e),h(s)),t.lineTo(h(e),h(s+n)),t.lineTo(h(e+i),h(s+n)),t.lineTo(h(e+i),h(s)),t.closePath(),t.stroke(),t.restore()}}s.GraphicsBox=l,l.__name__=\"GraphicsBox\";class x extends l{constructor({text:t}){super(),this.text=t}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const h=t.font,{font_size_scale:r,base_font_size:a}=this,c=(0,o.parse_css_font_size)(n);if(null!=c){let{value:t,unit:e}=c;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const l=`${i} ${n} ${h}`;this.font=l,this.color=(0,_.color2css)(e,s),this.line_height=t.line_height;const x=t.align;this._x_anchor=x;const u=t.baseline;this._y_anchor=(()=>{switch(u){case\"top\":return\"top\";case\"middle\":return\"center\";case\"bottom\":return\"bottom\";default:return\"baseline\"}})()}infer_text_height(){if(this.text.includes(\"\\n\"))return\"ascent_descent\";{function t(t){for(const e of new Set(t))if(!(\"0\"<=e&&e<=\"9\"))switch(e){case\",\":case\".\":case\"+\":case\"-\":case\"\\u2212\":case\"e\":continue;default:return!1}return!0}return t(this.text)?\"cap\":\"ascent_descent\"}}_text_line(t){var e;const s=null!==(e=this.text_height_metric)&&void 0!==e?e:this.infer_text_height(),i=(()=>{switch(s){case\"x\":case\"x_descent\":return t.x_height;case\"cap\":case\"cap_descent\":return t.cap_height;case\"ascent\":case\"ascent_descent\":return t.ascent}})(),n=(()=>{switch(s){case\"x\":case\"cap\":case\"ascent\":return 0;case\"x_descent\":case\"cap_descent\":case\"ascent_descent\":return t.descent}})();return{height:i+n,ascent:i,descent:n}}get nlines(){return this.text.split(\"\\n\").length}_size(){var t,e;const{font:i}=this,n=(0,o.font_metrics)(i),h=(this.line_height-1)*n.height,a=\"\"==this.text,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,i))),x=this._text_line(n).height*_,u=\"%\"==(null===(t=this.width)||void 0===t?void 0:t.unit)?this.width.value:1,p=\"%\"==(null===(e=this.height)||void 0===e?void 0:e.unit)?this.height.value:1;return{width:(0,r.max)(l)*u,height:a?0:(x+h*(_-1))*p,metrics:n}}_computed_position(t,e,s){const{width:i,height:n}=t,{sx:h,sy:o,x_anchor:r=this._x_anchor,y_anchor:c=this._y_anchor}=this.position;return{x:h-(()=>{if((0,a.isNumber)(r))return r*i;switch(r){case\"left\":return 0;case\"center\":return.5*i;case\"right\":return i}})(),y:o-(()=>{var t;if((0,a.isNumber)(c))return c*n;switch(c){case\"top\":return 0;case\"center\":return.5*n;case\"bottom\":return n;case\"baseline\":if(1!=s)return.5*n;switch(null!==(t=this.text_height_metric)&&void 0!==t?t:this.infer_text_height()){case\"x\":case\"x_descent\":return e.x_height;case\"cap\":case\"cap_descent\":return e.cap_height;case\"ascent\":case\"ascent_descent\":return e.ascent}}})()}}_rect(){const{width:t,height:e,metrics:s}=this._size(),i=this.text.split(\"\\n\").length,{x:n,y:o}=this._computed_position({width:t,height:e},s,i);return new h.BBox({x:n,y:o,width:t,height:e}).rect}paint(t){var e,i;const{font:n}=this,h=(0,o.font_metrics)(n),a=(this.line_height-1)*h.height,c=this.text.split(\"\\n\"),_=c.length,l=c.map((t=>(0,s.text_width)(t,n))),x=this._text_line(h),u=x.height*_,p=\"%\"==(null===(e=this.width)||void 0===e?void 0:e.unit)?this.width.value:1,f=\"%\"==(null===(i=this.height)||void 0===i?void 0:i.unit)?this.height.value:1,g=(0,r.max)(l)*p,d=(u+a*(_-1))*f;t.save(),t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\";const{sx:b,sy:m}=this.position,{align:y}=this,{angle:w}=this;w&&(t.translate(b,m),t.rotate(w),t.translate(-b,-m));let{x:v,y:z}=this._computed_position({width:g,height:d},h,_);if(\"justify\"==y)for(let e=0;e<_;e++){let i=v;const h=c[e].split(\" \"),o=h.length,_=h.map((t=>(0,s.text_width)(t,n))),l=(g-(0,r.sum)(_))/(o-1);for(let e=0;e{switch(y){case\"left\":return 0;case\"center\":return.5*(g-l[e]);case\"right\":return g-l[e]}})();t.fillStyle=this.color,t.fillText(c[e],s,z+x.ascent),z+=x.height+a}t.restore()}}s.TextBox=x,x.__name__=\"TextBox\";class u extends l{constructor(t,e){super(),this.base=t,this.expo=e}get children(){return[this.base,this.expo]}set base_font_size(t){super.base_font_size=t,this.base.base_font_size=t,this.expo.base_font_size=t}set position(t){this._position=t;const e=this.base.size(),s=this.expo.size(),i=this._shift_scale()*e.height,n=Math.max(e.height,i+s.height);this.base.position={sx:0,x_anchor:\"left\",sy:n,y_anchor:\"bottom\"},this.expo.position={sx:e.width,x_anchor:\"left\",sy:i,y_anchor:\"bottom\"}}get position(){return this._position}set visuals(t){this.expo.font_size_scale=.7,this.base.visuals=t,this.expo.visuals=t}_shift_scale(){if(this.base instanceof x&&1==this.base.nlines){const{x_height:t,cap_height:e}=(0,o.font_metrics)(this.base.font);return t/e}return 2/3}infer_text_height(){return this.base.infer_text_height()}_rect(){const t=this.base.bbox(),e=this.expo.bbox(),s=t.union(e),{x:i,y:n}=this._computed_position();return s.translate(i,n).rect}_size(){const t=this.base.size(),e=this.expo.size();return{width:t.width+e.width,height:Math.max(t.height,this._shift_scale()*t.height+e.height)}}paint(t){t.save();const{angle:e}=this;if(e){const{sx:s,sy:i}=this.position;t.translate(s,i),t.rotate(e),t.translate(-s,-i)}const{x:s,y:i}=this._computed_position();t.translate(s,i),this.base.paint(t),this.expo.paint(t),t.restore()}paint_bbox(t){super.paint_bbox(t);const{x:e,y:s}=this._computed_position();t.save(),t.translate(e,s);for(const e of this.children)e.paint_bbox(t);t.restore()}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:h=this._y_anchor}=this.position;return{x:s-(()=>{if((0,a.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,a.isNumber)(h))return h*e;switch(h){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}}s.BaseExpo=u,u.__name__=\"BaseExpo\";class p{constructor(t){this.items=t}set base_font_size(t){for(const e of this.items)e.base_font_size=t}get length(){return this.items.length}set visuals(t){for(const e of this.items)e.visuals=t;const e={x:0,cap:1,ascent:2,x_descent:3,cap_descent:4,ascent_descent:5},s=(0,r.max_by)(this.items.map((t=>t.infer_text_height())),(t=>e[t]));for(const t of this.items)t.text_height_metric=s}set angle(t){for(const e of this.items)e.angle=t}max_size(){let t=0,e=0;for(const s of this.items){const i=s.size();t=Math.max(t,i.width),e=Math.max(e,i.height)}return{width:t,height:e}}}s.GraphicsBoxes=p,p.__name__=\"GraphicsBoxes\"},\n", + " function _(t,e,n,r,l){r();const a=t(11),c=(()=>{try{return\"undefined\"!=typeof OffscreenCanvas&&null!=new OffscreenCanvas(0,0).getContext(\"2d\")}catch(t){return!1}})()?(t,e)=>new OffscreenCanvas(t,e):(t,e)=>{const n=document.createElement(\"canvas\");return n.width=t,n.height=e,n},o=(()=>{const t=c(0,0).getContext(\"2d\");return e=>{t.font=e;const n=t.measureText(\"M\"),r=t.measureText(\"x\"),l=t.measureText(\"\\xc5\\u015ag|\"),c=l.fontBoundingBoxAscent,o=l.fontBoundingBoxDescent;if(null!=c&&null!=o)return{height:c+o,ascent:c,descent:o,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};const s=l.actualBoundingBoxAscent,u=l.actualBoundingBoxDescent;if(null!=s&&null!=u)return{height:s+u,ascent:s,descent:u,cap_height:n.actualBoundingBoxAscent,x_height:r.actualBoundingBoxAscent};(0,a.unreachable)()}})(),s=(()=>{const t=c(0,0).getContext(\"2d\");return(e,n)=>{t.font=n;const r=t.measureText(e),l=r.actualBoundingBoxAscent,c=r.actualBoundingBoxDescent;if(null!=l&&null!=c)return{width:r.width,height:l+c,ascent:l,descent:c};(0,a.unreachable)()}})(),u=(()=>{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a=1)=>{e.font=l;const{width:c}=e.measureText(\"M\"),o=c*a,s=Math.ceil(o),u=Math.ceil(2*o),i=Math.ceil(1.5*o);n{let e=0;for(let n=0;n<=i;n++)for(let r=0;r{let e=t.length-4;for(let n=u;n>=i;n--)for(let r=0;r{const t=document.createElement(\"canvas\"),e=t.getContext(\"2d\");let n=-1,r=-1;return(l,a,c=1)=>{e.font=a;const{width:o}=e.measureText(\"M\"),s=o*c,u=Math.ceil(s),i=Math.ceil(2*s),f=Math.ceil(1.5*s);(n{let e=0;for(let n=0;n<=f;n++)for(let r=0;r{let e=t.length-4;for(let n=i;n>=f;n--)for(let r=0;r{try{return o(\"normal 10px sans-serif\"),o}catch(t){return u}})(),h=(()=>{try{return s(\"A\",\"normal 10px sans-serif\"),s}catch(t){return i}})(),g=new Map;function d(t){let e=g.get(t);return null==e&&(e={font:f(t),glyphs:new Map},g.set(t,e)),e.font}n.font_metrics=d,n.glyph_metrics=function(t,e){let n=g.get(e);null==n&&(d(e),n=g.get(e));let r=n.glyphs.get(t);return null==r&&(r=h(t,e),n.glyphs.set(t,r)),r},n.parse_css_font_size=function(t){const e=t.match(/^\\s*(\\d+(\\.\\d+)?)(\\w+)\\s*$/);if(null!=e){const[,t,,n]=e,r=Number(t);if(isFinite(r))return{value:r,unit:n}}return null}},\n", + " function _(t,s,r,n,i){n();const{sin:e,cos:a}=Math;class h{constructor(t=1,s=0,r=0,n=1,i=0,e=0){this.a=t,this.b=s,this.c=r,this.d=n,this.e=i,this.f=e}toString(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return`matrix(${t}, ${s}, ${r}, ${n}, ${i}, ${e})`}static from_DOMMatrix(t){const{a:s,b:r,c:n,d:i,e,f:a}=t;return new h(s,r,n,i,e,a)}to_DOMMatrix(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new DOMMatrix([t,s,r,n,i,e])}clone(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return new h(t,s,r,n,i,e)}get is_identity(){const{a:t,b:s,c:r,d:n,e:i,f:e}=this;return 1==t&&0==s&&0==r&&1==n&&0==i&&0==e}apply_point(t){const[s,r]=this.apply(t.x,t.y);return{x:s,y:r}}apply_rect(t){return{p0:this.apply_point(t.p0),p1:this.apply_point(t.p1),p2:this.apply_point(t.p2),p3:this.apply_point(t.p3)}}apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this;return[r*t+i*s+a,n*t+e*s+h]}iv_apply(t,s){const{a:r,b:n,c:i,d:e,e:a,f:h}=this,c=t.length;for(let o=0;o{const h={max:4,fit:3,min:2,fixed:1};return h[i]>h[t]};if(\"fixed\"!=n&&\"fixed\"!=s)if(n==s){const n=t,s=_(t/e),r=_(h*e),g=h;Math.abs(i.width-n)+Math.abs(i.height-s)<=Math.abs(i.width-r)+Math.abs(i.height-g)?(t=n,h=s):(t=r,h=g)}else r(n,s)?h=_(t/e):t=_(h*e);else\"fixed\"==n?h=_(t/e):\"fixed\"==s&&(t=_(h*e))}return{width:t,height:h}}measure(i){if(!this.sizing.visible)return{width:0,height:0};const t=i=>\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:i,h=i=>\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:i,e=new s.Sizeable(i).shrink_by(this.sizing.margin).map(t,h),n=this._measure(e),r=this.clip_size(n,e),g=t(r.width),l=h(r.height),a=this.apply_aspect(e,{width:g,height:l});return Object.assign(Object.assign({},n),a)}compute(i={}){const t=this.measure({width:null!=i.width&&this.is_width_expanding()?i.width:1/0,height:null!=i.height&&this.is_height_expanding()?i.height:1/0}),{width:h,height:e}=t,n=new r.BBox({left:0,top:0,width:h,height:e});let s;if(null!=t.inner){const{left:i,top:n,right:g,bottom:l}=t.inner;s=new r.BBox({left:i,top:n,right:h-g,bottom:e-l})}this.set_geometry(n,s)}get xview(){return this.bbox.xview}get yview(){return this.bbox.yview}clip_size(i,t){function h(i,t,h,e){return null==h?h=0:(0,g.isNumber)(h)||(h=Math.round(h.percent*t)),null==e?e=1/0:(0,g.isNumber)(e)||(e=Math.round(e.percent*t)),a(h,l(i,e))}return{width:h(i.width,t.width,this.sizing.min_width,this.sizing.max_width),height:h(i.height,t.height,this.sizing.min_height,this.sizing.max_height)}}has_size_changed(){const{_dirty:i}=this;return this._dirty=!1,i}}h.Layoutable=o,o.__name__=\"Layoutable\";class d extends o{_measure(i){const{width_policy:t,height_policy:h}=this.sizing;return{width:(()=>{const{width:h}=this.sizing;if(i.width==1/0)return null!=h?h:0;switch(t){case\"fixed\":return null!=h?h:0;case\"min\":return null!=h?l(i.width,h):0;case\"fit\":return null!=h?l(i.width,h):i.width;case\"max\":return null!=h?a(i.width,h):i.width}})(),height:(()=>{const{height:t}=this.sizing;if(i.height==1/0)return null!=t?t:0;switch(h){case\"fixed\":return null!=t?t:0;case\"min\":return null!=t?l(i.height,t):0;case\"fit\":return null!=t?l(i.height,t):i.height;case\"max\":return null!=t?a(i.height,t):i.height}})()}}}h.LayoutItem=d,d.__name__=\"LayoutItem\";class u extends o{_measure(i){const t=this._content_size(),h=i.bounded_to(this.sizing.size).bounded_to(t);return{width:(()=>{switch(this.sizing.width_policy){case\"fixed\":return null!=this.sizing.width?this.sizing.width:t.width;case\"min\":return t.width;case\"fit\":return h.width;case\"max\":return Math.max(t.width,h.width)}})(),height:(()=>{switch(this.sizing.height_policy){case\"fixed\":return null!=this.sizing.height?this.sizing.height:t.height;case\"min\":return t.height;case\"fit\":return h.height;case\"max\":return Math.max(t.height,h.height)}})()}}}h.ContentLayoutable=u,u.__name__=\"ContentLayoutable\"},\n", + " function _(e,t,s,a,_){a();const r=e(62),n=e(61),g=e(58),i=e(63),c=e(67),h=e(65),l=e(13),o=e(11);class x{constructor(e,t,s,a,_={},r={},n={},g={}){this.in_x_scale=e,this.in_y_scale=t,this.x_range=s,this.y_range=a,this.extra_x_ranges=_,this.extra_y_ranges=r,this.extra_x_scales=n,this.extra_y_scales=g,this._bbox=new h.BBox,(0,o.assert)(null==e.source_range&&null==e.target_range),(0,o.assert)(null==t.source_range&&null==t.target_range),this._configure_scales()}get bbox(){return this._bbox}_get_ranges(e,t){return new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e})))}_get_scales(e,t,s,a){var _;const g=new Map((0,l.entries)(Object.assign(Object.assign({},t),{default:e}))),h=new Map;for(const[t,l]of s){if(l instanceof c.FactorRange!=e instanceof r.CategoricalScale)throw new Error(`Range ${l.type} is incompatible is Scale ${e.type}`);e instanceof n.LogScale&&l instanceof i.DataRange1d&&(l.scale_hint=\"log\");const s=(null!==(_=g.get(t))&&void 0!==_?_:e).clone();s.setv({source_range:l,target_range:a}),h.set(t,s)}return h}_configure_frame_ranges(){const{bbox:e}=this;this._x_target=new g.Range1d({start:e.left,end:e.right}),this._y_target=new g.Range1d({start:e.bottom,end:e.top})}_configure_scales(){this._configure_frame_ranges(),this._x_ranges=this._get_ranges(this.x_range,this.extra_x_ranges),this._y_ranges=this._get_ranges(this.y_range,this.extra_y_ranges),this._x_scales=this._get_scales(this.in_x_scale,this.extra_x_scales,this._x_ranges,this._x_target),this._y_scales=this._get_scales(this.in_y_scale,this.extra_y_scales,this._y_ranges,this._y_target)}_update_scales(){this._configure_frame_ranges();for(const[,e]of this._x_scales)e.target_range=this._x_target;for(const[,e]of this._y_scales)e.target_range=this._y_target}set_geometry(e){this._bbox=e,this._update_scales()}get x_target(){return this._x_target}get y_target(){return this._y_target}get x_ranges(){return this._x_ranges}get y_ranges(){return this._y_ranges}get x_scales(){return this._x_scales}get y_scales(){return this._y_scales}get x_scale(){return this._x_scales.get(\"default\")}get y_scale(){return this._y_scales.get(\"default\")}get xscales(){return(0,l.to_object)(this.x_scales)}get yscales(){return(0,l.to_object)(this.y_scales)}}s.CartesianFrame=x,x.__name__=\"CartesianFrame\"},\n", + " function _(i,s,x,A,o){A(),o(\"Axis\",i(128).Axis),o(\"CategoricalAxis\",i(140).CategoricalAxis),o(\"ContinuousAxis\",i(143).ContinuousAxis),o(\"DatetimeAxis\",i(144).DatetimeAxis),o(\"LinearAxis\",i(145).LinearAxis),o(\"LogAxis\",i(162).LogAxis),o(\"MercatorAxis\",i(165).MercatorAxis)},\n", + " function _(t,e,i,s,a){s();const o=t(1);var l;const n=t(129),_=t(130),r=t(131),h=t(132),c=(0,o.__importStar)(t(48)),b=t(20),u=t(24),m=t(123),d=t(9),x=t(13),f=t(8),g=t(120),p=t(67),v=t(133),w=t(113),j=t(11),k=t(8),y=t(134),{abs:z}=Math;class M extends n.GuideRendererView{constructor(){super(...arguments),this._axis_label_view=null,this._major_label_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this._init_axis_label(),await this._init_major_labels()}async _init_axis_label(){const{axis_label:t}=this.model;if(null!=t){const e=(0,k.isString)(t)?(0,y.parse_delimited_string)(t):t;this._axis_label_view=await(0,w.build_view)(e,{parent:this})}else this._axis_label_view=null}async _init_major_labels(){const{major_label_overrides:t}=this.model;for(const[e,i]of(0,x.entries)(t)){const t=(0,k.isString)(i)?(0,y.parse_delimited_string)(i):i;this._major_label_views.set(e,await(0,w.build_view)(t,{parent:this}))}}update_layout(){this.layout=new m.SideLayout(this.panel,(()=>this.get_size()),!0),this.layout.on_resize((()=>this._coordinates=void 0))}get_size(){const{visible:t,fixed_location:e}=this.model;if(t&&null==e&&this.is_renderable){const{extents:t}=this;return{width:0,height:Math.round(t.tick+t.tick_label+t.axis_label)}}return{width:0,height:0}}get is_renderable(){const[t,e]=this.ranges;return t.is_valid&&e.is_valid}_render(){var t;if(!this.is_renderable)return;const{tick_coords:e,extents:i}=this,s=this.layer.ctx;s.save(),this._draw_rule(s,i),this._draw_major_ticks(s,i,e),this._draw_minor_ticks(s,i,e),this._draw_major_labels(s,i,e),this._draw_axis_label(s,i,e),null===(t=this._paint)||void 0===t||t.call(this,s,i,e),s.restore()}connect_signals(){super.connect_signals();const{axis_label:t,major_label_overrides:e}=this.model.properties;this.on_change(t,(async()=>{var t;null===(t=this._axis_label_view)||void 0===t||t.remove(),await this._init_axis_label()})),this.on_change(e,(async()=>{for(const t of this._major_label_views.values())t.remove();await this._init_major_labels()})),this.connect(this.model.change,(()=>this.plot_view.request_layout()))}get needs_clip(){return null!=this.model.fixed_location}_draw_rule(t,e){if(!this.visuals.axis_line.doit)return;const[i,s]=this.rule_coords,[a,o]=this.coordinates.map_to_screen(i,s),[l,n]=this.normals,[_,r]=this.offsets;this.visuals.axis_line.set_value(t),t.beginPath();for(let e=0;e0?s+i+3:0}_draw_axis_label(t,e,i){if(null==this._axis_label_view||null!=this.model.fixed_location)return;const[s,a]=(()=>{const{bbox:t}=this.layout;switch(this.panel.side){case\"above\":return[t.hcenter,t.bottom];case\"below\":return[t.hcenter,t.top];case\"left\":return[t.right,t.vcenter];case\"right\":return[t.left,t.vcenter]}})(),[o,l]=this.normals,n=e.tick+e.tick_label+this.model.axis_label_standoff,{vertical_align:_,align:r}=this.panel.get_label_text_heuristics(\"parallel\"),h={sx:s+o*n,sy:a+l*n,x_anchor:r,y_anchor:_},c=this._axis_label_view.graphics();c.visuals=this.visuals.axis_label_text.values(),c.angle=this.panel.get_label_angle_heuristic(\"parallel\"),this.plot_view.base_font_size&&(c.base_font_size=this.plot_view.base_font_size),c.position=h,c.align=r,c.paint(t)}_draw_ticks(t,e,i,s,a){if(!a.doit)return;const[o,l]=e,[n,_]=this.coordinates.map_to_screen(o,l),[r,h]=this.normals,[c,b]=this.offsets,[u,m]=[r*(c-i),h*(b-i)],[d,x]=[r*(c+s),h*(b+s)];a.set_value(t),t.beginPath();for(let e=0;et.bbox())),M=(()=>{const[t]=this.ranges;return t.is_reversed?0==this.dimension?(t,e)=>z[t].left-z[e].right:(t,e)=>z[e].top-z[t].bottom:0==this.dimension?(t,e)=>z[e].left-z[t].right:(t,e)=>z[t].top-z[e].bottom})(),{major_label_policy:O}=this.model,T=O.filter(k,z,M),A=[...T.ones()];if(0!=A.length){const t=this.parent.canvas_view.bbox,e=e=>{const i=z[e];if(i.left<0){const t=-i.left,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sx:s.sx+t})}else if(i.right>t.width){const s=i.right-t.width,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sx:a.sx-s})}},i=e=>{const i=z[e];if(i.top<0){const t=-i.top,{position:s}=y[e];y[e].position=Object.assign(Object.assign({},s),{sy:s.sy+t})}else if(i.bottom>t.height){const s=i.bottom-t.height,{position:a}=y[e];y[e].position=Object.assign(Object.assign({},a),{sy:a.sy-s})}},s=A[0],a=A[A.length-1];0==this.dimension?(e(s),e(a)):(i(s),i(a))}for(const e of T){y[e].paint(t)}}_tick_extent(){return this.model.major_tick_out}_tick_label_extents(){const t=this.tick_coords.major,e=this.compute_labels(t[this.dimension]),i=this.model.major_label_orientation,s=this.model.major_label_standoff,a=this.visuals.major_label_text;return[this._oriented_labels_extent(e,i,s,a)]}get extents(){const t=this._tick_label_extents();return{tick:this._tick_extent(),tick_labels:t,tick_label:(0,d.sum)(t),axis_label:this._axis_label_extent()}}_oriented_labels_extent(t,e,i,s){if(0==t.length||!s.doit)return 0;const a=this.panel.get_label_angle_heuristic(e);t.visuals=s.values(),t.angle=a,t.base_font_size=this.plot_view.base_font_size;const o=t.max_size(),l=0==this.dimension?o.height:o.width;return l>0?i+l+3:0}get normals(){return this.panel.normals}get dimension(){return this.panel.dimension}compute_labels(t){const e=this.model.formatter.format_graphics(t,this),{_major_label_views:i}=this,s=new Set;for(let a=0;az(l-n)?(t=r(_(a,o),l),s=_(r(a,o),n)):(t=_(a,o),s=r(a,o)),[t,s]}}get rule_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=[new Array(2),new Array(2)];return o[t][0]=Math.max(s,i.min),o[t][1]=Math.min(a,i.max),o[t][0]>o[t][1]&&(o[t][0]=o[t][1]=NaN),o[e][0]=this.loc,o[e][1]=this.loc,o}get tick_coords(){const t=this.dimension,e=(t+1)%2,[i]=this.ranges,[s,a]=this.computed_bounds,o=this.model.ticker.get_ticks(s,a,i,this.loc),l=o.major,n=o.minor,_=[[],[]],r=[[],[]],[h,c]=[i.min,i.max];for(let i=0;ic||(_[t].push(l[i]),_[e].push(this.loc));for(let i=0;ic||(r[t].push(n[i]),r[e].push(this.loc));return{major:_,minor:r}}get loc(){const{fixed_location:t}=this.model;if(null!=t){if((0,f.isNumber)(t))return t;const[,e]=this.ranges;if(e instanceof p.FactorRange)return e.synthetic(t);(0,j.unreachable)()}const[,e]=this.ranges;switch(this.panel.side){case\"left\":case\"below\":return e.start;case\"right\":case\"above\":return e.end}}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box})}remove(){var t;null===(t=this._axis_label_view)||void 0===t||t.remove();for(const t of this._major_label_views.values())t.remove();super.remove()}has_finished(){if(!super.has_finished())return!1;if(null!=this._axis_label_view&&!this._axis_label_view.has_finished())return!1;for(const t of this._major_label_views.values())if(!t.has_finished())return!1;return!0}}i.AxisView=M,M.__name__=\"AxisView\";class O extends n.GuideRenderer{constructor(t){super(t)}}i.Axis=O,l=O,O.__name__=\"Axis\",l.prototype.default_view=M,l.mixins([[\"axis_\",c.Line],[\"major_tick_\",c.Line],[\"minor_tick_\",c.Line],[\"major_label_\",c.Text],[\"axis_label_\",c.Text]]),l.define((({Any:t,Int:e,Number:i,String:s,Ref:a,Dict:o,Tuple:l,Or:n,Nullable:c,Auto:u})=>({bounds:[n(l(i,i),u),\"auto\"],ticker:[a(_.Ticker)],formatter:[a(r.TickFormatter)],axis_label:[c(n(s,a(v.BaseText))),null],axis_label_standoff:[e,5],major_label_standoff:[e,5],major_label_orientation:[n(b.TickLabelOrientation,i),\"horizontal\"],major_label_overrides:[o(n(s,a(v.BaseText))),{}],major_label_policy:[a(h.LabelingPolicy),()=>new h.AllLabels],major_tick_in:[i,2],major_tick_out:[i,6],minor_tick_in:[i,0],minor_tick_out:[i,4],fixed_location:[c(n(i,t)),null]}))),l.override({axis_line_color:\"black\",major_tick_line_color:\"black\",minor_tick_line_color:\"black\",major_label_text_font_size:\"11px\",major_label_text_align:\"center\",major_label_text_baseline:\"alphabetic\",axis_label_text_font_size:\"13px\",axis_label_text_font_style:\"italic\"})},\n", + " function _(e,r,d,n,i){var s;n();const _=e(41);class u extends _.RendererView{}d.GuideRendererView=u,u.__name__=\"GuideRendererView\";class c extends _.Renderer{constructor(e){super(e)}}d.GuideRenderer=c,s=c,c.__name__=\"GuideRenderer\",s.override({level:\"guide\"})},\n", + " function _(c,e,n,s,o){s();const r=c(53);class t extends r.Model{constructor(c){super(c)}}n.Ticker=t,t.__name__=\"Ticker\"},\n", + " function _(t,o,r,e,c){e();const n=t(53),a=t(120);class m extends n.Model{constructor(t){super(t)}format_graphics(t,o){return this.doFormat(t,o).map((t=>new a.TextBox({text:t})))}compute(t,o){return this.doFormat([t],null!=o?o:{loc:0})[0]}v_compute(t,o){return this.doFormat(t,null!=o?o:{loc:0})}}r.TickFormatter=m,m.__name__=\"TickFormatter\"},\n", + " function _(e,n,s,t,i){var c,r;t();const l=e(53),o=e(13),a=e(34),u=e(8),d=e(24);class _ extends l.Model{constructor(e){super(e)}}s.LabelingPolicy=_,_.__name__=\"LabelingPolicy\";class f extends _{constructor(e){super(e)}filter(e,n,s){return e}}s.AllLabels=f,f.__name__=\"AllLabels\";class m extends _{constructor(e){super(e)}filter(e,n,s){const{min_distance:t}=this;let i=null;for(const n of e)null!=i&&s(i,n)({min_distance:[e,5]})));class b extends _{constructor(e){super(e)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}get func(){const e=(0,a.use_strict)(this.code);return new d.GeneratorFunction(\"indices\",\"bboxes\",\"distance\",...this.names,e)}filter(e,n,s){const t=Object.create(null),i=this.func.call(t,e,n,s,...this.values);let c=i.next();if(c.done&&void 0!==c.value){const{value:n}=c;return n instanceof d.Indices?n:void 0===n?e:(0,u.isIterable)(n)?d.Indices.from_indices(e.size,n):d.Indices.all_unset(e.size)}{const n=[];do{n.push(c.value),c=i.next()}while(!c.done);return d.Indices.from_indices(e.size,n)}}}s.CustomLabelingPolicy=b,r=b,b.__name__=\"CustomLabelingPolicy\",r.define((({Unknown:e,String:n,Dict:s})=>({args:[s(e),{}],code:[n,\"\"]})))},\n", + " function _(e,s,t,n,a){var _;n();const x=e(53),c=e(42);class i extends c.View{}t.BaseTextView=i,i.__name__=\"BaseTextView\";class o extends x.Model{constructor(e){super(e)}}t.BaseText=o,_=o,o.__name__=\"BaseText\",_.define((({String:e})=>({text:[e]})))},\n", + " function _(n,e,t,i,r){i();const s=n(135),l=n(139),d=[{start:\"$$\",end:\"$$\",inline:!1},{start:\"\\\\[\",end:\"\\\\]\",inline:!1},{start:\"\\\\(\",end:\"\\\\)\",inline:!0}];t.parse_delimited_string=function(n){for(const e of d){const t=n.indexOf(e.start),i=t+e.start.length;if(0==t){const t=n.indexOf(e.end,i),r=t;if(t==n.length-e.end.length)return new s.TeX({text:n.slice(i,r),inline:e.inline});break}}return new l.PlainText({text:n})}},\n", + " function _(t,e,s,i,n){var o,r,a;i();const h=t(8),_=t(136),l=t(22),c=t(120),d=t(121),u=t(122),g=t(65),p=t(133),x=t(137);class m extends p.BaseTextView{constructor(){super(...arguments),this._position={sx:0,sy:0},this.align=\"left\",this._x_anchor=\"left\",this._y_anchor=\"center\",this._base_font_size=13,this.font_size_scale=1,this.svg_image=null}graphics(){return this}infer_text_height(){return\"ascent_descent\"}set base_font_size(t){null!=t&&(this._base_font_size=t)}get base_font_size(){return this._base_font_size}get has_image_loaded(){return null!=this.svg_image}_rect(){const{width:t,height:e}=this._size(),{x:s,y:i}=this._computed_position();return new g.BBox({x:s,y:i,width:t,height:e}).rect}set position(t){this._position=t}get position(){return this._position}get text(){return this.model.text}get provider(){return x.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>this.load_image())),\"loaded\"==this.provider.status&&await this.load_image()}connect_signals(){super.connect_signals(),this.on_change(this.model.properties.text,(()=>this.load_image()))}set visuals(t){const e=t.color,s=t.alpha,i=t.font_style;let n=t.font_size;const o=t.font,{font_size_scale:r,_base_font_size:a}=this,h=(0,d.parse_css_font_size)(n);if(null!=h){let{value:t,unit:e}=h;t*=r,\"em\"==e&&a&&(t*=a,e=\"px\"),n=`${t}${e}`}const _=`${i} ${n} ${o}`;this.font=_,this.color=(0,l.color2css)(e,s)}_computed_position(){const{width:t,height:e}=this._size(),{sx:s,sy:i,x_anchor:n=this._x_anchor,y_anchor:o=this._y_anchor}=this.position;return{x:s-(()=>{if((0,h.isNumber)(n))return n*t;switch(n){case\"left\":return 0;case\"center\":return.5*t;case\"right\":return t}})(),y:i-(()=>{if((0,h.isNumber)(o))return o*e;switch(o){case\"top\":return 0;case\"center\":return.5*e;case\"bottom\":return e;case\"baseline\":return.5*e}})()}}size(){const{width:t,height:e}=this._size(),{angle:s}=this;if(s){const i=Math.cos(Math.abs(s)),n=Math.sin(Math.abs(s));return{width:Math.abs(t*i+e*n),height:Math.abs(t*n+e*i)}}return{width:t,height:e}}get_text_dimensions(){return{width:(0,c.text_width)(this.model.text,this.font),height:(0,d.font_metrics)(this.font).height}}get_image_dimensions(){var t,e,s,i;const n=parseFloat(null!==(e=null===(t=this.svg_element.getAttribute(\"height\"))||void 0===t?void 0:t.replace(/([A-z])/g,\"\"))&&void 0!==e?e:\"0\"),o=parseFloat(null!==(i=null===(s=this.svg_element.getAttribute(\"width\"))||void 0===s?void 0:s.replace(/([A-z])/g,\"\"))&&void 0!==i?i:\"0\");return{width:(0,d.font_metrics)(this.font).x_height*o,height:(0,d.font_metrics)(this.font).x_height*n}}_size(){return this.has_image_loaded?this.get_image_dimensions():this.get_text_dimensions()}bbox(){const{p0:t,p1:e,p2:s,p3:i}=this.rect(),n=Math.min(t.x,e.x,s.x,i.x),o=Math.min(t.y,e.y,s.y,i.y),r=Math.max(t.x,e.x,s.x,i.x),a=Math.max(t.y,e.y,s.y,i.y);return new g.BBox({left:n,right:r,top:o,bottom:a})}rect(){const t=this._rect(),{angle:e}=this;if(e){const{sx:s,sy:i}=this.position,n=new u.AffineTransform;return n.translate(s,i),n.rotate(e),n.translate(-s,-i),n.apply_rect(t)}return t}paint_rect(t){const{p0:e,p1:s,p2:i,p3:n}=this.rect();t.save(),t.strokeStyle=\"red\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e.x),o(e.y)),t.lineTo(o(s.x),o(s.y)),t.lineTo(o(i.x),o(i.y)),t.lineTo(o(n.x),o(n.y)),t.closePath(),t.stroke(),t.restore()}paint_bbox(t){const{x:e,y:s,width:i,height:n}=this.bbox();t.save(),t.strokeStyle=\"blue\",t.lineWidth=1,t.beginPath();const{round:o}=Math;t.moveTo(o(e),o(s)),t.lineTo(o(e),o(s+n)),t.lineTo(o(e+i),o(s+n)),t.lineTo(o(e+i),o(s)),t.closePath(),t.stroke(),t.restore()}async load_image(){if(null==this.provider.MathJax)return null;const t=this._process_text(this.model.text);if(null==t)return this._has_finished=!0,null;const e=t.children[0];this.svg_element=e,e.setAttribute(\"font\",this.font),e.setAttribute(\"stroke\",this.color);const s=e.outerHTML,i=new Blob([s],{type:\"image/svg+xml\"}),n=URL.createObjectURL(i);try{this.svg_image=await(0,_.load_image)(n)}finally{URL.revokeObjectURL(n)}return this.parent.request_layout(),this.svg_image}paint(t){t.save();const{sx:e,sy:s}=this.position;this.angle&&(t.translate(e,s),t.rotate(this.angle),t.translate(-e,-s));const{x:i,y:n}=this._computed_position();if(null!=this.svg_image){const{width:e,height:s}=this.get_image_dimensions();t.drawImage(this.svg_image,i,n,e,s)}else t.fillStyle=this.color,t.font=this.font,t.textAlign=\"left\",t.textBaseline=\"alphabetic\",t.fillText(this.model.text,i,n+(0,d.font_metrics)(this.font).ascent);t.restore(),this._has_finished||\"failed\"!=this.provider.status&&!this.has_image_loaded||(this._has_finished=!0,this.parent.notify_finished_after_paint())}}s.MathTextView=m,m.__name__=\"MathTextView\";class f extends p.BaseText{constructor(t){super(t)}}s.MathText=f,f.__name__=\"MathText\";class v extends m{_process_text(t){}}s.AsciiView=v,v.__name__=\"AsciiView\";class y extends f{constructor(t){super(t)}}s.Ascii=y,o=y,y.__name__=\"Ascii\",o.prototype.default_view=v;class w extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.mathml2svg(t.trim())}}s.MathMLView=w,w.__name__=\"MathMLView\";class b extends f{constructor(t){super(t)}}s.MathML=b,r=b,b.__name__=\"MathML\",r.prototype.default_view=w;class M extends m{_process_text(t){var e;return null===(e=this.provider.MathJax)||void 0===e?void 0:e.tex2svg(t,void 0,this.model.macros)}}s.TeXView=M,M.__name__=\"TeXView\";class T extends f{constructor(t){super(t)}}s.TeX=T,a=T,T.__name__=\"TeX\",a.prototype.default_view=M,a.define((({Boolean:t,Number:e,String:s,Dict:i,Tuple:n,Or:o})=>({macros:[i(o(s,n(s,e))),{}],inline:[t,!1]})))},\n", + " function _(i,e,t,s,o){s();const a=i(19);t.load_image=async function(i,e){return new n(i,e).promise};class n{constructor(i,e={}){this._image=new Image,this._finished=!1;const{attempts:t=1,timeout:s=1}=e;this.promise=new Promise(((o,n)=>{this._image.crossOrigin=\"anonymous\";let r=0;this._image.onerror=()=>{if(++r==t){const s=`unable to load ${i} image after ${t} attempts`;if(a.logger.warn(s),null==this._image.crossOrigin)return void(null!=e.failed&&e.failed());a.logger.warn(`attempting to load ${i} without a cross origin policy`),this._image.crossOrigin=null,r=0}setTimeout((()=>this._image.src=i),s)},this._image.onload=()=>{this._finished=!0,null!=e.loaded&&e.loaded(this._image),o(this._image)},this._image.src=i}))}get finished(){return this._finished}get image(){if(this._finished)return this._image;throw new Error(\"not loaded yet\")}}t.ImageLoader=n,n.__name__=\"ImageLoader\"},\n", + " function _(t,e,a,s,n){var r=this&&this.__createBinding||(Object.create?function(t,e,a,s){void 0===s&&(s=a),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[a]}})}:function(t,e,a,s){void 0===s&&(s=a),t[s]=e[a]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),d=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var a in t)\"default\"!==a&&Object.prototype.hasOwnProperty.call(t,a)&&r(e,t,a);return i(e,t),e};s();const o=t(15),u=t(138);class c{constructor(){this.ready=new o.Signal0(this,\"ready\"),this.status=\"not_started\"}}a.MathJaxProvider=c,c.__name__=\"MathJaxProvider\";class h extends c{get MathJax(){return null}async fetch(){this.status=\"failed\"}}a.NoProvider=h,h.__name__=\"NoProvider\";class l extends c{get MathJax(){return\"undefined\"!=typeof MathJax?MathJax:null}async fetch(){const t=document.createElement(\"script\");t.src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js\",t.onload=()=>{this.status=\"loaded\",this.ready.emit()},t.onerror=()=>{this.status=\"failed\"},this.status=\"loading\",document.head.appendChild(t)}}a.CDNProvider=l,l.__name__=\"CDNProvider\";class _ extends c{get MathJax(){return this._mathjax}async fetch(){this.status=\"loading\";try{const e=await(0,u.load_module)(Promise.resolve().then((()=>d(t(519)))));this._mathjax=e,this.status=\"loaded\",this.ready.emit()}catch(t){this.status=\"failed\"}}}a.BundleProvider=_,_.__name__=\"BundleProvider\",a.default_provider=new _},\n", + " function _(n,r,o,t,c){t(),o.load_module=async function(n){try{return await n}catch(n){if((r=n)instanceof Error&&\"code\"in r&&\"MODULE_NOT_FOUND\"===n.code)return null;throw n}var r}},\n", + " function _(e,t,i,n,s){var a;n();const x=e(133),_=e(120);class l extends x.BaseTextView{initialize(){super.initialize(),this._has_finished=!0}graphics(){return new _.TextBox({text:this.model.text})}}i.PlainTextView=l,l.__name__=\"PlainTextView\";class r extends x.BaseText{constructor(e){super(e)}}i.PlainText=r,a=r,r.__name__=\"PlainText\",a.prototype.default_view=l},\n", + " function _(t,s,o,e,i){e();const r=t(1);var a;const l=t(128),_=t(141),n=t(142),p=(0,r.__importStar)(t(48)),c=t(20),h=t(120),m=t(8);class u extends l.AxisView{_paint(t,s,o){this._draw_group_separators(t,s,o)}_draw_group_separators(t,s,o){const[e]=this.ranges,[i,r]=this.computed_bounds;if(!e.tops||e.tops.length<2||!this.visuals.separator_line.doit)return;const a=this.dimension,l=(a+1)%2,_=[[],[]];let n=0;for(let t=0;ti&&pnew h.GraphicsBoxes(t.map((t=>(0,m.isString)(t)?new h.TextBox({text:t}):t))),_=t=>l(this.model.formatter.doFormat(t,this));if(1==t.levels){const t=_(i.major);a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text])}else if(2==t.levels){const t=_(i.major.map((t=>t[1])));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}else if(3==t.levels){const t=_(i.major.map((t=>t[2]))),s=i.mids.map((t=>t[1]));a.push([t,r.major,this.model.major_label_orientation,this.visuals.major_label_text]),a.push([l(s),r.mids,this.model.subgroup_label_orientation,this.visuals.subgroup_text]),a.push([l(i.tops),r.tops,this.model.group_label_orientation,this.visuals.group_text])}return a}get tick_coords(){const t=this.dimension,s=(t+1)%2,[o]=this.ranges,[e,i]=this.computed_bounds,r=this.model.ticker.get_ticks(e,i,o,this.loc),a={major:[[],[]],mids:[[],[]],tops:[[],[]],minor:[[],[]]};return a.major[t]=r.major,a.major[s]=r.major.map((()=>this.loc)),3==o.levels&&(a.mids[t]=r.mids,a.mids[s]=r.mids.map((()=>this.loc))),o.levels>1&&(a.tops[t]=r.tops,a.tops[s]=r.tops.map((()=>this.loc))),a}}o.CategoricalAxisView=u,u.__name__=\"CategoricalAxisView\";class d extends l.Axis{constructor(t){super(t)}}o.CategoricalAxis=d,a=d,d.__name__=\"CategoricalAxis\",a.prototype.default_view=u,a.mixins([[\"separator_\",p.Line],[\"group_\",p.Text],[\"subgroup_\",p.Text]]),a.define((({Number:t,Or:s})=>({group_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"],subgroup_label_orientation:[s(c.TickLabelOrientation,t),\"parallel\"]}))),a.override({ticker:()=>new _.CategoricalTicker,formatter:()=>new n.CategoricalTickFormatter,separator_line_color:\"lightgrey\",separator_line_width:2,group_text_font_style:\"bold\",group_text_font_size:\"11px\",group_text_color:\"grey\",subgroup_text_font_style:\"bold\",subgroup_text_font_size:\"11px\"})},\n", + " function _(t,c,o,s,e){s();const r=t(130);class i extends r.Ticker{constructor(t){super(t)}get_ticks(t,c,o,s){var e,r;return{major:this._collect(o.factors,o,t,c),minor:[],tops:this._collect(null!==(e=o.tops)&&void 0!==e?e:[],o,t,c),mids:this._collect(null!==(r=o.mids)&&void 0!==r?r:[],o,t,c)}}_collect(t,c,o,s){const e=[];for(const r of t){const t=c.synthetic(r);t>o&&tnew _.DatetimeTicker,formatter:()=>new m.DatetimeTickFormatter})},\n", + " function _(e,i,s,n,r){var t;n();const a=e(143),o=e(146),c=e(147);class _ extends a.ContinuousAxisView{}s.LinearAxisView=_,_.__name__=\"LinearAxisView\";class u extends a.ContinuousAxis{constructor(e){super(e)}}s.LinearAxis=u,t=u,u.__name__=\"LinearAxis\",t.prototype.default_view=_,t.override({ticker:()=>new c.BasicTicker,formatter:()=>new o.BasicTickFormatter})},\n", + " function _(i,t,e,n,o){var r;n();const s=i(131),c=i(34);function _(i){let t=\"\";for(const e of i)t+=\"-\"==e?\"\\u2212\":e;return t}e.unicode_replace=_;class a extends s.TickFormatter{constructor(i){super(i),this.last_precision=3}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}_need_sci(i){if(!this.use_scientific)return!1;const{scientific_limit_high:t}=this,{scientific_limit_low:e}=this,n=i.length<2?0:Math.abs(i[1]-i[0])/1e4;for(const o of i){const i=Math.abs(o);if(!(i<=n)&&(i>=t||i<=e))return!0}return!1}_format_with_precision(i,t,e){return t?i.map((i=>_(i.toExponential(e)))):i.map((i=>_((0,c.to_fixed)(i,e))))}_auto_precision(i,t){const e=new Array(i.length),n=this.last_precision<=15;i:for(let o=this.last_precision;n?o<=15:o>=1;n?o++:o--){if(t){e[0]=i[0].toExponential(o);for(let t=1;t({precision:[n(t,e),\"auto\"],use_scientific:[i,!0],power_limit_high:[t,5],power_limit_low:[t,-3]})))},\n", + " function _(c,e,s,i,n){i();const r=c(148);class t extends r.AdaptiveTicker{constructor(c){super(c)}}s.BasicTicker=t,t.__name__=\"BasicTicker\"},\n", + " function _(t,i,a,s,e){var n;s();const r=t(149),_=t(9),l=t(10);class h extends r.ContinuousTicker{constructor(t){super(t)}get_min_interval(){return this.min_interval}get_max_interval(){var t;return null!==(t=this.max_interval)&&void 0!==t?t:1/0}initialize(){super.initialize();const t=(0,_.nth)(this.mantissas,-1)/this.base,i=(0,_.nth)(this.mantissas,0)*this.base;this.extended_mantissas=[t,...this.mantissas,i],this.base_factor=0===this.get_min_interval()?1:this.get_min_interval()}get_interval(t,i,a){const s=i-t,e=this.get_ideal_interval(t,i,a),n=Math.floor((0,l.log)(e/this.base_factor,this.base)),r=this.base**n*this.base_factor,h=this.extended_mantissas,m=h.map((t=>Math.abs(a-s/(t*r)))),v=h[(0,_.argmin)(m)]*r;return(0,l.clamp)(v,this.get_min_interval(),this.get_max_interval())}}a.AdaptiveTicker=h,n=h,h.__name__=\"AdaptiveTicker\",n.define((({Number:t,Array:i,Nullable:a})=>({base:[t,10],mantissas:[i(t),[1,2,5]],min_interval:[t,0],max_interval:[a(t),null]})))},\n", + " function _(t,n,i,s,e){var o;s();const r=t(130),c=t(9);class _ extends r.Ticker{constructor(t){super(t)}get_ticks(t,n,i,s){return this.get_ticks_no_defaults(t,n,s,this.desired_num_ticks)}get_ticks_no_defaults(t,n,i,s){const e=this.get_interval(t,n,s),o=Math.floor(t/e),r=Math.ceil(n/e);let _;_=isFinite(o)&&isFinite(r)?(0,c.range)(o,r+1):[];const u=_.map((t=>t*e)).filter((i=>t<=i&&i<=n)),a=this.num_minor_ticks,f=[];if(a>0&&u.length>0){const i=e/a,s=(0,c.range)(0,a).map((t=>t*i));for(const i of s.slice(1)){const s=u[0]-i;t<=s&&s<=n&&f.push(s)}for(const i of u)for(const e of s){const s=i+e;t<=s&&s<=n&&f.push(s)}}return{major:u,minor:f}}get_ideal_interval(t,n,i){return(n-t)/i}}i.ContinuousTicker=_,o=_,_.__name__=\"ContinuousTicker\",o.define((({Int:t})=>({num_minor_ticks:[t,5],desired_num_ticks:[t,6]})))},\n", + " function _(s,t,e,n,i){n();var r;const o=(0,s(1).__importDefault)(s(151)),a=s(131),c=s(19),u=s(152),m=s(9),h=s(8);function d(s){return(0,o.default)(s,\"%Y %m %d %H %M %S\").split(/\\s+/).map((s=>parseInt(s,10)))}function l(s,t){if((0,h.isFunction)(t))return t(s);{const e=(0,u.sprintf)(\"$1%06d\",function(s){return Math.round(s/1e3%1*1e6)}(s));return-1==(t=t.replace(/((^|[^%])(%%)*)%f/,e)).indexOf(\"%\")?t:(0,o.default)(s,t)}}const f=[\"microseconds\",\"milliseconds\",\"seconds\",\"minsec\",\"minutes\",\"hourmin\",\"hours\",\"days\",\"months\",\"years\"];class _ extends a.TickFormatter{constructor(s){super(s),this.strip_leading_zeros=!0}initialize(){super.initialize(),this._update_width_formats()}_update_width_formats(){const s=+(0,o.default)(new Date),t=function(t){const e=t.map((t=>l(s,t).length)),n=(0,m.sort_by)((0,m.zip)(e,t),(([s])=>s));return(0,m.unzip)(n)};this._width_formats={microseconds:t(this.microseconds),milliseconds:t(this.milliseconds),seconds:t(this.seconds),minsec:t(this.minsec),minutes:t(this.minutes),hourmin:t(this.hourmin),hours:t(this.hours),days:t(this.days),months:t(this.months),years:t(this.years)}}_get_resolution_str(s,t){const e=1.1*s;switch(!1){case!(e<.001):return\"microseconds\";case!(e<1):return\"milliseconds\";case!(e<60):return t>=60?\"minsec\":\"seconds\";case!(e<3600):return t>=3600?\"hourmin\":\"minutes\";case!(e<86400):return\"hours\";case!(e<2678400):return\"days\";case!(e<31536e3):return\"months\";default:return\"years\"}}doFormat(s,t){if(0==s.length)return[];const e=Math.abs(s[s.length-1]-s[0])/1e3,n=e/(s.length-1),i=this._get_resolution_str(n,e),[,[r]]=this._width_formats[i],o=[],a=f.indexOf(i),u={};for(const s of f)u[s]=0;u.seconds=5,u.minsec=4,u.minutes=4,u.hourmin=3,u.hours=3;for(const t of s){let s,e;try{e=d(t),s=l(t,r)}catch(s){c.logger.warn(`unable to format tick for timestamp value ${t}`),c.logger.warn(` - ${s}`),o.push(\"ERR\");continue}let n=!1,m=a;for(;0==e[u[f[m]]];){let r;if(m+=1,m==f.length)break;if((\"minsec\"==i||\"hourmin\"==i)&&!n){if(\"minsec\"==i&&0==e[4]&&0!=e[5]||\"hourmin\"==i&&0==e[3]&&0!=e[4]){r=this._width_formats[f[a-1]][1][0],s=l(t,r);break}n=!0}r=this._width_formats[f[m]][1][0],s=l(t,r)}if(this.strip_leading_zeros){let t=s.replace(/^0+/g,\"\");t!=s&&isNaN(parseInt(t))&&(t=`0${t}`),o.push(t)}else o.push(s)}return o}}e.DatetimeTickFormatter=_,r=_,_.__name__=\"DatetimeTickFormatter\",r.define((({String:s,Array:t})=>({microseconds:[t(s),[\"%fus\"]],milliseconds:[t(s),[\"%3Nms\",\"%S.%3Ns\"]],seconds:[t(s),[\"%Ss\"]],minsec:[t(s),[\":%M:%S\"]],minutes:[t(s),[\":%M\",\"%Mm\"]],hourmin:[t(s),[\"%H:%M\"]],hours:[t(s),[\"%Hh\",\"%H:%M\"]],days:[t(s),[\"%m/%d\",\"%a%d\"]],months:[t(s),[\"%m/%Y\",\"%b %Y\"]],years:[t(s),[\"%Y\"]]})))},\n", + " function _(e,t,n,r,o){!function(e){\"object\"==typeof t&&t.exports?t.exports=e():\"function\"==typeof define?define(e):this.tz=e()}((function(){function e(e,t,n){var r,o=t.day[1];do{r=new Date(Date.UTC(n,t.month,Math.abs(o++)))}while(t.day[0]<7&&r.getUTCDay()!=t.day[0]);return(r={clock:t.clock,sort:r.getTime(),rule:t,save:6e4*t.save,offset:e.offset})[r.clock]=r.sort+6e4*t.time,r.posix?r.wallclock=r[r.clock]+(e.offset+t.saved):r.posix=r[r.clock]-(e.offset+t.saved),r}function t(t,n,r){var o,a,u,i,l,s,c,f=t[t.zone],h=[],T=new Date(r).getUTCFullYear(),g=1;for(o=1,a=f.length;o=T-g;--c)for(o=0,a=s.length;o=h[o][n]&&h[o][h[o].clock]>u[h[o].clock]&&(i=h[o])}return i&&((l=/^(.*)\\/(.*)$/.exec(u.format))?i.abbrev=l[i.save?2:1]:i.abbrev=u.format.replace(/%s/,i.rule.letter)),i||u}function n(e,n){return\"UTC\"==e.zone?n:(e.entry=t(e,\"posix\",n),n+e.entry.offset+e.entry.save)}function r(e,n){return\"UTC\"==e.zone?n:(e.entry=r=t(e,\"wallclock\",n),0<(o=n-r.wallclock)&&o9)t+=s*l[c-10];else{if(a=new Date(n(e,t)),c<7)for(;s;)a.setUTCDate(a.getUTCDate()+i),a.getUTCDay()==c&&(s-=i);else 7==c?a.setUTCFullYear(a.getUTCFullYear()+s):8==c?a.setUTCMonth(a.getUTCMonth()+s):a.setUTCDate(a.getUTCDate()+s);null==(t=r(e,a.getTime()))&&(t=r(e,a.getTime()+864e5*i)-864e5*i)}return t}var a={clock:function(){return+new Date},zone:\"UTC\",entry:{abbrev:\"UTC\",offset:0,save:0},UTC:1,z:function(e,t,n,r){var o,a,u=this.entry.offset+this.entry.save,i=Math.abs(u/1e3),l=[],s=3600;for(o=0;o<3;o++)l.push((\"0\"+Math.floor(i/s)).slice(-2)),i%=s,s/=60;return\"^\"!=n||u?(\"^\"==n&&(r=3),3==r?(a=(a=l.join(\":\")).replace(/:00$/,\"\"),\"^\"!=n&&(a=a.replace(/:00$/,\"\"))):r?(a=l.slice(0,r+1).join(\":\"),\"^\"==n&&(a=a.replace(/:00$/,\"\"))):a=l.slice(0,2).join(\"\"),a=(a=(u<0?\"-\":\"+\")+a).replace(/([-+])(0)/,{_:\" $1\",\"-\":\"$1\"}[n]||\"$1$2\")):\"Z\"},\"%\":function(e){return\"%\"},n:function(e){return\"\\n\"},t:function(e){return\"\\t\"},U:function(e){return s(e,0)},W:function(e){return s(e,1)},V:function(e){return c(e)[0]},G:function(e){return c(e)[1]},g:function(e){return c(e)[1]%100},j:function(e){return Math.floor((e.getTime()-Date.UTC(e.getUTCFullYear(),0))/864e5)+1},s:function(e){return Math.floor(e.getTime()/1e3)},C:function(e){return Math.floor(e.getUTCFullYear()/100)},N:function(e){return e.getTime()%1e3*1e6},m:function(e){return e.getUTCMonth()+1},Y:function(e){return e.getUTCFullYear()},y:function(e){return e.getUTCFullYear()%100},H:function(e){return e.getUTCHours()},M:function(e){return e.getUTCMinutes()},S:function(e){return e.getUTCSeconds()},e:function(e){return e.getUTCDate()},d:function(e){return e.getUTCDate()},u:function(e){return e.getUTCDay()||7},w:function(e){return e.getUTCDay()},l:function(e){return e.getUTCHours()%12||12},I:function(e){return e.getUTCHours()%12||12},k:function(e){return e.getUTCHours()},Z:function(e){return this.entry.abbrev},a:function(e){return this[this.locale].day.abbrev[e.getUTCDay()]},A:function(e){return this[this.locale].day.full[e.getUTCDay()]},h:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},b:function(e){return this[this.locale].month.abbrev[e.getUTCMonth()]},B:function(e){return this[this.locale].month.full[e.getUTCMonth()]},P:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)].toLowerCase()},p:function(e){return this[this.locale].meridiem[Math.floor(e.getUTCHours()/12)]},R:function(e,t){return this.convert([t,\"%H:%M\"])},T:function(e,t){return this.convert([t,\"%H:%M:%S\"])},D:function(e,t){return this.convert([t,\"%m/%d/%y\"])},F:function(e,t){return this.convert([t,\"%Y-%m-%d\"])},x:function(e,t){return this.convert([t,this[this.locale].date])},r:function(e,t){return this.convert([t,this[this.locale].time12||\"%I:%M:%S\"])},X:function(e,t){return this.convert([t,this[this.locale].time24])},c:function(e,t){return this.convert([t,this[this.locale].dateTime])},convert:function(e){if(!e.length)return\"1.0.23\";var t,a,u,l,s,c=Object.create(this),f=[];for(t=0;t=o?Math.floor((n-o)/7)+1:0}function c(e){var t,n,r;return n=e.getUTCFullYear(),t=new Date(Date.UTC(n,0)).getUTCDay(),(r=s(e,1)+(t>1&&t<=4?1:0))?53!=r||4==t||3==t&&29==new Date(n,1,29).getDate()?[r,e.getUTCFullYear()]:[1,e.getUTCFullYear()+1]:(n=e.getUTCFullYear()-1,[r=4==(t=new Date(Date.UTC(n,0)).getUTCDay())||3==t&&29==new Date(n,1,29).getDate()?53:52,e.getUTCFullYear()-1])}return u=u.toLowerCase().split(\"|\"),\"delmHMSUWVgCIky\".replace(/./g,(function(e){a[e].pad=2})),a.N.pad=9,a.j.pad=3,a.k.style=\"_\",a.l.style=\"_\",a.e.style=\"_\",function(){return a.convert(arguments)}}))},\n", + " function _(r,t,n,e,i){e();const u=r(1),a=(0,u.__importStar)(r(153)),f=r(154),o=(0,u.__importDefault)(r(151)),l=r(21),s=r(8);function c(r,...t){return(0,f.sprintf)(r,...t)}function m(r,t,n){if((0,s.isNumber)(r)){return c((()=>{switch(!1){case Math.floor(r)!=r:return\"%d\";case!(Math.abs(r)>.1&&Math.abs(r)<1e3):return\"%0.3f\";default:return\"%0.3e\"}})(),r)}return`${r}`}function _(r,t,e){if(null==t)return m;if(null!=e&&r in e){const t=e[r];if((0,s.isString)(t)){if(t in n.DEFAULT_FORMATTERS)return n.DEFAULT_FORMATTERS[t];throw new Error(`Unknown tooltip field formatter type '${t}'`)}return function(r,n,e){return t.format(r,n,e)}}return n.DEFAULT_FORMATTERS.numeral}function p(r,t,n){const e=t.get_column(r);if(null==e)return null;if((0,s.isNumber)(n))return e[n];const i=e[n.index];if((0,s.isTypedArray)(i)||(0,s.isArray)(i)){if((0,s.isArray)(i[0])){return i[n.dim2][n.dim1]}return i[n.flat_index]}return i}function d(r,t,n,e){if(\"$\"==r[0]){return function(r,t){if(r in t)return t[r];throw new Error(`Unknown special variable '$${r}'`)}(r.substring(1),e)}return p(r.substring(1).replace(/[{}]/g,\"\"),t,n)}n.FormatterType=(0,l.Enum)(\"numeral\",\"printf\",\"datetime\"),n.DEFAULT_FORMATTERS={numeral:(r,t,n)=>a.format(r,t),datetime:(r,t,n)=>(0,o.default)(r,t),printf:(r,t,n)=>c(t,r)},n.sprintf=c,n.basic_formatter=m,n.get_formatter=_,n._get_column_value=p,n.get_value=d,n.replace_placeholders=function(r,t,n,e,i={},u){let a,f;if((0,s.isString)(r)?(a=r,f=!1):(a=r.html,f=!0),a=a.replace(/@\\$name/g,(r=>`@{${i.name}}`)),a=a.replace(/((?:\\$\\w+)|(?:@\\w+)|(?:@{(?:[^{}]+)}))(?:{([^{}]+)})?/g,((r,a,o)=>{const l=d(a,t,n,i);if(null==l)return u?u(\"???\"):\"???\";if(\"safe\"==o)return f=!0,`${l}`;const s=`${_(a,o,e)(l,o,i)}`;return u?u(s):s})),f){return[...(new DOMParser).parseFromString(a,\"text/html\").body.childNodes]}return a}},\n", + " function _(e,n,t,r,i){\n", + " /*!\n", + " * numbro.js\n", + " * version : 1.6.2\n", + " * author : Företagsplatsen AB\n", + " * license : MIT\n", + " * http://www.foretagsplatsen.se\n", + " */\n", + " var a,o={},l=o,u=\"en-US\",c=null,s=\"0,0\";void 0!==n&&n.exports;function f(e){this._value=e}function d(e){var n,t=\"\";for(n=0;n-1?function(e,n){var t,r,i,a;return t=(a=e.toString()).split(\"e\")[0],i=a.split(\"e\")[1],a=t.split(\".\")[0]+(r=t.split(\".\")[1]||\"\")+d(i-r.length),n>0&&(a+=\".\"+d(n)),a}(e,n):(t(e*o)/o).toFixed(n),r&&(i=new RegExp(\"0{1,\"+r+\"}$\"),a=a.replace(i,\"\")),a}function p(e,n,t){var r;return r=n.indexOf(\"$\")>-1?function(e,n,t){var r,i,a=n,l=a.indexOf(\"$\"),c=a.indexOf(\"(\"),s=a.indexOf(\"+\"),f=a.indexOf(\"-\"),d=\"\",h=\"\";-1===a.indexOf(\"$\")?\"infix\"===o[u].currency.position?(h=o[u].currency.symbol,o[u].currency.spaceSeparated&&(h=\" \"+h+\" \")):o[u].currency.spaceSeparated&&(d=\" \"):a.indexOf(\" $\")>-1?(d=\" \",a=a.replace(\" $\",\"\")):a.indexOf(\"$ \")>-1?(d=\" \",a=a.replace(\"$ \",\"\")):a=a.replace(\"$\",\"\");if(i=m(e,a,t,h),-1===n.indexOf(\"$\"))switch(o[u].currency.position){case\"postfix\":i.indexOf(\")\")>-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;break;case\"infix\":break;case\"prefix\":i.indexOf(\"(\")>-1||i.indexOf(\"-\")>-1?(i=i.split(\"\"),r=Math.max(c,f)+1,i.splice(r,0,o[u].currency.symbol+d),i=i.join(\"\")):i=o[u].currency.symbol+d+i;break;default:throw Error('Currency position should be among [\"prefix\", \"infix\", \"postfix\"]')}else l<=1?i.indexOf(\"(\")>-1||i.indexOf(\"+\")>-1||i.indexOf(\"-\")>-1?(r=1,(l-1?((i=i.split(\"\")).splice(-1,0,d+o[u].currency.symbol),i=i.join(\"\")):i=i+d+o[u].currency.symbol;return i}(e,n,t):n.indexOf(\"%\")>-1?function(e,n,t){var r,i=\"\";e*=100,n.indexOf(\" %\")>-1?(i=\" \",n=n.replace(\" %\",\"\")):n=n.replace(\"%\",\"\");(r=m(e,n,t)).indexOf(\")\")>-1?((r=r.split(\"\")).splice(-1,0,i+\"%\"),r=r.join(\"\")):r=r+i+\"%\";return r}(e,n,t):n.indexOf(\":\")>-1?function(e){var n=Math.floor(e/60/60),t=Math.floor((e-60*n*60)/60),r=Math.round(e-60*n*60-60*t);return n+\":\"+(t<10?\"0\"+t:t)+\":\"+(r<10?\"0\"+r:r)}(e):m(e,n,t),r}function m(e,n,t,r){var i,a,l,s,f,d,p,m,x,g,O,b,w,y,M,v,$,B=!1,E=!1,F=!1,k=\"\",U=!1,N=!1,S=!1,j=!1,D=!1,C=\"\",L=\"\",T=Math.abs(e),K=[\"B\",\"KiB\",\"MiB\",\"GiB\",\"TiB\",\"PiB\",\"EiB\",\"ZiB\",\"YiB\"],G=[\"B\",\"KB\",\"MB\",\"GB\",\"TB\",\"PB\",\"EB\",\"ZB\",\"YB\"],I=\"\",P=!1,R=!1;if(0===e&&null!==c)return c;if(!isFinite(e))return\"\"+e;if(0===n.indexOf(\"{\")){var W=n.indexOf(\"}\");if(-1===W)throw Error('Format should also contain a \"}\"');b=n.slice(1,W),n=n.slice(W+1)}else b=\"\";if(n.indexOf(\"}\")===n.length-1){var Y=n.indexOf(\"{\");if(-1===Y)throw Error('Format should also contain a \"{\"');w=n.slice(Y+1,-1),n=n.slice(0,Y+1)}else w=\"\";if(v=null===($=-1===n.indexOf(\".\")?n.match(/([0-9]+).*/):n.match(/([0-9]+)\\..*/))?-1:$[1].length,-1!==n.indexOf(\"-\")&&(P=!0),n.indexOf(\"(\")>-1?(B=!0,n=n.slice(1,-1)):n.indexOf(\"+\")>-1&&(E=!0,n=n.replace(/\\+/g,\"\")),n.indexOf(\"a\")>-1){if(g=n.split(\".\")[0].match(/[0-9]+/g)||[\"0\"],g=parseInt(g[0],10),U=n.indexOf(\"aK\")>=0,N=n.indexOf(\"aM\")>=0,S=n.indexOf(\"aB\")>=0,j=n.indexOf(\"aT\")>=0,D=U||N||S||j,n.indexOf(\" a\")>-1?(k=\" \",n=n.replace(\" a\",\"\")):n=n.replace(\"a\",\"\"),p=0===(p=(f=Math.floor(Math.log(T)/Math.LN10)+1)%3)?3:p,g&&0!==T&&(d=Math.floor(Math.log(T)/Math.LN10)+1-g,m=3*~~((Math.min(g,f)-p)/3),T/=Math.pow(10,m),-1===n.indexOf(\".\")&&g>3))for(n+=\"[.]\",M=(M=0===d?0:3*~~(d/3)-d)<0?M+3:M,i=0;i=Math.pow(10,12)&&!D||j?(k+=o[u].abbreviations.trillion,e/=Math.pow(10,12)):T=Math.pow(10,9)&&!D||S?(k+=o[u].abbreviations.billion,e/=Math.pow(10,9)):T=Math.pow(10,6)&&!D||N?(k+=o[u].abbreviations.million,e/=Math.pow(10,6)):(T=Math.pow(10,3)&&!D||U)&&(k+=o[u].abbreviations.thousand,e/=Math.pow(10,3)))}if(n.indexOf(\"b\")>-1)for(n.indexOf(\" b\")>-1?(C=\" \",n=n.replace(\" b\",\"\")):n=n.replace(\"b\",\"\"),s=0;s<=K.length;s++)if(a=Math.pow(1024,s),l=Math.pow(1024,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"d\")>-1)for(n.indexOf(\" d\")>-1?(C=\" \",n=n.replace(\" d\",\"\")):n=n.replace(\"d\",\"\"),s=0;s<=G.length;s++)if(a=Math.pow(1e3,s),l=Math.pow(1e3,s+1),e>=a&&e0&&(e/=a);break}if(n.indexOf(\"o\")>-1&&(n.indexOf(\" o\")>-1?(L=\" \",n=n.replace(\" o\",\"\")):n=n.replace(\"o\",\"\"),o[u].ordinal&&(L+=o[u].ordinal(e))),n.indexOf(\"[.]\")>-1&&(F=!0,n=n.replace(\"[.]\",\".\")),x=e.toString().split(\".\")[0],O=n.split(\".\")[1],y=n.indexOf(\",\"),O){if(x=(I=-1!==O.indexOf(\"*\")?h(e,e.toString().split(\".\")[1].length,t):O.indexOf(\"[\")>-1?h(e,(O=(O=O.replace(\"]\",\"\")).split(\"[\"))[0].length+O[1].length,t,O[1].length):h(e,O.length,t)).split(\".\")[0],I.split(\".\")[1].length)I=(r?k+r:o[u].delimiters.decimal)+I.split(\".\")[1];else I=\"\";F&&0===Number(I.slice(1))&&(I=\"\")}else x=h(e,null,t);return x.indexOf(\"-\")>-1&&(x=x.slice(1),R=!0),x.length-1&&(x=x.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g,\"$1\"+o[u].delimiters.thousands)),0===n.indexOf(\".\")&&(x=\"\"),b+(n.indexOf(\"(\")2)&&(o.length<2?!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u):1===o[0].length?!!o[0].match(/^\\d+$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/):!!o[0].match(/^\\d+.*\\d$/)&&!o[0].match(u)&&!!o[1].match(/^\\d+$/)))))},n.exports={format:function(e,n,t,r){return null!=t&&t!==a.culture()&&a.setCulture(t),p(Number(e),null!=n?n:s,null==r?Math.round:r)}}},\n", + " function _(e,n,t,r,i){!function(){\"use strict\";var e={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\\x25]+/,modulo:/^\\x25{2}/,placeholder:/^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\\d]*)/i,key_access:/^\\.([a-z_][a-z_\\d]*)/i,index_access:/^\\[(\\d+)\\]/,sign:/^[+-]/};function n(e){return i(a(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(t,r){var i,s,a,o,p,c,l,u,f,d=1,g=t.length,y=\"\";for(s=0;s=0),o.type){case\"b\":i=parseInt(i,10).toString(2);break;case\"c\":i=String.fromCharCode(parseInt(i,10));break;case\"d\":case\"i\":i=parseInt(i,10);break;case\"j\":i=JSON.stringify(i,null,o.width?parseInt(o.width):0);break;case\"e\":i=o.precision?parseFloat(i).toExponential(o.precision):parseFloat(i).toExponential();break;case\"f\":i=o.precision?parseFloat(i).toFixed(o.precision):parseFloat(i);break;case\"g\":i=o.precision?String(Number(i.toPrecision(o.precision))):parseFloat(i);break;case\"o\":i=(parseInt(i,10)>>>0).toString(8);break;case\"s\":i=String(i),i=o.precision?i.substring(0,o.precision):i;break;case\"t\":i=String(!!i),i=o.precision?i.substring(0,o.precision):i;break;case\"T\":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=o.precision?i.substring(0,o.precision):i;break;case\"u\":i=parseInt(i,10)>>>0;break;case\"v\":i=i.valueOf(),i=o.precision?i.substring(0,o.precision):i;break;case\"x\":i=(parseInt(i,10)>>>0).toString(16);break;case\"X\":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}e.json.test(o.type)?y+=i:(!e.number.test(o.type)||u&&!o.sign?f=\"\":(f=u?\"+\":\"-\",i=i.toString().replace(e.sign,\"\")),c=o.pad_char?\"0\"===o.pad_char?\"0\":o.pad_char.charAt(1):\" \",l=o.width-(f+i).length,p=o.width&&l>0?c.repeat(l):\"\",y+=o.align?f+i+p:\"0\"===c?f+p+i:p+f+i)}return y}var s=Object.create(null);function a(n){if(s[n])return s[n];for(var t,r=n,i=[],a=0;r;){if(null!==(t=e.text.exec(r)))i.push(t[0]);else if(null!==(t=e.modulo.exec(r)))i.push(\"%\");else{if(null===(t=e.placeholder.exec(r)))throw new SyntaxError(\"[sprintf] unexpected placeholder\");if(t[2]){a|=1;var o=[],p=t[2],c=[];if(null===(c=e.key.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");for(o.push(c[1]);\"\"!==(p=p.substring(c[0].length));)if(null!==(c=e.key_access.exec(p)))o.push(c[1]);else{if(null===(c=e.index_access.exec(p)))throw new SyntaxError(\"[sprintf] failed to parse named argument key\");o.push(c[1])}t[2]=o}else a|=2;if(3===a)throw new Error(\"[sprintf] mixing positional and named placeholders is not (yet) supported\");i.push({placeholder:t[0],param_no:t[1],keys:t[2],sign:t[3],pad_char:t[4],align:t[5],width:t[6],precision:t[7],type:t[8]})}r=r.substring(t[0].length)}return s[n]=i}void 0!==t&&(t.sprintf=n,t.vsprintf=r),\"undefined\"!=typeof window&&(window.sprintf=n,window.vsprintf=r,\"function\"==typeof define&&define.amd&&define((function(){return{sprintf:n,vsprintf:r}})))}()},\n", + " function _(e,n,i,a,s){var r;a();const t=e(9),c=e(148),m=e(156),_=e(157),k=e(160),o=e(161),T=e(159);class w extends m.CompositeTicker{constructor(e){super(e)}}i.DatetimeTicker=w,r=w,w.__name__=\"DatetimeTicker\",r.override({num_minor_ticks:0,tickers:()=>[new c.AdaptiveTicker({mantissas:[1,2,5],base:10,min_interval:0,max_interval:500*T.ONE_MILLI,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,5,10,15,20,30],base:60,min_interval:T.ONE_SECOND,max_interval:30*T.ONE_MINUTE,num_minor_ticks:0}),new c.AdaptiveTicker({mantissas:[1,2,4,6,8,12],base:24,min_interval:T.ONE_HOUR,max_interval:12*T.ONE_HOUR,num_minor_ticks:0}),new _.DaysTicker({days:(0,t.range)(1,32)}),new _.DaysTicker({days:(0,t.range)(1,31,3)}),new _.DaysTicker({days:[1,8,15,22]}),new _.DaysTicker({days:[1,15]}),new k.MonthsTicker({months:(0,t.range)(0,12,1)}),new k.MonthsTicker({months:(0,t.range)(0,12,2)}),new k.MonthsTicker({months:(0,t.range)(0,12,4)}),new k.MonthsTicker({months:(0,t.range)(0,12,6)}),new o.YearsTicker({})]})},\n", + " function _(t,e,i,r,s){var n;r();const _=t(149),a=t(9);class l extends _.ContinuousTicker{constructor(t){super(t)}get min_intervals(){return this.tickers.map((t=>t.get_min_interval()))}get max_intervals(){return this.tickers.map((t=>t.get_max_interval()))}get_min_interval(){return this.min_intervals[0]}get_max_interval(){return this.max_intervals[0]}get_best_ticker(t,e,i){const r=e-t,s=this.get_ideal_interval(t,e,i),n=[(0,a.sorted_index)(this.min_intervals,s)-1,(0,a.sorted_index)(this.max_intervals,s)],_=[this.min_intervals[n[0]],this.max_intervals[n[1]]].map((t=>Math.abs(i-r/t)));let l;if((0,a.is_empty)(_.filter((t=>!isNaN(t)))))l=this.tickers[0];else{const t=n[(0,a.argmin)(_)];l=this.tickers[t]}return l}get_interval(t,e,i){return this.get_best_ticker(t,e,i).get_interval(t,e,i)}get_ticks_no_defaults(t,e,i,r){return this.get_best_ticker(t,e,r).get_ticks_no_defaults(t,e,i,r)}}i.CompositeTicker=l,n=l,l.__name__=\"CompositeTicker\",n.define((({Array:t,Ref:e})=>({tickers:[t(e(_.ContinuousTicker)),[]]})))},\n", + " function _(t,e,n,s,o){var a;s();const i=t(158),r=t(159),c=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.days;t.length>1?this.interval=(t[1]-t[0])*r.ONE_DAY:this.interval=31*r.ONE_DAY}get_ticks_no_defaults(t,e,n,s){const o=function(t,e){const n=(0,r.last_month_no_later_than)(new Date(t)),s=(0,r.last_month_no_later_than)(new Date(e));s.setUTCMonth(s.getUTCMonth()+1);const o=[],a=n;for(;o.push((0,r.copy_date)(a)),a.setUTCMonth(a.getUTCMonth()+1),!(a>s););return o}(t,e),a=this.days,i=this.interval,_=(0,c.concat)(o.map((t=>((t,e)=>{const n=t.getUTCMonth(),s=[];for(const o of a){const a=(0,r.copy_date)(t);a.setUTCDate(o),new Date(a.getTime()+e/2).getUTCMonth()==n&&s.push(a)}return s})(t,i))));return{major:_.map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.DaysTicker=_,a=_,_.__name__=\"DaysTicker\",a.define((({Int:t,Array:e})=>({days:[e(t),[]]}))),a.override({num_minor_ticks:0})},\n", + " function _(e,n,t,r,i){var a;r();const l=e(149);class s extends l.ContinuousTicker{constructor(e){super(e)}get_interval(e,n,t){return this.interval}get_min_interval(){return this.interval}get_max_interval(){return this.interval}}t.SingleIntervalTicker=s,a=s,s.__name__=\"SingleIntervalTicker\",a.define((({Number:e})=>({interval:[e]})))},\n", + " function _(t,n,e,_,E){function N(t){return new Date(t.getTime())}function O(t){const n=N(t);return n.setUTCDate(1),n.setUTCHours(0),n.setUTCMinutes(0),n.setUTCSeconds(0),n.setUTCMilliseconds(0),n}_(),e.ONE_MILLI=1,e.ONE_SECOND=1e3,e.ONE_MINUTE=60*e.ONE_SECOND,e.ONE_HOUR=60*e.ONE_MINUTE,e.ONE_DAY=24*e.ONE_HOUR,e.ONE_MONTH=30*e.ONE_DAY,e.ONE_YEAR=365*e.ONE_DAY,e.copy_date=N,e.last_month_no_later_than=O,e.last_year_no_later_than=function(t){const n=O(t);return n.setUTCMonth(0),n}},\n", + " function _(t,e,n,a,r){var s;a();const i=t(158),o=t(159),l=t(9);class _ extends i.SingleIntervalTicker{constructor(t){super(t)}initialize(){super.initialize();const t=this.months;t.length>1?this.interval=(t[1]-t[0])*o.ONE_MONTH:this.interval=12*o.ONE_MONTH}get_ticks_no_defaults(t,e,n,a){const r=function(t,e){const n=(0,o.last_year_no_later_than)(new Date(t)),a=(0,o.last_year_no_later_than)(new Date(e));a.setUTCFullYear(a.getUTCFullYear()+1);const r=[],s=n;for(;r.push((0,o.copy_date)(s)),s.setUTCFullYear(s.getUTCFullYear()+1),!(s>a););return r}(t,e),s=this.months;return{major:(0,l.concat)(r.map((t=>s.map((e=>{const n=(0,o.copy_date)(t);return n.setUTCMonth(e),n}))))).map((t=>t.getTime())).filter((n=>t<=n&&n<=e)),minor:[]}}}n.MonthsTicker=_,s=_,_.__name__=\"MonthsTicker\",s.define((({Int:t,Array:e})=>({months:[e(t),[]]})))},\n", + " function _(e,t,a,i,r){i();const n=e(147),_=e(158),s=e(159);class c extends _.SingleIntervalTicker{constructor(e){super(e)}initialize(){super.initialize(),this.interval=s.ONE_YEAR,this.basic_ticker=new n.BasicTicker({num_minor_ticks:0})}get_ticks_no_defaults(e,t,a,i){const r=(0,s.last_year_no_later_than)(new Date(e)).getUTCFullYear(),n=(0,s.last_year_no_later_than)(new Date(t)).getUTCFullYear();return{major:this.basic_ticker.get_ticks_no_defaults(r,n,a,i).major.map((e=>Date.UTC(e,0,1))).filter((a=>e<=a&&a<=t)),minor:[]}}}a.YearsTicker=c,c.__name__=\"YearsTicker\"},\n", + " function _(e,o,i,s,t){var n;s();const r=e(143),_=e(163),c=e(164);class a extends r.ContinuousAxisView{}i.LogAxisView=a,a.__name__=\"LogAxisView\";class u extends r.ContinuousAxis{constructor(e){super(e)}}i.LogAxis=u,n=u,u.__name__=\"LogAxis\",n.prototype.default_view=a,n.override({ticker:()=>new c.LogTicker,formatter:()=>new _.LogTickFormatter})},\n", + " function _(e,t,n,o,r){var i;o();const a=e(131),s=e(146),c=e(164),l=e(120),{abs:u,log:x,round:_}=Math;class p extends a.TickFormatter{constructor(e){super(e)}initialize(){super.initialize(),this.basic_formatter=new s.BasicTickFormatter}format_graphics(e,t){var n,o;if(0==e.length)return[];const r=null!==(o=null===(n=this.ticker)||void 0===n?void 0:n.base)&&void 0!==o?o:10,i=this._exponents(e,r);return null==i?this.basic_formatter.format_graphics(e,t):i.map((e=>{if(u(e)u(e)({ticker:[n(t(c.LogTicker)),null],min_exponent:[e,0]})))},\n", + " function _(t,o,e,s,n){var r;s();const i=t(148),a=t(9);class c extends i.AdaptiveTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,e,s){const n=this.num_minor_ticks,r=[],i=this.base,c=Math.log(t)/Math.log(i),f=Math.log(o)/Math.log(i),l=f-c;let h;if(isFinite(l))if(l<2){const e=this.get_interval(t,o,s),i=Math.floor(t/e),c=Math.ceil(o/e);if(h=(0,a.range)(i,c+1).filter((t=>0!=t)).map((t=>t*e)).filter((e=>t<=e&&e<=o)),n>0&&h.length>0){const t=e/n,o=(0,a.range)(0,n).map((o=>o*t));for(const t of o.slice(1))r.push(h[0]-t);for(const t of h)for(const e of o)r.push(t+e)}}else{const t=Math.ceil(.999999*c),o=Math.floor(1.000001*f),e=Math.ceil((o-t)/9);if(h=(0,a.range)(t-1,o+1,e).map((t=>i**t)),n>0&&h.length>0){const t=i**e/n,o=(0,a.range)(1,n+1).map((o=>o*t));for(const t of o)r.push(h[0]/t);r.push(h[0]);for(const t of h)for(const e of o)r.push(t*e)}}else h=[];return{major:h.filter((e=>t<=e&&e<=o)),minor:r.filter((e=>t<=e&&e<=o))}}}e.LogTicker=c,r=c,c.__name__=\"LogTicker\",r.override({mantissas:[1,5]})},\n", + " function _(e,r,t,i,a){var o;i();const s=e(128),c=e(145),n=e(166),_=e(167);class x extends s.AxisView{}t.MercatorAxisView=x,x.__name__=\"MercatorAxisView\";class d extends c.LinearAxis{constructor(e){super(e)}}t.MercatorAxis=d,o=d,d.__name__=\"MercatorAxis\",o.prototype.default_view=x,o.override({ticker:()=>new _.MercatorTicker({dimension:\"lat\"}),formatter:()=>new n.MercatorTickFormatter({dimension:\"lat\"})})},\n", + " function _(r,t,e,o,n){var i;o();const c=r(146),s=r(20),a=r(78);class l extends c.BasicTickFormatter{constructor(r){super(r)}doFormat(r,t){if(null==this.dimension)throw new Error(\"MercatorTickFormatter.dimension not configured\");if(0==r.length)return[];const e=r.length,o=new Array(e);if(\"lon\"==this.dimension)for(let n=0;n({dimension:[r(s.LatLon),null]})))},\n", + " function _(t,o,n,s,r){var e;s();const i=t(147),c=t(20),_=t(78);class a extends i.BasicTicker{constructor(t){super(t)}get_ticks_no_defaults(t,o,n,s){if(null==this.dimension)throw new Error(`${this}.dimension wasn't configured`);return[t,o]=(0,_.clip_mercator)(t,o,this.dimension),\"lon\"==this.dimension?this._get_ticks_lon(t,o,n,s):this._get_ticks_lat(t,o,n,s)}_get_ticks_lon(t,o,n,s){const[r]=_.wgs84_mercator.invert(t,n),[e,i]=_.wgs84_mercator.invert(o,n),c=super.get_ticks_no_defaults(r,e,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lon\")){const[o]=_.wgs84_mercator.compute(t,i);m.push(o)}return{major:a,minor:m}}_get_ticks_lat(t,o,n,s){const[,r]=_.wgs84_mercator.invert(n,t),[e,i]=_.wgs84_mercator.invert(n,o),c=super.get_ticks_no_defaults(r,i,n,s),a=[];for(const t of c.major)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);a.push(o)}const m=[];for(const t of c.minor)if((0,_.in_bounds)(t,\"lat\")){const[,o]=_.wgs84_mercator.compute(e,t);m.push(o)}return{major:a,minor:m}}}n.MercatorTicker=a,e=a,a.__name__=\"MercatorTicker\",e.define((({Nullable:t})=>({dimension:[t(c.LatLon),null]})))},\n", + " function _(e,i,r,c,k){c(),k(\"AdaptiveTicker\",e(148).AdaptiveTicker),k(\"BasicTicker\",e(147).BasicTicker),k(\"CategoricalTicker\",e(141).CategoricalTicker),k(\"CompositeTicker\",e(156).CompositeTicker),k(\"ContinuousTicker\",e(149).ContinuousTicker),k(\"DatetimeTicker\",e(155).DatetimeTicker),k(\"DaysTicker\",e(157).DaysTicker),k(\"FixedTicker\",e(169).FixedTicker),k(\"LogTicker\",e(164).LogTicker),k(\"MercatorTicker\",e(167).MercatorTicker),k(\"MonthsTicker\",e(160).MonthsTicker),k(\"SingleIntervalTicker\",e(158).SingleIntervalTicker),k(\"Ticker\",e(130).Ticker),k(\"YearsTicker\",e(161).YearsTicker),k(\"BinnedTicker\",e(170).BinnedTicker)},\n", + " function _(r,t,e,i,n){var s;i();const _=r(149);class c extends _.ContinuousTicker{constructor(r){super(r)}get_ticks_no_defaults(r,t,e,i){return{major:this.ticks,minor:this.minor_ticks}}get_interval(r,t,e){return 0}get_min_interval(){return 0}get_max_interval(){return 0}}e.FixedTicker=c,s=c,c.__name__=\"FixedTicker\",s.define((({Number:r,Array:t})=>({ticks:[t(r),[]],minor_ticks:[t(r),[]]})))},\n", + " function _(e,n,t,r,i){var o;r();const a=e(130),s=e(171),c=e(12);class m extends a.Ticker{constructor(e){super(e)}get_ticks(e,n,t,r){const{binning:i}=this.mapper.metrics,o=Math.max(0,(0,c.left_edge_index)(e,i)),a=Math.min((0,c.left_edge_index)(n,i)+1,i.length-1),s=[];for(let e=o;e<=a;e++)s.push(i[e]);const{num_major_ticks:m}=this,_=[],h=\"auto\"==m?s.length:m,l=Math.max(1,Math.floor(s.length/h));for(let e=0;e({mapper:[n(s.ScanningColorMapper)],num_major_ticks:[t(e,r),8]})))},\n", + " function _(n,e,i,r,o){r();const t=n(172),a=n(12);class c extends t.ContinuousColorMapper{constructor(n){super(n)}cmap(n,e,i,r,o){if(no.binning[o.binning.length-1])return r;return e[(0,a.left_edge_index)(n,o.binning)]}}i.ScanningColorMapper=c,c.__name__=\"ScanningColorMapper\"},\n", + " function _(t,e,o,n,s){var l;n();const c=t(173),i=t(175),a=t(9),h=t(8);class r extends c.ColorMapper{constructor(t){super(t),this._scan_data=null}connect_signals(){super.connect_signals();const t=()=>{for(const[t]of this.domain)this.connect(t.view.change,(()=>this.update_data())),this.connect(t.data_source.selected.change,(()=>this.update_data()))};this.connect(this.properties.domain.change,(()=>t())),t()}update_data(){const{domain:t,palette:e}=this,o=[...this._collect(t)];this._scan_data=this.scan(o,e.length),this.metrics_change.emit(),this.change.emit()}get metrics(){return null==this._scan_data&&this.update_data(),this._scan_data}*_collect(t){for(const[e,o]of t)for(const t of(0,h.isArray)(o)?o:[o]){let o=e.data_source.get_column(t);o=e.view.indices.select(o);const n=e.view.masked,s=e.data_source.selected.indices;let l;if(null!=n&&s.length>0?l=(0,a.intersection)([...n],s):null!=n?l=[...n]:s.length>0&&(l=s),null!=l&&(o=(0,a.map)(l,(t=>o[t]))),o.length>0&&!(0,h.isNumber)(o[0]))for(const t of o)yield*t;else yield*o}}_v_compute(t,e,o,n){const{nan_color:s}=n;let{low_color:l,high_color:c}=n;null==l&&(l=o[0]),null==c&&(c=o[o.length-1]);const{domain:i}=this,h=(0,a.is_empty)(i)?t:[...this._collect(i)];this._scan_data=this.scan(h,o.length),this.metrics_change.emit();for(let n=0,i=t.length;n({high:[a(t),null],low:[a(t),null],high_color:[a(n),null],low_color:[a(n),null],domain:[c(l(o(i.GlyphRenderer),s(e,c(e)))),[]]})))},\n", + " function _(e,r,t,n,o){var a;n();const c=e(174),i=e(15),_=e(24),l=e(22),s=e(27);function p(e){return(0,l.encode_rgba)((0,l.color2rgba)(e))}function u(e){const r=new Uint32Array(e.length);for(let t=0,n=e.length;te))),r}get rgba_mapper(){const e=this,r=u(this.palette),t=this._colors(p);return{v_compute(n){const o=new _.ColorArray(n.length);return e._v_compute(n,o,r,t),new Uint8ClampedArray((0,s.to_big_endian)(o).buffer)}}}_colors(e){return{nan_color:e(this.nan_color)}}}t.ColorMapper=h,a=h,h.__name__=\"ColorMapper\",a.define((({Color:e,Array:r})=>({palette:[r(e)],nan_color:[e,\"gray\"]})))},\n", + " function _(r,e,n,s,o){s();const p=r(56);class t extends p.Transform{constructor(r){super(r)}compute(r){throw new Error(\"mapping single values is not supported\")}}n.Mapper=t,t.__name__=\"Mapper\"},\n", + " function _(e,t,i,s,l){var h;s();const n=e(176),o=e(177),a=e(186),c=e(187),_=e(189),r=e(179),d=e(70),p=e(190),g=e(24),u=e(12),y=e(13),m=e(113),v=e(67),f={fill:{},line:{}},w={fill:{fill_alpha:.3,fill_color:\"grey\"},line:{line_alpha:.3,line_color:\"grey\"}},b={fill:{fill_alpha:.2},line:{}},V={fill:{fill_alpha:.2},line:{}};class x extends n.DataRendererView{get glyph_view(){return this.glyph}async lazy_initialize(){var e;await super.lazy_initialize();const t=this.model.glyph;this.glyph=await this.build_glyph_view(t);const i=\"fill\"in this.glyph.visuals,s=\"line\"in this.glyph.visuals,l=Object.assign({},t.attributes);function h(e){const h=(0,y.clone)(l);return i&&(0,y.extend)(h,e.fill),s&&(0,y.extend)(h,e.line),new t.constructor(h)}function n(e,t){return t instanceof r.Glyph?t:h(\"auto\"==t?e:{fill:{},line:{}})}delete l.id;let{selection_glyph:o,nonselection_glyph:a,hover_glyph:c,muted_glyph:_}=this.model;o=n(f,o),this.selection_glyph=await this.build_glyph_view(o),a=n(b,a),this.nonselection_glyph=await this.build_glyph_view(a),null!=c&&(this.hover_glyph=await this.build_glyph_view(c)),_=n(V,_),this.muted_glyph=await this.build_glyph_view(_);const d=n(w,\"auto\");this.decimated_glyph=await this.build_glyph_view(d),this.selection_glyph.set_base(this.glyph),this.nonselection_glyph.set_base(this.glyph),null===(e=this.hover_glyph)||void 0===e||e.set_base(this.glyph),this.muted_glyph.set_base(this.glyph),this.decimated_glyph.set_base(this.glyph),this.set_data()}async build_glyph_view(e){return(0,m.build_view)(e,{parent:this})}remove(){var e;this.glyph.remove(),this.selection_glyph.remove(),this.nonselection_glyph.remove(),null===(e=this.hover_glyph)||void 0===e||e.remove(),this.muted_glyph.remove(),this.decimated_glyph.remove(),super.remove()}connect_signals(){super.connect_signals();const e=()=>this.request_render(),t=()=>this.update_data();this.connect(this.model.change,e),this.connect(this.glyph.model.change,t),this.connect(this.selection_glyph.model.change,t),this.connect(this.nonselection_glyph.model.change,t),null!=this.hover_glyph&&this.connect(this.hover_glyph.model.change,t),this.connect(this.muted_glyph.model.change,t),this.connect(this.decimated_glyph.model.change,t),this.connect(this.model.data_source.change,t),this.connect(this.model.data_source.streaming,t),this.connect(this.model.data_source.patching,(e=>this.update_data(e))),this.connect(this.model.data_source.selected.change,e),this.connect(this.model.data_source._select,e),null!=this.hover_glyph&&this.connect(this.model.data_source.inspect,e),this.connect(this.model.properties.view.change,t),this.connect(this.model.view.properties.indices.change,t),this.connect(this.model.view.properties.masked.change,(()=>this.set_visuals())),this.connect(this.model.properties.visible.change,(()=>this.plot_view.invalidate_dataranges=!0));const{x_ranges:i,y_ranges:s}=this.plot_view.frame;for(const[,e]of i)e instanceof v.FactorRange&&this.connect(e.change,t);for(const[,e]of s)e instanceof v.FactorRange&&this.connect(e.change,t);const{transformchange:l,exprchange:h}=this.model.glyph;this.connect(l,t),this.connect(h,t)}_update_masked_indices(){const e=this.glyph.mask_data();return this.model.view.masked=e,e}update_data(e){this.set_data(e),this.request_render()}set_data(e){const t=this.model.data_source;this.all_indices=this.model.view.indices;const{all_indices:i}=this;this.glyph.set_data(t,i,e),this.set_visuals(),this._update_masked_indices();const{lod_factor:s}=this.plot_model,l=this.all_indices.count;this.decimated=new g.Indices(l);for(let e=0;e!n||n.is_empty()?[]:n.selected_glyph?this.model.view.convert_indices_from_subset(i):n.indices.length>0?n.indices:Object.keys(n.multiline_indices).map((e=>parseInt(e))))()),d=(0,u.filter)(i,(e=>r.has(t[e]))),{lod_threshold:p}=this.plot_model;let g,y,m;if(null!=this.model.document&&this.model.document.interactive_duration()>0&&!e&&null!=p&&t.length>p?(i=[...this.decimated],g=this.decimated_glyph,y=this.decimated_glyph,m=this.selection_glyph):(g=this.model.muted?this.muted_glyph:this.glyph,y=this.nonselection_glyph,m=this.selection_glyph),null!=this.hover_glyph&&d.length){const e=new Set(i);for(const t of d)e.delete(t);i=[...e]}if(h.length){const e={};for(const t of h)e[t]=!0;const l=new Array,n=new Array;if(this.glyph instanceof o.LineView)for(const i of t)null!=e[i]?l.push(i):n.push(i);else for(const s of i)null!=e[t[s]]?l.push(s):n.push(s);y.render(s,n),m.render(s,l),null!=this.hover_glyph&&(this.glyph instanceof o.LineView?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):this.hover_glyph.render(s,d))}else if(this.glyph instanceof o.LineView)this.hover_glyph&&d.length?this.hover_glyph.render(s,this.model.view.convert_indices_from_subset(d)):g.render(s,t);else if(this.glyph instanceof a.PatchView||this.glyph instanceof c.HAreaView||this.glyph instanceof _.VAreaView)if(0==n.selected_glyphs.length||null==this.hover_glyph)g.render(s,t);else for(const e of n.selected_glyphs)e==this.glyph.model&&this.hover_glyph.render(s,t);else g.render(s,i),this.hover_glyph&&d.length&&this.hover_glyph.render(s,d);s.restore()}draw_legend(e,t,i,s,l,h,n,o){0!=this.glyph.data_size&&(null==o&&(o=this.model.get_reference_point(h,n)),this.glyph.draw_legend_for_index(e,{x0:t,x1:i,y0:s,y1:l},o))}hit_test(e){if(!this.model.visible)return null;const t=this.glyph.hit_test(e);return null==t?null:this.model.view.convert_selection_from_subset(t)}}i.GlyphRendererView=x,x.__name__=\"GlyphRendererView\";class G extends n.DataRenderer{constructor(e){super(e)}initialize(){super.initialize(),this.view.source!=this.data_source&&(this.view.source=this.data_source,this.view.compute_indices())}get_reference_point(e,t){if(null!=e){const i=this.data_source.get_column(e);if(null!=i)for(const[e,s]of Object.entries(this.view.indices_map))if(i[parseInt(e)]==t)return s}return 0}get_selection_manager(){return this.data_source.selection_manager}}i.GlyphRenderer=G,h=G,G.__name__=\"GlyphRenderer\",h.prototype.default_view=x,h.define((({Boolean:e,Auto:t,Or:i,Ref:s,Null:l,Nullable:h})=>({data_source:[s(d.ColumnarDataSource)],view:[s(p.CDSView),e=>new p.CDSView({source:e.data_source})],glyph:[s(r.Glyph)],hover_glyph:[h(s(r.Glyph)),null],nonselection_glyph:[i(s(r.Glyph),t,l),\"auto\"],selection_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted_glyph:[i(s(r.Glyph),t,l),\"auto\"],muted:[e,!1]})))},\n", + " function _(e,r,t,a,n){var s;a();const c=e(41);class _ extends c.RendererView{get xscale(){return this.coordinates.x_scale}get yscale(){return this.coordinates.y_scale}}t.DataRendererView=_,_.__name__=\"DataRendererView\";class i extends c.Renderer{constructor(e){super(e)}get selection_manager(){return this.get_selection_manager()}}t.DataRenderer=i,s=i,i.__name__=\"DataRenderer\",s.override({level:\"glyph\"})},\n", + " function _(e,t,i,s,n){s();const l=e(1);var _;const r=e(178),o=e(184),a=(0,l.__importStar)(e(48)),h=(0,l.__importStar)(e(185)),c=e(72);class d extends r.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null==t?void 0:t.regl_wrapper.has_webgl){const{LineGL:i}=await Promise.resolve().then((()=>(0,l.__importStar)(e(426))));this.glglyph=new i(t.regl_wrapper,this)}}_render(e,t,i){const{sx:s,sy:n}=null!=i?i:this;let l=null;const _=e=>null!=l&&e-l!=1;let r=!0;e.beginPath();for(const i of t){const t=s[i],o=n[i];isFinite(t+o)?r||_(i)?(e.moveTo(t,o),r=!1):e.lineTo(t,o):r=!0,l=i}this.visuals.line.set_value(e),e.stroke()}_hit_point(e){const t=new c.Selection,i={x:e.sx,y:e.sy};let s=9999;const n=Math.max(2,this.line_width.value/2);for(let e=0,l=this.sx.length-1;e({x:[c.XCoordinateSpec,{field:\"x\"}],y:[c.YCoordinateSpec,{field:\"y\"}]})))},\n", + " function _(e,t,s,i,n){i();const r=e(1),a=(0,r.__importStar)(e(18)),o=(0,r.__importStar)(e(65)),_=(0,r.__importStar)(e(45)),l=e(42),c=e(53),h=e(19),d=e(24),u=e(8),f=e(180),p=e(12),g=e(26),y=e(181),x=e(67),v=e(72),{abs:b,ceil:m}=Math;class w extends l.View{constructor(){super(...arguments),this._index=null,this._data_size=null,this._nohit_warned=new Set}get renderer(){return this.parent}get has_webgl(){return null!=this.glglyph}get index(){const{_index:e}=this;if(null!=e)return e;throw new Error(`${this}.index_data() wasn't called`)}get data_size(){const{_data_size:e}=this;if(null!=e)return e;throw new Error(`${this}.set_data() wasn't called`)}initialize(){super.initialize(),this.visuals=new _.Visuals(this)}request_render(){this.parent.request_render()}get canvas(){return this.renderer.parent.canvas_view}render(e,t,s){var i;null!=this.glglyph&&(this.renderer.needs_webgl_blit=this.glglyph.render(e,t,null!==(i=this.base)&&void 0!==i?i:this),this.renderer.needs_webgl_blit)||this._render(e,t,null!=s?s:this.base)}has_finished(){return!0}notify_finished(){this.renderer.notify_finished()}_bounds(e){return e}bounds(){return this._bounds(this.index.bbox)}log_bounds(){const{x0:e,x1:t}=this.index.bounds(o.positive_x()),{y0:s,y1:i}=this.index.bounds(o.positive_y());return this._bounds({x0:e,y0:s,x1:t,y1:i})}get_anchor_point(e,t,[s,i]){switch(e){case\"center\":case\"center_center\":{const[e,n]=this.scenterxy(t,s,i);return{x:e,y:n}}default:return null}}scenterx(e,t,s){return this.scenterxy(e,t,s)[0]}scentery(e,t,s){return this.scenterxy(e,t,s)[1]}sdist(e,t,s,i=\"edge\",n=!1){const r=t.length,a=new d.ScreenArray(r),o=e.s_compute;if(\"center\"==i)for(let e=0;em(e))),a}draw_legend_for_index(e,t,s){}hit_test(e){switch(e.type){case\"point\":if(null!=this._hit_point)return this._hit_point(e);break;case\"span\":if(null!=this._hit_span)return this._hit_span(e);break;case\"rect\":if(null!=this._hit_rect)return this._hit_rect(e);break;case\"poly\":if(null!=this._hit_poly)return this._hit_poly(e)}return this._nohit_warned.has(e.type)||(h.logger.debug(`'${e.type}' selection not available for ${this.model.type}`),this._nohit_warned.add(e.type)),null}_hit_rect_against_index(e){const{sx0:t,sx1:s,sy0:i,sy1:n}=e,[r,a]=this.renderer.coordinates.x_scale.r_invert(t,s),[o,_]=this.renderer.coordinates.y_scale.r_invert(i,n),l=[...this.index.indices({x0:r,x1:a,y0:o,y1:_})];return new v.Selection({indices:l})}_project_data(){}*_iter_visuals(){for(const e of this.visuals)for(const t of e)(t instanceof a.VectorSpec||t instanceof a.ScalarSpec)&&(yield t)}set_base(e){e!=this&&e instanceof this.constructor&&(this.base=e)}_configure(e,t){Object.defineProperty(this,(0,u.isString)(e)?e:e.attr,Object.assign({configurable:!0,enumerable:!0},t))}set_visuals(e,t){var s;for(const s of this._iter_visuals()){const{base:i}=this;if(null!=i){const e=i.model.properties[s.attr];if(null!=e&&(0,g.is_equal)(s.get_value(),e.get_value())){this._configure(s,{get:()=>i[`${s.attr}`]});continue}}const n=s.uniform(e).select(t);this._configure(s,{value:n})}for(const e of this.visuals)e.update();null===(s=this.glglyph)||void 0===s||s.set_visuals_changed()}set_data(e,t,s){var i;const{x_source:n,y_source:r}=this.renderer.coordinates,o=new Set(this._iter_visuals());this._data_size=t.count;for(const s of this.model)if((s instanceof a.VectorSpec||s instanceof a.ScalarSpec)&&!o.has(s))if(s instanceof a.BaseCoordinateSpec){const i=s.array(e);let o=t.select(i);const _=\"x\"==s.dimension?n:r;if(_ instanceof x.FactorRange)if(s instanceof a.CoordinateSpec)o=_.v_synthetic(o);else if(s instanceof a.CoordinateSeqSpec)for(let e=0;e{const s=new Uint32Array(r);for(let a=0;a>1;t[s]>i?e=s:n=s+1}return t[n]}class r extends d.default{get boxes(){return this._boxes}search_indices(i,t,n,e){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let s=this._boxes.length-4;const d=[],x=new o.Indices(this.numItems);for(;void 0!==s;){const o=Math.min(s+4*this.nodeSize,h(s,this._levelBounds));for(let h=s;h>2],r=this._boxes[h+0],l=this._boxes[h+1],a=this._boxes[h+2],_=this._boxes[h+3];na||t>_||(s<4*this.numItems?x.set(o):d.push(o)))}s=d.pop()}return x}}r.__name__=\"_FlatBush\";class l{constructor(i){this.index=null,i>0&&(this.index=new r(i))}add_rect(i,t,n,e){var s;isFinite(i+t+n+e)?null===(s=this.index)||void 0===s||s.add(i,t,n,e):this.add_empty()}add_point(i,t){var n;isFinite(i+t)?null===(n=this.index)||void 0===n||n.add(i,t,i,t):this.add_empty()}add_empty(){var i;null===(i=this.index)||void 0===i||i.add(1/0,1/0,-1/0,-1/0)}finish(){var i;null===(i=this.index)||void 0===i||i.finish()}_normalize(i){let{x0:t,y0:n,x1:e,y1:s}=i;return t>e&&([t,e]=[e,t]),n>s&&([n,s]=[s,n]),{x0:t,y0:n,x1:e,y1:s}}get bbox(){if(null==this.index)return(0,x.empty)();{const{minX:i,minY:t,maxX:n,maxY:e}=this.index;return{x0:i,y0:t,x1:n,y1:e}}}indices(i){if(null==this.index)return new o.Indices(0);{const{x0:t,y0:n,x1:e,y1:s}=this._normalize(i);return this.index.search_indices(t,n,e,s)}}bounds(i){const t=(0,x.empty)();if(null==this.index)return t;const{boxes:n}=this.index;for(const e of this.indices(i)){const s=n[4*e+0],d=n[4*e+1],o=n[4*e+2],x=n[4*e+3];s>=i.x0&&st.x1&&(t.x1=o),d>=i.y0&&dt.y1&&(t.y1=x)}return t}}n.SpatialIndex=l,l.__name__=\"SpatialIndex\"},\n", + " function _(t,s,i,e,h){e();const n=(0,t(1).__importDefault)(t(183)),o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class r{static from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[s,i]=new Uint8Array(t,0,2);if(251!==s)throw new Error(\"Data does not appear to be in a Flatbush format.\");if(i>>4!=3)throw new Error(`Got v${i>>4} data when expected v3.`);const[e]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new r(h,e,o[15&i],t)}constructor(t,s=16,i=Float64Array,e){if(void 0===t)throw new Error(\"Missing required argument: numItems.\");if(isNaN(t)||t<=0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+s,2),65535);let h=t,r=h;this._levelBounds=[4*h];do{h=Math.ceil(h/this.nodeSize),r+=h,this._levelBounds.push(4*r)}while(1!==h);this.ArrayType=i||Float64Array,this.IndexArrayType=r<16384?Uint16Array:Uint32Array;const a=o.indexOf(this.ArrayType),_=4*r*this.ArrayType.BYTES_PER_ELEMENT;if(a<0)throw new Error(`Unexpected typed array class: ${i}.`);e&&e instanceof ArrayBuffer?(this.data=e,this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=4*r,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1]):(this.data=new ArrayBuffer(8+_+r*this.IndexArrayType.BYTES_PER_ELEMENT),this._boxes=new this.ArrayType(this.data,8,4*r),this._indices=new this.IndexArrayType(this.data,8+_,r),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(this.data,0,2).set([251,48+a]),new Uint16Array(this.data,2,1)[0]=s,new Uint32Array(this.data,4,1)[0]=t),this._queue=new n.default}add(t,s,i,e){const h=this._pos>>2;return this._indices[h]=h,this._boxes[this._pos++]=t,this._boxes[this._pos++]=s,this._boxes[this._pos++]=i,this._boxes[this._pos++]=e,tthis.maxX&&(this.maxX=i),e>this.maxY&&(this.maxY=e),h}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);if(this.numItems<=this.nodeSize)return this._boxes[this._pos++]=this.minX,this._boxes[this._pos++]=this.minY,this._boxes[this._pos++]=this.maxX,void(this._boxes[this._pos++]=this.maxY);const t=this.maxX-this.minX,s=this.maxY-this.minY,i=new Uint32Array(this.numItems);for(let e=0;e>2]=t,this._boxes[this._pos++]=e,this._boxes[this._pos++]=h,this._boxes[this._pos++]=n,this._boxes[this._pos++]=o}}}search(t,s,i,e,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=[],r=[];for(;void 0!==n;){const a=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let _=n;_>2];ithis._boxes[_+2]||s>this._boxes[_+3]||(n<4*this.numItems?(void 0===h||h(a))&&r.push(a):o.push(a)))}n=o.pop()}return r}neighbors(t,s,i=1/0,e=1/0,h){if(this._pos!==this._boxes.length)throw new Error(\"Data not yet indexed - call index.finish().\");let n=this._boxes.length-4;const o=this._queue,r=[],x=e*e;for(;void 0!==n;){const e=Math.min(n+4*this.nodeSize,_(n,this._levelBounds));for(let i=n;i>2],r=a(t,this._boxes[i],this._boxes[i+2]),_=a(s,this._boxes[i+1],this._boxes[i+3]),x=r*r+_*_;n<4*this.numItems?(void 0===h||h(e))&&o.push(-e-1,x):o.push(e,x)}for(;o.length&&o.peek()<0;){if(o.peekValue()>x)return o.clear(),r;if(r.push(-o.pop()-1),r.length===i)return o.clear(),r}n=o.pop()}return o.clear(),r}}function a(t,s,i){return t>1;s[h]>t?e=h:i=h+1}return s[i]}function x(t,s,i,e,h,n){if(Math.floor(e/n)>=Math.floor(h/n))return;const o=t[e+h>>1];let r=e-1,a=h+1;for(;;){do{r++}while(t[r]o);if(r>=a)break;d(t,s,i,r,a)}x(t,s,i,e,a,n),x(t,s,i,a+1,h,n)}function d(t,s,i,e,h){const n=t[e];t[e]=t[h],t[h]=n;const o=4*e,r=4*h,a=s[o],_=s[o+1],x=s[o+2],d=s[o+3];s[o]=s[r],s[o+1]=s[r+1],s[o+2]=s[r+2],s[o+3]=s[r+3],s[r]=a,s[r+1]=_,s[r+2]=x,s[r+3]=d;const m=i[e];i[e]=i[h],i[h]=m}function m(t,s){let i=t^s,e=65535^i,h=65535^(t|s),n=t&(65535^s),o=i|e>>1,r=i>>1^i,a=h>>1^e&n>>1^h,_=i&h>>1^n>>1^n;i=o,e=r,h=a,n=_,o=i&i>>2^e&e>>2,r=i&e>>2^e&(i^e)>>2,a^=i&h>>2^e&n>>2,_^=e&h>>2^(i^e)&n>>2,i=o,e=r,h=a,n=_,o=i&i>>4^e&e>>4,r=i&e>>4^e&(i^e)>>4,a^=i&h>>4^e&n>>4,_^=e&h>>4^(i^e)&n>>4,i=o,e=r,h=a,n=_,a^=i&h>>8^e&n>>8,_^=e&h>>8^(i^e)&n>>8,i=a^a>>1,e=_^_>>1;let x=t^s,d=e|65535^(x|i);return x=16711935&(x|x<<8),x=252645135&(x|x<<4),x=858993459&(x|x<<2),x=1431655765&(x|x<<1),d=16711935&(d|d<<8),d=252645135&(d|d<<4),d=858993459&(d|d<<2),d=1431655765&(d|d<<1),(d<<1|x)>>>0}i.default=r},\n", + " function _(s,t,i,h,e){h();i.default=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(s,t){let i=this.length++;for(this.ids[i]=s,this.values[i]=t;i>0;){const s=i-1>>1,h=this.values[s];if(t>=h)break;this.ids[i]=this.ids[s],this.values[i]=h,i=s}this.ids[i]=s,this.values[i]=t}pop(){if(0===this.length)return;const s=this.ids[0];if(this.length--,this.length>0){const s=this.ids[0]=this.ids[this.length],t=this.values[0]=this.values[this.length],i=this.length>>1;let h=0;for(;h=t)break;this.ids[h]=e,this.values[h]=l,h=s}this.ids[h]=s,this.values[h]=t}return s}peek(){if(0!==this.length)return this.ids[0]}peekValue(){if(0!==this.length)return this.values[0]}}},\n", + " function _(e,n,a,t,i){t();const l=(0,e(1).__importStar)(e(185));function r(e,n,{x0:a,x1:t,y0:i,y1:l},r){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n,r),n.restore()}function c(e,n,{x0:a,x1:t,y0:i,y1:l},r){var c,o;const _=.1*Math.abs(t-a),s=.1*Math.abs(l-i),y=a+_,p=t-_,g=i+s,h=l-s;n.beginPath(),n.rect(y,g,p-y,h-g),e.fill.apply(n,r),null===(c=e.hatch)||void 0===c||c.apply(n,r),null===(o=e.line)||void 0===o||o.apply(n,r)}a.generic_line_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){n.save(),n.beginPath(),n.moveTo(a,(i+l)/2),n.lineTo(t,(i+l)/2),e.line.apply(n),n.restore()},a.generic_line_vector_legend=r,a.generic_line_legend=r,a.generic_area_scalar_legend=function(e,n,{x0:a,x1:t,y0:i,y1:l}){var r,c;const o=.1*Math.abs(t-a),_=.1*Math.abs(l-i),s=a+o,y=t-o,p=i+_,g=l-_;n.beginPath(),n.rect(s,p,y-s,g-p),e.fill.apply(n),null===(r=e.hatch)||void 0===r||r.apply(n),null===(c=e.line)||void 0===c||c.apply(n)},a.generic_area_vector_legend=c,a.generic_area_legend=c,a.line_interpolation=function(e,n,a,t,i,r){const{sx:c,sy:o}=n;let _,s,y,p;\"point\"==n.type?([y,p]=e.yscale.r_invert(o-1,o+1),[_,s]=e.xscale.r_invert(c-1,c+1)):\"v\"==n.direction?([y,p]=e.yscale.r_invert(o,o),[_,s]=[Math.min(a-1,i-1),Math.max(a+1,i+1)]):([_,s]=e.xscale.r_invert(c,c),[y,p]=[Math.min(t-1,r-1),Math.max(t+1,r+1)]);const{x:g,y:h}=l.check_2_segments_intersect(_,y,s,p,a,t,i,r);return[g,h]}},\n", + " function _(t,n,e,i,r){function s(t,n){return(t.x-n.x)**2+(t.y-n.y)**2}function o(t,n,e){const i=s(n,e);if(0==i)return s(t,n);const r=((t.x-n.x)*(e.x-n.x)+(t.y-n.y)*(e.y-n.y))/i;if(r<0)return s(t,n);if(r>1)return s(t,e);return s(t,{x:n.x+r*(e.x-n.x),y:n.y+r*(e.y-n.y)})}i(),e.point_in_poly=function(t,n,e,i){let r=!1,s=e[e.length-1],o=i[i.length-1];for(let u=0;u0&&_<1&&h>0&&h<1,x:t+_*(e-t),y:n+_*(i-n)}}}},\n", + " function _(t,s,e,i,a){i();const l=t(1);var n;const _=t(178),o=t(184),c=(0,l.__importStar)(t(185)),h=(0,l.__importStar)(t(48)),r=t(72);class p extends _.XYGlyphView{_render(t,s,e){const{sx:i,sy:a}=null!=e?e:this;let l=!0;t.beginPath();for(const e of s){const s=i[e],n=a[e];isFinite(s+n)?l?(t.moveTo(s,n),l=!1):t.lineTo(s,n):(t.closePath(),l=!0)}t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t),this.visuals.line.apply(t)}draw_legend_for_index(t,s,e){(0,o.generic_area_scalar_legend)(this.visuals,t,s)}_hit_point(t){const s=new r.Selection;return c.point_in_poly(t.sx,t.sy,this.sx,this.sy)&&(s.add_to_selected_glyphs(this.model),s.view=this),s}}e.PatchView=p,p.__name__=\"PatchView\";class d extends _.XYGlyph{constructor(t){super(t)}}e.Patch=d,n=d,d.__name__=\"Patch\",n.prototype.default_view=p,n.mixins([h.LineScalar,h.FillScalar,h.HatchScalar])},\n", + " function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(n[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}_hit_point(t){const s=this.sy.length,e=new l.Selection;for(let i=0,n=s-1;i({x1:[o.XCoordinateSpec,{field:\"x1\"}],x2:[o.XCoordinateSpec,{field:\"x2\"}],y:[o.YCoordinateSpec,{field:\"y\"}]})))},\n", + " function _(e,a,r,_,s){_();const n=e(1);var c;const i=e(179),l=e(184),t=(0,n.__importStar)(e(48));class o extends i.GlyphView{draw_legend_for_index(e,a,r){(0,l.generic_area_scalar_legend)(this.visuals,e,a)}}r.AreaView=o,o.__name__=\"AreaView\";class d extends i.Glyph{constructor(e){super(e)}}r.Area=d,c=d,d.__name__=\"Area\",c.mixins([t.FillScalar,t.HatchScalar])},\n", + " function _(t,s,e,i,n){i();const h=t(1);var r;const a=t(188),_=(0,h.__importStar)(t(185)),o=(0,h.__importStar)(t(18)),l=t(72);class c extends a.AreaView{_index_data(t){const{min:s,max:e}=Math,{data_size:i}=this;for(let n=0;n=0;s--)t.lineTo(i[s],h[s]);t.closePath(),this.visuals.fill.apply(t),this.visuals.hatch.apply(t)}scenterxy(t){return[this.sx[t],(this.sy1[t]+this.sy2[t])/2]}_hit_point(t){const s=this.sx.length,e=new l.Selection;for(let i=0,n=s-1;i({x:[o.XCoordinateSpec,{field:\"x\"}],y1:[o.YCoordinateSpec,{field:\"y1\"}],y2:[o.YCoordinateSpec,{field:\"y2\"}]})))},\n", + " function _(e,i,s,t,n){var c;t();const o=e(53),r=e(24),u=e(191),_=e(70);class a extends o.Model{constructor(e){super(e)}initialize(){super.initialize(),this.compute_indices()}connect_signals(){super.connect_signals(),this.connect(this.properties.filters.change,(()=>this.compute_indices()));const e=()=>{const e=()=>this.compute_indices();null!=this.source&&(this.connect(this.source.change,e),this.source instanceof _.ColumnarDataSource&&(this.connect(this.source.streaming,e),this.connect(this.source.patching,e)))};let i=null!=this.source;i?e():this.connect(this.properties.source.change,(()=>{i||(e(),i=!0)}))}compute_indices(){var e;const{source:i}=this;if(null==i)return;const s=null!==(e=i.get_length())&&void 0!==e?e:1,t=r.Indices.all_set(s);for(const e of this.filters)t.intersect(e.compute_indices(i));this.indices=t,this._indices=[...t],this.indices_map_to_subset()}indices_map_to_subset(){this.indices_map={};for(let e=0;ethis._indices[e]))}convert_selection_to_subset(e){return e.map((e=>this.indices_map[e]))}convert_indices_from_subset(e){return e.map((e=>this._indices[e]))}}s.CDSView=a,c=a,a.__name__=\"CDSView\",c.define((({Array:e,Ref:i})=>({filters:[e(i(u.Filter)),[]],source:[i(_.ColumnarDataSource)]}))),c.internal((({Int:e,Dict:i,Ref:s,Nullable:t})=>({indices:[s(r.Indices)],indices_map:[i(e),{}],masked:[t(s(r.Indices)),null]})))},\n", + " function _(e,t,n,s,c){s();const o=e(53);class r extends o.Model{constructor(e){super(e)}}n.Filter=r,r.__name__=\"Filter\"},\n", + " function _(t,r,a,e,c){e(),c(\"BasicTickFormatter\",t(146).BasicTickFormatter),c(\"CategoricalTickFormatter\",t(142).CategoricalTickFormatter),c(\"DatetimeTickFormatter\",t(150).DatetimeTickFormatter),c(\"FuncTickFormatter\",t(193).FuncTickFormatter),c(\"LogTickFormatter\",t(163).LogTickFormatter),c(\"MercatorTickFormatter\",t(166).MercatorTickFormatter),c(\"NumeralTickFormatter\",t(194).NumeralTickFormatter),c(\"PrintfTickFormatter\",t(195).PrintfTickFormatter),c(\"TickFormatter\",t(131).TickFormatter)},\n", + " function _(t,e,n,s,r){var c;s();const i=t(131),a=t(13),u=t(34);class o extends i.TickFormatter{constructor(t){super(t)}get names(){return(0,a.keys)(this.args)}get values(){return(0,a.values)(this.args)}_make_func(){const t=(0,u.use_strict)(this.code);return new Function(\"tick\",\"index\",\"ticks\",...this.names,t)}doFormat(t,e){const n=this._make_func().bind({});return t.map(((t,e,s)=>`${n(t,e,s,...this.values)}`))}}n.FuncTickFormatter=o,c=o,o.__name__=\"FuncTickFormatter\",c.define((({Unknown:t,String:e,Dict:n})=>({args:[n(t),{}],code:[e,\"\"]})))},\n", + " function _(r,n,t,o,e){o();var a;const u=(0,r(1).__importStar)(r(153)),c=r(131),i=r(20);class s extends c.TickFormatter{constructor(r){super(r)}get _rounding_fn(){switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}}doFormat(r,n){const{format:t,language:o,_rounding_fn:e}=this;return r.map((r=>u.format(r,t,o,e)))}}t.NumeralTickFormatter=s,a=s,s.__name__=\"NumeralTickFormatter\",a.define((({String:r})=>({format:[r,\"0,0\"],language:[r,\"en\"],rounding:[i.RoundingFunction,\"round\"]})))},\n", + " function _(t,r,n,o,a){var e;o();const i=t(131),s=t(152);class c extends i.TickFormatter{constructor(t){super(t)}doFormat(t,r){return t.map((t=>(0,s.sprintf)(this.format,t)))}}n.PrintfTickFormatter=c,e=c,c.__name__=\"PrintfTickFormatter\",e.define((({String:t})=>({format:[t,\"%s\"]})))},\n", + " function _(r,o,a,p,e){p(),e(\"CategoricalColorMapper\",r(197).CategoricalColorMapper),e(\"CategoricalMarkerMapper\",r(199).CategoricalMarkerMapper),e(\"CategoricalPatternMapper\",r(200).CategoricalPatternMapper),e(\"ContinuousColorMapper\",r(172).ContinuousColorMapper),e(\"ColorMapper\",r(173).ColorMapper),e(\"LinearColorMapper\",r(201).LinearColorMapper),e(\"LogColorMapper\",r(202).LogColorMapper),e(\"ScanningColorMapper\",r(171).ScanningColorMapper),e(\"EqHistColorMapper\",r(203).EqHistColorMapper)},\n", + " function _(t,o,r,a,e){var c;a();const s=t(198),l=t(173),n=t(67);class _ extends l.ColorMapper{constructor(t){super(t)}_v_compute(t,o,r,{nan_color:a}){(0,s.cat_v_compute)(t,this.factors,r,o,this.start,this.end,a)}}r.CategoricalColorMapper=_,c=_,_.__name__=\"CategoricalColorMapper\",c.define((({Number:t,Nullable:o})=>({factors:[n.FactorSeq],start:[t,0],end:[o(t),null]})))},\n", + " function _(n,t,e,l,i){l();const c=n(12),u=n(8);function f(n,t){if(n.length!=t.length)return!1;for(let e=0,l=n.length;ef(n,h)))),s=_<0||_>=e.length?r:e[_],l[g]=s}}},\n", + " function _(e,r,a,t,s){var c;t();const l=e(198),n=e(67),u=e(174),o=e(20);class p extends u.Mapper{constructor(e){super(e)}v_compute(e){const r=new Array(e.length);return(0,l.cat_v_compute)(e,this.factors,this.markers,r,this.start,this.end,this.default_value),r}}a.CategoricalMarkerMapper=p,c=p,p.__name__=\"CategoricalMarkerMapper\",c.define((({Number:e,Array:r,Nullable:a})=>({factors:[n.FactorSeq],markers:[r(o.MarkerType)],start:[e,0],end:[a(e),null],default_value:[o.MarkerType,\"circle\"]})))},\n", + " function _(t,e,a,r,n){var s;r();const c=t(198),l=t(67),p=t(174),u=t(20);class o extends p.Mapper{constructor(t){super(t)}v_compute(t){const e=new Array(t.length);return(0,c.cat_v_compute)(t,this.factors,this.patterns,e,this.start,this.end,this.default_value),e}}a.CategoricalPatternMapper=o,s=o,o.__name__=\"CategoricalPatternMapper\",s.define((({Number:t,Array:e,Nullable:a})=>({factors:[l.FactorSeq],patterns:[e(u.HatchPatternType)],start:[t,0],end:[a(t),null],default_value:[u.HatchPatternType,\" \"]})))},\n", + " function _(n,r,o,t,a){t();const e=n(172),i=n(12);class s extends e.ContinuousColorMapper{constructor(n){super(n)}scan(n,r){const o=null!=this.low?this.low:(0,i.min)(n),t=null!=this.high?this.high:(0,i.max)(n);return{max:t,min:o,norm_factor:1/(t-o),normed_interval:1/r}}cmap(n,r,o,t,a){const e=r.length-1;if(n==a.max)return r[e];const i=(n-a.min)*a.norm_factor,s=Math.floor(i/a.normed_interval);return s<0?o:s>e?t:r[s]}}o.LinearColorMapper=s,s.__name__=\"LinearColorMapper\"},\n", + " function _(o,t,n,r,l){r();const a=o(172),s=o(12);class e extends a.ContinuousColorMapper{constructor(o){super(o)}scan(o,t){const n=null!=this.low?this.low:(0,s.min)(o),r=null!=this.high?this.high:(0,s.max)(o);return{max:r,min:n,scale:t/(Math.log(r)-Math.log(n))}}cmap(o,t,n,r,l){const a=t.length-1;if(o>l.max)return r;if(o==l.max)return t[a];if(oa&&(e=a),t[e]}}n.LogColorMapper=e,e.__name__=\"LogColorMapper\"},\n", + " function _(e,n,s,t,l){var i;t();const r=e(171),o=e(12),c=e(9);class a extends r.ScanningColorMapper{constructor(e){super(e)}scan(e,n){let s=null!=this.low?this.low:(0,o.min)(e);const t=null!=this.high?this.high:(0,o.max)(e),l=this.bins,i=(0,c.linspace)(s,t,l+1),r=(0,o.bin_counts)(e,i);let a=0;for(let e=0;e1&&(f=1-n)}const d=(0,c.linspace)(f,1,n+1),g=(0,o.interpolate)(d,p,_);return this.rescale_discrete_levels?s=g[0]:g[0]=s,g[g.length-1]=t,{min:s,max:t,binning:g}}}s.EqHistColorMapper=a,i=a,a.__name__=\"EqHistColorMapper\",i.define((({Boolean:e,Int:n})=>({bins:[n,65536],rescale_discrete_levels:[e,!1]})))},\n", + " function _(a,e,l,c,n){c(),n(\"CategoricalScale\",a(62).CategoricalScale),n(\"ContinuousScale\",a(60).ContinuousScale),n(\"LinearScale\",a(59).LinearScale),n(\"LinearInterpolationScale\",a(205).LinearInterpolationScale),n(\"LogScale\",a(61).LogScale),n(\"Scale\",a(55).Scale)},\n", + " function _(e,r,n,t,a){var i;t();const s=e(55),o=e(59),c=e(12);class _ extends s.Scale{constructor(e){super(e)}connect_signals(){super.connect_signals();const{source_range:e,target_range:r}=this.properties;this.on_change([e,r],(()=>{this.linear_scale=new o.LinearScale({source_range:this.source_range,target_range:this.target_range})}))}get s_compute(){throw new Error(\"not implemented\")}get s_invert(){throw new Error(\"not implemented\")}compute(e){return e}v_compute(e){const{binning:r}=this,{start:n,end:t}=this.source_range,a=n,i=t,s=r.length,o=(t-n)/(s-1),_=new Float64Array(s);for(let e=0;e{if(ei)return i;const n=(0,c.left_edge_index)(e,r);if(-1==n)return a;if(n>=s-1)return i;const t=r[n],o=(e-t)/(r[n+1]-t),l=_[n];return l+o*(_[n+1]-l)}));return this.linear_scale.v_compute(l)}invert(e){return e}v_invert(e){return new Float64Array(e)}}n.LinearInterpolationScale=_,i=_,_.__name__=\"LinearInterpolationScale\",i.internal((({Arrayable:e,Ref:r})=>({binning:[e],linear_scale:[r(o.LinearScale),e=>new o.LinearScale({source_range:e.source_range,target_range:e.target_range})]})))},\n", + " function _(a,n,e,g,R){g(),R(\"DataRange\",a(64).DataRange),R(\"DataRange1d\",a(63).DataRange1d),R(\"FactorRange\",a(67).FactorRange),R(\"Range\",a(57).Range),R(\"Range1d\",a(58).Range1d)},\n", + " function _(a,o,i,t,e){t();var n=a(124);e(\"Sizeable\",n.Sizeable),e(\"SizingPolicy\",n.SizingPolicy);var c=a(125);e(\"Layoutable\",c.Layoutable),e(\"LayoutItem\",c.LayoutItem);var r=a(208);e(\"HStack\",r.HStack),e(\"VStack\",r.VStack);var l=a(209);e(\"Grid\",l.Grid),e(\"Row\",l.Row),e(\"Column\",l.Column);var S=a(210);e(\"ContentBox\",S.ContentBox),e(\"VariadicBox\",S.VariadicBox)},\n", + " function _(t,e,h,i,r){i();const n=t(125),o=t(65);class s extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}}h.Stack=s,s.__name__=\"Stack\";class c extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e+=i.width,h=Math.max(h,i.height)}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.top:0;let i=this.absolute?t.left:0;const{height:r}=t;for(const t of this.children){const{width:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({left:i,width:e,top:h,height:r})),i+=e}}}h.HStack=c,c.__name__=\"HStack\";class a extends s{_measure(t){let e=0,h=0;for(const t of this.children){const i=t.measure({width:0,height:0});e=Math.max(e,i.width),h+=i.height}return{width:e,height:h}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t.left:0;let i=this.absolute?t.top:0;const{width:r}=t;for(const t of this.children){const{height:e}=t.measure({width:0,height:0});t.set_geometry(new o.BBox({top:i,height:e,left:h,width:r})),i+=e}}}h.VStack=a,a.__name__=\"VStack\";class l extends n.Layoutable{constructor(){super(...arguments),this.children=[]}*[Symbol.iterator](){yield*this.children}_measure(t){const{width_policy:e,height_policy:h}=this.sizing,{min:i,max:r}=Math;let n=0,o=0;for(const e of this.children){const{width:h,height:i}=e.measure(t);n=r(n,h),o=r(o,i)}return{width:(()=>{const{width:h}=this.sizing;if(t.width==1/0)return\"fixed\"==e&&null!=h?h:n;switch(e){case\"fixed\":return null!=h?h:n;case\"min\":return n;case\"fit\":return null!=h?i(t.width,h):t.width;case\"max\":return null!=h?r(t.width,h):t.width}})(),height:(()=>{const{height:e}=this.sizing;if(t.height==1/0)return\"fixed\"==h&&null!=e?e:o;switch(h){case\"fixed\":return null!=e?e:o;case\"min\":return o;case\"fit\":return null!=e?i(t.height,e):t.height;case\"max\":return null!=e?r(t.height,e):t.height}})()}}_set_geometry(t,e){super._set_geometry(t,e);const h=this.absolute?t:t.relative(),{left:i,right:r,top:n,bottom:s}=h,c=Math.round(h.vcenter),a=Math.round(h.hcenter);for(const e of this.children){const{margin:h,halign:l,valign:d}=e.sizing,{width:u,height:g,inner:_}=e.measure(t),w=(()=>{switch(`${d}_${l}`){case\"start_start\":return new o.BBox({left:i+h.left,top:n+h.top,width:u,height:g});case\"start_center\":return new o.BBox({hcenter:a,top:n+h.top,width:u,height:g});case\"start_end\":return new o.BBox({right:r-h.right,top:n+h.top,width:u,height:g});case\"center_start\":return new o.BBox({left:i+h.left,vcenter:c,width:u,height:g});case\"center_center\":return new o.BBox({hcenter:a,vcenter:c,width:u,height:g});case\"center_end\":return new o.BBox({right:r-h.right,vcenter:c,width:u,height:g});case\"end_start\":return new o.BBox({left:i+h.left,bottom:s-h.bottom,width:u,height:g});case\"end_center\":return new o.BBox({hcenter:a,bottom:s-h.bottom,width:u,height:g});case\"end_end\":return new o.BBox({right:r-h.right,bottom:s-h.bottom,width:u,height:g})}})(),m=null==_?w:new o.BBox({left:w.left+_.left,top:w.top+_.top,right:w.right-_.right,bottom:w.bottom-_.bottom});e.set_geometry(w,m)}}}h.NodeLayout=l,l.__name__=\"NodeLayout\"},\n", + " function _(t,i,s,e,o){e();const n=t(124),l=t(125),r=t(8),h=t(65),c=t(9),{max:a,round:g}=Math;class p{constructor(t){this.def=t,this._map=new Map}get(t){let i=this._map.get(t);return void 0===i&&(i=this.def(),this._map.set(t,i)),i}apply(t,i){const s=this.get(t);this._map.set(t,i(s))}}p.__name__=\"DefaultMap\";class f{constructor(){this._items=[],this._nrows=0,this._ncols=0}get nrows(){return this._nrows}get ncols(){return this._ncols}add(t,i){const{r1:s,c1:e}=t;this._nrows=a(this._nrows,s+1),this._ncols=a(this._ncols,e+1),this._items.push({span:t,data:i})}at(t,i){return this._items.filter((({span:s})=>s.r0<=t&&t<=s.r1&&s.c0<=i&&i<=s.c1)).map((({data:t})=>t))}row(t){return this._items.filter((({span:i})=>i.r0<=t&&t<=i.r1)).map((({data:t})=>t))}col(t){return this._items.filter((({span:i})=>i.c0<=t&&t<=i.c1)).map((({data:t})=>t))}foreach(t){for(const{span:i,data:s}of this._items)t(i,s)}map(t){const i=new f;for(const{span:s,data:e}of this._items)i.add(s,t(s,e));return i}}f.__name__=\"Container\";class _ extends l.Layoutable{constructor(t=[]){super(),this.items=t,this.rows=\"auto\",this.cols=\"auto\",this.spacing=0}*[Symbol.iterator](){for(const{layout:t}of this.items)yield t}is_width_expanding(){if(super.is_width_expanding())return!0;if(\"fixed\"==this.sizing.width_policy)return!1;const{cols:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}is_height_expanding(){if(super.is_height_expanding())return!0;if(\"fixed\"==this.sizing.height_policy)return!1;const{rows:t}=this._state;return(0,c.some)(t,(t=>\"max\"==t.policy))}_init(){var t,i,s,e;super._init();const o=new f;for(const{layout:t,row:i,col:s,row_span:e,col_span:n}of this.items)if(t.sizing.visible){const l=i,r=s,h=i+(null!=e?e:1)-1,c=s+(null!=n?n:1)-1;o.add({r0:l,c0:r,r1:h,c1:c},t)}const{nrows:n,ncols:l}=o,h=new Array(n);for(let s=0;s{var t;const i=(0,r.isPlainObject)(this.rows)?null!==(t=this.rows[s])&&void 0!==t?t:this.rows[\"*\"]:this.rows;return null==i?{policy:\"auto\"}:(0,r.isNumber)(i)?{policy:\"fixed\",height:i}:(0,r.isString)(i)?{policy:i}:i})(),n=null!==(t=e.align)&&void 0!==t?t:\"auto\";if(\"fixed\"==e.policy)h[s]={policy:\"fixed\",height:e.height,align:n};else if(\"min\"==e.policy)h[s]={policy:\"min\",align:n};else if(\"fit\"==e.policy||\"max\"==e.policy)h[s]={policy:e.policy,flex:null!==(i=e.flex)&&void 0!==i?i:1,align:n};else{if(\"auto\"!=e.policy)throw new Error(\"unrechable\");(0,c.some)(o.row(s),(t=>t.is_height_expanding()))?h[s]={policy:\"max\",flex:1,align:n}:h[s]={policy:\"min\",align:n}}}const a=new Array(l);for(let t=0;t{var i;const s=(0,r.isPlainObject)(this.cols)?null!==(i=this.cols[t])&&void 0!==i?i:this.cols[\"*\"]:this.cols;return null==s?{policy:\"auto\"}:(0,r.isNumber)(s)?{policy:\"fixed\",width:s}:(0,r.isString)(s)?{policy:s}:s})(),n=null!==(s=i.align)&&void 0!==s?s:\"auto\";if(\"fixed\"==i.policy)a[t]={policy:\"fixed\",width:i.width,align:n};else if(\"min\"==i.policy)a[t]={policy:\"min\",align:n};else if(\"fit\"==i.policy||\"max\"==i.policy)a[t]={policy:i.policy,flex:null!==(e=i.flex)&&void 0!==e?e:1,align:n};else{if(\"auto\"!=i.policy)throw new Error(\"unrechable\");(0,c.some)(o.col(t),(t=>t.is_width_expanding()))?a[t]={policy:\"max\",flex:1,align:n}:a[t]={policy:\"min\",align:n}}}const[g,p]=(0,r.isNumber)(this.spacing)?[this.spacing,this.spacing]:this.spacing;this._state={items:o,nrows:n,ncols:l,rows:h,cols:a,rspacing:g,cspacing:p}}_measure_totals(t,i){const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state;return{height:(0,c.sum)(t)+(s-1)*o,width:(0,c.sum)(i)+(e-1)*n}}_measure_cells(t){const{items:i,nrows:s,ncols:e,rows:o,cols:l,rspacing:r,cspacing:h}=this._state,c=new Array(s);for(let t=0;t{const{r0:e,c0:f,r1:d,c1:u}=i,w=(d-e)*r,m=(u-f)*h;let y=0;for(let i=e;i<=d;i++)y+=t(i,f).height;y+=w;let x=0;for(let i=f;i<=u;i++)x+=t(e,i).width;x+=m;const b=s.measure({width:x,height:y});_.add(i,{layout:s,size_hint:b});const z=new n.Sizeable(b).grow_by(s.sizing.margin);z.height-=w,z.width-=m;const v=[];for(let t=e;t<=d;t++){const i=o[t];\"fixed\"==i.policy?z.height-=i.height:v.push(t)}if(z.height>0){const t=g(z.height/v.length);for(const i of v)c[i]=a(c[i],t)}const j=[];for(let t=f;t<=u;t++){const i=l[t];\"fixed\"==i.policy?z.width-=i.width:j.push(t)}if(z.width>0){const t=g(z.width/j.length);for(const i of j)p[i]=a(p[i],t)}}));return{size:this._measure_totals(c,p),row_heights:c,col_widths:p,size_hints:_}}_measure_grid(t){const{nrows:i,ncols:s,rows:e,cols:o,rspacing:n,cspacing:l}=this._state,r=this._measure_cells(((t,i)=>{const s=e[t],n=o[i];return{width:\"fixed\"==n.policy?n.width:1/0,height:\"fixed\"==s.policy?s.height:1/0}}));let h;h=\"fixed\"==this.sizing.height_policy&&null!=this.sizing.height?this.sizing.height:t.height!=1/0&&this.is_height_expanding()?t.height:r.size.height;let c,p=0;for(let t=0;t0)for(let t=0;ti?i:e,t--}}}c=\"fixed\"==this.sizing.width_policy&&null!=this.sizing.width?this.sizing.width:t.width!=1/0&&this.is_width_expanding()?t.width:r.size.width;let f=0;for(let t=0;t0)for(let t=0;ts?s:o,t--}}}const{row_heights:_,col_widths:d,size_hints:u}=this._measure_cells(((t,i)=>({width:r.col_widths[i],height:r.row_heights[t]})));return{size:this._measure_totals(_,d),row_heights:_,col_widths:d,size_hints:u}}_measure(t){const{size:i}=this._measure_grid(t);return i}_set_geometry(t,i){super._set_geometry(t,i);const{nrows:s,ncols:e,rspacing:o,cspacing:n}=this._state,{row_heights:l,col_widths:r,size_hints:c}=this._measure_grid(t),f=this._state.rows.map(((t,i)=>Object.assign(Object.assign({},t),{top:0,height:l[i],get bottom(){return this.top+this.height}}))),_=this._state.cols.map(((t,i)=>Object.assign(Object.assign({},t),{left:0,width:r[i],get right(){return this.left+this.width}}))),d=c.map(((t,i)=>Object.assign(Object.assign({},i),{outer:new h.BBox,inner:new h.BBox})));for(let i=0,e=this.absolute?t.top:0;i{const{layout:r,size_hint:c}=l,{sizing:a}=r,{width:p,height:d}=c,u=function(t,i){let s=(i-t)*n;for(let e=t;e<=i;e++)s+=_[e].width;return s}(i,e),w=function(t,i){let s=(i-t)*o;for(let e=t;e<=i;e++)s+=f[e].height;return s}(t,s),m=i==e&&\"auto\"!=_[i].align?_[i].align:a.halign,y=t==s&&\"auto\"!=f[t].align?f[t].align:a.valign;let x=_[i].left;\"start\"==m?x+=a.margin.left:\"center\"==m?x+=g((u-p)/2):\"end\"==m&&(x+=u-a.margin.right-p);let b=f[t].top;\"start\"==y?b+=a.margin.top:\"center\"==y?b+=g((w-d)/2):\"end\"==y&&(b+=w-a.margin.bottom-d),l.outer=new h.BBox({left:x,top:b,width:p,height:d})}));const u=f.map((()=>({start:new p((()=>0)),end:new p((()=>0))}))),w=_.map((()=>({start:new p((()=>0)),end:new p((()=>0))})));d.foreach((({r0:t,c0:i,r1:s,c1:e},{size_hint:o,outer:n})=>{const{inner:l}=o;null!=l&&(u[t].start.apply(n.top,(t=>a(t,l.top))),u[s].end.apply(f[s].bottom-n.bottom,(t=>a(t,l.bottom))),w[i].start.apply(n.left,(t=>a(t,l.left))),w[e].end.apply(_[e].right-n.right,(t=>a(t,l.right))))})),d.foreach((({r0:t,c0:i,r1:s,c1:e},o)=>{const{size_hint:n,outer:l}=o,r=t=>{const i=this.absolute?l:l.relative(),s=i.left+t.left,e=i.top+t.top,o=i.right-t.right,n=i.bottom-t.bottom;return new h.BBox({left:s,top:e,right:o,bottom:n})};if(null!=n.inner){let h=r(n.inner);if(!1!==n.align){const o=u[t].start.get(l.top),n=u[s].end.get(f[s].bottom-l.bottom),c=w[i].start.get(l.left),a=w[e].end.get(_[e].right-l.right);try{h=r({top:o,bottom:n,left:c,right:a})}catch(t){}}o.inner=h}else o.inner=l})),d.foreach(((t,{layout:i,outer:s,inner:e})=>{i.set_geometry(s,e)}))}}s.Grid=_,_.__name__=\"Grid\";class d extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:0,col:i}))),this.rows=\"fit\"}}s.Row=d,d.__name__=\"Row\";class u extends _{constructor(t){super(),this.items=t.map(((t,i)=>({layout:t,row:i,col:0}))),this.cols=\"fit\"}}s.Column=u,u.__name__=\"Column\"},\n", + " function _(e,t,s,n,i){n();const a=e(125),c=e(124),o=e(43);class r extends a.ContentLayoutable{constructor(e){super(),this.content_size=(0,o.unsized)(e,(()=>new c.Sizeable((0,o.size)(e))))}_content_size(){return this.content_size}}s.ContentBox=r,r.__name__=\"ContentBox\";class _ extends a.Layoutable{constructor(e){super(),this.el=e}_measure(e){const t=new c.Sizeable(e).bounded_to(this.sizing.size);return(0,o.sized)(this.el,t,(()=>{const e=new c.Sizeable((0,o.content_size)(this.el)),{border:t,padding:s}=(0,o.extents)(this.el);return e.grow_by(t).grow_by(s).map(Math.ceil)}))}}s.VariadicBox=_,_.__name__=\"VariadicBox\";class h extends _{constructor(e){super(e),this._cache=new Map}_measure(e){const{width:t,height:s}=e,n=`${t},${s}`;let i=this._cache.get(n);return null==i&&(i=super._measure(e),this._cache.set(n,i)),i}invalidate_cache(){this._cache.clear()}}s.CachedVariadicBox=h,h.__name__=\"CachedVariadicBox\"},\n", + " function _(t,e,i,h,o){h();const s=t(124),r=t(125),n=t(65);class g extends r.Layoutable{constructor(){super(...arguments),this.min_border={left:0,top:0,right:0,bottom:0},this.padding={left:0,top:0,right:0,bottom:0}}*[Symbol.iterator](){yield this.top_panel,yield this.bottom_panel,yield this.left_panel,yield this.right_panel,yield this.center_panel}_measure(t){t=new s.Sizeable({width:\"fixed\"==this.sizing.width_policy||t.width==1/0?this.sizing.width:t.width,height:\"fixed\"==this.sizing.height_policy||t.height==1/0?this.sizing.height:t.height});const e=this.left_panel.measure({width:0,height:t.height}),i=Math.max(e.width,this.min_border.left)+this.padding.left,h=this.right_panel.measure({width:0,height:t.height}),o=Math.max(h.width,this.min_border.right)+this.padding.right,r=this.top_panel.measure({width:t.width,height:0}),n=Math.max(r.height,this.min_border.top)+this.padding.top,g=this.bottom_panel.measure({width:t.width,height:0}),a=Math.max(g.height,this.min_border.bottom)+this.padding.bottom,d=new s.Sizeable(t).shrink_by({left:i,right:o,top:n,bottom:a}),l=this.center_panel.measure(d);return{width:i+l.width+o,height:n+l.height+a,inner:{left:i,right:o,top:n,bottom:a},align:(()=>{const{width_policy:t,height_policy:e}=this.center_panel.sizing;return\"fixed\"!=t&&\"fixed\"!=e})()}}_set_geometry(t,e){super._set_geometry(t,e),this.center_panel.set_geometry(e);const i=this.left_panel.measure({width:0,height:t.height}),h=this.right_panel.measure({width:0,height:t.height}),o=this.top_panel.measure({width:t.width,height:0}),s=this.bottom_panel.measure({width:t.width,height:0}),{left:r,top:g,right:a,bottom:d}=e;this.top_panel.set_geometry(new n.BBox({left:r,right:a,bottom:g,height:o.height})),this.bottom_panel.set_geometry(new n.BBox({left:r,right:a,top:d,height:s.height})),this.left_panel.set_geometry(new n.BBox({top:g,bottom:d,right:r,width:i.width})),this.right_panel.set_geometry(new n.BBox({top:g,bottom:d,left:a,width:h.width}))}}i.BorderLayout=g,g.__name__=\"BorderLayout\"},\n", + " function _(t,e,i,s,l){s();const n=t(1);var o;const a=t(119),_=t(10),d=t(20),h=t(120),r=t(123),u=(0,n.__importStar)(t(48));class c extends a.TextAnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new r.SideLayout(t,(()=>this.get_size()),!1):void 0}_get_size(){const{text:t}=this.model,e=new h.TextBox({text:t}),{angle:i,angle_units:s}=this.model;e.angle=(0,_.resolve_angle)(i,s),e.visuals=this.visuals.text.values();const{width:l,height:n}=e.size();return{width:l,height:n}}_render(){const{angle:t,angle_units:e}=this.model,i=(0,_.resolve_angle)(t,e),s=null!=this.layout?this.layout:this.plot_view.frame,l=this.coordinates.x_scale,n=this.coordinates.y_scale;let o=\"data\"==this.model.x_units?l.compute(this.model.x):s.bbox.xview.compute(this.model.x),a=\"data\"==this.model.y_units?n.compute(this.model.y):s.bbox.yview.compute(this.model.y);o+=this.model.x_offset,a-=this.model.y_offset;(\"canvas\"==this.model.render_mode?this._canvas_text.bind(this):this._css_text.bind(this))(this.layer.ctx,this.model.text,o,a,i)}}i.LabelView=c,c.__name__=\"LabelView\";class x extends a.TextAnnotation{constructor(t){super(t)}}i.Label=x,o=x,x.__name__=\"Label\",o.prototype.default_view=c,o.mixins([u.Text,[\"border_\",u.Line],[\"background_\",u.Fill]]),o.define((({Number:t,String:e,Angle:i})=>({x:[t],x_units:[d.SpatialUnits,\"data\"],y:[t],y_units:[d.SpatialUnits,\"data\"],text:[e,\"\"],angle:[i,0],angle_units:[d.AngleUnits,\"rad\"],x_offset:[t,0],y_offset:[t,0]}))),o.override({background_fill_color:null,border_line_color:null})},\n", + " function _(t,e,s,i,l){i();const o=t(1);var a;const r=t(69),n=(0,o.__importStar)(t(48)),d=t(20),_=t(43),c=t(120),h=(0,o.__importStar)(t(18)),u=t(11);class v extends r.DataAnnotationView{set_data(t){var e;if(super.set_data(t),null===(e=this.els)||void 0===e||e.forEach((t=>(0,_.remove)(t))),\"css\"==this.model.render_mode){const t=this.els=[...this.text].map((()=>(0,_.div)({style:{display:\"none\"}})));for(const e of t)this.plot_view.canvas_view.add_overlay(e)}else delete this.els}remove(){var t;null===(t=this.els)||void 0===t||t.forEach((t=>(0,_.remove)(t))),super.remove()}_rerender(){\"css\"==this.model.render_mode?this.render():this.request_render()}map_data(){const{x_scale:t,y_scale:e}=this.coordinates,s=null!=this.layout?this.layout:this.plot_view.frame;this.sx=\"data\"==this.model.x_units?t.v_compute(this._x):s.bbox.xview.v_compute(this._x),this.sy=\"data\"==this.model.y_units?e.v_compute(this._y):s.bbox.yview.v_compute(this._y)}paint(){const t=\"canvas\"==this.model.render_mode?this._v_canvas_text.bind(this):this._v_css_text.bind(this),{ctx:e}=this.layer;for(let s=0,i=this.text.length;s{switch(this.visuals.text.text_align.get(e)){case\"left\":return[\"left\",\"0%\"];case\"center\":return[\"center\",\"-50%\"];case\"right\":return[\"right\",\"-100%\"]}})(),[d,c]=(()=>{switch(this.visuals.text.text_baseline.get(e)){case\"top\":return[\"top\",\"0%\"];case\"middle\":return[\"center\",\"-50%\"];case\"bottom\":return[\"bottom\",\"-100%\"];default:return[\"center\",\"-50%\"]}})();let h=`translate(${n}, ${c})`;o&&(h+=`rotate(${o}rad)`),a.style.transformOrigin=`${r} ${d}`,a.style.transform=h,this.layout,this.visuals.background_fill.doit&&(this.visuals.background_fill.set_vectorize(t,e),a.style.backgroundColor=t.fillStyle),this.visuals.border_line.doit&&(this.visuals.border_line.set_vectorize(t,e),a.style.borderStyle=t.lineDash.length<2?\"solid\":\"dashed\",a.style.borderWidth=`${t.lineWidth}px`,a.style.borderColor=t.strokeStyle),(0,_.display)(a)}}s.LabelSetView=v,v.__name__=\"LabelSetView\";class x extends r.DataAnnotation{constructor(t){super(t)}}s.LabelSet=x,a=x,x.__name__=\"LabelSet\",a.prototype.default_view=v,a.mixins([n.TextVector,[\"border_\",n.LineVector],[\"background_\",n.FillVector]]),a.define((()=>({x:[h.XCoordinateSpec,{field:\"x\"}],y:[h.YCoordinateSpec,{field:\"y\"}],x_units:[d.SpatialUnits,\"data\"],y_units:[d.SpatialUnits,\"data\"],text:[h.StringSpec,{field:\"text\"}],angle:[h.AngleSpec,0],x_offset:[h.NumberSpec,{value:0}],y_offset:[h.NumberSpec,{value:0}],render_mode:[d.RenderMode,\"canvas\"]}))),a.override({background_fill_color:null,border_line_color:null})},\n", + " function _(t,e,i,l,s){l();const n=t(1);var o;const h=t(40),a=t(215),_=t(20),r=(0,n.__importStar)(t(48)),d=t(15),c=t(123),g=t(121),m=t(65),b=t(9),f=t(8),u=t(11);class x extends h.AnnotationView{update_layout(){const{panel:t}=this;this.layout=null!=t?new c.SideLayout(t,(()=>this.get_size())):void 0}cursor(t,e){return\"none\"==this.model.click_policy?null:\"pointer\"}get legend_padding(){return null!=this.model.border_line_color?this.model.padding:0}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.item_change,(()=>this.request_render()))}compute_legend_bbox(){const t=this.model.get_legend_names(),{glyph_height:e,glyph_width:i}=this.model,{label_height:l,label_width:s}=this.model;this.max_label_height=(0,b.max)([(0,g.font_metrics)(this.visuals.label_text.font_value()).height,l,e]);const{ctx:n}=this.layer;n.save(),this.visuals.label_text.set_value(n),this.text_widths=new Map;for(const e of t)this.text_widths.set(e,(0,b.max)([n.measureText(e).width,s]));this.visuals.title_text.set_value(n),this.title_height=this.model.title?(0,g.font_metrics)(this.visuals.title_text.font_value()).height+this.model.title_standoff:0,this.title_width=this.model.title?n.measureText(this.model.title).width:0,n.restore();const o=Math.max((0,b.max)([...this.text_widths.values()]),0),h=this.model.margin,{legend_padding:a}=this,_=this.model.spacing,{label_standoff:r}=this.model;let d,c;if(\"vertical\"==this.model.orientation)d=t.length*this.max_label_height+Math.max(t.length-1,0)*_+2*a+this.title_height,c=(0,b.max)([o+i+r+2*a,this.title_width+2*a]);else{let e=2*a+Math.max(t.length-1,0)*_;for(const[,t]of this.text_widths)e+=(0,b.max)([t,s])+i+r;c=(0,b.max)([this.title_width+2*a,e]),d=this.max_label_height+this.title_height+2*a}const x=null!=this.layout?this.layout:this.plot_view.frame,[p,w]=x.bbox.ranges,{location:v}=this.model;let y,k;if((0,f.isString)(v))switch(v){case\"top_left\":y=p.start+h,k=w.start+h;break;case\"top\":case\"top_center\":y=(p.end+p.start)/2-c/2,k=w.start+h;break;case\"top_right\":y=p.end-h-c,k=w.start+h;break;case\"bottom_right\":y=p.end-h-c,k=w.end-h-d;break;case\"bottom\":case\"bottom_center\":y=(p.end+p.start)/2-c/2,k=w.end-h-d;break;case\"bottom_left\":y=p.start+h,k=w.end-h-d;break;case\"left\":case\"center_left\":y=p.start+h,k=(w.end+w.start)/2-d/2;break;case\"center\":case\"center_center\":y=(p.end+p.start)/2-c/2,k=(w.end+w.start)/2-d/2;break;case\"right\":case\"center_right\":y=p.end-h-c,k=(w.end+w.start)/2-d/2}else if((0,f.isArray)(v)&&2==v.length){const[t,e]=v;y=x.bbox.xview.compute(t),k=x.bbox.yview.compute(e)-d}else(0,u.unreachable)();return new m.BBox({left:y,top:k,width:c,height:d})}interactive_bbox(){return this.compute_legend_bbox()}interactive_hit(t,e){return this.interactive_bbox().contains(t,e)}on_hit(t,e){let i;const{glyph_width:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=i=s;const a=this.compute_legend_bbox(),_=\"vertical\"==this.model.orientation;for(const r of this.model.items){const d=r.get_labels_list_from_label_prop();for(const c of d){const d=a.x+h,g=a.y+i+this.title_height;let b,f;[b,f]=_?[a.width-2*s,this.max_label_height]:[this.text_widths.get(c)+l+o,this.max_label_height];if(new m.BBox({left:d,top:g,width:b,height:f}).contains(t,e)){switch(this.model.click_policy){case\"hide\":for(const t of r.renderers)t.visible=!t.visible;break;case\"mute\":for(const t of r.renderers)t.muted=!t.muted}return!0}_?i+=this.max_label_height+n:h+=this.text_widths.get(c)+l+o+n}}return!1}_render(){if(0==this.model.items.length)return;if(!(0,b.some)(this.model.items,(t=>t.visible)))return;for(const t of this.model.items)t.legend=this.model;const{ctx:t}=this.layer,e=this.compute_legend_bbox();t.save(),this._draw_legend_box(t,e),this._draw_legend_items(t,e),this._draw_title(t,e),t.restore()}_draw_legend_box(t,e){t.beginPath(),t.rect(e.x,e.y,e.width,e.height),this.visuals.background_fill.apply(t),this.visuals.border_line.apply(t)}_draw_legend_items(t,e){const{glyph_width:i,glyph_height:l}=this.model,{legend_padding:s}=this,n=this.model.spacing,{label_standoff:o}=this.model;let h=s,a=s;const _=\"vertical\"==this.model.orientation;for(const r of this.model.items){if(!r.visible)continue;const d=r.get_labels_list_from_label_prop(),c=r.get_field_from_label_prop();if(0==d.length)continue;const g=(()=>{switch(this.model.click_policy){case\"none\":return!0;case\"hide\":return(0,b.every)(r.renderers,(t=>t.visible));case\"mute\":return(0,b.every)(r.renderers,(t=>!t.muted))}})();for(const m of d){const d=e.x+h,b=e.y+a+this.title_height,f=d+i,u=b+l;_?a+=this.max_label_height+n:h+=this.text_widths.get(m)+i+o+n,this.visuals.label_text.set_value(t),t.fillText(m,f+o,b+this.max_label_height/2);for(const e of r.renderers){const i=this.plot_view.renderer_view(e);null==i||i.draw_legend(t,d,f,b,u,c,m,r.index)}if(!g){let l,n;[l,n]=_?[e.width-2*s,this.max_label_height]:[this.text_widths.get(m)+i+o,this.max_label_height],t.beginPath(),t.rect(d,b,l,n),this.visuals.inactive_fill.set_value(t),t.fill()}}}}_draw_title(t,e){const{title:i}=this.model;i&&this.visuals.title_text.doit&&(t.save(),t.translate(e.x0,e.y0+this.title_height),this.visuals.title_text.set_value(t),t.fillText(i,this.legend_padding,this.legend_padding-this.model.title_standoff),t.restore())}_get_size(){const{width:t,height:e}=this.compute_legend_bbox();return{width:t+2*this.model.margin,height:e+2*this.model.margin}}}i.LegendView=x,x.__name__=\"LegendView\";class p extends h.Annotation{constructor(t){super(t)}initialize(){super.initialize(),this.item_change=new d.Signal0(this,\"item_change\")}get_legend_names(){const t=[];for(const e of this.items){const i=e.get_labels_list_from_label_prop();t.push(...i)}return t}}i.Legend=p,o=p,p.__name__=\"Legend\",o.prototype.default_view=x,o.mixins([[\"label_\",r.Text],[\"title_\",r.Text],[\"inactive_\",r.Fill],[\"border_\",r.Line],[\"background_\",r.Fill]]),o.define((({Number:t,String:e,Array:i,Tuple:l,Or:s,Ref:n,Nullable:o})=>({orientation:[_.Orientation,\"vertical\"],location:[s(_.LegendLocation,l(t,t)),\"top_right\"],title:[o(e),null],title_standoff:[t,5],label_standoff:[t,5],glyph_height:[t,20],glyph_width:[t,20],label_height:[t,20],label_width:[t,20],margin:[t,10],padding:[t,10],spacing:[t,3],items:[i(n(a.LegendItem)),[]],click_policy:[_.LegendClickPolicy,\"none\"]}))),o.override({border_line_color:\"#e5e5e5\",border_line_alpha:.5,border_line_width:1,background_fill_color:\"#ffffff\",background_fill_alpha:.95,inactive_fill_color:\"white\",inactive_fill_alpha:.7,label_text_font_size:\"13px\",label_text_baseline:\"middle\",title_text_font_size:\"13px\",title_text_font_style:\"italic\"})},\n", + " function _(e,r,l,n,t){n();const i=e(1);var s;const o=e(53),a=e(175),_=e(70),u=e(216),d=(0,i.__importStar)(e(18)),c=e(19),f=e(9);class h extends o.Model{constructor(e){super(e)}_check_data_sources_on_renderers(){if(null!=this.get_field_from_label_prop()){if(this.renderers.length<1)return!1;const e=this.renderers[0].data_source;if(null!=e)for(const r of this.renderers)if(r.data_source!=e)return!1}return!0}_check_field_label_on_data_source(){const e=this.get_field_from_label_prop();if(null!=e){if(this.renderers.length<1)return!1;const r=this.renderers[0].data_source;if(null!=r&&!(0,f.includes)(r.columns(),e))return!1}return!0}initialize(){super.initialize(),this.legend=null,this.connect(this.change,(()=>{var e;return null===(e=this.legend)||void 0===e?void 0:e.item_change.emit()}));this._check_data_sources_on_renderers()||c.logger.error(\"Non matching data sources on legend item renderers\");this._check_field_label_on_data_source()||c.logger.error(`Bad column name on label: ${this.label}`)}get_field_from_label_prop(){const{label:e}=this;return(0,u.isField)(e)?e.field:null}get_labels_list_from_label_prop(){if(!this.visible)return[];if((0,u.isValue)(this.label)){const{value:e}=this.label;return null!=e?[e]:[]}const e=this.get_field_from_label_prop();if(null!=e){let r;if(!this.renderers[0]||null==this.renderers[0].data_source)return[\"No source found\"];if(r=this.renderers[0].data_source,r instanceof _.ColumnarDataSource){const l=r.get_column(e);return null!=l?(0,f.uniq)(Array.from(l)):[\"Invalid field\"]}}return[]}}l.LegendItem=h,s=h,h.__name__=\"LegendItem\",s.define((({Boolean:e,Int:r,Array:l,Ref:n,Nullable:t})=>({label:[d.NullStringSpec,null],renderers:[l(n(a.GlyphRenderer)),[]],index:[t(r),null],visible:[e,!0]})))},\n", + " function _(i,n,e,t,u){t();const c=i(8);e.isValue=function(i){return(0,c.isPlainObject)(i)&&\"value\"in i},e.isField=function(i){return(0,c.isPlainObject)(i)&&\"field\"in i},e.isExpr=function(i){return(0,c.isPlainObject)(i)&&\"expr\"in i}},\n", + " function _(t,n,e,s,i){s();const o=t(1);var a;const l=t(40),c=(0,o.__importStar)(t(48)),r=t(20);class _ extends l.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{xs:t,ys:n}=this.model;if(t.length!=n.length)return;const e=t.length;if(e<3)return;const{frame:s}=this.plot_view,{ctx:i}=this.layer,o=this.coordinates.x_scale,a=this.coordinates.y_scale,{screen:l}=this.model;function c(t,n,e,s){return l?t:\"data\"==n?e.v_compute(t):s.v_compute(t)}const r=c(t,this.model.xs_units,o,s.bbox.xview),_=c(n,this.model.ys_units,a,s.bbox.yview);i.beginPath();for(let t=0;t({xs:[n(t),[]],xs_units:[r.SpatialUnits,\"data\"],ys:[n(t),[]],ys_units:[r.SpatialUnits,\"data\"]}))),a.internal((({Boolean:t})=>({screen:[t,!1]}))),a.override({fill_color:\"#fff9ba\",fill_alpha:.4,line_color:\"#cccccc\",line_alpha:.3})},\n", + " function _(e,t,n,o,i){o();const s=e(1);var l;const r=e(40),c=(0,s.__importStar)(e(48));class a extends r.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_render(){const{gradient:e,y_intercept:t}=this.model;if(null==e||null==t)return;const{frame:n}=this.plot_view,o=this.coordinates.x_scale,i=this.coordinates.y_scale;let s,l,r,c;if(0==e)s=i.compute(t),l=s,r=n.bbox.left,c=r+n.bbox.width;else{s=n.bbox.top,l=s+n.bbox.height;const a=(i.invert(s)-t)/e,_=(i.invert(l)-t)/e;r=o.compute(a),c=o.compute(_)}const{ctx:a}=this.layer;a.save(),a.beginPath(),this.visuals.line.set_value(a),a.moveTo(r,s),a.lineTo(c,l),a.stroke(),a.restore()}}n.SlopeView=a,a.__name__=\"SlopeView\";class _ extends r.Annotation{constructor(e){super(e)}}n.Slope=_,l=_,_.__name__=\"Slope\",l.prototype.default_view=a,l.mixins(c.Line),l.define((({Number:e,Nullable:t})=>({gradient:[t(e),null],y_intercept:[t(e),null]}))),l.override({line_color:\"black\"})},\n", + " function _(e,t,i,o,n){o();const s=e(1);var l;const a=e(40),r=(0,s.__importStar)(e(48)),c=e(20);class d extends a.AnnotationView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.plot_view.request_paint(this)))}_render(){const{location:e}=this.model;if(null==e)return;const{frame:t}=this.plot_view,i=this.coordinates.x_scale,o=this.coordinates.y_scale,n=(t,i)=>\"data\"==this.model.location_units?t.compute(e):this.model.for_hover?e:i.compute(e);let s,l,a,r;\"width\"==this.model.dimension?(a=n(o,t.bbox.yview),l=t.bbox.left,r=t.bbox.width,s=this.model.line_width):(a=t.bbox.top,l=n(i,t.bbox.xview),r=this.model.line_width,s=t.bbox.height);const{ctx:c}=this.layer;c.save(),c.beginPath(),this.visuals.line.set_value(c),c.moveTo(l,a),\"width\"==this.model.dimension?c.lineTo(l+r,a):c.lineTo(l,a+s),c.stroke(),c.restore()}}i.SpanView=d,d.__name__=\"SpanView\";class _ extends a.Annotation{constructor(e){super(e)}}i.Span=_,l=_,_.__name__=\"Span\",l.prototype.default_view=d,l.mixins(r.Line),l.define((({Number:e,Nullable:t})=>({render_mode:[c.RenderMode,\"canvas\"],location:[t(e),null],location_units:[c.SpatialUnits,\"data\"],dimension:[c.Dimension,\"width\"]}))),l.internal((({Boolean:e})=>({for_hover:[e,!1]}))),l.override({line_color:\"black\"})},\n", + " function _(i,e,t,o,l){var s;o();const a=i(40),_=i(221),n=i(113),r=i(43),h=i(123),b=i(65);class v extends a.AnnotationView{constructor(){super(...arguments),this._invalidate_toolbar=!0,this._previous_bbox=new b.BBox}update_layout(){this.layout=new h.SideLayout(this.panel,(()=>this.get_size()),!0)}initialize(){super.initialize(),this.el=(0,r.div)(),this.plot_view.canvas_view.add_event(this.el)}async lazy_initialize(){await super.lazy_initialize(),this._toolbar_view=await(0,n.build_view)(this.model.toolbar,{parent:this}),this.plot_view.visibility_callbacks.push((i=>this._toolbar_view.set_visibility(i)))}remove(){this._toolbar_view.remove(),(0,r.remove)(this.el),super.remove()}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{bbox:i}=this.layout;this._previous_bbox.equals(i)||((0,r.position)(this.el,i),this._previous_bbox=i,this._invalidate_toolbar=!0),this._invalidate_toolbar&&(this.el.style.position=\"absolute\",this.el.style.overflow=\"hidden\",(0,r.empty)(this.el),this.el.appendChild(this._toolbar_view.el),this._toolbar_view.layout.bbox=i,this._toolbar_view.render(),this._invalidate_toolbar=!1),(0,r.display)(this.el)}_get_size(){const{tools:i,logo:e}=this.model.toolbar;return{width:30*i.length+(null!=e?25:0)+15,height:30}}}t.ToolbarPanelView=v,v.__name__=\"ToolbarPanelView\";class d extends a.Annotation{constructor(i){super(i)}}t.ToolbarPanel=d,s=d,d.__name__=\"ToolbarPanel\",s.prototype.default_view=v,s.define((({Ref:i})=>({toolbar:[i(_.Toolbar)]})))},\n", + " function _(t,e,s,i,o){var c;i();const n=t(8),a=t(9),l=t(13),r=t(222),_=t(223),u=t(232),p=t(233);function v(t){switch(t){case\"tap\":return\"active_tap\";case\"pan\":return\"active_drag\";case\"pinch\":case\"scroll\":return\"active_scroll\";case\"multi\":return\"active_multi\"}return null}function h(t){return\"tap\"==t||\"pan\"==t}s.Drag=r.Tool,s.Inspection=r.Tool,s.Scroll=r.Tool,s.Tap=r.Tool;class f extends p.ToolbarBase{constructor(t){super(t)}connect_signals(){super.connect_signals();const{tools:t,active_drag:e,active_inspect:s,active_scroll:i,active_tap:o,active_multi:c}=this.properties;this.on_change([t,e,s,i,o,c],(()=>this._init_tools()))}_init_tools(){if(super._init_tools(),\"auto\"==this.active_inspect);else if(this.active_inspect instanceof u.InspectTool){let t=!1;for(const e of this.inspectors)e!=this.active_inspect?e.active=!1:t=!0;t||(this.active_inspect=null)}else if((0,n.isArray)(this.active_inspect)){const t=(0,a.intersection)(this.active_inspect,this.inspectors);t.length!=this.active_inspect.length&&(this.active_inspect=t);for(const t of this.inspectors)(0,a.includes)(this.active_inspect,t)||(t.active=!1)}else if(null==this.active_inspect)for(const t of this.inspectors)t.active=!1;const t=t=>{t.active?this._active_change(t):t.active=!0};for(const t of(0,l.values)(this.gestures)){t.tools=(0,a.sort_by)(t.tools,(t=>t.default_order));for(const e of t.tools)this.connect(e.properties.active.change,(()=>this._active_change(e)))}for(const[e,s]of(0,l.entries)(this.gestures)){const i=v(e);if(i){const o=this[i];\"auto\"==o?0!=s.tools.length&&h(e)&&t(s.tools[0]):null!=o&&((0,a.includes)(this.tools,o)?t(o):this[i]=null)}}}}s.Toolbar=f,c=f,f.__name__=\"Toolbar\",c.prototype.default_view=p.ToolbarBaseView,c.define((({Or:t,Ref:e,Auto:i,Null:o})=>({active_drag:[t(e(s.Drag),i,o),\"auto\"],active_inspect:[t(e(s.Inspection),i,o),\"auto\"],active_scroll:[t(e(s.Scroll),i,o),\"auto\"],active_tap:[t(e(s.Tap),i,o),\"auto\"],active_multi:[t(e(_.GestureTool),i,o),\"auto\"]})))},\n", + " function _(t,e,n,o,s){var i;o();const a=t(42),r=t(9),l=t(53);class c extends a.View{get plot_view(){return this.parent}get plot_model(){return this.parent.model}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>{this.model.active?this.activate():this.deactivate()}))}activate(){}deactivate(){}}n.ToolView=c,c.__name__=\"ToolView\";class _ extends l.Model{constructor(t){super(t)}get synthetic_renderers(){return[]}_get_dim_limits([t,e],[n,o],s,i){const a=s.bbox.h_range;let l;\"width\"==i||\"both\"==i?(l=[(0,r.min)([t,n]),(0,r.max)([t,n])],l=[(0,r.max)([l[0],a.start]),(0,r.min)([l[1],a.end])]):l=[a.start,a.end];const c=s.bbox.v_range;let _;return\"height\"==i||\"both\"==i?(_=[(0,r.min)([e,o]),(0,r.max)([e,o])],_=[(0,r.max)([_[0],c.start]),(0,r.min)([_[1],c.end])]):_=[c.start,c.end],[l,_]}static register_alias(t,e){this.prototype._known_aliases.set(t,e)}static from_string(t){const e=this.prototype._known_aliases.get(t);if(null!=e)return e();{const e=[...this.prototype._known_aliases.keys()];throw new Error(`unexpected tool name '${t}', possible tools are ${e.join(\", \")}`)}}}n.Tool=_,i=_,_.__name__=\"Tool\",i.prototype._known_aliases=new Map,i.define((({String:t,Nullable:e})=>({description:[e(t),null]}))),i.internal((({Boolean:t})=>({active:[t,!1]})))},\n", + " function _(e,o,t,s,n){s();const u=e(224),_=e(231);class l extends u.ButtonToolView{}t.GestureToolView=l,l.__name__=\"GestureToolView\";class i extends u.ButtonTool{constructor(e){super(e),this.button_view=_.OnOffButtonView}}t.GestureTool=i,i.__name__=\"GestureTool\"},\n", + " function _(t,e,o,s,i){s();const n=t(1);var l;const r=(0,n.__importDefault)(t(225)),a=t(226),u=t(222),h=t(43),_=t(34),d=t(8),c=t(9),m=(0,n.__importStar)(t(227)),p=m,v=(0,n.__importDefault)(t(228)),f=(0,n.__importDefault)(t(229)),g=t(230);class b extends a.DOMView{initialize(){super.initialize();const t=this.model.menu;if(null!=t){const e=this.parent.model.toolbar_location,o=\"left\"==e||\"above\"==e,s=this.parent.model.horizontal?\"vertical\":\"horizontal\";this._menu=new g.ContextMenu(o?(0,c.reversed)(t):t,{orientation:s,prevent_hide:t=>t.target==this.el})}this._hammer=new r.default(this.el,{touchAction:\"auto\",inputClass:r.default.TouchMouseInput}),this.connect(this.model.change,(()=>this.render())),this._hammer.on(\"tap\",(t=>{var e;(null===(e=this._menu)||void 0===e?void 0:e.is_open)?this._menu.hide():t.target==this.el&&this._clicked()})),this._hammer.on(\"press\",(()=>this._pressed())),this.el.addEventListener(\"keydown\",(t=>{t.keyCode==h.Keys.Enter&&this._clicked()}))}remove(){var t;this._hammer.destroy(),null===(t=this._menu)||void 0===t||t.remove(),super.remove()}styles(){return[...super.styles(),m.default,v.default,f.default]}css_classes(){return super.css_classes().concat(p.toolbar_button)}render(){(0,h.empty)(this.el);const t=this.model.computed_icon;(0,d.isString)(t)&&((0,_.startsWith)(t,\"data:image\")?this.el.style.backgroundImage=`url(\"${t}\")`:this.el.classList.add(t)),this.el.title=this.model.tooltip,this.el.tabIndex=0,null!=this._menu&&this.root.el.appendChild(this._menu.el)}_pressed(){var t;const e=(()=>{switch(this.parent.model.toolbar_location){case\"right\":return{left_of:this.el};case\"left\":return{right_of:this.el};case\"above\":return{below:this.el};case\"below\":return{above:this.el}}})();null===(t=this._menu)||void 0===t||t.toggle(e)}}o.ButtonToolButtonView=b,b.__name__=\"ButtonToolButtonView\";class w extends u.ToolView{}o.ButtonToolView=w,w.__name__=\"ButtonToolView\";class y extends u.Tool{constructor(t){super(t)}_get_dim_tooltip(t){const{description:e,tool_name:o}=this;return null!=e?e:\"both\"==t?o:`${o} (${\"width\"==t?\"x\":\"y\"}-axis)`}get tooltip(){var t;return null!==(t=this.description)&&void 0!==t?t:this.tool_name}get computed_icon(){return this.icon}get menu(){return null}}o.ButtonTool=y,l=y,y.__name__=\"ButtonTool\",l.internal((({Boolean:t})=>({disabled:[t,!1]})))},\n", + " function _(t,e,i,n,r){\n", + " /*! Hammer.JS - v2.0.7 - 2016-04-22\n", + " * http://hammerjs.github.io/\n", + " *\n", + " * Copyright (c) 2016 Jorik Tangelder;\n", + " * Licensed under the MIT license */\n", + " !function(t,i,n,r){\"use strict\";var s,o=[\"\",\"webkit\",\"Moz\",\"MS\",\"ms\",\"o\"],a=i.createElement(\"div\"),h=Math.round,u=Math.abs,c=Date.now;function l(t,e,i){return setTimeout(T(t,i),e)}function p(t,e,i){return!!Array.isArray(t)&&(f(t,i[e],i),!0)}function f(t,e,i){var n;if(t)if(t.forEach)t.forEach(e,i);else if(t.length!==r)for(n=0;n\\s*\\(/gm,\"{anonymous}()@\"):\"Unknown Stack Trace\",s=t.console&&(t.console.warn||t.console.log);return s&&s.call(t.console,r,n),e.apply(this,arguments)}}s=\"function\"!=typeof Object.assign?function(t){if(t===r||null===t)throw new TypeError(\"Cannot convert undefined or null to object\");for(var e=Object(t),i=1;i-1}function S(t){return t.trim().split(/\\s+/g)}function b(t,e,i){if(t.indexOf&&!i)return t.indexOf(e);for(var n=0;ni[e]})):n.sort()),n}function x(t,e){for(var i,n,s=e[0].toUpperCase()+e.slice(1),a=0;a1&&!i.firstMultiple?i.firstMultiple=H(e):1===s&&(i.firstMultiple=!1);var o=i.firstInput,a=i.firstMultiple,h=a?a.center:o.center,l=e.center=L(n);e.timeStamp=c(),e.deltaTime=e.timeStamp-o.timeStamp,e.angle=G(h,l),e.distance=j(h,l),function(t,e){var i=e.center,n=t.offsetDelta||{},r=t.prevDelta||{},s=t.prevInput||{};1!==e.eventType&&4!==s.eventType||(r=t.prevDelta={x:s.deltaX||0,y:s.deltaY||0},n=t.offsetDelta={x:i.x,y:i.y});e.deltaX=r.x+(i.x-n.x),e.deltaY=r.y+(i.y-n.y)}(i,e),e.offsetDirection=V(e.deltaX,e.deltaY);var p=U(e.deltaTime,e.deltaX,e.deltaY);e.overallVelocityX=p.x,e.overallVelocityY=p.y,e.overallVelocity=u(p.x)>u(p.y)?p.x:p.y,e.scale=a?(f=a.pointers,v=n,j(v[0],v[1],W)/j(f[0],f[1],W)):1,e.rotation=a?function(t,e){return G(e[1],e[0],W)+G(t[1],t[0],W)}(a.pointers,n):0,e.maxPointers=i.prevInput?e.pointers.length>i.prevInput.maxPointers?e.pointers.length:i.prevInput.maxPointers:e.pointers.length,function(t,e){var i,n,s,o,a=t.lastInterval||e,h=e.timeStamp-a.timeStamp;if(8!=e.eventType&&(h>25||a.velocity===r)){var c=e.deltaX-a.deltaX,l=e.deltaY-a.deltaY,p=U(h,c,l);n=p.x,s=p.y,i=u(p.x)>u(p.y)?p.x:p.y,o=V(c,l),t.lastInterval=e}else i=a.velocity,n=a.velocityX,s=a.velocityY,o=a.direction;e.velocity=i,e.velocityX=n,e.velocityY=s,e.direction=o}(i,e);var f,v;var d=t.element;_(e.srcEvent.target,d)&&(d=e.srcEvent.target);e.target=d}(t,i),t.emit(\"hammer.input\",i),t.recognize(i),t.session.prevInput=i}function H(t){for(var e=[],i=0;i=u(e)?t<0?2:4:e<0?8:16}function j(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return Math.sqrt(n*n+r*r)}function G(t,e,i){i||(i=F);var n=e[i[0]]-t[i[0]],r=e[i[1]]-t[i[1]];return 180*Math.atan2(r,n)/Math.PI}q.prototype={handler:function(){},init:function(){this.evEl&&I(this.element,this.evEl,this.domHandler),this.evTarget&&I(this.target,this.evTarget,this.domHandler),this.evWin&&I(O(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&A(this.element,this.evEl,this.domHandler),this.evTarget&&A(this.target,this.evTarget,this.domHandler),this.evWin&&A(O(this.element),this.evWin,this.domHandler)}};var Z={mousedown:1,mousemove:2,mouseup:4},B=\"mousedown\",$=\"mousemove mouseup\";function J(){this.evEl=B,this.evWin=$,this.pressed=!1,q.apply(this,arguments)}g(J,q,{handler:function(t){var e=Z[t.type];1&e&&0===t.button&&(this.pressed=!0),2&e&&1!==t.which&&(e=4),this.pressed&&(4&e&&(this.pressed=!1),this.callback(this.manager,e,{pointers:[t],changedPointers:[t],pointerType:X,srcEvent:t}))}});var K={pointerdown:1,pointermove:2,pointerup:4,pointercancel:8,pointerout:8},Q={2:N,3:\"pen\",4:X,5:\"kinect\"},tt=\"pointerdown\",et=\"pointermove pointerup pointercancel\";function it(){this.evEl=tt,this.evWin=et,q.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}t.MSPointerEvent&&!t.PointerEvent&&(tt=\"MSPointerDown\",et=\"MSPointerMove MSPointerUp MSPointerCancel\"),g(it,q,{handler:function(t){var e=this.store,i=!1,n=t.type.toLowerCase().replace(\"ms\",\"\"),r=K[n],s=Q[t.pointerType]||t.pointerType,o=s==N,a=b(e,t.pointerId,\"pointerId\");1&r&&(0===t.button||o)?a<0&&(e.push(t),a=e.length-1):12&r&&(i=!0),a<0||(e[a]=t,this.callback(this.manager,r,{pointers:e,changedPointers:[t],pointerType:s,srcEvent:t}),i&&e.splice(a,1))}});var nt={touchstart:1,touchmove:2,touchend:4,touchcancel:8},rt=\"touchstart\",st=\"touchstart touchmove touchend touchcancel\";function ot(){this.evTarget=rt,this.evWin=st,this.started=!1,q.apply(this,arguments)}function at(t,e){var i=P(t.touches),n=P(t.changedTouches);return 12&e&&(i=D(i.concat(n),\"identifier\",!0)),[i,n]}g(ot,q,{handler:function(t){var e=nt[t.type];if(1===e&&(this.started=!0),this.started){var i=at.call(this,t,e);12&e&&i[0].length-i[1].length==0&&(this.started=!1),this.callback(this.manager,e,{pointers:i[0],changedPointers:i[1],pointerType:N,srcEvent:t})}}});var ht={touchstart:1,touchmove:2,touchend:4,touchcancel:8},ut=\"touchstart touchmove touchend touchcancel\";function ct(){this.evTarget=ut,this.targetIds={},q.apply(this,arguments)}function lt(t,e){var i=P(t.touches),n=this.targetIds;if(3&e&&1===i.length)return n[i[0].identifier]=!0,[i,i];var r,s,o=P(t.changedTouches),a=[],h=this.target;if(s=i.filter((function(t){return _(t.target,h)})),1===e)for(r=0;r-1&&n.splice(t,1)}),2500)}}function dt(t){for(var e=t.srcEvent.clientX,i=t.srcEvent.clientY,n=0;n-1&&this.requireFail.splice(e,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(t){return!!this.simultaneous[t.id]},emit:function(t){var e=this,i=this.state;function n(i){e.manager.emit(i,t)}i<8&&n(e.options.event+Dt(i)),n(e.options.event),t.additionalEvent&&n(t.additionalEvent),i>=8&&n(e.options.event+Dt(i))},tryEmit:function(t){if(this.canEmit())return this.emit(t);this.state=bt},canEmit:function(){for(var t=0;te.threshold&&r&e.direction},attrTest:function(t){return Ot.prototype.attrTest.call(this,t)&&(2&this.state||!(2&this.state)&&this.directionTest(t))},emit:function(t){this.pX=t.deltaX,this.pY=t.deltaY;var e=xt(t.direction);e&&(t.additionalEvent=this.options.event+e),this._super.emit.call(this,t)}}),g(Mt,Ot,{defaults:{event:\"pinch\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.scale-1)>this.options.threshold||2&this.state)},emit:function(t){if(1!==t.scale){var e=t.scale<1?\"in\":\"out\";t.additionalEvent=this.options.event+e}this._super.emit.call(this,t)}}),g(zt,Pt,{defaults:{event:\"press\",pointers:1,time:251,threshold:9},getTouchAction:function(){return[yt]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distancee.time;if(this._input=t,!n||!i||12&t.eventType&&!r)this.reset();else if(1&t.eventType)this.reset(),this._timer=l((function(){this.state=8,this.tryEmit()}),e.time,this);else if(4&t.eventType)return 8;return bt},reset:function(){clearTimeout(this._timer)},emit:function(t){8===this.state&&(t&&4&t.eventType?this.manager.emit(this.options.event+\"up\",t):(this._input.timeStamp=c(),this.manager.emit(this.options.event,this._input)))}}),g(Nt,Ot,{defaults:{event:\"rotate\",threshold:0,pointers:2},getTouchAction:function(){return[It]},attrTest:function(t){return this._super.attrTest.call(this,t)&&(Math.abs(t.rotation)>this.options.threshold||2&this.state)}}),g(Xt,Ot,{defaults:{event:\"swipe\",threshold:10,velocity:.3,direction:30,pointers:1},getTouchAction:function(){return Rt.prototype.getTouchAction.call(this)},attrTest:function(t){var e,i=this.options.direction;return 30&i?e=t.overallVelocity:6&i?e=t.overallVelocityX:i&Y&&(e=t.overallVelocityY),this._super.attrTest.call(this,t)&&i&t.offsetDirection&&t.distance>this.options.threshold&&t.maxPointers==this.options.pointers&&u(e)>this.options.velocity&&4&t.eventType},emit:function(t){var e=xt(t.offsetDirection);e&&this.manager.emit(this.options.event+e,t),this.manager.emit(this.options.event,t)}}),g(Yt,Pt,{defaults:{event:\"tap\",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[Et]},process:function(t){var e=this.options,i=t.pointers.length===e.pointers,n=t.distance .bk-divider{cursor:default;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-context-menu.bk-horizontal > .bk-divider{width:1px;margin:5px 0;}.bk-root .bk-context-menu.bk-vertical > .bk-divider{height:1px;margin:0 5px;}.bk-root .bk-context-menu > :not(.bk-divider){border:1px solid transparent;}.bk-root .bk-context-menu > :not(.bk-divider).bk-active{border-color:#26aae1;}.bk-root .bk-context-menu > :not(.bk-divider):hover{background-color:#f9f9f9;}.bk-root .bk-context-menu > :not(.bk-divider):focus,.bk-root .bk-context-menu > :not(.bk-divider):focus-visible{outline:1px dotted #26aae1;outline-offset:-1px;}.bk-root .bk-context-menu > :not(.bk-divider)::-moz-focus-inner{border:0;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):first-child{border-top-left-radius:4px;border-bottom-left-radius:4px;}.bk-root .bk-context-menu.bk-horizontal > :not(.bk-divider):last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):first-child{border-top-left-radius:4px;border-top-right-radius:4px;}.bk-root .bk-context-menu.bk-vertical > :not(.bk-divider):last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;}.bk-root .bk-menu{position:absolute;left:0;width:100%;z-index:100;cursor:pointer;font-size:12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 6px 12px rgba(0, 0, 0, 0.175);}.bk-root .bk-menu.bk-above{bottom:100%;}.bk-root .bk-menu.bk-below{top:100%;}.bk-root .bk-menu > .bk-divider{height:1px;margin:7.5px 0;overflow:hidden;background-color:#e5e5e5;}.bk-root .bk-menu > :not(.bk-divider){padding:6px 12px;}.bk-root .bk-menu > :not(.bk-divider):hover,.bk-root .bk-menu > :not(.bk-divider).bk-active{background-color:#e6e6e6;}.bk-root .bk-caret{display:inline-block;vertical-align:middle;width:0;height:0;margin:0 5px;}.bk-root .bk-caret.bk-down{border-top:4px solid;}.bk-root .bk-caret.bk-up{border-bottom:4px solid;}.bk-root .bk-caret.bk-down,.bk-root .bk-caret.bk-up{border-right:4px solid transparent;border-left:4px solid transparent;}.bk-root .bk-caret.bk-left{border-right:4px solid;}.bk-root .bk-caret.bk-right{border-left:4px solid;}.bk-root .bk-caret.bk-left,.bk-root .bk-caret.bk-right{border-top:4px solid transparent;border-bottom:4px solid transparent;}\"},\n", + " function _(t,e,i,n,o){n();const s=t(1),l=t(43),h=t(9),r=(0,s.__importStar)(t(229));class d{constructor(t,e={}){var i,n;this.items=t,this.el=(0,l.div)(),this._open=!1,this._item_click=t=>{var e;null===(e=t.handler)||void 0===e||e.call(t),this.hide()},this._on_mousedown=t=>{var e;const{target:i}=t;i instanceof Node&&this.el.contains(i)||(null===(e=this.prevent_hide)||void 0===e?void 0:e.call(this,t))||this.hide()},this._on_keydown=t=>{t.keyCode==l.Keys.Esc&&this.hide()},this._on_blur=()=>{this.hide()},this.orientation=null!==(i=e.orientation)&&void 0!==i?i:\"vertical\",this.reversed=null!==(n=e.reversed)&&void 0!==n&&n,this.prevent_hide=e.prevent_hide,(0,l.undisplay)(this.el)}get is_open(){return this._open}get can_open(){return 0!=this.items.length}remove(){(0,l.remove)(this.el),this._unlisten()}_listen(){document.addEventListener(\"mousedown\",this._on_mousedown),document.addEventListener(\"keydown\",this._on_keydown),window.addEventListener(\"blur\",this._on_blur)}_unlisten(){document.removeEventListener(\"mousedown\",this._on_mousedown),document.removeEventListener(\"keydown\",this._on_keydown),window.removeEventListener(\"blur\",this._on_blur)}_position(t){const e=this.el.parentElement;if(null!=e){const i=(()=>{if(\"left_of\"in t){const{left:e,top:i}=t.left_of.getBoundingClientRect();return{right:e,top:i}}if(\"right_of\"in t){const{top:e,right:i}=t.right_of.getBoundingClientRect();return{left:i,top:e}}if(\"below\"in t){const{left:e,bottom:i}=t.below.getBoundingClientRect();return{left:e,top:i}}if(\"above\"in t){const{left:e,top:i}=t.above.getBoundingClientRect();return{left:e,bottom:i}}return t})(),n=e.getBoundingClientRect();this.el.style.left=null!=i.left?i.left-n.left+\"px\":\"\",this.el.style.top=null!=i.top?i.top-n.top+\"px\":\"\",this.el.style.right=null!=i.right?n.right-i.right+\"px\":\"\",this.el.style.bottom=null!=i.bottom?n.bottom-i.bottom+\"px\":\"\"}}render(){var t;(0,l.empty)(this.el,!0),(0,l.classes)(this.el).add(\"bk-context-menu\",`bk-${this.orientation}`);const e=this.reversed?(0,h.reversed)(this.items):this.items;for(const i of e){let e;if(null==i)e=(0,l.div)({class:r.divider});else{if(null!=i.if&&!i.if())continue;if(null!=i.content)e=i.content;else{const n=null!=i.icon?(0,l.div)({class:[\"bk-menu-icon\",i.icon]}):null,o=[(null===(t=i.active)||void 0===t?void 0:t.call(i))?\"bk-active\":null,i.class];e=(0,l.div)({class:o,title:i.tooltip,tabIndex:0},n,i.label,i.content),e.addEventListener(\"click\",(()=>{this._item_click(i)})),e.addEventListener(\"keydown\",(t=>{t.keyCode==l.Keys.Enter&&this._item_click(i)}))}}this.el.appendChild(e)}}show(t){if(0!=this.items.length&&!this._open){if(this.render(),0==this.el.children.length)return;this._position(null!=t?t:{left:0,top:0}),(0,l.display)(this.el),this._listen(),this._open=!0}}hide(){this._open&&(this._open=!1,this._unlisten(),(0,l.undisplay)(this.el))}toggle(t){this._open?this.hide():this.show(t)}}i.ContextMenu=d,d.__name__=\"ContextMenu\"},\n", + " function _(t,e,i,n,o){n();const s=t(1),c=t(224),l=(0,s.__importStar)(t(227)),a=t(43);class _ extends c.ButtonToolButtonView{render(){super.render(),(0,a.classes)(this.el).toggle(l.active,this.model.active)}_clicked(){const{active:t}=this.model;this.model.active=!t}}i.OnOffButtonView=_,_.__name__=\"OnOffButtonView\"},\n", + " function _(e,o,t,n,s){var c;n();const l=e(224),_=e(231);class i extends l.ButtonToolView{}t.InspectToolView=i,i.__name__=\"InspectToolView\";class a extends l.ButtonTool{constructor(e){super(e),this.event_type=\"move\"}}t.InspectTool=a,c=a,a.__name__=\"InspectTool\",c.prototype.button_view=_.OnOffButtonView,c.define((({Boolean:e})=>({toggleable:[e,!0]}))),c.override({active:!0})},\n", + " function _(t,o,e,l,i){l();const s=t(1);var n,a;const r=t(19),c=t(43),h=t(113),_=t(226),u=t(20),v=t(9),d=t(234),p=t(13),b=t(8),g=t(235),f=t(65),m=t(53),w=t(222),y=t(223),T=t(238),z=t(239),x=t(232),B=t(230),C=(0,s.__importStar)(t(227)),k=C,L=(0,s.__importStar)(t(240)),M=L;class S extends m.Model{constructor(t){super(t)}get visible(){var t;return!this.autohide||null!==(t=this._visible)&&void 0!==t&&t}}e.ToolbarViewModel=S,n=S,S.__name__=\"ToolbarViewModel\",n.define((({Boolean:t})=>({autohide:[t,!1]}))),n.internal((({Boolean:t,Nullable:o})=>({_visible:[o(t),null]})));class $ extends _.DOMView{constructor(){super(...arguments),this.layout={bbox:new f.BBox}}initialize(){super.initialize(),this._tool_button_views=new Map,this._toolbar_view_model=new S({autohide:this.model.autohide});const{toolbar_location:t}=this.model,o=\"left\"==t||\"above\"==t,e=this.model.horizontal?\"vertical\":\"horizontal\";this._overflow_menu=new B.ContextMenu([],{orientation:e,reversed:o})}async lazy_initialize(){await super.lazy_initialize(),await this._build_tool_button_views()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tools.change,(async()=>{await this._build_tool_button_views(),this.render()})),this.connect(this.model.properties.autohide.change,(()=>{this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change()})),this.connect(this._toolbar_view_model.properties._visible.change,(()=>this._on_visible_change()))}styles(){return[...super.styles(),C.default,L.default]}remove(){(0,h.remove_views)(this._tool_button_views),super.remove()}async _build_tool_button_views(){const t=null!=this.model._proxied_tools?this.model._proxied_tools:this.model.tools;await(0,h.build_views)(this._tool_button_views,t,{parent:this},(t=>t.button_view))}set_visibility(t){t!=this._toolbar_view_model._visible&&(this._toolbar_view_model._visible=t)}_on_visible_change(){const{visible:t}=this._toolbar_view_model;(0,c.classes)(this.el).toggle(k.toolbar_hidden,!t)}render(){(0,c.empty)(this.el),this.el.classList.add(k.toolbar),this.el.classList.add(k[this.model.toolbar_location]),this._toolbar_view_model.autohide=this.model.autohide,this._on_visible_change();const{horizontal:t}=this.model;let o=0;if(null!=this.model.logo){const e=\"grey\"===this.model.logo?M.grey:null,l=(0,c.a)({href:\"https://bokeh.org/\",target:\"_blank\",class:[M.logo,M.logo_small,e]});this.el.appendChild(l);const{width:i,height:s}=l.getBoundingClientRect();o+=t?i:s}for(const[,t]of this._tool_button_views)t.render();const e=[],l=t=>this._tool_button_views.get(t).el,{gestures:i}=this.model;for(const t of(0,p.values)(i))e.push(t.tools.map(l));e.push(this.model.actions.map(l)),e.push(this.model.inspectors.filter((t=>t.toggleable)).map(l));const s=e.filter((t=>0!=t.length)),n=()=>(0,c.div)({class:k.divider}),{bbox:a}=this.layout;let r=!1;this.root.el.appendChild(this._overflow_menu.el);const h=(0,c.div)({class:k.tool_overflow,tabIndex:0},t?\"\\u22ee\":\"\\u22ef\"),_=()=>{const t=(()=>{switch(this.model.toolbar_location){case\"right\":return{left_of:h};case\"left\":return{right_of:h};case\"above\":return{below:h};case\"below\":return{above:h}}})();this._overflow_menu.toggle(t)};h.addEventListener(\"click\",(()=>{_()})),h.addEventListener(\"keydown\",(t=>{t.keyCode==c.Keys.Enter&&_()}));for(const e of(0,d.join)(s,n))if(r)this._overflow_menu.items.push({content:e,class:t?k.right:k.above});else{this.el.appendChild(e);const{width:l,height:i}=e.getBoundingClientRect();if(o+=t?l:i,r=t?o>a.width-15:o>a.height-15,r){this.el.removeChild(e),this.el.appendChild(h);const{items:t}=this._overflow_menu;t.splice(0,t.length),t.push({content:e})}}}update_layout(){}update_position(){}after_layout(){this._has_finished=!0}export(t,o=!0){const e=\"png\"==t?\"canvas\":\"svg\",l=new g.CanvasLayer(e,o);return l.resize(0,0),l}}function V(){return{pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}}}e.ToolbarBaseView=$,$.__name__=\"ToolbarBaseView\";class A extends m.Model{constructor(t){super(t)}initialize(){super.initialize(),this._init_tools()}_init_tools(){const t=function(t,o){if(t.length!=o.length)return!0;const e=new Set(o.map((t=>t.id)));return(0,v.some)(t,(t=>!e.has(t.id)))},o=this.tools.filter((t=>t instanceof x.InspectTool));t(this.inspectors,o)&&(this.inspectors=o);const e=this.tools.filter((t=>t instanceof z.HelpTool));t(this.help,e)&&(this.help=e);const l=this.tools.filter((t=>t instanceof T.ActionTool));t(this.actions,l)&&(this.actions=l);const i=(t,o)=>{t in this.gestures||r.logger.warn(`Toolbar: unknown event type '${t}' for tool: ${o}`)},s={pan:{tools:[],active:null},scroll:{tools:[],active:null},pinch:{tools:[],active:null},tap:{tools:[],active:null},doubletap:{tools:[],active:null},press:{tools:[],active:null},pressup:{tools:[],active:null},rotate:{tools:[],active:null},move:{tools:[],active:null},multi:{tools:[],active:null}};for(const t of this.tools)if(t instanceof y.GestureTool&&t.event_type)if((0,b.isString)(t.event_type))s[t.event_type].tools.push(t),i(t.event_type,t);else{s.multi.tools.push(t);for(const o of t.event_type)i(o,t)}for(const o of Object.keys(s)){const e=this.gestures[o];t(e.tools,s[o].tools)&&(e.tools=s[o].tools),e.active&&(0,v.every)(e.tools,(t=>t.id!=e.active.id))&&(e.active=null)}}get horizontal(){return\"above\"===this.toolbar_location||\"below\"===this.toolbar_location}get vertical(){return\"left\"===this.toolbar_location||\"right\"===this.toolbar_location}_active_change(t){const{event_type:o}=t;if(null==o)return;const e=(0,b.isString)(o)?[o]:o;for(const o of e)if(t.active){const e=this.gestures[o].active;null!=e&&t!=e&&(r.logger.debug(`Toolbar: deactivating tool: ${e} for event type '${o}'`),e.active=!1),this.gestures[o].active=t,r.logger.debug(`Toolbar: activating tool: ${t} for event type '${o}'`)}else this.gestures[o].active=null}}e.ToolbarBase=A,a=A,A.__name__=\"ToolbarBase\",a.prototype.default_view=$,a.define((({Boolean:t,Array:o,Ref:e,Nullable:l})=>({tools:[o(e(w.Tool)),[]],logo:[l(u.Logo),\"normal\"],autohide:[t,!1]}))),a.internal((({Array:t,Struct:o,Ref:e,Nullable:l})=>{const i=o({tools:t(e(y.GestureTool)),active:l(e(w.Tool))});return{gestures:[o({pan:i,scroll:i,pinch:i,tap:i,doubletap:i,press:i,pressup:i,rotate:i,move:i,multi:i}),V],actions:[t(e(T.ActionTool)),[]],inspectors:[t(e(x.InspectTool)),[]],help:[t(e(z.HelpTool)),[]],toolbar_location:[u.Location,\"right\"]}}))},\n", + " function _(n,o,e,t,f){t();const r=n(9);function*i(n,o){const e=n.length;if(o>e)return;const t=(0,r.range)(o);for(yield t.map((o=>n[o]));;){let f;for(const n of(0,r.reversed)((0,r.range)(o)))if(t[n]!=n+e-o){f=n;break}if(null==f)return;t[f]+=1;for(const n of(0,r.range)(f+1,o))t[n]=t[n-1]+1;yield t.map((o=>n[o]))}}e.enumerate=function*(n){let o=0;for(const e of n)yield[e,o++]},e.join=function*(n,o){let e=!0;for(const t of n)e?e=!1:null!=o&&(yield o()),yield*t},e.combinations=i,e.subsets=function*(n){for(const o of(0,r.range)(n.length+1))yield*i(n,o)}},\n", + " function _(t,e,s,i,n){i();const o=t(236),a=t(65),r=t(43);function h(t){!function(t){void 0===t.lineDash&&Object.defineProperty(t,\"lineDash\",{get:()=>t.getLineDash(),set:e=>t.setLineDash(e)})}(t),function(t){t.setImageSmoothingEnabled=e=>{t.imageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.oImageSmoothingEnabled=e,t.webkitImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e},t.getImageSmoothingEnabled=()=>{const e=t.imageSmoothingEnabled;return null==e||e}}(t),function(t){t.ellipse||(t.ellipse=function(e,s,i,n,o,a,r,h=!1){const l=.551784;t.translate(e,s),t.rotate(o);let c=i,g=n;h&&(c=-i,g=-n),t.moveTo(-c,0),t.bezierCurveTo(-c,g*l,-c*l,g,0,g),t.bezierCurveTo(c*l,g,c,g*l,c,0),t.bezierCurveTo(c,-g*l,c*l,-g,0,-g),t.bezierCurveTo(-c*l,-g,-c,-g*l,-c,0),t.rotate(-o),t.translate(-e,-s)})}(t)}const l={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class c{constructor(t,e){switch(this.backend=t,this.hidpi=e,this.pixel_ratio=1,this.bbox=new a.BBox,t){case\"webgl\":case\"canvas\":{this._el=this._canvas=(0,r.canvas)({style:l});const t=this.canvas.getContext(\"2d\");if(null==t)throw new Error(\"unable to obtain 2D rendering context\");this._ctx=t,e&&(this.pixel_ratio=devicePixelRatio);break}case\"svg\":{const t=new o.SVGRenderingContext2D;this._ctx=t,this._canvas=t.get_svg(),this._el=(0,r.div)({style:l},this._canvas);break}}this._ctx.layer=this,h(this._ctx)}get canvas(){return this._canvas}get ctx(){return this._ctx}get el(){return this._el}resize(t,e){this.bbox=new a.BBox({left:0,top:0,width:t,height:e});const s=this._ctx instanceof o.SVGRenderingContext2D?this._ctx:this.canvas;s.width=t*this.pixel_ratio,s.height=e*this.pixel_ratio}undo_transform(t){const{ctx:e}=this;if(void 0===e.getTransform)t(e);else{const s=e.getTransform();e.setTransform(this._base_transform);try{t(e)}finally{e.setTransform(s)}}}prepare(){const{ctx:t,hidpi:e,pixel_ratio:s}=this;t.save(),e&&(t.scale(s,s),t.translate(.5,.5)),void 0!==t.getTransform&&(this._base_transform=t.getTransform()),this.clear()}clear(){const{x:t,y:e,width:s,height:i}=this.bbox;this.ctx.clearRect(t,e,s,i)}finish(){this.ctx.restore()}to_blob(){const{_canvas:t}=this;if(t instanceof HTMLCanvasElement)return null!=t.msToBlob?Promise.resolve(t.msToBlob()):new Promise(((e,s)=>{t.toBlob((t=>null!=t?e(t):s()),\"image/png\")}));{const t=this._ctx.get_serialized_svg(!0),e=new Blob([t],{type:\"image/svg+xml\"});return Promise.resolve(e)}}}s.CanvasLayer=c,c.__name__=\"CanvasLayer\"},\n", + " function _(t,e,i,s,r){s();const n=t(122),a=t(8),o=t(237),l=t(10),h=t(43);function _(t){var e;const i={left:\"start\",right:\"end\",center:\"middle\",start:\"start\",end:\"end\"};return null!==(e=i[t])&&void 0!==e?e:i.start}function c(t){var e;const i={alphabetic:\"alphabetic\",hanging:\"hanging\",top:\"text-before-edge\",bottom:\"text-after-edge\",middle:\"central\"};return null!==(e=i[t])&&void 0!==e?e:i.alphabetic}const p=function(t,e){const i=new Map,s=t.split(\",\");e=null!=e?e:10;for(let t=0;t=0?Math.acos(e):-Math.acos(e)}const v=b(f),A=b(g);this.lineTo(d+f[0]*r,m+f[1]*r),this.arc(d,m,r,v,A)}stroke(){\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"fill\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"stroke\"),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}fill(t,e){let i=null;if(t instanceof Path2D)i=t;else{if(\"evenodd\"!=t&&\"nonzero\"!=t&&null!=t||null!=e)throw new Error(\"invalid arguments\");e=t}if(null!=i)throw new Error(\"not implemented\");\"none\"!=this.__currentElement.getAttribute(\"fill\")&&this.__init_element(),\"path\"===this.__currentElement.nodeName&&this.__currentElement.setAttribute(\"paint-order\",\"stroke\"),this.__applyCurrentDefaultPath(),this.__applyStyleToCurrentElement(\"fill\"),null!=e&&this.__currentElement.setAttribute(\"fill-rule\",e),null!=this._clip_path&&this.__currentElement.setAttribute(\"clip-path\",this._clip_path)}rect(t,e,i,s){isFinite(t+e+i+s)&&(this.moveTo(t,e),this.lineTo(t+i,e),this.lineTo(t+i,e+s),this.lineTo(t,e+s),this.lineTo(t,e))}fillRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.fill())}strokeRect(t,e,i,s){isFinite(t+e+i+s)&&(this.beginPath(),this.rect(t,e,i,s),this.stroke())}__clearCanvas(){(0,h.empty)(this.__defs),(0,h.empty)(this.__root),this.__root.appendChild(this.__defs),this.__currentElement=this.__root}clearRect(t,e,i,s){if(!isFinite(t+e+i+s))return;if(0===t&&0===e&&i===this.width&&s===this.height)return void this.__clearCanvas();const r=this.__createElement(\"rect\",{x:t,y:e,width:i,height:s,fill:\"#FFFFFF\"},!0);this._apply_transform(r),this.__root.appendChild(r)}createLinearGradient(t,e,i,s){if(!isFinite(t+e+i+s))throw new Error(\"The provided double value is non-finite\");const[r,n]=this._transform.apply(t,e),[a,o]=this._transform.apply(i,s),l=this.__createElement(\"linearGradient\",{id:this._random_string(),x1:`${r}px`,x2:`${a}px`,y1:`${n}px`,y2:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(l),new d(l,this)}createRadialGradient(t,e,i,s,r,n){if(!isFinite(t+e+i+s+r+n))throw new Error(\"The provided double value is non-finite\");const[a,o]=this._transform.apply(t,e),[l,h]=this._transform.apply(s,r),_=this.__createElement(\"radialGradient\",{id:this._random_string(),cx:`${l}px`,cy:`${h}px`,r:`${n}px`,r0:`${i}px`,fx:`${a}px`,fy:`${o}px`,gradientUnits:\"userSpaceOnUse\"},!1);return this.__defs.appendChild(_),new d(_,this)}__parseFont(){var t,e,i,s,r;const n=/^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))(?:\\s*\\/\\s*(normal|[.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])))?\\s*([-,\\'\\\"\\sa-z0-9]+?)\\s*$/i.exec(this.font);return{style:null!==(t=n[1])&&void 0!==t?t:\"normal\",size:null!==(e=n[4])&&void 0!==e?e:\"10px\",family:null!==(i=n[6])&&void 0!==i?i:\"sans-serif\",weight:null!==(s=n[3])&&void 0!==s?s:\"normal\",decoration:null!==(r=n[2])&&void 0!==r?r:\"normal\"}}__applyText(t,e,i,s){const r=this.__parseFont(),n=this.__createElement(\"text\",{\"font-family\":r.family,\"font-size\":r.size,\"font-style\":r.style,\"font-weight\":r.weight,\"text-decoration\":r.decoration,x:e,y:i,\"text-anchor\":_(this.textAlign),\"dominant-baseline\":c(this.textBaseline)},!0);n.appendChild(this.__document.createTextNode(t)),this._apply_transform(n),this.__currentElement=n,this.__applyStyleToCurrentElement(s);const a=(()=>{if(null!=this._clip_path){const t=this.__createElement(\"g\");return t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(n),t}return n})();this.__root.appendChild(a)}fillText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"fill\")}strokeText(t,e,i){null!=t&&isFinite(e+i)&&this.__applyText(t,e,i,\"stroke\")}measureText(t){return this.__ctx.font=this.font,this.__ctx.measureText(t)}arc(t,e,i,s,r,n=!1){this.ellipse(t,e,i,i,0,s,r,n)}ellipse(t,e,i,s,r,n,a,o=!1){if(!isFinite(t+e+i+s+r+n+a))return;if(i<0||s<0)throw new DOMException(\"IndexSizeError, radius can't be negative\");const h=o?a-n:n-a;n%=2*Math.PI,a%=2*Math.PI;const _=t+i*Math.cos(n),c=e+s*Math.sin(n);this.lineTo(_,c);const p=180*r/Math.PI,u=o?0:1;if(Math.abs(n-a)<2*l.float32_epsilon&&!(Math.abs(h)<2*l.float32_epsilon&&h<0)){const r=t+i*Math.cos(n+Math.PI),a=e+s*Math.sin(n+Math.PI),[o,l]=this._transform.apply(_,c),[h,d]=this._transform.apply(r,a);this.__addPathCommand(o,l,`A ${i} ${s} ${p} 0 ${u} ${h} ${d} A ${i} ${s} ${p} 0 ${u} ${o} ${l}`)}else{const r=t+i*Math.cos(a),l=e+s*Math.sin(a);let h=a-n;h<0&&(h+=2*Math.PI);const _=o!==h>Math.PI?1:0,[c,d]=this._transform.apply(r,l);this.__addPathCommand(c,d,`A ${i} ${s} ${p} ${_} ${u} ${c} ${d}`)}}clip(){const t=this.__createElement(\"clipPath\"),e=this._random_string();this.__applyCurrentDefaultPath(),t.setAttribute(\"id\",e),t.appendChild(this.__currentElement),this.__defs.appendChild(t),this._clip_path=`url(#${e})`}drawImage(t,...e){let i,s,r,n,a,o,l,h;if(2==e.length){if([i,s]=e,!isFinite(i+s))return;a=0,o=0,l=t.width,h=t.height,r=l,n=h}else if(4==e.length){if([i,s,r,n]=e,!isFinite(i+s+r+n))return;a=0,o=0,l=t.width,h=t.height}else{if(8!==e.length)throw new Error(`Inavlid number of arguments passed to drawImage: ${arguments.length}`);if([a,o,l,h,i,s,r,n]=e,!isFinite(a+o+l+h+i+s+r+n))return}const _=this.__root,c=this._transform.clone().translate(i,s);if(t instanceof f||t instanceof SVGSVGElement){const e=(t instanceof SVGSVGElement?t:t.get_svg()).cloneNode(!0);let i;c.is_identity&&1==this.globalAlpha&&null==this._clip_path?i=_:(i=this.__createElement(\"g\"),c.is_identity||this._apply_transform(i,c),1!=this.globalAlpha&&i.setAttribute(\"opacity\",`${this.globalAlpha}`),null!=this._clip_path&&i.setAttribute(\"clip-path\",this._clip_path),_.appendChild(i));for(const t of[...e.childNodes])if(t instanceof SVGDefsElement){for(const e of[...t.childNodes])if(e instanceof Element){const t=e.getAttribute(\"id\");this.__ids.add(t),this.__defs.appendChild(e.cloneNode(!0))}}else i.appendChild(t.cloneNode(!0))}else if(t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__createElement(\"image\");if(e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`),a||o||l!==t.width||h!==t.height){const e=this.__document.createElement(\"canvas\");e.width=r,e.height=n;e.getContext(\"2d\").drawImage(t,a,o,l,h,0,0,r,n),t=e}this._apply_transform(e,c);const i=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");if(e.setAttribute(\"href\",i),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}else if(t instanceof HTMLCanvasElement){const e=this.__createElement(\"image\");e.setAttribute(\"width\",`${r}`),e.setAttribute(\"height\",`${n}`),e.setAttribute(\"preserveAspectRatio\",\"none\"),1!=this.globalAlpha&&e.setAttribute(\"opacity\",`${this.globalAlpha}`);const i=this.__document.createElement(\"canvas\");i.width=r,i.height=n;const s=i.getContext(\"2d\");if(s.imageSmoothingEnabled=!1,s.drawImage(t,a,o,l,h,0,0,r,n),t=i,this._apply_transform(e,c),e.setAttribute(\"href\",t.toDataURL()),null!=this._clip_path){const t=this.__createElement(\"g\");t.setAttribute(\"clip-path\",this._clip_path),t.appendChild(e),_.appendChild(t)}else _.appendChild(e)}}createPattern(t,e){const i=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"pattern\"),s=this._random_string();if(i.setAttribute(\"id\",s),i.setAttribute(\"width\",`${this._to_number(t.width)}`),i.setAttribute(\"height\",`${this._to_number(t.height)}`),i.setAttribute(\"patternUnits\",\"userSpaceOnUse\"),t instanceof HTMLCanvasElement||t instanceof HTMLImageElement||t instanceof SVGImageElement){const e=this.__document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\"),s=t instanceof HTMLCanvasElement?t.toDataURL():t.getAttribute(\"src\");e.setAttribute(\"href\",s),i.appendChild(e),this.__defs.appendChild(i)}else if(t instanceof f){for(const e of[...t.__root.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}else{if(!(t instanceof SVGSVGElement))throw new Error(\"unsupported\");for(const e of[...t.childNodes])e instanceof SVGDefsElement||i.appendChild(e.cloneNode(!0));this.__defs.appendChild(i)}return new m(i,this)}getLineDash(){const{lineDash:t}=this;return(0,a.isString)(t)?t.split(\",\").map((t=>parseInt(t))):null==t?[]:t}setLineDash(t){t&&t.length>0?this.lineDash=t.join(\",\"):this.lineDash=null}_to_number(t){return(0,a.isNumber)(t)?t:t.baseVal.value}getTransform(){return this._transform.to_DOMMatrix()}setTransform(...t){let e;e=(0,a.isNumber)(t[0])?new DOMMatrix(t):t[0]instanceof DOMMatrix?t[0]:new DOMMatrix(Object.values(!t[0])),this._transform=n.AffineTransform.from_DOMMatrix(e)}resetTransform(){this._transform=new n.AffineTransform}isPointInPath(...t){throw new Error(\"not implemented\")}isPointInStroke(...t){throw new Error(\"not implemented\")}createImageData(...t){throw new Error(\"not implemented\")}getImageData(t,e,i,s){throw new Error(\"not implemented\")}putImageData(...t){throw new Error(\"not implemented\")}drawFocusIfNeeded(...t){throw new Error(\"not implemented\")}scrollPathIntoView(...t){throw new Error(\"not implemented\")}}i.SVGRenderingContext2D=f,f.__name__=\"SVGRenderingContext2D\",f.__random=o.random},\n", + " function _(e,t,s,n,r){n();const o=2147483647;class i{constructor(e){this.seed=e%o,this.seed<=0&&(this.seed+=2147483646)}integer(){return this.seed=48271*this.seed%o,this.seed}float(){return(this.integer()-1)/2147483646}floats(e,t=0,s=1){const n=new Array(e);for(let r=0;rthis.doit(o)))}}n.ActionToolView=_,_.__name__=\"ActionToolView\";class d extends s.ButtonTool{constructor(o){super(o),this.button_view=l,this.do=new c.Signal(this,\"do\")}}n.ActionTool=d,d.__name__=\"ActionTool\"},\n", + " function _(o,e,t,l,i){var s;l();const n=o(238),r=o(228);class c extends n.ActionToolView{doit(){window.open(this.model.redirect)}}t.HelpToolView=c,c.__name__=\"HelpToolView\";class _ extends n.ActionTool{constructor(o){super(o),this.tool_name=\"Help\",this.icon=r.tool_icon_help}}t.HelpTool=_,s=_,_.__name__=\"HelpTool\",s.prototype.default_view=c,s.define((({String:o})=>({redirect:[o,\"https://docs.bokeh.org/en/latest/docs/user_guide/tools.html\"]}))),s.override({description:\"Click the question mark to learn more about Bokeh plot tools.\"}),s.register_alias(\"help\",(()=>new _))},\n", + " function _(o,l,g,A,r){A(),g.root=\"bk-root\",g.logo=\"bk-logo\",g.grey=\"bk-grey\",g.logo_small=\"bk-logo-small\",g.logo_notebook=\"bk-logo-notebook\",g.default=\".bk-root .bk-logo{margin:5px;position:relative;display:block;background-repeat:no-repeat;}.bk-root .bk-logo.bk-grey{filter:url(\\\"data:image/svg+xml;utf8,#grayscale\\\");filter:gray;-webkit-filter:grayscale(100%);}.bk-root .bk-logo-small{width:20px;height:20px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAOkSURBVDiNjZRtaJVlGMd/1/08zzln5zjP1LWcU9N0NkN8m2CYjpgQYQXqSs0I84OLIC0hkEKoPtiH3gmKoiJDU7QpLgoLjLIQCpEsNJ1vqUOdO7ppbuec5+V+rj4ctwzd8IIbbi6u+8f1539dt3A78eXC7QizUF7gyV1fD1Yqg4JWz84yffhm0qkFqBogB9rM8tZdtwVsPUhWhGcFJngGeWrPzHm5oaMmkfEg1usvLFyc8jLRqDOMru7AyC8saQr7GG7f5fvDeH7Ej8CM66nIF+8yngt6HWaKh7k49Soy9nXurCi1o3qUbS3zWfrYeQDTB/Qj6kX6Ybhw4B+bOYoLKCC9H3Nu/leUTZ1JdRWkkn2ldcCamzrcf47KKXdAJllSlxAOkRgyHsGC/zRday5Qld9DyoM4/q/rUoy/CXh3jzOu3bHUVZeU+DEn8FInkPBFlu3+nW3Nw0mk6vCDiWg8CeJaxEwuHS3+z5RgY+YBR6V1Z1nxSOfoaPa4LASWxxdNp+VWTk7+4vzaou8v8PN+xo+KY2xsw6une2frhw05CTYOmQvsEhjhWjn0bmXPjpE1+kplmmkP3suftwTubK9Vq22qKmrBhpY4jvd5afdRA3wGjFAgcnTK2s4hY0/GPNIb0nErGMCRxWOOX64Z8RAC4oCXdklmEvcL8o0BfkNK4lUg9HTl+oPlQxdNo3Mg4Nv175e/1LDGzZen30MEjRUtmXSfiTVu1kK8W4txyV6BMKlbgk3lMwYCiusNy9fVfvvwMxv8Ynl6vxoByANLTWplvuj/nF9m2+PDtt1eiHPBr1oIfhCChQMBw6Aw0UulqTKZdfVvfG7VcfIqLG9bcldL/+pdWTLxLUy8Qq38heUIjh4XlzZxzQm19lLFlr8vdQ97rjZVOLf8nclzckbcD4wxXMidpX30sFd37Fv/GtwwhzhxGVAprjbg0gCAEeIgwCZyTV2Z1REEW8O4py0wsjeloKoMr6iCY6dP92H6Vw/oTyICIthibxjm/DfN9lVz8IqtqKYLUXfoKVMVQVVJOElGjrnnUt9T9wbgp8AyYKaGlqingHZU/uG2NTZSVqwHQTWkx9hxjkpWDaCg6Ckj5qebgBVbT3V3NNXMSiWSDdGV3hrtzla7J+duwPOToIg42ChPQOQjspnSlp1V+Gjdged7+8UN5CRAV7a5EdFNwCjEaBR27b3W890TE7g24NAP/mMDXRWrGoFPQI9ls/MWO2dWFAar/xcOIImbbpA3zgAAAABJRU5ErkJggg==);}.bk-root .bk-logo-notebook{display:inline-block;vertical-align:middle;margin-right:5px;}\"},\n", + " function _(e,t,s,i,l){i();const o=e(1);var n;const a=e(40),h=e(20),r=e(43),c=(0,o.__importStar)(e(242)),d=c;class p extends a.AnnotationView{initialize(){super.initialize(),this.el=(0,r.div)({class:d.tooltip}),(0,r.undisplay)(this.el),this.plot_view.canvas_view.add_overlay(this.el)}remove(){(0,r.remove)(this.el),super.remove()}connect_signals(){super.connect_signals(),this.connect(this.model.properties.content.change,(()=>this.render())),this.connect(this.model.properties.position.change,(()=>this._reposition()))}styles(){return[...super.styles(),c.default]}render(){this.model.visible||(0,r.undisplay)(this.el),super.render()}_render(){const{content:e}=this.model;null!=e?((0,r.empty)(this.el),(0,r.classes)(this.el).toggle(\"bk-tooltip-custom\",this.model.custom),this.el.appendChild(e),this.model.show_arrow&&this.el.classList.add(d.tooltip_arrow)):(0,r.undisplay)(this.el)}_reposition(){const{position:e}=this.model;if(null==e)return void(0,r.undisplay)(this.el);const[t,s]=e,i=(()=>{const e=this.parent.layout.bbox.relative(),{attachment:i}=this.model;switch(i){case\"horizontal\":return t({attachment:[h.TooltipAttachment,\"horizontal\"],inner_only:[e,!0],show_arrow:[e,!0]}))),n.internal((({Boolean:e,Number:t,Tuple:s,Ref:i,Nullable:l})=>({position:[l(s(t,t)),null],content:[i(HTMLElement),()=>(0,r.div)()],custom:[e]}))),n.override({level:\"overlay\"})},\n", + " function _(o,t,r,e,l){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.left=\"bk-left\",r.tooltip_arrow=\"bk-tooltip-arrow\",r.right=\"bk-right\",r.above=\"bk-above\",r.below=\"bk-below\",r.tooltip_row_label=\"bk-tooltip-row-label\",r.tooltip_row_value=\"bk-tooltip-row-value\",r.tooltip_color_block=\"bk-tooltip-color-block\",r.default='.bk-root{}.bk-root .bk-tooltip{font-weight:300;font-size:12px;position:absolute;padding:5px;border:1px solid #e5e5e5;color:#2f2f2f;background-color:white;pointer-events:none;opacity:0.95;z-index:100;}.bk-root .bk-tooltip > div:not(:first-child){margin-top:5px;border-top:#e5e5e5 1px dashed;}.bk-root .bk-tooltip.bk-left.bk-tooltip-arrow::before{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-left::before{left:-10px;border-right-width:10px;border-right-color:#909599;}.bk-root .bk-tooltip.bk-right.bk-tooltip-arrow::after{position:absolute;margin:-7px 0 0 0;top:50%;width:0;height:0;border-style:solid;border-width:7px 0 7px 0;border-color:transparent;content:\" \";display:block;right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-right::after{right:-10px;border-left-width:10px;border-left-color:#909599;}.bk-root .bk-tooltip.bk-above::before{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;top:-10px;border-bottom-width:10px;border-bottom-color:#909599;}.bk-root .bk-tooltip.bk-below::after{position:absolute;margin:0 0 0 -7px;left:50%;width:0;height:0;border-style:solid;border-width:0 7px 0 7px;border-color:transparent;content:\" \";display:block;bottom:-10px;border-top-width:10px;border-top-color:#909599;}.bk-root .bk-tooltip-row-label{text-align:right;color:#26aae1;}.bk-root .bk-tooltip-row-value{color:default;}.bk-root .bk-tooltip-color-block{width:12px;height:12px;margin-left:5px;margin-right:5px;outline:#dddddd solid 1px;display:inline-block;}'},\n", + " function _(e,t,s,i,r){var a;i();const l=e(115),_=e(112),h=e(113),o=e(48);class n extends l.UpperLowerView{async lazy_initialize(){await super.lazy_initialize();const{lower_head:e,upper_head:t}=this.model;null!=e&&(this.lower_head=await(0,h.build_view)(e,{parent:this})),null!=t&&(this.upper_head=await(0,h.build_view)(t,{parent:this}))}set_data(e){var t,s;super.set_data(e),null===(t=this.lower_head)||void 0===t||t.set_data(e),null===(s=this.upper_head)||void 0===s||s.set_data(e)}paint(e){if(this.visuals.line.doit)for(let t=0,s=this._lower_sx.length;t({lower_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})],upper_head:[t(e(_.ArrowHead)),()=>new _.TeeHead({size:10})]}))),a.override({level:\"underlay\"})},\n", + " function _(n,o,t,u,e){u(),e(\"CustomJS\",n(245).CustomJS),e(\"OpenURL\",n(247).OpenURL)},\n", + " function _(t,e,s,n,c){var a;n();const r=t(246),u=t(13),o=t(34);class i extends r.Callback{constructor(t){super(t)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const t=(0,o.use_strict)(this.code);return new Function(...this.names,\"cb_obj\",\"cb_data\",t)}execute(t,e={}){return this.func.apply(t,this.values.concat(t,e))}}s.CustomJS=i,a=i,i.__name__=\"CustomJS\",a.define((({Unknown:t,String:e,Dict:s})=>({args:[s(t),{}],code:[e,\"\"]})))},\n", + " function _(c,a,l,n,s){n();const e=c(53);class o extends e.Model{constructor(c){super(c)}}l.Callback=o,o.__name__=\"Callback\"},\n", + " function _(e,t,n,o,i){var s;o();const c=e(246),r=e(152),a=e(8);class d extends c.Callback{constructor(e){super(e)}navigate(e){this.same_tab?window.location.href=e:window.open(e)}execute(e,{source:t}){const n=e=>{const n=(0,r.replace_placeholders)(this.url,t,e,void 0,void 0,encodeURI);if(!(0,a.isString)(n))throw new Error(\"HTML output is not supported in this context\");this.navigate(n)},{selected:o}=t;for(const e of o.indices)n(e);for(const e of o.line_indices)n(e)}}n.OpenURL=d,s=d,d.__name__=\"OpenURL\",s.define((({Boolean:e,String:t})=>({url:[t,\"http://\"],same_tab:[e,!1]})))},\n", + " function _(a,n,i,e,r){e(),r(\"Canvas\",a(249).Canvas),r(\"CartesianFrame\",a(126).CartesianFrame),r(\"CoordinateMapping\",a(54).CoordinateMapping)},\n", + " function _(e,t,i,s,a){var l,r=this&&this.__createBinding||(Object.create?function(e,t,i,s){void 0===s&&(s=i),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[i]}})}:function(e,t,i,s){void 0===s&&(s=i),e[s]=t[i]}),n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var i in e)\"default\"!==i&&Object.prototype.hasOwnProperty.call(e,i)&&r(t,e,i);return n(t,e),t};s();const h=e(14),c=e(28),u=e(226),_=e(19),d=e(43),p=e(20),b=e(13),v=e(250),g=e(65),w=e(138),y=e(235);const f=(()=>{let t;return async()=>void 0!==t?t:t=await async function(){const t=document.createElement(\"canvas\"),i=t.getContext(\"webgl\",{premultipliedAlpha:!0});if(null!=i){const s=await(0,w.load_module)(Promise.resolve().then((()=>o(e(410)))));if(null!=s){const e=s.get_regl(i);if(e.has_webgl)return{canvas:t,regl_wrapper:e};_.logger.trace(\"WebGL is supported, but not the required extensions\")}else _.logger.trace(\"WebGL is supported, but bokehjs(.min).js bundle is not available\")}else _.logger.trace(\"WebGL is not supported\");return null}()})(),m={position:\"absolute\",top:\"0\",left:\"0\",width:\"100%\",height:\"100%\"};class x extends u.DOMView{constructor(){super(...arguments),this.bbox=new g.BBox,this.webgl=null}initialize(){super.initialize(),this.underlays_el=(0,d.div)({style:m}),this.primary=this.create_layer(),this.overlays=this.create_layer(),this.overlays_el=(0,d.div)({style:m}),this.events_el=(0,d.div)({class:\"bk-canvas-events\",style:m});const e=[this.underlays_el,this.primary.el,this.overlays.el,this.overlays_el,this.events_el];(0,b.extend)(this.el.style,m),(0,d.append)(this.el,...e),this.ui_event_bus=new v.UIEventBus(this)}async lazy_initialize(){if(await super.lazy_initialize(),\"webgl\"==this.model.output_backend&&(this.webgl=await f(),c.settings.force_webgl&&null==this.webgl))throw new Error(\"webgl is not available\")}remove(){this.ui_event_bus.destroy(),super.remove()}add_underlay(e){this.underlays_el.appendChild(e)}add_overlay(e){this.overlays_el.appendChild(e)}add_event(e){this.events_el.appendChild(e)}get pixel_ratio(){return this.primary.pixel_ratio}resize(e,t){this.bbox=new g.BBox({left:0,top:0,width:e,height:t}),this.primary.resize(e,t),this.overlays.resize(e,t)}prepare_webgl(e){const{webgl:t}=this;if(null!=t){const{width:i,height:s}=this.bbox;t.canvas.width=this.pixel_ratio*i,t.canvas.height=this.pixel_ratio*s;const[a,l,r,n]=e,{xview:o,yview:h}=this.bbox,c=o.compute(a),u=h.compute(l+n),_=this.pixel_ratio;t.regl_wrapper.set_scissor(_*c,_*u,_*r,_*n),this._clear_webgl()}}blit_webgl(e){const{webgl:t}=this;if(null!=t){if(_.logger.debug(\"Blitting WebGL canvas\"),e.restore(),e.drawImage(t.canvas,0,0),e.save(),this.model.hidpi){const t=this.pixel_ratio;e.scale(t,t),e.translate(.5,.5)}this._clear_webgl()}}_clear_webgl(){const{webgl:e}=this;if(null!=e){const{regl_wrapper:t,canvas:i}=e;t.clear(i.width,i.height)}}compose(){const e=this.create_layer(),{width:t,height:i}=this.bbox;return e.resize(t,i),e.ctx.drawImage(this.primary.canvas,0,0),e.ctx.drawImage(this.overlays.canvas,0,0),e}create_layer(){const{output_backend:e,hidpi:t}=this.model;return new y.CanvasLayer(e,t)}to_blob(){return this.compose().to_blob()}}i.CanvasView=x,x.__name__=\"CanvasView\";class z extends h.HasProps{constructor(e){super(e)}}i.Canvas=z,l=z,z.__name__=\"Canvas\",l.prototype.default_view=x,l.internal((({Boolean:e})=>({hidpi:[e,!0],output_backend:[p.OutputBackend,\"canvas\"]})))},\n", + " function _(t,e,s,n,i){n();const r=t(1),a=(0,r.__importDefault)(t(225)),_=t(15),h=t(19),o=t(43),l=(0,r.__importStar)(t(251)),c=t(252),p=t(9),u=t(8),v=t(27),d=t(230);class g{constructor(t){this.canvas_view=t,this.pan_start=new _.Signal(this,\"pan:start\"),this.pan=new _.Signal(this,\"pan\"),this.pan_end=new _.Signal(this,\"pan:end\"),this.pinch_start=new _.Signal(this,\"pinch:start\"),this.pinch=new _.Signal(this,\"pinch\"),this.pinch_end=new _.Signal(this,\"pinch:end\"),this.rotate_start=new _.Signal(this,\"rotate:start\"),this.rotate=new _.Signal(this,\"rotate\"),this.rotate_end=new _.Signal(this,\"rotate:end\"),this.tap=new _.Signal(this,\"tap\"),this.doubletap=new _.Signal(this,\"doubletap\"),this.press=new _.Signal(this,\"press\"),this.pressup=new _.Signal(this,\"pressup\"),this.move_enter=new _.Signal(this,\"move:enter\"),this.move=new _.Signal(this,\"move\"),this.move_exit=new _.Signal(this,\"move:exit\"),this.scroll=new _.Signal(this,\"scroll\"),this.keydown=new _.Signal(this,\"keydown\"),this.keyup=new _.Signal(this,\"keyup\"),this.hammer=new a.default(this.hit_area,{touchAction:\"auto\",inputClass:a.default.TouchMouseInput}),this._prev_move=null,this._curr_pan=null,this._curr_pinch=null,this._curr_rotate=null,this._configure_hammerjs(),this.hit_area.addEventListener(\"mousemove\",(t=>this._mouse_move(t))),this.hit_area.addEventListener(\"mouseenter\",(t=>this._mouse_enter(t))),this.hit_area.addEventListener(\"mouseleave\",(t=>this._mouse_exit(t))),this.hit_area.addEventListener(\"contextmenu\",(t=>this._context_menu(t))),this.hit_area.addEventListener(\"wheel\",(t=>this._mouse_wheel(t))),document.addEventListener(\"keydown\",this),document.addEventListener(\"keyup\",this),this.menu=new d.ContextMenu([],{prevent_hide:t=>2==t.button&&t.target==this.hit_area}),this.hit_area.appendChild(this.menu.el)}get hit_area(){return this.canvas_view.events_el}destroy(){this.menu.remove(),this.hammer.destroy(),document.removeEventListener(\"keydown\",this),document.removeEventListener(\"keyup\",this)}handleEvent(t){\"keydown\"==t.type?this._key_down(t):\"keyup\"==t.type&&this._key_up(t)}_configure_hammerjs(){this.hammer.get(\"doubletap\").recognizeWith(\"tap\"),this.hammer.get(\"tap\").requireFailure(\"doubletap\"),this.hammer.get(\"doubletap\").dropRequireFailure(\"tap\"),this.hammer.on(\"doubletap\",(t=>this._doubletap(t))),this.hammer.on(\"tap\",(t=>this._tap(t))),this.hammer.on(\"press\",(t=>this._press(t))),this.hammer.on(\"pressup\",(t=>this._pressup(t))),this.hammer.get(\"pan\").set({direction:a.default.DIRECTION_ALL}),this.hammer.on(\"panstart\",(t=>this._pan_start(t))),this.hammer.on(\"pan\",(t=>this._pan(t))),this.hammer.on(\"panend\",(t=>this._pan_end(t))),this.hammer.get(\"pinch\").set({enable:!0}),this.hammer.on(\"pinchstart\",(t=>this._pinch_start(t))),this.hammer.on(\"pinch\",(t=>this._pinch(t))),this.hammer.on(\"pinchend\",(t=>this._pinch_end(t))),this.hammer.get(\"rotate\").set({enable:!0}),this.hammer.on(\"rotatestart\",(t=>this._rotate_start(t))),this.hammer.on(\"rotate\",(t=>this._rotate(t))),this.hammer.on(\"rotateend\",(t=>this._rotate_end(t)))}register_tool(t){const e=t.model.event_type;null!=e&&((0,u.isString)(e)?this._register_tool(t,e):e.forEach(((e,s)=>this._register_tool(t,e,s<1))))}_register_tool(t,e,s=!0){const n=t,{id:i}=n.model,r=t=>e=>{e.id==i&&t(e.e)},a=t=>e=>{t(e.e)};switch(e){case\"pan\":null!=n._pan_start&&n.connect(this.pan_start,r(n._pan_start.bind(n))),null!=n._pan&&n.connect(this.pan,r(n._pan.bind(n))),null!=n._pan_end&&n.connect(this.pan_end,r(n._pan_end.bind(n)));break;case\"pinch\":null!=n._pinch_start&&n.connect(this.pinch_start,r(n._pinch_start.bind(n))),null!=n._pinch&&n.connect(this.pinch,r(n._pinch.bind(n))),null!=n._pinch_end&&n.connect(this.pinch_end,r(n._pinch_end.bind(n)));break;case\"rotate\":null!=n._rotate_start&&n.connect(this.rotate_start,r(n._rotate_start.bind(n))),null!=n._rotate&&n.connect(this.rotate,r(n._rotate.bind(n))),null!=n._rotate_end&&n.connect(this.rotate_end,r(n._rotate_end.bind(n)));break;case\"move\":null!=n._move_enter&&n.connect(this.move_enter,r(n._move_enter.bind(n))),null!=n._move&&n.connect(this.move,r(n._move.bind(n))),null!=n._move_exit&&n.connect(this.move_exit,r(n._move_exit.bind(n)));break;case\"tap\":null!=n._tap&&n.connect(this.tap,r(n._tap.bind(n))),null!=n._doubletap&&n.connect(this.doubletap,r(n._doubletap.bind(n)));break;case\"press\":null!=n._press&&n.connect(this.press,r(n._press.bind(n))),null!=n._pressup&&n.connect(this.pressup,r(n._pressup.bind(n)));break;case\"scroll\":null!=n._scroll&&n.connect(this.scroll,r(n._scroll.bind(n)));break;default:throw new Error(`unsupported event_type: ${e}`)}s&&(null!=n._keydown&&n.connect(this.keydown,a(n._keydown.bind(n))),null!=n._keyup&&n.connect(this.keyup,a(n._keyup.bind(n))),v.is_mobile&&null!=n._scroll&&\"pinch\"==e&&(h.logger.debug(\"Registering scroll on touch screen\"),n.connect(this.scroll,r(n._scroll.bind(n)))))}_hit_test_renderers(t,e,s){var n;const i=t.get_renderer_views();for(const t of(0,p.reversed)(i))if(null===(n=t.interactive_hit)||void 0===n?void 0:n.call(t,e,s))return t;return null}set_cursor(t=\"default\"){this.hit_area.style.cursor=t}_hit_test_frame(t,e,s){return t.frame.bbox.contains(e,s)}_hit_test_canvas(t,e,s){return t.layout.bbox.contains(e,s)}_hit_test_plot(t,e){for(const s of this.canvas_view.plot_views)if(s.layout.bbox.relative().contains(t,e))return s;return null}_trigger(t,e,s){var n;const{sx:i,sy:r}=e,a=this._hit_test_plot(i,r),_=t=>{const[s,n]=[i,r];return Object.assign(Object.assign({},e),{sx:s,sy:n})};if(\"panstart\"==e.type||\"pan\"==e.type||\"panend\"==e.type){let n;if(\"panstart\"==e.type&&null!=a?(this._curr_pan={plot_view:a},n=a):\"pan\"==e.type&&null!=this._curr_pan?n=this._curr_pan.plot_view:\"panend\"==e.type&&null!=this._curr_pan?(n=this._curr_pan.plot_view,this._curr_pan=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"pinchstart\"==e.type||\"pinch\"==e.type||\"pinchend\"==e.type){let n;if(\"pinchstart\"==e.type&&null!=a?(this._curr_pinch={plot_view:a},n=a):\"pinch\"==e.type&&null!=this._curr_pinch?n=this._curr_pinch.plot_view:\"pinchend\"==e.type&&null!=this._curr_pinch?(n=this._curr_pinch.plot_view,this._curr_pinch=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"rotatestart\"==e.type||\"rotate\"==e.type||\"rotateend\"==e.type){let n;if(\"rotatestart\"==e.type&&null!=a?(this._curr_rotate={plot_view:a},n=a):\"rotate\"==e.type&&null!=this._curr_rotate?n=this._curr_rotate.plot_view:\"rotateend\"==e.type&&null!=this._curr_rotate?(n=this._curr_rotate.plot_view,this._curr_rotate=null):n=null,null!=n){const e=_();this.__trigger(n,t,e,s)}}else if(\"mouseenter\"==e.type||\"mousemove\"==e.type||\"mouseleave\"==e.type){const h=null===(n=this._prev_move)||void 0===n?void 0:n.plot_view;if(null!=h&&(\"mouseleave\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(h,this.move_exit,{type:\"mouseleave\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&(\"mouseenter\"==e.type||h!=a)){const{sx:t,sy:e}=_();this.__trigger(a,this.move_enter,{type:\"mouseenter\",sx:t,sy:e,shiftKey:!1,ctrlKey:!1},s)}if(null!=a&&\"mousemove\"==e.type){const e=_();this.__trigger(a,t,e,s)}this._prev_move={sx:i,sy:r,plot_view:a}}else if(null!=a){const e=_();this.__trigger(a,t,e,s)}}__trigger(t,e,s,n){var i,r,a;const _=t.model.toolbar.gestures,h=e.name.split(\":\")[0],o=this._hit_test_renderers(t,s.sx,s.sy),l=this._hit_test_canvas(t,s.sx,s.sy);switch(h){case\"move\":{const n=_.move.active;null!=n&&this.trigger(e,s,n.id);const r=t.model.toolbar.inspectors.filter((t=>t.active));let a=\"default\";null!=o?(a=null!==(i=o.cursor(s.sx,s.sy))&&void 0!==i?i:a,(0,p.is_empty)(r)||(e=this.move_exit)):this._hit_test_frame(t,s.sx,s.sy)&&((0,p.is_empty)(r)||(a=\"crosshair\")),this.set_cursor(a),t.set_toolbar_visibility(l),r.map((t=>this.trigger(e,s,t.id)));break}case\"tap\":{const{target:i}=n;if(null!=i&&i!=this.hit_area)return;if(null===(r=null==o?void 0:o.on_hit)||void 0===r||r.call(o,s.sx,s.sy),this._hit_test_frame(t,s.sx,s.sy)){const t=_.tap.active;null!=t&&this.trigger(e,s,t.id)}break}case\"doubletap\":if(this._hit_test_frame(t,s.sx,s.sy)){const t=null!==(a=_.doubletap.active)&&void 0!==a?a:_.tap.active;null!=t&&this.trigger(e,s,t.id)}break;case\"scroll\":{const t=_[v.is_mobile?\"pinch\":\"scroll\"].active;null!=t&&(n.preventDefault(),n.stopPropagation(),this.trigger(e,s,t.id));break}case\"pan\":{const t=_.pan.active;null!=t&&(n.preventDefault(),this.trigger(e,s,t.id));break}default:{const t=_[h].active;null!=t&&this.trigger(e,s,t.id)}}this._trigger_bokeh_event(t,s)}trigger(t,e,s=null){t.emit({id:s,e})}_trigger_bokeh_event(t,e){const s=(()=>{const{sx:s,sy:n}=e,i=t.frame.x_scale.invert(s),r=t.frame.y_scale.invert(n);switch(e.type){case\"wheel\":return new l.MouseWheel(s,n,i,r,e.delta);case\"mousemove\":return new l.MouseMove(s,n,i,r);case\"mouseenter\":return new l.MouseEnter(s,n,i,r);case\"mouseleave\":return new l.MouseLeave(s,n,i,r);case\"tap\":return new l.Tap(s,n,i,r);case\"doubletap\":return new l.DoubleTap(s,n,i,r);case\"press\":return new l.Press(s,n,i,r);case\"pressup\":return new l.PressUp(s,n,i,r);case\"pan\":return new l.Pan(s,n,i,r,e.deltaX,e.deltaY);case\"panstart\":return new l.PanStart(s,n,i,r);case\"panend\":return new l.PanEnd(s,n,i,r);case\"pinch\":return new l.Pinch(s,n,i,r,e.scale);case\"pinchstart\":return new l.PinchStart(s,n,i,r);case\"pinchend\":return new l.PinchEnd(s,n,i,r);case\"rotate\":return new l.Rotate(s,n,i,r,e.rotation);case\"rotatestart\":return new l.RotateStart(s,n,i,r);case\"rotateend\":return new l.RotateEnd(s,n,i,r);default:return}})();null!=s&&t.model.trigger_event(s)}_get_sxy(t){const{pageX:e,pageY:s}=function(t){return\"undefined\"!=typeof TouchEvent&&t instanceof TouchEvent}(t)?(0!=t.touches.length?t.touches:t.changedTouches)[0]:t,{left:n,top:i}=(0,o.offset)(this.hit_area);return{sx:e-n,sy:s-i}}_pan_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{deltaX:t.deltaX,deltaY:t.deltaY,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_pinch_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{scale:t.scale,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_rotate_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{rotation:t.rotation,shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_tap_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t.srcEvent)),{shiftKey:t.srcEvent.shiftKey,ctrlKey:t.srcEvent.ctrlKey})}_move_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_scroll_event(t){return Object.assign(Object.assign({type:t.type},this._get_sxy(t)),{delta:(0,c.getDeltaY)(t),shiftKey:t.shiftKey,ctrlKey:t.ctrlKey})}_key_event(t){return{type:t.type,keyCode:t.keyCode}}_pan_start(t){const e=this._pan_event(t);e.sx-=t.deltaX,e.sy-=t.deltaY,this._trigger(this.pan_start,e,t.srcEvent)}_pan(t){this._trigger(this.pan,this._pan_event(t),t.srcEvent)}_pan_end(t){this._trigger(this.pan_end,this._pan_event(t),t.srcEvent)}_pinch_start(t){this._trigger(this.pinch_start,this._pinch_event(t),t.srcEvent)}_pinch(t){this._trigger(this.pinch,this._pinch_event(t),t.srcEvent)}_pinch_end(t){this._trigger(this.pinch_end,this._pinch_event(t),t.srcEvent)}_rotate_start(t){this._trigger(this.rotate_start,this._rotate_event(t),t.srcEvent)}_rotate(t){this._trigger(this.rotate,this._rotate_event(t),t.srcEvent)}_rotate_end(t){this._trigger(this.rotate_end,this._rotate_event(t),t.srcEvent)}_tap(t){this._trigger(this.tap,this._tap_event(t),t.srcEvent)}_doubletap(t){this._trigger(this.doubletap,this._tap_event(t),t.srcEvent)}_press(t){this._trigger(this.press,this._tap_event(t),t.srcEvent)}_pressup(t){this._trigger(this.pressup,this._tap_event(t),t.srcEvent)}_mouse_enter(t){this._trigger(this.move_enter,this._move_event(t),t)}_mouse_move(t){this._trigger(this.move,this._move_event(t),t)}_mouse_exit(t){this._trigger(this.move_exit,this._move_event(t),t)}_mouse_wheel(t){this._trigger(this.scroll,this._scroll_event(t),t)}_context_menu(t){!this.menu.is_open&&this.menu.can_open&&t.preventDefault();const{sx:e,sy:s}=this._get_sxy(t);this.menu.toggle({left:e,top:s})}_key_down(t){this.trigger(this.keydown,this._key_event(t))}_key_up(t){this.trigger(this.keyup,this._key_event(t))}}s.UIEventBus=g,g.__name__=\"UIEventBus\"},\n", + " function _(e,t,s,n,_){n();var a=this&&this.__decorate||function(e,t,s,n){var _,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,s):n;if(\"object\"==typeof Reflect&&\"function\"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,n);else for(var r=e.length-1;r>=0;r--)(_=e[r])&&(o=(a<3?_(o):a>3?_(t,s,o):_(t,s))||o);return a>3&&o&&Object.defineProperty(t,s,o),o};function o(e){return function(t){t.prototype.event_name=e}}class r{to_json(){const{event_name:e}=this;return{event_name:e,event_values:this._to_json()}}}s.BokehEvent=r,r.__name__=\"BokehEvent\";class c extends r{constructor(){super(...arguments),this.origin=null}_to_json(){return{model:this.origin}}}s.ModelEvent=c,c.__name__=\"ModelEvent\";let l=class extends r{_to_json(){return{}}};s.DocumentReady=l,l.__name__=\"DocumentReady\",s.DocumentReady=l=a([o(\"document_ready\")],l);let i=class extends c{};s.ButtonClick=i,i.__name__=\"ButtonClick\",s.ButtonClick=i=a([o(\"button_click\")],i);let u=class extends c{constructor(e){super(),this.item=e}_to_json(){const{item:e}=this;return Object.assign(Object.assign({},super._to_json()),{item:e})}};s.MenuItemClick=u,u.__name__=\"MenuItemClick\",s.MenuItemClick=u=a([o(\"menu_item_click\")],u);class d extends c{}s.UIEvent=d,d.__name__=\"UIEvent\";let m=class extends d{};s.LODStart=m,m.__name__=\"LODStart\",s.LODStart=m=a([o(\"lodstart\")],m);let h=class extends d{};s.LODEnd=h,h.__name__=\"LODEnd\",s.LODEnd=h=a([o(\"lodend\")],h);let p=class extends d{constructor(e,t,s,n){super(),this.x0=e,this.x1=t,this.y0=s,this.y1=n}_to_json(){const{x0:e,x1:t,y0:s,y1:n}=this;return Object.assign(Object.assign({},super._to_json()),{x0:e,x1:t,y0:s,y1:n})}};s.RangesUpdate=p,p.__name__=\"RangesUpdate\",s.RangesUpdate=p=a([o(\"rangesupdate\")],p);let x=class extends d{constructor(e,t){super(),this.geometry=e,this.final=t}_to_json(){const{geometry:e,final:t}=this;return Object.assign(Object.assign({},super._to_json()),{geometry:e,final:t})}};s.SelectionGeometry=x,x.__name__=\"SelectionGeometry\",s.SelectionGeometry=x=a([o(\"selectiongeometry\")],x);let j=class extends d{};s.Reset=j,j.__name__=\"Reset\",s.Reset=j=a([o(\"reset\")],j);class y extends d{constructor(e,t,s,n){super(),this.sx=e,this.sy=t,this.x=s,this.y=n}_to_json(){const{sx:e,sy:t,x:s,y:n}=this;return Object.assign(Object.assign({},super._to_json()),{sx:e,sy:t,x:s,y:n})}}s.PointEvent=y,y.__name__=\"PointEvent\";let g=class extends y{constructor(e,t,s,n,_,a){super(e,t,s,n),this.delta_x=_,this.delta_y=a}_to_json(){const{delta_x:e,delta_y:t}=this;return Object.assign(Object.assign({},super._to_json()),{delta_x:e,delta_y:t})}};s.Pan=g,g.__name__=\"Pan\",s.Pan=g=a([o(\"pan\")],g);let P=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.scale=_}_to_json(){const{scale:e}=this;return Object.assign(Object.assign({},super._to_json()),{scale:e})}};s.Pinch=P,P.__name__=\"Pinch\",s.Pinch=P=a([o(\"pinch\")],P);let O=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.rotation=_}_to_json(){const{rotation:e}=this;return Object.assign(Object.assign({},super._to_json()),{rotation:e})}};s.Rotate=O,O.__name__=\"Rotate\",s.Rotate=O=a([o(\"rotate\")],O);let b=class extends y{constructor(e,t,s,n,_){super(e,t,s,n),this.delta=_}_to_json(){const{delta:e}=this;return Object.assign(Object.assign({},super._to_json()),{delta:e})}};s.MouseWheel=b,b.__name__=\"MouseWheel\",s.MouseWheel=b=a([o(\"wheel\")],b);let v=class extends y{};s.MouseMove=v,v.__name__=\"MouseMove\",s.MouseMove=v=a([o(\"mousemove\")],v);let E=class extends y{};s.MouseEnter=E,E.__name__=\"MouseEnter\",s.MouseEnter=E=a([o(\"mouseenter\")],E);let R=class extends y{};s.MouseLeave=R,R.__name__=\"MouseLeave\",s.MouseLeave=R=a([o(\"mouseleave\")],R);let M=class extends y{};s.Tap=M,M.__name__=\"Tap\",s.Tap=M=a([o(\"tap\")],M);let f=class extends y{};s.DoubleTap=f,f.__name__=\"DoubleTap\",s.DoubleTap=f=a([o(\"doubletap\")],f);let S=class extends y{};s.Press=S,S.__name__=\"Press\",s.Press=S=a([o(\"press\")],S);let D=class extends y{};s.PressUp=D,D.__name__=\"PressUp\",s.PressUp=D=a([o(\"pressup\")],D);let k=class extends y{};s.PanStart=k,k.__name__=\"PanStart\",s.PanStart=k=a([o(\"panstart\")],k);let L=class extends y{};s.PanEnd=L,L.__name__=\"PanEnd\",s.PanEnd=L=a([o(\"panend\")],L);let U=class extends y{};s.PinchStart=U,U.__name__=\"PinchStart\",s.PinchStart=U=a([o(\"pinchstart\")],U);let C=class extends y{};s.PinchEnd=C,C.__name__=\"PinchEnd\",s.PinchEnd=C=a([o(\"pinchend\")],C);let T=class extends y{};s.RotateStart=T,T.__name__=\"RotateStart\",s.RotateStart=T=a([o(\"rotatestart\")],T);let B=class extends y{};s.RotateEnd=B,B.__name__=\"RotateEnd\",s.RotateEnd=B=a([o(\"rotateend\")],B)},\n", + " function _(t,e,n,l,o){\n", + " /*!\n", + " * jQuery Mousewheel 3.1.13\n", + " *\n", + " * Copyright jQuery Foundation and other contributors\n", + " * Released under the MIT license\n", + " * http://jquery.org/license\n", + " */\n", + " function u(t){const e=getComputedStyle(t).fontSize;return null!=e?parseInt(e,10):null}l(),n.getDeltaY=function(t){let e=-t.deltaY;if(t.target instanceof HTMLElement)switch(t.deltaMode){case t.DOM_DELTA_LINE:e*=(n=t.target,null!==(a=null!==(o=u(null!==(l=n.offsetParent)&&void 0!==l?l:document.body))&&void 0!==o?o:u(n))&&void 0!==a?a:16);break;case t.DOM_DELTA_PAGE:e*=function(t){return t.clientHeight}(t.target)}var n,l,o,a;return e}},\n", + " function _(m,o,n,r,a){r(),a(\"Expression\",m(254).Expression),a(\"CustomJSExpr\",m(255).CustomJSExpr),a(\"Stack\",m(256).Stack),a(\"CumSum\",m(257).CumSum),a(\"ScalarExpression\",m(254).ScalarExpression),a(\"Minimum\",m(258).Minimum),a(\"Maximum\",m(259).Maximum);var s=m(260);a(\"XComponent\",s.XComponent),a(\"YComponent\",s.YComponent),a(\"PolarTransform\",m(261).PolarTransform)},\n", + " function _(e,t,s,i,r){i();const n=e(53);class _ extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}v_compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._v_compute(e),this._result.set(e,t)),t}}s.Expression=_,_.__name__=\"Expression\";class o extends n.Model{constructor(e){super(e)}initialize(){super.initialize(),this._result=new Map}compute(e){let t=this._result.get(e);return(void 0===t||e.changed_for(this))&&(t=this._compute(e),this._result.set(e,t)),t}}s.ScalarExpression=o,o.__name__=\"ScalarExpression\"},\n", + " function _(e,s,t,n,r){var a;n();const o=e(14),c=e(254),i=e(24),u=e(9),l=e(13),h=e(34),g=e(8);class p extends c.Expression{constructor(e){super(e)}connect_signals(){super.connect_signals();for(const e of(0,l.values)(this.args))e instanceof o.HasProps&&e.change.connect((()=>{this._result.clear(),this.change.emit()}))}get names(){return(0,l.keys)(this.args)}get values(){return(0,l.values)(this.args)}get func(){const e=(0,h.use_strict)(this.code);return new i.GeneratorFunction(...this.names,e)}_v_compute(e){const s=this.func.apply(e,this.values);let t=s.next();if(t.done&&void 0!==t.value){const{value:s}=t;return(0,g.isArray)(s)||(0,g.isTypedArray)(s)?s:(0,g.isIterable)(s)?[...s]:(0,u.repeat)(s,e.length)}{const e=[];do{e.push(t.value),t=s.next()}while(!t.done);return e}}}t.CustomJSExpr=p,a=p,p.__name__=\"CustomJSExpr\",a.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n", + " function _(t,n,e,o,r){var s;o();const a=t(254);class c extends a.Expression{constructor(t){super(t)}_v_compute(t){var n;const e=null!==(n=t.get_length())&&void 0!==n?n:0,o=new Float64Array(e);for(const n of this.fields){const r=t.data[n];if(null!=r){const t=Math.min(e,r.length);for(let n=0;n({fields:[n(t),[]]})))},\n", + " function _(e,n,t,o,r){var i;o();const l=e(254);class u extends l.Expression{constructor(e){super(e)}_v_compute(e){var n;const t=new Float64Array(null!==(n=e.get_length())&&void 0!==n?n:0),o=e.data[this.field],r=this.include_zero?1:0;t[0]=this.include_zero?0:o[0];for(let e=1;e({field:[n],include_zero:[e,!1]})))},\n", + " function _(i,n,l,t,e){var a;t();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var n,l;const t=null!==(n=i.data[this.field])&&void 0!==n?n:[];return Math.min(null!==(l=this.initial)&&void 0!==l?l:1/0,(0,r.min)(t))}}l.Minimum=s,a=s,s.__name__=\"Minimum\",a.define((({Number:i,String:n,Nullable:l})=>({field:[n],initial:[l(i),null]})))},\n", + " function _(i,a,n,l,t){var e;l();const u=i(254),r=i(9);class s extends u.ScalarExpression{constructor(i){super(i)}_compute(i){var a,n;const l=null!==(a=i.data[this.field])&&void 0!==a?a:[];return Math.max(null!==(n=this.initial)&&void 0!==n?n:-1/0,(0,r.max)(l))}}n.Maximum=s,e=s,s.__name__=\"Maximum\",e.define((({Number:i,String:a,Nullable:n})=>({field:[a],initial:[n(i),null]})))},\n", + " function _(n,e,t,o,r){var s;o();const _=n(254);class m extends _.Expression{constructor(n){super(n)}get x(){return new c({transform:this})}get y(){return new u({transform:this})}}t.CoordinateTransform=m,m.__name__=\"CoordinateTransform\";class a extends _.Expression{constructor(n){super(n)}}t.XYComponent=a,s=a,a.__name__=\"XYComponent\",s.define((({Ref:n})=>({transform:[n(m)]})));class c extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).x}}t.XComponent=c,c.__name__=\"XComponent\";class u extends a{constructor(n){super(n)}_v_compute(n){return this.transform.v_compute(n).y}}t.YComponent=u,u.__name__=\"YComponent\"},\n", + " function _(r,t,n,e,o){e();const i=r(1);var a;const s=r(260),c=r(20),l=(0,i.__importStar)(r(18));class d extends s.CoordinateTransform{constructor(r){super(r)}_v_compute(r){const t=this.properties.radius.uniform(r),n=this.properties.angle.uniform(r),e=\"anticlock\"==this.direction?-1:1,o=Math.min(t.length,n.length),i=new Float64Array(o),a=new Float64Array(o);for(let r=0;r({radius:[l.DistanceSpec,{field:\"radius\"}],angle:[l.AngleSpec,{field:\"angle\"}],direction:[c.Direction,\"anticlock\"]})))},\n", + " function _(e,t,l,r,i){r(),i(\"BooleanFilter\",e(263).BooleanFilter),i(\"CustomJSFilter\",e(264).CustomJSFilter),i(\"Filter\",e(191).Filter),i(\"GroupFilter\",e(265).GroupFilter),i(\"IndexFilter\",e(266).IndexFilter)},\n", + " function _(e,n,l,o,s){var t;o();const a=e(191),r=e(24);class c extends a.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{booleans:l}=this;return null==l?r.Indices.all_set(n):r.Indices.from_booleans(n,l)}}l.BooleanFilter=c,t=c,c.__name__=\"BooleanFilter\",t.define((({Boolean:e,Array:n,Nullable:l})=>({booleans:[l(n(e)),null]})))},\n", + " function _(e,n,r,s,t){var i;s();const o=e(191),c=e(24),u=e(13),a=e(8),l=e(34);class f extends o.Filter{constructor(e){super(e)}get names(){return(0,u.keys)(this.args)}get values(){return(0,u.values)(this.args)}get func(){const e=(0,l.use_strict)(this.code);return new Function(...this.names,\"source\",e)}compute_indices(e){const n=e.length,r=this.func(...this.values,e);if(null==r)return c.Indices.all_set(n);if((0,a.isArrayOf)(r,a.isInteger))return c.Indices.from_indices(n,r);if((0,a.isArrayOf)(r,a.isBoolean))return c.Indices.from_booleans(n,r);throw new Error(`expect an array of integers or booleans, or null, got ${r}`)}}r.CustomJSFilter=f,i=f,f.__name__=\"CustomJSFilter\",i.define((({Unknown:e,String:n,Dict:r})=>({args:[r(e),{}],code:[n,\"\"]})))},\n", + " function _(n,e,t,o,r){var u;o();const s=n(191),c=n(24),i=n(19);class l extends s.Filter{constructor(n){super(n)}compute_indices(n){const e=n.get_column(this.column_name);if(null==e)return i.logger.warn(`${this}: groupby column '${this.column_name}' not found in the data source`),new c.Indices(n.length,1);{const t=new c.Indices(n.length);for(let n=0;n({column_name:[n],group:[n]})))},\n", + " function _(e,n,i,s,t){var l;s();const c=e(191),r=e(24);class d extends c.Filter{constructor(e){super(e)}compute_indices(e){const n=e.length,{indices:i}=this;return null==i?r.Indices.all_set(n):r.Indices.from_indices(n,i)}}i.IndexFilter=d,l=d,d.__name__=\"IndexFilter\",l.define((({Int:e,Array:n,Nullable:i})=>({indices:[i(n(e)),null]})))},\n", + " function _(e,a,l,i,t){i(),t(\"AnnularWedge\",e(268).AnnularWedge),t(\"Annulus\",e(269).Annulus),t(\"Arc\",e(270).Arc),t(\"Bezier\",e(271).Bezier),t(\"Circle\",e(272).Circle),t(\"Ellipse\",e(273).Ellipse),t(\"EllipseOval\",e(274).EllipseOval),t(\"Glyph\",e(179).Glyph),t(\"HArea\",e(187).HArea),t(\"HBar\",e(276).HBar),t(\"HexTile\",e(278).HexTile),t(\"Image\",e(279).Image),t(\"ImageRGBA\",e(281).ImageRGBA),t(\"ImageURL\",e(282).ImageURL),t(\"Line\",e(177).Line),t(\"MultiLine\",e(283).MultiLine),t(\"MultiPolygons\",e(284).MultiPolygons),t(\"Oval\",e(285).Oval),t(\"Patch\",e(186).Patch),t(\"Patches\",e(286).Patches),t(\"Quad\",e(287).Quad),t(\"Quadratic\",e(288).Quadratic),t(\"Ray\",e(289).Ray),t(\"Rect\",e(290).Rect),t(\"Scatter\",e(291).Scatter),t(\"Segment\",e(294).Segment),t(\"Spline\",e(295).Spline),t(\"Step\",e(297).Step),t(\"Text\",e(298).Text),t(\"VArea\",e(189).VArea),t(\"VBar\",e(299).VBar),t(\"Wedge\",e(300).Wedge)},\n", + " function _(e,s,t,i,r){i();const n=e(1);var a;const _=e(178),o=e(184),d=e(48),u=e(24),h=e(20),c=(0,n.__importStar)(e(18)),l=e(10),g=e(72),p=e(12);class x extends _.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,u.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,u.to_screen)(this.outer_radius),this.max_souter_radius=(0,p.max)(this.souter_radius)}_render(e,s,t){const{sx:i,sy:r,start_angle:n,end_angle:a,sinner_radius:_,souter_radius:o}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],u=r[t],h=_[t],c=o[t],l=n.get(t),g=a.get(t);if(!isFinite(s+u+h+c+l+g))continue;const p=g-l;e.translate(s,u),e.rotate(l),e.beginPath(),e.moveTo(c,0),e.arc(0,0,c,0,p,d),e.rotate(p),e.lineTo(h,0),e.arc(0,0,h,0,-p,!d),e.closePath(),e.rotate(-p-l),e.translate(-s,-u),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t)}}_hit_point(e){const{sx:s,sy:t}=e,i=this.renderer.xscale.invert(s),r=this.renderer.yscale.invert(t),n=s-this.max_souter_radius,a=s+this.max_souter_radius,[_,o]=this.renderer.xscale.r_invert(n,a),d=t-this.max_souter_radius,u=t+this.max_souter_radius,[h,c]=this.renderer.yscale.r_invert(d,u),p=[];for(const e of this.index.indices({x0:_,x1:o,y0:h,y1:c})){const s=this.souter_radius[e]**2,t=this.sinner_radius[e]**2,[n,a]=this.renderer.xscale.r_compute(i,this._x[e]),[_,o]=this.renderer.yscale.r_compute(r,this._y[e]),d=(n-a)**2+(_-o)**2;d<=s&&d>=t&&p.push(e)}const x=\"anticlock\"==this.model.direction,m=[];for(const e of p){const i=Math.atan2(t-this.sy[e],s-this.sx[e]);(0,l.angle_between)(-i,-this.start_angle.get(e),-this.end_angle.get(e),x)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,o.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=(this.sinner_radius[e]+this.souter_radius[e])/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.AnnularWedgeView=x,x.__name__=\"AnnularWedgeView\";class m extends _.XYGlyph{constructor(e){super(e)}}t.AnnularWedge=m,a=m,m.__name__=\"AnnularWedge\",a.prototype.default_view=x,a.mixins([d.LineVector,d.FillVector,d.HatchVector]),a.define((({})=>({direction:[h.Direction,\"anticlock\"],inner_radius:[c.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[c.DistanceSpec,{field:\"outer_radius\"}],start_angle:[c.AngleSpec,{field:\"start_angle\"}],end_angle:[c.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(s,e,i,r,t){r();const n=s(1);var a;const u=s(178),o=s(24),_=s(48),d=(0,n.__importStar)(s(18)),h=s(27),c=s(72);class l extends u.XYGlyphView{_map_data(){\"data\"==this.model.properties.inner_radius.units?this.sinner_radius=this.sdist(this.renderer.xscale,this._x,this.inner_radius):this.sinner_radius=(0,o.to_screen)(this.inner_radius),\"data\"==this.model.properties.outer_radius.units?this.souter_radius=this.sdist(this.renderer.xscale,this._x,this.outer_radius):this.souter_radius=(0,o.to_screen)(this.outer_radius)}_render(s,e,i){const{sx:r,sy:t,sinner_radius:n,souter_radius:a}=null!=i?i:this;for(const i of e){const e=r[i],u=t[i],o=n[i],_=a[i];if(isFinite(e+u+o+_)){if(s.beginPath(),h.is_ie)for(const i of[!1,!0])s.moveTo(e,u),s.arc(e,u,o,0,Math.PI,i),s.moveTo(e+_,u),s.arc(e,u,_,Math.PI,0,!i);else s.arc(e,u,o,0,2*Math.PI,!0),s.moveTo(e+_,u),s.arc(e,u,_,2*Math.PI,0,!1);this.visuals.fill.apply(s,i),this.visuals.hatch.apply(s,i),this.visuals.line.apply(s,i)}}}_hit_point(s){const{sx:e,sy:i}=s,r=this.renderer.xscale.invert(e),t=this.renderer.yscale.invert(i);let n,a,u,o;if(\"data\"==this.model.properties.outer_radius.units)n=r-this.max_outer_radius,u=r+this.max_outer_radius,a=t-this.max_outer_radius,o=t+this.max_outer_radius;else{const s=e-this.max_outer_radius,r=e+this.max_outer_radius;[n,u]=this.renderer.xscale.r_invert(s,r);const t=i-this.max_outer_radius,_=i+this.max_outer_radius;[a,o]=this.renderer.yscale.r_invert(t,_)}const _=[];for(const s of this.index.indices({x0:n,x1:u,y0:a,y1:o})){const e=this.souter_radius[s]**2,i=this.sinner_radius[s]**2,[n,a]=this.renderer.xscale.r_compute(r,this._x[s]),[u,o]=this.renderer.yscale.r_compute(t,this._y[s]),d=(n-a)**2+(u-o)**2;d<=e&&d>=i&&_.push(s)}return new c.Selection({indices:_})}draw_legend_for_index(s,{x0:e,y0:i,x1:r,y1:t},n){const a=n+1,u=new Array(a);u[n]=(e+r)/2;const o=new Array(a);o[n]=(i+t)/2;const _=.5*Math.min(Math.abs(r-e),Math.abs(t-i)),d=new Array(a);d[n]=.4*_;const h=new Array(a);h[n]=.8*_,this._render(s,[n],{sx:u,sy:o,sinner_radius:d,souter_radius:h})}}i.AnnulusView=l,l.__name__=\"AnnulusView\";class x extends u.XYGlyph{constructor(s){super(s)}}i.Annulus=x,a=x,x.__name__=\"Annulus\",a.prototype.default_view=l,a.mixins([_.LineVector,_.FillVector,_.HatchVector]),a.define((({})=>({inner_radius:[d.DistanceSpec,{field:\"inner_radius\"}],outer_radius:[d.DistanceSpec,{field:\"outer_radius\"}]})))},\n", + " function _(e,i,s,t,n){t();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),_=e(24),o=e(20),u=(0,r.__importStar)(e(18));class h extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,_.to_screen)(this.radius)}_render(e,i,s){if(this.visuals.line.doit){const{sx:t,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=s?s:this,d=\"anticlock\"==this.model.direction;for(const s of i){const i=t[s],l=n[s],_=r[s],o=a.get(s),u=c.get(s);isFinite(i+l+_+o+u)&&(e.beginPath(),e.arc(i,l,_,o,u,d),this.visuals.line.set_vectorize(e,s),e.stroke())}}}draw_legend_for_index(e,i,s){(0,d.generic_line_vector_legend)(this.visuals,e,i,s)}}s.ArcView=h,h.__name__=\"ArcView\";class g extends c.XYGlyph{constructor(e){super(e)}}s.Arc=g,a=g,g.__name__=\"Arc\",a.prototype.default_view=h,a.mixins(l.LineVector),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[u.DistanceSpec,{field:\"radius\"}],start_angle:[u.AngleSpec,{field:\"start_angle\"}],end_angle:[u.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(e,t,i,n,s){n();const o=e(1);var c;const r=e(48),a=e(179),_=e(184),d=e(78),l=(0,o.__importStar)(e(18));function x(e,t,i,n,s,o,c,r){const a=[],_=[[],[]];for(let _=0;_<=2;_++){let d,l,x;if(0===_?(l=6*e-12*i+6*s,d=-3*e+9*i-9*s+3*c,x=3*i-3*e):(l=6*t-12*n+6*o,d=-3*t+9*n-9*o+3*r,x=3*n-3*t),Math.abs(d)<1e-12){if(Math.abs(l)<1e-12)continue;const e=-x/l;0({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx0:[l.XCoordinateSpec,{field:\"cx0\"}],cy0:[l.YCoordinateSpec,{field:\"cy0\"}],cx1:[l.XCoordinateSpec,{field:\"cx1\"}],cy1:[l.YCoordinateSpec,{field:\"cy1\"}]}))),c.mixins(r.LineVector)},\n", + " function _(s,i,e,t,r){t();const a=s(1);var n;const h=s(178),d=s(48),l=s(24),_=s(20),c=(0,a.__importStar)(s(185)),u=(0,a.__importStar)(s(18)),o=s(9),x=s(12),m=s(72);class p extends h.XYGlyphView{async lazy_initialize(){await super.lazy_initialize();const{webgl:i}=this.renderer.plot_view.canvas_view;if(null!=i&&i.regl_wrapper.has_webgl){const{CircleGL:e}=await Promise.resolve().then((()=>(0,a.__importStar)(s(423))));this.glglyph=new e(i.regl_wrapper,this)}}get use_radius(){return!(this.radius.is_Scalar()&&isNaN(this.radius.value))}_set_data(s){super._set_data(s);const i=(()=>{if(this.use_radius)return 2*this.max_radius;{const{size:s}=this;return s.is_Scalar()?s.value:(0,x.max)(s.array)}})();this._configure(\"max_size\",{value:i})}_map_data(){if(this.use_radius)if(\"data\"==this.model.properties.radius.units)switch(this.model.radius_dimension){case\"x\":this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius);break;case\"y\":this.sradius=this.sdist(this.renderer.yscale,this._y,this.radius);break;case\"max\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.max(s,i[e])));break}case\"min\":{const s=this.sdist(this.renderer.xscale,this._x,this.radius),i=this.sdist(this.renderer.yscale,this._y,this.radius);this.sradius=(0,x.map)(s,((s,e)=>Math.min(s,i[e])));break}}else this.sradius=(0,l.to_screen)(this.radius);else{const s=l.ScreenArray.from(this.size);this.sradius=(0,x.map)(s,(s=>s/2))}}_mask_data(){const{frame:s}=this.renderer.plot_view,i=s.x_target,e=s.y_target;let t,r;return this.use_radius&&\"data\"==this.model.properties.radius.units?(t=i.map((s=>this.renderer.xscale.invert(s))).widen(this.max_radius),r=e.map((s=>this.renderer.yscale.invert(s))).widen(this.max_radius)):(t=i.widen(this.max_size).map((s=>this.renderer.xscale.invert(s))),r=e.widen(this.max_size).map((s=>this.renderer.yscale.invert(s)))),this.index.indices({x0:t.start,x1:t.end,y0:r.start,y1:r.end})}_render(s,i,e){const{sx:t,sy:r,sradius:a}=null!=e?e:this;for(const e of i){const i=t[e],n=r[e],h=a[e];isFinite(i+n+h)&&(s.beginPath(),s.arc(i,n,h,0,2*Math.PI,!1),this.visuals.fill.apply(s,e),this.visuals.hatch.apply(s,e),this.visuals.line.apply(s,e))}}_hit_point(s){const{sx:i,sy:e}=s,t=this.renderer.xscale.invert(i),r=this.renderer.yscale.invert(e),{hit_dilation:a}=this.model;let n,h,d,l;if(this.use_radius&&\"data\"==this.model.properties.radius.units)n=t-this.max_radius*a,h=t+this.max_radius*a,d=r-this.max_radius*a,l=r+this.max_radius*a;else{const s=i-this.max_size*a,t=i+this.max_size*a;[n,h]=this.renderer.xscale.r_invert(s,t);const r=e-this.max_size*a,_=e+this.max_size*a;[d,l]=this.renderer.yscale.r_invert(r,_)}const _=this.index.indices({x0:n,x1:h,y0:d,y1:l}),c=[];if(this.use_radius&&\"data\"==this.model.properties.radius.units)for(const s of _){const i=(this.sradius[s]*a)**2,[e,n]=this.renderer.xscale.r_compute(t,this._x[s]),[h,d]=this.renderer.yscale.r_compute(r,this._y[s]);(e-n)**2+(h-d)**2<=i&&c.push(s)}else for(const s of _){const t=(this.sradius[s]*a)**2;(this.sx[s]-i)**2+(this.sy[s]-e)**2<=t&&c.push(s)}return new m.Selection({indices:c})}_hit_span(s){const{sx:i,sy:e}=s,t=this.bounds();let r,a,n,h;if(\"h\"==s.direction){let s,e;if(n=t.y0,h=t.y1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=i-this.max_radius,e=i+this.max_radius,[r,a]=this.renderer.xscale.r_invert(s,e);else{const t=this.max_size/2;s=i-t,e=i+t,[r,a]=this.renderer.xscale.r_invert(s,e)}}else{let s,i;if(r=t.x0,a=t.x1,this.use_radius&&\"data\"==this.model.properties.radius.units)s=e-this.max_radius,i=e+this.max_radius,[n,h]=this.renderer.yscale.r_invert(s,i);else{const t=this.max_size/2;s=e-t,i=e+t,[n,h]=this.renderer.yscale.r_invert(s,i)}}const d=[...this.index.indices({x0:r,x1:a,y0:n,y1:h})];return new m.Selection({indices:d})}_hit_rect(s){const{sx0:i,sx1:e,sy0:t,sy1:r}=s,[a,n]=this.renderer.xscale.r_invert(i,e),[h,d]=this.renderer.yscale.r_invert(t,r),l=[...this.index.indices({x0:a,x1:n,y0:h,y1:d})];return new m.Selection({indices:l})}_hit_poly(s){const{sx:i,sy:e}=s,t=(0,o.range)(0,this.sx.length),r=[];for(let s=0,a=t.length;s({angle:[u.AngleSpec,0],size:[u.ScreenSizeSpec,{value:4}],radius:[u.NullDistanceSpec,null],radius_dimension:[_.RadiusDimension,\"x\"],hit_dilation:[s,1]})))},\n", + " function _(e,l,s,i,_){var p;i();const t=e(274);class a extends t.EllipseOvalView{}s.EllipseView=a,a.__name__=\"EllipseView\";class n extends t.EllipseOval{constructor(e){super(e)}}s.Ellipse=n,p=n,n.__name__=\"Ellipse\",p.prototype.default_view=a},\n", + " function _(t,s,e,i,h){i();const n=t(1),r=t(275),a=(0,n.__importStar)(t(185)),l=t(24),_=t(72),o=(0,n.__importStar)(t(18));class d extends r.CenterRotatableView{_map_data(){\"data\"==this.model.properties.width.units?this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"):this.sw=(0,l.to_screen)(this.width),\"data\"==this.model.properties.height.units?this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"):this.sh=(0,l.to_screen)(this.height)}_render(t,s,e){const{sx:i,sy:h,sw:n,sh:r,angle:a}=null!=e?e:this;for(const e of s){const s=i[e],l=h[e],_=n[e],o=r[e],d=a.get(e);isFinite(s+l+_+o+d)&&(t.beginPath(),t.ellipse(s,l,_/2,o/2,d,0,2*Math.PI),this.visuals.fill.apply(t,e),this.visuals.hatch.apply(t,e),this.visuals.line.apply(t,e))}}_hit_point(t){let s,e,i,h,n,r,l,o,d;const{sx:c,sy:p}=t,w=this.renderer.xscale.invert(c),x=this.renderer.yscale.invert(p);\"data\"==this.model.properties.width.units?(s=w-this.max_width,e=w+this.max_width):(r=c-this.max_width,l=c+this.max_width,[s,e]=this.renderer.xscale.r_invert(r,l)),\"data\"==this.model.properties.height.units?(i=x-this.max_height,h=x+this.max_height):(o=p-this.max_height,d=p+this.max_height,[i,h]=this.renderer.yscale.r_invert(o,d));const m=this.index.indices({x0:s,x1:e,y0:i,y1:h}),y=[];for(const t of m)n=a.point_in_ellipse(c,p,this.angle.get(t),this.sh[t]/2,this.sw[t]/2,this.sx[t],this.sy[t]),n&&y.push(t);return new _.Selection({indices:y})}draw_legend_for_index(t,{x0:s,y0:e,x1:i,y1:h},n){const r=n+1,a=new Array(r);a[n]=(s+i)/2;const l=new Array(r);l[n]=(e+h)/2;const _=this.sw[n]/this.sh[n],d=.8*Math.min(Math.abs(i-s),Math.abs(h-e)),c=new Array(r),p=new Array(r);_>1?(c[n]=d,p[n]=d/_):(c[n]=d*_,p[n]=d);const w=new o.UniformScalar(0,r);this._render(t,[n],{sx:a,sy:l,sw:c,sh:p,angle:w})}}e.EllipseOvalView=d,d.__name__=\"EllipseOvalView\";class c extends r.CenterRotatable{constructor(t){super(t)}}e.EllipseOval=c,c.__name__=\"EllipseOval\"},\n", + " function _(e,t,i,a,n){a();const s=e(1);var r;const h=e(178),o=e(48),_=(0,s.__importStar)(e(18));class c extends h.XYGlyphView{get max_w2(){return\"data\"==this.model.properties.width.units?this.max_width/2:0}get max_h2(){return\"data\"==this.model.properties.height.units?this.max_height/2:0}_bounds({x0:e,x1:t,y0:i,y1:a}){const{max_w2:n,max_h2:s}=this;return{x0:e-n,x1:t+n,y0:i-s,y1:a+s}}}i.CenterRotatableView=c,c.__name__=\"CenterRotatableView\";class l extends h.XYGlyph{constructor(e){super(e)}}i.CenterRotatable=l,r=l,l.__name__=\"CenterRotatable\",r.mixins([o.LineVector,o.FillVector,o.HatchVector]),r.define((({})=>({angle:[_.AngleSpec,0],width:[_.DistanceSpec,{field:\"width\"}],height:[_.DistanceSpec,{field:\"height\"}]})))},\n", + " function _(t,e,s,i,r){i();const h=t(1);var a;const n=t(277),_=t(24),o=(0,h.__importStar)(t(18));class l extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[(this.sleft[t]+this.sright[t])/2,this.sy[t]]}_lrtb(t){const e=this._left[t],s=this._right[t],i=this._y[t],r=this.height.get(t)/2;return[Math.min(e,s),Math.max(e,s),i+r,i-r]}_map_data(){this.sy=this.renderer.yscale.v_compute(this._y),this.sh=this.sdist(this.renderer.yscale,this._y,this.height,\"center\"),this.sleft=this.renderer.xscale.v_compute(this._left),this.sright=this.renderer.xscale.v_compute(this._right);const t=this.sy.length;this.stop=new _.ScreenArray(t),this.sbottom=new _.ScreenArray(t);for(let e=0;e({left:[o.XCoordinateSpec,{value:0}],y:[o.YCoordinateSpec,{field:\"y\"}],height:[o.NumberSpec,{value:1}],right:[o.XCoordinateSpec,{field:\"right\"}]})))},\n", + " function _(t,e,s,r,i){var n;r();const a=t(48),h=t(179),o=t(184),c=t(72);class _ extends h.GlyphView{get_anchor_point(t,e,s){const r=Math.min(this.sleft[e],this.sright[e]),i=Math.max(this.sright[e],this.sleft[e]),n=Math.min(this.stop[e],this.sbottom[e]),a=Math.max(this.sbottom[e],this.stop[e]);switch(t){case\"top_left\":return{x:r,y:n};case\"top\":case\"top_center\":return{x:(r+i)/2,y:n};case\"top_right\":return{x:i,y:n};case\"bottom_left\":return{x:r,y:a};case\"bottom\":case\"bottom_center\":return{x:(r+i)/2,y:a};case\"bottom_right\":return{x:i,y:a};case\"left\":case\"center_left\":return{x:r,y:(n+a)/2};case\"center\":case\"center_center\":return{x:(r+i)/2,y:(n+a)/2};case\"right\":case\"center_right\":return{x:i,y:(n+a)/2}}}_index_data(t){const{min:e,max:s}=Math,{data_size:r}=this;for(let i=0;i(0,n.__importStar)(e(425))));this.glglyph=new s(t.regl_wrapper,this)}}scenterxy(e){return[this.sx[e],this.sy[e]]}_set_data(){const{orientation:e,size:t,aspect_scale:s}=this.model,{q:i,r}=this,n=this.q.length;this._x=new Float64Array(n),this._y=new Float64Array(n);const{_x:a,_y:l}=this,o=Math.sqrt(3);if(\"pointytop\"==e)for(let e=0;e({r:[c.NumberSpec,{field:\"r\"}],q:[c.NumberSpec,{field:\"q\"}],scale:[c.NumberSpec,1],size:[e,1],aspect_scale:[e,1],orientation:[_.HexTileOrientation,\"pointytop\"]}))),a.override({line_color:null})},\n", + " function _(e,a,t,_,r){var n;_();const s=e(280),o=e(173),i=e(201);class p extends s.ImageBaseView{connect_signals(){super.connect_signals(),this.connect(this.model.color_mapper.change,(()=>this._update_image()))}_update_image(){null!=this.image_data&&(this._set_data(null),this.renderer.request_render())}_flat_img_to_buf8(e){return this.model.color_mapper.rgba_mapper.v_compute(e)}}t.ImageView=p,p.__name__=\"ImageView\";class m extends s.ImageBase{constructor(e){super(e)}}t.Image=m,n=m,m.__name__=\"Image\",n.prototype.default_view=p,n.define((({Ref:e})=>({color_mapper:[e(o.ColorMapper),()=>new i.LinearColorMapper({palette:[\"#000000\",\"#252525\",\"#525252\",\"#737373\",\"#969696\",\"#bdbdbd\",\"#d9d9d9\",\"#f0f0f0\",\"#ffffff\"]})]})))},\n", + " function _(e,t,i,s,a){s();const h=e(1);var n;const r=e(178),_=e(24),d=(0,h.__importStar)(e(18)),l=e(72),g=e(9),o=e(29),c=e(11);class m extends r.XYGlyphView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_render(e,t,i){const{image_data:s,sx:a,sy:h,sw:n,sh:r,global_alpha:_}=null!=i?i:this,d=e.getImageSmoothingEnabled();e.setImageSmoothingEnabled(!1);const l=_.is_Scalar();l&&(e.globalAlpha=_.value);for(const i of t){const t=s[i],_=a[i],d=h[i],g=n[i],o=r[i],c=this.global_alpha.get(i);if(null==t||!isFinite(_+d+g+o+c))continue;l||(e.globalAlpha=c);const m=d;e.translate(0,m),e.scale(1,-1),e.translate(0,-m),e.drawImage(t,0|_,0|d,g,o),e.translate(0,m),e.scale(1,-1),e.translate(0,-m)}e.setImageSmoothingEnabled(d)}_set_data(e){this._set_width_heigh_data();for(let t=0,i=this.image.length;t({image:[d.NDArraySpec,{field:\"image\"}],dw:[d.DistanceSpec,{field:\"dw\"}],dh:[d.DistanceSpec,{field:\"dh\"}],global_alpha:[d.NumberSpec,{value:1}],dilate:[e,!1]})))},\n", + " function _(e,a,t,r,_){var n;r();const s=e(280),m=e(8);class i extends s.ImageBaseView{_flat_img_to_buf8(e){let a;return a=(0,m.isArray)(e)?new Uint32Array(e):e,new Uint8ClampedArray(a.buffer)}}t.ImageRGBAView=i,i.__name__=\"ImageRGBAView\";class g extends s.ImageBase{constructor(e){super(e)}}t.ImageRGBA=g,n=g,g.__name__=\"ImageRGBA\",n.prototype.default_view=i},\n", + " function _(e,t,s,r,a){r();const i=e(1);var n;const o=e(178),c=e(24),_=e(20),h=(0,i.__importStar)(e(18)),l=e(12),d=e(136);class m extends o.XYGlyphView{constructor(){super(...arguments),this._images_rendered=!1,this._set_data_iteration=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.global_alpha.change,(()=>this.renderer.request_render()))}_index_data(e){const{data_size:t}=this;for(let s=0;s{this._set_data_iteration==r&&(this.image[a]=e,this.renderer.request_render())},attempts:t+1,timeout:s})}const a=\"data\"==this.model.properties.w.units,i=\"data\"==this.model.properties.h.units,n=this._x.length,o=new c.ScreenArray(a?2*n:n),_=new c.ScreenArray(i?2*n:n),{anchor:h}=this.model;function m(e,t){switch(h){case\"top_left\":case\"bottom_left\":case\"left\":case\"center_left\":return[e,e+t];case\"top\":case\"top_center\":case\"bottom\":case\"bottom_center\":case\"center\":case\"center_center\":return[e-t/2,e+t/2];case\"top_right\":case\"bottom_right\":case\"right\":case\"center_right\":return[e-t,e]}}function g(e,t){switch(h){case\"top_left\":case\"top\":case\"top_center\":case\"top_right\":return[e,e-t];case\"bottom_left\":case\"bottom\":case\"bottom_center\":case\"bottom_right\":return[e+t,e];case\"left\":case\"center_left\":case\"center\":case\"center_center\":case\"right\":case\"center_right\":return[e+t/2,e-t/2]}}if(a)for(let e=0;e({url:[h.StringSpec,{field:\"url\"}],anchor:[_.Anchor,\"top_left\"],global_alpha:[h.NumberSpec,{value:1}],angle:[h.AngleSpec,0],w:[h.NullDistanceSpec,null],h:[h.NullDistanceSpec,null],dilate:[e,!1],retry_attempts:[t,0],retry_timeout:[t,0]})))},\n", + " function _(e,t,s,i,n){i();const o=e(1);var r;const l=e(78),_=e(48),c=(0,o.__importStar)(e(185)),h=(0,o.__importStar)(e(18)),a=e(12),d=e(13),x=e(179),y=e(184),g=e(72);class p extends x.GlyphView{_project_data(){l.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s0&&o.set(e,s)}return new g.Selection({indices:[...o.keys()],multiline_indices:(0,d.to_object)(o)})}get_interpolation_hit(e,t,s){const i=this._xs.get(e),n=this._ys.get(e),o=i[t],r=n[t],l=i[t+1],_=n[t+1];return(0,y.line_interpolation)(this.renderer,s,o,r,l,_)}draw_legend_for_index(e,t,s){(0,y.generic_line_vector_legend)(this.visuals,e,t,s)}scenterxy(){throw new Error(`${this}.scenterxy() is not implemented`)}}s.MultiLineView=p,p.__name__=\"MultiLineView\";class u extends x.Glyph{constructor(e){super(e)}}s.MultiLine=u,r=u,u.__name__=\"MultiLine\",r.prototype.default_view=p,r.define((({})=>({xs:[h.XCoordinateSeqSpec,{field:\"xs\"}],ys:[h.YCoordinateSeqSpec,{field:\"ys\"}]}))),r.mixins(_.LineVector)},\n", + " function _(t,e,s,n,i){n();const o=t(1);var r;const l=t(181),h=t(179),a=t(184),_=t(12),c=t(12),d=t(48),x=(0,o.__importStar)(t(185)),y=(0,o.__importStar)(t(18)),f=t(72),g=t(11);class p extends h.GlyphView{_project_data(){}_index_data(t){const{min:e,max:s}=Math,{data_size:n}=this;for(let i=0;i1&&c.length>1)for(let s=1,n=i.length;s1){let r=!1;for(let t=1;t({xs:[y.XCoordinateSeqSeqSeqSpec,{field:\"xs\"}],ys:[y.YCoordinateSeqSeqSeqSpec,{field:\"ys\"}]}))),r.mixins([d.LineVector,d.FillVector,d.HatchVector])},\n", + " function _(a,e,l,s,_){var t;s();const i=a(274),n=a(12);class p extends i.EllipseOvalView{_map_data(){super._map_data(),(0,n.mul)(this.sw,.75)}}l.OvalView=p,p.__name__=\"OvalView\";class v extends i.EllipseOval{constructor(a){super(a)}}l.Oval=v,t=v,v.__name__=\"Oval\",t.prototype.default_view=p},\n", + " function _(e,t,s,i,n){i();const r=e(1);var a;const o=e(179),c=e(184),_=e(12),h=e(48),l=(0,r.__importStar)(e(185)),d=(0,r.__importStar)(e(18)),y=e(72),p=e(11),x=e(78);class f extends o.GlyphView{_project_data(){x.inplace.project_xy(this._xs.array,this._ys.array)}_index_data(e){const{data_size:t}=this;for(let s=0;s({xs:[d.XCoordinateSeqSpec,{field:\"xs\"}],ys:[d.YCoordinateSeqSpec,{field:\"ys\"}]}))),a.mixins([h.LineVector,h.FillVector,h.HatchVector])},\n", + " function _(t,e,i,o,r){o();const s=t(1);var a;const n=t(277),l=(0,s.__importStar)(t(18));class _ extends n.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:i}=await Promise.resolve().then((()=>(0,s.__importStar)(t(427))));this.glglyph=new i(e.regl_wrapper,this)}}scenterxy(t){return[this.sleft[t]/2+this.sright[t]/2,this.stop[t]/2+this.sbottom[t]/2]}_lrtb(t){return[this._left[t],this._right[t],this._top[t],this._bottom[t]]}}i.QuadView=_,_.__name__=\"QuadView\";class p extends n.Box{constructor(t){super(t)}}i.Quad=p,a=p,p.__name__=\"Quad\",a.prototype.default_view=_,a.define((({})=>({right:[l.XCoordinateSpec,{field:\"right\"}],bottom:[l.YCoordinateSpec,{field:\"bottom\"}],left:[l.XCoordinateSpec,{field:\"left\"}],top:[l.YCoordinateSpec,{field:\"top\"}]})))},\n", + " function _(e,t,i,n,s){n();const c=e(1);var o;const r=e(48),a=e(78),_=e(179),d=e(184),l=(0,c.__importStar)(e(18));function x(e,t,i){if(t==(e+i)/2)return[e,i];{const n=(e-t)/(e-2*t+i),s=e*(1-n)**2+2*t*(1-n)*n+i*n**2;return[Math.min(e,i,s),Math.max(e,i,s)]}}class y extends _.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{_x0:t,_x1:i,_y0:n,_y1:s,_cx:c,_cy:o,data_size:r}=this;for(let a=0;a({x0:[l.XCoordinateSpec,{field:\"x0\"}],y0:[l.YCoordinateSpec,{field:\"y0\"}],x1:[l.XCoordinateSpec,{field:\"x1\"}],y1:[l.YCoordinateSpec,{field:\"y1\"}],cx:[l.XCoordinateSpec,{field:\"cx\"}],cy:[l.YCoordinateSpec,{field:\"cy\"}]}))),o.mixins(r.LineVector)},\n", + " function _(e,t,s,i,n){i();const l=e(1);var a;const r=e(178),o=e(184),h=e(48),_=e(24),c=(0,l.__importStar)(e(18));class g extends r.XYGlyphView{_map_data(){\"data\"==this.model.properties.length.units?this.slength=this.sdist(this.renderer.xscale,this._x,this.length):this.slength=(0,_.to_screen)(this.length);const{width:e,height:t}=this.renderer.plot_view.frame.bbox,s=2*(e+t),{slength:i}=this;for(let e=0,t=i.length;e({length:[c.DistanceSpec,0],angle:[c.AngleSpec,0]})))},\n", + " function _(t,e,s,i,r){var n,h=this&&this.__createBinding||(Object.create?function(t,e,s,i){void 0===i&&(i=s),Object.defineProperty(t,i,{enumerable:!0,get:function(){return e[s]}})}:function(t,e,s,i){void 0===i&&(i=s),t[i]=e[s]}),a=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var s in t)\"default\"!==s&&Object.prototype.hasOwnProperty.call(t,s)&&h(e,t,s);return a(e,t),e};i();const o=t(275),c=t(184),_=t(24),d=t(12),f=t(72);class y extends o.CenterRotatableView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null==e?void 0:e.regl_wrapper.has_webgl){const{RectGL:s}=await Promise.resolve().then((()=>l(t(429))));this.glglyph=new s(e.regl_wrapper,this)}}_map_data(){if(\"data\"==this.model.properties.width.units)[this.sw,this.sx0]=this._map_dist_corner_for_data_side_length(this._x,this.width,this.renderer.xscale);else{this.sw=(0,_.to_screen)(this.width);const t=this.sx.length;this.sx0=new _.ScreenArray(t);for(let e=0;e({dilate:[t,!1]})))},\n", + " function _(e,t,r,a,s){a();const i=e(1);var n;const l=e(292),_=e(293),c=(0,i.__importStar)(e(18));class o extends l.MarkerView{async lazy_initialize(){await super.lazy_initialize();const{webgl:t}=this.renderer.plot_view.canvas_view;if(null!=t&&t.regl_wrapper.has_webgl){const{MultiMarkerGL:r}=await Promise.resolve().then((()=>(0,i.__importStar)(e(428))));this.glglyph=new r(t.regl_wrapper,this)}}_render(e,t,r){const{sx:a,sy:s,size:i,angle:n,marker:l}=null!=r?r:this;for(const r of t){const t=a[r],c=s[r],o=i.get(r),g=n.get(r),w=l.get(r);if(!isFinite(t+c+o+g)||null==w)continue;const p=o/2;e.beginPath(),e.translate(t,c),g&&e.rotate(g),_.marker_funcs[w](e,r,p,this.visuals),g&&e.rotate(-g),e.translate(-t,-c)}}draw_legend_for_index(e,{x0:t,x1:r,y0:a,y1:s},i){const n=i+1,l=this.marker.get(i),_=Object.assign(Object.assign({},this._get_legend_args({x0:t,x1:r,y0:a,y1:s},i)),{marker:new c.UniformScalar(l,n)});this._render(e,[i],_)}}r.ScatterView=o,o.__name__=\"ScatterView\";class g extends l.Marker{constructor(e){super(e)}}r.Scatter=g,n=g,g.__name__=\"Scatter\",n.prototype.default_view=o,n.define((()=>({marker:[c.MarkerSpec,{value:\"circle\"}]})))},\n", + " function _(e,t,s,n,i){n();const r=e(1);var a;const c=e(178),o=e(48),_=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),l=e(9),x=e(72);class d extends c.XYGlyphView{_render(e,t,s){const{sx:n,sy:i,size:r,angle:a}=null!=s?s:this;for(const s of t){const t=n[s],c=i[s],o=r.get(s),_=a.get(s);if(!isFinite(t+c+o+_))continue;const h=o/2;e.beginPath(),e.translate(t,c),_&&e.rotate(_),this._render_one(e,s,h,this.visuals),_&&e.rotate(-_),e.translate(-t,-c)}}_mask_data(){const{x_target:e,y_target:t}=this.renderer.plot_view.frame,s=e.widen(this.max_size).map((e=>this.renderer.xscale.invert(e))),n=t.widen(this.max_size).map((e=>this.renderer.yscale.invert(e)));return this.index.indices({x0:s.start,x1:s.end,y0:n.start,y1:n.end})}_hit_point(e){const{sx:t,sy:s}=e,{max_size:n}=this,{hit_dilation:i}=this.model,r=t-n*i,a=t+n*i,[c,o]=this.renderer.xscale.r_invert(r,a),_=s-n*i,h=s+n*i,[l,d]=this.renderer.yscale.r_invert(_,h),y=this.index.indices({x0:c,x1:o,y0:l,y1:d}),g=[];for(const e of y){const n=this.size.get(e)/2*i;Math.abs(this.sx[e]-t)<=n&&Math.abs(this.sy[e]-s)<=n&&g.push(e)}return new x.Selection({indices:g})}_hit_span(e){const{sx:t,sy:s}=e,n=this.bounds(),i=this.max_size/2;let r,a,c,o;if(\"h\"==e.direction){c=n.y0,o=n.y1;const e=t-i,s=t+i;[r,a]=this.renderer.xscale.r_invert(e,s)}else{r=n.x0,a=n.x1;const e=s-i,t=s+i;[c,o]=this.renderer.yscale.r_invert(e,t)}const _=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_rect(e){const{sx0:t,sx1:s,sy0:n,sy1:i}=e,[r,a]=this.renderer.xscale.r_invert(t,s),[c,o]=this.renderer.yscale.r_invert(n,i),_=[...this.index.indices({x0:r,x1:a,y0:c,y1:o})];return new x.Selection({indices:_})}_hit_poly(e){const{sx:t,sy:s}=e,n=(0,l.range)(0,this.sx.length),i=[];for(let e=0,r=n.length;e({size:[h.ScreenSizeSpec,{value:4}],angle:[h.AngleSpec,0],hit_dilation:[e,1]})))},\n", + " function _(l,o,n,t,i){t();const e=Math.sqrt(3),a=Math.sqrt(5),c=(a+1)/4,p=Math.sqrt((5-a)/8),r=(a-1)/4,h=Math.sqrt((5+a)/8);function u(l,o){l.rotate(Math.PI/4),s(l,o),l.rotate(-Math.PI/4)}function f(l,o){const n=o*e,t=n/3;l.moveTo(-n/2,-t),l.lineTo(0,0),l.lineTo(n/2,-t),l.lineTo(0,0),l.lineTo(0,o)}function s(l,o){l.moveTo(0,o),l.lineTo(0,-o),l.moveTo(-o,0),l.lineTo(o,0)}function T(l,o){l.moveTo(0,o),l.lineTo(o/1.5,0),l.lineTo(0,-o),l.lineTo(-o/1.5,0),l.closePath()}function y(l,o){const n=o*e,t=n/3;l.moveTo(-o,t),l.lineTo(o,t),l.lineTo(0,t-n),l.closePath()}function v(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function d(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function _(l,o,n,t){!function(l,o){l.beginPath(),l.arc(0,0,o/4,0,2*Math.PI,!1),l.closePath()}(l,n),t.line.set_vectorize(l,o),l.fillStyle=l.strokeStyle,l.fill()}function P(l,o,n,t){!function(l,o){const n=o/2,t=e*n;l.moveTo(o,0),l.lineTo(n,-t),l.lineTo(-n,-t),l.lineTo(-o,0),l.lineTo(-n,t),l.lineTo(n,t),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function m(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function q(l,o,n,t){!function(l,o){const n=Math.sqrt(5-2*a)*o;l.moveTo(0,-o),l.lineTo(n*r,n*h-o),l.lineTo(n*(1+r),n*h-o),l.lineTo(n*(1+r-c),n*(h+p)-o),l.lineTo(n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(0,2*n*h-o),l.lineTo(-n*(1+2*r-c),n*(2*h+p)-o),l.lineTo(-n*(1+r-c),n*(h+p)-o),l.lineTo(-n*(1+r),n*h-o),l.lineTo(-n*r,n*h-o),l.closePath()}(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}function M(l,o,n,t){y(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)}n.marker_funcs={asterisk:function(l,o,n,t){s(l,n),u(l,n),t.line.apply(l,o)},circle:v,circle_cross:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},circle_dot:function(l,o,n,t){v(l,o,n,t),_(l,o,n,t)},circle_y:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),f(l,n),l.stroke())},circle_x:function(l,o,n,t){l.arc(0,0,n,0,2*Math.PI,!1),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),u(l,n),l.stroke())},cross:function(l,o,n,t){s(l,n),t.line.apply(l,o)},diamond:d,diamond_dot:function(l,o,n,t){d(l,o,n,t),_(l,o,n,t)},diamond_cross:function(l,o,n,t){T(l,n),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(0,n),l.lineTo(0,-n),l.moveTo(-n/1.5,0),l.lineTo(n/1.5,0),l.stroke())},dot:_,hex:P,hex_dot:function(l,o,n,t){P(l,o,n,t),_(l,o,n,t)},inverted_triangle:function(l,o,n,t){l.rotate(Math.PI),y(l,n),l.rotate(-Math.PI),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},plus:function(l,o,n,t){const i=3*n/8,e=[i,i,n,n,i,i,-i,-i,-n,-n,-i,-i],a=[n,i,i,-i,-i,-n,-n,-i,-i,i,i,n];l.beginPath();for(let o=0;o<12;o++)l.lineTo(e[o],a[o]);l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square:m,square_cross:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),s(l,n),l.stroke())},square_dot:function(l,o,n,t){m(l,o,n,t),_(l,o,n,t)},square_pin:function(l,o,n,t){const i=3*n/8;l.moveTo(-n,-n),l.quadraticCurveTo(0,-i,n,-n),l.quadraticCurveTo(i,0,n,n),l.quadraticCurveTo(0,i,-n,n),l.quadraticCurveTo(-i,0,-n,-n),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},square_x:function(l,o,n,t){const i=2*n;l.rect(-n,-n,i,i),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.doit&&(t.line.set_vectorize(l,o),l.moveTo(-n,n),l.lineTo(n,-n),l.moveTo(-n,-n),l.lineTo(n,n),l.stroke())},star:q,star_dot:function(l,o,n,t){q(l,o,n,t),_(l,o,n,t)},triangle:M,triangle_dot:function(l,o,n,t){M(l,o,n,t),_(l,o,n,t)},triangle_pin:function(l,o,n,t){const i=n*e,a=i/3,c=3*a/8;l.moveTo(-n,a),l.quadraticCurveTo(0,c,n,a),l.quadraticCurveTo(e*c/2,c/2,0,a-i),l.quadraticCurveTo(-e*c/2,c/2,-n,a),l.closePath(),t.fill.apply(l,o),t.hatch.apply(l,o),t.line.apply(l,o)},dash:function(l,o,n,t){!function(l,o){l.moveTo(-o,0),l.lineTo(o,0)}(l,n),t.line.apply(l,o)},x:function(l,o,n,t){u(l,n),t.line.apply(l,o)},y:function(l,o,n,t){f(l,n),t.line.apply(l,o)}}},\n", + " function _(e,t,s,i,n){i();const r=e(1);var o;const _=(0,r.__importStar)(e(185)),h=(0,r.__importStar)(e(18)),c=e(48),a=e(78),d=e(179),x=e(184),l=e(72);class y extends d.GlyphView{_project_data(){a.inplace.project_xy(this._x0,this._y0),a.inplace.project_xy(this._x1,this._y1)}_index_data(e){const{min:t,max:s}=Math,{_x0:i,_x1:n,_y0:r,_y1:o,data_size:_}=this;for(let h=0;h<_;h++){const _=i[h],c=n[h],a=r[h],d=o[h];e.add_rect(t(_,c),t(a,d),s(_,c),s(a,d))}}_render(e,t,s){if(this.visuals.line.doit){const{sx0:i,sy0:n,sx1:r,sy1:o}=null!=s?s:this;for(const s of t){const t=i[s],_=n[s],h=r[s],c=o[s];isFinite(t+_+h+c)&&(e.beginPath(),e.moveTo(t,_),e.lineTo(h,c),this.visuals.line.set_vectorize(e,s),e.stroke())}}}_hit_point(e){const{sx:t,sy:s}=e,i={x:t,y:s},[n,r]=this.renderer.xscale.r_invert(t-2,t+2),[o,h]=this.renderer.yscale.r_invert(s-2,s+2),c=this.index.indices({x0:n,y0:o,x1:r,y1:h}),a=[];for(const e of c){const t=Math.max(2,this.line_width.get(e)/2)**2,s={x:this.sx0[e],y:this.sy0[e]},n={x:this.sx1[e],y:this.sy1[e]};_.dist_to_segment_squared(i,s,n)({x0:[h.XCoordinateSpec,{field:\"x0\"}],y0:[h.YCoordinateSpec,{field:\"y0\"}],x1:[h.XCoordinateSpec,{field:\"x1\"}],y1:[h.YCoordinateSpec,{field:\"y1\"}]}))),o.mixins(c.LineVector)},\n", + " function _(t,e,s,i,n){i();const o=t(1);var _;const l=t(178),a=(0,o.__importStar)(t(48)),c=t(296);class r extends l.XYGlyphView{_set_data(){const{tension:t,closed:e}=this.model;[this._xt,this._yt]=(0,c.catmullrom_spline)(this._x,this._y,20,t,e)}_map_data(){const{x_scale:t,y_scale:e}=this.renderer.coordinates;this.sxt=t.v_compute(this._xt),this.syt=e.v_compute(this._yt)}_render(t,e,s){const{sxt:i,syt:n}=null!=s?s:this;let o=!0;t.beginPath();const _=i.length;for(let e=0;e<_;e++){const s=i[e],_=n[e];isFinite(s+_)?o?(t.moveTo(s,_),o=!1):t.lineTo(s,_):o=!0}this.visuals.line.set_value(t),t.stroke()}}s.SplineView=r,r.__name__=\"SplineView\";class h extends l.XYGlyph{constructor(t){super(t)}}s.Spline=h,_=h,h.__name__=\"Spline\",_.prototype.default_view=r,_.mixins(a.LineScalar),_.define((({Boolean:t,Number:e})=>({tension:[e,.5],closed:[t,!1]})))},\n", + " function _(n,t,e,o,s){o();const c=n(24),l=n(11);e.catmullrom_spline=function(n,t,e=10,o=.5,s=!1){(0,l.assert)(n.length==t.length);const r=n.length,f=s?r+1:r,w=(0,c.infer_type)(n,t),i=new w(f+2),u=new w(f+2);i.set(n,1),u.set(t,1),s?(i[0]=n[r-1],u[0]=t[r-1],i[f]=n[0],u[f]=t[0],i[f+1]=n[1],u[f+1]=t[1]):(i[0]=n[0],u[0]=t[0],i[f+1]=n[r-1],u[f+1]=t[r-1]);const g=new w(4*(e+1));for(let n=0,t=0;n<=e;n++){const o=n/e,s=o**2,c=o*s;g[t++]=2*c-3*s+1,g[t++]=-2*c+3*s,g[t++]=c-2*s+o,g[t++]=c-s}const h=new w((f-1)*(e+1)),_=new w((f-1)*(e+1));for(let n=1,t=0;n1&&(e.stroke(),o=!1)}o?(e.lineTo(t,r),e.lineTo(a,c)):(e.beginPath(),e.moveTo(s[n],i[n]),o=!0),l=n}e.lineTo(s[a-1],i[a-1]),e.stroke()}}draw_legend_for_index(e,t,n){(0,r.generic_line_scalar_legend)(this.visuals,e,t)}}n.StepView=f,f.__name__=\"StepView\";class u extends a.XYGlyph{constructor(e){super(e)}}n.Step=u,l=u,u.__name__=\"Step\",l.prototype.default_view=f,l.mixins(c.LineScalar),l.define((()=>({mode:[_.StepMode,\"before\"]})))},\n", + " function _(t,e,s,i,n){i();const o=t(1);var _;const h=t(178),l=t(48),r=(0,o.__importStar)(t(185)),a=(0,o.__importStar)(t(18)),c=t(121),x=t(11),u=t(72);class f extends h.XYGlyphView{_rotate_point(t,e,s,i,n){return[(t-s)*Math.cos(n)-(e-i)*Math.sin(n)+s,(t-s)*Math.sin(n)+(e-i)*Math.cos(n)+i]}_text_bounds(t,e,s,i){return[[t,t+s,t+s,t,t],[e,e,e-i,e-i,e]]}_render(t,e,s){const{sx:i,sy:n,x_offset:o,y_offset:_,angle:h,text:l}=null!=s?s:this;this._sys=[],this._sxs=[];for(const s of e){const e=this._sxs[s]=[],r=this._sys[s]=[],a=i[s],x=n[s],u=o.get(s),f=_.get(s),p=h.get(s),g=l.get(s);if(isFinite(a+x+u+f+p)&&null!=g&&this.visuals.text.doit){const i=`${g}`;t.save(),t.translate(a+u,x+f),t.rotate(p),this.visuals.text.set_vectorize(t,s);const n=this.visuals.text.font_value(s),{height:o}=(0,c.font_metrics)(n),_=this.text_line_height.get(s)*o;if(-1==i.indexOf(\"\\n\")){t.fillText(i,0,0);const s=a+u,n=x+f,o=t.measureText(i).width,[h,l]=this._text_bounds(s,n,o,_);e.push(h),r.push(l)}else{const n=i.split(\"\\n\"),o=_*n.length,h=this.text_baseline.get(s);let l;switch(h){case\"top\":l=0;break;case\"middle\":l=-o/2+_/2;break;case\"bottom\":l=-o+_;break;default:l=0,console.warn(`'${h}' baseline not supported with multi line text`)}for(const s of n){t.fillText(s,0,l);const i=a+u,n=l+x+f,o=t.measureText(s).width,[h,c]=this._text_bounds(i,n,o,_);e.push(h),r.push(c),l+=_}}t.restore()}}}_hit_point(t){const{sx:e,sy:s}=t,i=[];for(let t=0;t({text:[a.NullStringSpec,{field:\"text\"}],angle:[a.AngleSpec,0],x_offset:[a.NumberSpec,0],y_offset:[a.NumberSpec,0]})))},\n", + " function _(t,e,s,i,r){i();const h=t(1);var o;const a=t(277),n=t(24),_=(0,h.__importStar)(t(18));class l extends a.BoxView{async lazy_initialize(){await super.lazy_initialize();const{webgl:e}=this.renderer.plot_view.canvas_view;if(null!=e&&e.regl_wrapper.has_webgl){const{LRTBGL:s}=await Promise.resolve().then((()=>(0,h.__importStar)(t(427))));this.glglyph=new s(e.regl_wrapper,this)}}scenterxy(t){return[this.sx[t],(this.stop[t]+this.sbottom[t])/2]}_lrtb(t){const e=this.width.get(t)/2,s=this._x[t],i=this._top[t],r=this._bottom[t];return[s-e,s+e,Math.max(i,r),Math.min(i,r)]}_map_data(){this.sx=this.renderer.xscale.v_compute(this._x),this.sw=this.sdist(this.renderer.xscale,this._x,this.width,\"center\"),this.stop=this.renderer.yscale.v_compute(this._top),this.sbottom=this.renderer.yscale.v_compute(this._bottom);const t=this.sx.length;this.sleft=new n.ScreenArray(t),this.sright=new n.ScreenArray(t);for(let e=0;e({x:[_.XCoordinateSpec,{field:\"x\"}],bottom:[_.YCoordinateSpec,{value:0}],width:[_.NumberSpec,{value:1}],top:[_.YCoordinateSpec,{field:\"top\"}]})))},\n", + " function _(e,s,t,i,n){i();const r=e(1);var a;const c=e(178),d=e(184),l=e(48),h=e(24),o=e(20),_=(0,r.__importStar)(e(18)),u=e(10),g=e(72),x=e(12);class p extends c.XYGlyphView{_map_data(){\"data\"==this.model.properties.radius.units?this.sradius=this.sdist(this.renderer.xscale,this._x,this.radius):this.sradius=(0,h.to_screen)(this.radius),this.max_sradius=(0,x.max)(this.sradius)}_render(e,s,t){const{sx:i,sy:n,sradius:r,start_angle:a,end_angle:c}=null!=t?t:this,d=\"anticlock\"==this.model.direction;for(const t of s){const s=i[t],l=n[t],h=r[t],o=a.get(t),_=c.get(t);isFinite(s+l+h+o+_)&&(e.beginPath(),e.arc(s,l,h,o,_,d),e.lineTo(s,l),e.closePath(),this.visuals.fill.apply(e,t),this.visuals.hatch.apply(e,t),this.visuals.line.apply(e,t))}}_hit_point(e){let s,t,i,n,r;const{sx:a,sy:c}=e,d=this.renderer.xscale.invert(a),l=this.renderer.yscale.invert(c);t=a-this.max_sradius,i=a+this.max_sradius;const[h,o]=this.renderer.xscale.r_invert(t,i);n=c-this.max_sradius,r=c+this.max_sradius;const[_,x]=this.renderer.yscale.r_invert(n,r),p=[];for(const e of this.index.indices({x0:h,x1:o,y0:_,y1:x})){const a=this.sradius[e]**2;[t,i]=this.renderer.xscale.r_compute(d,this._x[e]),[n,r]=this.renderer.yscale.r_compute(l,this._y[e]),s=(t-i)**2+(n-r)**2,s<=a&&p.push(e)}const y=\"anticlock\"==this.model.direction,m=[];for(const e of p){const s=Math.atan2(c-this.sy[e],a-this.sx[e]);(0,u.angle_between)(-s,-this.start_angle.get(e),-this.end_angle.get(e),y)&&m.push(e)}return new g.Selection({indices:m})}draw_legend_for_index(e,s,t){(0,d.generic_area_vector_legend)(this.visuals,e,s,t)}scenterxy(e){const s=this.sradius[e]/2,t=(this.start_angle.get(e)+this.end_angle.get(e))/2;return[this.sx[e]+s*Math.cos(t),this.sy[e]+s*Math.sin(t)]}}t.WedgeView=p,p.__name__=\"WedgeView\";class y extends c.XYGlyph{constructor(e){super(e)}}t.Wedge=y,a=y,y.__name__=\"Wedge\",a.prototype.default_view=p,a.mixins([l.LineVector,l.FillVector,l.HatchVector]),a.define((({})=>({direction:[o.Direction,\"anticlock\"],radius:[_.DistanceSpec,{field:\"radius\"}],start_angle:[_.AngleSpec,{field:\"start_angle\"}],end_angle:[_.AngleSpec,{field:\"end_angle\"}]})))},\n", + " function _(t,_,r,o,a){o();const e=t(1);(0,e.__exportStar)(t(302),r),(0,e.__exportStar)(t(303),r),(0,e.__exportStar)(t(304),r)},\n", + " function _(e,t,d,n,s){n();const o=e(53),r=e(12),_=e(9),i=e(72);class c extends o.Model{constructor(e){super(e)}_hit_test(e,t,d){if(!t.model.visible)return null;const n=d.glyph.hit_test(e);return null==n?null:d.model.view.convert_selection_from_subset(n)}}d.GraphHitTestPolicy=c,c.__name__=\"GraphHitTestPolicy\";class a extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.edge_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;return s.update(e,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{edge_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.edge_view.model);return r.update(e,n,s),d.edge_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!r.is_empty()}}d.EdgesOnly=a,a.__name__=\"EdgesOnly\";class l extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}do_selection(e,t,d,n){if(null==e)return!1;const s=t.node_renderer.data_source.selected;return s.update(e,d,n),t.node_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const{node_renderer:o}=d.model,r=o.get_selection_manager().get_or_create_inspector(d.node_view.model);return r.update(e,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.node_view.model.data_source.inspect.emit([d.node_view.model,{geometry:t}]),!r.is_empty()}}d.NodesOnly=l,l.__name__=\"NodesOnly\";class u extends c{constructor(e){super(e)}hit_test(e,t){return this._hit_test(e,t,t.node_view)}get_linked_edges(e,t,d){let n=[];\"selection\"==d?n=e.selected.indices.map((t=>e.data.index[t])):\"inspection\"==d&&(n=e.inspected.indices.map((t=>e.data.index[t])));const s=[];for(let e=0;e(0,r.indexOf)(e.data.index,t)));return new i.Selection({indices:o})}do_selection(e,t,d,n){if(null==e)return!1;const s=t.edge_renderer.data_source.selected;s.update(e,d,n);const o=t.node_renderer.data_source.selected,r=this.get_linked_nodes(t.node_renderer.data_source,t.edge_renderer.data_source,\"selection\");return o.update(r,d,n),t.edge_renderer.data_source._select.emit(),!s.is_empty()}do_inspection(e,t,d,n,s){if(null==e)return!1;const o=d.edge_view.model.data_source.selection_manager.get_or_create_inspector(d.edge_view.model);o.update(e,n,s),d.edge_view.model.data_source.setv({inspected:o},{silent:!0});const r=d.node_view.model.data_source.selection_manager.get_or_create_inspector(d.node_view.model),_=this.get_linked_nodes(d.node_view.model.data_source,d.edge_view.model.data_source,\"inspection\");return r.update(_,n,s),d.node_view.model.data_source.setv({inspected:r},{silent:!0}),d.edge_view.model.data_source.inspect.emit([d.edge_view.model,{geometry:t}]),!o.is_empty()}}d.EdgesAndLinkedNodes=m,m.__name__=\"EdgesAndLinkedNodes\"},\n", + " function _(e,o,t,r,n){var s;r();const a=e(53),d=e(260);class _ extends a.Model{constructor(e){super(e)}get node_coordinates(){return new u({layout:this})}get edge_coordinates(){return new i({layout:this})}}t.LayoutProvider=_,_.__name__=\"LayoutProvider\";class c extends d.CoordinateTransform{constructor(e){super(e)}}t.GraphCoordinates=c,s=c,c.__name__=\"GraphCoordinates\",s.define((({Ref:e})=>({layout:[e(_)]})));class u extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_node_coordinates(e);return{x:o,y:t}}}t.NodeCoordinates=u,u.__name__=\"NodeCoordinates\";class i extends c{constructor(e){super(e)}_v_compute(e){const[o,t]=this.layout.get_edge_coordinates(e);return{x:o,y:t}}}t.EdgeCoordinates=i,i.__name__=\"EdgeCoordinates\"},\n", + " function _(t,a,l,e,n){var o;e();const r=t(303);class u extends r.LayoutProvider{constructor(t){super(t)}get_node_coordinates(t){var a;const l=null!==(a=t.data.index)&&void 0!==a?a:[],e=l.length,n=new Float64Array(e),o=new Float64Array(e);for(let t=0;t({graph_layout:[l(a(t,t)),{}]})))},\n", + " function _(i,d,n,r,G){r(),G(\"Grid\",i(306).Grid)},\n", + " function _(i,e,n,s,t){s();const r=i(1);var o;const d=i(127),_=i(129),a=i(130),l=(0,r.__importStar)(i(48)),h=i(8);class c extends _.GuideRendererView{_render(){const i=this.layer.ctx;i.save(),this._draw_regions(i),this._draw_minor_grids(i),this._draw_grids(i),i.restore()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render()))}_draw_regions(i){if(!this.visuals.band_fill.doit&&!this.visuals.band_hatch.doit)return;const[e,n]=this.grid_coords(\"major\",!1);for(let s=0;sn[1]&&(t=n[1]);else{[s,t]=n;for(const i of this.plot_view.axis_views)i.dimension==this.model.dimension&&i.model.x_range_name==this.model.x_range_name&&i.model.y_range_name==this.model.y_range_name&&([s,t]=i.computed_bounds)}return[s,t]}grid_coords(i,e=!0){const n=this.model.dimension,s=(n+1)%2,[t,r]=this.ranges();let[o,d]=this.computed_bounds();[o,d]=[Math.min(o,d),Math.max(o,d)];const _=[[],[]],a=this.model.get_ticker();if(null==a)return _;const l=a.get_ticks(o,d,t,r.min)[i],h=t.min,c=t.max,u=r.min,m=r.max;e||(l[0]!=h&&l.splice(0,0,h),l[l.length-1]!=c&&l.push(c));for(let i=0;i({bounds:[r(t(i,i),e),\"auto\"],dimension:[n(0,1),0],axis:[o(s(d.Axis)),null],ticker:[o(s(a.Ticker)),null]}))),o.override({level:\"underlay\",band_fill_color:null,band_fill_alpha:0,grid_line_color:\"#e5e5e5\",minor_grid_line_color:null})},\n", + " function _(o,a,x,B,e){B(),e(\"Box\",o(308).Box),e(\"Column\",o(310).Column),e(\"GridBox\",o(311).GridBox),e(\"HTMLBox\",o(312).HTMLBox),e(\"LayoutDOM\",o(309).LayoutDOM),e(\"Panel\",o(313).Panel),e(\"Row\",o(314).Row),e(\"Spacer\",o(315).Spacer),e(\"Tabs\",o(316).Tabs),e(\"WidgetBox\",o(319).WidgetBox)},\n", + " function _(e,n,s,t,c){var i;t();const o=e(309);class r extends o.LayoutDOMView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.children.change,(()=>this.rebuild()))}get child_models(){return this.model.children}}s.BoxView=r,r.__name__=\"BoxView\";class a extends o.LayoutDOM{constructor(e){super(e)}}s.Box=a,i=a,a.__name__=\"Box\",i.define((({Number:e,Array:n,Ref:s})=>({children:[n(s(o.LayoutDOM)),[]],spacing:[e,0]})))},\n", + " function _(t,i,e,s,o){var l;s();const n=t(53),h=t(20),a=t(43),r=t(19),_=t(8),c=t(22),u=t(121),d=t(113),p=t(226),m=t(207),g=t(44),w=t(235);class f extends p.DOMView{constructor(){super(...arguments),this._offset_parent=null,this._viewport={}}get is_layout_root(){return this.is_root||!(this.parent instanceof f)}get base_font_size(){const t=getComputedStyle(this.el).fontSize,i=(0,u.parse_css_font_size)(t);if(null!=i){const{value:t,unit:e}=i;if(\"px\"==e)return t}return null}initialize(){super.initialize(),this.el.style.position=this.is_layout_root?\"relative\":\"absolute\",this._child_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await this.build_child_views()}remove(){for(const t of this.child_views)t.remove();this._child_views.clear(),super.remove()}connect_signals(){super.connect_signals(),this.is_layout_root&&(this._on_resize=()=>this.resize_layout(),window.addEventListener(\"resize\",this._on_resize),this._parent_observer=setInterval((()=>{const t=this.el.offsetParent;this._offset_parent!=t&&(this._offset_parent=t,null!=t&&(this.compute_viewport(),this.invalidate_layout()))}),250));const t=this.model.properties;this.on_change([t.width,t.height,t.min_width,t.min_height,t.max_width,t.max_height,t.margin,t.width_policy,t.height_policy,t.sizing_mode,t.aspect_ratio,t.visible],(()=>this.invalidate_layout())),this.on_change([t.background,t.css_classes],(()=>this.invalidate_render()))}disconnect_signals(){null!=this._parent_observer&&clearTimeout(this._parent_observer),null!=this._on_resize&&window.removeEventListener(\"resize\",this._on_resize),super.disconnect_signals()}css_classes(){return super.css_classes().concat(this.model.css_classes)}get child_views(){return this.child_models.map((t=>this._child_views.get(t)))}async build_child_views(){await(0,d.build_views)(this._child_views,this.child_models,{parent:this})}render(){super.render(),(0,a.empty)(this.el);const{background:t}=this.model;this.el.style.backgroundColor=null!=t?(0,c.color2css)(t):\"\",(0,a.classes)(this.el).clear().add(...this.css_classes());for(const t of this.child_views)this.el.appendChild(t.el),t.render()}update_layout(){for(const t of this.child_views)t.update_layout();this._update_layout()}update_position(){this.el.style.display=this.model.visible?\"block\":\"none\";const t=this.is_layout_root?this.layout.sizing.margin:void 0;(0,a.position)(this.el,this.layout.bbox,t);for(const t of this.child_views)t.update_position()}after_layout(){for(const t of this.child_views)t.after_layout();this._has_finished=!0}compute_viewport(){this._viewport=this._viewport_size()}renderTo(t){t.appendChild(this.el),this._offset_parent=this.el.offsetParent,this.compute_viewport(),this.build(),this.notify_finished()}build(){if(!this.is_layout_root)throw new Error(`${this.toString()} is not a root layout`);return this.render(),this.update_layout(),this.compute_layout(),this}async rebuild(){await this.build_child_views(),this.invalidate_render()}compute_layout(){const t=Date.now();this.layout.compute(this._viewport),this.update_position(),this.after_layout(),r.logger.debug(`layout computed in ${Date.now()-t} ms`)}resize_layout(){this.root.compute_viewport(),this.root.compute_layout()}invalidate_layout(){this.root.update_layout(),this.root.compute_layout()}invalidate_render(){this.render(),this.invalidate_layout()}has_finished(){if(!super.has_finished())return!1;for(const t of this.child_views)if(!t.has_finished())return!1;return!0}_width_policy(){return null!=this.model.width?\"fixed\":\"fit\"}_height_policy(){return null!=this.model.height?\"fixed\":\"fit\"}box_sizing(){let{width_policy:t,height_policy:i,aspect_ratio:e}=this.model;\"auto\"==t&&(t=this._width_policy()),\"auto\"==i&&(i=this._height_policy());const{sizing_mode:s}=this.model;if(null!=s)if(\"fixed\"==s)t=i=\"fixed\";else if(\"stretch_both\"==s)t=i=\"max\";else if(\"stretch_width\"==s)t=\"max\";else if(\"stretch_height\"==s)i=\"max\";else switch(null==e&&(e=\"auto\"),s){case\"scale_width\":t=\"max\",i=\"min\";break;case\"scale_height\":t=\"min\",i=\"max\";break;case\"scale_both\":t=\"max\",i=\"max\"}const o={width_policy:t,height_policy:i},{min_width:l,min_height:n}=this.model;null!=l&&(o.min_width=l),null!=n&&(o.min_height=n);const{width:h,height:a}=this.model;null!=h&&(o.width=h),null!=a&&(o.height=a);const{max_width:r,max_height:c}=this.model;null!=r&&(o.max_width=r),null!=c&&(o.max_height=c),\"auto\"==e&&null!=h&&null!=a?o.aspect=h/a:(0,_.isNumber)(e)&&(o.aspect=e);const{margin:u}=this.model;if(null!=u)if((0,_.isNumber)(u))o.margin={top:u,right:u,bottom:u,left:u};else if(2==u.length){const[t,i]=u;o.margin={top:t,right:i,bottom:t,left:i}}else{const[t,i,e,s]=u;o.margin={top:t,right:i,bottom:e,left:s}}o.visible=this.model.visible;const{align:d}=this.model;return(0,_.isArray)(d)?[o.halign,o.valign]=d:o.halign=o.valign=d,o}_viewport_size(){return(0,a.undisplayed)(this.el,(()=>{let t=this.el;for(;t=t.parentElement;){if(t.classList.contains(g.root))continue;if(t==document.body){const{margin:{left:t,right:i,top:e,bottom:s}}=(0,a.extents)(document.body);return{width:Math.ceil(document.documentElement.clientWidth-t-i),height:Math.ceil(document.documentElement.clientHeight-e-s)}}const{padding:{left:i,right:e,top:s,bottom:o}}=(0,a.extents)(t),{width:l,height:n}=t.getBoundingClientRect(),h=Math.ceil(l-i-e),r=Math.ceil(n-s-o);if(h>0||r>0)return{width:h>0?h:void 0,height:r>0?r:void 0}}return{}}))}export(t,i=!0){const e=\"png\"==t?\"canvas\":\"svg\",s=new w.CanvasLayer(e,i),{width:o,height:l}=this.layout.bbox;s.resize(o,l);for(const e of this.child_views){const o=e.export(t,i),{x:l,y:n}=e.layout.bbox;s.ctx.drawImage(o.canvas,l,n)}return s}serializable_state(){return Object.assign(Object.assign({},super.serializable_state()),{bbox:this.layout.bbox.box,children:this.child_views.map((t=>t.serializable_state()))})}}e.LayoutDOMView=f,f.__name__=\"LayoutDOMView\";class y extends n.Model{constructor(t){super(t)}}e.LayoutDOM=y,l=y,y.__name__=\"LayoutDOM\",l.define((t=>{const{Boolean:i,Number:e,String:s,Auto:o,Color:l,Array:n,Tuple:a,Or:r,Null:_,Nullable:c}=t,u=a(e,e),d=a(e,e,e,e);return{width:[c(e),null],height:[c(e),null],min_width:[c(e),null],min_height:[c(e),null],max_width:[c(e),null],max_height:[c(e),null],margin:[c(r(e,u,d)),[0,0,0,0]],width_policy:[r(m.SizingPolicy,o),\"auto\"],height_policy:[r(m.SizingPolicy,o),\"auto\"],aspect_ratio:[r(e,o,_),null],sizing_mode:[c(h.SizingMode),null],visible:[i,!0],disabled:[i,!1],align:[r(h.Align,a(h.Align,h.Align)),\"start\"],background:[c(l),null],css_classes:[n(s),[]]}}))},\n", + " function _(o,s,t,i,e){var n;i();const a=o(308),l=o(209);class u extends a.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Column(o),this.layout.rows=this.model.rows,this.layout.spacing=[this.model.spacing,0],this.layout.set_sizing(this.box_sizing())}}t.ColumnView=u,u.__name__=\"ColumnView\";class _ extends a.Box{constructor(o){super(o)}}t.Column=_,n=_,_.__name__=\"Column\",n.prototype.default_view=u,n.define((({Any:o})=>({rows:[o,\"auto\"]})))},\n", + " function _(s,o,t,i,e){var n;i();const l=s(309),a=s(209);class r extends l.LayoutDOMView{connect_signals(){super.connect_signals();const{children:s,rows:o,cols:t,spacing:i}=this.model.properties;this.on_change([s,o,t,i],(()=>this.rebuild()))}get child_models(){return this.model.children.map((([s])=>s))}_update_layout(){this.layout=new a.Grid,this.layout.rows=this.model.rows,this.layout.cols=this.model.cols,this.layout.spacing=this.model.spacing;for(const[s,o,t,i,e]of this.model.children){const n=this._child_views.get(s);this.layout.items.push({layout:n.layout,row:o,col:t,row_span:i,col_span:e})}this.layout.set_sizing(this.box_sizing())}}t.GridBoxView=r,r.__name__=\"GridBoxView\";class c extends l.LayoutDOM{constructor(s){super(s)}}t.GridBox=c,n=c,c.__name__=\"GridBox\",n.prototype.default_view=r,n.define((({Any:s,Int:o,Number:t,Tuple:i,Array:e,Ref:n,Or:a,Opt:r})=>({children:[e(i(n(l.LayoutDOM),o,o,r(o),r(o))),[]],rows:[s,\"auto\"],cols:[s,\"auto\"],spacing:[a(t,i(t,t)),0]})))},\n", + " function _(t,e,o,s,n){s();const _=t(309),i=t(207);class a extends _.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new i.ContentBox(this.el),this.layout.set_sizing(this.box_sizing())}}o.HTMLBoxView=a,a.__name__=\"HTMLBoxView\";class u extends _.LayoutDOM{constructor(t){super(t)}}o.HTMLBox=u,u.__name__=\"HTMLBox\"},\n", + " function _(e,n,l,a,o){var t;a();const s=e(53),c=e(309);class d extends s.Model{constructor(e){super(e)}}l.Panel=d,t=d,d.__name__=\"Panel\",t.define((({Boolean:e,String:n,Ref:l})=>({title:[n,\"\"],child:[l(c.LayoutDOM)],closable:[e,!1],disabled:[e,!1]})))},\n", + " function _(o,s,t,i,e){var a;i();const n=o(308),l=o(209);class _ extends n.BoxView{_update_layout(){const o=this.child_views.map((o=>o.layout));this.layout=new l.Row(o),this.layout.cols=this.model.cols,this.layout.spacing=[0,this.model.spacing],this.layout.set_sizing(this.box_sizing())}}t.RowView=_,_.__name__=\"RowView\";class c extends n.Box{constructor(o){super(o)}}t.Row=c,a=c,c.__name__=\"Row\",a.prototype.default_view=_,a.define((({Any:o})=>({cols:[o,\"auto\"]})))},\n", + " function _(e,t,a,s,_){var o;s();const i=e(309),n=e(207);class u extends i.LayoutDOMView{get child_models(){return[]}_update_layout(){this.layout=new n.LayoutItem,this.layout.set_sizing(this.box_sizing())}}a.SpacerView=u,u.__name__=\"SpacerView\";class c extends i.LayoutDOM{constructor(e){super(e)}}a.Spacer=c,o=c,c.__name__=\"Spacer\",o.prototype.default_view=u},\n", + " function _(e,t,s,i,l){i();const h=e(1);var a;const o=e(207),d=e(43),r=e(9),c=e(10),n=e(20),_=e(309),p=e(313),b=(0,h.__importStar)(e(317)),m=b,u=(0,h.__importStar)(e(318)),g=u,v=(0,h.__importStar)(e(229)),w=v;class f extends _.LayoutDOMView{constructor(){super(...arguments),this._scroll_index=0}connect_signals(){super.connect_signals(),this.connect(this.model.properties.tabs.change,(()=>this.rebuild())),this.connect(this.model.properties.active.change,(()=>this.on_active_change()))}styles(){return[...super.styles(),u.default,v.default,b.default]}get child_models(){return this.model.tabs.map((e=>e.child))}_update_layout(){const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,{scroll_el:s,headers_el:i}=this;this.header=new class extends o.ContentBox{_measure(e){const l=(0,d.size)(s),h=(0,d.children)(i).slice(0,3).map((e=>(0,d.size)(e))),{width:a,height:o}=super._measure(e);if(t){const t=l.width+(0,r.sum)(h.map((e=>e.width)));return{width:e.width!=1/0?e.width:t,height:o}}{const t=l.height+(0,r.sum)(h.map((e=>e.height)));return{width:a,height:e.height!=1/0?e.height:t}}}}(this.header_el),t?this.header.set_sizing({width_policy:\"fit\",height_policy:\"fixed\"}):this.header.set_sizing({width_policy:\"fixed\",height_policy:\"fit\"});let l=1,h=1;switch(e){case\"above\":l-=1;break;case\"below\":l+=1;break;case\"left\":h-=1;break;case\"right\":h+=1}const a={layout:this.header,row:l,col:h},c=this.child_views.map((e=>({layout:e.layout,row:1,col:1})));this.layout=new o.Grid([a,...c]),this.layout.set_sizing(this.box_sizing())}update_position(){super.update_position(),this.header_el.style.position=\"absolute\",(0,d.position)(this.header_el,this.header.bbox);const e=this.model.tabs_location,t=\"above\"==e||\"below\"==e,s=(0,d.size)(this.scroll_el),i=(0,d.scroll_size)(this.headers_el);if(t){const{width:e}=this.header.bbox;i.width>e?(this.wrapper_el.style.maxWidth=e-s.width+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxWidth=\"\",(0,d.undisplay)(this.scroll_el))}else{const{height:e}=this.header.bbox;i.height>e?(this.wrapper_el.style.maxHeight=e-s.height+\"px\",(0,d.display)(this.scroll_el),this.do_scroll(this.model.active)):(this.wrapper_el.style.maxHeight=\"\",(0,d.undisplay)(this.scroll_el))}const{child_views:l}=this;for(const e of l)(0,d.hide)(e.el);const h=l[this.model.active];null!=h&&(0,d.show)(h.el)}render(){super.render();const{active:e}=this.model,t=this.model.tabs.map(((t,s)=>{const i=(0,d.div)({class:[m.tab,s==e?m.active:null]},t.title);if(i.addEventListener(\"click\",(e=>{this.model.disabled||e.target==e.currentTarget&&this.change_active(s)})),t.closable){const e=(0,d.div)({class:m.close});e.addEventListener(\"click\",(e=>{if(e.target==e.currentTarget){this.model.tabs=(0,r.remove_at)(this.model.tabs,s);const e=this.model.tabs.length;this.model.active>e-1&&(this.model.active=e-1)}})),i.appendChild(e)}return(this.model.disabled||t.disabled)&&i.classList.add(m.disabled),i}));this.headers_el=(0,d.div)({class:[m.headers]},t),this.wrapper_el=(0,d.div)({class:m.headers_wrapper},this.headers_el),this.left_el=(0,d.div)({class:[g.btn,g.btn_default],disabled:\"\"},(0,d.div)({class:[w.caret,m.left]})),this.right_el=(0,d.div)({class:[g.btn,g.btn_default]},(0,d.div)({class:[w.caret,m.right]})),this.left_el.addEventListener(\"click\",(()=>this.do_scroll(\"left\"))),this.right_el.addEventListener(\"click\",(()=>this.do_scroll(\"right\"))),this.scroll_el=(0,d.div)({class:g.btn_group},this.left_el,this.right_el);const s=this.model.tabs_location;this.header_el=(0,d.div)({class:[m.tabs_header,m[s]]},this.scroll_el,this.wrapper_el),this.el.appendChild(this.header_el)}do_scroll(e){const t=this.model.tabs.length;\"left\"==e?this._scroll_index-=1:\"right\"==e?this._scroll_index+=1:this._scroll_index=e,this._scroll_index=(0,c.clamp)(this._scroll_index,0,t-1),0==this._scroll_index?this.left_el.setAttribute(\"disabled\",\"\"):this.left_el.removeAttribute(\"disabled\"),this._scroll_index==t-1?this.right_el.setAttribute(\"disabled\",\"\"):this.right_el.removeAttribute(\"disabled\");const s=(0,d.children)(this.headers_el).slice(0,this._scroll_index).map((e=>e.getBoundingClientRect())),i=this.model.tabs_location;if(\"above\"==i||\"below\"==i){const e=-(0,r.sum)(s.map((e=>e.width)));this.headers_el.style.left=`${e}px`}else{const e=-(0,r.sum)(s.map((e=>e.height)));this.headers_el.style.top=`${e}px`}}change_active(e){e!=this.model.active&&(this.model.active=e)}on_active_change(){const e=this.model.active,t=(0,d.children)(this.headers_el);for(const e of t)e.classList.remove(m.active);t[e].classList.add(m.active);const{child_views:s}=this;for(const e of s)(0,d.hide)(e.el);(0,d.show)(s[e].el)}}s.TabsView=f,f.__name__=\"TabsView\";class x extends _.LayoutDOM{constructor(e){super(e)}}s.Tabs=x,a=x,x.__name__=\"Tabs\",a.prototype.default_view=f,a.define((({Int:e,Array:t,Ref:s})=>({tabs:[t(s(p.Panel)),[]],tabs_location:[n.Location,\"above\"],active:[e,0]})))},\n", + " function _(e,r,b,o,t){o(),b.root=\"bk-root\",b.tabs_header=\"bk-tabs-header\",b.btn_group=\"bk-btn-group\",b.btn=\"bk-btn\",b.headers_wrapper=\"bk-headers-wrapper\",b.above=\"bk-above\",b.right=\"bk-right\",b.below=\"bk-below\",b.left=\"bk-left\",b.headers=\"bk-headers\",b.tab=\"bk-tab\",b.active=\"bk-active\",b.close=\"bk-close\",b.disabled=\"bk-disabled\",b.default='.bk-root .bk-tabs-header{display:flex;flex-wrap:nowrap;align-items:center;overflow:hidden;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-tabs-header .bk-btn-group{height:auto;margin-right:5px;}.bk-root .bk-tabs-header .bk-btn-group > .bk-btn{flex-grow:0;height:auto;padding:4px 4px;}.bk-root .bk-tabs-header .bk-headers-wrapper{flex-grow:1;overflow:hidden;color:#666666;}.bk-root .bk-tabs-header.bk-above .bk-headers-wrapper{border-bottom:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-right .bk-headers-wrapper{border-left:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-below .bk-headers-wrapper{border-top:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-left .bk-headers-wrapper{border-right:1px solid #e6e6e6;}.bk-root .bk-tabs-header.bk-above,.bk-root .bk-tabs-header.bk-below{flex-direction:row;}.bk-root .bk-tabs-header.bk-above .bk-headers,.bk-root .bk-tabs-header.bk-below .bk-headers{flex-direction:row;}.bk-root .bk-tabs-header.bk-left,.bk-root .bk-tabs-header.bk-right{flex-direction:column;}.bk-root .bk-tabs-header.bk-left .bk-headers,.bk-root .bk-tabs-header.bk-right .bk-headers{flex-direction:column;}.bk-root .bk-tabs-header .bk-headers{position:relative;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-tabs-header .bk-tab{padding:4px 8px;border:solid transparent;white-space:nowrap;cursor:pointer;}.bk-root .bk-tabs-header .bk-tab:hover{background-color:#f2f2f2;}.bk-root .bk-tabs-header .bk-tab.bk-active{color:#4d4d4d;background-color:white;border-color:#e6e6e6;}.bk-root .bk-tabs-header .bk-tab .bk-close{margin-left:10px;}.bk-root .bk-tabs-header .bk-tab.bk-disabled{cursor:not-allowed;pointer-events:none;opacity:0.65;}.bk-root .bk-tabs-header.bk-above .bk-tab{border-width:3px 1px 0px 1px;border-radius:4px 4px 0 0;}.bk-root .bk-tabs-header.bk-right .bk-tab{border-width:1px 3px 1px 0px;border-radius:0 4px 4px 0;}.bk-root .bk-tabs-header.bk-below .bk-tab{border-width:0px 1px 3px 1px;border-radius:0 0 4px 4px;}.bk-root .bk-tabs-header.bk-left .bk-tab{border-width:1px 0px 1px 3px;border-radius:4px 0 0 4px;}.bk-root .bk-close{display:inline-block;width:10px;height:10px;vertical-align:middle;background-image:url(\\'data:image/svg+xml;utf8, \\');}.bk-root .bk-close:hover{background-image:url(\\'data:image/svg+xml;utf8, \\');}'},\n", + " function _(o,b,r,t,e){t(),r.root=\"bk-root\",r.btn=\"bk-btn\",r.active=\"bk-active\",r.btn_default=\"bk-btn-default\",r.btn_primary=\"bk-btn-primary\",r.btn_success=\"bk-btn-success\",r.btn_warning=\"bk-btn-warning\",r.btn_danger=\"bk-btn-danger\",r.btn_light=\"bk-btn-light\",r.btn_group=\"bk-btn-group\",r.vertical=\"bk-vertical\",r.horizontal=\"bk-horizontal\",r.dropdown_toggle=\"bk-dropdown-toggle\",r.default=\".bk-root .bk-btn{height:100%;display:inline-block;text-align:center;vertical-align:middle;white-space:nowrap;cursor:pointer;padding:6px 12px;font-size:12px;border:1px solid transparent;border-radius:4px;outline:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none;}.bk-root .bk-btn:hover,.bk-root .bk-btn:focus{text-decoration:none;}.bk-root .bk-btn:active,.bk-root .bk-btn.bk-active{background-image:none;box-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);}.bk-root .bk-btn[disabled]{cursor:not-allowed;pointer-events:none;opacity:0.65;box-shadow:none;}.bk-root .bk-btn-default{color:#333;background-color:#fff;border-color:#ccc;}.bk-root .bk-btn-default:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-default.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-default[disabled],.bk-root .bk-btn-default[disabled]:hover,.bk-root .bk-btn-default[disabled]:focus,.bk-root .bk-btn-default[disabled]:active,.bk-root .bk-btn-default[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd;}.bk-root .bk-btn-primary:hover{background-color:#3681c1;border-color:#2c699e;}.bk-root .bk-btn-primary.bk-active{background-color:#3276b1;border-color:#285e8e;}.bk-root .bk-btn-primary[disabled],.bk-root .bk-btn-primary[disabled]:hover,.bk-root .bk-btn-primary[disabled]:focus,.bk-root .bk-btn-primary[disabled]:active,.bk-root .bk-btn-primary[disabled].bk-active{background-color:#506f89;border-color:#357ebd;}.bk-root .bk-btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c;}.bk-root .bk-btn-success:hover{background-color:#4eb24e;border-color:#409240;}.bk-root .bk-btn-success.bk-active{background-color:#47a447;border-color:#398439;}.bk-root .bk-btn-success[disabled],.bk-root .bk-btn-success[disabled]:hover,.bk-root .bk-btn-success[disabled]:focus,.bk-root .bk-btn-success[disabled]:active,.bk-root .bk-btn-success[disabled].bk-active{background-color:#667b66;border-color:#4cae4c;}.bk-root .bk-btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236;}.bk-root .bk-btn-warning:hover{background-color:#eea43b;border-color:#e89014;}.bk-root .bk-btn-warning.bk-active{background-color:#ed9c28;border-color:#d58512;}.bk-root .bk-btn-warning[disabled],.bk-root .bk-btn-warning[disabled]:hover,.bk-root .bk-btn-warning[disabled]:focus,.bk-root .bk-btn-warning[disabled]:active,.bk-root .bk-btn-warning[disabled].bk-active{background-color:#c89143;border-color:#eea236;}.bk-root .bk-btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a;}.bk-root .bk-btn-danger:hover{background-color:#d5433e;border-color:#bd2d29;}.bk-root .bk-btn-danger.bk-active{background-color:#d2322d;border-color:#ac2925;}.bk-root .bk-btn-danger[disabled],.bk-root .bk-btn-danger[disabled]:hover,.bk-root .bk-btn-danger[disabled]:focus,.bk-root .bk-btn-danger[disabled]:active,.bk-root .bk-btn-danger[disabled].bk-active{background-color:#a55350;border-color:#d43f3a;}.bk-root .bk-btn-light{color:#333;background-color:#fff;border-color:#ccc;border-color:transparent;}.bk-root .bk-btn-light:hover{background-color:#f5f5f5;border-color:#b8b8b8;}.bk-root .bk-btn-light.bk-active{background-color:#ebebeb;border-color:#adadad;}.bk-root .bk-btn-light[disabled],.bk-root .bk-btn-light[disabled]:hover,.bk-root .bk-btn-light[disabled]:focus,.bk-root .bk-btn-light[disabled]:active,.bk-root .bk-btn-light[disabled].bk-active{background-color:#e6e6e6;border-color:#ccc;}.bk-root .bk-btn-group{height:100%;display:flex;flex-wrap:nowrap;align-items:center;}.bk-root .bk-btn-group:not(.bk-vertical),.bk-root .bk-btn-group.bk-horizontal{flex-direction:row;}.bk-root .bk-btn-group.bk-vertical{flex-direction:column;}.bk-root .bk-btn-group > .bk-btn{flex-grow:1;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn + .bk-btn{margin-left:-1px;}.bk-root .bk-btn-group.bk-vertical > .bk-btn + .bk-btn{margin-top:-1px;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:first-child:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0;}.bk-root .bk-btn-group:not(.bk-vertical) > .bk-btn:not(:first-child):last-child{border-bottom-left-radius:0;border-top-left-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn:not(:first-child):last-child{border-top-left-radius:0;border-top-right-radius:0;}.bk-root .bk-btn-group > .bk-btn:not(:first-child):not(:last-child){border-radius:0;}.bk-root .bk-btn-group.bk-vertical > .bk-btn{width:100%;}.bk-root .bk-btn-group .bk-dropdown-toggle{flex:0 0 0;padding:6px 6px;}\"},\n", + " function _(e,t,o,n,_){var i;n();const s=e(310);class d extends s.ColumnView{}o.WidgetBoxView=d,d.__name__=\"WidgetBoxView\";class a extends s.Column{constructor(e){super(e)}}o.WidgetBox=a,i=a,a.__name__=\"WidgetBox\",i.prototype.default_view=d},\n", + " function _(t,a,i,e,M){e();var T=t(135);M(\"MathText\",T.MathText),M(\"Ascii\",T.Ascii),M(\"MathML\",T.MathML),M(\"TeX\",T.TeX),M(\"PlainText\",t(139).PlainText)},\n", + " function _(r,o,t,e,n){e(),n(\"CustomJSTransform\",r(322).CustomJSTransform),n(\"Dodge\",r(323).Dodge),n(\"Interpolator\",r(325).Interpolator),n(\"Jitter\",r(326).Jitter),n(\"LinearInterpolator\",r(327).LinearInterpolator),n(\"StepInterpolator\",r(328).StepInterpolator),n(\"Transform\",r(56).Transform)},\n", + " function _(r,t,s,n,e){var a;n();const u=r(56),o=r(13),m=r(34);class _ extends u.Transform{constructor(r){super(r)}get names(){return(0,o.keys)(this.args)}get values(){return(0,o.values)(this.args)}_make_transform(r,t){return new Function(...this.names,r,(0,m.use_strict)(t))}get scalar_transform(){return this._make_transform(\"x\",this.func)}get vector_transform(){return this._make_transform(\"xs\",this.v_func)}compute(r){return this.scalar_transform(...this.values,r)}v_compute(r){return this.vector_transform(...this.values,r)}}s.CustomJSTransform=_,a=_,_.__name__=\"CustomJSTransform\",a.define((({Unknown:r,String:t,Dict:s})=>({args:[s(r),{}],func:[t,\"\"],v_func:[t,\"\"]})))},\n", + " function _(e,n,r,o,s){var t;o();const u=e(324);class a extends u.RangeTransform{constructor(e){super(e)}_compute(e){return e+this.value}}r.Dodge=a,t=a,a.__name__=\"Dodge\",t.define((({Number:e})=>({value:[e,0]})))},\n", + " function _(e,n,t,r,a){var s;r();const c=e(56),o=e(57),i=e(67),u=e(24),h=e(8),l=e(11);class g extends c.Transform{constructor(e){super(e)}v_compute(e){let n;this.range instanceof i.FactorRange?n=this.range.v_synthetic(e):(0,h.isArrayableOf)(e,h.isNumber)?n=e:(0,l.unreachable)();const t=new((0,u.infer_type)(n))(n.length);for(let e=0;e({range:[n(e(o.Range)),null]})))},\n", + " function _(t,e,r,n,s){var o;n();const i=t(56),a=t(70),h=t(24),l=t(9),d=t(8);class c extends i.Transform{constructor(t){super(t),this._sorted_dirty=!0}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._sorted_dirty=!0))}v_compute(t){const e=new((0,h.infer_type)(t))(t.length);for(let r=0;ro*(e[t]-e[r]))),this._x_sorted=new((0,h.infer_type)(e))(n),this._y_sorted=new((0,h.infer_type)(r))(n);for(let t=0;t({x:[o(r,s(e))],y:[o(r,s(e))],data:[i(n(a.ColumnarDataSource)),null],clip:[t,!0]})))},\n", + " function _(t,s,e,i,r){i();const n=t(1);var o;const a=t(324),u=t(67),h=t(20),c=t(8),m=t(12),f=(0,n.__importStar)(t(10)),_=t(11);class p extends a.RangeTransform{constructor(t){super(t)}v_compute(t){var s;let e;this.range instanceof u.FactorRange?e=this.range.v_synthetic(t):(0,c.isArrayableOf)(t,c.isNumber)?e=t:(0,_.unreachable)();const i=e.length;(null===(s=this.previous_offsets)||void 0===s?void 0:s.length)!=i&&(this.previous_offsets=new Array(i),this.previous_offsets=(0,m.map)(this.previous_offsets,(()=>this._compute())));const r=this.previous_offsets;return(0,m.map)(e,((t,s)=>r[s]+t))}_compute(){switch(this.distribution){case\"uniform\":return this.mean+(f.random()-.5)*this.width;case\"normal\":return f.rnorm(this.mean,this.width)}}}e.Jitter=p,o=p,p.__name__=\"Jitter\",o.define((({Number:t})=>({mean:[t,0],width:[t,1],distribution:[h.Distribution,\"uniform\"]})))},\n", + " function _(t,s,_,r,e){r();const i=t(9),o=t(325);class n extends o.Interpolator{constructor(t){super(t)}compute(t){if(this.sort(!1),this.clip){if(tthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}if(t==this._x_sorted[0])return this._y_sorted[0];const s=(0,i.find_last_index)(this._x_sorted,(s=>sthis._x_sorted[this._x_sorted.length-1])return NaN}else{if(tthis._x_sorted[this._x_sorted.length-1])return this._y_sorted[this._y_sorted.length-1]}let e;switch(this.mode){case\"after\":e=(0,d.find_last_index)(this._x_sorted,(e=>t>=e));break;case\"before\":e=(0,d.find_index)(this._x_sorted,(e=>t<=e));break;case\"center\":{const s=(0,d.map)(this._x_sorted,(e=>Math.abs(e-t))),r=(0,d.min)(s);e=(0,d.find_index)(s,(t=>r===t));break}default:throw new Error(`unknown mode: ${this.mode}`)}return-1!=e?this._y_sorted[e]:NaN}}s.StepInterpolator=h,_=h,h.__name__=\"StepInterpolator\",_.define((()=>({mode:[n.StepMode,\"after\"]})))},\n", + " function _(p,o,t,a,n){a(),n(\"MapOptions\",p(330).MapOptions),n(\"GMapOptions\",p(330).GMapOptions),n(\"GMapPlot\",p(330).GMapPlot),n(\"Plot\",p(331).Plot)},\n", + " function _(e,t,n,o,a){var s,p,_;o();const i=e(331),r=e(53),l=e(58),c=e(336);a(\"GMapPlotView\",c.GMapPlotView);class d extends r.Model{constructor(e){super(e)}}n.MapOptions=d,s=d,d.__name__=\"MapOptions\",s.define((({Int:e,Number:t})=>({lat:[t],lng:[t],zoom:[e,12]})));class u extends d{constructor(e){super(e)}}n.GMapOptions=u,p=u,u.__name__=\"GMapOptions\",p.define((({Boolean:e,Int:t,String:n})=>({map_type:[n,\"roadmap\"],scale_control:[e,!1],styles:[n],tilt:[t,45]})));class M extends i.Plot{constructor(e){super(e),this.use_map=!0}}n.GMapPlot=M,_=M,M.__name__=\"GMapPlot\",_.prototype.default_view=c.GMapPlotView,_.define((({String:e,Ref:t})=>({map_options:[t(u)],api_key:[e],api_version:[e,\"weekly\"]}))),_.override({x_range:()=>new l.Range1d,y_range:()=>new l.Range1d})},\n", + " function _(e,t,r,n,i){n();const o=e(1);var a;const s=(0,o.__importStar)(e(48)),l=(0,o.__importStar)(e(18)),_=e(15),c=e(20),h=e(9),d=e(13),u=e(8),g=e(309),p=e(128),f=e(306),b=e(40),w=e(118),y=e(59),m=e(221),x=e(57),v=e(55),A=e(75),S=e(41),R=e(176),D=e(175),L=e(63),P=e(332);i(\"PlotView\",P.PlotView);class k extends g.LayoutDOM{constructor(e){super(e),this.use_map=!1}_doc_attached(){super._doc_attached(),this._push_changes([[this.properties.inner_height,null,this.inner_height],[this.properties.inner_width,null,this.inner_width]])}initialize(){super.initialize(),this.reset=new _.Signal0(this,\"reset\");for(const e of(0,d.values)(this.extra_x_ranges).concat(this.x_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}for(const e of(0,d.values)(this.extra_y_ranges).concat(this.y_range)){let t=e.plots;(0,u.isArray)(t)&&(t=t.concat(this),e.setv({plots:t},{silent:!0}))}}add_layout(e,t=\"center\"){const r=this.properties[t].get_value();this.setv({[t]:[...r,e]})}remove_layout(e){const t=t=>{(0,h.remove_by)(t,(t=>t==e))};t(this.left),t(this.right),t(this.above),t(this.below),t(this.center)}get data_renderers(){return this.renderers.filter((e=>e instanceof R.DataRenderer))}add_renderers(...e){this.renderers=this.renderers.concat(e)}add_glyph(e,t=new A.ColumnDataSource,r={}){const n=new D.GlyphRenderer(Object.assign(Object.assign({},r),{data_source:t,glyph:e}));return this.add_renderers(n),n}add_tools(...e){this.toolbar.tools=this.toolbar.tools.concat(e)}get panels(){return[...this.side_panels,...this.center]}get side_panels(){const{above:e,below:t,left:r,right:n}=this;return(0,h.concat)([e,t,r,n])}}r.Plot=k,a=k,k.__name__=\"Plot\",a.prototype.default_view=P.PlotView,a.mixins([[\"outline_\",s.Line],[\"background_\",s.Fill],[\"border_\",s.Fill]]),a.define((({Boolean:e,Number:t,String:r,Array:n,Dict:i,Or:o,Ref:a,Null:s,Nullable:_})=>({toolbar:[a(m.Toolbar),()=>new m.Toolbar],toolbar_location:[_(c.Location),\"right\"],toolbar_sticky:[e,!0],plot_width:[l.Alias(\"width\")],plot_height:[l.Alias(\"height\")],frame_width:[_(t),null],frame_height:[_(t),null],title:[o(a(w.Title),r,s),\"\",{convert:e=>(0,u.isString)(e)?new w.Title({text:e}):e}],title_location:[_(c.Location),\"above\"],above:[n(o(a(b.Annotation),a(p.Axis))),[]],below:[n(o(a(b.Annotation),a(p.Axis))),[]],left:[n(o(a(b.Annotation),a(p.Axis))),[]],right:[n(o(a(b.Annotation),a(p.Axis))),[]],center:[n(o(a(b.Annotation),a(f.Grid))),[]],renderers:[n(a(S.Renderer)),[]],x_range:[a(x.Range),()=>new L.DataRange1d],y_range:[a(x.Range),()=>new L.DataRange1d],x_scale:[a(v.Scale),()=>new y.LinearScale],y_scale:[a(v.Scale),()=>new y.LinearScale],extra_x_ranges:[i(a(x.Range)),{}],extra_y_ranges:[i(a(x.Range)),{}],extra_x_scales:[i(a(v.Scale)),{}],extra_y_scales:[i(a(v.Scale)),{}],lod_factor:[t,10],lod_interval:[t,300],lod_threshold:[_(t),2e3],lod_timeout:[t,500],hidpi:[e,!0],output_backend:[c.OutputBackend,\"canvas\"],min_border:[_(t),5],min_border_top:[_(t),null],min_border_left:[_(t),null],min_border_bottom:[_(t),null],min_border_right:[_(t),null],inner_width:[t,0],inner_height:[t,0],outer_width:[t,0],outer_height:[t,0],match_aspect:[e,!1],aspect_scale:[t,1],reset_policy:[c.ResetPolicy,\"standard\"]}))),a.override({width:600,height:600,outline_line_color:\"#e5e5e5\",border_fill_color:\"#ffffff\",background_fill_color:\"#ffffff\"})},\n", + " function _(e,t,i,s,a){s();const n=e(1),o=e(126),l=e(249),r=e(309),_=e(40),h=e(118),d=e(128),u=e(220),c=e(251),p=e(113),v=e(45),g=e(19),b=e(251),m=e(333),y=e(8),w=e(9),f=e(235),x=e(208),z=e(211),k=e(209),q=e(123),M=e(65),R=e(334),V=e(335),S=e(28);class O extends r.LayoutDOMView{constructor(){super(...arguments),this._outer_bbox=new M.BBox,this._inner_bbox=new M.BBox,this._needs_paint=!0,this._needs_layout=!1,this._invalidated_painters=new Set,this._invalidate_all=!0,this._needs_notify=!1}get canvas(){return this.canvas_view}get state(){return this._state_manager}set invalidate_dataranges(e){this._range_manager.invalidate_dataranges=e}renderer_view(e){const t=this.renderer_views.get(e);if(null==t)for(const[,t]of this.renderer_views){const i=t.renderer_view(e);if(null!=i)return i}return t}get is_paused(){return null!=this._is_paused&&0!==this._is_paused}get child_models(){return[]}pause(){null==this._is_paused?this._is_paused=1:this._is_paused+=1}unpause(e=!1){if(null==this._is_paused)throw new Error(\"wasn't paused\");this._is_paused-=1,0!=this._is_paused||e||this.request_paint(\"everything\")}notify_finished_after_paint(){this._needs_notify=!0}request_render(){this.request_paint(\"everything\")}request_paint(e){this.invalidate_painters(e),this.schedule_paint()}invalidate_painters(e){if(\"everything\"==e)this._invalidate_all=!0;else if((0,y.isArray)(e))for(const t of e)this._invalidated_painters.add(t);else this._invalidated_painters.add(e)}schedule_paint(){if(!this.is_paused){const e=this.throttled_paint();this._ready=this._ready.then((()=>e))}}request_layout(){this._needs_layout=!0,this.request_paint(\"everything\")}reset(){\"standard\"==this.model.reset_policy&&(this.state.clear(),this.reset_range(),this.reset_selection()),this.model.trigger_event(new c.Reset)}remove(){(0,p.remove_views)(this.renderer_views),(0,p.remove_views)(this.tool_views),this.canvas_view.remove(),super.remove()}render(){super.render(),this.el.appendChild(this.canvas_view.el),this.canvas_view.render()}initialize(){this.pause(),super.initialize(),this.lod_started=!1,this.visuals=new v.Visuals(this),this._initial_state={selection:new Map,dimensions:{width:0,height:0}},this.visibility_callbacks=[],this.renderer_views=new Map,this.tool_views=new Map,this.frame=new o.CartesianFrame(this.model.x_scale,this.model.y_scale,this.model.x_range,this.model.y_range,this.model.extra_x_ranges,this.model.extra_y_ranges,this.model.extra_x_scales,this.model.extra_y_scales),this._range_manager=new R.RangeManager(this),this._state_manager=new V.StateManager(this,this._initial_state),this.throttled_paint=(0,m.throttle)((()=>this.repaint()),1e3/60);const{title_location:e,title:t}=this.model;null!=e&&null!=t&&(this._title=t instanceof h.Title?t:new h.Title({text:t}));const{toolbar_location:i,toolbar:s}=this.model;null!=i&&null!=s&&(this._toolbar=new u.ToolbarPanel({toolbar:s}),s.toolbar_location=i)}async lazy_initialize(){await super.lazy_initialize();const{hidpi:e,output_backend:t}=this.model,i=new l.Canvas({hidpi:e,output_backend:t});this.canvas_view=await(0,p.build_view)(i,{parent:this}),this.canvas_view.plot_views=[this],await this.build_renderer_views(),await this.build_tool_views(),this._range_manager.update_dataranges(),this.unpause(!0),g.logger.debug(\"PlotView initialized\")}_width_policy(){return null==this.model.frame_width?super._width_policy():\"min\"}_height_policy(){return null==this.model.frame_height?super._height_policy():\"min\"}_update_layout(){var e,t,i,s,a;this.layout=new z.BorderLayout,this.layout.set_sizing(this.box_sizing());const n=(0,w.copy)(this.model.above),o=(0,w.copy)(this.model.below),l=(0,w.copy)(this.model.left),r=(0,w.copy)(this.model.right),d=e=>{switch(e){case\"above\":return n;case\"below\":return o;case\"left\":return l;case\"right\":return r}},{title_location:c,title:p}=this.model;null!=c&&null!=p&&d(c).push(this._title);const{toolbar_location:v,toolbar:g}=this.model;if(null!=v&&null!=g){const e=d(v);let t=!0;if(this.model.toolbar_sticky)for(let i=0;i{var i;const s=this.renderer_view(t);return s.panel=new q.Panel(e),null===(i=s.update_layout)||void 0===i||i.call(s),s.layout},m=(e,t)=>{const i=\"above\"==e||\"below\"==e,s=[];for(const a of t)if((0,y.isArray)(a)){const t=a.map((t=>{const s=b(e,t);if(t instanceof u.ToolbarPanel){const e=i?\"width_policy\":\"height_policy\";s.set_sizing(Object.assign(Object.assign({},s.sizing),{[e]:\"min\"}))}return s}));let n;i?(n=new k.Row(t),n.set_sizing({width_policy:\"max\",height_policy:\"min\"})):(n=new k.Column(t),n.set_sizing({width_policy:\"min\",height_policy:\"max\"})),n.absolute=!0,s.push(n)}else s.push(b(e,a));return s},f=null!==(e=this.model.min_border)&&void 0!==e?e:0;this.layout.min_border={left:null!==(t=this.model.min_border_left)&&void 0!==t?t:f,top:null!==(i=this.model.min_border_top)&&void 0!==i?i:f,right:null!==(s=this.model.min_border_right)&&void 0!==s?s:f,bottom:null!==(a=this.model.min_border_bottom)&&void 0!==a?a:f};const M=new x.NodeLayout,R=new x.VStack,V=new x.VStack,S=new x.HStack,O=new x.HStack;M.absolute=!0,R.absolute=!0,V.absolute=!0,S.absolute=!0,O.absolute=!0,M.children=this.model.center.filter((e=>e instanceof _.Annotation)).map((e=>{var t;const i=this.renderer_view(e);return null===(t=i.update_layout)||void 0===t||t.call(i),i.layout})).filter((e=>null!=e));const{frame_width:P,frame_height:j}=this.model;M.set_sizing(Object.assign(Object.assign({},null!=P?{width_policy:\"fixed\",width:P}:{width_policy:\"fit\"}),null!=j?{height_policy:\"fixed\",height:j}:{height_policy:\"fit\"})),M.on_resize((e=>this.frame.set_geometry(e))),R.children=(0,w.reversed)(m(\"above\",n)),V.children=m(\"below\",o),S.children=(0,w.reversed)(m(\"left\",l)),O.children=m(\"right\",r),R.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),V.set_sizing({width_policy:\"fit\",height_policy:\"min\"}),S.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),O.set_sizing({width_policy:\"min\",height_policy:\"fit\"}),this.layout.center_panel=M,this.layout.top_panel=R,this.layout.bottom_panel=V,this.layout.left_panel=S,this.layout.right_panel=O}get axis_views(){const e=[];for(const[,t]of this.renderer_views)t instanceof d.AxisView&&e.push(t);return e}set_toolbar_visibility(e){for(const t of this.visibility_callbacks)t(e)}update_range(e,t){this.pause(),this._range_manager.update(e,t),this.unpause()}reset_range(){this.update_range(null),this.trigger_ranges_update_event()}trigger_ranges_update_event(){const{x_range:e,y_range:t}=this.model;this.model.trigger_event(new b.RangesUpdate(e.start,e.end,t.start,t.end))}get_selection(){const e=new Map;for(const t of this.model.data_renderers){const{selected:i}=t.selection_manager.source;e.set(t,i)}return e}update_selection(e){for(const t of this.model.data_renderers){const i=t.selection_manager.source;if(null!=e){const s=e.get(t);null!=s&&i.selected.update(s,!0)}else i.selection_manager.clear()}}reset_selection(){this.update_selection(null)}_invalidate_layout(){(()=>{var e;for(const t of this.model.side_panels){const i=this.renderer_views.get(t);if(null===(e=i.layout)||void 0===e?void 0:e.has_size_changed())return this.invalidate_painters(i),!0}return!1})()&&this.root.compute_layout()}get_renderer_views(){return this.computed_renderers.map((e=>this.renderer_views.get(e)))}*_compute_renderers(){const{above:e,below:t,left:i,right:s,center:a,renderers:n}=this.model;yield*n,yield*e,yield*t,yield*i,yield*s,yield*a,null!=this._title&&(yield this._title),null!=this._toolbar&&(yield this._toolbar);for(const e of this.model.toolbar.tools)null!=e.overlay&&(yield e.overlay),yield*e.synthetic_renderers}async build_renderer_views(){this.computed_renderers=[...this._compute_renderers()],await(0,p.build_views)(this.renderer_views,this.computed_renderers,{parent:this})}async build_tool_views(){const e=this.model.toolbar.tools;(await(0,p.build_views)(this.tool_views,e,{parent:this})).map((e=>this.canvas_view.ui_event_bus.register_tool(e)))}connect_signals(){super.connect_signals();const{x_ranges:e,y_ranges:t}=this.frame;for(const[,t]of e)this.connect(t.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));for(const[,e]of t)this.connect(e.change,(()=>{this._needs_layout=!0,this.request_paint(\"everything\")}));const{above:i,below:s,left:a,right:n,center:o,renderers:l}=this.model.properties;this.on_change([i,s,a,n,o,l],(async()=>await this.build_renderer_views())),this.connect(this.model.toolbar.properties.tools.change,(async()=>{await this.build_renderer_views(),await this.build_tool_views()})),this.connect(this.model.change,(()=>this.request_paint(\"everything\"))),this.connect(this.model.reset,(()=>this.reset()))}has_finished(){if(!super.has_finished())return!1;if(this.model.visible)for(const[,e]of this.renderer_views)if(!e.has_finished())return!1;return!0}after_layout(){var e;super.after_layout();for(const[,t]of this.renderer_views)t instanceof _.AnnotationView&&(null===(e=t.after_layout)||void 0===e||e.call(t));if(this._needs_layout=!1,this.model.setv({inner_width:Math.round(this.frame.bbox.width),inner_height:Math.round(this.frame.bbox.height),outer_width:Math.round(this.layout.bbox.width),outer_height:Math.round(this.layout.bbox.height)},{no_change:!0}),!1!==this.model.match_aspect&&(this.pause(),this._range_manager.update_dataranges(),this.unpause(!0)),!this._outer_bbox.equals(this.layout.bbox)){const{width:e,height:t}=this.layout.bbox;this.canvas_view.resize(e,t),this._outer_bbox=this.layout.bbox,this._invalidate_all=!0,this._needs_paint=!0}const{inner_bbox:t}=this.layout;this._inner_bbox.equals(t)||(this._inner_bbox=t,this._needs_paint=!0),this._needs_paint&&this.paint()}repaint(){this._needs_layout&&this._invalidate_layout(),this.paint()}paint(){this.is_paused||(this.model.visible&&(g.logger.trace(`${this.toString()}.paint()`),this._actual_paint()),this._needs_notify&&(this._needs_notify=!1,this.notify_finished()))}_actual_paint(){var e;const{document:t}=this.model;if(null!=t){const e=t.interactive_duration();e>=0&&e{t.interactive_duration()>this.model.lod_timeout&&t.interactive_stop(),this.request_paint(\"everything\")}),this.model.lod_timeout):t.interactive_stop()}this._range_manager.invalidate_dataranges&&(this._range_manager.update_dataranges(),this._invalidate_layout());let i=!1,s=!1;if(this._invalidate_all)i=!0,s=!0;else for(const e of this._invalidated_painters){const{level:t}=e.model;if(\"overlay\"!=t?i=!0:s=!0,i&&s)break}this._invalidated_painters.clear(),this._invalidate_all=!1;const a=[this.frame.bbox.left,this.frame.bbox.top,this.frame.bbox.width,this.frame.bbox.height],{primary:n,overlays:o}=this.canvas_view;i&&(n.prepare(),this.canvas_view.prepare_webgl(a),this._map_hook(n.ctx,a),this._paint_empty(n.ctx,a),this._paint_outline(n.ctx,a),this._paint_levels(n.ctx,\"image\",a,!0),this._paint_levels(n.ctx,\"underlay\",a,!0),this._paint_levels(n.ctx,\"glyph\",a,!0),this._paint_levels(n.ctx,\"guide\",a,!1),this._paint_levels(n.ctx,\"annotation\",a,!1),n.finish()),(s||S.settings.wireframe)&&(o.prepare(),this._paint_levels(o.ctx,\"overlay\",a,!1),S.settings.wireframe&&this._paint_layout(o.ctx,this.layout),o.finish()),null==this._initial_state.range&&(this._initial_state.range=null!==(e=this._range_manager.compute_initial())&&void 0!==e?e:void 0),this._needs_paint=!1}_paint_levels(e,t,i,s){for(const a of this.computed_renderers){if(a.level!=t)continue;const n=this.renderer_views.get(a);e.save(),(s||n.needs_clip)&&(e.beginPath(),e.rect(...i),e.clip()),n.render(),e.restore(),n.has_webgl&&n.needs_webgl_blit&&this.canvas_view.blit_webgl(e)}}_paint_layout(e,t){const{x:i,y:s,width:a,height:n}=t.bbox;e.strokeStyle=\"blue\",e.strokeRect(i,s,a,n);for(const a of t)e.save(),t.absolute||e.translate(i,s),this._paint_layout(e,a),e.restore()}_map_hook(e,t){}_paint_empty(e,t){const[i,s,a,n]=[0,0,this.layout.bbox.width,this.layout.bbox.height],[o,l,r,_]=t;this.visuals.border_fill.doit&&(this.visuals.border_fill.set_value(e),e.fillRect(i,s,a,n),e.clearRect(o,l,r,_)),this.visuals.background_fill.doit&&(this.visuals.background_fill.set_value(e),e.fillRect(o,l,r,_))}_paint_outline(e,t){if(this.visuals.outline_line.doit){e.save(),this.visuals.outline_line.set_value(e);let[i,s,a,n]=t;i+a==this.layout.bbox.width&&(a-=1),s+n==this.layout.bbox.height&&(n-=1),e.strokeRect(i,s,a,n),e.restore()}}to_blob(){return this.canvas_view.to_blob()}export(e,t=!0){const i=\"png\"==e?\"canvas\":\"svg\",s=new f.CanvasLayer(i,t),{width:a,height:n}=this.layout.bbox;s.resize(a,n);const{canvas:o}=this.canvas_view.compose();return s.ctx.drawImage(o,0,0),s}serializable_state(){const e=super.serializable_state(),{children:t}=e,i=(0,n.__rest)(e,[\"children\"]),s=this.get_renderer_views().map((e=>e.serializable_state())).filter((e=>null!=e.bbox));return Object.assign(Object.assign({},i),{children:[...null!=t?t:[],...s]})}}i.PlotView=O,O.__name__=\"PlotView\"},\n", + " function _(t,n,e,o,u){o(),e.throttle=function(t,n){let e=null,o=0,u=!1;return function(){return new Promise(((r,i)=>{const l=function(){o=Date.now(),e=null,u=!1;try{t(),r()}catch(t){i(t)}},a=Date.now(),c=n-(a-o);c<=0&&!u?(null!=e&&clearTimeout(e),u=!0,requestAnimationFrame(l)):e||u?r():e=setTimeout((()=>requestAnimationFrame(l)),c)}))}}},\n", + " function _(t,n,e,a,s){a();const o=t(63),r=t(19);class l{constructor(t){this.parent=t,this.invalidate_dataranges=!0}get frame(){return this.parent.frame}update(t,n){const{x_ranges:e,y_ranges:a}=this.frame;if(null==t){for(const[,t]of e)t.reset();for(const[,t]of a)t.reset();this.update_dataranges()}else{const s=[];for(const[n,a]of e)s.push([a,t.xrs.get(n)]);for(const[n,e]of a)s.push([e,t.yrs.get(n)]);(null==n?void 0:n.scrolling)&&this._update_ranges_together(s),this._update_ranges_individually(s,n)}}reset(){this.update(null)}_update_dataranges(t){const n=new Map,e=new Map;let a=!1;for(const[,n]of t.x_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const[,n]of t.y_ranges)n instanceof o.DataRange1d&&\"log\"==n.scale_hint&&(a=!0);for(const t of this.parent.model.data_renderers){const s=this.parent.renderer_view(t);if(null==s)continue;const o=s.glyph_view.bounds();if(null!=o&&n.set(t,o),a){const n=s.glyph_view.log_bounds();null!=n&&e.set(t,n)}}let s=!1,l=!1;const i=t.x_target.span,d=t.y_target.span;let u;!1!==this.parent.model.match_aspect&&0!=i&&0!=d&&(u=1/this.parent.model.aspect_scale*(i/d));for(const[,a]of t.x_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,0,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}for(const[,a]of t.y_ranges){if(a instanceof o.DataRange1d){const t=\"log\"==a.scale_hint?e:n;a.update(t,1,this.parent.model,u),a.follow&&(s=!0)}null!=a.bounds&&(l=!0)}if(s&&l){r.logger.warn(\"Follow enabled so bounds are unset.\");for(const[,n]of t.x_ranges)n.bounds=null;for(const[,n]of t.y_ranges)n.bounds=null}}update_dataranges(){this._update_dataranges(this.frame);for(const t of this.parent.model.renderers){const{coordinates:n}=t;null!=n&&this._update_dataranges(n)}null!=this.compute_initial()&&(this.invalidate_dataranges=!1)}compute_initial(){let t=!0;const{x_ranges:n,y_ranges:e}=this.frame,a=new Map,s=new Map;for(const[e,s]of n){const{start:n,end:o}=s;if(null==n||null==o||isNaN(n+o)){t=!1;break}a.set(e,{start:n,end:o})}if(t)for(const[n,a]of e){const{start:e,end:o}=a;if(null==e||null==o||isNaN(e+o)){t=!1;break}s.set(n,{start:e,end:o})}return t?{xrs:a,yrs:s}:(r.logger.warn(\"could not set initial ranges\"),null)}_update_ranges_together(t){let n=1;for(const[e,a]of t)n=Math.min(n,this._get_weight_to_constrain_interval(e,a));if(n<1)for(const[e,a]of t)a.start=n*a.start+(1-n)*e.start,a.end=n*a.end+(1-n)*e.end}_update_ranges_individually(t,n){const e=!!(null==n?void 0:n.panning),a=!!(null==n?void 0:n.scrolling);let s=!1;for(const[n,o]of t){if(!a){const t=this._get_weight_to_constrain_interval(n,o);t<1&&(o.start=t*o.start+(1-t)*n.start,o.end=t*o.end+(1-t)*n.end)}if(null!=n.bounds&&\"auto\"!=n.bounds){const[t,r]=n.bounds,l=Math.abs(o.end-o.start);n.is_reversed?(null!=t&&t>o.end&&(s=!0,o.end=t,(e||a)&&(o.start=t+l)),null!=r&&ro.start&&(s=!0,o.start=t,(e||a)&&(o.end=t+l)),null!=r&&r0&&r0&&r>a&&(s=(a-o)/(r-o)),s=Math.max(0,Math.min(1,s))}return s}}e.RangeManager=l,l.__name__=\"RangeManager\"},\n", + " function _(t,i,s,e,n){e();const h=t(15);class a{constructor(t,i){this.parent=t,this.initial_state=i,this.changed=new h.Signal0(this.parent,\"state_changed\"),this.history=[],this.index=-1}_do_state_change(t){const i=null!=this.history[t]?this.history[t].state:this.initial_state;return null!=i.range&&this.parent.update_range(i.range),null!=i.selection&&this.parent.update_selection(i.selection),i}push(t,i){const{history:s,index:e}=this,n=null!=s[e]?s[e].state:{},h=Object.assign(Object.assign(Object.assign({},this.initial_state),n),i);this.history=this.history.slice(0,this.index+1),this.history.push({type:t,state:h}),this.index=this.history.length-1,this.changed.emit()}clear(){this.history=[],this.index=-1,this.changed.emit()}undo(){if(this.can_undo){this.index-=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}redo(){if(this.can_redo){this.index+=1;const t=this._do_state_change(this.index);return this.changed.emit(),t}return null}get can_undo(){return this.index>=0}get can_redo(){return this.indexm.emit();const s=encodeURIComponent,o=document.createElement(\"script\");o.type=\"text/javascript\",o.src=`https://maps.googleapis.com/maps/api/js?v=${s(e)}&key=${s(t)}&callback=_bokeh_gmaps_callback`,document.body.appendChild(o)}(t,e)}m.connect((()=>this.request_paint(\"everything\")))}this.unpause()}remove(){(0,p.remove)(this.map_el),super.remove()}update_range(t,e){var s,o;if(null==t)this.map.setCenter({lat:this.initial_lat,lng:this.initial_lng}),this.map.setOptions({zoom:this.initial_zoom}),super.update_range(null,e);else if(null!=t.sdx||null!=t.sdy)this.map.panBy(null!==(s=t.sdx)&&void 0!==s?s:0,null!==(o=t.sdy)&&void 0!==o?o:0),super.update_range(t,e);else if(null!=t.factor){if(10!==this.zoom_count)return void(this.zoom_count+=1);this.zoom_count=0,this.pause(),super.update_range(t,e);const s=t.factor<0?-1:1,o=this.map.getZoom();if(null!=o){const t=o+s;if(t>=2){this.map.setZoom(t);const[e,s]=this._get_projected_bounds();s-e<0&&this.map.setZoom(o)}}this.unpause()}this._set_bokeh_ranges()}_build_map(){const{maps:t}=google;this.map_types={satellite:t.MapTypeId.SATELLITE,terrain:t.MapTypeId.TERRAIN,roadmap:t.MapTypeId.ROADMAP,hybrid:t.MapTypeId.HYBRID};const e=this.model.map_options,s={center:new t.LatLng(e.lat,e.lng),zoom:e.zoom,disableDefaultUI:!0,mapTypeId:this.map_types[e.map_type],scaleControl:e.scale_control,tilt:e.tilt};null!=e.styles&&(s.styles=JSON.parse(e.styles)),this.map_el=(0,p.div)({style:{position:\"absolute\"}}),this.canvas_view.add_underlay(this.map_el),this.map=new t.Map(this.map_el,s),t.event.addListener(this.map,\"idle\",(()=>this._set_bokeh_ranges())),t.event.addListener(this.map,\"bounds_changed\",(()=>this._set_bokeh_ranges())),t.event.addListenerOnce(this.map,\"tilesloaded\",(()=>this._render_finished())),this.connect(this.model.properties.map_options.change,(()=>this._update_options())),this.connect(this.model.map_options.properties.styles.change,(()=>this._update_styles())),this.connect(this.model.map_options.properties.lat.change,(()=>this._update_center(\"lat\"))),this.connect(this.model.map_options.properties.lng.change,(()=>this._update_center(\"lng\"))),this.connect(this.model.map_options.properties.zoom.change,(()=>this._update_zoom())),this.connect(this.model.map_options.properties.map_type.change,(()=>this._update_map_type())),this.connect(this.model.map_options.properties.scale_control.change,(()=>this._update_scale_control())),this.connect(this.model.map_options.properties.tilt.change,(()=>this._update_tilt()))}_render_finished(){this._tiles_loaded=!0,this.notify_finished()}has_finished(){return super.has_finished()&&!0===this._tiles_loaded}_get_latlon_bounds(){const t=this.map.getBounds(),e=t.getNorthEast(),s=t.getSouthWest();return[s.lng(),e.lng(),s.lat(),e.lat()]}_get_projected_bounds(){const[t,e,s,o]=this._get_latlon_bounds(),[i,a]=l.wgs84_mercator.compute(t,s),[n,p]=l.wgs84_mercator.compute(e,o);return[i,n,a,p]}_set_bokeh_ranges(){const[t,e,s,o]=this._get_projected_bounds();this.frame.x_range.setv({start:t,end:e}),this.frame.y_range.setv({start:s,end:o})}_update_center(t){var e;const s=null===(e=this.map.getCenter())||void 0===e?void 0:e.toJSON();null!=s&&(s[t]=this.model.map_options[t],this.map.setCenter(s),this._set_bokeh_ranges())}_update_map_type(){this.map.setOptions({mapTypeId:this.map_types[this.model.map_options.map_type]})}_update_scale_control(){this.map.setOptions({scaleControl:this.model.map_options.scale_control})}_update_tilt(){this.map.setOptions({tilt:this.model.map_options.tilt})}_update_options(){this._update_styles(),this._update_center(\"lat\"),this._update_center(\"lng\"),this._update_zoom(),this._update_map_type()}_update_styles(){this.map.setOptions({styles:JSON.parse(this.model.map_options.styles)})}_update_zoom(){this.map.setOptions({zoom:this.model.map_options.zoom}),this._set_bokeh_ranges()}_map_hook(t,e){if(null==this.map&&\"undefined\"!=typeof google&&null!=google.maps&&this._build_map(),null!=this.map_el){const[t,s,o,i]=e;this.map_el.style.top=`${s}px`,this.map_el.style.left=`${t}px`,this.map_el.style.width=`${o}px`,this.map_el.style.height=`${i}px`}}_paint_empty(t,e){const s=this.layout.bbox.width,o=this.layout.bbox.height,[i,a,n,p]=e;t.clearRect(0,0,s,o),t.beginPath(),t.moveTo(0,0),t.lineTo(0,o),t.lineTo(s,o),t.lineTo(s,0),t.lineTo(0,0),t.moveTo(i,a),t.lineTo(i+n,a),t.lineTo(i+n,a+p),t.lineTo(i,a+p),t.lineTo(i,a),t.closePath(),null!=this.model.border_fill_color&&(t.fillStyle=(0,_.color2css)(this.model.border_fill_color),t.fill())}}s.GMapPlotView=d,d.__name__=\"GMapPlotView\"},\n", + " function _(t,_,n,o,r){o();(0,t(1).__exportStar)(t(132),n)},\n", + " function _(e,r,d,n,R){n(),R(\"GlyphRenderer\",e(175).GlyphRenderer),R(\"GraphRenderer\",e(339).GraphRenderer),R(\"GuideRenderer\",e(129).GuideRenderer);var G=e(41);R(\"Renderer\",G.Renderer),R(\"RendererGroup\",G.RendererGroup)},\n", + " function _(e,r,i,n,t){var o;n();const s=e(176),d=e(175),a=e(303),p=e(302),l=e(113),_=e(178),h=e(283),y=e(286);class c extends s.DataRendererView{get glyph_view(){return this.node_view.glyph}async lazy_initialize(){await super.lazy_initialize(),this.apply_coordinates();const{parent:e}=this,{edge_renderer:r,node_renderer:i}=this.model;this.edge_view=await(0,l.build_view)(r,{parent:e}),this.node_view=await(0,l.build_view)(i,{parent:e})}connect_signals(){super.connect_signals(),this.connect(this.model.layout_provider.change,(()=>{this.apply_coordinates(),this.edge_view.set_data(),this.node_view.set_data(),this.request_render()}))}apply_coordinates(){const{edge_renderer:e,node_renderer:r}=this.model;if(!(e.glyph instanceof h.MultiLine||e.glyph instanceof y.Patches))throw new Error(`${this}.edge_renderer.glyph must be a MultiLine glyph`);if(!(r.glyph instanceof _.XYGlyph))throw new Error(`${this}.node_renderer.glyph must be a XYGlyph glyph`);const i=this.model.layout_provider.edge_coordinates,n=this.model.layout_provider.node_coordinates;e.glyph.properties.xs.internal=!0,e.glyph.properties.ys.internal=!0,r.glyph.properties.x.internal=!0,r.glyph.properties.y.internal=!0,e.glyph.xs={expr:i.x},e.glyph.ys={expr:i.y},r.glyph.x={expr:n.x},r.glyph.y={expr:n.y}}remove(){this.edge_view.remove(),this.node_view.remove(),super.remove()}_render(){this.edge_view.render(),this.node_view.render()}renderer_view(e){if(e instanceof d.GlyphRenderer){if(e==this.edge_view.model)return this.edge_view;if(e==this.node_view.model)return this.node_view}return super.renderer_view(e)}}i.GraphRendererView=c,c.__name__=\"GraphRendererView\";class g extends s.DataRenderer{constructor(e){super(e)}get_selection_manager(){return this.node_renderer.data_source.selection_manager}}i.GraphRenderer=g,o=g,g.__name__=\"GraphRenderer\",o.prototype.default_view=c,o.define((({Ref:e})=>({layout_provider:[e(a.LayoutProvider)],node_renderer:[e(d.GlyphRenderer)],edge_renderer:[e(d.GlyphRenderer)],selection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly],inspection_policy:[e(p.GraphHitTestPolicy),()=>new p.NodesOnly]})))},\n", + " function _(e,t,n,o,c){o();(0,e(1).__exportStar)(e(74),n),c(\"Selection\",e(72).Selection)},\n", + " function _(a,e,S,o,r){o(),r(\"ServerSentDataSource\",a(342).ServerSentDataSource),r(\"AjaxDataSource\",a(344).AjaxDataSource),r(\"ColumnDataSource\",a(75).ColumnDataSource),r(\"ColumnarDataSource\",a(70).ColumnarDataSource),r(\"CDSView\",a(190).CDSView),r(\"DataSource\",a(71).DataSource),r(\"GeoJSONDataSource\",a(345).GeoJSONDataSource),r(\"WebDataSource\",a(343).WebDataSource)},\n", + " function _(e,t,i,a,s){a();const n=e(343);class r extends n.WebDataSource{constructor(e){super(e),this.initialized=!1}setup(){if(!this.initialized){this.initialized=!0;new EventSource(this.data_url).onmessage=e=>{var t;this.load_data(JSON.parse(e.data),this.mode,null!==(t=this.max_size)&&void 0!==t?t:void 0)}}}}i.ServerSentDataSource=r,r.__name__=\"ServerSentDataSource\"},\n", + " function _(e,t,a,n,r){var s;n();const l=e(75),o=e(20);class c extends l.ColumnDataSource{constructor(e){super(e)}get_column(e){const t=this.data[e];return null!=t?t:[]}get_length(){var e;return null!==(e=super.get_length())&&void 0!==e?e:0}initialize(){super.initialize(),this.setup()}load_data(e,t,a){const{adapter:n}=this;let r;switch(r=null!=n?n.execute(this,{response:e}):e,t){case\"replace\":this.data=r;break;case\"append\":{const e=this.data;for(const t of this.columns()){const n=Array.from(e[t]),s=Array.from(r[t]),l=n.concat(s);r[t]=null!=a?l.slice(-a):l}this.data=r;break}}}}a.WebDataSource=c,s=c,c.__name__=\"WebDataSource\",s.define((({Any:e,Int:t,String:a,Nullable:n})=>({max_size:[n(t),null],mode:[o.UpdateMode,\"replace\"],adapter:[n(e),null],data_url:[a]})))},\n", + " function _(t,e,i,s,a){var n;s();const r=t(343),o=t(20),l=t(19),d=t(13);class h extends r.WebDataSource{constructor(t){super(t),this.interval=null,this.initialized=!1}destroy(){null!=this.interval&&clearInterval(this.interval),super.destroy()}setup(){if(!this.initialized&&(this.initialized=!0,this.get_data(this.mode),null!=this.polling_interval)){const t=()=>this.get_data(this.mode,this.max_size,this.if_modified);this.interval=setInterval(t,this.polling_interval)}}get_data(t,e=null,i=!1){const s=this.prepare_request();s.addEventListener(\"load\",(()=>this.do_load(s,t,null!=e?e:void 0))),s.addEventListener(\"error\",(()=>this.do_error(s))),s.send()}prepare_request(){const t=new XMLHttpRequest;t.open(this.method,this.data_url,!0),t.withCredentials=!1,t.setRequestHeader(\"Content-Type\",this.content_type);const e=this.http_headers;for(const[i,s]of(0,d.entries)(e))t.setRequestHeader(i,s);return t}do_load(t,e,i){if(200===t.status){const s=JSON.parse(t.responseText);this.load_data(s,e,i)}}do_error(t){l.logger.error(`Failed to fetch JSON from ${this.data_url} with code ${t.status}`)}}i.AjaxDataSource=h,n=h,h.__name__=\"AjaxDataSource\",n.define((({Boolean:t,Int:e,String:i,Dict:s,Nullable:a})=>({polling_interval:[a(e),null],content_type:[i,\"application/json\"],http_headers:[s(i),{}],method:[o.HTTPMethod,\"POST\"],if_modified:[t,!1]})))},\n", + " function _(e,t,o,r,n){var s;r();const a=e(70),i=e(19),l=e(9),c=e(13);function _(e){return null!=e?e:NaN}const{hasOwnProperty:g}=Object.prototype;class u extends a.ColumnarDataSource{constructor(e){super(e)}initialize(){super.initialize(),this._update_data()}connect_signals(){super.connect_signals(),this.connect(this.properties.geojson.change,(()=>this._update_data()))}_update_data(){this.data=this.geojson_to_column_data()}_get_new_list_array(e){return(0,l.range)(0,e).map((e=>[]))}_get_new_nan_array(e){return(0,l.range)(0,e).map((e=>NaN))}_add_properties(e,t,o,r){var n;const s=null!==(n=e.properties)&&void 0!==n?n:{};for(const[e,n]of(0,c.entries)(s))g.call(t,e)||(t[e]=this._get_new_nan_array(r)),t[e][o]=_(n)}_add_geometry(e,t,o){function r(e,t){return e.concat([[NaN,NaN,NaN]]).concat(t)}switch(e.type){case\"Point\":{const[r,n,s]=e.coordinates;t.x[o]=r,t.y[o]=n,t.z[o]=_(s);break}case\"LineString\":{const{coordinates:r}=e;for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\");const r=e.coordinates[0];for(let e=0;e1&&i.logger.warn(\"Bokeh does not support Polygons with holes in, only exterior ring used.\"),n.push(t[0]);const s=n.reduce(r);for(let e=0;e({geojson:[e]}))),s.internal((({Dict:e,Arrayable:t})=>({data:[e(t),{}]})))},\n", + " function _(e,r,T,o,S){o(),S(\"BBoxTileSource\",e(347).BBoxTileSource),S(\"MercatorTileSource\",e(348).MercatorTileSource),S(\"QUADKEYTileSource\",e(351).QUADKEYTileSource),S(\"TileRenderer\",e(352).TileRenderer),S(\"TileSource\",e(349).TileSource),S(\"TMSTileSource\",e(355).TMSTileSource),S(\"WMTSTileSource\",e(353).WMTSTileSource)},\n", + " function _(e,t,r,o,l){var i;o();const n=e(348);class s extends n.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars);let l,i,n,s;return this.use_latlon?[i,s,l,n]=this.get_tile_geographic_bounds(e,t,r):[i,s,l,n]=this.get_tile_meter_bounds(e,t,r),o.replace(\"{XMIN}\",i.toString()).replace(\"{YMIN}\",s.toString()).replace(\"{XMAX}\",l.toString()).replace(\"{YMAX}\",n.toString())}}r.BBoxTileSource=s,i=s,s.__name__=\"BBoxTileSource\",i.define((({Boolean:e})=>({use_latlon:[e,!1]})))},\n", + " function _(t,e,i,_,s){var r;_();const o=t(349),n=t(9),l=t(350);class u extends o.TileSource{constructor(t){super(t)}initialize(){super.initialize(),this._resolutions=(0,n.range)(this.min_zoom,this.max_zoom+1).map((t=>this.get_resolution(t)))}_computed_initial_resolution(){return null!=this.initial_resolution?this.initial_resolution:2*Math.PI*6378137/this.tile_size}is_valid_tile(t,e,i){return!(!this.wrap_around&&(t<0||t>=2**i))&&!(e<0||e>=2**i)}parent_by_tile_xyz(t,e,i){const _=this.tile_xyz_to_quadkey(t,e,i),s=_.substring(0,_.length-1);return this.quadkey_to_tile_xyz(s)}get_resolution(t){return this._computed_initial_resolution()/2**t}get_resolution_by_extent(t,e,i){return[(t[2]-t[0])/i,(t[3]-t[1])/e]}get_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s);let o=0;for(const t of this._resolutions){if(r>t){if(0==o)return 0;if(o>0)return o-1}o+=1}return o-1}get_closest_level_by_extent(t,e,i){const _=(t[2]-t[0])/i,s=(t[3]-t[1])/e,r=Math.max(_,s),o=this._resolutions.reduce((function(t,e){return Math.abs(e-r)e?(u=o-s,a*=t):(u*=e,a=n-r)}const h=(u-(o-s))/2,c=(a-(n-r))/2;return[s-h,r-c,o+h,n+c]}tms_to_wmts(t,e,i){return[t,2**i-1-e,i]}wmts_to_tms(t,e,i){return[t,2**i-1-e,i]}pixels_to_meters(t,e,i){const _=this.get_resolution(i);return[t*_-this.x_origin_offset,e*_-this.y_origin_offset]}meters_to_pixels(t,e,i){const _=this.get_resolution(i);return[(t+this.x_origin_offset)/_,(e+this.y_origin_offset)/_]}pixels_to_tile(t,e){let i=Math.ceil(t/this.tile_size);i=0===i?i:i-1;return[i,Math.max(Math.ceil(e/this.tile_size)-1,0)]}pixels_to_raster(t,e,i){return[t,(this.tile_size<=l;t--)for(let i=n;i<=u;i++)this.is_valid_tile(i,t,e)&&h.push([i,t,e,this.get_tile_meter_bounds(i,t,e)]);return this.sort_tiles_from_center(h,[n,l,u,a]),h}quadkey_to_tile_xyz(t){let e=0,i=0;const _=t.length;for(let s=_;s>0;s--){const r=1<0;s--){const i=1<0;)if(s=s.substring(0,s.length-1),[t,e,i]=this.quadkey_to_tile_xyz(s),[t,e,i]=this.denormalize_xyz(t,e,i,_),this.tiles.has(this.tile_xyz_to_key(t,e,i)))return[t,e,i];return[0,0,0]}normalize_xyz(t,e,i){if(this.wrap_around){const _=2**i;return[(t%_+_)%_,e,i]}return[t,e,i]}denormalize_xyz(t,e,i,_){return[t+_*2**i,e,i]}denormalize_meters(t,e,i,_){return[t+2*_*Math.PI*6378137,e]}calculate_world_x_by_tile_xyz(t,e,i){return Math.floor(t/2**i)}}i.MercatorTileSource=u,r=u,u.__name__=\"MercatorTileSource\",r.define((({Boolean:t})=>({snap_to_zoom:[t,!1],wrap_around:[t,!0]}))),r.override({x_origin_offset:20037508.34,y_origin_offset:20037508.34,initial_resolution:156543.03392804097})},\n", + " function _(e,t,r,i,n){var l;i();const a=e(53),s=e(13);class c extends a.Model{constructor(e){super(e)}initialize(){super.initialize(),this.tiles=new Map,this._normalize_case()}connect_signals(){super.connect_signals(),this.connect(this.change,(()=>this._clear_cache()))}string_lookup_replace(e,t){let r=e;for(const[e,i]of(0,s.entries)(t))r=r.replace(`{${e}}`,i);return r}_normalize_case(){const e=this.url.replace(\"{x}\",\"{X}\").replace(\"{y}\",\"{Y}\").replace(\"{z}\",\"{Z}\").replace(\"{q}\",\"{Q}\").replace(\"{xmin}\",\"{XMIN}\").replace(\"{ymin}\",\"{YMIN}\").replace(\"{xmax}\",\"{XMAX}\").replace(\"{ymax}\",\"{YMAX}\");this.url=e}_clear_cache(){this.tiles=new Map}tile_xyz_to_key(e,t,r){return`${e}:${t}:${r}`}key_to_tile_xyz(e){const[t,r,i]=e.split(\":\").map((e=>parseInt(e)));return[t,r,i]}sort_tiles_from_center(e,t){const[r,i,n,l]=t,a=(n-r)/2+r,s=(l-i)/2+i;e.sort((function(e,t){return Math.sqrt((a-e[0])**2+(s-e[1])**2)-Math.sqrt((a-t[0])**2+(s-t[1])**2)}))}get_image_url(e,t,r){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",t.toString()).replace(\"{Z}\",r.toString())}}r.TileSource=c,l=c,c.__name__=\"TileSource\",l.define((({Number:e,String:t,Dict:r,Nullable:i})=>({url:[t,\"\"],tile_size:[e,256],max_zoom:[e,30],min_zoom:[e,0],extra_url_vars:[r(t),{}],attribution:[t,\"\"],x_origin_offset:[e],y_origin_offset:[e],initial_resolution:[i(e),null]})))},\n", + " function _(t,e,r,n,o){n();const c=t(78);function _(t,e){return c.wgs84_mercator.compute(t,e)}function g(t,e){return c.wgs84_mercator.invert(t,e)}r.geographic_to_meters=_,r.meters_to_geographic=g,r.geographic_extent_to_meters=function(t){const[e,r,n,o]=t,[c,g]=_(e,r),[i,u]=_(n,o);return[c,g,i,u]},r.meters_extent_to_geographic=function(t){const[e,r,n,o]=t,[c,_]=g(e,r),[i,u]=g(n,o);return[c,_,i,u]}},\n", + " function _(e,t,r,s,_){s();const o=e(348);class c extends o.MercatorTileSource{constructor(e){super(e)}get_image_url(e,t,r){const s=this.string_lookup_replace(this.url,this.extra_url_vars),[_,o,c]=this.tms_to_wmts(e,t,r),i=this.tile_xyz_to_quadkey(_,o,c);return s.replace(\"{Q}\",i)}}r.QUADKEYTileSource=c,c.__name__=\"QUADKEYTileSource\"},\n", + " function _(t,e,i,s,_){s();const n=t(1);var a;const o=t(349),r=t(353),h=t(41),l=t(58),d=t(43),m=t(136),c=t(9),u=t(8),p=(0,n.__importStar)(t(354));class g extends h.RendererView{initialize(){this._tiles=[],super.initialize()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.request_render())),this.connect(this.model.tile_source.change,(()=>this.request_render()))}remove(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el),super.remove()}styles(){return[...super.styles(),p.default]}get_extent(){return[this.x_range.start,this.y_range.start,this.x_range.end,this.y_range.end]}get map_plot(){return this.plot_model}get map_canvas(){return this.layer.ctx}get map_frame(){return this.plot_view.frame}get x_range(){return this.map_plot.x_range}get y_range(){return this.map_plot.y_range}_set_data(){this.extent=this.get_extent(),this._last_height=void 0,this._last_width=void 0}_update_attribution(){null!=this.attribution_el&&(0,d.removeElement)(this.attribution_el);const{attribution:t}=this.model.tile_source;if((0,u.isString)(t)&&t.length>0){const{layout:e,frame:i}=this.plot_view,s=e.bbox.width-i.bbox.right,_=e.bbox.height-i.bbox.bottom,n=i.bbox.width;this.attribution_el=(0,d.div)({class:p.tile_attribution,style:{position:\"absolute\",right:`${s}px`,bottom:`${_}px`,\"max-width\":n-4+\"px\",padding:\"2px\",\"background-color\":\"rgba(255,255,255,0.5)\",\"font-size\":\"9px\",\"line-height\":\"1.05\",\"white-space\":\"nowrap\",overflow:\"hidden\",\"text-overflow\":\"ellipsis\"}}),this.plot_view.canvas_view.add_event(this.attribution_el),this.attribution_el.innerHTML=t,this.attribution_el.title=this.attribution_el.textContent.replace(/\\s*\\n\\s*/g,\" \")}}_map_data(){this.initial_extent=this.get_extent();const t=this.model.tile_source.get_level_by_extent(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width),e=this.model.tile_source.snap_to_zoom_level(this.initial_extent,this.map_frame.bbox.height,this.map_frame.bbox.width,t);this.x_range.start=e[0],this.y_range.start=e[1],this.x_range.end=e[2],this.y_range.end=e[3],this.x_range instanceof l.Range1d&&(this.x_range.reset_start=e[0],this.x_range.reset_end=e[2]),this.y_range instanceof l.Range1d&&(this.y_range.reset_start=e[1],this.y_range.reset_end=e[3]),this._update_attribution()}_create_tile(t,e,i,s,_=!1){const n=this.model.tile_source.tile_xyz_to_quadkey(t,e,i),a=this.model.tile_source.tile_xyz_to_key(t,e,i);if(this.model.tile_source.tiles.has(a))return;const[o,r,h]=this.model.tile_source.normalize_xyz(t,e,i),l=this.model.tile_source.get_image_url(o,r,h),d={img:void 0,tile_coords:[t,e,i],normalized_coords:[o,r,h],quadkey:n,cache_key:a,bounds:s,loaded:!1,finished:!1,x_coord:s[0],y_coord:s[3]};this.model.tile_source.tiles.set(a,d),this._tiles.push(d),new m.ImageLoader(l,{loaded:t=>{Object.assign(d,{img:t,loaded:!0}),_?(d.finished=!0,this.notify_finished()):this.request_render()},failed(){d.finished=!0}})}_enforce_aspect_ratio(){if(this._last_height!==this.map_frame.bbox.height||this._last_width!==this.map_frame.bbox.width){const t=this.get_extent(),e=this.model.tile_source.get_level_by_extent(t,this.map_frame.bbox.height,this.map_frame.bbox.width),i=this.model.tile_source.snap_to_zoom_level(t,this.map_frame.bbox.height,this.map_frame.bbox.width,e);this.x_range.setv({start:i[0],end:i[2]}),this.y_range.setv({start:i[1],end:i[3]}),this.extent=i,this._last_height=this.map_frame.bbox.height,this._last_width=this.map_frame.bbox.width}}has_finished(){if(!super.has_finished())return!1;if(0==this._tiles.length)return!1;for(const t of this._tiles)if(!t.finished)return!1;return!0}_render(){null==this.map_initialized&&(this._set_data(),this._map_data(),this.map_initialized=!0),this._enforce_aspect_ratio(),this._update(),null!=this.prefetch_timer&&clearTimeout(this.prefetch_timer),this.prefetch_timer=setTimeout(this._prefetch_tiles.bind(this),500),this.has_finished()&&this.notify_finished()}_draw_tile(t){const e=this.model.tile_source.tiles.get(t);if(null!=e&&e.loaded){const[[t],[i]]=this.coordinates.map_to_screen([e.bounds[0]],[e.bounds[3]]),[[s],[_]]=this.coordinates.map_to_screen([e.bounds[2]],[e.bounds[1]]),n=s-t,a=_-i,o=t,r=i,h=this.map_canvas.getImageSmoothingEnabled();this.map_canvas.setImageSmoothingEnabled(this.model.smoothing),this.map_canvas.drawImage(e.img,o,r,n,a),this.map_canvas.setImageSmoothingEnabled(h),e.finished=!0}}_set_rect(){const t=this.plot_model.outline_line_width,e=this.map_frame.bbox.left+t/2,i=this.map_frame.bbox.top+t/2,s=this.map_frame.bbox.width-t,_=this.map_frame.bbox.height-t;this.map_canvas.rect(e,i,s,_),this.map_canvas.clip()}_render_tiles(t){this.map_canvas.save(),this._set_rect(),this.map_canvas.globalAlpha=this.model.alpha;for(const e of t)this._draw_tile(e);this.map_canvas.restore()}_prefetch_tiles(){const{tile_source:t}=this.model,e=this.get_extent(),i=this.map_frame.bbox.height,s=this.map_frame.bbox.width,_=this.model.tile_source.get_level_by_extent(e,i,s),n=this.model.tile_source.get_tiles_by_extent(e,_);for(let e=0,i=Math.min(10,n.length);ei&&(s=this.extent,o=i,r=!0),r&&(this.x_range.setv({start:s[0],end:s[2]}),this.y_range.setv({start:s[1],end:s[3]})),this.extent=s;const h=t.get_tiles_by_extent(s,o),l=[],d=[],m=[],u=[];for(const e of h){const[i,s,n]=e,a=t.tile_xyz_to_key(i,s,n),o=t.tiles.get(a);if(null!=o&&o.loaded)d.push(a);else if(this.model.render_parents){const[e,a,o]=t.get_closest_parent_by_tile_xyz(i,s,n),r=t.tile_xyz_to_key(e,a,o),h=t.tiles.get(r);if(null!=h&&h.loaded&&!(0,c.includes)(m,r)&&m.push(r),_){const e=t.children_by_tile_xyz(i,s,n);for(const[i,s,_]of e){const e=t.tile_xyz_to_key(i,s,_);t.tiles.has(e)&&u.push(e)}}}null==o&&l.push(e)}this._render_tiles(m),this._render_tiles(u),this._render_tiles(d),null!=this.render_timer&&clearTimeout(this.render_timer),this.render_timer=setTimeout((()=>this._fetch_tiles(l)),65)}}i.TileRendererView=g,g.__name__=\"TileRendererView\";class b extends h.Renderer{constructor(t){super(t)}}i.TileRenderer=b,a=b,b.__name__=\"TileRenderer\",a.prototype.default_view=g,a.define((({Boolean:t,Number:e,Ref:i})=>({alpha:[e,1],smoothing:[t,!0],tile_source:[i(o.TileSource),()=>new r.WMTSTileSource],render_parents:[t,!0]}))),a.override({level:\"image\"})},\n", + " function _(t,e,r,o,s){o();const c=t(348);class i extends c.MercatorTileSource{constructor(t){super(t)}get_image_url(t,e,r){const o=this.string_lookup_replace(this.url,this.extra_url_vars),[s,c,i]=this.tms_to_wmts(t,e,r);return o.replace(\"{X}\",s.toString()).replace(\"{Y}\",c.toString()).replace(\"{Z}\",i.toString())}}r.WMTSTileSource=i,i.__name__=\"WMTSTileSource\"},\n", + " function _(t,o,i,b,r){b(),i.root=\"bk-root\",i.tile_attribution=\"bk-tile-attribution\",i.default=\".bk-root .bk-tile-attribution a{color:black;}\"},\n", + " function _(e,r,t,c,o){c();const i=e(348);class l extends i.MercatorTileSource{constructor(e){super(e)}get_image_url(e,r,t){return this.string_lookup_replace(this.url,this.extra_url_vars).replace(\"{X}\",e.toString()).replace(\"{Y}\",r.toString()).replace(\"{Z}\",t.toString())}}t.TMSTileSource=l,l.__name__=\"TMSTileSource\"},\n", + " function _(e,t,u,a,r){a(),r(\"CanvasTexture\",e(357).CanvasTexture),r(\"ImageURLTexture\",e(359).ImageURLTexture),r(\"Texture\",e(358).Texture)},\n", + " function _(t,e,n,c,s){var r;c();const o=t(358),a=t(34);class u extends o.Texture{constructor(t){super(t)}get func(){const t=(0,a.use_strict)(this.code);return new Function(\"ctx\",\"color\",\"scale\",\"weight\",t)}get_pattern(t,e,n){const c=document.createElement(\"canvas\");c.width=e,c.height=e;const s=c.getContext(\"2d\");return this.func.call(this,s,t,e,n),c}}n.CanvasTexture=u,r=u,u.__name__=\"CanvasTexture\",r.define((({String:t})=>({code:[t]})))},\n", + " function _(e,t,n,r,o){var i;r();const s=e(53),u=e(20);class c extends s.Model{constructor(e){super(e)}}n.Texture=c,i=c,c.__name__=\"Texture\",i.define((()=>({repetition:[u.TextureRepetition,\"repeat\"]})))},\n", + " function _(e,t,i,r,n){var a;r();const s=e(358),o=e(136);class u extends s.Texture{constructor(e){super(e)}initialize(){super.initialize(),this._loader=new o.ImageLoader(this.url)}get_pattern(e,t,i){const{_loader:r}=this;return this._loader.finished?r.image:r.promise}}i.ImageURLTexture=u,a=u,u.__name__=\"ImageURLTexture\",a.define((({String:e})=>({url:[e]})))},\n", + " function _(o,l,T,e,t){e(),t(\"ActionTool\",o(238).ActionTool),t(\"CustomAction\",o(361).CustomAction),t(\"HelpTool\",o(239).HelpTool),t(\"RedoTool\",o(362).RedoTool),t(\"ResetTool\",o(363).ResetTool),t(\"SaveTool\",o(364).SaveTool),t(\"UndoTool\",o(365).UndoTool),t(\"ZoomInTool\",o(366).ZoomInTool),t(\"ZoomOutTool\",o(369).ZoomOutTool),t(\"ButtonTool\",o(224).ButtonTool),t(\"EditTool\",o(370).EditTool),t(\"BoxEditTool\",o(371).BoxEditTool),t(\"FreehandDrawTool\",o(372).FreehandDrawTool),t(\"PointDrawTool\",o(373).PointDrawTool),t(\"PolyDrawTool\",o(374).PolyDrawTool),t(\"PolyTool\",o(375).PolyTool),t(\"PolyEditTool\",o(376).PolyEditTool),t(\"BoxSelectTool\",o(377).BoxSelectTool),t(\"BoxZoomTool\",o(379).BoxZoomTool),t(\"GestureTool\",o(223).GestureTool),t(\"LassoSelectTool\",o(380).LassoSelectTool),t(\"LineEditTool\",o(382).LineEditTool),t(\"PanTool\",o(384).PanTool),t(\"PolySelectTool\",o(381).PolySelectTool),t(\"RangeTool\",o(385).RangeTool),t(\"SelectTool\",o(378).SelectTool),t(\"TapTool\",o(386).TapTool),t(\"WheelPanTool\",o(387).WheelPanTool),t(\"WheelZoomTool\",o(388).WheelZoomTool),t(\"CrosshairTool\",o(389).CrosshairTool),t(\"CustomJSHover\",o(390).CustomJSHover),t(\"HoverTool\",o(391).HoverTool),t(\"InspectTool\",o(232).InspectTool),t(\"Tool\",o(222).Tool),t(\"ToolProxy\",o(394).ToolProxy),t(\"Toolbar\",o(221).Toolbar),t(\"ToolbarBase\",o(233).ToolbarBase),t(\"ProxyToolbar\",o(395).ProxyToolbar),t(\"ToolbarBox\",o(395).ToolbarBox)},\n", + " function _(t,o,e,s,n){var c;s();const i=t(238);class u extends i.ActionToolButtonView{css_classes(){return super.css_classes().concat(\"bk-toolbar-button-custom-action\")}}e.CustomActionButtonView=u,u.__name__=\"CustomActionButtonView\";class l extends i.ActionToolView{doit(){var t;null===(t=this.model.callback)||void 0===t||t.execute(this.model)}}e.CustomActionView=l,l.__name__=\"CustomActionView\";class a extends i.ActionTool{constructor(t){super(t),this.tool_name=\"Custom Action\",this.button_view=u}}e.CustomAction=a,c=a,a.__name__=\"CustomAction\",c.prototype.default_view=l,c.define((({Any:t,String:o,Nullable:e})=>({callback:[e(t)],icon:[o]}))),c.override({description:\"Perform a Custom Action\"})},\n", + " function _(e,o,t,i,s){var n;i();const l=e(238),_=e(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_redo))}doit(){const e=this.plot_view.state.redo();null!=(null==e?void 0:e.range)&&this.plot_view.trigger_ranges_update_event()}}t.RedoToolView=d,d.__name__=\"RedoToolView\";class a extends l.ActionTool{constructor(e){super(e),this.tool_name=\"Redo\",this.icon=_.tool_icon_redo}}t.RedoTool=a,n=a,a.__name__=\"RedoTool\",n.prototype.default_view=d,n.override({disabled:!0}),n.register_alias(\"redo\",(()=>new a))},\n", + " function _(e,o,t,s,i){var _;s();const n=e(238),l=e(228);class c extends n.ActionToolView{doit(){this.plot_view.reset()}}t.ResetToolView=c,c.__name__=\"ResetToolView\";class r extends n.ActionTool{constructor(e){super(e),this.tool_name=\"Reset\",this.icon=l.tool_icon_reset}}t.ResetTool=r,_=r,r.__name__=\"ResetTool\",_.prototype.default_view=c,_.register_alias(\"reset\",(()=>new r))},\n", + " function _(e,o,t,a,i){var s;a();const c=e(238),n=e(228);class l extends c.ActionToolView{async copy(){const e=await this.plot_view.to_blob(),o=new ClipboardItem({[e.type]:Promise.resolve(e)});await navigator.clipboard.write([o])}async save(e){const o=await this.plot_view.to_blob(),t=document.createElement(\"a\");t.href=URL.createObjectURL(o),t.download=e,t.target=\"_blank\",t.dispatchEvent(new MouseEvent(\"click\"))}doit(e=\"save\"){switch(e){case\"save\":this.save(\"bokeh_plot\");break;case\"copy\":this.copy()}}}t.SaveToolView=l,l.__name__=\"SaveToolView\";class r extends c.ActionTool{constructor(e){super(e),this.tool_name=\"Save\",this.icon=n.tool_icon_save}get menu(){return[{icon:\"bk-tool-icon-copy-to-clipboard\",tooltip:\"Copy image to clipboard\",if:()=>\"undefined\"!=typeof ClipboardItem,handler:()=>{this.do.emit(\"copy\")}}]}}t.SaveTool=r,s=r,r.__name__=\"SaveTool\",s.prototype.default_view=l,s.register_alias(\"save\",(()=>new r))},\n", + " function _(o,e,t,n,i){var s;n();const l=o(238),_=o(228);class d extends l.ActionToolView{connect_signals(){super.connect_signals(),this.connect(this.plot_view.state.changed,(()=>this.model.disabled=!this.plot_view.state.can_undo))}doit(){const o=this.plot_view.state.undo();null!=(null==o?void 0:o.range)&&this.plot_view.trigger_ranges_update_event()}}t.UndoToolView=d,d.__name__=\"UndoToolView\";class a extends l.ActionTool{constructor(o){super(o),this.tool_name=\"Undo\",this.icon=_.tool_icon_undo}}t.UndoTool=a,s=a,a.__name__=\"UndoTool\",s.prototype.default_view=d,s.override({disabled:!0}),s.register_alias(\"undo\",(()=>new a))},\n", + " function _(o,n,e,i,s){var t;i();const _=o(367),m=o(228);class a extends _.ZoomBaseToolView{}e.ZoomInToolView=a,a.__name__=\"ZoomInToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=1,this.tool_name=\"Zoom In\",this.icon=m.tool_icon_zoom_in}}e.ZoomInTool=l,t=l,l.__name__=\"ZoomInTool\",t.prototype.default_view=a,t.register_alias(\"zoom_in\",(()=>new l({dimensions:\"both\"}))),t.register_alias(\"xzoom_in\",(()=>new l({dimensions:\"width\"}))),t.register_alias(\"yzoom_in\",(()=>new l({dimensions:\"height\"})))},\n", + " function _(o,t,e,i,s){var n;i();const a=o(238),_=o(20),l=o(368);class m extends a.ActionToolView{doit(){var o;const t=this.plot_view.frame,e=this.model.dimensions,i=\"width\"==e||\"both\"==e,s=\"height\"==e||\"both\"==e,n=(0,l.scale_range)(t,this.model.sign*this.model.factor,i,s);this.plot_view.state.push(\"zoom_out\",{range:n}),this.plot_view.update_range(n,{scrolling:!0,maintain_focus:this.model.maintain_focus}),null===(o=this.model.document)||void 0===o||o.interactive_start(this.plot_model),this.plot_view.trigger_ranges_update_event()}}e.ZoomBaseToolView=m,m.__name__=\"ZoomBaseToolView\";class h extends a.ActionTool{constructor(o){super(o),this.maintain_focus=!0}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.ZoomBaseTool=h,n=h,h.__name__=\"ZoomBaseTool\",n.define((({Percent:o})=>({factor:[o,.1],dimensions:[_.Dimensions,\"both\"]})))},\n", + " function _(n,t,o,r,s){r();const c=n(10);function e(n,t,o){const[r,s]=[n.start,n.end],c=null!=o?o:(s+r)/2;return[r-(r-c)*t,s-(s-c)*t]}function a(n,[t,o]){const r=new Map;for(const[s,c]of n){const[n,e]=c.r_invert(t,o);r.set(s,{start:n,end:e})}return r}o.scale_highlow=e,o.get_info=a,o.scale_range=function(n,t,o=!0,r=!0,s){t=(0,c.clamp)(t,-.9,.9);const l=o?t:0,[u,i]=e(n.bbox.h_range,l,null!=s?s.x:void 0),_=a(n.x_scales,[u,i]),f=r?t:0,[g,x]=e(n.bbox.v_range,f,null!=s?s.y:void 0);return{xrs:_,yrs:a(n.y_scales,[g,x]),factor:t}}},\n", + " function _(o,e,t,i,s){var n;i();const _=o(367),a=o(228);class m extends _.ZoomBaseToolView{}t.ZoomOutToolView=m,m.__name__=\"ZoomOutToolView\";class l extends _.ZoomBaseTool{constructor(o){super(o),this.sign=-1,this.tool_name=\"Zoom Out\",this.icon=a.tool_icon_zoom_out}}t.ZoomOutTool=l,n=l,l.__name__=\"ZoomOutTool\",n.prototype.default_view=m,n.define((({Boolean:o})=>({maintain_focus:[o,!0]}))),n.register_alias(\"zoom_out\",(()=>new l({dimensions:\"both\"}))),n.register_alias(\"xzoom_out\",(()=>new l({dimensions:\"width\"}))),n.register_alias(\"yzoom_out\",(()=>new l({dimensions:\"height\"})))},\n", + " function _(e,t,s,o,n){var r;o();const i=e(9),c=e(8),a=e(11),_=e(175),l=e(223);class d extends l.GestureToolView{constructor(){super(...arguments),this._mouse_in_frame=!0}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,a.unreachable)():\"replace\"}_move_enter(e){this._mouse_in_frame=!0}_move_exit(e){this._mouse_in_frame=!1}_map_drag(e,t,s){if(!this.plot_view.frame.bbox.contains(e,t))return null;const o=this.plot_view.renderer_view(s);if(null==o)return null;return[o.coordinates.x_scale.invert(e),o.coordinates.y_scale.invert(t)]}_delete_selected(e){const t=e.data_source,s=t.selected.indices;s.sort();for(const e of t.columns()){const o=t.get_array(e);for(let e=0;e({custom_icon:[n(t),null],empty_value:[e],renderers:[s(o(_.GlyphRenderer)),[]]})))},\n", + " function _(e,t,s,i,_){var o;i();const n=e(43),a=e(20),d=e(370),l=e(228);class r extends d.EditToolView{_tap(e){null==this._draw_basepoint&&null==this._basepoint&&this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)if(e.keyCode===n.Keys.Backspace)this._delete_selected(t);else if(e.keyCode==n.Keys.Esc){t.data_source.selection_manager.clear()}}_set_extent([e,t],[s,i],_,o=!1){const n=this.model.renderers[0],a=this.plot_view.renderer_view(n);if(null==a)return;const d=n.glyph,l=n.data_source,[r,h]=a.coordinates.x_scale.r_invert(e,t),[p,u]=a.coordinates.y_scale.r_invert(s,i),[c,m]=[(r+h)/2,(p+u)/2],[f,b]=[h-r,u-p],[y,x]=[d.x.field,d.y.field],[w,v]=[d.width.field,d.height.field];if(_)this._pop_glyphs(l,this.model.num_objects),y&&l.get_array(y).push(c),x&&l.get_array(x).push(m),w&&l.get_array(w).push(f),v&&l.get_array(v).push(b),this._pad_empty_columns(l,[y,x,w,v]);else{const e=l.data[y].length-1;y&&(l.data[y][e]=c),x&&(l.data[x][e]=m),w&&(l.data[w][e]=f),v&&(l.data[v][e]=b)}this._emit_cds_changes(l,!0,!1,o)}_update_box(e,t=!1,s=!1){if(null==this._draw_basepoint)return;const i=[e.sx,e.sy],_=this.plot_view.frame,o=this.model.dimensions,n=this.model._get_dim_limits(this._draw_basepoint,i,_,o);if(null!=n){const[e,i]=n;this._set_extent(e,i,t,s)}}_doubletap(e){this.model.active&&(null!=this._draw_basepoint?(this._update_box(e,!1,!0),this._draw_basepoint=null):(this._draw_basepoint=[e.sx,e.sy],this._select_event(e,\"append\",this.model.renderers),this._update_box(e,!0,!1)))}_move(e){this._update_box(e,!1,!1)}_pan_start(e){if(e.shiftKey){if(null!=this._draw_basepoint)return;this._draw_basepoint=[e.sx,e.sy],this._update_box(e,!0,!1)}else{if(null!=this._basepoint)return;this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy]}}_pan(e,t=!1,s=!1){if(e.shiftKey){if(null==this._draw_basepoint)return;this._update_box(e,t,s)}else{if(null==this._basepoint)return;this._drag_points(e,this.model.renderers)}}_pan_end(e){if(this._pan(e,!1,!0),e.shiftKey)this._draw_basepoint=null;else{this._basepoint=null;for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0)}}}s.BoxEditToolView=r,r.__name__=\"BoxEditToolView\";class h extends d.EditTool{constructor(e){super(e),this.tool_name=\"Box Edit Tool\",this.icon=l.tool_icon_box_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=1}}s.BoxEditTool=h,o=h,h.__name__=\"BoxEditTool\",o.prototype.default_view=r,o.define((({Int:e})=>({dimensions:[a.Dimensions,\"both\"],num_objects:[e,0]})))},\n", + " function _(e,t,a,s,r){var _;s();const d=e(43),o=e(8),n=e(370),i=e(228);class l extends n.EditToolView{_draw(e,t,a=!1){if(!this.model.active)return;const s=this.model.renderers[0],r=this._map_drag(e.sx,e.sy,s);if(null==r)return;const[_,d]=r,n=s.data_source,i=s.glyph,[l,h]=[i.xs.field,i.ys.field];if(\"new\"==t)this._pop_glyphs(n,this.model.num_objects),l&&n.get_array(l).push([_]),h&&n.get_array(h).push([d]),this._pad_empty_columns(n,[l,h]);else if(\"add\"==t){if(l){const e=n.data[l].length-1;let t=n.get_array(l)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[l][e]=t),t.push(_)}if(h){const e=n.data[h].length-1;let t=n.get_array(h)[e];(0,o.isArray)(t)||(t=Array.from(t),n.data[h][e]=t),t.push(d)}}this._emit_cds_changes(n,!0,!0,a)}_pan_start(e){this._draw(e,\"new\")}_pan(e){this._draw(e,\"add\")}_pan_end(e){this._draw(e,\"add\",!0)}_tap(e){this._select_event(e,this._select_mode(e),this.model.renderers)}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===d.Keys.Esc?t.data_source.selection_manager.clear():e.keyCode===d.Keys.Backspace&&this._delete_selected(t)}}a.FreehandDrawToolView=l,l.__name__=\"FreehandDrawToolView\";class h extends n.EditTool{constructor(e){super(e),this.tool_name=\"Freehand Draw Tool\",this.icon=i.tool_icon_freehand_draw,this.event_type=[\"pan\",\"tap\"],this.default_order=3}}a.FreehandDrawTool=h,_=h,h.__name__=\"FreehandDrawTool\",_.prototype.default_view=l,_.define((({Int:e})=>({num_objects:[e,0]}))),_.register_alias(\"freehand_draw\",(()=>new h))},\n", + " function _(e,t,s,o,a){var i;o();const n=e(43),_=e(370),r=e(228);class d extends _.EditToolView{_tap(e){if(this._select_event(e,this._select_mode(e),this.model.renderers).length||!this.model.add)return;const t=this.model.renderers[0],s=this._map_drag(e.sx,e.sy,t);if(null==s)return;const o=t.glyph,a=t.data_source,[i,n]=[o.x.field,o.y.field],[_,r]=s;this._pop_glyphs(a,this.model.num_objects),i&&a.get_array(i).push(_),n&&a.get_array(n).push(r),this._pad_empty_columns(a,[i,n]),a.change.emit(),a.data=a.data,a.properties.data.change.emit()}_keyup(e){if(this.model.active&&this._mouse_in_frame)for(const t of this.model.renderers)e.keyCode===n.Keys.Backspace?this._delete_selected(t):e.keyCode==n.Keys.Esc&&t.data_source.selection_manager.clear()}_pan_start(e){this.model.drag&&(this._select_event(e,\"append\",this.model.renderers),this._basepoint=[e.sx,e.sy])}_pan(e){this.model.drag&&null!=this._basepoint&&this._drag_points(e,this.model.renderers)}_pan_end(e){if(this.model.drag){this._pan(e);for(const e of this.model.renderers)this._emit_cds_changes(e.data_source,!1,!0,!0);this._basepoint=null}}}s.PointDrawToolView=d,d.__name__=\"PointDrawToolView\";class l extends _.EditTool{constructor(e){super(e),this.tool_name=\"Point Draw Tool\",this.icon=r.tool_icon_point_draw,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=2}}s.PointDrawTool=l,i=l,l.__name__=\"PointDrawTool\",i.prototype.default_view=d,i.define((({Boolean:e,Int:t})=>({add:[e,!0],drag:[e,!0],num_objects:[t,0]})))},\n", + " function _(e,t,s,i,a){var r;i();const o=e(43),n=e(8),d=e(375),_=e(228);class h extends d.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._initialized=!1}_tap(e){this._drawing?this._draw(e,\"add\",!0):this._select_event(e,this._select_mode(e),this.model.renderers)}_draw(e,t,s=!1){const i=this.model.renderers[0],a=this._map_drag(e.sx,e.sy,i);if(this._initialized||this.activate(),null==a)return;const[r,o]=this._snap_to_vertex(e,...a),d=i.data_source,_=i.glyph,[h,l]=[_.xs.field,_.ys.field];if(\"new\"==t)this._pop_glyphs(d,this.model.num_objects),h&&d.get_array(h).push([r,r]),l&&d.get_array(l).push([o,o]),this._pad_empty_columns(d,[h,l]);else if(\"edit\"==t){if(h){const e=d.data[h][d.data[h].length-1];e[e.length-1]=r}if(l){const e=d.data[l][d.data[l].length-1];e[e.length-1]=o}}else if(\"add\"==t){if(h){const e=d.data[h].length-1;let t=d.get_array(h)[e];const s=t[t.length-1];t[t.length-1]=r,(0,n.isArray)(t)||(t=Array.from(t),d.data[h][e]=t),t.push(s)}if(l){const e=d.data[l].length-1;let t=d.get_array(l)[e];const s=t[t.length-1];t[t.length-1]=o,(0,n.isArray)(t)||(t=Array.from(t),d.data[l][e]=t),t.push(s)}}this._emit_cds_changes(d,!0,!1,s)}_show_vertices(){if(!this.model.active)return;const e=[],t=[];for(let s=0;sthis._show_vertices()))}this._initialized=!0}}deactivate(){this._drawing&&(this._remove(),this._drawing=!1),this.model.vertex_renderer&&this._hide_vertices()}}s.PolyDrawToolView=h,h.__name__=\"PolyDrawToolView\";class l extends d.PolyTool{constructor(e){super(e),this.tool_name=\"Polygon Draw Tool\",this.icon=_.tool_icon_poly_draw,this.event_type=[\"pan\",\"tap\",\"move\"],this.default_order=3}}s.PolyDrawTool=l,r=l,l.__name__=\"PolyDrawTool\",r.prototype.default_view=h,r.define((({Boolean:e,Int:t})=>({drag:[e,!0],num_objects:[t,0]})))},\n", + " function _(e,r,t,s,o){var _;s();const d=e(8),i=e(370);class l extends i.EditToolView{_set_vertices(e,r){const t=this.model.vertex_renderer.glyph,s=this.model.vertex_renderer.data_source,[o,_]=[t.x.field,t.y.field];o&&((0,d.isArray)(e)?s.data[o]=e:t.x={value:e}),_&&((0,d.isArray)(r)?s.data[_]=r:t.y={value:r}),this._emit_cds_changes(s,!0,!0,!1)}_hide_vertices(){this._set_vertices([],[])}_snap_to_vertex(e,r,t){if(this.model.vertex_renderer){const s=this._select_event(e,\"replace\",[this.model.vertex_renderer]),o=this.model.vertex_renderer.data_source,_=this.model.vertex_renderer.glyph,[d,i]=[_.x.field,_.y.field];if(s.length){const e=o.selected.indices[0];d&&(r=o.data[d][e]),i&&(t=o.data[i][e]),o.selection_manager.clear()}}return[r,t]}}t.PolyToolView=l,l.__name__=\"PolyToolView\";class n extends i.EditTool{constructor(e){super(e)}}t.PolyTool=n,_=n,n.__name__=\"PolyTool\",_.define((({AnyRef:e})=>({vertex_renderer:[e()]})))},\n", + " function _(e,t,s,r,i){var _;r();const d=e(43),n=e(8),l=e(375),a=e(228);class c extends l.PolyToolView{constructor(){super(...arguments),this._drawing=!1,this._cur_index=null}_doubletap(e){if(!this.model.active)return;const t=this._map_drag(e.sx,e.sy,this.model.vertex_renderer);if(null==t)return;const[s,r]=t,i=this._select_event(e,\"replace\",[this.model.vertex_renderer]),_=this.model.vertex_renderer.data_source,d=this.model.vertex_renderer.glyph,[n,l]=[d.x.field,d.y.field];if(i.length&&null!=this._selected_renderer){const e=_.selected.indices[0];this._drawing?(this._drawing=!1,_.selection_manager.clear()):(_.selected.indices=[e+1],n&&_.get_array(n).splice(e+1,0,s),l&&_.get_array(l).splice(e+1,0,r),this._drawing=!0),_.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}else this._show_vertices(e)}_show_vertices(e){if(!this.model.active)return;const t=this.model.renderers[0],s=()=>this._update_vertices(t),r=null==t?void 0:t.data_source,i=this._select_event(e,\"replace\",this.model.renderers);if(!i.length)return this._set_vertices([],[]),this._selected_renderer=null,this._drawing=!1,this._cur_index=null,void(null!=r&&r.disconnect(r.properties.data.change,s));null!=r&&r.connect(r.properties.data.change,s),this._cur_index=i[0].data_source.selected.indices[0],this._update_vertices(i[0])}_update_vertices(e){const t=e.glyph,s=e.data_source,r=this._cur_index,[i,_]=[t.xs.field,t.ys.field];if(this._drawing)return;if(null==r&&(i||_))return;let d,l;i&&null!=r?(d=s.data[i][r],(0,n.isArray)(d)||(s.data[i][r]=d=Array.from(d))):d=t.xs.value,_&&null!=r?(l=s.data[_][r],(0,n.isArray)(l)||(s.data[_][r]=l=Array.from(l))):l=t.ys.value,this._selected_renderer=e,this._set_vertices(d,l)}_move(e){if(this._drawing&&null!=this._selected_renderer){const t=this.model.vertex_renderer,s=t.data_source,r=t.glyph,i=this._map_drag(e.sx,e.sy,t);if(null==i)return;let[_,d]=i;const n=s.selected.indices;[_,d]=this._snap_to_vertex(e,_,d),s.selected.indices=n;const[l,a]=[r.x.field,r.y.field],c=n[0];l&&(s.data[l][c]=_),a&&(s.data[a][c]=d),s.change.emit(),this._selected_renderer.data_source.change.emit()}}_tap(e){const t=this.model.vertex_renderer,s=this._map_drag(e.sx,e.sy,t);if(null==s)return;if(this._drawing&&this._selected_renderer){let[r,i]=s;const _=t.data_source,d=t.glyph,[n,l]=[d.x.field,d.y.field],a=_.selected.indices;[r,i]=this._snap_to_vertex(e,r,i);const c=a[0];if(_.selected.indices=[c+1],n){const e=_.get_array(n),t=e[c];e[c]=r,e.splice(c+1,0,t)}if(l){const e=_.get_array(l),t=e[c];e[c]=i,e.splice(c+1,0,t)}return _.change.emit(),void this._emit_cds_changes(this._selected_renderer.data_source,!0,!1,!0)}const r=this._select_mode(e);this._select_event(e,r,[t]),this._select_event(e,r,this.model.renderers)}_remove_vertex(){if(!this._drawing||!this._selected_renderer)return;const e=this.model.vertex_renderer,t=e.data_source,s=e.glyph,r=t.selected.indices[0],[i,_]=[s.x.field,s.y.field];i&&t.get_array(i).splice(r,1),_&&t.get_array(_).splice(r,1),t.change.emit(),this._emit_cds_changes(this._selected_renderer.data_source)}_pan_start(e){this._select_event(e,\"append\",[this.model.vertex_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.vertex_renderer]),this._emit_cds_changes(this.model.vertex_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}_keyup(e){if(!this.model.active||!this._mouse_in_frame)return;let t;t=this._selected_renderer?[this.model.vertex_renderer]:this.model.renderers;for(const s of t)e.keyCode===d.Keys.Backspace?(this._delete_selected(s),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source)):e.keyCode==d.Keys.Esc&&(this._drawing?(this._remove_vertex(),this._drawing=!1):this._selected_renderer&&this._hide_vertices(),s.data_source.selection_manager.clear())}deactivate(){this._selected_renderer&&(this._drawing&&(this._remove_vertex(),this._drawing=!1),this._hide_vertices())}}s.PolyEditToolView=c,c.__name__=\"PolyEditToolView\";class o extends l.PolyTool{constructor(e){super(e),this.tool_name=\"Poly Edit Tool\",this.icon=a.tool_icon_poly_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}}s.PolyEditTool=o,_=o,o.__name__=\"PolyEditTool\",_.prototype.default_view=c},\n", + " function _(e,t,o,s,i){var l;s();const n=e(378),_=e(116),c=e(20),r=e(228);class a extends n.SelectToolView{_compute_limits(e){const t=this.plot_view.frame,o=this.model.dimensions;let s=this._base_point;if(\"center\"==this.model.origin){const[t,o]=s,[i,l]=e;s=[t-(i-t),o-(l-o)]}return this.model._get_dim_limits(s,e,t,o)}_pan_start(e){const{sx:t,sy:o}=e;this._base_point=[t,o]}_pan(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this.model.overlay.update({left:i[0],right:i[1],top:l[0],bottom:l[1]}),this.model.select_every_mousemove&&this._do_select(i,l,!1,this._select_mode(e))}_pan_end(e){const{sx:t,sy:o}=e,s=[t,o],[i,l]=this._compute_limits(s);this._do_select(i,l,!0,this._select_mode(e)),this.model.overlay.update({left:null,right:null,top:null,bottom:null}),this._base_point=null,this.plot_view.state.push(\"box_select\",{selection:this.plot_view.get_selection()})}_do_select([e,t],[o,s],i,l=\"replace\"){const n={type:\"rect\",sx0:e,sx1:t,sy0:o,sy1:s};this._select(n,i,l)}}o.BoxSelectToolView=a,a.__name__=\"BoxSelectToolView\";const h=()=>new _.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends n.SelectTool{constructor(e){super(e),this.tool_name=\"Box Select\",this.icon=r.tool_icon_box_select,this.event_type=\"pan\",this.default_order=30}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}o.BoxSelectTool=m,l=m,m.__name__=\"BoxSelectTool\",l.prototype.default_view=a,l.define((({Boolean:e,Ref:t})=>({dimensions:[c.Dimensions,\"both\"],select_every_mousemove:[e,!1],overlay:[t(_.BoxAnnotation),h],origin:[c.BoxOrigin,\"corner\"]}))),l.register_alias(\"box_select\",(()=>new m)),l.register_alias(\"xbox_select\",(()=>new m({dimensions:\"width\"}))),l.register_alias(\"ybox_select\",(()=>new m({dimensions:\"height\"})))},\n", + " function _(e,t,s,n,r){var o;n();const c=e(223),i=e(175),a=e(339),l=e(176),d=e(66),_=e(20),h=e(43),p=e(251),u=e(15),m=e(11);class v extends c.GestureToolView{connect_signals(){super.connect_signals(),this.model.clear.connect((()=>this._clear()))}get computed_renderers(){const{renderers:e,names:t}=this.model,s=this.plot_model.data_renderers;return(0,d.compute_renderers)(e,s,t)}_computed_renderers_by_data_source(){var e;const t=new Map;for(const s of this.computed_renderers){let n;if(s instanceof i.GlyphRenderer)n=s.data_source;else{if(!(s instanceof a.GraphRenderer))continue;n=s.node_renderer.data_source}const r=null!==(e=t.get(n))&&void 0!==e?e:[];t.set(n,[...r,s])}return t}_select_mode(e){const{shiftKey:t,ctrlKey:s}=e;return t||s?t&&!s?\"append\":!t&&s?\"intersect\":t&&s?\"subtract\":void(0,m.unreachable)():this.model.mode}_keyup(e){e.keyCode==h.Keys.Esc&&this._clear()}_clear(){for(const e of this.computed_renderers)e.get_selection_manager().clear();const e=this.computed_renderers.map((e=>this.plot_view.renderer_view(e)));this.plot_view.request_paint(e)}_select(e,t,s){const n=this._computed_renderers_by_data_source();for(const[,r]of n){const n=r[0].get_selection_manager(),o=[];for(const e of r){const t=this.plot_view.renderer_view(e);null!=t&&o.push(t)}n.select(o,e,t,s)}null!=this.model.callback&&this._emit_callback(e),this._emit_selection_event(e,t)}_emit_selection_event(e,t=!0){const{x_scale:s,y_scale:n}=this.plot_view.frame;let r;switch(e.type){case\"point\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"span\":{const{sx:t,sy:o}=e,c=s.invert(t),i=n.invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}case\"rect\":{const{sx0:t,sx1:o,sy0:c,sy1:i}=e,[a,l]=s.r_invert(t,o),[d,_]=n.r_invert(c,i);r=Object.assign(Object.assign({},e),{x0:a,y0:d,x1:l,y1:_});break}case\"poly\":{const{sx:t,sy:o}=e,c=s.v_invert(t),i=n.v_invert(o);r=Object.assign(Object.assign({},e),{x:c,y:i});break}}this.plot_model.trigger_event(new p.SelectionGeometry(r,t))}}s.SelectToolView=v,v.__name__=\"SelectToolView\";class b extends c.GestureTool{constructor(e){super(e)}initialize(){super.initialize(),this.clear=new u.Signal0(this,\"clear\")}get menu(){return[{icon:\"bk-tool-icon-replace-mode\",tooltip:\"Replace the current selection\",active:()=>\"replace\"==this.mode,handler:()=>{this.mode=\"replace\",this.active=!0}},{icon:\"bk-tool-icon-append-mode\",tooltip:\"Append to the current selection (Shift)\",active:()=>\"append\"==this.mode,handler:()=>{this.mode=\"append\",this.active=!0}},{icon:\"bk-tool-icon-intersect-mode\",tooltip:\"Intersect with the current selection (Ctrl)\",active:()=>\"intersect\"==this.mode,handler:()=>{this.mode=\"intersect\",this.active=!0}},{icon:\"bk-tool-icon-subtract-mode\",tooltip:\"Subtract from the current selection (Shift+Ctrl)\",active:()=>\"subtract\"==this.mode,handler:()=>{this.mode=\"subtract\",this.active=!0}},null,{icon:\"bk-tool-icon-clear-selection\",tooltip:\"Clear the current selection (Esc)\",handler:()=>{this.clear.emit()}}]}}s.SelectTool=b,o=b,b.__name__=\"SelectTool\",o.define((({String:e,Array:t,Ref:s,Or:n,Auto:r})=>({renderers:[n(t(s(l.DataRenderer)),r),\"auto\"],names:[t(e),[]],mode:[_.SelectionMode,\"replace\"]})))},\n", + " function _(t,o,e,s,i){var n;s();const _=t(223),a=t(116),l=t(20),r=t(228);class h extends _.GestureToolView{_match_aspect(t,o,e){const s=e.bbox.aspect,i=e.bbox.h_range.end,n=e.bbox.h_range.start,_=e.bbox.v_range.end,a=e.bbox.v_range.start;let l=Math.abs(t[0]-o[0]),r=Math.abs(t[1]-o[1]);const h=0==r?0:l/r,[c]=h>=s?[1,h/s]:[s/h,1];let m,p,d,b;return t[0]<=o[0]?(m=t[0],p=t[0]+l*c,p>i&&(p=i)):(p=t[0],m=t[0]-l*c,m_&&(d=_)):(d=t[1],b=t[1]-l/s,bnew a.BoxAnnotation({level:\"overlay\",top_units:\"screen\",left_units:\"screen\",bottom_units:\"screen\",right_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class m extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Box Zoom\",this.icon=r.tool_icon_box_zoom,this.event_type=\"pan\",this.default_order=20}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}e.BoxZoomTool=m,n=m,m.__name__=\"BoxZoomTool\",n.prototype.default_view=h,n.define((({Boolean:t,Ref:o})=>({dimensions:[l.Dimensions,\"both\"],overlay:[o(a.BoxAnnotation),c],match_aspect:[t,!1],origin:[l.BoxOrigin,\"corner\"]}))),n.register_alias(\"box_zoom\",(()=>new m({dimensions:\"both\"}))),n.register_alias(\"xbox_zoom\",(()=>new m({dimensions:\"width\"}))),n.register_alias(\"ybox_zoom\",(()=>new m({dimensions:\"height\"})))},\n", + " function _(s,e,t,o,_){var l;o();const i=s(378),a=s(217),c=s(381),n=s(43),h=s(228);class r extends i.SelectToolView{constructor(){super(...arguments),this.sxs=[],this.sys=[]}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_overlay()}_keyup(s){s.keyCode==n.Keys.Enter&&this._clear_overlay()}_pan_start(s){this.sxs=[],this.sys=[];const{sx:e,sy:t}=s;this._append_overlay(e,t)}_pan(s){const[e,t]=this.plot_view.frame.bbox.clip(s.sx,s.sy);this._append_overlay(e,t),this.model.select_every_mousemove&&this._do_select(this.sxs,this.sys,!1,this._select_mode(s))}_pan_end(s){const{sxs:e,sys:t}=this;this._clear_overlay(),this._do_select(e,t,!0,this._select_mode(s)),this.plot_view.state.push(\"lasso_select\",{selection:this.plot_view.get_selection()})}_append_overlay(s,e){const{sxs:t,sys:o}=this;t.push(s),o.push(e),this.model.overlay.update({xs:t,ys:o})}_clear_overlay(){this.sxs=[],this.sys=[],this.model.overlay.update({xs:this.sxs,ys:this.sys})}_do_select(s,e,t,o){const _={type:\"poly\",sx:s,sy:e};this._select(_,t,o)}}t.LassoSelectToolView=r,r.__name__=\"LassoSelectToolView\";class y extends i.SelectTool{constructor(s){super(s),this.tool_name=\"Lasso Select\",this.icon=h.tool_icon_lasso_select,this.event_type=\"pan\",this.default_order=12}}t.LassoSelectTool=y,l=y,y.__name__=\"LassoSelectTool\",l.prototype.default_view=r,l.define((({Boolean:s,Ref:e})=>({select_every_mousemove:[s,!0],overlay:[e(a.PolyAnnotation),c.DEFAULT_POLY_OVERLAY]}))),l.register_alias(\"lasso_select\",(()=>new y))},\n", + " function _(e,t,s,l,o){var i;l();const a=e(378),_=e(217),c=e(43),n=e(9),h=e(228);class y extends a.SelectToolView{initialize(){super.initialize(),this.data={sx:[],sy:[]}}connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._active_change()))}_active_change(){this.model.active||this._clear_data()}_keyup(e){e.keyCode==c.Keys.Enter&&this._clear_data()}_doubletap(e){this._do_select(this.data.sx,this.data.sy,!0,this._select_mode(e)),this.plot_view.state.push(\"poly_select\",{selection:this.plot_view.get_selection()}),this._clear_data()}_clear_data(){this.data={sx:[],sy:[]},this.model.overlay.update({xs:[],ys:[]})}_tap(e){const{sx:t,sy:s}=e;this.plot_view.frame.bbox.contains(t,s)&&(this.data.sx.push(t),this.data.sy.push(s),this.model.overlay.update({xs:(0,n.copy)(this.data.sx),ys:(0,n.copy)(this.data.sy)}))}_do_select(e,t,s,l){const o={type:\"poly\",sx:e,sy:t};this._select(o,s,l)}}s.PolySelectToolView=y,y.__name__=\"PolySelectToolView\";s.DEFAULT_POLY_OVERLAY=()=>new _.PolyAnnotation({level:\"overlay\",xs_units:\"screen\",ys_units:\"screen\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:2,line_dash:[4,4]});class d extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Poly Select\",this.icon=h.tool_icon_polygon_select,this.event_type=\"tap\",this.default_order=11}}s.PolySelectTool=d,i=d,d.__name__=\"PolySelectTool\",i.prototype.default_view=y,i.define((({Ref:e})=>({overlay:[e(_.PolyAnnotation),s.DEFAULT_POLY_OVERLAY]}))),i.register_alias(\"poly_select\",(()=>new d))},\n", + " function _(e,t,s,i,r){var n;i();const _=e(20),d=e(383),o=e(228);class l extends d.LineToolView{constructor(){super(...arguments),this._drawing=!1}_doubletap(e){if(!this.model.active)return;const t=this.model.renderers;for(const s of t){1==this._select_event(e,\"replace\",[s]).length&&(this._selected_renderer=s)}this._show_intersections(),this._update_line_cds()}_show_intersections(){if(!this.model.active)return;if(null==this._selected_renderer)return;if(!this.model.renderers.length)return this._set_intersection([],[]),this._selected_renderer=null,void(this._drawing=!1);const e=this._selected_renderer.data_source,t=this._selected_renderer.glyph,[s,i]=[t.x.field,t.y.field],r=e.get_array(s),n=e.get_array(i);this._set_intersection(r,n)}_tap(e){const t=this.model.intersection_renderer;if(null==this._map_drag(e.sx,e.sy,t))return;if(this._drawing&&this._selected_renderer){const s=this._select_mode(e);if(0==this._select_event(e,s,[t]).length)return}const s=this._select_mode(e);this._select_event(e,s,[t]),this._select_event(e,s,this.model.renderers)}_update_line_cds(){if(null==this._selected_renderer)return;const e=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,i]=[e.x.field,e.y.field];if(s&&i){const e=t.data[s],r=t.data[i];this._selected_renderer.data_source.data[s]=e,this._selected_renderer.data_source.data[i]=r}this._emit_cds_changes(this._selected_renderer.data_source,!0,!0,!1)}_pan_start(e){this._select_event(e,\"append\",[this.model.intersection_renderer]),this._basepoint=[e.sx,e.sy]}_pan(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer],this.model.dimensions),this._selected_renderer&&this._selected_renderer.data_source.change.emit())}_pan_end(e){null!=this._basepoint&&(this._drag_points(e,[this.model.intersection_renderer]),this._emit_cds_changes(this.model.intersection_renderer.data_source,!1,!0,!0),this._selected_renderer&&this._emit_cds_changes(this._selected_renderer.data_source),this._basepoint=null)}activate(){this._drawing=!0}deactivate(){this._selected_renderer&&(this._drawing&&(this._drawing=!1),this._hide_intersections())}}s.LineEditToolView=l,l.__name__=\"LineEditToolView\";class h extends d.LineTool{constructor(e){super(e),this.tool_name=\"Line Edit Tool\",this.icon=o.tool_icon_line_edit,this.event_type=[\"tap\",\"pan\",\"move\"],this.default_order=4}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}s.LineEditTool=h,n=h,h.__name__=\"LineEditTool\",n.prototype.default_view=l,n.define((()=>({dimensions:[_.Dimensions,\"both\"]})))},\n", + " function _(e,i,n,t,s){var o;t();const r=e(8),_=e(370);class d extends _.EditToolView{_set_intersection(e,i){const n=this.model.intersection_renderer.glyph,t=this.model.intersection_renderer.data_source,[s,o]=[n.x.field,n.y.field];s&&((0,r.isArray)(e)?t.data[s]=e:n.x={value:e}),o&&((0,r.isArray)(i)?t.data[o]=i:n.y={value:i}),this._emit_cds_changes(t,!0,!0,!1)}_hide_intersections(){this._set_intersection([],[])}}n.LineToolView=d,d.__name__=\"LineToolView\";class a extends _.EditTool{constructor(e){super(e)}}n.LineTool=a,o=a,a.__name__=\"LineTool\",o.define((({AnyRef:e})=>({intersection_renderer:[e()]})))},\n", + " function _(t,s,n,e,i){e();const o=t(1);var a;const _=t(223),l=t(20),r=(0,o.__importStar)(t(228));function h(t,s,n){const e=new Map;for(const[i,o]of t){const[t,a]=o.r_invert(s,n);e.set(i,{start:t,end:a})}return e}n.update_ranges=h;class d extends _.GestureToolView{_pan_start(t){var s;this.last_dx=0,this.last_dy=0;const{sx:n,sy:e}=t,i=this.plot_view.frame.bbox;if(!i.contains(n,e)){const t=i.h_range,s=i.v_range;(nt.end)&&(this.v_axis_only=!0),(es.end)&&(this.h_axis_only=!0)}null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan(t){var s;this._update(t.deltaX,t.deltaY),null===(s=this.model.document)||void 0===s||s.interactive_start(this.plot_model)}_pan_end(t){this.h_axis_only=!1,this.v_axis_only=!1,null!=this.pan_info&&this.plot_view.state.push(\"pan\",{range:this.pan_info}),this.plot_view.trigger_ranges_update_event()}_update(t,s){const n=this.plot_view.frame,e=t-this.last_dx,i=s-this.last_dy,o=n.bbox.h_range,a=o.start-e,_=o.end-e,l=n.bbox.v_range,r=l.start-i,d=l.end-i,p=this.model.dimensions;let c,u,m,v,x,g;\"width\"!=p&&\"both\"!=p||this.v_axis_only?(c=o.start,u=o.end,m=0):(c=a,u=_,m=-e),\"height\"!=p&&\"both\"!=p||this.h_axis_only?(v=l.start,x=l.end,g=0):(v=r,x=d,g=-i),this.last_dx=t,this.last_dy=s;const{x_scales:w,y_scales:y}=n,f=h(w,c,u),b=h(y,v,x);this.pan_info={xrs:f,yrs:b,sdx:m,sdy:g},this.plot_view.update_range(this.pan_info,{panning:!0})}}n.PanToolView=d,d.__name__=\"PanToolView\";class p extends _.GestureTool{constructor(t){super(t),this.tool_name=\"Pan\",this.event_type=\"pan\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}n.PanTool=p,a=p,p.__name__=\"PanTool\",a.prototype.default_view=d,a.define((()=>({dimensions:[l.Dimensions,\"both\",{on_update(t,s){switch(t){case\"both\":s.icon=r.tool_icon_pan;break;case\"width\":s.icon=r.tool_icon_xpan;break;case\"height\":s.icon=r.tool_icon_ypan}}}]}))),a.register_alias(\"pan\",(()=>new p({dimensions:\"both\"}))),a.register_alias(\"xpan\",(()=>new p({dimensions:\"width\"}))),a.register_alias(\"ypan\",(()=>new p({dimensions:\"height\"})))},\n", + " function _(e,t,i,s,n){var l;s();const a=e(116),r=e(58),o=e(19),_=e(223),h=e(228);function d(e){switch(e){case 1:return 2;case 2:return 1;case 4:return 5;case 5:return 4;default:return e}}function u(e,t,i,s){if(null==t)return!1;const n=i.compute(t);return Math.abs(e-n)n.right)&&(l=!1)}if(null!=n.bottom&&null!=n.top){const e=s.invert(t);(en.top)&&(l=!1)}return l}function g(e,t,i){let s=0;return e>=i.start&&e<=i.end&&(s+=1),t>=i.start&&t<=i.end&&(s+=1),s}function y(e,t,i,s){const n=t.compute(e),l=t.invert(n+i);return l>=s.start&&l<=s.end?l:e}function f(e,t,i){return e>t.start?(t.end=e,i):(t.end=t.start,t.start=e,d(i))}function v(e,t,i){return e=o&&(e.start=a,e.end=r)}i.flip_side=d,i.is_near=u,i.is_inside=c,i.sides_inside=g,i.compute_value=y,i.update_range_end_side=f,i.update_range_start_side=v,i.update_range=m;class p extends _.GestureToolView{initialize(){super.initialize(),this.side=0,this.model.update_overlay_from_ranges()}connect_signals(){super.connect_signals(),null!=this.model.x_range&&this.connect(this.model.x_range.change,(()=>this.model.update_overlay_from_ranges())),null!=this.model.y_range&&this.connect(this.model.y_range.change,(()=>this.model.update_overlay_from_ranges()))}_pan_start(e){this.last_dx=0,this.last_dy=0;const t=this.model.x_range,i=this.model.y_range,{frame:s}=this.plot_view,n=s.x_scale,l=s.y_scale,r=this.model.overlay,{left:o,right:_,top:h,bottom:d}=r,g=this.model.overlay.line_width+a.EDGE_TOLERANCE;null!=t&&this.model.x_interaction&&(u(e.sx,o,n,g)?this.side=1:u(e.sx,_,n,g)?this.side=2:c(e.sx,e.sy,n,l,r)&&(this.side=3)),null!=i&&this.model.y_interaction&&(0==this.side&&u(e.sy,d,l,g)&&(this.side=4),0==this.side&&u(e.sy,h,l,g)?this.side=5:c(e.sx,e.sy,n,l,this.model.overlay)&&(3==this.side?this.side=7:this.side=6))}_pan(e){const t=this.plot_view.frame,i=e.deltaX-this.last_dx,s=e.deltaY-this.last_dy,n=this.model.x_range,l=this.model.y_range,a=t.x_scale,r=t.y_scale;if(null!=n)if(3==this.side||7==this.side)m(n,a,i,t.x_range);else if(1==this.side){const e=y(n.start,a,i,t.x_range);this.side=v(e,n,this.side)}else if(2==this.side){const e=y(n.end,a,i,t.x_range);this.side=f(e,n,this.side)}if(null!=l)if(6==this.side||7==this.side)m(l,r,s,t.y_range);else if(4==this.side){const e=y(l.start,r,s,t.y_range);this.side=v(e,l,this.side)}else if(5==this.side){const e=y(l.end,r,s,t.y_range);this.side=f(e,l,this.side)}this.last_dx=e.deltaX,this.last_dy=e.deltaY}_pan_end(e){this.side=0,this.plot_view.trigger_ranges_update_event()}}i.RangeToolView=p,p.__name__=\"RangeToolView\";const x=()=>new a.BoxAnnotation({level:\"overlay\",fill_color:\"lightgrey\",fill_alpha:.5,line_color:\"black\",line_alpha:1,line_width:.5,line_dash:[2,2]});class w extends _.GestureTool{constructor(e){super(e),this.tool_name=\"Range Tool\",this.icon=h.tool_icon_range,this.event_type=\"pan\",this.default_order=1}initialize(){super.initialize(),this.overlay.in_cursor=\"grab\",this.overlay.ew_cursor=null!=this.x_range&&this.x_interaction?\"ew-resize\":null,this.overlay.ns_cursor=null!=this.y_range&&this.y_interaction?\"ns-resize\":null}update_overlay_from_ranges(){null==this.x_range&&null==this.y_range&&(this.overlay.left=null,this.overlay.right=null,this.overlay.bottom=null,this.overlay.top=null,o.logger.warn(\"RangeTool not configured with any Ranges.\")),null==this.x_range?(this.overlay.left=null,this.overlay.right=null):(this.overlay.left=this.x_range.start,this.overlay.right=this.x_range.end),null==this.y_range?(this.overlay.bottom=null,this.overlay.top=null):(this.overlay.bottom=this.y_range.start,this.overlay.top=this.y_range.end)}}i.RangeTool=w,l=w,w.__name__=\"RangeTool\",l.prototype.default_view=p,l.define((({Boolean:e,Ref:t,Nullable:i})=>({x_range:[i(t(r.Range1d)),null],x_interaction:[e,!0],y_range:[i(t(r.Range1d)),null],y_interaction:[e,!0],overlay:[t(a.BoxAnnotation),x]})))},\n", + " function _(e,t,s,o,i){var l;o();const a=e(378),n=e(20),c=e(228);class _ extends a.SelectToolView{_tap(e){\"tap\"==this.model.gesture&&this._handle_tap(e)}_doubletap(e){\"doubletap\"==this.model.gesture&&this._handle_tap(e)}_handle_tap(e){const{sx:t,sy:s}=e,o={type:\"point\",sx:t,sy:s};this._select(o,!0,this._select_mode(e))}_select(e,t,s){const{callback:o}=this.model;if(\"select\"==this.model.behavior){const i=this._computed_renderers_by_data_source();for(const[,l]of i){const i=l[0].get_selection_manager(),a=l.map((e=>this.plot_view.renderer_view(e))).filter((e=>null!=e));if(i.select(a,e,t,s)&&null!=o){const t=a[0].coordinates.x_scale.invert(e.sx),s=a[0].coordinates.y_scale.invert(e.sy),l={geometries:Object.assign(Object.assign({},e),{x:t,y:s}),source:i.source};o.execute(this.model,l)}}this._emit_selection_event(e),this.plot_view.state.push(\"tap\",{selection:this.plot_view.get_selection()})}else for(const t of this.computed_renderers){const s=this.plot_view.renderer_view(t);if(null==s)continue;const i=t.get_selection_manager();if(i.inspect(s,e)&&null!=o){const t=s.coordinates.x_scale.invert(e.sx),l=s.coordinates.y_scale.invert(e.sy),a={geometries:Object.assign(Object.assign({},e),{x:t,y:l}),source:i.source};o.execute(this.model,a)}}}}s.TapToolView=_,_.__name__=\"TapToolView\";class r extends a.SelectTool{constructor(e){super(e),this.tool_name=\"Tap\",this.icon=c.tool_icon_tap_select,this.event_type=\"tap\",this.default_order=10}}s.TapTool=r,l=r,r.__name__=\"TapTool\",l.prototype.default_view=_,l.define((({Any:e,Enum:t,Nullable:s})=>({behavior:[n.TapBehavior,\"select\"],gesture:[t(\"tap\",\"doubletap\"),\"tap\"],callback:[s(e)]}))),l.register_alias(\"click\",(()=>new r({behavior:\"inspect\"}))),l.register_alias(\"tap\",(()=>new r)),l.register_alias(\"doubletap\",(()=>new r({gesture:\"doubletap\"})))},\n", + " function _(e,t,s,n,i){var a;n();const o=e(223),l=e(20),_=e(228),r=e(384);class h extends o.GestureToolView{_scroll(e){let t=this.model.speed*e.delta;t>.9?t=.9:t<-.9&&(t=-.9),this._update_ranges(t)}_update_ranges(e){var t;const{frame:s}=this.plot_view,n=s.bbox.h_range,i=s.bbox.v_range,[a,o]=[n.start,n.end],[l,_]=[i.start,i.end];let h,d,p,c;switch(this.model.dimension){case\"height\":{const t=Math.abs(_-l);h=a,d=o,p=l-t*e,c=_-t*e;break}case\"width\":{const t=Math.abs(o-a);h=a-t*e,d=o-t*e,p=l,c=_;break}}const{x_scales:g,y_scales:u}=s,w={xrs:(0,r.update_ranges)(g,h,d),yrs:(0,r.update_ranges)(u,p,c),factor:e};this.plot_view.state.push(\"wheel_pan\",{range:w}),this.plot_view.update_range(w,{scrolling:!0}),null===(t=this.model.document)||void 0===t||t.interactive_start(this.plot_model,(()=>this.plot_view.trigger_ranges_update_event()))}}s.WheelPanToolView=h,h.__name__=\"WheelPanToolView\";class d extends o.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Pan\",this.icon=_.tool_icon_wheel_pan,this.event_type=\"scroll\",this.default_order=12}get tooltip(){return this._get_dim_tooltip(this.dimension)}}s.WheelPanTool=d,a=d,d.__name__=\"WheelPanTool\",a.prototype.default_view=h,a.define((()=>({dimension:[l.Dimension,\"width\"]}))),a.internal((({Number:e})=>({speed:[e,.001]}))),a.register_alias(\"xwheel_pan\",(()=>new d({dimension:\"width\"}))),a.register_alias(\"ywheel_pan\",(()=>new d({dimension:\"height\"})))},\n", + " function _(e,o,t,s,i){var n;s();const l=e(223),_=e(368),h=e(20),a=e(27),r=e(228);class m extends l.GestureToolView{_pinch(e){const{sx:o,sy:t,scale:s,ctrlKey:i,shiftKey:n}=e;let l;l=s>=1?20*(s-1):-20/s,this._scroll({type:\"wheel\",sx:o,sy:t,delta:l,ctrlKey:i,shiftKey:n})}_scroll(e){var o;const{frame:t}=this.plot_view,s=t.bbox.h_range,i=t.bbox.v_range,{sx:n,sy:l}=e,h=this.model.dimensions,a=(\"width\"==h||\"both\"==h)&&s.startthis.plot_view.trigger_ranges_update_event()))}}t.WheelZoomToolView=m,m.__name__=\"WheelZoomToolView\";class d extends l.GestureTool{constructor(e){super(e),this.tool_name=\"Wheel Zoom\",this.icon=r.tool_icon_wheel_zoom,this.event_type=a.is_mobile?\"pinch\":\"scroll\",this.default_order=10}get tooltip(){return this._get_dim_tooltip(this.dimensions)}}t.WheelZoomTool=d,n=d,d.__name__=\"WheelZoomTool\",n.prototype.default_view=m,n.define((({Boolean:e,Number:o})=>({dimensions:[h.Dimensions,\"both\"],maintain_focus:[e,!0],zoom_on_axis:[e,!0],speed:[o,1/600]}))),n.register_alias(\"wheel_zoom\",(()=>new d({dimensions:\"both\"}))),n.register_alias(\"xwheel_zoom\",(()=>new d({dimensions:\"width\"}))),n.register_alias(\"ywheel_zoom\",(()=>new d({dimensions:\"height\"})))},\n", + " function _(i,e,s,t,o){var n;t();const l=i(232),a=i(219),h=i(20),r=i(13),_=i(228);class c extends l.InspectToolView{_move(i){if(!this.model.active)return;const{sx:e,sy:s}=i;this.plot_view.frame.bbox.contains(e,s)?this._update_spans(e,s):this._update_spans(null,null)}_move_exit(i){this._update_spans(null,null)}_update_spans(i,e){const s=this.model.dimensions;\"width\"!=s&&\"both\"!=s||(this.model.spans.width.location=e),\"height\"!=s&&\"both\"!=s||(this.model.spans.height.location=i)}}s.CrosshairToolView=c,c.__name__=\"CrosshairToolView\";class p extends l.InspectTool{constructor(i){super(i),this.tool_name=\"Crosshair\",this.icon=_.tool_icon_crosshair}get tooltip(){return this._get_dim_tooltip(this.dimensions)}get synthetic_renderers(){return(0,r.values)(this.spans)}}s.CrosshairTool=p,n=p,p.__name__=\"CrosshairTool\",(()=>{function i(i,e){return new a.Span({for_hover:!0,dimension:e,location_units:\"screen\",level:\"overlay\",line_color:i.line_color,line_width:i.line_width,line_alpha:i.line_alpha})}n.prototype.default_view=c,n.define((({Alpha:i,Number:e,Color:s})=>({dimensions:[h.Dimensions,\"both\"],line_color:[s,\"black\"],line_width:[e,1],line_alpha:[i,1]}))),n.internal((({Struct:e,Ref:s})=>({spans:[e({width:s(a.Span),height:s(a.Span)}),e=>({width:i(e,\"width\"),height:i(e,\"height\")})]}))),n.register_alias(\"crosshair\",(()=>new p))})()},\n", + " function _(e,s,t,r,n){var o;r();const a=e(53),u=e(13),c=e(34);class i extends a.Model{constructor(e){super(e)}get values(){return(0,u.values)(this.args)}_make_code(e,s,t,r){return new Function(...(0,u.keys)(this.args),e,s,t,(0,c.use_strict)(r))}format(e,s,t){return this._make_code(\"value\",\"format\",\"special_vars\",this.code)(...this.values,e,s,t)}}t.CustomJSHover=i,o=i,i.__name__=\"CustomJSHover\",o.define((({Unknown:e,String:s,Dict:t})=>({args:[t(e),{}],code:[s,\"\"]})))},\n", + " function _(e,t,n,s,i){s();const o=e(1);var r;const l=e(232),a=e(390),c=e(241),_=e(175),d=e(339),p=e(176),h=e(177),u=e(283),m=e(186),y=e(187),f=e(189),x=(0,o.__importStar)(e(185)),v=e(152),w=e(43),g=e(22),b=e(13),k=e(234),C=e(8),S=e(113),T=e(20),$=e(228),R=e(15),A=e(66),M=(0,o.__importStar)(e(242)),V=e(392);function G(e,t,n,s,i,o){const r={x:i[e],y:o[e]},l={x:i[e+1],y:o[e+1]};let a,c;if(\"span\"==t.type)\"h\"==t.direction?(a=Math.abs(r.x-n),c=Math.abs(l.x-n)):(a=Math.abs(r.y-s),c=Math.abs(l.y-s));else{const e={x:n,y:s};a=x.dist_2_pts(r,e),c=x.dist_2_pts(l,e)}return adelete this._template_el)),this.on_change([e,t,n],(async()=>await this._update_ttmodels()))}async _update_ttmodels(){const{_ttmodels:e,computed_renderers:t}=this;e.clear();const{tooltips:n}=this.model;if(null!=n)for(const t of this.computed_renderers){const s=new c.Tooltip({custom:(0,C.isString)(n)||(0,C.isFunction)(n),attachment:this.model.attachment,show_arrow:this.model.show_arrow});t instanceof _.GlyphRenderer?e.set(t,s):t instanceof d.GraphRenderer&&(e.set(t.node_renderer,s),e.set(t.edge_renderer,s))}const s=await(0,S.build_views)(this._ttviews,[...e.values()],{parent:this.plot_view});for(const e of s)e.render();const i=[...function*(){for(const e of t)e instanceof _.GlyphRenderer?yield e:e instanceof d.GraphRenderer&&(yield e.node_renderer,yield e.edge_renderer)}()],o=this._slots.get(this._update);if(null!=o){const e=new Set(i.map((e=>e.data_source)));R.Signal.disconnect_receiver(this,o,e)}for(const e of i)this.connect(e.data_source.inspect,this._update)}get computed_renderers(){const{renderers:e,names:t}=this.model,n=this.plot_model.data_renderers;return(0,A.compute_renderers)(e,n,t)}get ttmodels(){return this._ttmodels}_clear(){this._inspect(1/0,1/0);for(const[,e]of this.ttmodels)e.clear()}_move(e){if(!this.model.active)return;const{sx:t,sy:n}=e;this.plot_view.frame.bbox.contains(t,n)?this._inspect(t,n):this._clear()}_move_exit(){this._clear()}_inspect(e,t){let n;if(\"mouse\"==this.model.mode)n={type:\"point\",sx:e,sy:t};else{n={type:\"span\",direction:\"vline\"==this.model.mode?\"h\":\"v\",sx:e,sy:t}}for(const e of this.computed_renderers){const t=e.get_selection_manager(),s=this.plot_view.renderer_view(e);null!=s&&t.inspect(s,n)}this._emit_callback(n)}_update([e,{geometry:t}]){var n,s;if(!this.model.active)return;if(\"point\"!=t.type&&\"span\"!=t.type)return;if(!(e instanceof _.GlyphRenderer))return;if(\"ignore\"==this.model.muted_policy&&e.muted)return;const i=this.ttmodels.get(e);if(null==i)return;const o=e.get_selection_manager(),r=o.inspectors.get(e),l=e.view.convert_selection_to_subset(r);if(r.is_empty()&&null==r.view)return void i.clear();const a=o.source,c=this.plot_view.renderer_view(e);if(null==c)return;const{sx:d,sy:p}=t,x=c.coordinates.x_scale,v=c.coordinates.y_scale,g=x.invert(d),k=v.invert(p),{glyph:C}=c,S=[];if(C instanceof m.PatchView){const[t,n]=[d,p],s={x:g,y:k,sx:d,sy:p,rx:t,ry:n,name:e.name};S.push([t,n,this._render_tooltips(a,-1,s)])}if(C instanceof y.HAreaView)for(const t of l.line_indices){const n=C._x1,s=C._x2,i=C._y,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x1:n,data_x2:s,data_y:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof f.VAreaView)for(const t of l.line_indices){const n=C._x,s=C._y1,i=C._y2,[o,r]=[d,p],c={index:t,x:g,y:k,sx:d,sy:p,data_x:n,data_y1:s,data_y2:i,rx:o,ry:r,indices:l.line_indices,name:e.name};S.push([o,r,this._render_tooltips(a,t,c)])}if(C instanceof h.LineView)for(const n of l.line_indices){let s,i,o=C._x[n+1],r=C._y[n+1],c=n;switch(this.model.line_policy){case\"interp\":[o,r]=C.get_interpolation_hit(n,t),s=x.compute(o),i=v.compute(r);break;case\"prev\":[[s,i],c]=H(C.sx,C.sy,n);break;case\"next\":[[s,i],c]=H(C.sx,C.sy,n+1);break;case\"nearest\":[[s,i],c]=G(n,t,d,p,C.sx,C.sy),o=C._x[c],r=C._y[c];break;default:[s,i]=[d,p]}const _={index:c,x:g,y:k,sx:d,sy:p,data_x:o,data_y:r,rx:s,ry:i,indices:l.line_indices,name:e.name};S.push([s,i,this._render_tooltips(a,c,_)])}for(const t of r.image_indices){const n={index:t.index,x:g,y:k,sx:d,sy:p,name:e.name},s=this._render_tooltips(a,t,n);S.push([d,p,s])}for(const i of l.indices)if(C instanceof u.MultiLineView&&!(0,b.isEmpty)(l.multiline_indices))for(const n of l.multiline_indices[i.toString()]){let s,o,r,c=C._xs.get(i)[n],h=C._ys.get(i)[n],u=n;switch(this.model.line_policy){case\"interp\":[c,h]=C.get_interpolation_hit(i,n,t),s=x.compute(c),o=v.compute(h);break;case\"prev\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n);break;case\"next\":[[s,o],u]=H(C.sxs.get(i),C.sys.get(i),n+1);break;case\"nearest\":[[s,o],u]=G(n,t,d,p,C.sxs.get(i),C.sys.get(i)),c=C._xs.get(i)[u],h=C._ys.get(i)[u];break;default:throw new Error(\"shouldn't have happened\")}r=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const m={index:r,x:g,y:k,sx:d,sy:p,data_x:c,data_y:h,segment_index:u,indices:l.multiline_indices,name:e.name};S.push([s,o,this._render_tooltips(a,r,m)])}else{const t=null===(n=C._x)||void 0===n?void 0:n[i],o=null===(s=C._y)||void 0===s?void 0:s[i];let r,c,h;if(\"snap_to_data\"==this.model.point_policy){let e=C.get_anchor_point(this.model.anchor,i,[d,p]);if(null==e&&(e=C.get_anchor_point(\"center\",i,[d,p]),null==e))continue;r=e.x,c=e.y}else[r,c]=[d,p];h=e instanceof _.GlyphRenderer?e.view.convert_indices_from_subset([i])[0]:i;const u={index:h,x:g,y:k,sx:d,sy:p,data_x:t,data_y:o,indices:l.indices,name:e.name};S.push([r,c,this._render_tooltips(a,h,u)])}if(0==S.length)i.clear();else{const{content:e}=i;(0,w.empty)(i.content);for(const[,,t]of S)null!=t&&e.appendChild(t);const[t,n]=S[S.length-1];i.setv({position:[t,n]},{check_eq:!1})}}_emit_callback(e){const{callback:t}=this.model;if(null!=t)for(const n of this.computed_renderers){if(!(n instanceof _.GlyphRenderer))continue;const s=this.plot_view.renderer_view(n);if(null==s)continue;const{x_scale:i,y_scale:o}=s.coordinates,r=i.invert(e.sx),l=o.invert(e.sy),a=n.data_source.inspected;t.execute(this.model,{geometry:Object.assign({x:r,y:l},e),renderer:n,index:a})}}_create_template(e){const t=(0,w.div)({style:{display:\"table\",borderSpacing:\"2px\"}});for(const[n]of e){const e=(0,w.div)({style:{display:\"table-row\"}});t.appendChild(e);const s=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_label},0!=n.length?`${n}: `:\"\");e.appendChild(s);const i=(0,w.span)();i.dataset.value=\"\";const o=(0,w.span)({class:M.tooltip_color_block},\" \");o.dataset.swatch=\"\",(0,w.undisplay)(o);const r=(0,w.div)({style:{display:\"table-cell\"},class:M.tooltip_row_value},i,o);e.appendChild(r)}return t}_render_template(e,t,n,s,i){const o=e.cloneNode(!0),r=o.querySelectorAll(\"[data-value]\"),l=o.querySelectorAll(\"[data-swatch]\"),a=/\\$color(\\[.*\\])?:(\\w*)/,c=/\\$swatch:(\\w*)/;for(const[[,e],o]of(0,k.enumerate)(t)){const t=e.match(c),_=e.match(a);if(null!=t||null!=_){if(null!=t){const[,e]=t,i=n.get_column(e);if(null==i)r[o].textContent=`${e} unknown`;else{const e=(0,C.isNumber)(s)?i[s]:null;null!=e&&(l[o].style.backgroundColor=(0,g.color2css)(e),(0,w.display)(l[o]))}}if(null!=_){const[,e=\"\",t]=_,i=n.get_column(t);if(null==i){r[o].textContent=`${t} unknown`;continue}const a=e.indexOf(\"hex\")>=0,c=e.indexOf(\"swatch\")>=0,d=(0,C.isNumber)(s)?i[s]:null;if(null==d){r[o].textContent=\"(null)\";continue}r[o].textContent=a?(0,g.color2hex)(d):(0,g.color2css)(d),c&&(l[o].style.backgroundColor=(0,g.color2css)(d),(0,w.display)(l[o]))}}else{const t=(0,v.replace_placeholders)(e.replace(\"$~\",\"$data_\"),n,s,this.model.formatters,i);if((0,C.isString)(t))r[o].textContent=t;else for(const e of t)r[o].appendChild(e)}}return o}_render_tooltips(e,t,n){var s;const{tooltips:i}=this.model;if((0,C.isString)(i)){const s=(0,v.replace_placeholders)({html:i},e,t,this.model.formatters,n);return(0,w.div)(s)}if((0,C.isFunction)(i))return i(e,n);if(i instanceof V.Template)return this._template_view.update(e,t,n),this._template_view.el;if(null!=i){const o=null!==(s=this._template_el)&&void 0!==s?s:this._template_el=this._create_template(i);return this._render_template(o,i,e,t,n)}return null}}n.HoverToolView=z,z.__name__=\"HoverToolView\";class P extends l.InspectTool{constructor(e){super(e),this.tool_name=\"Hover\",this.icon=$.tool_icon_hover}}n.HoverTool=P,r=P,P.__name__=\"HoverTool\",r.prototype.default_view=z,r.define((({Any:e,Boolean:t,String:n,Array:s,Tuple:i,Dict:o,Or:r,Ref:l,Function:c,Auto:_,Nullable:d})=>({tooltips:[d(r(l(V.Template),n,s(i(n,n)),c())),[[\"index\",\"$index\"],[\"data (x, y)\",\"($x, $y)\"],[\"screen (x, y)\",\"($sx, $sy)\"]]],formatters:[o(r(l(a.CustomJSHover),v.FormatterType)),{}],renderers:[r(s(l(p.DataRenderer)),_),\"auto\"],names:[s(n),[]],mode:[T.HoverMode,\"mouse\"],muted_policy:[T.MutedPolicy,\"show\"],point_policy:[T.PointPolicy,\"snap_to_data\"],line_policy:[T.LinePolicy,\"nearest\"],show_arrow:[t,!0],anchor:[T.Anchor,\"center\"],attachment:[T.TooltipAttachment,\"horizontal\"],callback:[d(e)]}))),r.register_alias(\"hover\",(()=>new P))},\n", + " function _(e,t,s,n,a){n();const l=e(1);var i,_,o,r,c,d,p,u,m,w,f,h,x;const v=e(53),y=e(309),V=e(393);a(\"Styles\",V.Styles);const g=e(43),T=e(42),b=e(226),R=e(113),D=e(8),M=e(13),S=(0,l.__importStar)(e(242)),O=e(152);class C extends b.DOMView{}s.DOMNodeView=C,C.__name__=\"DOMNodeView\";class z extends v.Model{constructor(e){super(e)}}s.DOMNode=z,z.__name__=\"DOMNode\",z.__module__=\"bokeh.models.dom\";class P extends C{render(){super.render(),this.el.textContent=this.model.content}_createElement(){return document.createTextNode(\"\")}}s.TextView=P,P.__name__=\"TextView\";class A extends z{constructor(e){super(e)}}s.Text=A,i=A,A.__name__=\"Text\",i.prototype.default_view=P,i.define((({String:e})=>({content:[e,\"\"]})));class N extends C{}s.PlaceholderView=N,N.__name__=\"PlaceholderView\",N.tag_name=\"span\";class E extends z{constructor(e){super(e)}}s.Placeholder=E,_=E,E.__name__=\"Placeholder\",_.define((({})=>({})));class G extends N{update(e,t,s){this.el.textContent=t.toString()}}s.IndexView=G,G.__name__=\"IndexView\";class I extends E{constructor(e){super(e)}}s.Index=I,o=I,I.__name__=\"Index\",o.prototype.default_view=G,o.define((({})=>({})));class k extends N{update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ValueRefView=k,k.__name__=\"ValueRefView\";class $ extends E{constructor(e){super(e)}}s.ValueRef=$,r=$,$.__name__=\"ValueRef\",r.prototype.default_view=k,r.define((({String:e})=>({field:[e]})));class B extends k{render(){super.render(),this.value_el=(0,g.span)(),this.swatch_el=(0,g.span)({class:S.tooltip_color_block},\" \"),this.el.appendChild(this.value_el),this.el.appendChild(this.swatch_el)}update(e,t,s){const n=(0,O._get_column_value)(this.model.field,e,t),a=null==n?\"???\":`${n}`;this.el.textContent=a}}s.ColorRefView=B,B.__name__=\"ColorRefView\";class L extends ${constructor(e){super(e)}}s.ColorRef=L,c=L,L.__name__=\"ColorRef\",c.prototype.default_view=B,c.define((({Boolean:e})=>({hex:[e,!0],swatch:[e,!0]})));class j extends C{constructor(){super(...arguments),this.child_views=new Map}async lazy_initialize(){await super.lazy_initialize();const e=this.model.children.filter((e=>e instanceof v.Model));await(0,R.build_views)(this.child_views,e,{parent:this})}render(){super.render();const{style:e}=this.model;if(null!=e)if(e instanceof V.Styles)for(const t of e){const e=t.get_value();if((0,D.isString)(e)){const s=t.attr.replace(/_/g,\"-\");this.el.style.hasOwnProperty(s)&&this.el.style.setProperty(s,e)}}else for(const[t,s]of(0,M.entries)(e)){const e=t.replace(/_/g,\"-\");this.el.style.hasOwnProperty(e)&&this.el.style.setProperty(e,s)}for(const e of this.model.children)if((0,D.isString)(e)){const t=document.createTextNode(e);this.el.appendChild(t)}else{this.child_views.get(e).renderTo(this.el)}}}s.DOMElementView=j,j.__name__=\"DOMElementView\";class q extends z{constructor(e){super(e)}}s.DOMElement=q,d=q,q.__name__=\"DOMElement\",d.define((({String:e,Array:t,Dict:s,Or:n,Nullable:a,Ref:l})=>({style:[a(n(l(V.Styles),s(e))),null],children:[t(n(e,l(z),l(y.LayoutDOM))),[]]})));class F extends T.View{}s.ActionView=F,F.__name__=\"ActionView\";class H extends v.Model{constructor(e){super(e)}}s.Action=H,p=H,H.__name__=\"Action\",H.__module__=\"bokeh.models.dom\",p.define((({})=>({})));class J extends j{constructor(){super(...arguments),this.action_views=new Map}async lazy_initialize(){await super.lazy_initialize(),await(0,R.build_views)(this.action_views,this.model.actions,{parent:this})}remove(){(0,R.remove_views)(this.action_views),super.remove()}update(e,t,s={}){!function n(a){for(const l of a.child_views.values())l instanceof N?l.update(e,t,s):l instanceof j&&n(l)}(this);for(const n of this.action_views.values())n.update(e,t,s)}}s.TemplateView=J,J.__name__=\"TemplateView\",J.tag_name=\"div\";class K extends q{}s.Template=K,u=K,K.__name__=\"Template\",u.prototype.default_view=J,u.define((({Array:e,Ref:t})=>({actions:[e(t(H)),[]]})));class Q extends j{}s.SpanView=Q,Q.__name__=\"SpanView\",Q.tag_name=\"span\";class U extends q{}s.Span=U,m=U,U.__name__=\"Span\",m.prototype.default_view=Q;class W extends j{}s.DivView=W,W.__name__=\"DivView\",W.tag_name=\"div\";class X extends q{}s.Div=X,w=X,X.__name__=\"Div\",w.prototype.default_view=W;class Y extends j{}s.TableView=Y,Y.__name__=\"TableView\",Y.tag_name=\"table\";class Z extends q{}s.Table=Z,f=Z,Z.__name__=\"Table\",f.prototype.default_view=Y;class ee extends j{}s.TableRowView=ee,ee.__name__=\"TableRowView\",ee.tag_name=\"tr\";class te extends q{}s.TableRow=te,h=te,te.__name__=\"TableRow\",h.prototype.default_view=ee;const se=e(41),ne=e(234);class ae extends F{update(e,t,s){for(const[e,s]of(0,ne.enumerate)(this.model.groups))e.visible=t==s}}s.ToggleGroupView=ae,ae.__name__=\"ToggleGroupView\";class le extends H{constructor(e){super(e)}}s.ToggleGroup=le,x=le,le.__name__=\"ToggleGroup\",x.prototype.default_view=ae,x.define((({Array:e,Ref:t})=>({groups:[e(t(se.RendererGroup)),[]]})))},\n", + " function _(l,n,u,_,e){var t;_();const o=l(53);class r extends o.Model{constructor(l){super(l)}}u.Styles=r,t=r,r.__name__=\"Styles\",r.__module__=\"bokeh.models.css\",t.define((({String:l,Nullable:n})=>({align_content:[n(l),null],align_items:[n(l),null],align_self:[n(l),null],alignment_baseline:[n(l),null],all:[n(l),null],animation:[n(l),null],animation_delay:[n(l),null],animation_direction:[n(l),null],animation_duration:[n(l),null],animation_fill_mode:[n(l),null],animation_iteration_count:[n(l),null],animation_name:[n(l),null],animation_play_state:[n(l),null],animation_timing_function:[n(l),null],backface_visibility:[n(l),null],background:[n(l),null],background_attachment:[n(l),null],background_clip:[n(l),null],background_color:[n(l),null],background_image:[n(l),null],background_origin:[n(l),null],background_position:[n(l),null],background_position_x:[n(l),null],background_position_y:[n(l),null],background_repeat:[n(l),null],background_size:[n(l),null],baseline_shift:[n(l),null],block_size:[n(l),null],border:[n(l),null],border_block_end:[n(l),null],border_block_end_color:[n(l),null],border_block_end_style:[n(l),null],border_block_end_width:[n(l),null],border_block_start:[n(l),null],border_block_start_color:[n(l),null],border_block_start_style:[n(l),null],border_block_start_width:[n(l),null],border_bottom:[n(l),null],border_bottom_color:[n(l),null],border_bottom_left_radius:[n(l),null],border_bottom_right_radius:[n(l),null],border_bottom_style:[n(l),null],border_bottom_width:[n(l),null],border_collapse:[n(l),null],border_color:[n(l),null],border_image:[n(l),null],border_image_outset:[n(l),null],border_image_repeat:[n(l),null],border_image_slice:[n(l),null],border_image_source:[n(l),null],border_image_width:[n(l),null],border_inline_end:[n(l),null],border_inline_end_color:[n(l),null],border_inline_end_style:[n(l),null],border_inline_end_width:[n(l),null],border_inline_start:[n(l),null],border_inline_start_color:[n(l),null],border_inline_start_style:[n(l),null],border_inline_start_width:[n(l),null],border_left:[n(l),null],border_left_color:[n(l),null],border_left_style:[n(l),null],border_left_width:[n(l),null],border_radius:[n(l),null],border_right:[n(l),null],border_right_color:[n(l),null],border_right_style:[n(l),null],border_right_width:[n(l),null],border_spacing:[n(l),null],border_style:[n(l),null],border_top:[n(l),null],border_top_color:[n(l),null],border_top_left_radius:[n(l),null],border_top_right_radius:[n(l),null],border_top_style:[n(l),null],border_top_width:[n(l),null],border_width:[n(l),null],bottom:[n(l),null],box_shadow:[n(l),null],box_sizing:[n(l),null],break_after:[n(l),null],break_before:[n(l),null],break_inside:[n(l),null],caption_side:[n(l),null],caret_color:[n(l),null],clear:[n(l),null],clip:[n(l),null],clip_path:[n(l),null],clip_rule:[n(l),null],color:[n(l),null],color_interpolation:[n(l),null],color_interpolation_filters:[n(l),null],column_count:[n(l),null],column_fill:[n(l),null],column_gap:[n(l),null],column_rule:[n(l),null],column_rule_color:[n(l),null],column_rule_style:[n(l),null],column_rule_width:[n(l),null],column_span:[n(l),null],column_width:[n(l),null],columns:[n(l),null],content:[n(l),null],counter_increment:[n(l),null],counter_reset:[n(l),null],css_float:[n(l),null],css_text:[n(l),null],cursor:[n(l),null],direction:[n(l),null],display:[n(l),null],dominant_baseline:[n(l),null],empty_cells:[n(l),null],fill:[n(l),null],fill_opacity:[n(l),null],fill_rule:[n(l),null],filter:[n(l),null],flex:[n(l),null],flex_basis:[n(l),null],flex_direction:[n(l),null],flex_flow:[n(l),null],flex_grow:[n(l),null],flex_shrink:[n(l),null],flex_wrap:[n(l),null],float:[n(l),null],flood_color:[n(l),null],flood_opacity:[n(l),null],font:[n(l),null],font_family:[n(l),null],font_feature_settings:[n(l),null],font_kerning:[n(l),null],font_size:[n(l),null],font_size_adjust:[n(l),null],font_stretch:[n(l),null],font_style:[n(l),null],font_synthesis:[n(l),null],font_variant:[n(l),null],font_variant_caps:[n(l),null],font_variant_east_asian:[n(l),null],font_variant_ligatures:[n(l),null],font_variant_numeric:[n(l),null],font_variant_position:[n(l),null],font_weight:[n(l),null],gap:[n(l),null],glyph_orientation_vertical:[n(l),null],grid:[n(l),null],grid_area:[n(l),null],grid_auto_columns:[n(l),null],grid_auto_flow:[n(l),null],grid_auto_rows:[n(l),null],grid_column:[n(l),null],grid_column_end:[n(l),null],grid_column_gap:[n(l),null],grid_column_start:[n(l),null],grid_gap:[n(l),null],grid_row:[n(l),null],grid_row_end:[n(l),null],grid_row_gap:[n(l),null],grid_row_start:[n(l),null],grid_template:[n(l),null],grid_template_areas:[n(l),null],grid_template_columns:[n(l),null],grid_template_rows:[n(l),null],height:[n(l),null],hyphens:[n(l),null],image_orientation:[n(l),null],image_rendering:[n(l),null],inline_size:[n(l),null],justify_content:[n(l),null],justify_items:[n(l),null],justify_self:[n(l),null],left:[n(l),null],letter_spacing:[n(l),null],lighting_color:[n(l),null],line_break:[n(l),null],line_height:[n(l),null],list_style:[n(l),null],list_style_image:[n(l),null],list_style_position:[n(l),null],list_style_type:[n(l),null],margin:[n(l),null],margin_block_end:[n(l),null],margin_block_start:[n(l),null],margin_bottom:[n(l),null],margin_inline_end:[n(l),null],margin_inline_start:[n(l),null],margin_left:[n(l),null],margin_right:[n(l),null],margin_top:[n(l),null],marker:[n(l),null],marker_end:[n(l),null],marker_mid:[n(l),null],marker_start:[n(l),null],mask:[n(l),null],mask_composite:[n(l),null],mask_image:[n(l),null],mask_position:[n(l),null],mask_repeat:[n(l),null],mask_size:[n(l),null],mask_type:[n(l),null],max_block_size:[n(l),null],max_height:[n(l),null],max_inline_size:[n(l),null],max_width:[n(l),null],min_block_size:[n(l),null],min_height:[n(l),null],min_inline_size:[n(l),null],min_width:[n(l),null],object_fit:[n(l),null],object_position:[n(l),null],opacity:[n(l),null],order:[n(l),null],orphans:[n(l),null],outline:[n(l),null],outline_color:[n(l),null],outline_offset:[n(l),null],outline_style:[n(l),null],outline_width:[n(l),null],overflow:[n(l),null],overflow_anchor:[n(l),null],overflow_wrap:[n(l),null],overflow_x:[n(l),null],overflow_y:[n(l),null],overscroll_behavior:[n(l),null],overscroll_behavior_block:[n(l),null],overscroll_behavior_inline:[n(l),null],overscroll_behavior_x:[n(l),null],overscroll_behavior_y:[n(l),null],padding:[n(l),null],padding_block_end:[n(l),null],padding_block_start:[n(l),null],padding_bottom:[n(l),null],padding_inline_end:[n(l),null],padding_inline_start:[n(l),null],padding_left:[n(l),null],padding_right:[n(l),null],padding_top:[n(l),null],page_break_after:[n(l),null],page_break_before:[n(l),null],page_break_inside:[n(l),null],paint_order:[n(l),null],perspective:[n(l),null],perspective_origin:[n(l),null],place_content:[n(l),null],place_items:[n(l),null],place_self:[n(l),null],pointer_events:[n(l),null],position:[n(l),null],quotes:[n(l),null],resize:[n(l),null],right:[n(l),null],rotate:[n(l),null],row_gap:[n(l),null],ruby_align:[n(l),null],ruby_position:[n(l),null],scale:[n(l),null],scroll_behavior:[n(l),null],shape_rendering:[n(l),null],stop_color:[n(l),null],stop_opacity:[n(l),null],stroke:[n(l),null],stroke_dasharray:[n(l),null],stroke_dashoffset:[n(l),null],stroke_linecap:[n(l),null],stroke_linejoin:[n(l),null],stroke_miterlimit:[n(l),null],stroke_opacity:[n(l),null],stroke_width:[n(l),null],tab_size:[n(l),null],table_layout:[n(l),null],text_align:[n(l),null],text_align_last:[n(l),null],text_anchor:[n(l),null],text_combine_upright:[n(l),null],text_decoration:[n(l),null],text_decoration_color:[n(l),null],text_decoration_line:[n(l),null],text_decoration_style:[n(l),null],text_emphasis:[n(l),null],text_emphasis_color:[n(l),null],text_emphasis_position:[n(l),null],text_emphasis_style:[n(l),null],text_indent:[n(l),null],text_justify:[n(l),null],text_orientation:[n(l),null],text_overflow:[n(l),null],text_rendering:[n(l),null],text_shadow:[n(l),null],text_transform:[n(l),null],text_underline_position:[n(l),null],top:[n(l),null],touch_action:[n(l),null],transform:[n(l),null],transform_box:[n(l),null],transform_origin:[n(l),null],transform_style:[n(l),null],transition:[n(l),null],transition_delay:[n(l),null],transition_duration:[n(l),null],transition_property:[n(l),null],transition_timing_function:[n(l),null],translate:[n(l),null],unicode_bidi:[n(l),null],user_select:[n(l),null],vertical_align:[n(l),null],visibility:[n(l),null],white_space:[n(l),null],widows:[n(l),null],width:[n(l),null],will_change:[n(l),null],word_break:[n(l),null],word_spacing:[n(l),null],word_wrap:[n(l),null],writing_mode:[n(l),null],z_index:[n(l),null]})))},\n", + " function _(t,o,e,n,s){var i;n();const l=t(15),c=t(53),r=t(224),a=t(232),u=t(234);class h extends c.Model{constructor(t){super(t)}get button_view(){return this.tools[0].button_view}get event_type(){return this.tools[0].event_type}get tooltip(){return this.tools[0].tooltip}get tool_name(){return this.tools[0].tool_name}get icon(){return this.tools[0].computed_icon}get computed_icon(){return this.icon}get toggleable(){const t=this.tools[0];return t instanceof a.InspectTool&&t.toggleable}initialize(){super.initialize(),this.do=new l.Signal0(this,\"do\")}connect_signals(){super.connect_signals(),this.connect(this.do,(()=>this.doit())),this.connect(this.properties.active.change,(()=>this.set_active()));for(const t of this.tools)this.connect(t.properties.active.change,(()=>{this.active=t.active}))}doit(){for(const t of this.tools)t.do.emit()}set_active(){for(const t of this.tools)t.active=this.active}get menu(){const{menu:t}=this.tools[0];if(null==t)return null;const o=[];for(const[e,n]of(0,u.enumerate)(t))if(null==e)o.push(null);else{const t=()=>{var t,o,e;for(const s of this.tools)null===(e=null===(o=null===(t=s.menu)||void 0===t?void 0:t[n])||void 0===o?void 0:o.handler)||void 0===e||e.call(o)};o.push(Object.assign(Object.assign({},e),{handler:t}))}return o}}e.ToolProxy=h,i=h,h.__name__=\"ToolProxy\",i.define((({Boolean:t,Array:o,Ref:e})=>({tools:[o(e(r.ButtonTool)),[]],active:[t,!1],disabled:[t,!1]})))},\n", + " function _(o,t,s,e,i){var n,r;e();const l=o(20),c=o(9),h=o(13),a=o(233),_=o(221),p=o(394),u=o(309),f=o(207);class y extends a.ToolbarBase{constructor(o){super(o)}initialize(){super.initialize(),this._merge_tools()}_merge_tools(){this._proxied_tools=[];const o={},t={},s={},e=[],i=[];for(const o of this.help)(0,c.includes)(i,o.redirect)||(e.push(o),i.push(o.redirect));this._proxied_tools.push(...e),this.help=e;for(const[o,t]of(0,h.entries)(this.gestures)){o in s||(s[o]={});for(const e of t.tools)e.type in s[o]||(s[o][e.type]=[]),s[o][e.type].push(e)}for(const t of this.inspectors)t.type in o||(o[t.type]=[]),o[t.type].push(t);for(const o of this.actions)o.type in t||(t[o.type]=[]),t[o.type].push(o);const n=(o,t=!1)=>{const s=new p.ToolProxy({tools:o,active:t});return this._proxied_tools.push(s),s};for(const o of(0,h.keys)(s)){const t=this.gestures[o];t.tools=[];for(const e of(0,h.keys)(s[o])){const i=s[o][e];if(i.length>0)if(\"multi\"==o)for(const o of i){const s=n([o]);t.tools.push(s),this.connect(s.properties.active.change,(()=>this._active_change(s)))}else{const o=n(i);t.tools.push(o),this.connect(o.properties.active.change,(()=>this._active_change(o)))}}}this.actions=[];for(const[o,s]of(0,h.entries)(t))if(\"CustomAction\"==o)for(const o of s)this.actions.push(n([o]));else s.length>0&&this.actions.push(n(s));this.inspectors=[];for(const t of(0,h.values)(o))t.length>0&&this.inspectors.push(n(t,!0));for(const[o,t]of(0,h.entries)(this.gestures))0!=t.tools.length&&(t.tools=(0,c.sort_by)(t.tools,(o=>o.default_order)),\"pinch\"!=o&&\"scroll\"!=o&&\"multi\"!=o&&(t.tools[0].active=!0))}}s.ProxyToolbar=y,n=y,y.__name__=\"ProxyToolbar\",n.define((({Array:o,Ref:t})=>({toolbars:[o(t(_.Toolbar)),[]]})));class d extends u.LayoutDOMView{initialize(){this.model.toolbar.toolbar_location=this.model.toolbar_location,super.initialize()}get child_models(){return[this.model.toolbar]}_update_layout(){this.layout=new f.ContentBox(this.child_views[0].el);const{toolbar:o}=this.model;o.horizontal?this.layout.set_sizing({width_policy:\"fit\",min_width:100,height_policy:\"fixed\"}):this.layout.set_sizing({width_policy:\"fixed\",height_policy:\"fit\",min_height:100})}after_layout(){super.after_layout();const o=this.child_views[0];o.layout.bbox=this.layout.bbox,o.render()}}s.ToolbarBoxView=d,d.__name__=\"ToolbarBoxView\";class b extends u.LayoutDOM{constructor(o){super(o)}}s.ToolbarBox=b,r=b,b.__name__=\"ToolbarBox\",r.prototype.default_view=d,r.define((({Ref:o})=>({toolbar:[o(a.ToolbarBase)],toolbar_location:[l.Location,\"right\"]})))},\n", + " function _(e,n,r,t,o){t();const s=e(1),u=e(53),c=(0,s.__importStar)(e(21)),a=e(8),l=e(13);r.resolve_defs=function(e,n){var r,t,o,s;function i(e){return null!=e.module?`${e.module}.${e.name}`:e.name}function f(e){if((0,a.isString)(e))switch(e){case\"Any\":return c.Any;case\"Unknown\":return c.Unknown;case\"Boolean\":return c.Boolean;case\"Number\":return c.Number;case\"Int\":return c.Int;case\"String\":return c.String;case\"Null\":return c.Null}else switch(e[0]){case\"Nullable\":{const[,n]=e;return c.Nullable(f(n))}case\"Or\":{const[,...n]=e;return c.Or(...n.map(f))}case\"Tuple\":{const[,n,...r]=e;return c.Tuple(f(n),...r.map(f))}case\"Array\":{const[,n]=e;return c.Array(f(n))}case\"Struct\":{const[,...n]=e,r=n.map((([e,n])=>[e,f(n)]));return c.Struct((0,l.to_object)(r))}case\"Dict\":{const[,n]=e;return c.Dict(f(n))}case\"Map\":{const[,n,r]=e;return c.Map(f(n),f(r))}case\"Enum\":{const[,...n]=e;return c.Enum(...n)}case\"Ref\":{const[,r]=e,t=n.get(i(r));if(null!=t)return c.Ref(t);throw new Error(`${i(r)} wasn't defined before referencing it`)}case\"AnyRef\":return c.AnyRef()}}for(const c of e){const e=(()=>{if(null==c.extends)return u.Model;{const e=n.get(i(c.extends));if(null!=e)return e;throw new Error(`base model ${i(c.extends)} of ${i(c)} is not defined`)}})(),a=((s=class extends e{}).__name__=c.name,s.__module__=c.module,s);for(const e of null!==(r=c.properties)&&void 0!==r?r:[]){const n=f(null!==(t=e.kind)&&void 0!==t?t:\"Unknown\");a.define({[e.name]:[n,e.default]})}for(const e of null!==(o=c.overrides)&&void 0!==o?o:[])a.override({[e.name]:e.default});n.register(a)}}},\n", + " function _(n,e,t,o,i){o();const d=n(5),c=n(226),s=n(113),a=n(43),l=n(398);t.index={},t.add_document_standalone=async function(n,e,o=[],i=!1){const u=new Map;async function f(i){let d;const f=n.roots().indexOf(i),r=o[f];null!=r?d=r:e.classList.contains(l.BOKEH_ROOT)?d=e:(d=(0,a.div)({class:l.BOKEH_ROOT}),e.appendChild(d));const w=await(0,s.build_view)(i,{parent:null});return w instanceof c.DOMView&&w.renderTo(d),u.set(i,w),t.index[i.id]=w,w}for(const e of n.roots())await f(e);return i&&(window.document.title=n.title()),n.on_change((n=>{n instanceof d.RootAddedEvent?f(n.model):n instanceof d.RootRemovedEvent?function(n){const e=u.get(n);null!=e&&(e.remove(),u.delete(n),delete t.index[n.id])}(n.model):i&&n instanceof d.TitleChangedEvent&&(window.document.title=n.title)})),[...u.values()]}},\n", + " function _(o,e,n,t,r){t();const l=o(43),d=o(44);function u(o){let e=document.getElementById(o);if(null==e)throw new Error(`Error rendering Bokeh model: could not find #${o} HTML tag`);if(!document.body.contains(e))throw new Error(`Error rendering Bokeh model: element #${o} must be under `);if(\"SCRIPT\"==e.tagName){const o=(0,l.div)({class:n.BOKEH_ROOT});(0,l.replaceWith)(e,o),e=o}return e}n.BOKEH_ROOT=d.root,n._resolve_element=function(o){const{elementid:e}=o;return null!=e?u(e):document.body},n._resolve_root_elements=function(o){const e=[];if(null!=o.root_ids&&null!=o.roots)for(const n of o.root_ids)e.push(u(o.roots[n]));return e}},\n", + " function _(n,o,t,s,e){s();const c=n(400),r=n(19),a=n(397);t._get_ws_url=function(n,o){let t,s=\"ws:\";return\"https:\"==window.location.protocol&&(s=\"wss:\"),null!=o?(t=document.createElement(\"a\"),t.href=o):t=window.location,null!=n?\"/\"==n&&(n=\"\"):n=t.pathname.replace(/\\/+$/,\"\"),`${s}//${t.host}${n}/ws`};const i={};t.add_document_from_session=async function(n,o,t,s=[],e=!1){const l=window.location.search.substr(1);let d;try{d=await function(n,o,t){const s=(0,c.parse_token)(o).session_id;n in i||(i[n]={});const e=i[n];return s in e||(e[s]=(0,c.pull_session)(n,o,t)),e[s]}(n,o,l)}catch(n){const t=(0,c.parse_token)(o).session_id;throw r.logger.error(`Failed to load Bokeh session ${t}: ${n}`),n}return(0,a.add_document_standalone)(d.document,t,s,e)}},\n", + " function _(e,s,n,t,o){t();const r=e(19),i=e(5),c=e(401),l=e(402),_=e(403);n.DEFAULT_SERVER_WEBSOCKET_URL=\"ws://localhost:5006/ws\",n.DEFAULT_TOKEN=\"eyJzZXNzaW9uX2lkIjogImRlZmF1bHQifQ\";let h=0;function a(e){let s=e.split(\".\")[0];const n=s.length%4;return 0!=n&&(s+=\"=\".repeat(4-n)),JSON.parse(atob(s.replace(/_/g,\"/\").replace(/-/g,\"+\")))}n.parse_token=a;class d{constructor(e=n.DEFAULT_SERVER_WEBSOCKET_URL,s=n.DEFAULT_TOKEN,t=null){this.url=e,this.token=s,this.args_string=t,this._number=h++,this.socket=null,this.session=null,this.closed_permanently=!1,this._current_handler=null,this._pending_replies=new Map,this._pending_messages=[],this._receiver=new l.Receiver,this.id=a(s).session_id.split(\".\")[0],r.logger.debug(`Creating websocket ${this._number} to '${this.url}' session '${this.id}'`)}async connect(){if(this.closed_permanently)throw new Error(\"Cannot connect() a closed ClientConnection\");if(null!=this.socket)throw new Error(\"Already connected\");this._current_handler=null,this._pending_replies.clear(),this._pending_messages=[];try{let e=`${this.url}`;return null!=this.args_string&&this.args_string.length>0&&(e+=`?${this.args_string}`),this.socket=new WebSocket(e,[\"bokeh\",this.token]),new Promise(((e,s)=>{this.socket.binaryType=\"arraybuffer\",this.socket.onopen=()=>this._on_open(e,s),this.socket.onmessage=e=>this._on_message(e),this.socket.onclose=e=>this._on_close(e,s),this.socket.onerror=()=>this._on_error(s)}))}catch(e){throw r.logger.error(`websocket creation failed to url: ${this.url}`),r.logger.error(` - ${e}`),e}}close(){this.closed_permanently||(r.logger.debug(`Permanently closing websocket connection ${this._number}`),this.closed_permanently=!0,null!=this.socket&&this.socket.close(1e3,`close method called on ClientConnection ${this._number}`),this.session._connection_closed())}_schedule_reconnect(e){setTimeout((()=>{this.closed_permanently||r.logger.info(`Websocket connection ${this._number} disconnected, will not attempt to reconnect`)}),e)}send(e){if(null==this.socket)throw new Error(`not connected so cannot send ${e}`);e.send(this.socket)}async send_with_reply(e){const s=await new Promise(((s,n)=>{this._pending_replies.set(e.msgid(),{resolve:s,reject:n}),this.send(e)}));if(\"ERROR\"===s.msgtype())throw new Error(`Error reply ${s.content.text}`);return s}async _pull_doc_json(){const e=c.Message.create(\"PULL-DOC-REQ\",{}),s=await this.send_with_reply(e);if(!(\"doc\"in s.content))throw new Error(\"No 'doc' field in PULL-DOC-REPLY\");return s.content.doc}async _repull_session_doc(e,s){var n;r.logger.debug(this.session?\"Repulling session\":\"Pulling session for first time\");try{const n=await this._pull_doc_json();if(null==this.session)if(this.closed_permanently)r.logger.debug(\"Got new document after connection was already closed\"),s(new Error(\"The connection has been closed\"));else{const s=i.Document.from_json(n),t=i.Document._compute_patch_since_json(n,s);if(t.events.length>0){r.logger.debug(`Sending ${t.events.length} changes from model construction back to server`);const e=c.Message.create(\"PATCH-DOC\",{},t);this.send(e)}this.session=new _.ClientSession(this,s,this.id);for(const e of this._pending_messages)this.session.handle(e);this._pending_messages=[],r.logger.debug(\"Created a new session from new pulled doc\"),e(this.session)}else this.session.document.replace_with_json(n),r.logger.debug(\"Updated existing session with new pulled doc\")}catch(e){null===(n=console.trace)||void 0===n||n.call(console,e),r.logger.error(`Failed to repull session ${e}`),s(e instanceof Error?e:`${e}`)}}_on_open(e,s){r.logger.info(`Websocket connection ${this._number} is now open`),this._current_handler=n=>{this._awaiting_ack_handler(n,e,s)}}_on_message(e){null==this._current_handler&&r.logger.error(\"Got a message with no current handler set\");try{this._receiver.consume(e.data)}catch(e){this._close_bad_protocol(`${e}`)}const s=this._receiver.message;if(null!=s){const e=s.problem();null!=e&&this._close_bad_protocol(e),this._current_handler(s)}}_on_close(e,s){r.logger.info(`Lost websocket ${this._number} connection, ${e.code} (${e.reason})`),this.socket=null,this._pending_replies.forEach((e=>e.reject(\"Disconnected\"))),this._pending_replies.clear(),this.closed_permanently||this._schedule_reconnect(2e3),s(new Error(`Lost websocket connection, ${e.code} (${e.reason})`))}_on_error(e){r.logger.debug(`Websocket error on socket ${this._number}`);const s=\"Could not open websocket\";r.logger.error(`Failed to connect to Bokeh server: ${s}`),e(new Error(s))}_close_bad_protocol(e){r.logger.error(`Closing connection: ${e}`),null!=this.socket&&this.socket.close(1002,e)}_awaiting_ack_handler(e,s,n){\"ACK\"===e.msgtype()?(this._current_handler=e=>this._steady_state_handler(e),this._repull_session_doc(s,n)):this._close_bad_protocol(\"First message was not an ACK\")}_steady_state_handler(e){const s=e.reqid(),n=this._pending_replies.get(s);n?(this._pending_replies.delete(s),n.resolve(e)):this.session?this.session.handle(e):\"PATCH-DOC\"!=e.msgtype()&&this._pending_messages.push(e)}}n.ClientConnection=d,d.__name__=\"ClientConnection\",n.pull_session=function(e,s,n){return new d(e,s,n).connect()}},\n", + " function _(e,s,t,r,n){r();const i=e(34);class a{constructor(e,s,t){this.header=e,this.metadata=s,this.content=t,this.buffers=new Map}static assemble(e,s,t){const r=JSON.parse(e),n=JSON.parse(s),i=JSON.parse(t);return new a(r,n,i)}assemble_buffer(e,s){const t=null!=this.header.num_buffers?this.header.num_buffers:0;if(t<=this.buffers.size)throw new Error(`too many buffers received, expecting ${t}`);const{id:r}=JSON.parse(e);this.buffers.set(r,s)}static create(e,s,t={}){const r=a.create_header(e);return new a(r,s,t)}static create_header(e){return{msgid:(0,i.uniqueId)(),msgtype:e}}complete(){return null!=this.header&&null!=this.metadata&&null!=this.content&&(null==this.header.num_buffers||this.buffers.size==this.header.num_buffers)}send(e){if((null!=this.header.num_buffers?this.header.num_buffers:0)>0)throw new Error(\"BokehJS only supports receiving buffers, not sending\");const s=JSON.stringify(this.header),t=JSON.stringify(this.metadata),r=JSON.stringify(this.content);e.send(s),e.send(t),e.send(r)}msgid(){return this.header.msgid}msgtype(){return this.header.msgtype}reqid(){return this.header.reqid}problem(){return\"msgid\"in this.header?\"msgtype\"in this.header?null:\"No msgtype in header\":\"No msgid in header\"}}t.Message=a,a.__name__=\"Message\"},\n", + " function _(e,t,s,_,r){_();const i=e(401),h=e(8);class a{constructor(){this.message=null,this._partial=null,this._fragments=[],this._buf_header=null,this._current_consumer=this._HEADER}consume(e){this._current_consumer(e)}_HEADER(e){this._assume_text(e),this.message=null,this._partial=null,this._fragments=[e],this._buf_header=null,this._current_consumer=this._METADATA}_METADATA(e){this._assume_text(e),this._fragments.push(e),this._current_consumer=this._CONTENT}_CONTENT(e){this._assume_text(e),this._fragments.push(e);const[t,s,_]=this._fragments.slice(0,3);this._partial=i.Message.assemble(t,s,_),this._check_complete()}_BUFFER_HEADER(e){this._assume_text(e),this._buf_header=e,this._current_consumer=this._BUFFER_PAYLOAD}_BUFFER_PAYLOAD(e){this._assume_binary(e),this._partial.assemble_buffer(this._buf_header,e),this._check_complete()}_assume_text(e){if(!(0,h.isString)(e))throw new Error(\"Expected text fragment but received binary fragment\")}_assume_binary(e){if(!(e instanceof ArrayBuffer))throw new Error(\"Expected binary fragment but received text fragment\")}_check_complete(){this._partial.complete()?(this.message=this._partial,this._current_consumer=this._HEADER):this._current_consumer=this._BUFFER_HEADER}}s.Receiver=a,a.__name__=\"Receiver\"},\n", + " function _(e,t,n,s,o){s();const c=e(5),i=e(401),_=e(19);class r{constructor(e,t,n){this._connection=e,this.document=t,this.id=n,this._document_listener=e=>{this._document_changed(e)},this.document.on_change(this._document_listener,!0)}handle(e){const t=e.msgtype();\"PATCH-DOC\"===t?this._handle_patch(e):\"OK\"===t?this._handle_ok(e):\"ERROR\"===t?this._handle_error(e):_.logger.debug(`Doing nothing with message ${e.msgtype()}`)}close(){this._connection.close()}_connection_closed(){this.document.remove_on_change(this._document_listener)}async request_server_info(){const e=i.Message.create(\"SERVER-INFO-REQ\",{});return(await this._connection.send_with_reply(e)).content}async force_roundtrip(){await this.request_server_info()}_document_changed(e){if(e.setter_id===this.id)return;const t=e instanceof c.DocumentEventBatch?e.events:[e],n=this.document.create_json_patch(t),s=i.Message.create(\"PATCH-DOC\",{},n);this._connection.send(s)}_handle_patch(e){this.document.apply_json_patch(e.content,e.buffers,this.id)}_handle_ok(e){_.logger.trace(`Unhandled OK reply to ${e.reqid()}`)}_handle_error(e){_.logger.error(`Unhandled ERROR reply to ${e.reqid()}: ${e.content.text}`)}}n.ClientSession=r,r.__name__=\"ClientSession\"},\n", + " function _(e,o,t,n,r){n();const s=e(1),l=e(5),i=e(402),a=e(19),c=e(43),g=e(13),f=e(397),u=e(398),m=(0,s.__importDefault)(e(44)),p=(0,s.__importDefault)(e(240)),d=(0,s.__importDefault)(e(405));function _(e,o){o.buffers.length>0?e.consume(o.buffers[0].buffer):e.consume(o.content.data);const t=e.message;null!=t&&this.apply_json_patch(t.content,t.buffers)}function b(e,o){if(\"undefined\"!=typeof Jupyter&&null!=Jupyter.notebook.kernel){a.logger.info(`Registering Jupyter comms for target ${e}`);const t=Jupyter.notebook.kernel.comm_manager;try{t.register_target(e,(t=>{a.logger.info(`Registering Jupyter comms for target ${e}`);const n=new i.Receiver;t.on_msg(_.bind(o,n))}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(o.roots()[0].id in t.kernels){a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=t.kernels[o.roots()[0].id];try{n.registerCommTarget(e,(t=>{a.logger.info(`Registering JupyterLab comms for target ${e}`);const n=new i.Receiver;t.onMsg=_.bind(o,n)}))}catch(e){a.logger.warn(`Jupyter comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else if(\"undefined\"!=typeof google&&null!=google.colab.kernel){a.logger.info(`Registering Google Colab comms for target ${e}`);const t=google.colab.kernel.comms;try{t.registerTarget(e,(async t=>{var n,r,l;a.logger.info(`Registering Google Colab comms for target ${e}`);const c=new i.Receiver;try{for(var g,f=(0,s.__asyncValues)(t.messages);!(g=await f.next()).done;){const e=g.value,t={data:e.data},n=[];for(const o of null!==(l=e.buffers)&&void 0!==l?l:[])n.push(new DataView(o));const r={content:t,buffers:n};_.bind(o)(c,r)}}catch(e){n={error:e}}finally{try{g&&!g.done&&(r=f.return)&&await r.call(f)}finally{if(n)throw n.error}}}))}catch(e){a.logger.warn(`Google Colab comms failed to register. push_notebook() will not function. (exception reported: ${e})`)}}else console.warn(\"Jupyter notebooks comms not available. push_notebook() will not function. If running JupyterLab ensure the latest @bokeh/jupyter_bokeh extension is installed. In an exported notebook this warning is expected.\")}c.stylesheet.append(m.default),c.stylesheet.append(p.default),c.stylesheet.append(d.default),t.kernels={},t.embed_items_notebook=function(e,o){if(1!=(0,g.size)(e))throw new Error(\"embed_items_notebook expects exactly one document in docs_json\");const t=l.Document.from_json((0,g.values)(e)[0]);for(const e of o){null!=e.notebook_comms_target&&b(e.notebook_comms_target,t);const o=(0,u._resolve_element)(e),n=(0,u._resolve_root_elements)(e);(0,f.add_document_standalone)(t,o,n)}}},\n", + " function _(t,o,r,e,d){e(),r.root=\"bk-root\",r.tooltip=\"bk-tooltip\",r.default=\".rendered_html .bk-root .bk-tooltip table,.rendered_html .bk-root .bk-tooltip tr,.rendered_html .bk-root .bk-tooltip th,.rendered_html .bk-root .bk-tooltip td{border:none;padding:1px;}\"},\n", + " function _(t,_,o,r,n){r();const a=t(1);(0,a.__exportStar)(t(401),o),(0,a.__exportStar)(t(402),o)},\n", + " function _(e,t,n,s,o){function l(){const e=document.getElementsByTagName(\"body\")[0],t=document.getElementsByClassName(\"bokeh-test-div\");1==t.length&&(e.removeChild(t[0]),delete t[0]);const n=document.createElement(\"div\");n.classList.add(\"bokeh-test-div\"),n.style.display=\"none\",e.insertBefore(n,e.firstChild)}s(),n.results={},n.init=function(){l()},n.record0=function(e,t){n.results[e]=t},n.record=function(e,t){n.results[e]=t,l()},n.count=function(e){null==n.results[e]&&(n.results[e]=0),n.results[e]+=1,l()}},\n", + " function _(e,t,o,n,l){n(),o.safely=function(e,t=!1){try{return e()}catch(e){if(function(e){const t=document.createElement(\"div\");t.style.backgroundColor=\"#f2dede\",t.style.border=\"1px solid #a94442\",t.style.borderRadius=\"4px\",t.style.display=\"inline-block\",t.style.fontFamily=\"sans-serif\",t.style.marginTop=\"5px\",t.style.minWidth=\"200px\",t.style.padding=\"5px 5px 5px 10px\",t.classList.add(\"bokeh-error-box-into-flames\");const o=document.createElement(\"span\");o.style.backgroundColor=\"#a94442\",o.style.borderRadius=\"0px 4px 0px 0px\",o.style.color=\"white\",o.style.cursor=\"pointer\",o.style.cssFloat=\"right\",o.style.fontSize=\"0.8em\",o.style.margin=\"-6px -6px 0px 0px\",o.style.padding=\"2px 5px 4px 5px\",o.title=\"close\",o.setAttribute(\"aria-label\",\"close\"),o.appendChild(document.createTextNode(\"x\")),o.addEventListener(\"click\",(()=>s.removeChild(t)));const n=document.createElement(\"h3\");n.style.color=\"#a94442\",n.style.margin=\"8px 0px 0px 0px\",n.style.padding=\"0px\",n.appendChild(document.createTextNode(\"Bokeh Error\"));const l=document.createElement(\"pre\");l.style.whiteSpace=\"unset\",l.style.overflowX=\"auto\",l.appendChild(document.createTextNode(e)),t.appendChild(o),t.appendChild(n),t.appendChild(l);const s=document.getElementsByTagName(\"body\")[0];s.insertBefore(t,s.firstChild)}(e instanceof Error&&e.stack?e.stack:`${e}`),t)return;throw e}}},\n", + " ], 0, {\"main\":0,\"tslib\":1,\"index\":2,\"version\":3,\"embed/index\":4,\"document/index\":5,\"document/document\":6,\"base\":7,\"core/util/types\":8,\"core/util/array\":9,\"core/util/math\":10,\"core/util/assert\":11,\"core/util/arrayable\":12,\"core/util/object\":13,\"core/has_props\":14,\"core/signaling\":15,\"core/util/defer\":16,\"core/util/refs\":17,\"core/properties\":18,\"core/logging\":19,\"core/enums\":20,\"core/kinds\":21,\"core/util/color\":22,\"core/util/svg_colors\":23,\"core/types\":24,\"core/util/bitset\":25,\"core/util/eq\":26,\"core/util/platform\":27,\"core/settings\":28,\"core/util/ndarray\":29,\"core/serializer\":30,\"core/util/serialization\":31,\"core/util/buffer\":32,\"core/uniforms\":33,\"core/util/string\":34,\"document/events\":35,\"core/util/pretty\":36,\"core/util/cloneable\":37,\"models/index\":38,\"models/annotations/index\":39,\"models/annotations/annotation\":40,\"models/renderers/renderer\":41,\"core/view\":42,\"core/dom\":43,\"styles/root.css\":44,\"core/visuals/index\":45,\"core/visuals/line\":46,\"core/visuals/visual\":47,\"core/property_mixins\":48,\"core/visuals/fill\":49,\"core/visuals/text\":50,\"core/visuals/hatch\":51,\"core/visuals/patterns\":52,\"model\":53,\"models/canvas/coordinates\":54,\"models/scales/scale\":55,\"models/transforms/transform\":56,\"models/ranges/range\":57,\"models/ranges/range1d\":58,\"models/scales/linear_scale\":59,\"models/scales/continuous_scale\":60,\"models/scales/log_scale\":61,\"models/scales/categorical_scale\":62,\"models/ranges/data_range1d\":63,\"models/ranges/data_range\":64,\"core/util/bbox\":65,\"models/util\":66,\"models/ranges/factor_range\":67,\"models/annotations/arrow\":68,\"models/annotations/data_annotation\":69,\"models/sources/columnar_data_source\":70,\"models/sources/data_source\":71,\"models/selections/selection\":72,\"core/selection_manager\":73,\"models/selections/interaction_policy\":74,\"models/sources/column_data_source\":75,\"core/util/typed_array\":76,\"core/util/set\":77,\"core/util/projections\":78,\"models/annotations/arrow_head\":112,\"core/build_views\":113,\"models/annotations/band\":114,\"models/annotations/upper_lower\":115,\"models/annotations/box_annotation\":116,\"models/annotations/color_bar\":117,\"models/annotations/title\":118,\"models/annotations/text_annotation\":119,\"core/graphics\":120,\"core/util/text\":121,\"core/util/affine\":122,\"core/layout/side_panel\":123,\"core/layout/types\":124,\"core/layout/layoutable\":125,\"models/canvas/cartesian_frame\":126,\"models/axes/index\":127,\"models/axes/axis\":128,\"models/renderers/guide_renderer\":129,\"models/tickers/ticker\":130,\"models/formatters/tick_formatter\":131,\"models/policies/labeling\":132,\"models/text/base_text\":133,\"models/text/utils\":134,\"models/text/math_text\":135,\"core/util/image\":136,\"models/text/providers\":137,\"core/util/modules\":138,\"models/text/plain_text\":139,\"models/axes/categorical_axis\":140,\"models/tickers/categorical_ticker\":141,\"models/formatters/categorical_tick_formatter\":142,\"models/axes/continuous_axis\":143,\"models/axes/datetime_axis\":144,\"models/axes/linear_axis\":145,\"models/formatters/basic_tick_formatter\":146,\"models/tickers/basic_ticker\":147,\"models/tickers/adaptive_ticker\":148,\"models/tickers/continuous_ticker\":149,\"models/formatters/datetime_tick_formatter\":150,\"core/util/templating\":152,\"models/tickers/datetime_ticker\":155,\"models/tickers/composite_ticker\":156,\"models/tickers/days_ticker\":157,\"models/tickers/single_interval_ticker\":158,\"models/tickers/util\":159,\"models/tickers/months_ticker\":160,\"models/tickers/years_ticker\":161,\"models/axes/log_axis\":162,\"models/formatters/log_tick_formatter\":163,\"models/tickers/log_ticker\":164,\"models/axes/mercator_axis\":165,\"models/formatters/mercator_tick_formatter\":166,\"models/tickers/mercator_ticker\":167,\"models/tickers/index\":168,\"models/tickers/fixed_ticker\":169,\"models/tickers/binned_ticker\":170,\"models/mappers/scanning_color_mapper\":171,\"models/mappers/continuous_color_mapper\":172,\"models/mappers/color_mapper\":173,\"models/mappers/mapper\":174,\"models/renderers/glyph_renderer\":175,\"models/renderers/data_renderer\":176,\"models/glyphs/line\":177,\"models/glyphs/xy_glyph\":178,\"models/glyphs/glyph\":179,\"core/util/ragged_array\":180,\"core/util/spatial\":181,\"models/glyphs/utils\":184,\"core/hittest\":185,\"models/glyphs/patch\":186,\"models/glyphs/harea\":187,\"models/glyphs/area\":188,\"models/glyphs/varea\":189,\"models/sources/cds_view\":190,\"models/filters/filter\":191,\"models/formatters/index\":192,\"models/formatters/func_tick_formatter\":193,\"models/formatters/numeral_tick_formatter\":194,\"models/formatters/printf_tick_formatter\":195,\"models/mappers/index\":196,\"models/mappers/categorical_color_mapper\":197,\"models/mappers/categorical_mapper\":198,\"models/mappers/categorical_marker_mapper\":199,\"models/mappers/categorical_pattern_mapper\":200,\"models/mappers/linear_color_mapper\":201,\"models/mappers/log_color_mapper\":202,\"models/mappers/eqhist_color_mapper\":203,\"models/scales/index\":204,\"models/scales/linear_interpolation_scale\":205,\"models/ranges/index\":206,\"core/layout/index\":207,\"core/layout/alignments\":208,\"core/layout/grid\":209,\"core/layout/html\":210,\"core/layout/border\":211,\"models/annotations/label\":212,\"models/annotations/label_set\":213,\"models/annotations/legend\":214,\"models/annotations/legend_item\":215,\"core/vectorization\":216,\"models/annotations/poly_annotation\":217,\"models/annotations/slope\":218,\"models/annotations/span\":219,\"models/annotations/toolbar_panel\":220,\"models/tools/toolbar\":221,\"models/tools/tool\":222,\"models/tools/gestures/gesture_tool\":223,\"models/tools/button_tool\":224,\"core/dom_view\":226,\"styles/toolbar.css\":227,\"styles/icons.css\":228,\"styles/menus.css\":229,\"core/util/menus\":230,\"models/tools/on_off_button\":231,\"models/tools/inspectors/inspect_tool\":232,\"models/tools/toolbar_base\":233,\"core/util/iterator\":234,\"core/util/canvas\":235,\"core/util/svg\":236,\"core/util/random\":237,\"models/tools/actions/action_tool\":238,\"models/tools/actions/help_tool\":239,\"styles/logo.css\":240,\"models/annotations/tooltip\":241,\"styles/tooltips.css\":242,\"models/annotations/whisker\":243,\"models/callbacks/index\":244,\"models/callbacks/customjs\":245,\"models/callbacks/callback\":246,\"models/callbacks/open_url\":247,\"models/canvas/index\":248,\"models/canvas/canvas\":249,\"core/ui_events\":250,\"core/bokeh_events\":251,\"core/util/wheel\":252,\"models/expressions/index\":253,\"models/expressions/expression\":254,\"models/expressions/customjs_expr\":255,\"models/expressions/stack\":256,\"models/expressions/cumsum\":257,\"models/expressions/minimum\":258,\"models/expressions/maximum\":259,\"models/expressions/coordinate_transform\":260,\"models/expressions/polar\":261,\"models/filters/index\":262,\"models/filters/boolean_filter\":263,\"models/filters/customjs_filter\":264,\"models/filters/group_filter\":265,\"models/filters/index_filter\":266,\"models/glyphs/index\":267,\"models/glyphs/annular_wedge\":268,\"models/glyphs/annulus\":269,\"models/glyphs/arc\":270,\"models/glyphs/bezier\":271,\"models/glyphs/circle\":272,\"models/glyphs/ellipse\":273,\"models/glyphs/ellipse_oval\":274,\"models/glyphs/center_rotatable\":275,\"models/glyphs/hbar\":276,\"models/glyphs/box\":277,\"models/glyphs/hex_tile\":278,\"models/glyphs/image\":279,\"models/glyphs/image_base\":280,\"models/glyphs/image_rgba\":281,\"models/glyphs/image_url\":282,\"models/glyphs/multi_line\":283,\"models/glyphs/multi_polygons\":284,\"models/glyphs/oval\":285,\"models/glyphs/patches\":286,\"models/glyphs/quad\":287,\"models/glyphs/quadratic\":288,\"models/glyphs/ray\":289,\"models/glyphs/rect\":290,\"models/glyphs/scatter\":291,\"models/glyphs/marker\":292,\"models/glyphs/defs\":293,\"models/glyphs/segment\":294,\"models/glyphs/spline\":295,\"core/util/interpolation\":296,\"models/glyphs/step\":297,\"models/glyphs/text\":298,\"models/glyphs/vbar\":299,\"models/glyphs/wedge\":300,\"models/graphs/index\":301,\"models/graphs/graph_hit_test_policy\":302,\"models/graphs/layout_provider\":303,\"models/graphs/static_layout_provider\":304,\"models/grids/index\":305,\"models/grids/grid\":306,\"models/layouts/index\":307,\"models/layouts/box\":308,\"models/layouts/layout_dom\":309,\"models/layouts/column\":310,\"models/layouts/grid_box\":311,\"models/layouts/html_box\":312,\"models/layouts/panel\":313,\"models/layouts/row\":314,\"models/layouts/spacer\":315,\"models/layouts/tabs\":316,\"styles/tabs.css\":317,\"styles/buttons.css\":318,\"models/layouts/widget_box\":319,\"models/text/index\":320,\"models/transforms/index\":321,\"models/transforms/customjs_transform\":322,\"models/transforms/dodge\":323,\"models/transforms/range_transform\":324,\"models/transforms/interpolator\":325,\"models/transforms/jitter\":326,\"models/transforms/linear_interpolator\":327,\"models/transforms/step_interpolator\":328,\"models/plots/index\":329,\"models/plots/gmap_plot\":330,\"models/plots/plot\":331,\"models/plots/plot_canvas\":332,\"core/util/throttle\":333,\"models/plots/range_manager\":334,\"models/plots/state_manager\":335,\"models/plots/gmap_plot_canvas\":336,\"models/policies/index\":337,\"models/renderers/index\":338,\"models/renderers/graph_renderer\":339,\"models/selections/index\":340,\"models/sources/index\":341,\"models/sources/server_sent_data_source\":342,\"models/sources/web_data_source\":343,\"models/sources/ajax_data_source\":344,\"models/sources/geojson_data_source\":345,\"models/tiles/index\":346,\"models/tiles/bbox_tile_source\":347,\"models/tiles/mercator_tile_source\":348,\"models/tiles/tile_source\":349,\"models/tiles/tile_utils\":350,\"models/tiles/quadkey_tile_source\":351,\"models/tiles/tile_renderer\":352,\"models/tiles/wmts_tile_source\":353,\"styles/tiles.css\":354,\"models/tiles/tms_tile_source\":355,\"models/textures/index\":356,\"models/textures/canvas_texture\":357,\"models/textures/texture\":358,\"models/textures/image_url_texture\":359,\"models/tools/index\":360,\"models/tools/actions/custom_action\":361,\"models/tools/actions/redo_tool\":362,\"models/tools/actions/reset_tool\":363,\"models/tools/actions/save_tool\":364,\"models/tools/actions/undo_tool\":365,\"models/tools/actions/zoom_in_tool\":366,\"models/tools/actions/zoom_base_tool\":367,\"core/util/zoom\":368,\"models/tools/actions/zoom_out_tool\":369,\"models/tools/edit/edit_tool\":370,\"models/tools/edit/box_edit_tool\":371,\"models/tools/edit/freehand_draw_tool\":372,\"models/tools/edit/point_draw_tool\":373,\"models/tools/edit/poly_draw_tool\":374,\"models/tools/edit/poly_tool\":375,\"models/tools/edit/poly_edit_tool\":376,\"models/tools/gestures/box_select_tool\":377,\"models/tools/gestures/select_tool\":378,\"models/tools/gestures/box_zoom_tool\":379,\"models/tools/gestures/lasso_select_tool\":380,\"models/tools/gestures/poly_select_tool\":381,\"models/tools/edit/line_edit_tool\":382,\"models/tools/edit/line_tool\":383,\"models/tools/gestures/pan_tool\":384,\"models/tools/gestures/range_tool\":385,\"models/tools/gestures/tap_tool\":386,\"models/tools/gestures/wheel_pan_tool\":387,\"models/tools/gestures/wheel_zoom_tool\":388,\"models/tools/inspectors/crosshair_tool\":389,\"models/tools/inspectors/customjs_hover\":390,\"models/tools/inspectors/hover_tool\":391,\"models/dom/index\":392,\"models/dom/styles\":393,\"models/tools/tool_proxy\":394,\"models/tools/toolbar_box\":395,\"document/defs\":396,\"embed/standalone\":397,\"embed/dom\":398,\"embed/server\":399,\"client/connection\":400,\"protocol/message\":401,\"protocol/receiver\":402,\"client/session\":403,\"embed/notebook\":404,\"styles/notebook.css\":405,\"protocol/index\":406,\"testing\":407,\"safely\":408}, {});});\n", + "\n", + " /* END bokeh.min.js */\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-gl.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.4.3\");\n", + " })(this, function(Bokeh, version) {\n", + " let define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 409: function _(n,c,f,i,o){i(),n(410)},\n", + " 410: function _(t,_,r,e,o){e();const a=t(1);o(\"get_regl\",t(411).get_regl),(0,a.__exportStar)(t(419),r),(0,a.__exportStar)(t(423),r),(0,a.__exportStar)(t(425),r),(0,a.__exportStar)(t(426),r),(0,a.__exportStar)(t(427),r),(0,a.__exportStar)(t(428),r),(0,a.__exportStar)(t(429),r),(0,a.__exportStar)(t(424),r)},\n", + " 411: function _(t,i,e,_,a){_();const r=t(1),o=(0,r.__importDefault)(t(412)),n=t(413),s=(0,r.__importDefault)(t(415)),l=(0,r.__importDefault)(t(416)),p=(0,r.__importDefault)(t(417)),h=(0,r.__importDefault)(t(418));let c;e.get_regl=function(t){return null==c&&(c=new u(t)),c};class u{constructor(t){try{this._regl=(0,o.default)({gl:t,extensions:[\"ANGLE_instanced_arrays\",\"EXT_blend_minmax\"]}),this._regl_available=!0,this._line_geometry=this._regl.buffer({usage:\"static\",type:\"float\",data:[[-2,0],[-1,-1],[1,-1],[2,0],[1,1],[-1,1]]}),this._line_triangles=this._regl.elements({usage:\"static\",primitive:\"triangles\",data:[[0,1,5],[1,2,5],[5,2,4],[2,3,4]]})}catch(t){this._regl_available=!1}}buffer(t){return this._regl.buffer(t)}clear(t,i){this._viewport={x:0,y:0,width:t,height:i},this._regl.clear({color:[0,0,0,0]})}get has_webgl(){return this._regl_available}get scissor(){return this._scissor}set_scissor(t,i,e,_){this._scissor={x:t,y:i,width:e,height:_}}get viewport(){return this._viewport}dashed_line(){return null==this._dashed_line&&(this._dashed_line=function(t,i,e){const _={vert:`#define DASHED\\n\\n${s.default}`,frag:`#define DASHED\\n\\n${l.default}`,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT),a_length_so_far:(t,i)=>i.length_so_far.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\"),u_dash_tex:t.prop(\"dash_tex\"),u_dash_tex_info:t.prop(\"dash_tex_info\"),u_dash_scale:t.prop(\"dash_scale\"),u_dash_offset:t.prop(\"dash_offset\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._dashed_line}get_dash(t){return null==this._dash_cache&&(this._dash_cache=new n.DashCache(this._regl)),this._dash_cache.get(t)}marker_no_hatch(t){null==this._marker_no_hatch_map&&(this._marker_no_hatch_map=new Map);let i=this._marker_no_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:p.default,frag:`#define USE_${i.toUpperCase()}\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_no_hatch_map.set(t,i)),i}marker_hatch(t){null==this._marker_hatch_map&&(this._marker_hatch_map=new Map);let i=this._marker_hatch_map.get(t);return null==i&&(i=function(t,i){const e={vert:`#define HATCH\\n${p.default}`,frag:`#define USE_${i.toUpperCase()}\\n#define HATCH\\n${h.default}`,attributes:{a_position:{buffer:t.buffer([[-.5,-.5],[-.5,.5],[.5,.5],[.5,-.5]]),divisor:0},a_center:(t,i)=>i.center.to_attribute_config(),a_width:(t,i)=>i.width.to_attribute_config(),a_height:(t,i)=>i.height.to_attribute_config(),a_angle:(t,i)=>i.angle.to_attribute_config(),a_linewidth:(t,i)=>i.linewidth.to_attribute_config(),a_line_color:(t,i)=>i.line_color.to_attribute_config(),a_fill_color:(t,i)=>i.fill_color.to_attribute_config(),a_line_cap:(t,i)=>i.line_cap.to_attribute_config(),a_line_join:(t,i)=>i.line_join.to_attribute_config(),a_show:(t,i)=>i.show.to_attribute_config(),a_hatch_pattern:(t,i)=>i.hatch_pattern.to_attribute_config(),a_hatch_scale:(t,i)=>i.hatch_scale.to_attribute_config(),a_hatch_weight:(t,i)=>i.hatch_weight.to_attribute_config(),a_hatch_color:(t,i)=>i.hatch_color.to_attribute_config()},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_size_hint:t.prop(\"size_hint\")},count:4,primitive:\"triangle fan\",instances:t.prop(\"nmarkers\"),blend:{enable:!0,func:{srcRGB:\"one\",srcAlpha:\"one\",dstRGB:\"one minus src alpha\",dstAlpha:\"one minus src alpha\"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(e)}(this._regl,t),this._marker_hatch_map.set(t,i)),i}solid_line(){return null==this._solid_line&&(this._solid_line=function(t,i,e){const _={vert:s.default,frag:l.default,attributes:{a_position:{buffer:i,divisor:0},a_point_prev:(t,i)=>i.points.to_attribute_config(),a_point_start:(t,i)=>i.points.to_attribute_config(2*Float32Array.BYTES_PER_ELEMENT),a_point_end:(t,i)=>i.points.to_attribute_config(4*Float32Array.BYTES_PER_ELEMENT),a_point_next:(t,i)=>i.points.to_attribute_config(6*Float32Array.BYTES_PER_ELEMENT),a_show_prev:(t,i)=>i.show.to_attribute_config(),a_show_curr:(t,i)=>i.show.to_attribute_config(Uint8Array.BYTES_PER_ELEMENT),a_show_next:(t,i)=>i.show.to_attribute_config(2*Uint8Array.BYTES_PER_ELEMENT)},uniforms:{u_canvas_size:t.prop(\"canvas_size\"),u_pixel_ratio:t.prop(\"pixel_ratio\"),u_antialias:t.prop(\"antialias\"),u_line_color:t.prop(\"line_color\"),u_linewidth:t.prop(\"linewidth\"),u_miter_limit:t.prop(\"miter_limit\"),u_line_join:t.prop(\"line_join\"),u_line_cap:t.prop(\"line_cap\")},elements:e,instances:t.prop(\"nsegments\"),blend:{enable:!0,equation:\"max\",func:{srcRGB:1,srcAlpha:1,dstRGB:1,dstAlpha:1}},depth:{enable:!1},scissor:{enable:!0,box:t.prop(\"scissor\")},viewport:t.prop(\"viewport\")};return t(_)}(this._regl,this._line_geometry,this._line_triangles)),this._solid_line}}e.ReglWrapper=u,u.__name__=\"ReglWrapper\"},\n", + " 412: function _(e,t,r,n,a){var i,o;i=this,o=function(){\"use strict\";var e=function(e){return e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Float32Array||e instanceof Float64Array||e instanceof Uint8ClampedArray},t=function(e,t){for(var r=Object.keys(t),n=0;n=0&&(0|e)===e||n(\"invalid parameter type, (\"+e+\")\"+i(t)+\". must be a nonnegative integer\")},oneOf:f,shaderError:function(e,t,n,i,o){if(!e.getShaderParameter(t,e.COMPILE_STATUS)){var f=e.getShaderInfoLog(t),u=i===e.FRAGMENT_SHADER?\"fragment\":\"vertex\";g(n,\"string\",u+\" shader source must be a string\",o);var c=h(n,o),l=function(e){var t=[];return e.split(\"\\n\").forEach((function(e){if(!(e.length<5)){var r=/^ERROR:\\s+(\\d+):(\\d+):\\s*(.*)$/.exec(e);r?t.push(new d(0|r[1],0|r[2],r[3].trim())):e.length>0&&t.push(new d(\"unknown\",0,e))}})),t}(f);!function(e,t){t.forEach((function(t){var r=e[t.file];if(r){var n=r.index[t.line];if(n)return n.errors.push(t),void(r.hasErrors=!0)}e.unknown.hasErrors=!0,e.unknown.lines[0].errors.push(t)}))}(c,l),Object.keys(c).forEach((function(e){var t=c[e];if(t.hasErrors){var n=[\"\"],a=[\"\"];i(\"file number \"+e+\": \"+t.name+\"\\n\",\"color:red;text-decoration:underline;font-weight:bold\"),t.lines.forEach((function(e){if(e.errors.length>0){i(s(e.number,4)+\"| \",\"background-color:yellow; font-weight:bold\"),i(e.line+r,\"color:red; background-color:yellow; font-weight:bold\");var t=0;e.errors.forEach((function(n){var a=n.message,o=/^\\s*'(.*)'\\s*:\\s*(.*)$/.exec(a);if(o){var f=o[1];a=o[2],\"assign\"===f&&(f=\"=\"),t=Math.max(e.line.indexOf(f,t),0)}else t=0;i(s(\"| \",6)),i(s(\"^^^\",t+3)+r,\"font-weight:bold\"),i(s(\"| \",6)),i(a+r,\"font-weight:bold\")})),i(s(\"| \",6)+r)}else i(s(e.number,4)+\"| \"),i(e.line+r,\"color:red\")})),\"undefined\"==typeof document||window.chrome?console.log(n.join(\"\")):(a[0]=n.join(\"%c\"),console.log.apply(console,a))}function i(e,t){n.push(e),a.push(t||\"\")}})),a.raise(\"Error compiling \"+u+\" shader, \"+c[0].name)}},linkError:function(e,t,n,i,o){if(!e.getProgramParameter(t,e.LINK_STATUS)){var f=e.getProgramInfoLog(t),u=h(n,o),s='Error linking program with vertex shader, \"'+h(i,o)[0].name+'\", and fragment shader \"'+u[0].name+'\"';\"undefined\"!=typeof document?console.log(\"%c\"+s+\"\\n%c\"+f,\"color:red;text-decoration:underline;font-weight:bold\",\"color:red\"):console.log(s+r+f),a.raise(s)}},callSite:p,saveCommandRef:b,saveDrawInfo:function(e,t,r,n){function a(e){return e?n.id(e):0}function i(e,t){Object.keys(t).forEach((function(t){e[n.id(t)]=!0}))}b(e),e._fragId=a(e.static.frag),e._vertId=a(e.static.vert);var o=e._uniformSet={};i(o,t.static),i(o,t.dynamic);var f=e._attributeSet={};i(f,r.static),i(f,r.dynamic),e._hasCount=\"count\"in e.static||\"count\"in e.dynamic||\"elements\"in e.static||\"elements\"in e.dynamic},framebufferFormat:function(e,t,r){e.texture?f(e.texture._texture.internalformat,t,\"unsupported texture format for attachment\"):f(e.renderbuffer._renderbuffer.format,r,\"unsupported renderbuffer format for attachment\")},guessCommand:m,texture2D:function(e,t,r){var n,i=t.width,o=t.height,f=t.channels;a(i>0&&i<=r.maxTextureSize&&o>0&&o<=r.maxTextureSize,\"invalid texture shape\"),e.wrapS===y&&e.wrapT===y||a(A(i)&&A(o),\"incompatible wrap mode for texture, both width and height must be power of 2\"),1===t.mipmask?1!==i&&1!==o&&a(9984!==e.minFilter&&9986!==e.minFilter&&9985!==e.minFilter&&9987!==e.minFilter,\"min filter requires mipmap\"):(a(A(i)&&A(o),\"texture must be a square power of 2 to support mipmapping\"),a(t.mipmask===(i<<1)-1,\"missing or incomplete mipmap data\")),5126===t.type&&(r.extensions.indexOf(\"oes_texture_float_linear\")<0&&a(9728===e.minFilter&&9728===e.magFilter,\"filter not supported, must enable oes_texture_float_linear\"),a(!e.genMipmaps,\"mipmap generation not supported with float textures\"));var u=t.images;for(n=0;n<16;++n)if(u[n]){var s=i>>n,c=o>>n;a(t.mipmask&1<0&&i<=n.maxTextureSize&&o>0&&o<=n.maxTextureSize,\"invalid texture shape\"),a(i===o,\"cube map must be square\"),a(t.wrapS===y&&t.wrapT===y,\"wrap mode not supported by cube map\");for(var u=0;u>l,p=o>>l;a(s.mipmask&1<1&&t===r&&('\"'===t||\"'\"===t))return['\"'+O(e.substr(1,e.length-2))+'\"'];var n=/\\[(false|true|null|\\d+|'[^']*'|\"[^\"]*\")\\]/.exec(e);if(n)return E(e.substr(0,n.index)).concat(E(n[1])).concat(E(e.substr(n.index+n[0].length)));var a=e.split(\".\");if(1===a.length)return['\"'+O(e)+'\"'];for(var i=[],o=0;o0,\"invalid pixel ratio\"))):_.raise(\"invalid arguments to regl\"),r&&(\"canvas\"===r.nodeName.toLowerCase()?a=r:n=r),!i){if(!a){_(\"undefined\"!=typeof document,\"must manually specify webgl context outside of DOM environments\");var h=function(e,r,n){var a,i=document.createElement(\"canvas\");function o(){var t=window.innerWidth,r=window.innerHeight;if(e!==document.body){var a=i.getBoundingClientRect();t=a.right-a.left,r=a.bottom-a.top}i.width=n*t,i.height=n*r}return t(i.style,{border:0,margin:0,padding:0,top:0,left:0,width:\"100%\",height:\"100%\"}),e.appendChild(i),e===document.body&&(i.style.position=\"absolute\",t(e.style,{margin:0,padding:0})),e!==document.body&&\"function\"==typeof ResizeObserver?(a=new ResizeObserver((function(){setTimeout(o)}))).observe(e):window.addEventListener(\"resize\",o,!1),o(),{canvas:i,onDestroy:function(){a?a.disconnect():window.removeEventListener(\"resize\",o),e.removeChild(i)}}}(n||document.body,0,l);if(!h)return null;a=h.canvas,p=h.onDestroy}void 0===u.premultipliedAlpha&&(u.premultipliedAlpha=!0),i=function(e,t){function r(r){try{return e.getContext(r,t)}catch(e){return null}}return r(\"webgl\")||r(\"experimental-webgl\")||r(\"webgl-experimental\")}(a,u)}return i?{gl:i,canvas:a,container:n,extensions:s,optionalExtensions:c,pixelRatio:l,profile:d,onDone:m,onDestroy:p}:(p(),m(\"webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org\"),null)}function V(e,t){for(var r=Array(e),n=0;n65535)<<4,t|=r=((e>>>=t)>255)<<3,t|=r=((e>>>=r)>15)<<2,(t|=r=((e>>>=r)>3)<<1)|(e>>>=r)>>1}function P(){var e=V(8,(function(){return[]}));function t(t){var r=function(e){for(var t=16;t<=1<<28;t*=16)if(e<=t)return t;return 0}(t),n=e[I(r)>>2];return n.length>0?n.pop():new ArrayBuffer(r)}function r(t){e[I(t.byteLength)>>2].push(t)}return{alloc:t,free:r,allocType:function(e,r){var n=null;switch(e){case 5120:n=new Int8Array(t(r),0,r);break;case 5121:n=new Uint8Array(t(r),0,r);break;case 5122:n=new Int16Array(t(2*r),0,r);break;case 5123:n=new Uint16Array(t(2*r),0,r);break;case 5124:n=new Int32Array(t(4*r),0,r);break;case 5125:n=new Uint32Array(t(4*r),0,r);break;case 5126:n=new Float32Array(t(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(e){r(e.buffer)}}}var L=P();L.zero=P();var R=3553,M=6408,W=5126,U=36160;function G(t){return!!t&&\"object\"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&\"number\"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||e(t.data))}var H=function(e){return Object.keys(e).map((function(t){return e[t]}))},N={shape:function(e){for(var t=[],r=e;r.length;r=r[0])t.push(r.length);return t},flatten:function(e,t,r,n){var a=1;if(t.length)for(var i=0;i>>31<<15,i=(n<<1>>>24)-127,o=n>>13&1023;if(i<-24)t[r]=a;else if(i<-14){var f=-14-i;t[r]=a+(o+1024>>f)}else t[r]=i>15?a+31744:a+(i+15<<10)+o}return t}function me(t){return Array.isArray(t)||e(t)}var pe=function(e){return!(e&e-1||!e)},he=3553,be=34067,ve=34069,ge=6408,ye=6406,xe=6407,we=6409,Ae=6410,_e=32855,ke=6402,Se=34041,Oe=35904,Ee=35906,Te=36193,De=33776,je=33777,Ce=33778,ze=33779,Fe=5121,Be=5123,Ve=5125,Ie=5126,Pe=33071,Le=9728,Re=9984,Me=9987,We=4352,Ue=33984,Ge=[Re,9986,9985,Me],He=[0,we,Ae,xe,ge],Ne={};function qe(e){return\"[object \"+e+\"]\"}Ne[6409]=Ne[6406]=Ne[6402]=1,Ne[34041]=Ne[6410]=2,Ne[6407]=Ne[35904]=3,Ne[6408]=Ne[35906]=4;var Qe=qe(\"HTMLCanvasElement\"),Ye=qe(\"OffscreenCanvas\"),Xe=qe(\"CanvasRenderingContext2D\"),$e=qe(\"ImageBitmap\"),Ke=qe(\"HTMLImageElement\"),Je=qe(\"HTMLVideoElement\"),Ze=Object.keys(Y).concat([Qe,Ye,Xe,$e,Ke,Je]),et=[];et[5121]=1,et[5126]=4,et[36193]=2,et[5123]=2,et[5125]=4;var tt=[];function rt(e){return Array.isArray(e)&&(0===e.length||\"number\"==typeof e[0])}function nt(e){return!!Array.isArray(e)&&!(0===e.length||!me(e[0]))}function at(e){return Object.prototype.toString.call(e)}function it(e){return at(e)===Qe}function ot(e){return at(e)===Ye}function ft(e){if(!e)return!1;var t=at(e);return Ze.indexOf(t)>=0||rt(e)||nt(e)||G(e)}function ut(e){return 0|Y[Object.prototype.toString.call(e)]}function st(e,t){return L.allocType(e.type===Te?Ie:e.type,t)}function ct(e,t){e.type===Te?(e.data=de(t),L.freeType(t)):e.data=t}function lt(e,t,r,n,a,i){var o;if(o=void 0!==tt[e]?tt[e]:Ne[e]*et[t],i&&(o*=6),a){for(var f=0,u=r;u>=1;)f+=o*u*u,u/=2;return f}return o*r*n}function dt(r,n,a,i,o,f,u){var s={\"don't care\":We,\"dont care\":We,nice:4354,fast:4353},c={repeat:10497,clamp:Pe,mirror:33648},l={nearest:Le,linear:9729},d=t({mipmap:Me,\"nearest mipmap nearest\":Re,\"linear mipmap nearest\":9985,\"nearest mipmap linear\":9986,\"linear mipmap linear\":Me},l),m={none:0,browser:37444},p={uint8:Fe,rgba4:32819,rgb565:33635,\"rgb5 a1\":32820},h={alpha:ye,luminance:we,\"luminance alpha\":Ae,rgb:xe,rgba:ge,rgba4:32854,\"rgb5 a1\":_e,rgb565:36194},b={};n.ext_srgb&&(h.srgb=Oe,h.srgba=Ee),n.oes_texture_float&&(p.float32=p.float=Ie),n.oes_texture_half_float&&(p.float16=p[\"half float\"]=Te),n.webgl_depth_texture&&(t(h,{depth:ke,\"depth stencil\":Se}),t(p,{uint16:Be,uint32:Ve,\"depth stencil\":34042})),n.webgl_compressed_texture_s3tc&&t(b,{\"rgb s3tc dxt1\":De,\"rgba s3tc dxt1\":je,\"rgba s3tc dxt3\":Ce,\"rgba s3tc dxt5\":ze}),n.webgl_compressed_texture_atc&&t(b,{\"rgb atc\":35986,\"rgba atc explicit alpha\":35987,\"rgba atc interpolated alpha\":34798}),n.webgl_compressed_texture_pvrtc&&t(b,{\"rgb pvrtc 4bppv1\":35840,\"rgb pvrtc 2bppv1\":35841,\"rgba pvrtc 4bppv1\":35842,\"rgba pvrtc 2bppv1\":35843}),n.webgl_compressed_texture_etc1&&(b[\"rgb etc1\"]=36196);var v=Array.prototype.slice.call(r.getParameter(34467));Object.keys(b).forEach((function(e){var t=b[e];v.indexOf(t)>=0&&(h[e]=t)}));var g=Object.keys(h);a.textureFormats=g;var y=[];Object.keys(h).forEach((function(e){var t=h[e];y[t]=e}));var x=[];Object.keys(p).forEach((function(e){var t=p[e];x[t]=e}));var w=[];Object.keys(l).forEach((function(e){w[l[e]]=e}));var A=[];Object.keys(d).forEach((function(e){var t=d[e];A[t]=e}));var k=[];Object.keys(c).forEach((function(e){k[c[e]]=e}));var S=g.reduce((function(e,t){var r=h[t];return r===we||r===ye||r===we||r===Ae||r===ke||r===Se||n.ext_srgb&&(r===Oe||r===Ee)?e[r]=r:r===_e||t.indexOf(\"rgba\")>=0?e[r]=ge:e[r]=xe,e}),{});function O(){this.internalformat=ge,this.format=ge,this.type=Fe,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function E(e,t){e.internalformat=t.internalformat,e.format=t.format,e.type=t.type,e.compressed=t.compressed,e.premultiplyAlpha=t.premultiplyAlpha,e.flipY=t.flipY,e.unpackAlignment=t.unpackAlignment,e.colorSpace=t.colorSpace,e.width=t.width,e.height=t.height,e.channels=t.channels}function T(e,t){if(\"object\"==typeof t&&t){if(\"premultiplyAlpha\"in t&&(_.type(t.premultiplyAlpha,\"boolean\",\"invalid premultiplyAlpha\"),e.premultiplyAlpha=t.premultiplyAlpha),\"flipY\"in t&&(_.type(t.flipY,\"boolean\",\"invalid texture flip\"),e.flipY=t.flipY),\"alignment\"in t&&(_.oneOf(t.alignment,[1,2,4,8],\"invalid texture unpack alignment\"),e.unpackAlignment=t.alignment),\"colorSpace\"in t&&(_.parameter(t.colorSpace,m,\"invalid colorSpace\"),e.colorSpace=m[t.colorSpace]),\"type\"in t){var r=t.type;_(n.oes_texture_float||!(\"float\"===r||\"float32\"===r),\"you must enable the OES_texture_float extension in order to use floating point textures.\"),_(n.oes_texture_half_float||!(\"half float\"===r||\"float16\"===r),\"you must enable the OES_texture_half_float extension in order to use 16-bit floating point textures.\"),_(n.webgl_depth_texture||!(\"uint16\"===r||\"uint32\"===r||\"depth stencil\"===r),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(r,p,\"invalid texture type\"),e.type=p[r]}var i=e.width,o=e.height,f=e.channels,u=!1;\"shape\"in t?(_(Array.isArray(t.shape)&&t.shape.length>=2,\"shape must be an array\"),i=t.shape[0],o=t.shape[1],3===t.shape.length&&(f=t.shape[2],_(f>0&&f<=4,\"invalid number of channels\"),u=!0),_(i>=0&&i<=a.maxTextureSize,\"invalid width\"),_(o>=0&&o<=a.maxTextureSize,\"invalid height\")):(\"radius\"in t&&(i=o=t.radius,_(i>=0&&i<=a.maxTextureSize,\"invalid radius\")),\"width\"in t&&(i=t.width,_(i>=0&&i<=a.maxTextureSize,\"invalid width\")),\"height\"in t&&(o=t.height,_(o>=0&&o<=a.maxTextureSize,\"invalid height\")),\"channels\"in t&&(f=t.channels,_(f>0&&f<=4,\"invalid number of channels\"),u=!0)),e.width=0|i,e.height=0|o,e.channels=0|f;var s=!1;if(\"format\"in t){var c=t.format;_(n.webgl_depth_texture||!(\"depth\"===c||\"depth stencil\"===c),\"you must enable the WEBGL_depth_texture extension in order to use depth/stencil textures.\"),_.parameter(c,h,\"invalid texture format\");var l=e.internalformat=h[c];e.format=S[l],c in p&&(\"type\"in t||(e.type=p[c])),c in b&&(e.compressed=!0),s=!0}!u&&s?e.channels=Ne[e.format]:u&&!s?e.channels!==He[e.format]&&(e.format=e.internalformat=He[e.channels]):s&&u&&_(e.channels===Ne[e.format],\"number of channels inconsistent with specified format\")}}function D(e){r.pixelStorei(37440,e.flipY),r.pixelStorei(37441,e.premultiplyAlpha),r.pixelStorei(37443,e.colorSpace),r.pixelStorei(3317,e.unpackAlignment)}function j(){O.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function C(t,r){var n=null;if(ft(r)?n=r:r&&(_.type(r,\"object\",\"invalid pixel data type\"),T(t,r),\"x\"in r&&(t.xOffset=0|r.x),\"y\"in r&&(t.yOffset=0|r.y),ft(r.data)&&(n=r.data)),_(!t.compressed||n instanceof Uint8Array,\"compressed texture data must be stored in a uint8array\"),r.copy){_(!n,\"can not specify copy and data field for the same texture\");var i=o.viewportWidth,f=o.viewportHeight;t.width=t.width||i-t.xOffset,t.height=t.height||f-t.yOffset,t.needsCopy=!0,_(t.xOffset>=0&&t.xOffset=0&&t.yOffset0&&t.width<=i&&t.height>0&&t.height<=f,\"copy texture read out of bounds\")}else if(n){if(e(n))t.channels=t.channels||4,t.data=n,\"type\"in r||t.type!==Fe||(t.type=ut(n));else if(rt(n))t.channels=t.channels||4,function(e,t){var r=t.length;switch(e.type){case Fe:case Be:case Ve:case Ie:var n=L.allocType(e.type,r);n.set(t),e.data=n;break;case Te:e.data=de(t);break;default:_.raise(\"unsupported texture type, must specify a typed array\")}}(t,n),t.alignment=1,t.needsFree=!0;else if(G(n)){var u=n.data;Array.isArray(u)||t.type!==Fe||(t.type=ut(u));var s,c,l,d,m,p,h=n.shape,b=n.stride;3===h.length?(l=h[2],p=b[2]):(_(2===h.length,\"invalid ndarray pixel data, must be 2 or 3D\"),l=1,p=1),s=h[0],c=h[1],d=b[0],m=b[1],t.alignment=1,t.width=s,t.height=c,t.channels=l,t.format=t.internalformat=He[l],t.needsFree=!0,function(e,t,r,n,a,i){for(var o=e.width,f=e.height,u=e.channels,s=st(e,o*f*u),c=0,l=0;l=0,\"oes_texture_float extension not enabled\"):t.type===Te&&_(a.extensions.indexOf(\"oes_texture_half_float\")>=0,\"oes_texture_half_float extension not enabled\")}function z(e,t,n){var a=e.element,o=e.data,f=e.internalformat,u=e.format,s=e.type,c=e.width,l=e.height;D(e),a?r.texImage2D(t,n,u,u,s,a):e.compressed?r.compressedTexImage2D(t,n,f,c,l,0,o):e.needsCopy?(i(),r.copyTexImage2D(t,n,u,e.xOffset,e.yOffset,c,l,0)):r.texImage2D(t,n,u,c,l,0,u,s,o||null)}function F(e,t,n,a,o){var f=e.element,u=e.data,s=e.internalformat,c=e.format,l=e.type,d=e.width,m=e.height;D(e),f?r.texSubImage2D(t,o,n,a,c,l,f):e.compressed?r.compressedTexSubImage2D(t,o,n,a,s,d,m,u):e.needsCopy?(i(),r.copyTexSubImage2D(t,o,n,a,e.xOffset,e.yOffset,d,m)):r.texSubImage2D(t,o,n,a,d,m,c,l,u)}var B=[];function V(){return B.pop()||new j}function I(e){e.needsFree&&L.freeType(e.data),j.call(e),B.push(e)}function P(){O.call(this),this.genMipmaps=!1,this.mipmapHint=We,this.mipmask=0,this.images=Array(16)}function R(e,t,r){var n=e.images[0]=V();e.mipmask=1,n.width=e.width=t,n.height=e.height=r,n.channels=e.channels=4}function M(e,t){var r=null;if(ft(t))E(r=e.images[0]=V(),e),C(r,t),e.mipmask=1;else if(T(e,t),Array.isArray(t.mipmap))for(var n=t.mipmap,a=0;a>=a,r.height>>=a,C(r,n[a]),e.mipmask|=1<=0&&!(\"faces\"in t)&&(e.genMipmaps=!0)}if(\"mag\"in t){var n=t.mag;_.parameter(n,l),e.magFilter=l[n]}var i=e.wrapS,o=e.wrapT;if(\"wrap\"in t){var f=t.wrap;\"string\"==typeof f?(_.parameter(f,c),i=o=c[f]):Array.isArray(f)&&(_.parameter(f[0],c),_.parameter(f[1],c),i=c[f[0]],o=c[f[1]])}else{if(\"wrapS\"in t){var u=t.wrapS;_.parameter(u,c),i=c[u]}if(\"wrapT\"in t){var m=t.wrapT;_.parameter(m,c),o=c[m]}}if(e.wrapS=i,e.wrapT=o,\"anisotropic\"in t){var p=t.anisotropic;_(\"number\"==typeof p&&p>=1&&p<=a.maxAnisotropic,\"aniso samples must be between 1 and \"),e.anisotropic=t.anisotropic}if(\"mipmap\"in t){var h=!1;switch(typeof t.mipmap){case\"string\":_.parameter(t.mipmap,s,\"invalid mipmap hint\"),e.mipmapHint=s[t.mipmap],e.genMipmaps=!0,h=!0;break;case\"boolean\":h=e.genMipmaps=t.mipmap;break;case\"object\":_(Array.isArray(t.mipmap),\"invalid mipmap type\"),e.genMipmaps=!1,h=!0;break;default:_.raise(\"invalid mipmap type\")}h&&!(\"min\"in t)&&(e.minFilter=Re)}}function $(e,t){r.texParameteri(t,10241,e.minFilter),r.texParameteri(t,10240,e.magFilter),r.texParameteri(t,10242,e.wrapS),r.texParameteri(t,10243,e.wrapT),n.ext_texture_filter_anisotropic&&r.texParameteri(t,34046,e.anisotropic),e.genMipmaps&&(r.hint(33170,e.mipmapHint),r.generateMipmap(t))}var K=0,J={},Z=a.maxTextureUnits,ee=Array(Z).map((function(){return null}));function te(e){O.call(this),this.mipmask=0,this.internalformat=ge,this.id=K++,this.refCount=1,this.target=e,this.texture=r.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Y,u.profile&&(this.stats={size:0})}function re(e){r.activeTexture(Ue),r.bindTexture(e.target,e.texture)}function ne(){var e=ee[0];e?r.bindTexture(e.target,e.texture):r.bindTexture(he,null)}function ae(e){var t=e.texture;_(t,\"must not double destroy texture\");var n=e.unit,a=e.target;n>=0&&(r.activeTexture(Ue+n),r.bindTexture(a,null),ee[n]=null),r.deleteTexture(t),e.texture=null,e.params=null,e.pixels=null,e.refCount=0,delete J[e.id],f.textureCount--}return t(te.prototype,{bind:function(){var e=this;e.bindCount+=1;var t=e.unit;if(t<0){for(var n=0;n0)continue;a.unit=-1}ee[n]=e,t=n;break}t>=Z&&_.raise(\"insufficient number of texture units\"),u.profile&&f.maxTextureUnits>u)-o,s.height=s.height||(n.height>>u)-f,_(n.type===s.type&&n.format===s.format&&n.internalformat===s.internalformat,\"incompatible format for texture.subimage\"),_(o>=0&&f>=0&&o+s.width<=n.width&&f+s.height<=n.height,\"texture.subimage write out of bounds\"),_(n.mipmask&1<>f;++f){var s=a>>f,c=o>>f;if(!s||!c)break;r.texImage2D(he,f,n.format,s,c,0,n.format,n.type,null)}return ne(),u.profile&&(n.stats.size=lt(n.internalformat,n.type,a,o,!1,!1)),i},i._reglType=\"texture2d\",i._texture=n,u.profile&&(i.stats=n.stats),i.destroy=function(){n.decRef()},i},createCube:function(e,t,n,i,o,s){var c=new te(be);J[c.id]=c,f.cubeCount++;var l=new Array(6);function d(e,t,r,n,i,o){var f,s=c.texInfo;for(Y.call(s),f=0;f<6;++f)l[f]=q();if(\"number\"!=typeof e&&e)if(\"object\"==typeof e)if(t)M(l[0],e),M(l[1],t),M(l[2],r),M(l[3],n),M(l[4],i),M(l[5],o);else if(X(s,e),T(c,e),\"faces\"in e){var m=e.faces;for(_(Array.isArray(m)&&6===m.length,\"cube faces must be a length 6 array\"),f=0;f<6;++f)_(\"object\"==typeof m[f]&&!!m[f],\"invalid input for cube map face\"),E(l[f],c),M(l[f],m[f])}else for(f=0;f<6;++f)M(l[f],e);else _.raise(\"invalid arguments to cube map\");else{var p=0|e||1;for(f=0;f<6;++f)R(l[f],p,p)}for(E(c,l[0]),_.optional((function(){a.npotTextureCube||_(pe(c.width)&&pe(c.height),\"your browser does not support non power or two texture dimensions\")})),s.genMipmaps?c.mipmask=(l[0].width<<1)-1:c.mipmask=l[0].mipmask,_.textureCube(c,s,l,a),c.internalformat=l[0].internalformat,d.width=l[0].width,d.height=l[0].height,re(c),f=0;f<6;++f)W(l[f],ve+f);for($(s,be),ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,s.genMipmaps,!0)),d.format=y[c.internalformat],d.type=x[c.type],d.mag=w[s.magFilter],d.min=A[s.minFilter],d.wrapS=k[s.wrapS],d.wrapT=k[s.wrapT],f=0;f<6;++f)Q(l[f]);return d}return d(e,t,n,i,o,s),d.subimage=function(e,t,r,n,a){_(!!t,\"must specify image data\"),_(\"number\"==typeof e&&e===(0|e)&&e>=0&&e<6,\"invalid face\");var i=0|r,o=0|n,f=0|a,u=V();return E(u,c),u.width=0,u.height=0,C(u,t),u.width=u.width||(c.width>>f)-i,u.height=u.height||(c.height>>f)-o,_(c.type===u.type&&c.format===u.format&&c.internalformat===u.internalformat,\"incompatible format for texture.subimage\"),_(i>=0&&o>=0&&i+u.width<=c.width&&o+u.height<=c.height,\"texture.subimage write out of bounds\"),_(c.mipmask&1<>a;++a)r.texImage2D(ve+n,a,c.format,t>>a,t>>a,0,c.format,c.type,null);return ne(),u.profile&&(c.stats.size=lt(c.internalformat,c.type,d.width,d.height,!1,!0)),d}},d._reglType=\"textureCube\",d._texture=c,u.profile&&(d.stats=c.stats),d.destroy=function(){c.decRef()},d},clear:function(){for(var e=0;e>t,e.height>>t,0,e.internalformat,e.type,null);else for(var n=0;n<6;++n)r.texImage2D(ve+n,t,e.internalformat,e.width>>t,e.height>>t,0,e.internalformat,e.type,null);$(e.texInfo,e.target)}))},refresh:function(){for(var e=0;e=0&&c=0&&l0&&d+c<=a.framebufferWidth,\"invalid width for read pixels\"),_(m>0&&m+l<=a.framebufferHeight,\"invalid height for read pixels\"),n();var h=d*m*4;return p||(s===Dt?p=new Uint8Array(h):s===jt&&(p=p||new Float32Array(h))),_.isTypedArray(p,\"data buffer for regl.read() must be a typedarray\"),_(p.byteLength>=h,\"data buffer for regl.read() too small\"),t.pixelStorei(3333,4),t.readPixels(c,l,d,m,6408,s,p),p}return function(e){return e&&\"framebuffer\"in e?function(e){var t;return r.setFBO({framebuffer:e.framebuffer},(function(){t=u(e)})),t}(e):u(e)}}function zt(e){return Array.prototype.slice.call(e)}function Ft(e){return zt(e).join(\"\")}var Bt=\"xyzw\".split(\"\"),Vt=\"dither\",It=\"blend.enable\",Pt=\"blend.color\",Lt=\"blend.equation\",Rt=\"blend.func\",Mt=\"depth.enable\",Wt=\"depth.func\",Ut=\"depth.range\",Gt=\"depth.mask\",Ht=\"colorMask\",Nt=\"cull.enable\",qt=\"cull.face\",Qt=\"frontFace\",Yt=\"lineWidth\",Xt=\"polygonOffset.enable\",$t=\"polygonOffset.offset\",Kt=\"sample.alpha\",Jt=\"sample.enable\",Zt=\"sample.coverage\",er=\"stencil.enable\",tr=\"stencil.mask\",rr=\"stencil.func\",nr=\"stencil.opFront\",ar=\"stencil.opBack\",ir=\"scissor.enable\",or=\"scissor.box\",fr=\"viewport\",ur=\"profile\",sr=\"framebuffer\",cr=\"vert\",lr=\"frag\",dr=\"elements\",mr=\"primitive\",pr=\"count\",hr=\"offset\",br=\"instances\",vr=\"vao\",gr=\"Width\",yr=\"Height\",xr=sr+gr,wr=sr+yr,Ar=\"drawingBufferWidth\",_r=\"drawingBufferHeight\",kr=[Rt,Lt,rr,nr,ar,Zt,fr,or,$t],Sr=34962,Or=34963,Er=5126,Tr=35664,Dr=35665,jr=35666,Cr=5124,zr=35667,Fr=35668,Br=35669,Vr=35670,Ir=35671,Pr=35672,Lr=35673,Rr=35674,Mr=35675,Wr=35676,Ur=35678,Gr=35680,Hr=1028,Nr=1029,qr=2305,Qr=7680,Yr={0:0,1:1,zero:0,one:1,\"src color\":768,\"one minus src color\":769,\"src alpha\":770,\"one minus src alpha\":771,\"dst color\":774,\"one minus dst color\":775,\"dst alpha\":772,\"one minus dst alpha\":773,\"constant color\":32769,\"one minus constant color\":32770,\"constant alpha\":32771,\"one minus constant alpha\":32772,\"src alpha saturate\":776},Xr=[\"constant color, constant alpha\",\"one minus constant color, constant alpha\",\"constant color, one minus constant alpha\",\"one minus constant color, one minus constant alpha\",\"constant alpha, constant color\",\"constant alpha, one minus constant color\",\"one minus constant alpha, constant color\",\"one minus constant alpha, one minus constant color\"],$r={never:512,less:513,\"<\":513,equal:514,\"=\":514,\"==\":514,\"===\":514,lequal:515,\"<=\":515,greater:516,\">\":516,notequal:517,\"!=\":517,\"!==\":517,gequal:518,\">=\":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,\"increment wrap\":34055,\"decrement wrap\":34056,invert:5386},Jr={frag:35632,vert:35633},Zr={cw:2304,ccw:qr};function en(t){return Array.isArray(t)||e(t)||G(t)}function tn(e){return e.sort((function(e,t){return e===fr?-1:t===fr?1:e=1,n>=2,t)}if(4===r){var a=e.data;return new rn(a.thisDep,a.contextDep,a.propDep,t)}if(5===r)return new rn(!1,!1,!1,t);if(6===r){for(var i=!1,o=!1,f=!1,u=0;u=1&&(o=!0),c>=2&&(f=!0)}else 4===s.type&&(i=i||s.data.thisDep,o=o||s.data.contextDep,f=f||s.data.propDep)}return new rn(i,o,f,t)}return new rn(3===r,2===r,1===r,t)}var fn=new rn(!1,!1,!1,(function(){}));function un(e,r,n,a,i,o,f,u,s,c,l,d,m,p,h){var b=c.Record,v={add:32774,subtract:32778,\"reverse subtract\":32779};n.ext_blend_minmax&&(v.min=32775,v.max=32776);var g=n.angle_instanced_arrays,y=n.webgl_draw_buffers,x=n.oes_vertex_array_object,w={dirty:!0,profile:h.profile},A={},k=[],S={},O={};function E(e){return e.replace(\".\",\"_\")}function T(e,t,r){var n=E(e);k.push(e),A[n]=w[n]=!!r,S[n]=t}function j(e,t,r){var n=E(e);k.push(e),Array.isArray(r)?(w[n]=r.slice(),A[n]=r.slice()):w[n]=A[n]=r,O[n]=t}T(Vt,3024),T(It,3042),j(Pt,\"blendColor\",[0,0,0,0]),j(Lt,\"blendEquationSeparate\",[32774,32774]),j(Rt,\"blendFuncSeparate\",[1,0,1,0]),T(Mt,2929,!0),j(Wt,\"depthFunc\",513),j(Ut,\"depthRange\",[0,1]),j(Gt,\"depthMask\",!0),j(Ht,Ht,[!0,!0,!0,!0]),T(Nt,2884),j(qt,\"cullFace\",Nr),j(Qt,Qt,qr),j(Yt,Yt,1),T(Xt,32823),j($t,\"polygonOffset\",[0,0]),T(Kt,32926),T(Jt,32928),j(Zt,\"sampleCoverage\",[1,!1]),T(er,2960),j(tr,\"stencilMask\",-1),j(rr,\"stencilFunc\",[519,0,-1]),j(nr,\"stencilOpSeparate\",[Hr,Qr,Qr,Qr]),j(ar,\"stencilOpSeparate\",[Nr,Qr,Qr,Qr]),T(ir,3089),j(or,\"scissor\",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]),j(fr,fr,[0,0,e.drawingBufferWidth,e.drawingBufferHeight]);var C={gl:e,context:m,strings:r,next:A,current:w,draw:d,elements:o,buffer:i,shader:l,attributes:c.state,vao:c,uniforms:s,framebuffer:u,extensions:n,timer:p,isBufferArgs:en},z={primTypes:ie,compareFuncs:$r,blendFuncs:Yr,blendEquations:v,stencilOps:Kr,glTypes:X,orientationType:Zr};_.optional((function(){C.isArrayLike=me})),y&&(z.backBuffer=[Nr],z.drawBuffer=V(a.maxDrawbuffers,(function(e){return 0===e?[0]:V(e,(function(e){return 36064+e}))})));var F=0;function B(){var e=function(){var e=0,r=[],n=[];function a(){var r=[],n=[];return t((function(){r.push.apply(r,zt(arguments))}),{def:function(){var t=\"v\"+e++;return n.push(t),arguments.length>0&&(r.push(t,\"=\"),r.push.apply(r,zt(arguments)),r.push(\";\")),t},toString:function(){return Ft([n.length>0?\"var \"+n.join(\",\")+\";\":\"\",Ft(r)])}})}function i(){var e=a(),r=a(),n=e.toString,i=r.toString;function o(t,n){r(t,n,\"=\",e.def(t,n),\";\")}return t((function(){e.apply(e,zt(arguments))}),{def:e.def,entry:e,exit:r,save:o,set:function(t,r,n){o(t,r),e(t,r,\"=\",n,\";\")},toString:function(){return n()+i()}})}var o=a(),f={};return{global:o,link:function(t){for(var a=0;a=0,'unknown parameter \"'+t+'\"',d.commandStr)}))}t(m),t(p)}));var h=function(e,t){var r=e.static;if(\"string\"==typeof r[lr]&&\"string\"==typeof r[cr]){if(Object.keys(t.dynamic).length>0)return null;var n=t.static,a=Object.keys(n);if(a.length>0&&\"number\"==typeof n[a[0]]){for(var i=[],o=0;o=0,\"invalid \"+e,r.commandStr)):u=!1,\"height\"in i?(f=0|i.height,_.command(f>=0,\"invalid \"+e,r.commandStr)):u=!1,new rn(!u&&t&&t.thisDep,!u&&t&&t.contextDep,!u&&t&&t.propDep,(function(e,t){var r=e.shared.context,n=o;\"width\"in i||(n=t.def(r,\".\",xr,\"-\",s));var a=f;return\"height\"in i||(a=t.def(r,\".\",wr,\"-\",c)),[s,c,n,a]}))}if(e in a){var l=a[e],d=on(l,(function(t,r){var n=t.invoke(r,l);_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)}));var a=t.shared.context,i=r.def(n,\".x|0\"),o=r.def(n,\".y|0\"),f=r.def('\"width\" in ',n,\"?\",n,\".width|0:\",\"(\",a,\".\",xr,\"-\",i,\")\"),u=r.def('\"height\" in ',n,\"?\",n,\".height|0:\",\"(\",a,\".\",wr,\"-\",o,\")\");return _.optional((function(){t.assert(r,f+\">=0&&\"+u+\">=0\",\"invalid \"+e)})),[i,o,f,u]}));return t&&(d.thisDep=d.thisDep||t.thisDep,d.contextDep=d.contextDep||t.contextDep,d.propDep=d.propDep||t.propDep),d}return t?new rn(t.thisDep,t.contextDep,t.propDep,(function(e,t){var r=e.shared.context;return[0,0,t.def(r,\".\",xr),t.def(r,\".\",wr)]})):null}var o=i(fr);if(o){var f=o;o=new rn(o.thisDep,o.contextDep,o.propDep,(function(e,t){var r=f.append(e,t),n=e.shared.context;return t.set(n,\".viewportWidth\",r[2]),t.set(n,\".viewportHeight\",r[3]),r}))}return{viewport:o,scissor_box:i(or)}}(e,y,d),w=function(e,t){var r=e.static,n=e.dynamic,a={},i=!1,f=function(){if(vr in r){var e=r[vr];return null!==e&&null===c.getVAO(e)&&(e=c.createVAO(e)),i=!0,a.vao=e,an((function(t){var r=c.getVAO(e);return r?t.link(r):\"null\"}))}if(vr in n){i=!0;var t=n[vr];return on(t,(function(e,r){var n=e.invoke(r,t);return r.def(e.shared.vao+\".getVAO(\"+n+\")\")}))}return null}(),u=!1,s=function(){if(dr in r){var e=r[dr];if(a.elements=e,en(e)){var s=a.elements=o.create(e,!0);e=o.getElements(s),u=!0}else e&&(e=o.getElements(e),u=!0,_.command(e,\"invalid elements\",t.commandStr));var c=an((function(t,r){if(e){var n=t.link(e);return t.ELEMENTS=n,n}return t.ELEMENTS=null,null}));return c.value=e,c}if(dr in n){u=!0;var l=n[dr];return on(l,(function(e,t){var r=e.shared,n=r.isBufferArgs,a=r.elements,i=e.invoke(t,l),o=t.def(\"null\"),f=t.def(n,\"(\",i,\")\"),u=e.cond(f).then(o,\"=\",a,\".createStream(\",i,\");\").else(o,\"=\",a,\".getElements(\",i,\");\");return _.optional((function(){e.assert(u.else,\"!\"+i+\"||\"+o,\"invalid elements\")})),t.entry(u),t.exit(e.cond(f).then(a,\".destroyStream(\",o,\");\")),e.ELEMENTS=o,o}))}return i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.elements+\".getElements(\"+e.shared.vao+\".currentVAO.elements):null\")})):null}();function l(e,o){if(e in r){var s=0|r[e];return o?a.offset=s:a.instances=s,_.command(!o||s>=0,\"invalid \"+e,t.commandStr),an((function(e,t){return o&&(e.OFFSET=s),s}))}if(e in n){var c=n[e];return on(c,(function(t,r){var n=t.invoke(r,c);return o&&(t.OFFSET=n,_.optional((function(){t.assert(r,n+\">=0\",\"invalid \"+e)}))),n}))}if(o){if(u)return an((function(e,t){return e.OFFSET=0,0}));if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.offset:0\")}))}else if(i)return new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.instances:-1\")}));return null}var d=l(hr,!0),m=function(){if(mr in r){var e=r[mr];return a.primitive=e,_.commandParameter(e,ie,\"invalid primitve\",t.commandStr),an((function(t,r){return ie[e]}))}if(mr in n){var o=n[mr];return on(o,(function(e,t){var r=e.constants.primTypes,n=e.invoke(t,o);return _.optional((function(){e.assert(t,n+\" in \"+r,\"invalid primitive, must be one of \"+Object.keys(ie))})),t.def(r,\"[\",n,\"]\")}))}return u?nn(s)?s.value?an((function(e,t){return t.def(e.ELEMENTS,\".primType\")})):an((function(){return 4})):new rn(s.thisDep,s.contextDep,s.propDep,(function(e,t){var r=e.ELEMENTS;return t.def(r,\"?\",r,\".primType:\",4)})):i?new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao+\".currentVAO?\"+e.shared.vao+\".currentVAO.primitive:4\")})):null}(),p=function(){if(pr in r){var e=0|r[pr];return a.count=e,_.command(\"number\"==typeof e&&e>=0,\"invalid vertex count\",t.commandStr),an((function(){return e}))}if(pr in n){var o=n[pr];return on(o,(function(e,t){var r=e.invoke(t,o);return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=0&&\"+r+\"===(\"+r+\"|0)\",\"invalid vertex count\")})),r}))}if(u){if(nn(s)){if(s)return d?new rn(d.thisDep,d.contextDep,d.propDep,(function(e,t){var r=t.def(e.ELEMENTS,\".vertCount-\",e.OFFSET);return _.optional((function(){e.assert(t,r+\">=0\",\"invalid vertex offset/element buffer too small\")})),r})):an((function(e,t){return t.def(e.ELEMENTS,\".vertCount\")}));var c=an((function(){return-1}));return _.optional((function(){c.MISSING=!0})),c}var l=new rn(s.thisDep||d.thisDep,s.contextDep||d.contextDep,s.propDep||d.propDep,(function(e,t){var r=e.ELEMENTS;return e.OFFSET?t.def(r,\"?\",r,\".vertCount-\",e.OFFSET,\":-1\"):t.def(r,\"?\",r,\".vertCount:-1\")}));return _.optional((function(){l.DYNAMIC=!0})),l}if(i){var m=new rn(f.thisDep,f.contextDep,f.propDep,(function(e,t){return t.def(e.shared.vao,\".currentVAO?\",e.shared.vao,\".currentVAO.count:-1\")}));return m}return null}(),h=l(br,!1);return{elements:s,primitive:m,count:p,instances:h,offset:d,vao:f,vaoActive:i,elementsActive:u,static:a}}(e,d),A=function(e,t){var r=e.static,n=e.dynamic,i={};return k.forEach((function(e){var o=E(e);function f(t,a){if(e in r){var f=t(r[e]);i[o]=an((function(){return f}))}else if(e in n){var u=n[e];i[o]=on(u,(function(e,t){return a(e,t,e.invoke(t,u))}))}}switch(e){case Nt:case It:case Vt:case er:case Mt:case ir:case Xt:case Kt:case Jt:case Gt:return f((function(r){return _.commandType(r,\"boolean\",e,t.commandStr),r}),(function(t,r,n){return _.optional((function(){t.assert(r,\"typeof \"+n+'===\"boolean\"',\"invalid flag \"+e,t.commandStr)})),n}));case Wt:return f((function(r){return _.commandParameter(r,$r,\"invalid \"+e,t.commandStr),$r[r]}),(function(t,r,n){var a=t.constants.compareFuncs;return _.optional((function(){t.assert(r,n+\" in \"+a,\"invalid \"+e+\", must be one of \"+Object.keys($r))})),r.def(a,\"[\",n,\"]\")}));case Ut:return f((function(e){return _.command(me(e)&&2===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&e[0]<=e[1],\"depth range is 2d array\",t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===2&&typeof \"+r+'[0]===\"number\"&&typeof '+r+'[1]===\"number\"&&'+r+\"[0]<=\"+r+\"[1]\",\"depth range must be a 2d array\")})),[t.def(\"+\",r,\"[0]\"),t.def(\"+\",r,\"[1]\")]}));case Rt:return f((function(e){_.commandType(e,\"object\",\"blend.func\",t.commandStr);var r=\"srcRGB\"in e?e.srcRGB:e.src,n=\"srcAlpha\"in e?e.srcAlpha:e.src,a=\"dstRGB\"in e?e.dstRGB:e.dst,i=\"dstAlpha\"in e?e.dstAlpha:e.dst;return _.commandParameter(r,Yr,o+\".srcRGB\",t.commandStr),_.commandParameter(n,Yr,o+\".srcAlpha\",t.commandStr),_.commandParameter(a,Yr,o+\".dstRGB\",t.commandStr),_.commandParameter(i,Yr,o+\".dstAlpha\",t.commandStr),_.command(-1===Xr.indexOf(r+\", \"+a),\"unallowed blending combination (srcRGB, dstRGB) = (\"+r+\", \"+a+\")\",t.commandStr),[Yr[r],Yr[a],Yr[n],Yr[i]]}),(function(t,r,n){var a=t.constants.blendFuncs;function i(i,o){var f=r.def('\"',i,o,'\" in ',n,\"?\",n,\".\",i,o,\":\",n,\".\",i);return _.optional((function(){t.assert(r,f+\" in \"+a,\"invalid \"+e+\".\"+i+o+\", must be one of \"+Object.keys(Yr))})),f}_.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid blend func, must be an object\")}));var o=i(\"src\",\"RGB\"),f=i(\"dst\",\"RGB\");_.optional((function(){var e=t.constants.invalidBlendCombinations;t.assert(r,e+\".indexOf(\"+o+'+\", \"+'+f+\") === -1 \",\"unallowed blending combination for (srcRGB, dstRGB)\")}));var u=r.def(a,\"[\",o,\"]\"),s=r.def(a,\"[\",i(\"src\",\"Alpha\"),\"]\");return[u,r.def(a,\"[\",f,\"]\"),s,r.def(a,\"[\",i(\"dst\",\"Alpha\"),\"]\")]}));case Lt:return f((function(r){return\"string\"==typeof r?(_.commandParameter(r,v,\"invalid \"+e,t.commandStr),[v[r],v[r]]):\"object\"==typeof r?(_.commandParameter(r.rgb,v,e+\".rgb\",t.commandStr),_.commandParameter(r.alpha,v,e+\".alpha\",t.commandStr),[v[r.rgb],v[r.alpha]]):void _.commandRaise(\"invalid blend.equation\",t.commandStr)}),(function(t,r,n){var a=t.constants.blendEquations,i=r.def(),o=r.def(),f=t.cond(\"typeof \",n,'===\"string\"');return _.optional((function(){function r(e,r,n){t.assert(e,n+\" in \"+a,\"invalid \"+r+\", must be one of \"+Object.keys(v))}r(f.then,e,n),t.assert(f.else,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e),r(f.else,e+\".rgb\",n+\".rgb\"),r(f.else,e+\".alpha\",n+\".alpha\")})),f.then(i,\"=\",o,\"=\",a,\"[\",n,\"];\"),f.else(i,\"=\",a,\"[\",n,\".rgb];\",o,\"=\",a,\"[\",n,\".alpha];\"),r(f),[i,o]}));case Pt:return f((function(e){return _.command(me(e)&&4===e.length,\"blend.color must be a 4d array\",t.commandStr),V(4,(function(t){return+e[t]}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"blend.color must be a 4d array\")})),V(4,(function(e){return t.def(\"+\",r,\"[\",e,\"]\")}))}));case tr:return f((function(e){return _.commandType(e,\"number\",o,t.commandStr),0|e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"',\"invalid stencil.mask\")})),t.def(r,\"|0\")}));case rr:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.cmp||\"keep\",a=r.ref||0,i=\"mask\"in r?r.mask:-1;return _.commandParameter(n,$r,e+\".cmp\",t.commandStr),_.commandType(a,\"number\",e+\".ref\",t.commandStr),_.commandType(i,\"number\",e+\".mask\",t.commandStr),[$r[n],a,i]}),(function(e,t,r){var n=e.constants.compareFuncs;return _.optional((function(){function a(){e.assert(t,Array.prototype.join.call(arguments,\"\"),\"invalid stencil.func\")}a(r+\"&&typeof \",r,'===\"object\"'),a('!(\"cmp\" in ',r,\")||(\",r,\".cmp in \",n,\")\")})),[t.def('\"cmp\" in ',r,\"?\",n,\"[\",r,\".cmp]\",\":\",Qr),t.def(r,\".ref|0\"),t.def('\"mask\" in ',r,\"?\",r,\".mask|0:-1\")]}));case nr:case ar:return f((function(r){_.commandType(r,\"object\",o,t.commandStr);var n=r.fail||\"keep\",a=r.zfail||\"keep\",i=r.zpass||\"keep\";return _.commandParameter(n,Kr,e+\".fail\",t.commandStr),_.commandParameter(a,Kr,e+\".zfail\",t.commandStr),_.commandParameter(i,Kr,e+\".zpass\",t.commandStr),[e===ar?Nr:Hr,Kr[n],Kr[a],Kr[i]]}),(function(t,r,n){var a=t.constants.stencilOps;function i(i){return _.optional((function(){t.assert(r,'!(\"'+i+'\" in '+n+\")||(\"+n+\".\"+i+\" in \"+a+\")\",\"invalid \"+e+\".\"+i+\", must be one of \"+Object.keys(Kr))})),r.def('\"',i,'\" in ',n,\"?\",a,\"[\",n,\".\",i,\"]:\",Qr)}return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[e===ar?Nr:Hr,i(\"fail\"),i(\"zfail\"),i(\"zpass\")]}));case $t:return f((function(e){_.commandType(e,\"object\",o,t.commandStr);var r=0|e.factor,n=0|e.units;return _.commandType(r,\"number\",o+\".factor\",t.commandStr),_.commandType(n,\"number\",o+\".units\",t.commandStr),[r,n]}),(function(t,r,n){return _.optional((function(){t.assert(r,n+\"&&typeof \"+n+'===\"object\"',\"invalid \"+e)})),[r.def(n,\".factor|0\"),r.def(n,\".units|0\")]}));case qt:return f((function(e){var r=0;return\"front\"===e?r=Hr:\"back\"===e&&(r=Nr),_.command(!!r,o,t.commandStr),r}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"front\"||'+r+'===\"back\"',\"invalid cull.face\")})),t.def(r,'===\"front\"?',Hr,\":\",Nr)}));case Yt:return f((function(e){return _.command(\"number\"==typeof e&&e>=a.lineWidthDims[0]&&e<=a.lineWidthDims[1],\"invalid line width, must be a positive number between \"+a.lineWidthDims[0]+\" and \"+a.lineWidthDims[1],t.commandStr),e}),(function(e,t,r){return _.optional((function(){e.assert(t,\"typeof \"+r+'===\"number\"&&'+r+\">=\"+a.lineWidthDims[0]+\"&&\"+r+\"<=\"+a.lineWidthDims[1],\"invalid line width\")})),r}));case Qt:return f((function(e){return _.commandParameter(e,Zr,o,t.commandStr),Zr[e]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+'===\"cw\"||'+r+'===\"ccw\"',\"invalid frontFace, must be one of cw,ccw\")})),t.def(r+'===\"cw\"?2304:'+qr)}));case Ht:return f((function(e){return _.command(me(e)&&4===e.length,\"color.mask must be length 4 array\",t.commandStr),e.map((function(e){return!!e}))}),(function(e,t,r){return _.optional((function(){e.assert(t,e.shared.isArrayLike+\"(\"+r+\")&&\"+r+\".length===4\",\"invalid color.mask\")})),V(4,(function(e){return\"!!\"+r+\"[\"+e+\"]\"}))}));case Zt:return f((function(e){_.command(\"object\"==typeof e&&e,o,t.commandStr);var r=\"value\"in e?e.value:1,n=!!e.invert;return _.command(\"number\"==typeof r&&r>=0&&r<=1,\"sample.coverage.value must be a number between 0 and 1\",t.commandStr),[r,n]}),(function(e,t,r){return _.optional((function(){e.assert(t,r+\"&&typeof \"+r+'===\"object\"',\"invalid sample.coverage\")})),[t.def('\"value\" in ',r,\"?+\",r,\".value:1\"),t.def(\"!!\",r,\".invert\")]}))}})),i}(e,d),S=function(e,t,n){var a=e.static,i=e.dynamic;function o(e){if(e in a){var t=r.id(a[e]);_.optional((function(){l.shader(Jr[e],t,_.guessCommand())}));var n=an((function(){return t}));return n.id=t,n}if(e in i){var o=i[e];return on(o,(function(t,r){var n=t.invoke(r,o),a=r.def(t.shared.strings,\".id(\",n,\")\");return _.optional((function(){r(t.shared.shader,\".shader(\",Jr[e],\",\",a,\",\",t.command,\");\")})),a}))}return null}var f,u=o(lr),s=o(cr),c=null;return nn(u)&&nn(s)?(c=l.program(s.id,u.id,null,n),f=an((function(e,t){return e.link(c)}))):f=new rn(u&&u.thisDep||s&&s.thisDep,u&&u.contextDep||s&&s.contextDep,u&&u.propDep||s&&s.propDep,(function(e,t){var r,n=e.shared.shader;r=u?u.append(e,t):t.def(n,\".\",lr);var a=n+\".program(\"+(s?s.append(e,t):t.def(n,\".\",cr))+\",\"+r;return _.optional((function(){a+=\",\"+e.command})),t.def(a+\")\")})),{frag:u,vert:s,progVar:f,program:c}}(e,0,h);function O(e){var t=x[e];t&&(A[e]=t)}O(fr),O(E(or));var T=Object.keys(A).length>0,D={framebuffer:y,draw:w,shader:S,state:A,dirty:T,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(D.profile=function(e){var t,r=e.static,n=e.dynamic;if(ur in r){var a=!!r[ur];(t=an((function(e,t){return a}))).enable=a}else if(ur in n){var i=n[ur];t=on(i,(function(e,t){return e.invoke(t,i)}))}return t}(e),D.uniforms=function(e,t){var r=e.static,n=e.dynamic,a={};return Object.keys(r).forEach((function(e){var n,i=r[e];if(\"number\"==typeof i||\"boolean\"==typeof i)n=an((function(){return i}));else if(\"function\"==typeof i){var o=i._reglType;\"texture2d\"===o||\"textureCube\"===o?n=an((function(e){return e.link(i)})):\"framebuffer\"===o||\"framebufferCube\"===o?(_.command(i.color.length>0,'missing color attachment for framebuffer sent to uniform \"'+e+'\"',t.commandStr),n=an((function(e){return e.link(i.color[0])}))):_.commandRaise('invalid data for uniform \"'+e+'\"',t.commandStr)}else me(i)?n=an((function(t){return t.global.def(\"[\",V(i.length,(function(r){return _.command(\"number\"==typeof i[r]||\"boolean\"==typeof i[r],\"invalid uniform \"+e,t.commandStr),i[r]})),\"]\")})):_.commandRaise('invalid or missing data for uniform \"'+e+'\"',t.commandStr);n.value=i,a[e]=n})),Object.keys(n).forEach((function(e){var t=n[e];a[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),a}(f,d),D.drawVAO=D.scopeVAO=w.vao,!D.drawVAO&&S.program&&!h&&n.angle_instanced_arrays&&w.static.elements){var j=!0,C=S.program.attributes.map((function(e){var r=t.static[e];return j=j&&!!r,r}));if(j&&C.length>0){var z=c.getVAO(c.createVAO({attributes:C,elements:w.static.elements}));D.drawVAO=new rn(null,null,null,(function(e,t){return e.link(z)})),D.useVAO=!0}}return h?D.useVAO=!0:D.attributes=function(e,t){var n=e.static,a=e.dynamic,o={};return Object.keys(n).forEach((function(e){var a=n[e],f=r.id(e),u=new b;if(en(a))u.state=1,u.buffer=i.getBuffer(i.create(a,Sr,!1,!0)),u.type=0;else{var s=i.getBuffer(a);if(s)u.state=1,u.buffer=s,u.type=0;else if(_.command(\"object\"==typeof a&&a,\"invalid data for attribute \"+e,t.commandStr),\"constant\"in a){var c=a.constant;u.buffer=\"null\",u.state=2,\"number\"==typeof c?u.x=c:(_.command(me(c)&&c.length>0&&c.length<=4,\"invalid constant for attribute \"+e,t.commandStr),Bt.forEach((function(e,t){t=0,'invalid offset for attribute \"'+e+'\"',t.commandStr);var d=0|a.stride;_.command(d>=0&&d<256,'invalid stride for attribute \"'+e+'\", must be integer betweeen [0, 255]',t.commandStr);var m=0|a.size;_.command(!(\"size\"in a)||m>0&&m<=4,'invalid size for attribute \"'+e+'\", must be 1,2,3,4',t.commandStr);var p=!!a.normalized,h=0;\"type\"in a&&(_.commandParameter(a.type,X,\"invalid type for attribute \"+e,t.commandStr),h=X[a.type]);var v=0|a.divisor;_.optional((function(){\"divisor\"in a&&(_.command(0===v||g,'cannot specify divisor for attribute \"'+e+'\", instancing not supported',t.commandStr),_.command(v>=0,'invalid divisor for attribute \"'+e+'\"',t.commandStr));var r=t.commandStr,n=[\"buffer\",\"offset\",\"divisor\",\"normalized\",\"type\",\"size\",\"stride\"];Object.keys(a).forEach((function(t){_.command(n.indexOf(t)>=0,'unknown parameter \"'+t+'\" for attribute pointer \"'+e+'\" (valid parameters are '+n+\")\",r)}))})),u.buffer=s,u.state=1,u.size=m,u.normalized=p,u.type=h||s.dtype,u.offset=l,u.stride=d,u.divisor=v}}o[e]=an((function(e,t){var r=e.attribCache;if(f in r)return r[f];var n={isStream:!1};return Object.keys(u).forEach((function(e){n[e]=u[e]})),u.buffer&&(n.buffer=e.link(u.buffer),n.type=n.type||n.buffer+\".dtype\"),r[f]=n,n}))})),Object.keys(a).forEach((function(e){var t=a[e];o[e]=on(t,(function(r,n){var a=r.invoke(n,t),i=r.shared,o=r.constants,f=i.isBufferArgs,u=i.buffer;_.optional((function(){r.assert(n,a+\"&&(typeof \"+a+'===\"object\"||typeof '+a+'===\"function\")&&('+f+\"(\"+a+\")||\"+u+\".getBuffer(\"+a+\")||\"+u+\".getBuffer(\"+a+\".buffer)||\"+f+\"(\"+a+'.buffer)||(\"constant\" in '+a+\"&&(typeof \"+a+'.constant===\"number\"||'+i.isArrayLike+\"(\"+a+\".constant))))\",'invalid dynamic attribute \"'+e+'\"')}));var s={isStream:n.def(!1)},c=new b;c.state=1,Object.keys(c).forEach((function(e){s[e]=n.def(\"\"+c[e])}));var l=s.buffer,d=s.type;function m(e){n(s[e],\"=\",a,\".\",e,\"|0;\")}return n(\"if(\",f,\"(\",a,\")){\",s.isStream,\"=true;\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\");\",d,\"=\",l,\".dtype;\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\");\",\"if(\",l,\"){\",d,\"=\",l,\".dtype;\",'}else if(\"constant\" in ',a,\"){\",s.state,\"=\",2,\";\",\"if(typeof \"+a+'.constant === \"number\"){',s[Bt[0]],\"=\",a,\".constant;\",Bt.slice(1).map((function(e){return s[e]})).join(\"=\"),\"=0;\",\"}else{\",Bt.map((function(e,t){return s[e]+\"=\"+a+\".constant.length>\"+t+\"?\"+a+\".constant[\"+t+\"]:0;\"})).join(\"\"),\"}}else{\",\"if(\",f,\"(\",a,\".buffer)){\",l,\"=\",u,\".createStream(\",Sr,\",\",a,\".buffer);\",\"}else{\",l,\"=\",u,\".getBuffer(\",a,\".buffer);\",\"}\",d,'=\"type\" in ',a,\"?\",o.glTypes,\"[\",a,\".type]:\",l,\".dtype;\",s.normalized,\"=!!\",a,\".normalized;\"),m(\"size\"),m(\"offset\"),m(\"stride\"),m(\"divisor\"),n(\"}}\"),n.exit(\"if(\",s.isStream,\"){\",u,\".destroyStream(\",l,\");\",\"}\"),s}))})),o}(t,d),D.context=function(e){var t=e.static,r=e.dynamic,n={};return Object.keys(t).forEach((function(e){var r=t[e];n[e]=an((function(e,t){return\"number\"==typeof r||\"boolean\"==typeof r?\"\"+r:e.link(r)}))})),Object.keys(r).forEach((function(e){var t=r[e];n[e]=on(t,(function(e,r){return e.invoke(r,t)}))})),n}(s),D}function P(e,t,r){var n=e.shared.context,a=e.scope();Object.keys(r).forEach((function(i){t.save(n,\".\"+i);var o=r[i].append(e,t);Array.isArray(o)?a(n,\".\",i,\"=[\",o.join(),\"];\"):a(n,\".\",i,\"=\",o,\";\")})),t(a)}function L(e,t,r,n){var a,i=e.shared,o=i.gl,f=i.framebuffer;y&&(a=t.def(i.extensions,\".webgl_draw_buffers\"));var u,s=e.constants,c=s.drawBuffer,l=s.backBuffer;u=r?r.append(e,t):t.def(f,\".next\"),n||t(\"if(\",u,\"!==\",f,\".cur){\"),t(\"if(\",u,\"){\",o,\".bindFramebuffer(\",36160,\",\",u,\".framebuffer);\"),y&&t(a,\".drawBuffersWEBGL(\",c,\"[\",u,\".colorAttachments.length]);\"),t(\"}else{\",o,\".bindFramebuffer(\",36160,\",null);\"),y&&t(a,\".drawBuffersWEBGL(\",l,\");\"),t(\"}\",f,\".cur=\",u,\";\"),n||t(\"}\")}function R(e,t,r){var n=e.shared,a=n.gl,i=e.current,o=e.next,f=n.current,u=n.next,s=e.cond(f,\".dirty\");k.forEach((function(t){var n,c,l=E(t);if(!(l in r.state))if(l in o){n=o[l],c=i[l];var d=V(w[l].length,(function(e){return s.def(n,\"[\",e,\"]\")}));s(e.cond(d.map((function(e,t){return e+\"!==\"+c+\"[\"+t+\"]\"})).join(\"||\")).then(a,\".\",O[l],\"(\",d,\");\",d.map((function(e,t){return c+\"[\"+t+\"]=\"+e})).join(\";\"),\";\"))}else{n=s.def(u,\".\",l);var m=e.cond(n,\"!==\",f,\".\",l);s(m),l in S?m(e.cond(n).then(a,\".enable(\",S[l],\");\").else(a,\".disable(\",S[l],\");\"),f,\".\",l,\"=\",n,\";\"):m(a,\".\",O[l],\"(\",n,\");\",f,\".\",l,\"=\",n,\";\")}})),0===Object.keys(r.state).length&&s(f,\".dirty=false;\"),t(s)}function M(e,t,r,n){var a=e.shared,i=e.current,o=a.current,f=a.gl;tn(Object.keys(r)).forEach((function(a){var u=r[a];if(!n||n(u)){var s=u.append(e,t);if(S[a]){var c=S[a];nn(u)?t(f,s?\".enable(\":\".disable(\",c,\");\"):t(e.cond(s).then(f,\".enable(\",c,\");\").else(f,\".disable(\",c,\");\")),t(o,\".\",a,\"=\",s,\";\")}else if(me(s)){var l=i[a];t(f,\".\",O[a],\"(\",s,\");\",s.map((function(e,t){return l+\"[\"+t+\"]=\"+e})).join(\";\"),\";\")}else t(f,\".\",O[a],\"(\",s,\");\",o,\".\",a,\"=\",s,\";\")}}))}function W(e,t){g&&(e.instancing=t.def(e.shared.extensions,\".angle_instanced_arrays\"))}function U(e,t,r,n,a){var i,o,f,u=e.shared,s=e.stats,c=u.current,l=u.timer,d=r.profile;function m(){return\"undefined\"==typeof performance?\"Date.now()\":\"performance.now()\"}function h(e){e(i=t.def(),\"=\",m(),\";\"),\"string\"==typeof a?e(s,\".count+=\",a,\";\"):e(s,\".count++;\"),p&&(n?e(o=t.def(),\"=\",l,\".getNumPendingQueries();\"):e(l,\".beginQuery(\",s,\");\"))}function b(e){e(s,\".cpuTime+=\",m(),\"-\",i,\";\"),p&&(n?e(l,\".pushScopeStats(\",o,\",\",l,\".getNumPendingQueries(),\",s,\");\"):e(l,\".endQuery();\"))}function v(e){var r=t.def(c,\".profile\");t(c,\".profile=\",e,\";\"),t.exit(c,\".profile=\",r,\";\")}if(d){if(nn(d))return void(d.enable?(h(t),b(t.exit),v(\"true\")):v(\"false\"));v(f=d.append(e,t))}else f=t.def(c,\".profile\");var g=e.block();h(g),t(\"if(\",f,\"){\",g,\"}\");var y=e.block();b(y),t.exit(\"if(\",f,\"){\",y,\"}\")}function G(e,t,r,n,a){var i=e.shared;n.forEach((function(n){var o,f=n.name,u=r.attributes[f];if(u){if(!a(u))return;o=u.append(e,t)}else{if(!a(fn))return;var s=e.scopeAttrib(f);_.optional((function(){e.assert(t,s+\".state\",\"missing attribute \"+f)})),o={},Object.keys(new b).forEach((function(e){o[e]=t.def(s,\".\",e)}))}!function(r,n,a){var o=i.gl,f=t.def(r,\".location\"),u=t.def(i.attributes,\"[\",f,\"]\"),s=a.state,c=a.buffer,l=[a.x,a.y,a.z,a.w],d=[\"buffer\",\"normalized\",\"offset\",\"stride\"];function m(){t(\"if(!\",u,\".buffer){\",o,\".enableVertexAttribArray(\",f,\");}\");var r,i=a.type;if(r=a.size?t.def(a.size,\"||\",n):n,t(\"if(\",u,\".type!==\",i,\"||\",u,\".size!==\",r,\"||\",d.map((function(e){return u+\".\"+e+\"!==\"+a[e]})).join(\"||\"),\"){\",o,\".bindBuffer(\",Sr,\",\",c,\".buffer);\",o,\".vertexAttribPointer(\",[f,r,i,a.normalized,a.stride,a.offset],\");\",u,\".type=\",i,\";\",u,\".size=\",r,\";\",d.map((function(e){return u+\".\"+e+\"=\"+a[e]+\";\"})).join(\"\"),\"}\"),g){var s=a.divisor;t(\"if(\",u,\".divisor!==\",s,\"){\",e.instancing,\".vertexAttribDivisorANGLE(\",[f,s],\");\",u,\".divisor=\",s,\";}\")}}function p(){t(\"if(\",u,\".buffer){\",o,\".disableVertexAttribArray(\",f,\");\",u,\".buffer=null;\",\"}if(\",Bt.map((function(e,t){return u+\".\"+e+\"!==\"+l[t]})).join(\"||\"),\"){\",o,\".vertexAttrib4f(\",f,\",\",l,\");\",Bt.map((function(e,t){return u+\".\"+e+\"=\"+l[t]+\";\"})).join(\"\"),\"}\")}1===s?m():2===s?p():(t(\"if(\",s,\"===\",1,\"){\"),m(),t(\"}else{\"),p(),t(\"}\"))}(e.link(n),function(e){switch(e){case Tr:case zr:case Ir:return 2;case Dr:case Fr:case Pr:return 3;case jr:case Br:case Lr:return 4;default:return 1}}(n.info.type),o)}))}function H(e,t,n,a,i,o){for(var f,u=e.shared,s=u.gl,c={},l=0;l1){if(!b)continue;var v=m.replace(\"[0]\",\"\");if(c[v])continue;c[v]=1}var g,y=e.link(d)+\".location\";if(b){if(!i(b))continue;if(nn(b)){var x=b.value;if(_.command(null!=x,'missing uniform \"'+m+'\"',e.commandStr),p===Ur||p===Gr){_.command(\"function\"==typeof x&&(p===Ur&&(\"texture2d\"===x._reglType||\"framebuffer\"===x._reglType)||p===Gr&&(\"textureCube\"===x._reglType||\"framebufferCube\"===x._reglType)),\"invalid texture for uniform \"+m,e.commandStr);var w=e.link(x._texture||x.color[0]._texture);t(s,\".uniform1i(\",y,\",\",w+\".bind());\"),t.exit(w,\".unbind();\")}else if(p===Rr||p===Mr||p===Wr){_.optional((function(){_.command(me(x),\"invalid matrix for uniform \"+m,e.commandStr),_.command(p===Rr&&4===x.length||p===Mr&&9===x.length||p===Wr&&16===x.length,\"invalid length for matrix uniform \"+m,e.commandStr)}));var A=e.global.def(\"new Float32Array([\"+Array.prototype.slice.call(x)+\"])\"),k=2;p===Mr?k=3:p===Wr&&(k=4),t(s,\".uniformMatrix\",k,\"fv(\",y,\",false,\",A,\");\")}else{switch(p){case Er:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1f\";break;case Tr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2f\";break;case Dr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3f\";break;case jr:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4f\";break;case Vr:1===h?_.commandType(x,\"boolean\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Cr:1===h?_.commandType(x,\"number\",\"uniform \"+m,e.commandStr):_.command(me(x)&&x.length===h,\"uniform \"+m,e.commandStr),f=\"1i\";break;case Ir:case zr:_.command(me(x)&&x.length&&x.length%2==0&&x.length<=2*h,\"uniform \"+m,e.commandStr),f=\"2i\";break;case Pr:case Fr:_.command(me(x)&&x.length&&x.length%3==0&&x.length<=3*h,\"uniform \"+m,e.commandStr),f=\"3i\";break;case Lr:case Br:_.command(me(x)&&x.length&&x.length%4==0&&x.length<=4*h,\"uniform \"+m,e.commandStr),f=\"4i\"}h>1?(f+=\"v\",x=e.global.def(\"[\"+Array.prototype.slice.call(x)+\"]\")):x=me(x)?Array.prototype.slice.call(x):x,t(s,\".uniform\",f,\"(\",y,\",\",x,\");\")}continue}g=b.append(e,t)}else{if(!i(fn))continue;g=t.def(u.uniforms,\"[\",r.id(m),\"]\")}p===Ur?(_(!Array.isArray(g),\"must specify a scalar prop for textures\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebuffer\"){',g,\"=\",g,\".color[0];\",\"}\")):p===Gr&&(_(!Array.isArray(g),\"must specify a scalar prop for cube maps\"),t(\"if(\",g,\"&&\",g,'._reglType===\"framebufferCube\"){',g,\"=\",g,\".color[0];\",\"}\")),_.optional((function(){function r(r,n){e.assert(t,r,'bad data or missing for uniform \"'+m+'\". '+n)}function n(e,t){1===t&&_(!Array.isArray(g),\"must not specify an array type for uniform\"),r(\"Array.isArray(\"+g+\") && typeof \"+g+'[0]===\" '+e+'\" || typeof '+g+'===\"'+e+'\"',\"invalid type, expected \"+e)}function a(t,n,a){Array.isArray(g)?_(g.length&&g.length%t==0&&g.length<=t*a,\"must have length of \"+(1===a?\"\":\"n * \")+t):r(u.isArrayLike+\"(\"+g+\")&&\"+g+\".length && \"+g+\".length % \"+t+\" === 0 && \"+g+\".length<=\"+t*a,\"invalid vector, should have length of \"+(1===a?\"\":\"n * \")+t,e.commandStr)}function i(t){_(!Array.isArray(g),\"must not specify a value type\"),r(\"typeof \"+g+'===\"function\"&&'+g+'._reglType===\"texture'+(3553===t?\"2d\":\"Cube\")+'\"',\"invalid texture type\",e.commandStr)}switch(p){case Cr:n(\"number\",h);break;case zr:a(2,0,h);break;case Fr:a(3,0,h);break;case Br:a(4,0,h);break;case Er:n(\"number\",h);break;case Tr:a(2,0,h);break;case Dr:a(3,0,h);break;case jr:a(4,0,h);break;case Vr:n(\"boolean\",h);break;case Ir:a(2,0,h);break;case Pr:a(3,0,h);break;case Lr:case Rr:a(4,0,h);break;case Mr:a(9,0,h);break;case Wr:a(16,0,h);break;case Ur:i(3553);break;case Gr:i(34067)}}));var S=1;switch(p){case Ur:case Gr:var O=t.def(g,\"._texture\");t(s,\".uniform1i(\",y,\",\",O,\".bind());\"),t.exit(O,\".unbind();\");continue;case Cr:case Vr:f=\"1i\";break;case zr:case Ir:f=\"2i\",S=2;break;case Fr:case Pr:f=\"3i\",S=3;break;case Br:case Lr:f=\"4i\",S=4;break;case Er:f=\"1f\";break;case Tr:f=\"2f\",S=2;break;case Dr:f=\"3f\",S=3;break;case jr:f=\"4f\",S=4;break;case Rr:f=\"Matrix2fv\";break;case Mr:f=\"Matrix3fv\";break;case Wr:f=\"Matrix4fv\"}if(-1===f.indexOf(\"Matrix\")&&h>1&&(f+=\"v\",S=1),\"M\"===f.charAt(0)){t(s,\".uniform\",f,\"(\",y,\",\");var E=Math.pow(p-Rr+2,2),T=e.global.def(\"new Float32Array(\",E,\")\");Array.isArray(g)?t(\"false,(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g[e]})),\",\",T,\")\"):t(\"false,(Array.isArray(\",g,\")||\",g,\" instanceof Float32Array)?\",g,\":(\",V(E,(function(e){return T+\"[\"+e+\"]=\"+g+\"[\"+e+\"]\"})),\",\",T,\")\"),t(\");\")}else if(S>1){for(var D=[],j=[],C=0;C=0\",\"missing vertex count\")}))):(a=u.def(o,\".\",pr),_.optional((function(){e.assert(u,a+\">=0\",\"missing vertex count\")}))),a}();if(\"number\"==typeof p){if(0===p)return}else r(\"if(\",p,\"){\"),r.exit(\"}\");g&&(c=s(br),l=e.instancing);var h=u+\".type\",b=f.elements&&nn(f.elements)&&!f.vaoActive;function v(){function e(){r(l,\".drawElementsInstancedANGLE(\",[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\",c],\");\")}function t(){r(l,\".drawArraysInstancedANGLE(\",[d,m,p,c],\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}function y(){function e(){r(i+\".drawElements(\"+[d,p,h,m+\"<<((\"+h+\"-5121)>>1)\"]+\");\")}function t(){r(i+\".drawArrays(\"+[d,m,p]+\");\")}u&&\"null\"!==u?b?e():(r(\"if(\",u,\"){\"),e(),r(\"}else{\"),t(),r(\"}\")):t()}g&&(\"number\"!=typeof c||c>=0)?\"string\"==typeof c?(r(\"if(\",c,\">0){\"),v(),r(\"}else if(\",c,\"<0){\"),y(),r(\"}\")):v():y()}function q(e,t,r,n,a){var i=B(),o=i.proc(\"body\",a);return _.optional((function(){i.commandStr=t.commandStr,i.command=i.link(t.commandStr)})),g&&(i.instancing=o.def(i.shared.extensions,\".angle_instanced_arrays\")),e(i,o,r,n),i.compile().body}function Q(e,t,r,n){W(e,t),r.useVAO?r.drawVAO?t(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,t),\");\"):t(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(t(e.shared.vao,\".setVAO(null);\"),G(e,t,r,n.attributes,(function(){return!0}))),H(e,t,r,n.uniforms,(function(){return!0}),!1),N(e,t,t,r)}function Y(e,t,r,n){function a(){return!0}e.batchId=\"a1\",W(e,t),G(e,t,r,n.attributes,a),H(e,t,r,n.uniforms,a,!1),N(e,t,t,r)}function $(e,t,r,n){W(e,t);var a=r.contextDep,i=t.def(),o=t.def();e.shared.props=o,e.batchId=i;var f=e.scope(),u=e.scope();function s(e){return e.contextDep&&a||e.propDep}function c(e){return!s(e)}if(t(f.entry,\"for(\",i,\"=0;\",i,\"<\",\"a1\",\";++\",i,\"){\",o,\"=\",\"a0\",\"[\",i,\"];\",u,\"}\",f.exit),r.needsContext&&P(e,u,r.context),r.needsFramebuffer&&L(e,u,r.framebuffer),M(e,u,r.state,s),r.profile&&s(r.profile)&&U(e,u,r,!1,!0),n)r.useVAO?r.drawVAO?s(r.drawVAO)?u(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,u),\");\"):f(e.shared.vao,\".setVAO(\",r.drawVAO.append(e,f),\");\"):f(e.shared.vao,\".setVAO(\",e.shared.vao,\".targetVAO);\"):(f(e.shared.vao,\".setVAO(null);\"),G(e,f,r,n.attributes,c),G(e,u,r,n.attributes,s)),H(e,f,r,n.uniforms,c,!1),H(e,u,r,n.uniforms,s,!0),N(e,f,u,r);else{var l=e.global.def(\"{}\"),d=r.shader.progVar.append(e,u),m=u.def(d,\".id\"),p=u.def(l,\"[\",m,\"]\");u(e.shared.gl,\".useProgram(\",d,\".program);\",\"if(!\",p,\"){\",p,\"=\",l,\"[\",m,\"]=\",e.link((function(t){return q(Y,e,r,t,2)})),\"(\",d,\");}\",p,\".call(this,a0[\",i,\"],\",i,\");\")}}function K(e,t,r){var n=t.static[r];if(n&&function(e){if(\"object\"==typeof e&&!me(e)){for(var t=Object.keys(e),r=0;r0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),function(e,t){var n=e.proc(\"scope\",3);e.batchId=\"a2\";var a=e.shared,i=a.current;function o(r){var i=t.shader[r];i&&n.set(a.shader,\".\"+r,i.append(e,n))}P(e,n,t.context),t.framebuffer&&t.framebuffer.append(e,n),tn(Object.keys(t.state)).forEach((function(r){var i=t.state[r].append(e,n);me(i)?i.forEach((function(t,a){n.set(e.next[r],\"[\"+a+\"]\",t)})):n.set(a.next,\".\"+r,i)})),U(e,n,t,!0,!0),[dr,hr,pr,br,mr].forEach((function(r){var i=t.draw[r];i&&n.set(a.draw,\".\"+r,\"\"+i.append(e,n))})),Object.keys(t.uniforms).forEach((function(i){var o=t.uniforms[i].append(e,n);Array.isArray(o)&&(o=\"[\"+o.join()+\"]\"),n.set(a.uniforms,\"[\"+r.id(i)+\"]\",o)})),Object.keys(t.attributes).forEach((function(r){var a=t.attributes[r].append(e,n),i=e.scopeAttrib(r);Object.keys(new b).forEach((function(e){n.set(i,\".\"+e,a[e])}))})),t.scopeVAO&&n.set(a.vao,\".targetVAO\",t.scopeVAO.append(e,n)),o(cr),o(lr),Object.keys(t.state).length>0&&(n(i,\".dirty=true;\"),n.exit(i,\".dirty=true;\")),n(\"a1(\",e.shared.context,\",a0,\",e.batchId,\");\")}(f,u),function(e,t){var r=e.proc(\"batch\",2);e.batchId=\"0\",W(e,r);var n=!1,a=!0;Object.keys(t.context).forEach((function(e){n=n||t.context[e].propDep})),n||(P(e,r,t.context),a=!1);var i=t.framebuffer,o=!1;function f(e){return e.contextDep&&n||e.propDep}i?(i.propDep?n=o=!0:i.contextDep&&n&&(o=!0),o||L(e,r,i)):L(e,r,null),t.state.viewport&&t.state.viewport.propDep&&(n=!0),R(e,r,t),M(e,r,t.state,(function(e){return!f(e)})),t.profile&&f(t.profile)||U(e,r,t,!1,\"a1\"),t.contextDep=n,t.needsContext=a,t.needsFramebuffer=o;var u=t.shader.progVar;if(u.contextDep&&n||u.propDep)$(e,r,t,null);else{var s=u.append(e,r);if(r(e.shared.gl,\".useProgram(\",s,\".program);\"),t.shader.program)$(e,r,t,t.shader.program);else{r(e.shared.vao,\".setVAO(null);\");var c=e.global.def(\"{}\"),l=r.def(s,\".id\"),d=r.def(c,\"[\",l,\"]\");r(e.cond(d).then(d,\".call(this,a0,a1);\").else(d,\"=\",c,\"[\",l,\"]=\",e.link((function(r){return q($,e,t,r,2)})),\"(\",s,\");\",d,\".call(this,a0,a1);\"))}}Object.keys(t.state).length>0&&r(e.shared.current,\".dirty=true;\"),e.shared.vao&&r(e.shared.vao,\".setVAO(null);\")}(f,u),t(f.compile(),{destroy:function(){u.shader.program.destroy()}})}}}var sn=function(e,t){if(!t.ext_disjoint_timer_query)return null;var r=[];function n(e){r.push(e)}var a=[];function i(){this.startQueryIndex=-1,this.endQueryIndex=-1,this.sum=0,this.stats=null}var o=[];function f(e){o.push(e)}var u=[];function s(e,t,r){var n=o.pop()||new i;n.startQueryIndex=e,n.endQueryIndex=t,n.sum=0,n.stats=r,u.push(n)}var c=[],l=[];return{beginQuery:function(e){var n=r.pop()||t.ext_disjoint_timer_query.createQueryEXT();t.ext_disjoint_timer_query.beginQueryEXT(35007,n),a.push(n),s(a.length-1,a.length,e)},endQuery:function(){t.ext_disjoint_timer_query.endQueryEXT(35007)},pushScopeStats:s,update:function(){var e,r,i=a.length;if(0!==i){l.length=Math.max(l.length,i+1),c.length=Math.max(c.length,i+1),c[0]=0,l[0]=0;var o=0;for(e=0,r=0;r0)if(Array.isArray(r[0])){f=J(r);for(var c=1,l=1;l0)if(\"number\"==typeof t[0]){var i=L.allocType(d.dtype,t.length);ne(i,t),p(i,a),L.freeType(i)}else if(Array.isArray(t[0])||e(t[0])){n=J(t);var o=K(t,n,d.dtype);p(o,a),L.freeType(o)}else _.raise(\"invalid buffer data\")}else if(G(t)){n=t.shape;var f=t.stride,u=0,s=0,c=0,l=0;1===n.length?(u=n[0],s=1,c=f[0],l=0):2===n.length?(u=n[0],s=n[1],c=f[0],l=f[1]):_.raise(\"invalid shape\");var h=Array.isArray(t.data)?d.dtype:re(t.data),b=L.allocType(h,u*s);ae(b,t.data,u,s,c,l,t.offset),p(b,a),L.freeType(b)}else _.raise(\"invalid data for buffer subdata\");return m},n.profile&&(m.stats=d.stats),m.destroy=function(){l(d)},m},createStream:function(e,t){var r=u.pop();return r||(r=new f(e)),r.bind(),c(r,t,35040,0,1,!1),r},destroyStream:function(e){u.push(e)},clear:function(){H(o).forEach(l),u.forEach(l)},getBuffer:function(e){return e&&e._buffer instanceof f?e._buffer:null},restore:function(){H(o).forEach((function(e){e.buffer=t.createBuffer(),t.bindBuffer(e.type,e.buffer),t.bufferData(e.type,e.persistentData||e.byteLength,e.usage)}))},_initBuffer:c}}(a,l,n,(function(e){return A.destroyBuffer(e)})),w=function(t,r,n,a){var i={},o=0,f={uint8:oe,uint16:fe};function u(e){this.id=o++,i[this.id]=this,this.buffer=e,this.primType=4,this.vertCount=0,this.type=0}r.oes_element_index_uint&&(f.uint32=ue),u.prototype.bind=function(){this.buffer.bind()};var s=[];function c(a,i,o,f,u,s,c){var l;if(a.buffer.bind(),i){var d=c;c||e(i)&&(!G(i)||e(i.data))||(d=r.oes_element_index_uint?ue:fe),n._initBuffer(a.buffer,i,o,d,3)}else t.bufferData(se,s,o),a.buffer.dtype=l||oe,a.buffer.usage=o,a.buffer.dimension=3,a.buffer.byteLength=s;if(l=c,!c){switch(a.buffer.dtype){case oe:case 5120:l=oe;break;case fe:case 5122:l=fe;break;case ue:case 5124:l=ue;break;default:_.raise(\"unsupported type for element array\")}a.buffer.dtype=l}a.type=l,_(l!==ue||!!r.oes_element_index_uint,\"32 bit element buffers not supported, enable oes_element_index_uint first\");var m=u;m<0&&(m=a.buffer.byteLength,l===fe?m>>=1:l===ue&&(m>>=2)),a.vertCount=m;var p=f;if(f<0){p=4;var h=a.buffer.dimension;1===h&&(p=0),2===h&&(p=1),3===h&&(p=4)}a.primType=p}function l(e){a.elementsCount--,_(null!==e.buffer,\"must not double destroy elements\"),delete i[e.id],e.buffer.destroy(),e.buffer=null}return{create:function(t,r){var i=n.create(null,se,!0),o=new u(i._buffer);function s(t){if(t)if(\"number\"==typeof t)i(t),o.primType=4,o.vertCount=0|t,o.type=oe;else{var r=null,n=35044,a=-1,u=-1,l=0,d=0;Array.isArray(t)||e(t)||G(t)?r=t:(_.type(t,\"object\",\"invalid arguments for elements\"),\"data\"in t&&(r=t.data,_(Array.isArray(r)||e(r)||G(r),\"invalid data for element buffer\")),\"usage\"in t&&(_.parameter(t.usage,$,\"invalid element buffer usage\"),n=$[t.usage]),\"primitive\"in t&&(_.parameter(t.primitive,ie,\"invalid element buffer primitive\"),a=ie[t.primitive]),\"count\"in t&&(_(\"number\"==typeof t.count&&t.count>=0,\"invalid vertex count for elements\"),u=0|t.count),\"type\"in t&&(_.parameter(t.type,f,\"invalid buffer type\"),d=f[t.type]),\"length\"in t?l=0|t.length:(l=u,d===fe||5122===d?l*=2:d!==ue&&5124!==d||(l*=4))),c(o,r,n,a,u,l,d)}else i(),o.primType=4,o.vertCount=0,o.type=oe;return s}return a.elementsCount++,s(t),s._reglType=\"elements\",s._elements=o,s.subdata=function(e,t){return i.subdata(e,t),s},s.destroy=function(){l(o)},s},createStream:function(e){var t=s.pop();return t||(t=new u(n.create(null,se,!0,!1)._buffer)),c(t,e,35040,-1,-1,0,0),t},destroyStream:function(e){s.push(e)},getElements:function(e){return\"function\"==typeof e&&e._elements instanceof u?e._elements:null},clear:function(){H(i).forEach(l)}}}(a,d,x,l),A=function(t,r,n,a,i,o,f){for(var u=n.maxAttributes,s=new Array(u),c=0;c{for(var e=Object.keys(t),r=0;r=0,'invalid option for vao: \"'+e[r]+'\" valid options are '+Et)})),_(Array.isArray(a),\"attributes must be an array\")}_(a.length0,\"must specify at least one attribute\");var c={},l=n.attributes;l.length=a.length;for(var d=0;d=b.byteLength?m.subdata(b):(m.destroy(),n.buffers[d]=null)),n.buffers[d]||(m=n.buffers[d]=i.create(p,34962,!1,!0)),h.buffer=i.getBuffer(m),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1,c[d]=1):i.getBuffer(p)?(h.buffer=i.getBuffer(p),h.size=0|h.buffer.dimension,h.normalized=!1,h.type=h.buffer.dtype,h.offset=0,h.stride=0,h.divisor=0,h.state=1):i.getBuffer(p.buffer)?(h.buffer=i.getBuffer(p.buffer),h.size=0|(+p.size||h.buffer.dimension),h.normalized=!!p.normalized||!1,\"type\"in p?(_.parameter(p.type,X,\"invalid buffer type\"),h.type=X[p.type]):h.type=h.buffer.dtype,h.offset=0|(p.offset||0),h.stride=0|(p.stride||0),h.divisor=0|(p.divisor||0),h.state=1,_(h.size>=1&&h.size<=4,\"size must be between 1 and 4\"),_(h.offset>=0,\"invalid offset\"),_(h.stride>=0&&h.stride<=255,\"stride must be between 0 and 255\"),_(h.divisor>=0,\"divisor must be positive\"),_(!h.divisor||!!r.angle_instanced_arrays,\"ANGLE_instanced_arrays must be enabled to use divisor\")):\"x\"in p?(_(d>0,\"first attribute must not be a constant\"),h.x=+p.x||0,h.y=+p.y||0,h.z=+p.z||0,h.w=+p.w||0,h.state=2):_(!1,\"invalid attribute spec for location \"+d)}for(var v=0;v1)for(var v=0;v1&&(y=y.replace(\"[0]\",\"\")),u(b,new f(y,r.id(y),e.getUniformLocation(m,y),c))}var x=e.getProgramParameter(m,35721);a.profile&&(t.stats.attributesCount=x);var w=t.attributes;for(o=0;oe&&(e=t.stats.uniformsCount)})),e},n.getMaxAttributesCount=function(){var e=0;return l.forEach((function(t){t.stats.attributesCount>e&&(e=t.stats.attributesCount)})),e}),{clear:function(){var t=e.deleteShader.bind(e);H(i).forEach(t),i={},H(o).forEach(t),o={},l.forEach((function(t){e.deleteProgram(t.program)})),l.length=0,c={},n.shaderCount=0},program:function(r,a,f,u){_.command(r>=0,\"missing vertex shader\",f),_.command(a>=0,\"missing fragment shader\",f);var s=c[a];s||(s=c[a]={});var d=s[r];if(d&&(d.refCount++,!u))return d;var h=new m(a,r);return n.shaderCount++,p(h,f,u),d||(s[r]=h),l.push(h),t(h,{destroy:function(){if(h.refCount--,h.refCount<=0){e.deleteProgram(h.program);var t=l.indexOf(h);l.splice(t,1),n.shaderCount--}s[h.vertId].refCount<=0&&(e.deleteShader(o[h.vertId]),delete o[h.vertId],delete c[h.fragId][h.vertId]),Object.keys(c[h.fragId]).length||(e.deleteShader(i[h.fragId]),delete i[h.fragId],delete c[h.fragId])}})},restore:function(){i={},o={};for(var e=0;e=2,\"invalid renderbuffer shape\"),f=0|m[0],u=0|m[1]}else\"radius\"in d&&(f=u=0|d.radius),\"width\"in d&&(f=0|d.width),\"height\"in d&&(u=0|d.height);\"format\"in d&&(_.parameter(d.format,i,\"invalid renderbuffer format\"),s=i[d.format])}else\"number\"==typeof t?(f=0|t,u=\"number\"==typeof n?0|n:f):t?_.raise(\"invalid arguments to renderbuffer constructor\"):f=u=1;if(_(f>0&&u>0&&f<=r.maxRenderbufferSize&&u<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),f!==c.width||u!==c.height||s!==c.format)return l.width=c.width=f,l.height=c.height=u,c.format=s,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,s,f,u),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height)),l.format=o[c.format],l}return u[c.id]=c,n.renderbufferCount++,l(t,f),l.resize=function(t,n){var i=0|t,o=0|n||i;return i===c.width&&o===c.height||(_(i>0&&o>0&&i<=r.maxRenderbufferSize&&o<=r.maxRenderbufferSize,\"invalid renderbuffer size\"),l.width=c.width=i,l.height=c.height=o,e.bindRenderbuffer(mt,c.renderbuffer),e.renderbufferStorage(mt,c.format,i,o),_(0===e.getError(),\"invalid render buffer format\"),a.profile&&(c.stats.size=bt(c.format,c.width,c.height))),l},l._reglType=\"renderbuffer\",l._renderbuffer=c,a.profile&&(l.stats=c.stats),l.destroy=function(){c.decRef()},l},clear:function(){H(u).forEach(c)},restore:function(){H(u).forEach((function(t){t.renderbuffer=e.createRenderbuffer(),e.bindRenderbuffer(mt,t.renderbuffer),e.renderbufferStorage(mt,t.format,t.width,t.height)})),e.bindRenderbuffer(mt,null)}}}(a,d,y,l,n),E=function(e,r,n,a,i,o){var f={cur:null,next:null,dirty:!1,setFBO:null},u=[\"rgba\"],s=[\"rgba4\",\"rgb565\",\"rgb5 a1\"];r.ext_srgb&&s.push(\"srgba\"),r.ext_color_buffer_half_float&&s.push(\"rgba16f\",\"rgb16f\"),r.webgl_color_buffer_float&&s.push(\"rgba32f\");var c=[\"uint8\"];function l(e,t,r){this.target=e,this.texture=t,this.renderbuffer=r;var n=0,a=0;t?(n=t.width,a=t.height):r&&(n=r.width,a=r.height),this.width=n,this.height=a}function d(e){e&&(e.texture&&e.texture._texture.decRef(),e.renderbuffer&&e.renderbuffer._renderbuffer.decRef())}function m(e,t,r){if(e)if(e.texture){var n=e.texture._texture,a=Math.max(1,n.width),i=Math.max(1,n.height);_(a===t&&i===r,\"inconsistent width/height for supplied texture\"),n.refCount+=1}else{var o=e.renderbuffer._renderbuffer;_(o.width===t&&o.height===r,\"inconsistent width/height for renderbuffer\"),o.refCount+=1}}function p(t,r){r&&(r.texture?e.framebufferTexture2D(vt,t,r.target,r.texture._texture.texture,0):e.framebufferRenderbuffer(vt,t,gt,r.renderbuffer._renderbuffer.renderbuffer))}function h(e){var t=yt,r=null,n=null,a=e;\"object\"==typeof e&&(a=e.data,\"target\"in e&&(t=0|e.target)),_.type(a,\"function\",\"invalid attachment data\");var i=a._reglType;return\"texture2d\"===i?(r=a,_(t===yt)):\"textureCube\"===i?(r=a,_(t>=xt&&t<34075,\"invalid cube map target\")):\"renderbuffer\"===i?(n=a,t=gt):_.raise(\"invalid regl object for attachment\"),new l(t,r,n)}function b(e,t,r,n,o){if(r){var f=a.create2D({width:e,height:t,format:n,type:o});return f._texture.refCount=0,new l(yt,f,null)}var u=i.create({width:e,height:t,format:n});return u._renderbuffer.refCount=0,new l(gt,null,u)}function v(e){return e&&(e.texture||e.renderbuffer)}function g(e,t,r){e&&(e.texture?e.texture.resize(t,r):e.renderbuffer&&e.renderbuffer.resize(t,r),e.width=t,e.height=r)}r.oes_texture_half_float&&c.push(\"half float\",\"float16\"),r.oes_texture_float&&c.push(\"float\",\"float32\");var y=0,x={};function w(){this.id=y++,x[this.id]=this,this.framebuffer=e.createFramebuffer(),this.width=0,this.height=0,this.colorAttachments=[],this.depthAttachment=null,this.stencilAttachment=null,this.depthStencilAttachment=null}function A(e){e.colorAttachments.forEach(d),d(e.depthAttachment),d(e.stencilAttachment),d(e.depthStencilAttachment)}function k(t){var r=t.framebuffer;_(r,\"must not double destroy framebuffer\"),e.deleteFramebuffer(r),t.framebuffer=null,o.framebufferCount--,delete x[t.id]}function S(t){var r;e.bindFramebuffer(vt,t.framebuffer);var a=t.colorAttachments;for(r=0;r=2,\"invalid shape for framebuffer\"),o=z[0],d=z[1]}else\"radius\"in C&&(o=d=C.radius),\"width\"in C&&(o=C.width),\"height\"in C&&(d=C.height);(\"color\"in C||\"colors\"in C)&&(y=C.color||C.colors,Array.isArray(y)&&_(1===y.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),y||(\"colorCount\"in C&&(O=0|C.colorCount,_(O>0,\"invalid color buffer count\")),\"colorTexture\"in C&&(x=!!C.colorTexture,w=\"rgba4\"),\"colorType\"in C&&(k=C.colorType,x?(_(r.oes_texture_float||!(\"float\"===k||\"float32\"===k),\"you must enable OES_texture_float in order to use floating point framebuffer objects\"),_(r.oes_texture_half_float||!(\"half float\"===k||\"float16\"===k),\"you must enable OES_texture_half_float in order to use 16-bit floating point framebuffer objects\")):\"half float\"===k||\"float16\"===k?(_(r.ext_color_buffer_half_float,\"you must enable EXT_color_buffer_half_float to use 16-bit render buffers\"),w=\"rgba16f\"):\"float\"!==k&&\"float32\"!==k||(_(r.webgl_color_buffer_float,\"you must enable WEBGL_color_buffer_float in order to use 32-bit floating point renderbuffers\"),w=\"rgba32f\"),_.oneOf(k,c,\"invalid color type\")),\"colorFormat\"in C&&(w=C.colorFormat,u.indexOf(w)>=0?x=!0:s.indexOf(w)>=0?x=!1:_.optional((function(){x?_.oneOf(C.colorFormat,u,\"invalid color format for texture\"):_.oneOf(C.colorFormat,s,\"invalid color format for renderbuffer\")})))),(\"depthTexture\"in C||\"depthStencilTexture\"in C)&&(j=!(!C.depthTexture&&!C.depthStencilTexture),_(!j||r.webgl_depth_texture,\"webgl_depth_texture extension not supported\")),\"depth\"in C&&(\"boolean\"==typeof C.depth?p=C.depth:(E=C.depth,g=!1)),\"stencil\"in C&&(\"boolean\"==typeof C.stencil?g=C.stencil:(T=C.stencil,p=!1)),\"depthStencil\"in C&&(\"boolean\"==typeof C.depthStencil?p=g=C.depthStencil:(D=C.depthStencil,p=!1,g=!1))}else o=d=1;var F=null,B=null,V=null,I=null;if(Array.isArray(y))F=y.map(h);else if(y)F=[h(y)];else for(F=new Array(O),a=0;a=0||F[a].renderbuffer&&kt.indexOf(F[a].renderbuffer._renderbuffer.format)>=0,\"framebuffer color attachment \"+a+\" is invalid\"),F[a]&&F[a].texture){var L=At[F[a].texture._texture.format]*_t[F[a].texture._texture.type];null===P?P=L:_(P===L,\"all color attachments much have the same number of bits per pixel.\")}return m(B,o,d),_(!B||B.texture&&6402===B.texture._texture.format||B.renderbuffer&&33189===B.renderbuffer._renderbuffer.format,\"invalid depth attachment for framebuffer object\"),m(V,o,d),_(!V||V.renderbuffer&&36168===V.renderbuffer._renderbuffer.format,\"invalid stencil attachment for framebuffer object\"),m(I,o,d),_(!I||I.texture&&34041===I.texture._texture.format||I.renderbuffer&&34041===I.renderbuffer._renderbuffer.format,\"invalid depth-stencil attachment for framebuffer object\"),A(i),i.width=o,i.height=d,i.colorAttachments=F,i.depthAttachment=B,i.stencilAttachment=V,i.depthStencilAttachment=I,l.color=F.map(v),l.depth=v(B),l.stencil=v(V),l.depthStencil=v(I),l.width=i.width,l.height=i.height,S(i),l}return o.framebufferCount++,l(e,a),t(l,{resize:function(e,t){_(f.next!==i,\"can not resize a framebuffer which is currently in use\");var r=Math.max(0|e,1),n=Math.max(0|t||r,1);if(r===i.width&&n===i.height)return l;for(var a=i.colorAttachments,o=0;o=2,\"invalid shape for framebuffer\"),_(g[0]===g[1],\"cube framebuffer must be square\"),d=g[0]}else\"radius\"in v&&(d=0|v.radius),\"width\"in v?(d=0|v.width,\"height\"in v&&_(v.height===d,\"must be square\")):\"height\"in v&&(d=0|v.height);(\"color\"in v||\"colors\"in v)&&(m=v.color||v.colors,Array.isArray(m)&&_(1===m.length||r.webgl_draw_buffers,\"multiple render targets not supported\")),m||(\"colorCount\"in v&&(b=0|v.colorCount,_(b>0,\"invalid color buffer count\")),\"colorType\"in v&&(_.oneOf(v.colorType,c,\"invalid color type\"),h=v.colorType),\"colorFormat\"in v&&(p=v.colorFormat,_.oneOf(v.colorFormat,u,\"invalid color format for texture\"))),\"depth\"in v&&(l.depth=v.depth),\"stencil\"in v&&(l.stencil=v.stencil),\"depthStencil\"in v&&(l.depthStencil=v.depthStencil)}else d=1;if(m)if(Array.isArray(m))for(s=[],n=0;n0&&(l.depth=i[0].depth,l.stencil=i[0].stencil,l.depthStencil=i[0].depthStencil),i[n]?i[n](l):i[n]=O(l)}return t(o,{width:d,height:d,color:s})}return o(e),t(o,{faces:i,resize:function(e){var t,r=0|e;if(_(r>0&&r<=n.maxCubeMapSize,\"invalid radius for cube fbo\"),r===o.width)return o;var a=o.color;for(t=0;t=0;--e){var t=I[e];t&&t(v,null,0)}a.flush(),m&&m.update()}function ce(){!Q&&I.length>0&&(Q=j.next(Y))}function le(){Q&&(j.cancel(Y),Q=null)}function de(e){e.preventDefault(),o=!0,le(),P.forEach((function(e){e()}))}function me(e){a.getError(),o=!1,f.restore(),k.restore(),x.restore(),S.restore(),O.restore(),E.restore(),A.restore(),m&&m.restore(),T.procs.refresh(),ce(),N.forEach((function(e){e()}))}function pe(e){function r(e,t){var r={},n={};return Object.keys(e).forEach((function(a){var i=e[a];if(D.isDynamic(i))n[a]=D.unbox(i,a);else{if(t&&Array.isArray(i))for(var o=0;o0)return l.call(this,function(e){for(;m.length=0,\"cannot cancel a frame twice\"),I[t]=function e(){var t=dn(I,e);I[t]=I[I.length-1],I.length-=1,I.length<=0&&le()}}}}function ge(){var e=F.viewport,t=F.scissor_box;e[0]=e[1]=t[0]=t[1]=0,v.viewportWidth=v.framebufferWidth=v.drawingBufferWidth=e[2]=t[2]=a.drawingBufferWidth,v.viewportHeight=v.framebufferHeight=v.drawingBufferHeight=e[3]=t[3]=a.drawingBufferHeight}function ye(){v.tick+=1,v.time=we(),ge(),T.procs.poll()}function xe(){S.refresh(),ge(),T.procs.refresh(),m&&m.update()}function we(){return(C()-p)/1e3}xe();var Ae=t(pe,{clear:function(e){if(_(\"object\"==typeof e&&e,\"regl.clear() takes an object as input\"),\"framebuffer\"in e)if(e.framebuffer&&\"framebufferCube\"===e.framebuffer_reglType)for(var r=0;r<6;++r)he(t({framebuffer:e.framebuffer.faces[r]},e),be);else he(e,be);else be(0,e)},prop:D.define.bind(null,1),context:D.define.bind(null,2),this:D.define.bind(null,3),draw:pe({}),buffer:function(e){return x.create(e,34962,!1,!1)},elements:function(e){return w.create(e,!1)},texture:S.create2D,cube:S.createCube,renderbuffer:O.create,framebuffer:E.create,framebufferCube:E.createCube,vao:A.createVAO,attributes:i,frame:ve,on:function(e,t){var r;switch(_.type(t,\"function\",\"listener callback must be a function\"),e){case\"frame\":return ve(t);case\"lost\":r=P;break;case\"restore\":r=N;break;case\"destroy\":r=q;break;default:_.raise(\"invalid event, must be one of frame,lost,restore,destroy\")}return r.push(t),{cancel:function(){for(var e=0;e=0},read:z,destroy:function(){I.length=0,le(),V&&(V.removeEventListener(cn,de),V.removeEventListener(ln,me)),k.clear(),E.clear(),O.clear(),A.clear(),S.clear(),w.clear(),x.clear(),m&&m.clear(),q.forEach((function(e){e()}))},_gl:a,_refresh:xe,poll:function(){ye(),m&&m.update()},now:we,stats:l});return n.onDone(null,Ae),Ae}},\"object\"==typeof r&&void 0!==t?t.exports=o():\"function\"==typeof define&&define.amd?define(o):i.createREGL=o()},\n", + " 413: function _(t,e,a,s,r){s();const n=t(414),_=t(9),o=t(12);class c{constructor(t){this._regl=t,this._map=new Map}_create_texture(t){const e=t.length;let a=0;const s=[];let r=0,_=0;for(let n=0;nc[f+1]&&f++;const s=t[f],n=c[f]+.5*s;let o=.5*s-Math.abs(a-n);f%2==1&&(o=-o),m[e]=Math.round(255*(o-r)/(_-r))}return[[a,u,r,_],this._regl.texture({shape:[l,1,1],data:m,wrapS:\"repeat\",format:\"alpha\",type:\"uint8\",mag:\"linear\",min:\"linear\"})]}_get_key(t){return t.join(\",\")}_get_or_create(t){const e=this._get_key(t);let a=this._map.get(e);if(null==a){const s=(0,n.gcd)(t);if(s>1){t=(0,o.map)(t,(t=>t/s)),a=this._get_or_create(t);const[r,n,_]=a;a=[r,n,s],this._map.set(e,a)}else{const[r,n]=this._create_texture(t);a=[r,n,s],this._map.set(e,a)}}return a}get(t){return t.length%2==1&&(t=(0,_.concat)([t,t])),this._get_or_create(t)}}a.DashCache=c,c.__name__=\"DashCache\"},\n", + " 414: function _(n,t,e,r,o){function u(n,t){let e,r;n>t?(e=n,r=t):(e=t,r=n);let o=e%r;for(;0!=o;)e=r,r=o,o=e%r;return r}r(),e.gcd=function(n){let t=n[0];for(let e=1;e= 0.0 ? 1.0 : -1.0;\\n}\\n\\nvoid main()\\n{\\n if (a_show_curr < 0.5) {\\n // Line segment has non-finite value at one or both ends, do not render.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n const float min_miter_factor_round_join_mesh = sqrt(2.0);\\n\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n vec2 segment_along = normalize(a_point_end - a_point_start); // unit vector.\\n v_segment_length = length(a_point_end - a_point_start);\\n vec2 segment_right = right_vector(segment_along); // unit vector.\\n vec2 xy;\\n\\n bool miter_too_large_start = false;\\n bool miter_too_large_end = false;\\n\\n v_coords.y = a_position.y*halfwidth; // Overwritten later for end points.\\n\\n bool has_start_cap = a_show_prev < 0.5;\\n bool has_end_cap = a_show_next < 0.5;\\n\\n vec2 point_normal_start;\\n float cos_theta_start;\\n float turn_right_start;\\n if (has_start_cap)\\n point_normal_start = segment_right;\\n else {\\n vec2 prev_right = right_vector(normalize(a_point_start - a_point_prev));\\n point_normal_start = normalize(segment_right + prev_right);\\n cos_theta_start = dot(segment_right, point_normal_start); // Always +ve\\n turn_right_start = sign_no_zero(dot(segment_right, a_point_prev - a_point_start));\\n }\\n\\n vec2 point_normal_end;\\n float cos_theta_end;\\n float turn_right_end;\\n if (has_end_cap)\\n point_normal_end = segment_right;\\n else {\\n vec2 next_right = right_vector(normalize(a_point_next - a_point_end));\\n point_normal_end = normalize(segment_right + next_right);\\n cos_theta_end = dot(segment_right, point_normal_end); // Always +ve\\n turn_right_end = sign_no_zero(dot(segment_right, a_point_next - a_point_end));\\n }\\n\\n float miter_factor_start = 1.0 / dot(segment_right, point_normal_start);\\n float miter_factor_end = 1.0 / dot(segment_right, point_normal_end);\\n if (join_type == miter_join) {\\n // If miter too large, use bevel join instead.\\n miter_too_large_start = (miter_factor_start > u_miter_limit);\\n miter_too_large_end = (miter_factor_end > u_miter_limit);\\n }\\n\\n float sign_at_start = -sign(a_position.x); // +ve at segment start, -ve end.\\n vec2 point = sign_at_start > 0.0 ? a_point_start : a_point_end;\\n vec2 adjacent_point =\\n sign_at_start > 0.0 ? (has_start_cap ? a_point_start : a_point_prev)\\n : (has_end_cap ? a_point_end : a_point_next);\\n\\n if ( (has_start_cap && sign_at_start > 0.0) ||\\n (has_end_cap && sign_at_start < 0.0) ) {\\n // Cap.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (cap_type == butt_cap)\\n xy -= sign_at_start*0.5*u_antialias*segment_along;\\n else\\n xy -= sign_at_start*halfwidth*segment_along;\\n }\\n else { // Join.\\n // +ve if turning to right, -ve if to left.\\n float turn_sign = sign_at_start > 0.0 ? turn_right_start : turn_right_end;\\n\\n vec2 adjacent_right = sign_at_start*normalize(right_vector(point - adjacent_point));\\n vec2 point_right = normalize(segment_right + adjacent_right);\\n float miter_factor = sign_at_start > 0.0 ? miter_factor_start : miter_factor_end;\\n bool miter_too_large = sign_at_start > 0.0 ? miter_too_large_start : miter_too_large_end;\\n\\n if (abs(a_position.x) > 1.5) {\\n // Outer point, meets prev/next segment.\\n float factor; // multiplied by halfwidth...\\n\\n if (join_type == bevel_join || (join_type == miter_join && miter_too_large))\\n factor = 1.0 / miter_factor; // cos_theta.\\n else if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh)\\n factor = 1.0;\\n else // miter, or round (small angle only).\\n factor = miter_factor;\\n\\n xy = point - point_right*(halfwidth*turn_sign*factor);\\n v_coords.y = turn_sign*halfwidth*factor / miter_factor;\\n }\\n else if (turn_sign*a_position.y < 0.0) {\\n // Inner point, meets prev/next segment.\\n float len = halfwidth*miter_factor;\\n float segment_len = v_segment_length;\\n float adjacent_len = distance(point, adjacent_point);\\n\\n if (len <= min(segment_len, adjacent_len))\\n // Normal behaviour.\\n xy = point - point_right*(len*a_position.y);\\n else\\n // For short wide line segments the inner point using the above\\n // calculation can be outside of the line. Here clipping it.\\n xy = point + segment_right*(halfwidth*turn_sign);\\n }\\n else {\\n // Point along outside edge.\\n xy = point - segment_right*(halfwidth*a_position.y);\\n if (join_type == round_join &&\\n miter_factor > min_miter_factor_round_join_mesh) {\\n xy = line_intersection(xy, segment_along,\\n point - turn_sign*point_right*halfwidth,\\n right_vector(point_right));\\n }\\n }\\n }\\n\\n vec2 pos = xy + 0.5; // Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // in 0..1\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n\\n v_coords.x = dot(xy - a_point_start, segment_along);\\n v_flags = float(int(has_start_cap) +\\n 2*int(has_end_cap) +\\n 4*int(miter_too_large_start) +\\n 8*int(miter_too_large_end));\\n v_cos_theta_turn_right_start = cos_theta_start*turn_right_start;\\n v_cos_theta_turn_right_end = cos_theta_end*turn_right_end;\\n\\n#ifdef DASHED\\n v_length_so_far = a_length_so_far;\\n#endif\\n}\\n\"},\n", + " 416: function _(n,t,a,i,e){i();a.default=\"\\nprecision mediump float;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\nuniform float u_linewidth;\\nuniform float u_antialias;\\nuniform float u_line_join;\\nuniform float u_line_cap;\\nuniform vec4 u_line_color;\\n#ifdef DASHED\\nuniform sampler2D u_dash_tex;\\nuniform vec4 u_dash_tex_info;\\nuniform float u_dash_scale;\\nuniform float u_dash_offset;\\n#endif\\n\\nvarying float v_segment_length;\\nvarying vec2 v_coords;\\nvarying float v_flags;\\nvarying float v_cos_theta_turn_right_start;\\nvarying float v_cos_theta_turn_right_end;\\n#ifdef DASHED\\nvarying float v_length_so_far;\\n#endif\\n\\nfloat cross_z(in vec2 v0, in vec2 v1)\\n{\\n return v0.x*v1.y - v0.y*v1.x;\\n}\\n\\nfloat point_line_side(in vec2 point, in vec2 start, in vec2 end)\\n{\\n // +ve if point to right of line.\\n // Alternatively could do dot product with right_vector.\\n return cross_z(point - start, end - start);\\n}\\n\\nfloat point_line_distance(in vec2 point, in vec2 start, in vec2 end)\\n{\\n return point_line_side(point, start, end) / distance(start, end);\\n}\\n\\nvec2 right_vector(in vec2 v)\\n{\\n return vec2(v.y, -v.x);\\n}\\n\\nfloat bevel_join_distance(in float sign_start, in float halfwidth)\\n{\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n float distance_along = sign_start > 0.0 ? 0.0 : v_segment_length;\\n\\n // In v_coords reference frame (x is along segment, y across).\\n vec2 line_start = vec2(distance_along, halfwidth*turn_right);\\n float sin_alpha = cos_theta;\\n float cos_alpha = sqrt(1.0 - sin_alpha*sin_alpha);\\n vec2 line_along = vec2(-sign_start*turn_right*sin_alpha, -cos_alpha);\\n\\n return halfwidth + sign_start*point_line_distance(\\n v_coords, line_start, line_start+line_along);\\n}\\n\\nfloat cap(in int cap_type, in float x, in float y)\\n{\\n // x is distance along segment in direction away from end of segment,\\n // y is distance across segment.\\n if (cap_type == butt_cap)\\n return max(0.5*u_linewidth - x, abs(y));\\n else if (cap_type == square_cap)\\n return max(-x, abs(y));\\n else // cap_type == round_cap\\n return distance(vec2(min(x, 0.0), y), vec2(0.0, 0.0));\\n}\\n\\nfloat distance_to_alpha(in float dist)\\n{\\n return 1.0 - smoothstep(0.5*(u_linewidth - u_antialias),\\n 0.5*(u_linewidth + u_antialias), dist);\\n}\\n\\n#ifdef DASHED\\nfloat dash_distance(in float x)\\n{\\n // x is in direction of v_coords.x, i.e. along segment.\\n float tex_length = u_dash_tex_info.x;\\n float tex_offset = u_dash_tex_info.y;\\n float tex_dist_min = u_dash_tex_info.z;\\n float tex_dist_max = u_dash_tex_info.w;\\n\\n // Apply offset.\\n x += v_length_so_far - u_dash_scale*tex_offset + u_dash_offset;\\n\\n // Interpolate within texture to obtain distance to dash.\\n float dist = texture2D(u_dash_tex,\\n vec2(x / (tex_length*u_dash_scale), 0.0)).a;\\n\\n // Scale distance within min and max limits.\\n dist = tex_dist_min + dist*(tex_dist_max - tex_dist_min);\\n\\n return u_dash_scale*dist;\\n}\\n\\nfloat clip_dash_distance(in float x, in float offset, in float sign_along)\\n{\\n // Return clipped dash distance, sign_along is +1.0 if looking forward\\n // into next segment and -1.0 if looking backward into previous segment.\\n float half_antialias = 0.5*u_antialias;\\n\\n if (sign_along*x > half_antialias) {\\n // Outside antialias region, use usual dash distance.\\n return dash_distance(offset + x);\\n }\\n else {\\n // Inside antialias region.\\n // Dash distance at edge of antialias region clipped to half_antialias.\\n float edge_dist = min(dash_distance(offset + sign_along*half_antialias), half_antialias);\\n\\n // Physical distance from dash distance at edge of antialias region.\\n return edge_dist + sign_along*x - half_antialias;\\n }\\n}\\n\\nmat2 rotation_matrix(in float sign_start)\\n{\\n // Rotation matrix for v_coords from this segment to prev or next segment.\\n float cos_theta_turn_right = sign_start > 0.0 ? v_cos_theta_turn_right_start\\n : v_cos_theta_turn_right_end;\\n float cos_theta = abs(cos_theta_turn_right);\\n float turn_right = sign(cos_theta_turn_right);\\n\\n float sin_theta = sqrt(1.0 - cos_theta*cos_theta)*sign_start*turn_right;\\n float cos_2theta = 2.0*cos_theta*cos_theta - 1.0;\\n float sin_2theta = 2.0*sin_theta*cos_theta;\\n return mat2(cos_2theta, -sin_2theta, sin_2theta, cos_2theta);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int join_type = int(u_line_join + 0.5);\\n int cap_type = int(u_line_cap + 0.5);\\n float halfwidth = 0.5*(u_linewidth + u_antialias);\\n float half_antialias = 0.5*u_antialias;\\n\\n // Extract flags.\\n int flags = int(v_flags + 0.5);\\n bool miter_too_large_end = (flags / 8 > 0);\\n flags -= 8*int(miter_too_large_end);\\n bool miter_too_large_start = (flags / 4 > 0);\\n flags -= 4*int(miter_too_large_start);\\n bool has_end_cap = (flags / 2 > 0);\\n flags -= 2*int(has_end_cap);\\n bool has_start_cap = flags > 0;\\n\\n float dist = v_coords.y; // For straight segment, and miter join.\\n\\n // Along-segment coords with respect to end of segment, +ve inside segment\\n // so equivalent to v_coords.x at start of segment.\\n float end_coords_x = v_segment_length - v_coords.x;\\n\\n if (v_coords.x <= half_antialias) {\\n // At start of segment, either cap or join.\\n if (has_start_cap)\\n dist = cap(cap_type, v_coords.x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(0.0, 0.0));\\n else if (join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_start))\\n dist = max(abs(dist), bevel_join_distance(1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n else if (end_coords_x <= half_antialias) {\\n // At end of segment, either cap or join.\\n if (has_end_cap)\\n dist = cap(cap_type, end_coords_x, v_coords.y);\\n else if (join_type == round_join)\\n dist = distance(v_coords, vec2(v_segment_length, 0));\\n else if ((join_type == bevel_join ||\\n (join_type == miter_join && miter_too_large_end)))\\n dist = max(abs(dist), bevel_join_distance(-1.0, halfwidth));\\n // else a miter join which uses the default dist calculation.\\n }\\n\\n float alpha = distance_to_alpha(abs(dist));\\n\\n#ifdef DASHED\\n if (u_dash_tex_info.x >= 0.0) {\\n // Dashes in straight segments (outside of joins) are easily calculated.\\n dist = dash_distance(v_coords.x);\\n\\n if (!has_start_cap && cap_type == butt_cap) {\\n if (v_coords.x < half_antialias) {\\n // Outer of start join rendered solid color or not at all\\n // depending on whether corner point is in dash or gap, with\\n // antialiased ends.\\n if (dash_distance(0.0) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -v_coords.x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (v_coords.x > -half_antialias) {\\n // Consider antialias region of dash after start region.\\n float edge_dist = min(dash_distance(half_antialias), half_antialias);\\n dist = max(dist, edge_dist + v_coords.x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 prev_coords = rotation_matrix(1.0)*v_coords;\\n\\n if (abs(prev_coords.y) < halfwidth && prev_coords.x < half_antialias) {\\n // Extend dashes across from end of previous segment, with antialiased end.\\n float new_dist = clip_dash_distance(prev_coords.x, 0.0, -1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(prev_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n if (!has_end_cap && cap_type == butt_cap) {\\n if (end_coords_x < half_antialias) {\\n // Similar for end join.\\n if (dash_distance(v_segment_length) > 0.0) {\\n // Corner is solid color.\\n dist = max(dist, min(half_antialias, -end_coords_x));\\n // Avoid visible antialiasing band between corner and dash.\\n dist = max(dist, dash_distance(v_segment_length - half_antialias));\\n }\\n else {\\n // Use large negative value so corner not colored.\\n dist = -halfwidth;\\n\\n if (end_coords_x > -half_antialias) {\\n // Consider antialias region of dash before end region.\\n float edge_dist = min(dash_distance(v_segment_length - half_antialias),\\n half_antialias);\\n dist = max(dist, edge_dist + end_coords_x - half_antialias);\\n }\\n }\\n }\\n\\n vec2 next_coords = rotation_matrix(-1.0)*(v_coords - vec2(v_segment_length, 0.0));\\n\\n if (abs(next_coords.y) < halfwidth && next_coords.x > -half_antialias) {\\n // Extend dashes across from next segment, with antialiased end.\\n float new_dist = clip_dash_distance(next_coords.x, v_segment_length, 1.0);\\n new_dist = min(new_dist, 0.5*u_linewidth - abs(next_coords.y));\\n dist = max(dist, new_dist);\\n }\\n }\\n\\n dist = cap(cap_type, dist, v_coords.y);\\n\\n float dash_alpha = distance_to_alpha(dist);\\n alpha = min(alpha, dash_alpha);\\n }\\n#endif\\n\\n alpha = u_line_color.a*alpha;\\n gl_FragColor = vec4(u_line_color.rgb*alpha, alpha); // Premultiplied alpha.\\n}\\n\"},\n", + " 417: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nattribute vec2 a_position;\\nattribute vec2 a_center;\\nattribute float a_width;\\nattribute float a_height;\\nattribute float a_angle; // In radians\\nattribute float a_linewidth;\\nattribute vec4 a_line_color;\\nattribute vec4 a_fill_color;\\nattribute float a_line_cap;\\nattribute float a_line_join;\\nattribute float a_show;\\n#ifdef HATCH\\nattribute float a_hatch_pattern;\\nattribute float a_hatch_scale;\\nattribute float a_hatch_weight;\\nattribute vec4 a_hatch_color;\\n#endif\\n\\nuniform float u_pixel_ratio;\\nuniform vec2 u_canvas_size;\\nuniform float u_antialias;\\nuniform float u_size_hint;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size; // 2D size for rects compared to 1D for markers.\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\nvoid main()\\n{\\n if (a_show < 0.5) {\\n // Do not show this rect.\\n gl_Position = vec4(-2.0, -2.0, 0.0, 1.0);\\n return;\\n }\\n\\n v_size = vec2(a_width, a_height);\\n v_linewidth = a_linewidth;\\n v_line_color = a_line_color;\\n v_fill_color = a_fill_color;\\n v_line_cap = a_line_cap;\\n v_line_join = a_line_join;\\n\\n if (v_linewidth < 1.0) {\\n // Linewidth less than 1 is implemented as 1 but with reduced alpha.\\n v_line_color.a *= v_linewidth;\\n v_linewidth = 1.0;\\n }\\n\\n#ifdef HATCH\\n v_hatch_pattern = a_hatch_pattern;\\n v_hatch_scale = a_hatch_scale;\\n v_hatch_weight = a_hatch_weight;\\n v_hatch_color = a_hatch_color;\\n#endif\\n\\n vec2 enclosing_size;\\n // Need extra size of (v_linewidth+u_antialias) if edge of marker parallel to\\n // edge of bounding box. If symmetric spike towards edge then multiply by\\n // 1/cos(theta) where theta is angle between spike and bbox edges.\\n int size_hint = int(u_size_hint + 0.5);\\n if (size_hint == 1) // Dash\\n enclosing_size = vec2(v_size.x + v_linewidth + u_antialias,\\n v_linewidth + u_antialias);\\n else if (size_hint == 2) // Dot\\n enclosing_size = 0.25*v_size + u_antialias;\\n else if (size_hint == 3) // Diamond\\n enclosing_size = vec2(v_size.x*(2.0/3.0) + (v_linewidth + u_antialias)*1.20185,\\n v_size.y + (v_linewidth + u_antialias)*1.80278);\\n else if (size_hint == 4) // Hex\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(2.0/sqrt(3.0), 1.0);\\n else if (size_hint == 5) // Square pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*3.1;\\n else if (size_hint == 6) // Triangle\\n enclosing_size = vec2(v_size.x + (v_linewidth + u_antialias)*sqrt(3.0),\\n v_size.y*(2.0/sqrt(3.0)) + (v_linewidth + u_antialias)*2.0);\\n else if (size_hint == 7) // Triangle pin\\n enclosing_size = v_size + (v_linewidth + u_antialias)*vec2(4.8, 6.0);\\n else if (size_hint == 8) // Star\\n enclosing_size = vec2(v_size.x*0.95106 + (v_linewidth + u_antialias)*3.0,\\n v_size.y + (v_linewidth + u_antialias)*3.2);\\n else\\n enclosing_size = v_size + v_linewidth + u_antialias;\\n\\n // Coordinates in rotated frame with respect to center of marker, used for\\n // distance functions in fragment shader.\\n v_coords = a_position*enclosing_size;\\n\\n float c = cos(-a_angle);\\n float s = sin(-a_angle);\\n mat2 rotation = mat2(c, -s, s, c);\\n\\n vec2 pos = a_center + rotation*v_coords;\\n#ifdef HATCH\\n // Coordinates for hatching in unrotated frame of reference.\\n v_hatch_coords = pos - 0.5;\\n#endif\\n pos += 0.5; // Make up for Bokeh's offset.\\n pos /= u_canvas_size / u_pixel_ratio; // 0 to 1.\\n gl_Position = vec4(2.0*pos.x - 1.0, 1.0 - 2.0*pos.y, 0.0, 1.0);\\n}\\n\"},\n", + " 418: function _(n,i,e,t,a){t();e.default=\"\\nprecision mediump float;\\n\\nconst float SQRT2 = sqrt(2.0);\\nconst float SQRT3 = sqrt(3.0);\\nconst float PI = 3.14159265358979323846;\\n\\nconst int butt_cap = 0;\\nconst int round_cap = 1;\\nconst int square_cap = 2;\\n\\nconst int miter_join = 0;\\nconst int round_join = 1;\\nconst int bevel_join = 2;\\n\\n#ifdef HATCH\\nconst int hatch_dot = 1;\\nconst int hatch_ring = 2;\\nconst int hatch_horizontal_line = 3;\\nconst int hatch_vertical_line = 4;\\nconst int hatch_cross = 5;\\nconst int hatch_horizontal_dash = 6;\\nconst int hatch_vertical_dash = 7;\\nconst int hatch_spiral = 8;\\nconst int hatch_right_diagonal_line = 9;\\nconst int hatch_left_diagonal_line = 10;\\nconst int hatch_diagonal_cross = 11;\\nconst int hatch_right_diagonal_dash = 12;\\nconst int hatch_left_diagonal_dash = 13;\\nconst int hatch_horizontal_wave = 14;\\nconst int hatch_vertical_wave = 15;\\nconst int hatch_criss_cross = 16;\\n#endif\\n\\nuniform float u_antialias;\\n\\nvarying float v_linewidth;\\nvarying vec2 v_size;\\nvarying vec4 v_line_color;\\nvarying vec4 v_fill_color;\\nvarying float v_line_cap;\\nvarying float v_line_join;\\nvarying vec2 v_coords;\\n#ifdef HATCH\\nvarying float v_hatch_pattern;\\nvarying float v_hatch_scale;\\nvarying float v_hatch_weight;\\nvarying vec4 v_hatch_color;\\nvarying vec2 v_hatch_coords;\\n#endif\\n\\n// Lines within the marker (dot, cross, x and y) are added at the end as they are\\n// on top of the fill rather than astride it.\\n#if defined(USE_CIRCLE_DOT) || defined(USE_DIAMOND_DOT) || defined(USE_DOT) || defined(USE_HEX_DOT) || defined(USE_SQUARE_DOT) || defined(USE_STAR_DOT) || defined(USE_TRIANGLE_DOT)\\n #define APPEND_DOT\\n#endif\\n\\n#if defined(USE_CIRCLE_CROSS) || defined(USE_SQUARE_CROSS)\\n #define APPEND_CROSS\\n#endif\\n\\n#ifdef USE_DIAMOND_CROSS\\n #define APPEND_CROSS_2\\n#endif\\n\\n#ifdef USE_CIRCLE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (0.5*v_size.x)\\n#endif\\n\\n#ifdef USE_SQUARE_X\\n #define APPEND_X\\n #define APPEND_X_LEN (v_size.x/SQRT2)\\n#endif\\n\\n#ifdef USE_CIRCLE_Y\\n #define APPEND_Y\\n#endif\\n\\n#if defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_DASH) || defined(USE_DOT) || defined(USE_X) || defined(USE_Y)\\n // No fill.\\n #define LINE_ONLY\\n#endif\\n\\n#if defined(LINE_ONLY) || defined(APPEND_CROSS) || defined(APPEND_CROSS_2) || defined(APPEND_X) || defined(APPEND_Y)\\nfloat end_cap_distance(in vec2 p, in vec2 end_point, in vec2 unit_direction, in int line_cap)\\n{\\n vec2 offset = p - end_point;\\n if (line_cap == butt_cap)\\n return dot(offset, unit_direction) + 0.5*v_linewidth;\\n else if (line_cap == square_cap)\\n return dot(offset, unit_direction);\\n else if (line_cap == round_cap && dot(offset, unit_direction) > 0.0)\\n return length(offset);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if !(defined(LINE_ONLY) || defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN))\\n// For line join at a vec2 corner where 2 line segments meet, consider bevel points which are the 2\\n// points obtained by moving half a linewidth away from the corner point in the directions normal to\\n// the line segments. The line through these points is the bevel line, characterised by a vec2\\n// unit_normal and offset distance from the corner point. Edge of bevel join straddles this line,\\n// round join occurs outside of this line centred on the corner point. In general\\n// offset = (linewidth/2)*sin(alpha/2)\\n// where alpha is the angle between the 2 line segments at the corner.\\nfloat line_join_distance_no_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join)\\n{\\n // Simplified version of line_join_distance ignoring miter which most markers do implicitly\\n // as they are composed of straight line segments.\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n // Default is outside of line and should be -0.5*(v_linewidth+u_antialias) or less,\\n // so here avoid the multiplication.\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE_PIN) || defined(USE_TRIANGLE_PIN)\\n// Line join distance including miter but only one-sided check as assuming use of symmetry in\\n// calling function.\\nfloat line_join_distance_incl_miter(\\n in vec2 p, in vec2 corner, in vec2 unit_normal, in float offset, in int line_join,\\n vec2 miter_unit_normal)\\n{\\n float dist_outside = dot((p - corner), unit_normal) - offset;\\n\\n if (line_join == miter_join && dist_outside > 0.0)\\n return dot((p - corner), miter_unit_normal);\\n else if (line_join == bevel_join && dist_outside > -0.5*u_antialias)\\n return dist_outside + 0.5*v_linewidth;\\n else if (dist_outside > 0.0) // round_join\\n return distance(p, corner);\\n else\\n return -v_linewidth-u_antialias;\\n}\\n#endif\\n\\n#if defined(APPEND_CROSS) || defined(APPEND_X) || defined(USE_ASTERISK) || defined(USE_CROSS) || defined(USE_X)\\nfloat one_cross(in vec2 p, in int line_cap, in float len)\\n{\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#ifdef APPEND_CROSS_2\\nfloat one_cross_2(in vec2 p, in int line_cap, in vec2 lengths)\\n{\\n // Cross with different length in x and y directions.\\n p = abs(p);\\n bool switch_xy = (p.y > p.x);\\n p = switch_xy ? p.yx : p.xy;\\n float len = switch_xy ? lengths.y : lengths.x;\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(len, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(APPEND_Y) || defined(USE_Y)\\nfloat one_y(in vec2 p, in int line_cap, in float len)\\n{\\n p = vec2(abs(p.x), -p.y);\\n\\n // End point of line to right is (1/2, 1/3)*len*SQRT3.\\n // Unit vector along line is (1/2, 1/3)*k where k = 6/SQRT13.\\n const float k = 6.0/sqrt(13.0);\\n vec2 unit_along = vec2(0.5*k, k/3.0);\\n vec2 end_point = vec2(0.5*len*SQRT3, len*SQRT3/3.0);\\n float dist = max(abs(dot(p, vec2(-unit_along.y, unit_along.x))),\\n end_cap_distance(p, end_point, unit_along, line_cap));\\n\\n if (p.y < 0.0) {\\n // Vertical line.\\n float vert_dist = max(p.x,\\n end_cap_distance(p, vec2(0.0, -len), vec2(0.0, -1.0), line_cap));\\n dist = min(dist, vert_dist);\\n }\\n return dist;\\n}\\n#endif\\n\\n// One marker_distance function per marker type.\\n// Distance is zero on edge of marker, +ve outside and -ve inside.\\n\\n#ifdef USE_ASTERISK\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n vec2 p_diag = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n float len = 0.5*v_size.x;\\n return min(one_cross(p, line_cap, len), // cross\\n one_cross(p_diag, line_cap, len)); // x\\n}\\n#endif\\n\\n#if defined(USE_CIRCLE) || defined(USE_CIRCLE_CROSS) || defined(USE_CIRCLE_DOT) || defined(USE_CIRCLE_X) || defined(USE_CIRCLE_Y)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return length(p) - 0.5*v_size.x;\\n}\\n#endif\\n\\n#ifdef USE_CROSS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_DASH\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n p = abs(p);\\n float dist = p.y;\\n float end_dist = end_cap_distance(p, vec2(0.5*v_size.x, 0.0), vec2(1.0, 0.0), line_cap);\\n return max(dist, end_dist);\\n}\\n#endif\\n\\n#if defined(USE_DIAMOND) || defined(USE_DIAMOND_CROSS) || defined(USE_DIAMOND_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider +ve quadrant, the 2 end points are (2r/3, 0) and (0, r)\\n // where r = radius = v_size.x/2.\\n // Line has outward-facing unit normal vec2(1, 2/3)/k where k = SQRT13/3\\n // hence vec2(3, 2)/SQRT13, and distance from origin of 2r/(3k) = 2r/SQRT13.\\n p = abs(p);\\n float r = 0.5*v_size.x;\\n const float SQRT13 = sqrt(13.0);\\n float dist = dot(p, vec2(3.0, 2.0))/SQRT13 - 2.0*r/SQRT13;\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, r), vec2(0.0, 1.0), v_linewidth/SQRT13, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r*2.0/3.0, 0.0), vec2(1.0, 0.0), v_linewidth*(1.5/SQRT13), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_DOT\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Dot is always appended.\\n return v_linewidth+u_antialias;\\n}\\n#endif\\n\\n#if defined(USE_HEX) || defined(USE_HEX_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // A regular hexagon has v_size.x == v.size_y = r where r is the length of\\n // each of the 3 sides of the 6 equilateral triangles that comprise the hex.\\n // Only consider +ve quadrant, the 3 corners are at (0, h), (rx/2, h), (rx, 0)\\n // where rx = 0.5*v_size.x, ry = 0.5*v_size.y and h = ry*SQRT3/2.\\n // Sloping line has outward normal vec2(h, rx/2). Length of this is\\n // len = sqrt(h**2 + rx**2/4) to give unit normal (h, rx/2)/len and distance\\n // from origin of this line is rx*h/len.\\n p = abs(p);\\n float rx = v_size.x/2.0;\\n float h = v_size.y*(SQRT3/4.0);\\n float len_normal = sqrt(h*h + 0.25*rx*rx);\\n vec2 unit_normal = vec2(h, 0.5*rx) / len_normal;\\n float dist = max(dot(p, unit_normal) - rx*h/len_normal, // Distance from sloping line.\\n p.y - h); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(rx, 0.0), vec2(1.0, 0.0), 0.5*v_linewidth*unit_normal.x, line_join));\\n\\n unit_normal = normalize(unit_normal + vec2(0.0, 1.0)); // At (rx/2, h) corner.\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.5*rx, h), unit_normal, 0.5*v_linewidth*unit_normal.y, line_join));\\n }\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_PLUS\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // Only need to consider one octant, the +ve quadrant with x >= y.\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n\\n // 3 corners are (r, 0), (r, 3r/8) and (3r/8, 3r/8).\\n float r = 0.5*v_size.x;\\n p = p - vec2(r, 0.375*r); // Distance with respect to outside corner\\n float dist = max(p.x, p.y);\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n // Inside corner\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(-5.0*r/8.0, 0.0), vec2(-1.0/SQRT2, -1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_SQUARE) || defined(USE_SQUARE_CROSS) || defined(USE_SQUARE_DOT) || defined(USE_SQUARE_X)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n vec2 p2 = abs(p) - v_size/2.0; // Offset from corner\\n float dist = max(p2.x, p2.y);\\n\\n if (line_join != miter_join)\\n dist = max(dist, line_join_distance_no_miter(\\n p2, vec2(0.0, 0.0), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth/(2.0*SQRT2), line_join));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_SQUARE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = abs(p);\\n p = (p.y > p.x) ? p.yx : p.xy;\\n // p is in octant between y=0 and y=x.\\n // Quadratic bezier curve passes through (r, r), (11r/16, 0) and (r, -r).\\n // Circular arc that passes through the same points has center at\\n // x = r + 231r/160 = 2.44275r and y = 0 and hence radius is\\n // x - 11r/16 = 1.75626 precisely.\\n float r = 0.5*v_size.x;\\n float center_x = r*2.44375;\\n float radius = r*1.75626;\\n float dist = radius - distance(p, vec2(center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8/5) - pi/4)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(r, r), vec2(1.0/SQRT2, 1.0/SQRT2), v_linewidth*0.1124297533493792, line_join,\\n vec2(8.0/sqrt(89.0), -5.0/sqrt(89.0))));\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_STAR) || defined(USE_STAR_DOT)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n const float SQRT5 = sqrt(5.0);\\n const float COS72 = 0.25*(SQRT5 - 1.0);\\n const float SIN72 = sqrt((5.0+SQRT5) / 8.0);\\n\\n float angle = atan(p.x, p.y); // In range -pi to +pi clockwise from +y direction.\\n angle = mod(angle, 0.4*PI) - 0.2*PI; // In range -pi/5 to +pi/5 clockwise from +y direction.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in pi/10 (36 degree) sector.\\n\\n // 2 corners are at (r, 0) and (r-a*SIN72, a*COS72) where a = r sqrt(5-2*sqrt(5)).\\n // Line has outward-facing unit normal vec2(COS72, SIN72) and distance from\\n // origin of dot(vec2(r, 0), vec2(COS72, SIN72)) = r*COS72\\n float r = 0.5*v_size.x;\\n float a = r*sqrt(5.0 - 2.0*SQRT5);\\n float dist = dot(p, vec2(COS72, SIN72)) - r*COS72;\\n\\n if (line_join != miter_join) {\\n // Outside corner\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, 0.0), vec2(1.0, 0.0), v_linewidth*(0.5*COS72), line_join));\\n\\n // Inside corner\\n const float COS36 = sqrt(0.5 + COS72/2.0);\\n const float SIN36 = sqrt(0.5 - COS72/2.0);\\n dist = min(dist, -line_join_distance_no_miter(\\n p, vec2(r-a*SIN72, a*COS72), vec2(-COS36, -SIN36), v_linewidth*(0.5*COS36), line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#if defined(USE_TRIANGLE) || defined(USE_TRIANGLE_DOT) || defined(USE_INVERTED_TRIANGLE)\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n // For normal triangle 3 corners are at (-r, a), (r, a), (0, a-h)=(0, -2h/3)\\n // given r = radius = v_size.x/2, h = SQRT3*r, a = h/3.\\n // Sloping line has outward-facing unit normal vec2(h, -r)/2r = vec2(SQRT3, -1)/2\\n // and distance from origin of a. Horizontal line has outward-facing unit normal\\n // vec2(0, 1) and distance from origin of a.\\n float r = 0.5*v_size.x;\\n float a = r*SQRT3/3.0;\\n\\n // Only need to consider +ve x.\\n#ifdef USE_INVERTED_TRIANGLE\\n p = vec2(abs(p.x), -p.y);\\n#else\\n p = vec2(abs(p.x), p.y);\\n#endif\\n\\n float dist = max(0.5*dot(p, vec2(SQRT3, -1.0)) - a, // Distance from sloping line.\\n p.y - a); // Distance from horizontal line.\\n\\n if (line_join != miter_join) {\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(0.0, -(2.0/SQRT3)*r), vec2(0.0, -1.0), v_linewidth*0.25, line_join));\\n\\n dist = max(dist, line_join_distance_no_miter(\\n p, vec2(r, a), vec2(SQRT3/2.0, 0.5), v_linewidth*0.25, line_join));\\n }\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_TRIANGLE_PIN\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n float angle = atan(p.x, -p.y); // In range -pi to +pi.\\n angle = mod(angle, PI*2.0/3.0) - PI/3.0; // In range -pi/3 to pi/3.\\n p = length(p)*vec2(cos(angle), abs(sin(angle))); // (x,y) in range 0 to pi/3.\\n // Quadratic bezier curve passes through (a, r), ((a+b)/2, 0) and (a, -r) where\\n // a = r/SQRT3, b = 3a/8 = r SQRT3/8. Circular arc that passes through the same points has\\n // center at (a+x, 0) and radius x+c where c = (a-b)/2 and x = (r**2 - c**2) / (2c).\\n // Ignore r factor until the end so can use const.\\n const float a = 1.0/SQRT3;\\n const float b = SQRT3/8.0;\\n const float c = (a-b)/2.0;\\n const float x = (1.0 - c*c) / (2.0*c);\\n const float center_x = x + a;\\n const float radius = x + c;\\n float r = 0.5*v_size.x;\\n float dist = r*radius - distance(p, vec2(r*center_x, 0.0));\\n\\n // Magic number is 0.5*sin(atan(8*sqrt(3)/5) - pi/3)\\n dist = max(dist, line_join_distance_incl_miter(\\n p, vec2(a*r, r), vec2(0.5, 0.5*SQRT3), v_linewidth*0.0881844526878324, line_join,\\n vec2(8.0*SQRT3, -5.0)/sqrt(217.0)));\\n\\n return dist;\\n}\\n#endif\\n\\n#ifdef USE_X\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n p = vec2((p.x + p.y)/SQRT2, (p.x - p.y)/SQRT2);\\n return one_cross(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n#ifdef USE_Y\\nfloat marker_distance(in vec2 p, in int line_cap, in int line_join)\\n{\\n // Assuming v_size.x == v.size_y\\n return one_y(p, line_cap, 0.5*v_size.x);\\n}\\n#endif\\n\\n// Convert distance from edge of marker to fraction in range 0 to 1, depending\\n// on antialiasing width.\\nfloat distance_to_fraction(in float dist)\\n{\\n return 1.0 - smoothstep(-0.5*u_antialias, 0.5*u_antialias, dist);\\n}\\n\\n// Return fraction from 0 (no fill color) to 1 (full fill color).\\nfloat fill_fraction(in float dist)\\n{\\n return distance_to_fraction(dist);\\n}\\n\\n// Return fraction in range 0 (no line color) to 1 (full line color).\\nfloat line_fraction(in float dist)\\n{\\n return distance_to_fraction(abs(dist) - 0.5*v_linewidth);\\n}\\n\\n// Return fraction (in range 0 to 1) of a color, with premultiplied alpha.\\nvec4 fractional_color(in vec4 color, in float fraction)\\n{\\n color.a *= fraction;\\n color.rgb *= color.a;\\n return color;\\n}\\n\\n// Blend colors that have premultiplied alpha.\\nvec4 blend_colors(in vec4 src, in vec4 dest)\\n{\\n return (1.0 - src.a)*dest + src;\\n}\\n\\n#ifdef APPEND_DOT\\nfloat dot_fraction(in vec2 p)\\n{\\n // Assuming v_size.x == v_size.y\\n float radius = 0.125*v_size.x;\\n float dot_distance = max(length(p) - radius, -0.5*u_antialias);\\n return fill_fraction(dot_distance);\\n}\\n#endif\\n\\n#ifdef HATCH\\n// Wrap coordinate(s) by removing integer part to give distance from center of\\n// repeat, in the range -0.5 to +0.5.\\nfloat wrap(in float x)\\n{\\n return fract(x) - 0.5;\\n}\\n\\nvec2 wrap(in vec2 xy)\\n{\\n return fract(xy) - 0.5;\\n}\\n\\n// Return fraction from 0 (no hatch color) to 1 (full hatch color).\\nfloat hatch_fraction(in vec2 coords, in int hatch_pattern)\\n{\\n float scale = v_hatch_scale; // Hatch repeat distance.\\n\\n // Coordinates and linewidth/halfwidth are scaled to hatch repeat distance.\\n coords = coords / scale;\\n float halfwidth = 0.5*v_hatch_weight / scale; // Half the hatch linewidth.\\n\\n // Default is to return fraction of zero, i.e. no pattern.\\n float dist = u_antialias;\\n\\n if (hatch_pattern == hatch_dot) {\\n const float dot_radius = 0.25;\\n dist = length(wrap(coords)) - dot_radius;\\n }\\n else if (hatch_pattern == hatch_ring) {\\n const float ring_radius = 0.25;\\n dist = abs(length(wrap(coords)) - ring_radius) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_line) {\\n dist = abs(wrap(coords.y)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_line) {\\n dist = abs(wrap(coords.x)) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_cross) {\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_dash) {\\n // Dashes have square caps.\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.y)),\\n abs(wrap(coords.x) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_dash) {\\n const float halflength = 0.25;\\n dist = max(abs(wrap(coords.x)),\\n abs(wrap(coords.y) + 0.25) - halflength) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_spiral) {\\n vec2 wrap2 = wrap(coords);\\n float angle = wrap(atan(wrap2.y, wrap2.x) / (2.0*PI));\\n // Canvas spiral radius increases by scale*pi/15 each rotation.\\n const float dr = PI/15.0;\\n float radius = length(wrap2);\\n // At any angle, spiral lines are equally spaced dr apart.\\n // Find distance to nearest of these lines.\\n float frac = fract((radius - dr*angle) / dr); // 0 to 1.\\n dist = dr*(abs(frac - 0.5));\\n dist = min(dist, radius) - halfwidth; // Consider center point also.\\n }\\n else if (hatch_pattern == hatch_right_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x + coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_line) {\\n dist = abs(wrap(2.0*coords.x - coords.y))/sqrt(5.0) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_diagonal_cross) {\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n dist = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_right_diagonal_dash) {\\n float across = coords.x + coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x - coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_left_diagonal_dash) {\\n float across = coords.x - coords.y + 0.5;\\n dist = abs(wrap(across)) / SQRT2; // Distance to nearest solid line.\\n\\n across = floor(across); // Offset for dash.\\n float along = wrap(0.5*(coords.x + coords.y + across));\\n const float halflength = 0.25;\\n along = abs(along) - halflength; // Distance along line.\\n\\n dist = max(dist, along) - halfwidth;\\n }\\n else if (hatch_pattern == hatch_horizontal_wave) {\\n float wrapx = wrap(coords.x);\\n float wrapy = wrap(coords.y - 0.25 + abs(wrapx));\\n dist = abs(wrapy) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_vertical_wave) {\\n float wrapy = wrap(coords.y);\\n float wrapx = wrap(coords.x - 0.25 + abs(wrapy));\\n dist = abs(wrapx) / SQRT2 - halfwidth;\\n }\\n else if (hatch_pattern == hatch_criss_cross) {\\n float plus = min(abs(wrap(coords.x)), abs(wrap(coords.y)));\\n\\n coords = vec2(coords.x + coords.y + 0.5, coords.x - coords.y + 0.5);\\n float X = min(abs(wrap(coords.x)), abs(wrap(coords.y))) / SQRT2;\\n\\n dist = min(plus, X) - halfwidth;\\n }\\n\\n return distance_to_fraction(dist*scale);\\n}\\n#endif\\n\\nvoid main()\\n{\\n int line_cap = int(v_line_cap + 0.5);\\n int line_join = int(v_line_join + 0.5);\\n#ifdef HATCH\\n int hatch_pattern = int(v_hatch_pattern + 0.5);\\n#endif\\n\\n float dist = marker_distance(v_coords, line_cap, line_join);\\n\\n#ifdef LINE_ONLY\\n vec4 color = vec4(0.0, 0.0, 0.0, 0.0);\\n#else\\n float fill_frac = fill_fraction(dist);\\n vec4 color = fractional_color(v_fill_color, fill_frac);\\n#endif\\n\\n#if defined(HATCH) && !defined(LINE_ONLY)\\n if (hatch_pattern > 0 && fill_frac > 0.0) {\\n float hatch_frac = hatch_fraction(v_hatch_coords, hatch_pattern);\\n vec4 hatch_color = fractional_color(v_hatch_color, hatch_frac*fill_frac);\\n color = blend_colors(hatch_color, color);\\n }\\n#endif\\n\\n float line_frac = line_fraction(dist);\\n\\n#ifdef APPEND_DOT\\n line_frac = max(line_frac, dot_fraction(v_coords));\\n#endif\\n#ifdef APPEND_CROSS\\n line_frac = max(line_frac, line_fraction(one_cross(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n#ifdef APPEND_CROSS_2\\n vec2 lengths = vec2(v_size.x/3.0, v_size.x/2.0);\\n line_frac = max(line_frac, line_fraction(one_cross_2(v_coords, line_cap, lengths)));\\n#endif\\n#ifdef APPEND_X\\n vec2 p = vec2((v_coords.x + v_coords.y)/SQRT2, (v_coords.x - v_coords.y)/SQRT2);\\n line_frac = max(line_frac, line_fraction(one_cross(p, line_cap, APPEND_X_LEN)));\\n#endif\\n#ifdef APPEND_Y\\n line_frac = max(line_frac, line_fraction(one_y(v_coords, line_cap, 0.5*v_size.x)));\\n#endif\\n\\n if (line_frac > 0.0) {\\n vec4 line_color = fractional_color(v_line_color, line_frac);\\n color = blend_colors(line_color, color);\\n }\\n\\n gl_FragColor = color;\\n}\\n\"},\n", + " 419: function _(t,_,i,h,e){h();const s=t(420),a=t(421),r=t(422);class l extends s.BaseGLGlyph{constructor(t,_){super(t,_),this.glyph=_,this._antialias=1.5,this._show_all=!1}_draw_one_marker_type(t,_,i){const h={scissor:this.regl_wrapper.scissor,viewport:this.regl_wrapper.viewport,canvas_size:[_.width,_.height],pixel_ratio:_.pixel_ratio,center:i._centers,width:i._widths,height:i._heights,angle:i._angles,size_hint:(0,r.marker_type_to_size_hint)(t),nmarkers:i.nvertices,antialias:this._antialias,linewidth:this._linewidths,line_color:this._line_rgba,fill_color:this._fill_rgba,line_cap:this._line_caps,line_join:this._line_joins,show:this._show};if(this._have_hatch){const _=Object.assign(Object.assign({},h),{hatch_pattern:this._hatch_patterns,hatch_scale:this._hatch_scales,hatch_weight:this._hatch_weights,hatch_color:this._hatch_rgba});this.regl_wrapper.marker_hatch(t)(_)}else this.regl_wrapper.marker_no_hatch(t)(h)}_set_visuals(){const t=this._get_visuals(),_=t.fill,i=t.line;if(null==this._linewidths&&(this._linewidths=new a.Float32Buffer(this.regl_wrapper),this._line_caps=new a.Uint8Buffer(this.regl_wrapper),this._line_joins=new a.Uint8Buffer(this.regl_wrapper),this._line_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper),this._fill_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._linewidths.set_from_prop(i.line_width),this._line_caps.set_from_line_cap(i.line_cap),this._line_joins.set_from_line_join(i.line_join),this._line_rgba.set_from_color(i.line_color,i.line_alpha),this._fill_rgba.set_from_color(_.fill_color,_.fill_alpha),this._have_hatch=t.hatch.doit,this._have_hatch){const _=t.hatch;null==this._hatch_patterns&&(this._hatch_patterns=new a.Uint8Buffer(this.regl_wrapper),this._hatch_scales=new a.Float32Buffer(this.regl_wrapper),this._hatch_weights=new a.Float32Buffer(this.regl_wrapper),this._hatch_rgba=new a.NormalizedUint8Buffer(this.regl_wrapper)),this._hatch_patterns.set_from_hatch_pattern(_.hatch_pattern),this._hatch_scales.set_from_prop(_.hatch_scale),this._hatch_weights.set_from_prop(_.hatch_weight),this._hatch_rgba.set_from_color(_.hatch_color,_.hatch_alpha)}}}i.BaseMarkerGL=l,l.__name__=\"BaseMarkerGL\",l.missing_point=-1e4},\n", + " 420: function _(e,t,s,i,h){i();class a{constructor(e,t){this.glyph=t,this.nvertices=0,this.size_changed=!1,this.data_changed=!1,this.visuals_changed=!1,this.regl_wrapper=e}set_data_changed(){const{data_size:e}=this.glyph;e!=this.nvertices&&(this.nvertices=e,this.size_changed=!0),this.data_changed=!0}set_visuals_changed(){this.visuals_changed=!0}render(e,t,s){if(0==t.length)return!0;const{width:i,height:h}=this.glyph.renderer.plot_view.canvas_view.webgl.canvas,a={pixel_ratio:this.glyph.renderer.plot_view.canvas_view.pixel_ratio,width:i,height:h};return this.draw(t,s,a),!0}}s.BaseGLGlyph=a,a.__name__=\"BaseGLGlyph\"},\n", + " 421: function _(r,t,a,e,s){e();const i=r(422),_=r(22);class n{constructor(r){this.regl_wrapper=r,this.is_scalar=!0}get_sized_array(r){return null!=this.array&&this.array.length==r||(this.array=this.new_array(r)),this.array}is_normalized(){return!1}get length(){return null!=this.array?this.array.length:0}set_from_array(r){const t=r.length,a=this.get_sized_array(t);for(let e=0;e0}_set_data(){const s=this.glyph.sx.length,i=s-1;this._is_closed=s>2&&this.glyph.sx[0]==this.glyph.sx[s-1]&&this.glyph.sy[0]==this.glyph.sy[s-1]&&isFinite(this.glyph.sx[0])&&isFinite(this.glyph.sy[0]),null==this._points&&(this._points=new o.Float32Buffer(this.regl_wrapper));const t=this._points.get_sized_array(2*(s+2));for(let i=1;is/255)),this._linewidth=s.line_width.value,this._linewidth<1&&(this._color[3]*=this._linewidth,this._linewidth=1),this._line_dash=(0,a.resolve_line_dash)(s.line_dash.value),this._is_dashed()&&([this._dash_tex_info,this._dash_tex,this._dash_scale]=this.regl_wrapper.get_dash(this._line_dash),this._dash_offset=s.line_dash_offset.value)}}t.LineGL=r,r.__name__=\"LineGL\"},\n", + " 427: function _(s,t,i,e,r){e();const h=s(421),a=s(424);class n extends a.SingleMarkerGL{constructor(s,t){super(s,t),this.glyph=t}draw(s,t,i){this._draw_impl(s,i,t.glglyph,\"square\")}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new h.Float32Buffer(this.regl_wrapper),this._widths=new h.Float32Buffer(this.regl_wrapper),this._heights=new h.Float32Buffer(this.regl_wrapper),this._angles=new h.Float32Buffer(this.regl_wrapper),this._angles.set_from_scalar(0));const t=this._centers.get_sized_array(2*s),i=this._heights.get_sized_array(s),e=this._widths.get_sized_array(s);for(let r=0;r1||s.length<_){this._show_all=!1,n.fill(0),r=0;for(const e of s)1!=h&&i._marker_types.get(e)!=t||(n[e]=255,r++)}else this._show_all&&a==_||(this._show_all=!0,n.fill(255));this._show.update(),0!=r&&this._draw_one_marker_type(t,e,i)}}_get_visuals(){return this.glyph.visuals}_set_data(){const s=this.nvertices;null==this._centers&&(this._centers=new r.Float32Buffer(this.regl_wrapper),this._widths=new r.Float32Buffer(this.regl_wrapper),this._heights=this._widths,this._angles=new r.Float32Buffer(this.regl_wrapper));const t=this._centers.get_sized_array(2*s);for(let e=0;ethis.render()))}remove(){null!=this.icon_view&&this.icon_view.remove(),super.remove()}styles(){return[...super.styles(),d.default]}_render_button(...t){return(0,c.button)({type:\"button\",disabled:this.model.disabled,class:[h.btn,h[`btn_${this.model.button_type}`]]},...t)}render(){super.render(),this.button_el=this._render_button(this.model.label),this.button_el.addEventListener(\"click\",(()=>this.click())),null!=this.icon_view&&(\"\"!=this.model.label?(0,c.prepend)(this.button_el,this.icon_view.el,(0,c.nbsp)()):(0,c.prepend)(this.button_el,this.icon_view.el),this.icon_view.render()),this.group_el=(0,c.div)({class:h.btn_group},this.button_el),this.el.appendChild(this.group_el)}click(){}}n.AbstractButtonView=b,b.__name__=\"AbstractButtonView\";class p extends _.Control{constructor(t){super(t)}}n.AbstractButton=p,o=p,p.__name__=\"AbstractButton\",o.define((({String:t,Ref:e,Nullable:n})=>({label:[t,\"Button\"],icon:[n(e(a.AbstractIcon)),null],button_type:[r.ButtonType,\"default\"]})))},\n", + " 442: function _(t,e,o,s,n){s();const i=t(512),l=t(43);class c extends i.WidgetView{connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.disabled,(()=>{for(const t of this.controls())(0,l.toggle_attribute)(t,\"disabled\",this.model.disabled)}))}}o.ControlView=c,c.__name__=\"ControlView\";class r extends i.Widget{constructor(t){super(t)}}o.Control=r,r.__name__=\"Control\"},\n", + " 512: function _(i,e,t,n,o){var r;n();const s=i(312);class _ extends s.HTMLBoxView{get orientation(){return\"horizontal\"}get default_size(){return this.model.default_size}_width_policy(){return\"horizontal\"==this.orientation?super._width_policy():\"fixed\"}_height_policy(){return\"horizontal\"==this.orientation?\"fixed\":super._height_policy()}box_sizing(){const i=super.box_sizing();return\"horizontal\"==this.orientation?null==i.width&&(i.width=this.default_size):null==i.height&&(i.height=this.default_size),i}}t.WidgetView=_,_.__name__=\"WidgetView\";class h extends s.HTMLBox{constructor(i){super(i)}}t.Widget=h,r=h,h.__name__=\"Widget\",r.define((({Number:i})=>({default_size:[i,300]}))),r.override({margin:[5,5,5,5]})},\n", + " 444: function _(c,t,s,n,e){n();const o=c(53),_=c(226);class a extends _.DOMView{}s.AbstractIconView=a,a.__name__=\"AbstractIconView\";class r extends o.Model{constructor(c){super(c)}}s.AbstractIcon=r,r.__name__=\"AbstractIcon\"},\n", + " 445: function _(e,t,n,s,i){s();const h=e(1);var o;const _=e(446),u=e(43),r=e(10),c=(0,h.__importStar)(e(229)),a=c;class l extends _.TextInputView{constructor(){super(...arguments),this._open=!1,this._last_value=\"\",this._hover_index=0}styles(){return[...super.styles(),c.default]}render(){super.render(),this.input_el.addEventListener(\"keydown\",(e=>this._keydown(e))),this.input_el.addEventListener(\"keyup\",(e=>this._keyup(e))),this.menu=(0,u.div)({class:[a.menu,a.below]}),this.menu.addEventListener(\"click\",(e=>this._menu_click(e))),this.menu.addEventListener(\"mouseover\",(e=>this._menu_hover(e))),this.el.appendChild(this.menu),(0,u.undisplay)(this.menu)}change_input(){this._open&&this.menu.children.length>0?(this.model.value=this.menu.children[this._hover_index].textContent,this.input_el.focus(),this._hide_menu()):this.model.restrict||super.change_input()}_update_completions(e){(0,u.empty)(this.menu);for(const t of e){const e=(0,u.div)(t);this.menu.appendChild(e)}e.length>0&&this.menu.children[0].classList.add(a.active)}_show_menu(){if(!this._open){this._open=!0,this._hover_index=0,this._last_value=this.model.value,(0,u.display)(this.menu);const e=t=>{const{target:n}=t;n instanceof HTMLElement&&!this.el.contains(n)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,u.undisplay)(this.menu))}_menu_click(e){e.target!=e.currentTarget&&e.target instanceof Element&&(this.model.value=e.target.textContent,this.input_el.focus(),this._hide_menu())}_menu_hover(e){if(e.target!=e.currentTarget&&e.target instanceof Element){let t=0;for(t=0;t0&&(this.menu.children[this._hover_index].classList.remove(a.active),this._hover_index=(0,r.clamp)(e,0,t-1),this.menu.children[this._hover_index].classList.add(a.active))}_keydown(e){}_keyup(e){switch(e.keyCode){case u.Keys.Enter:this.change_input();break;case u.Keys.Esc:this._hide_menu();break;case u.Keys.Up:this._bump_hover(this._hover_index-1);break;case u.Keys.Down:this._bump_hover(this._hover_index+1);break;default:{const e=this.input_el.value;if(e.lengthe:e=>e.toLowerCase();for(const n of this.model.completions)s(n).startsWith(s(e))&&t.push(n);this._update_completions(t),0==t.length?this._hide_menu():this._show_menu()}}}}n.AutocompleteInputView=l,l.__name__=\"AutocompleteInputView\";class d extends _.TextInput{constructor(e){super(e)}}n.AutocompleteInput=d,o=d,d.__name__=\"AutocompleteInput\",o.prototype.default_view=l,o.define((({Boolean:e,Int:t,String:n,Array:s})=>({completions:[s(n),[]],min_characters:[t,2],case_sensitive:[e,!0],restrict:[e,!0]})))},\n", + " 446: function _(t,e,n,p,_){p();const u=t(1);var i;const s=t(447),r=t(43),x=(0,u.__importStar)(t(449));class a extends s.TextLikeInputView{_render_input(){this.input_el=(0,r.input)({type:\"text\",class:x.input})}}n.TextInputView=a,a.__name__=\"TextInputView\";class c extends s.TextLikeInput{constructor(t){super(t)}}n.TextInput=c,i=c,c.__name__=\"TextInput\",i.prototype.default_view=a},\n", + " 447: function _(e,t,n,i,l){var s;i();const h=e(448);class a extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>this.input_el.value=this.model.value)),this.connect(this.model.properties.value_input.change,(()=>this.input_el.value=this.model.value_input)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.max_length.change,(()=>{const{max_length:e}=this.model;null!=e?this.input_el.maxLength=e:this.input_el.removeAttribute(\"maxLength\")}))}render(){var e;super.render(),this._render_input();const{input_el:t}=this;t.name=null!==(e=this.model.name)&&void 0!==e?e:\"\",t.value=this.model.value,t.disabled=this.model.disabled,t.placeholder=this.model.placeholder,null!=this.model.max_length&&(t.maxLength=this.model.max_length),t.addEventListener(\"change\",(()=>this.change_input())),t.addEventListener(\"input\",(()=>this.change_input_value())),this.group_el.appendChild(t)}change_input(){this.model.value=this.input_el.value,super.change_input()}change_input_value(){this.model.value_input=this.input_el.value,super.change_input()}}n.TextLikeInputView=a,a.__name__=\"TextLikeInputView\";class u extends h.InputWidget{constructor(e){super(e)}}n.TextLikeInput=u,s=u,u.__name__=\"TextLikeInput\",s.define((({Int:e,String:t,Nullable:n})=>({value:[t,\"\"],value_input:[t,\"\"],placeholder:[t,\"\"],max_length:[n(e),null]})))},\n", + " 448: function _(e,t,n,s,l){s();const i=e(1);var o;const r=e(442),_=e(43),p=(0,i.__importStar)(e(449)),a=p;class c extends r.ControlView{*controls(){yield this.input_el}connect_signals(){super.connect_signals(),this.connect(this.model.properties.title.change,(()=>{this.label_el.textContent=this.model.title}))}styles(){return[...super.styles(),p.default]}render(){super.render();const{title:e}=this.model;this.label_el=(0,_.label)({style:{display:0==e.length?\"none\":\"\"}},e),this.group_el=(0,_.div)({class:a.input_group},this.label_el),this.el.appendChild(this.group_el)}change_input(){}}n.InputWidgetView=c,c.__name__=\"InputWidgetView\";class d extends r.Control{constructor(e){super(e)}}n.InputWidget=d,o=d,d.__name__=\"InputWidget\",o.define((({String:e})=>({title:[e,\"\"]})))},\n", + " 449: function _(o,p,t,n,i){n(),t.root=\"bk-root\",t.input=\"bk-input\",t.input_group=\"bk-input-group\",t.inline=\"bk-inline\",t.spin_wrapper=\"bk-spin-wrapper\",t.spin_btn=\"bk-spin-btn\",t.spin_btn_up=\"bk-spin-btn-up\",t.spin_btn_down=\"bk-spin-btn-down\",t.default='.bk-root .bk-input{display:inline-block;width:100%;flex-grow:1;min-height:31px;padding:0 12px;background-color:#fff;border:1px solid #ccc;border-radius:4px;}.bk-root .bk-input:focus{border-color:#66afe9;outline:0;box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);}.bk-root .bk-input::placeholder,.bk-root .bk-input:-ms-input-placeholder,.bk-root .bk-input::-moz-placeholder,.bk-root .bk-input::-webkit-input-placeholder{color:#999;opacity:1;}.bk-root .bk-input[disabled]{cursor:not-allowed;background-color:#eee;opacity:1;}.bk-root select:not([multiple]).bk-input,.bk-root select:not([size]).bk-input{height:auto;appearance:none;-webkit-appearance:none;background-image:url(\\'data:image/svg+xml;utf8,\\');background-position:right 0.5em center;background-size:8px 6px;background-repeat:no-repeat;}.bk-root select[multiple].bk-input,.bk-root select[size].bk-input,.bk-root textarea.bk-input{height:auto;}.bk-root .bk-input-group{width:100%;height:100%;display:inline-flex;flex-wrap:nowrap;align-items:start;flex-direction:column;white-space:nowrap;}.bk-root .bk-input-group.bk-inline{flex-direction:row;}.bk-root .bk-input-group.bk-inline > *:not(:first-child){margin-left:5px;}.bk-root .bk-input-group input[type=\"checkbox\"] + span,.bk-root .bk-input-group input[type=\"radio\"] + span{position:relative;top:-2px;margin-left:3px;}.bk-root .bk-input-group > .bk-spin-wrapper{display:inherit;width:inherit;height:inherit;position:relative;overflow:hidden;padding:0;vertical-align:middle;}.bk-root .bk-input-group > .bk-spin-wrapper input{padding-right:20px;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn{position:absolute;display:block;height:50%;min-height:0;min-width:0;width:30px;padding:0;margin:0;right:0;border:none;background:none;cursor:pointer;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn:before{content:\"\";display:inline-block;transform:translateY(-50%);border-left:5px solid transparent;border-right:5px solid transparent;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up{top:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:before{border-bottom:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-up:disabled:before{border-bottom-color:grey;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down{bottom:0;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:before{border-top:5px solid black;}.bk-root .bk-input-group > .bk-spin-wrapper > .bk-spin-btn.bk-spin-btn-down:disabled:before{border-top-color:grey;}'},\n", + " 450: function _(t,e,n,o,c){var s;o();const u=t(441),r=t(251);class i extends u.AbstractButtonView{click(){this.model.trigger_event(new r.ButtonClick),super.click()}}n.ButtonView=i,i.__name__=\"ButtonView\";class _ extends u.AbstractButton{constructor(t){super(t)}}n.Button=_,s=_,_.__name__=\"Button\",s.prototype.default_view=i,s.override({label:\"Button\"})},\n", + " 451: function _(t,e,o,c,a){c();const s=t(1);var n;const i=t(452),r=t(43),u=(0,s.__importStar)(t(318));class _ extends i.ButtonGroupView{get active(){return new Set(this.model.active)}change_active(t){const{active:e}=this;e.has(t)?e.delete(t):e.add(t),this.model.active=[...e].sort()}_update_active(){const{active:t}=this;this._buttons.forEach(((e,o)=>{(0,r.classes)(e).toggle(u.active,t.has(o))}))}}o.CheckboxButtonGroupView=_,_.__name__=\"CheckboxButtonGroupView\";class h extends i.ButtonGroup{constructor(t){super(t)}}o.CheckboxButtonGroup=h,n=h,h.__name__=\"CheckboxButtonGroup\",n.prototype.default_view=_,n.define((({Int:t,Array:e})=>({active:[e(t),[]]})))},\n", + " 452: function _(t,e,n,s,i){s();const o=t(1);var r;const a=t(453),l=t(20),d=t(43),u=(0,o.__importStar)(t(318)),_=u;class c extends a.OrientedControlView{get default_size(){return\"horizontal\"==this.orientation?this.model.default_size:void 0}*controls(){yield*this._buttons}connect_signals(){super.connect_signals();const t=this.model.properties;this.on_change(t.button_type,(()=>this.render())),this.on_change(t.labels,(()=>this.render())),this.on_change(t.active,(()=>this._update_active()))}styles(){return[...super.styles(),u.default]}render(){super.render(),this._buttons=this.model.labels.map(((t,e)=>{const n=(0,d.div)({class:[_.btn,_[`btn_${this.model.button_type}`]],disabled:this.model.disabled},t);return n.addEventListener(\"click\",(()=>this.change_active(e))),n})),this._update_active();const t=\"horizontal\"==this.model.orientation?_.horizontal:_.vertical,e=(0,d.div)({class:[_.btn_group,t]},this._buttons);this.el.appendChild(e)}}n.ButtonGroupView=c,c.__name__=\"ButtonGroupView\";class h extends a.OrientedControl{constructor(t){super(t)}}n.ButtonGroup=h,r=h,h.__name__=\"ButtonGroup\",r.define((({String:t,Array:e})=>({labels:[e(t),[]],button_type:[l.ButtonType,\"default\"]})))},\n", + " 453: function _(n,t,e,o,r){var i;o();const a=n(442),l=n(20);class s extends a.ControlView{get orientation(){return this.model.orientation}}e.OrientedControlView=s,s.__name__=\"OrientedControlView\";class _ extends a.Control{constructor(n){super(n)}}e.OrientedControl=_,i=_,_.__name__=\"OrientedControl\",i.define((()=>({orientation:[l.Orientation,\"horizontal\"]})))},\n", + " 454: function _(e,t,n,i,s){i();const o=e(1);var a;const c=e(455),l=e(43),d=e(9),p=(0,o.__importStar)(e(449));class r extends c.InputGroupView{render(){super.render();const e=(0,l.div)({class:[p.input_group,this.model.inline?p.inline:null]});this.el.appendChild(e);const{active:t,labels:n}=this.model;this._inputs=[];for(let i=0;ithis.change_active(i))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),(0,d.includes)(t,i)&&(s.checked=!0);const o=(0,l.label)(s,(0,l.span)(n[i]));e.appendChild(o)}}change_active(e){const t=new Set(this.model.active);t.has(e)?t.delete(e):t.add(e),this.model.active=[...t].sort()}}n.CheckboxGroupView=r,r.__name__=\"CheckboxGroupView\";class h extends c.InputGroup{constructor(e){super(e)}}n.CheckboxGroup=h,a=h,h.__name__=\"CheckboxGroup\",a.prototype.default_view=r,a.define((({Boolean:e,Int:t,String:n,Array:i})=>({active:[i(t),[]],labels:[i(n),[]],inline:[e,!1]})))},\n", + " 455: function _(n,t,e,s,o){s();const r=n(1),u=n(442),c=(0,r.__importDefault)(n(449));class _ extends u.ControlView{*controls(){yield*this._inputs}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}styles(){return[...super.styles(),c.default]}}e.InputGroupView=_,_.__name__=\"InputGroupView\";class i extends u.Control{constructor(n){super(n)}}e.InputGroup=i,i.__name__=\"InputGroup\"},\n", + " 456: function _(e,t,i,n,o){n();const s=e(1);var l;const r=e(448),c=e(43),a=e(22),d=(0,s.__importStar)(e(449));class h extends r.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.name.change,(()=>{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.color.change,(()=>this.input_el.value=(0,a.color2hexrgb)(this.model.color))),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled))}render(){super.render(),this.input_el=(0,c.input)({type:\"color\",class:d.input,name:this.model.name,value:this.model.color,disabled:this.model.disabled}),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){this.model.color=this.input_el.value,super.change_input()}}i.ColorPickerView=h,h.__name__=\"ColorPickerView\";class p extends r.InputWidget{constructor(e){super(e)}}i.ColorPicker=p,l=p,p.__name__=\"ColorPicker\",l.prototype.default_view=h,l.define((({Color:e})=>({color:[e,\"#000000\"]})))},\n", + " 457: function _(e,t,i,n,s){n();const a=e(1);var l;const o=(0,a.__importDefault)(e(458)),d=e(448),r=e(43),c=e(20),u=e(8),h=(0,a.__importStar)(e(449)),_=(0,a.__importDefault)(e(459));function p(e){const t=[];for(const i of e)if((0,u.isString)(i))t.push(i);else{const[e,n]=i;t.push({from:e,to:n})}return t}class m extends d.InputWidgetView{connect_signals(){super.connect_signals();const{value:e,min_date:t,max_date:i,disabled_dates:n,enabled_dates:s,position:a,inline:l}=this.model.properties;this.connect(e.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.setDate(this.model.value)})),this.connect(t.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"minDate\",this.model.min_date)})),this.connect(i.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"maxDate\",this.model.max_date)})),this.connect(n.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"disable\",this.model.disabled_dates)})),this.connect(s.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"enable\",this.model.enabled_dates)})),this.connect(a.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"position\",this.model.position)})),this.connect(l.change,(()=>{var e;return null===(e=this._picker)||void 0===e?void 0:e.set(\"inline\",this.model.inline)}))}remove(){var e;null===(e=this._picker)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),_.default]}render(){var e,t;null==this._picker&&(super.render(),this.input_el=(0,r.input)({type:\"text\",class:h.input,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el),this._picker=(0,o.default)(this.input_el,{defaultDate:this.model.value,minDate:null!==(e=this.model.min_date)&&void 0!==e?e:void 0,maxDate:null!==(t=this.model.max_date)&&void 0!==t?t:void 0,inline:this.model.inline,position:this.model.position,disable:p(this.model.disabled_dates),enable:p(this.model.enabled_dates),onChange:(e,t,i)=>this._on_change(e,t,i)}))}_on_change(e,t,i){this.model.value=t,this.change_input()}}i.DatePickerView=m,m.__name__=\"DatePickerView\";class v extends d.InputWidget{constructor(e){super(e)}}i.DatePicker=v,l=v,v.__name__=\"DatePicker\",l.prototype.default_view=m,l.define((({Boolean:e,String:t,Array:i,Tuple:n,Or:s,Nullable:a})=>{const l=i(s(t,n(t,t)));return{value:[t],min_date:[a(t),null],max_date:[a(t),null],disabled_dates:[l,[]],enabled_dates:[l,[]],position:[c.CalendarPosition,\"auto\"],inline:[e,!1]}}))},\n", + " 458: function _(e,n,t,a,i){\n", + " /* flatpickr v4.6.6, @license MIT */var o,r;o=this,r=function(){\"use strict\";\n", + " /*! *****************************************************************************\n", + " Copyright (c) Microsoft Corporation.\n", + " \n", + " Permission to use, copy, modify, and/or distribute this software for any\n", + " purpose with or without fee is hereby granted.\n", + " \n", + " THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n", + " REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n", + " AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n", + " INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n", + " LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n", + " OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n", + " PERFORMANCE OF THIS SOFTWARE.\n", + " ***************************************************************************** */var e=function(){return e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t\",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:\"auto\",positionElement:void 0,prevArrow:\"\",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],longhand:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"]},months:{shorthand:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],longhand:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return\"th\";switch(n%10){case 1:return\"st\";case 2:return\"nd\";case 3:return\"rd\";default:return\"th\"}},rangeSeparator:\" to \",weekAbbreviation:\"Wk\",scrollTitle:\"Scroll to increment\",toggleTitle:\"Click to toggle\",amPM:[\"AM\",\"PM\"],yearAriaLabel:\"Year\",monthAriaLabel:\"Month\",hourAriaLabel:\"Hour\",minuteAriaLabel:\"Minute\",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),(\"000\"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n,t){var a;return void 0===t&&(t=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout((function(){a=null,t||e.apply(i,o)}),n),t&&!a&&e.apply(i,o)}}var c=function(e){return e instanceof Array?e:[e]};function d(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function s(e,n,t){var a=window.document.createElement(e);return n=n||\"\",t=t||\"\",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=s(\"div\",\"numInputWrapper\"),a=s(\"input\",\"numInput \"+e),i=s(\"span\",\"arrowUp\"),o=s(\"span\",\"arrowDown\");if(-1===navigator.userAgent.indexOf(\"MSIE 9.0\")?a.type=\"number\":(a.type=\"text\",a.pattern=\"\\\\d*\"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return\"function\"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?\"shorthand\":\"longhand\"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours(parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],\"i\").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours(parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:\"(\\\\w+)\",F:\"(\\\\w+)\",G:\"(\\\\d\\\\d|\\\\d)\",H:\"(\\\\d\\\\d|\\\\d)\",J:\"(\\\\d\\\\d|\\\\d)\\\\w+\",K:\"\",M:\"(\\\\w+)\",S:\"(\\\\d\\\\d|\\\\d)\",U:\"(.+)\",W:\"(\\\\d\\\\d|\\\\d)\",Y:\"(\\\\d{4})\",Z:\"(.+)\",d:\"(\\\\d\\\\d|\\\\d)\",h:\"(\\\\d\\\\d|\\\\d)\",i:\"(\\\\d\\\\d|\\\\d)\",j:\"(\\\\d\\\\d|\\\\d)\",l:\"(\\\\w+)\",m:\"(\\\\d\\\\d|\\\\d)\",n:\"(\\\\d\\\\d|\\\\d)\",s:\"(\\\\d\\\\d|\\\\d)\",u:\"(.+)\",w:\"(\\\\d\\\\d|\\\\d)\",y:\"(\\\\d{2})\"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split(\"\").map((function(n,a,o){return w[n]&&\"\\\\\"!==o[a-1]?w[n](e,i,t):\"\\\\\"!==n?n:\"\"})).join(\"\"):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if(\"string\"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if(\"string\"==typeof e){var s=n||(t||a).dateFormat,u=String(e).trim();if(\"today\"===u)l=new Date,i=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(t&&t.parseDate)l=t.parseDate(e,s);else{l=t&&t.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],g=0,p=0,h=\"\";gl&&(u=a===w.hourElement?u-l-r(!w.amPM):i,m&&H(void 0,1,w.hourElement)),w.amPM&&f&&(1===c?u+d===23:Math.abs(u-d)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(u)}}(e);var c=w._input.value;I(),be(),w._input.value!==c&&w._debouncedChange()}function I(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0);if(void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0)){var l=void 0!==w.config.maxTime?w.config.maxTime:w.config.maxDate;(t=Math.min(t,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(o){var c=void 0!==w.config.minTime?w.config.minTime:w.config.minDate;(t=Math.max(t,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(t,a,i)}}function S(e){var n=e||w.latestSelectedDateObj;n&&O(n.getHours(),n.getMinutes(),n.getSeconds())}function _(){var e=w.config.defaultHour,n=w.config.defaultMinute,t=w.config.defaultSeconds;if(void 0!==w.config.minDate){var a=w.config.minDate.getHours(),i=w.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(n=Math.max(i,n)),e===a&&n===i&&(t=w.config.minDate.getSeconds())}if(void 0!==w.config.maxDate){var o=w.config.maxDate.getHours(),r=w.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(n=Math.min(r,n)),e===o&&n===r&&(t=w.config.maxDate.getSeconds())}return{hours:e,minutes:n,seconds:t}}function O(e,n,t){void 0!==w.latestSelectedDateObj&&w.latestSelectedDateObj.setHours(e%24,n,t||0,0),w.hourElement&&w.minuteElement&&!w.isMobile&&(w.hourElement.value=o(w.config.time_24hr?e:(12+e)%12+12*r(e%12==0)),w.minuteElement.value=o(n),void 0!==w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(e>=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function F(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||\"Enter\"===e.key&&!/[^\\d]/.test(t.toString()))&&Q(t)}function N(e,n,t,a){return n instanceof Array?n.forEach((function(n){return N(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return N(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({element:e,event:n,handler:t,options:a}))}function A(){pe(\"onChange\")}function P(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0}(n)&&!ve(n)&&o.classList.add(\"inRange\"),w.weekNumbers&&1===w.config.showMonths&&\"prevMonthDay\"!==e&&t%7==1&&w.weekNumbers.insertAdjacentHTML(\"beforeend\",\"\"+w.config.getWeek(n)+\"\"),pe(\"onDayCreate\",o),o}function L(e){e.focus(),\"range\"===w.config.mode&&ae(e)}function W(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf(\"hidden\")&&X(c.dateObj))return c}}function R(e,n){var t=ee(document.activeElement||document.body),a=void 0!==e?e:t?document.activeElement:void 0!==w.selectedDateElem&&ee(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ee(w.todayDateElem)?w.todayDateElem:W(n>0?1:-1);void 0===a?w._input.focus():t?function(e,n){for(var t=-1===e.className.indexOf(\"Month\")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf(\"hidden\")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(n))return L(s)}w.changeMonth(i),R(W(i),0)}(a,n):L(a)}function B(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?\"prevMonthDay hidden\":\"prevMonthDay\",c=r?\"nextMonthDay hidden\":\"nextMonthDay\",d=a+1-t,u=0;d<=a;d++,u++)o.appendChild(j(l,new Date(e,n-1,d),d,u));for(d=1;d<=i;d++,u++)o.appendChild(j(\"\",new Date(e,n,d),d,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(j(c,new Date(e,n+1,f%i),f,u));var m=s(\"div\",\"dayContainer\");return m.appendChild(o),m}function J(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||\"dropdown\"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML=\"\";for(var n=0;n<12;n++)if(e(n)){var t=s(\"option\",\"flatpickr-monthDropdown-month\");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function U(){var e,n=s(\"div\",\"flatpickr-month\"),t=window.document.createDocumentFragment();w.config.showMonths>1||\"static\"===w.config.monthSelectorType?e=s(\"span\",\"cur-month\"):(w.monthsDropdownContainer=s(\"select\",\"flatpickr-monthDropdown-months\"),w.monthsDropdownContainer.setAttribute(\"aria-label\",w.l10n.monthAriaLabel),N(w.monthsDropdownContainer,\"change\",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),pe(\"onMonthChange\")})),K(),e=w.monthsDropdownContainer);var a=m(\"cur-year\",{tabindex:\"-1\"}),i=a.getElementsByTagName(\"input\")[0];i.setAttribute(\"aria-label\",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute(\"min\",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute(\"max\",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=s(\"div\",\"flatpickr-current-month\");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=U();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function $(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=s(\"div\",\"flatpickr-weekdays\");for(var e=w.config.showMonths;e--;){var n=s(\"div\",\"flatpickr-weekdaycontainer\");w.weekdayContainer.appendChild(n)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\\n \"+t.join(\"\")+\"\\n \\n \"}}function G(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,pe(\"onYearChange\"),K()),J(),pe(\"onMonthChange\"),De())}function V(e){return!(!w.config.appendTo||!w.config.appendTo.contains(e))||w.calendarContainer.contains(e)}function Z(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=V(n),a=n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput)),i=\"blur\"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!t&&!V(e.relatedTarget),o=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));i&&o&&(void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&\"\"!==w.input.value&&void 0!==w.input.value&&T(),w.close(),w.config&&\"range\"===w.config.mode&&1===w.selectedDates.length&&(w.clear(!1),w.redraw()))}}function Q(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),pe(\"onYearChange\"),K())}}function X(e,n){void 0===n&&(n=!0);var t=w.parseDate(e,void 0,n);if(w.config.minDate&&t&&M(t,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&t&&M(t,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(0===w.config.enable.length&&0===w.config.disable.length)return!0;if(void 0===t)return!1;for(var a=w.config.enable.length>0,i=a?w.config.enable:w.config.disable,o=0,r=void 0;o=r.from.getTime()&&t.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==w.daysContainer&&-1===e.className.indexOf(\"hidden\")&&-1===e.className.indexOf(\"flatpickr-disabled\")&&w.daysContainer.contains(e)}function ne(e){e.target!==w._input||e.relatedTarget&&V(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function te(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),n.blur();w.open()}else if(V(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),T(),se()):ue(e);break;case 27:e.preventDefault(),se();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else if(e.preventDefault(),void 0!==w.daysContainer&&(!1===a||document.activeElement&&ee(document.activeElement))){var l=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(l),R(W(1),0)):R(void 0,l)}break;case 38:case 40:e.preventDefault();var c=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),Q(w.currentYear-c),R(W(1),0)):r||R(void 0,7*c):n===w.currentYearElement?Q(w.currentYear-c):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),T(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),s=d.indexOf(n);if(-1!==s){var u=d[s+(e.shiftKey?-1:1)];e.preventDefault(),(u||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],I(),be();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],I(),be()}(t||V(n))&&pe(\"onKeyDown\",e)}function ae(e){if(1===w.selectedDates.length&&(!e||e.classList.contains(\"flatpickr-day\")&&!e.classList.contains(\"flatpickr-disabled\"))){for(var n=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),t=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),a=Math.min(n,w.selectedDates[0].getTime()),i=Math.max(n,w.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;ca&&cr)?r=c:c>t&&(!l||c0&&m0&&m>l;return g?(f.classList.add(\"notAllowed\"),[\"inRange\",\"startRange\",\"endRange\"].forEach((function(e){f.classList.remove(e)})),\"continue\"):o&&!g?\"continue\":([\"startRange\",\"inRange\",\"endRange\",\"notAllowed\"].forEach((function(e){f.classList.remove(e)})),void(void 0!==e&&(e.classList.add(n<=w.selectedDates[0].getTime()?\"startRange\":\"endRange\"),tn&&m===t&&f.classList.add(\"endRange\"),m>=r&&(0===l||m<=l)&&(d=t,u=n,(c=m)>Math.min(d,u)&&c0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return X(e)})),w.selectedDates.length||\"min\"!==e||S(t),be()),w.daysContainer&&(de(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function re(){return w.config.wrap?p.querySelector(\"[data-input]\"):p}function le(){\"object\"!=typeof w.config.locale&&void 0===k.l10ns[w.config.locale]&&w.config.errorHandler(new Error(\"flatpickr: invalid locale \"+w.config.locale)),w.l10n=e(e({},k.l10ns.default),\"object\"==typeof w.config.locale?w.config.locale:\"default\"!==w.config.locale?k.l10ns[w.config.locale]:void 0),D.K=\"(\"+w.l10n.amPM[0]+\"|\"+w.l10n.amPM[1]+\"|\"+w.l10n.amPM[0].toLowerCase()+\"|\"+w.l10n.amPM[1].toLowerCase()+\")\",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===k.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function ce(e){if(void 0!==w.calendarContainer){pe(\"onPreCalendarPosition\");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(\" \"),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,s=\"above\"===o||\"below\"!==o&&ct,u=window.pageYOffset+l.top+(s?-t-2:n.offsetHeight+2);if(d(w.calendarContainer,\"arrowTop\",!s),d(w.calendarContainer,\"arrowBottom\",s),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;\"center\"===r?(f-=(a-l.width)/2,m=!0):\"right\"===r&&(f-=a-l.width,g=!0),d(w.calendarContainer,\"arrowLeft\",!m&&!g),d(w.calendarContainer,\"arrowCenter\",m),d(w.calendarContainer,\"arrowRight\",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(d(w.calendarContainer,\"rightMost\",h),!w.config.static)if(w.calendarContainer.style.top=u+\"px\",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&\"range\"!==w.config.mode;if(w.selectedDateElem=t,\"single\"===w.config.mode)w.selectedDates=[a];else if(\"multiple\"===w.config.mode){var o=ve(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else\"range\"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(I(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(pe(\"onYearChange\"),K()),pe(\"onMonthChange\")}if(De(),J(),be(),i||\"range\"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():L(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l=\"single\"===w.config.mode&&!w.config.enableTime,c=\"range\"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&se()}A()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=N,w._setHoursFromDate=S,w._positionCalendar=ce,w.changeMonth=G,w.changeYear=Q,w.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),w.input.value=\"\",void 0!==w.altInput&&(w.altInput.value=\"\"),void 0!==w.mobileInput&&(w.mobileInput.value=\"\"),w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth()),!0===w.config.enableTime){var t=_(),a=t.hours,i=t.minutes,o=t.seconds;O(a,i,o)}w.redraw(),e&&pe(\"onChange\")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove(\"open\"),void 0!==w._input&&w._input.classList.remove(\"active\")),pe(\"onClose\")},w._createElement=s,w.destroy=function(){void 0!==w.config&&pe(\"onDestroy\");for(var e=w._handlers.length;e--;){var n=w._handlers[e];n.element.removeEventListener(n.event,n.handler,n.options)}if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var t=w.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type=\"text\",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput),w.input&&(w.input.type=w.input._type,w.input.classList.remove(\"flatpickr-input\"),w.input.removeAttribute(\"readonly\")),[\"_showTimeInput\",\"latestSelectedDateObj\",\"_hideNextMonthArrow\",\"_hidePrevMonthArrow\",\"__hideNextMonthArrow\",\"__hidePrevMonthArrow\",\"isMobile\",\"isOpen\",\"selectedDateElem\",\"minDateHasTime\",\"maxDateHasTime\",\"days\",\"daysContainer\",\"_input\",\"_positionElement\",\"innerContainer\",\"rContainer\",\"monthNav\",\"todayDateElem\",\"calendarContainer\",\"weekdayContainer\",\"prevMonthNav\",\"nextMonthNav\",\"monthsDropdownContainer\",\"currentMonthElement\",\"currentYearElement\",\"navigationCurrentMonth\",\"selectedDateElem\",\"config\"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=X,w.jumpToDate=P,w.open=function(e,n){if(void 0===n&&(n=w._positionElement),!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void pe(\"onOpen\")}if(!w._input.disabled&&!w.config.inline){var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add(\"open\"),w._input.classList.add(\"active\"),pe(\"onOpen\"),ce(n)),!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))}},w.redraw=de,w.set=function(e,n){if(null!==e&&\"object\"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==fe[a]&&fe[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==fe[e]?fe[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),be(!0)},w.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=w.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);me(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),P(void 0,n),S(),0===w.selectedDates.length&&w.clear(!1),be(n),n&&pe(\"onChange\")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var fe={locale:[le,z],showMonths:[q,E,$],minDate:[P],maxDate:[P]};function me(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||\"number\"==typeof e)t=[w.parseDate(e,n)];else if(\"string\"==typeof e)switch(w.config.mode){case\"single\":case\"time\":t=[w.parseDate(e,n)];break;case\"multiple\":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case\"range\":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error(\"Invalid date supplied: \"+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&X(e,!1)})),\"range\"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function ge(e){return e.slice().map((function(e){return\"string\"==typeof e||\"number\"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&\"object\"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function pe(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||\"static\"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+\" \":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function we(e){return w.selectedDates.map((function(n){return w.formatDate(n,e)})).filter((function(e,n,t){return\"range\"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join(\"range\"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function be(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):\"\"),w.input.value=we(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=we(w.config.altFormat)),!1!==e&&pe(\"onValueUpdate\")}function Ce(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?G(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains(\"arrowUp\")?w.changeYear(w.currentYear+1):n.classList.contains(\"arrowDown\")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=[\"wrap\",\"weekNumbers\",\"allowInput\",\"allowInvalidPreload\",\"clickOpens\",\"time_24hr\",\"enableTime\",\"noCalendar\",\"altInput\",\"shorthandCurrentMonth\",\"inline\",\"static\",\"enableSeconds\",\"disableMobile\"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,\"enable\",{get:function(){return w.config._enable},set:function(e){w.config._enable=ge(e)}}),Object.defineProperty(w.config,\"disable\",{get:function(){return w.config._disable},set:function(e){w.config._disable=ge(e)}});var r=\"time\"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=k.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?\"H:i\"+(i.enableSeconds?\":S\":\"\"):l+\" H:i\"+(i.enableSeconds?\":S\":\"\")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=k.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?\"h:i\"+(i.enableSeconds?\":S K\":\" K\"):d+\" h:i\"+(i.enableSeconds?\":S\":\"\")+\" K\"}Object.defineProperty(w.config,\"minDate\",{get:function(){return w.config._minDate},set:oe(\"min\")}),Object.defineProperty(w.config,\"maxDate\",{get:function(){return w.config._maxDate},set:oe(\"max\")});var s=function(e){return function(n){w.config[\"min\"===e?\"_minTime\":\"_maxTime\"]=w.parseDate(n,\"H:i:S\")}};Object.defineProperty(w.config,\"minTime\",{get:function(){return w.config._minTime},set:s(\"min\")}),Object.defineProperty(w.config,\"maxTime\",{get:function(){return w.config._maxTime},set:s(\"max\")}),\"time\"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0),Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(x).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=re().className+\" \"+w.config.altInputClass),pe(\"onParseConfig\")}(),le(),w.input=re(),w.input?(w.input._type=w.input.type,w.input.type=\"text\",w.input.classList.add(\"flatpickr-input\"),w._input=w.input,w.config.altInput&&(w.altInput=s(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type=\"text\",w.input.setAttribute(\"type\",\"hidden\"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling)),w.config.allowInput||w._input.setAttribute(\"readonly\",\"readonly\"),w._positionElement=w.config.positionElement||w._input):w.config.errorHandler(new Error(\"Invalid input element specified\")),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||(\"INPUT\"!==w.input.nodeName&&\"TEXTAREA\"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&me(e,w.config.dateFormat),w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]),void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,\"H:i\")),void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,\"H:i\")),w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=s(\"div\",\"flatpickr-calendar\"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=s(\"div\",\"flatpickr-months\"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=s(\"span\",\"flatpickr-prev-month\"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=s(\"span\",\"flatpickr-next-month\"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,\"_hidePrevMonthArrow\",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(d(w.prevMonthNav,\"flatpickr-disabled\",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,\"_hideNextMonthArrow\",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(d(w.nextMonthNav,\"flatpickr-disabled\",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],De(),w.monthNav)),w.innerContainer=s(\"div\",\"flatpickr-innerContainer\"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add(\"hasWeeks\");var e=s(\"div\",\"flatpickr-weekwrapper\");e.appendChild(s(\"span\",\"flatpickr-weekday\",w.l10n.weekAbbreviation));var n=s(\"div\",\"flatpickr-weeks\");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=s(\"div\",\"flatpickr-rContainer\"),w.rContainer.appendChild($()),w.daysContainer||(w.daysContainer=s(\"div\",\"flatpickr-days\"),w.daysContainer.tabIndex=-1),J(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add(\"hasTime\"),w.config.noCalendar&&w.calendarContainer.classList.add(\"noCalendar\"),w.timeContainer=s(\"div\",\"flatpickr-time\"),w.timeContainer.tabIndex=-1;var e=s(\"span\",\"flatpickr-time-separator\",\":\"),n=m(\"flatpickr-hour\",{\"aria-label\":w.l10n.hourAriaLabel});w.hourElement=n.getElementsByTagName(\"input\")[0];var t=m(\"flatpickr-minute\",{\"aria-label\":w.l10n.minuteAriaLabel});if(w.minuteElement=t.getElementsByTagName(\"input\")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?w.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(w.config.defaultHour)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():w.config.defaultMinute),w.hourElement.setAttribute(\"step\",w.config.hourIncrement.toString()),w.minuteElement.setAttribute(\"step\",w.config.minuteIncrement.toString()),w.hourElement.setAttribute(\"min\",w.config.time_24hr?\"0\":\"1\"),w.hourElement.setAttribute(\"max\",w.config.time_24hr?\"23\":\"12\"),w.minuteElement.setAttribute(\"min\",\"0\"),w.minuteElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(n),w.timeContainer.appendChild(e),w.timeContainer.appendChild(t),w.config.time_24hr&&w.timeContainer.classList.add(\"time24hr\"),w.config.enableSeconds){w.timeContainer.classList.add(\"hasSeconds\");var a=m(\"flatpickr-second\");w.secondElement=a.getElementsByTagName(\"input\")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():w.config.defaultSeconds),w.secondElement.setAttribute(\"step\",w.minuteElement.getAttribute(\"step\")),w.secondElement.setAttribute(\"min\",\"0\"),w.secondElement.setAttribute(\"max\",\"59\"),w.timeContainer.appendChild(s(\"span\",\"flatpickr-time-separator\",\":\")),w.timeContainer.appendChild(a)}return w.config.time_24hr||(w.amPM=s(\"span\",\"flatpickr-am-pm\",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM)),w.timeContainer}()),d(w.calendarContainer,\"rangeMode\",\"range\"===w.config.mode),d(w.calendarContainer,\"animate\",!0===w.config.animate),d(w.calendarContainer,\"multiMonth\",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?\"inline\":\"static\"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=s(\"div\",\"flatpickr-wrapper\");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){if(w.config.wrap&&[\"open\",\"close\",\"toggle\",\"clear\"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll(\"[data-\"+e+\"]\"),(function(n){return N(n,\"click\",w[e])}))})),w.isMobile)!function(){var e=w.config.enableTime?w.config.noCalendar?\"time\":\"datetime-local\":\"date\";w.mobileInput=s(\"input\",w.input.className+\" flatpickr-mobile\"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr=\"datetime-local\"===e?\"Y-m-d\\\\TH:i:S\":\"date\"===e?\"Y-m-d\":\"H:i:S\",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr)),w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,\"Y-m-d\")),w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,\"Y-m-d\")),w.input.getAttribute(\"step\")&&(w.mobileInput.step=String(w.input.getAttribute(\"step\"))),w.input.type=\"hidden\",void 0!==w.altInput&&(w.altInput.type=\"hidden\");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}N(w.mobileInput,\"change\",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),pe(\"onChange\"),pe(\"onClose\")}))}();else{var e=l(ie,50);if(w._debouncedChange=l(A,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(w.daysContainer,\"mouseover\",(function(e){\"range\"===w.config.mode&&ae(g(e))})),N(window.document.body,\"keydown\",te),w.config.inline||w.config.static||N(window,\"resize\",e),void 0!==window.ontouchstart?N(window.document,\"touchstart\",Z):N(window.document,\"click\",Z),N(window.document,\"focus\",Z,{capture:!0}),!0===w.config.clickOpens&&(N(w._input,\"focus\",w.open),N(w._input,\"click\",w.open)),void 0!==w.daysContainer&&(N(w.monthNav,\"click\",Ce),N(w.monthNav,[\"keyup\",\"increment\"],F),N(w.daysContainer,\"click\",ue)),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement){var n=function(e){return g(e).select()};N(w.timeContainer,[\"increment\"],T),N(w.timeContainer,\"blur\",T,{capture:!0}),N(w.timeContainer,\"click\",Y),N([w.hourElement,w.minuteElement],[\"focus\",\"click\"],n),void 0!==w.secondElement&&N(w.secondElement,\"focus\",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&N(w.amPM,\"click\",(function(e){T(e),A()}))}w.config.allowInput&&N(w._input,\"blur\",ne)}}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&S(w.config.noCalendar?w.latestSelectedDateObj||w.config.minDate:void 0),be(!1)),E();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&ce(),pe(\"onReady\")}(),w}function E(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;ithis.render()));const{start:s,end:l,value:o,step:r,title:n}=this.model.properties;this.on_change([s,l,o,r],(()=>{const{start:t,end:e,value:i,step:s}=this._calc_to();this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0)}));const{bar_color:a}=this.model.properties;this.on_change(a,(()=>{this._set_bar_color()}));const{show_value:d}=this.model.properties;this.on_change([o,n,d],(()=>this._update_title()))}styles(){return[...super.styles(),p.default,u.default]}_update_title(){var t;(0,a.empty)(this.title_el);const e=null==this.model.title||0==this.model.title.length&&!this.model.show_value;if(this.title_el.style.display=e?\"none\":\"\",!e&&(0!=(null===(t=this.model.title)||void 0===t?void 0:t.length)&&(this.title_el.textContent=`${this.model.title}: `),this.model.show_value)){const{value:t}=this._calc_to(),e=t.map((t=>this.model.pretty(t))).join(\" .. \");this.title_el.appendChild((0,a.span)({class:m.slider_value},e))}}_set_bar_color(){if(!this.model.disabled){this.slider_el.querySelector(\".noUi-connect\").style.backgroundColor=(0,_.color2css)(this.model.bar_color)}}render(){super.render();const{start:t,end:e,value:i,step:s}=this._calc_to();let l;if(this.model.tooltips){const t={to:t=>this.model.pretty(t)};l=(0,d.repeat)(t,i.length)}else l=!1;if(null==this.slider_el){this.slider_el=(0,a.div)(),this._noUiSlider=n.default.create(this.slider_el,{range:{min:t,max:e},start:i,step:s,behaviour:this.model.behaviour,connect:this.model.connected,tooltips:l,orientation:this.model.orientation,direction:this.model.direction}),this._noUiSlider.on(\"slide\",((t,e,i)=>this._slide(i))),this._noUiSlider.on(\"change\",((t,e,i)=>this._change(i)));const o=(t,e)=>{if(!l)return;this.slider_el.querySelectorAll(\".noUi-handle\")[t].querySelector(\".noUi-tooltip\").style.display=e?\"block\":\"\"};this._noUiSlider.on(\"start\",((t,e)=>o(e,!0))),this._noUiSlider.on(\"end\",((t,e)=>o(e,!1)))}else this._noUiSlider.updateOptions({range:{min:t,max:e},start:i,step:s},!0);this._set_bar_color(),this.model.disabled?this.slider_el.setAttribute(\"disabled\",\"true\"):this.slider_el.removeAttribute(\"disabled\"),this.title_el=(0,a.div)({class:m.slider_title}),this._update_title(),this.group_el=(0,a.div)({class:v.input_group},this.title_el,this.slider_el),this.el.appendChild(this.group_el)}_slide(t){this.model.value=this._calc_from(t)}_change(t){const e=this._calc_from(t);this.model.setv({value:e,value_throttled:e})}}b.__name__=\"AbstractBaseSliderView\";class g extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:[this.model.value],step:this.model.step}}_calc_from([t]){return Number.isInteger(this.model.start)&&Number.isInteger(this.model.end)&&Number.isInteger(this.model.step)?Math.round(t):t}}i.AbstractSliderView=g,g.__name__=\"AbstractSliderView\";class f extends b{_calc_to(){return{start:this.model.start,end:this.model.end,value:this.model.value,step:this.model.step}}_calc_from(t){return t}}i.AbstractRangeSliderView=f,f.__name__=\"AbstractRangeSliderView\";class S extends h.OrientedControl{constructor(t){super(t),this.connected=!1}pretty(t){return this._formatter(t,this.format)}}i.AbstractSlider=S,r=S,S.__name__=\"AbstractSlider\",r.define((({Any:t,Boolean:e,Number:i,String:s,Color:l,Or:o,Enum:r,Ref:n,Nullable:a})=>({title:[a(s),\"\"],show_value:[e,!0],start:[t],end:[t],value:[t],value_throttled:[t],step:[i,1],format:[o(s,n(c.TickFormatter))],direction:[r(\"ltr\",\"rtl\"),\"ltr\"],tooltips:[e,!0],bar_color:[l,\"#e6e6e6\"]})))},\n", + " 462: function _(t,e,r,n,i){var o,s;o=this,s=function(t){\"use strict\";var e,r;function n(t){return\"object\"==typeof t&&\"function\"==typeof t.to}function i(t){t.parentElement.removeChild(t)}function o(t){return null!=t}function s(t){t.preventDefault()}function a(t){return\"number\"==typeof t&&!isNaN(t)&&isFinite(t)}function l(t,e,r){r>0&&(f(t,e),setTimeout((function(){d(t,e)}),r))}function u(t){return Math.max(Math.min(t,100),0)}function c(t){return Array.isArray(t)?t:[t]}function p(t){var e=(t=String(t)).split(\".\");return e.length>1?e[1].length:0}function f(t,e){t.classList&&!/\\s/.test(e)?t.classList.add(e):t.className+=\" \"+e}function d(t,e){t.classList&&!/\\s/.test(e)?t.classList.remove(e):t.className=t.className.replace(new RegExp(\"(^|\\\\b)\"+e.split(\" \").join(\"|\")+\"(\\\\b|$)\",\"gi\"),\" \")}function h(t){var e=void 0!==window.pageXOffset,r=\"CSS1Compat\"===(t.compatMode||\"\");return{x:e?window.pageXOffset:r?t.documentElement.scrollLeft:t.body.scrollLeft,y:e?window.pageYOffset:r?t.documentElement.scrollTop:t.body.scrollTop}}function m(t,e){return 100/(e-t)}function g(t,e,r){return 100*e/(t[r+1]-t[r])}function v(t,e){for(var r=1;t>=e[r];)r+=1;return r}function b(t,e,r){if(r>=t.slice(-1)[0])return 100;var n=v(r,t),i=t[n-1],o=t[n],s=e[n-1],a=e[n];return s+function(t,e){return g(t,t[0]<0?e+Math.abs(t[0]):e-t[0],0)}([i,o],r)/m(s,a)}function S(t,e,r,n){if(100===n)return n;var i=v(n,t),o=t[i-1],s=t[i];return r?n-o>(s-o)/2?s:o:e[i-1]?t[i-1]+function(t,e){return Math.round(t/e)*e}(n-t[i-1],e[i-1]):n}t.PipsMode=void 0,(e=t.PipsMode||(t.PipsMode={})).Range=\"range\",e.Steps=\"steps\",e.Positions=\"positions\",e.Count=\"count\",e.Values=\"values\",t.PipsType=void 0,(r=t.PipsType||(t.PipsType={}))[r.None=-1]=\"None\",r[r.NoValue=0]=\"NoValue\",r[r.LargeValue=1]=\"LargeValue\",r[r.SmallValue=2]=\"SmallValue\";var x=function(){function t(t,e,r){var n;this.xPct=[],this.xVal=[],this.xSteps=[],this.xNumSteps=[],this.xHighestCompleteStep=[],this.xSteps=[r||!1],this.xNumSteps=[!1],this.snap=e;var i=[];for(Object.keys(t).forEach((function(e){i.push([c(t[e]),e])})),i.sort((function(t,e){return t[0][0]-e[0][0]})),n=0;nthis.xPct[i+1];)i++;else t===this.xPct[this.xPct.length-1]&&(i=this.xPct.length-2);r||t!==this.xPct[i+1]||i++,null===e&&(e=[]);var o=1,s=e[i],a=0,l=0,u=0,c=0;for(n=r?(t-this.xPct[i])/(this.xPct[i+1]-this.xPct[i]):(this.xPct[i+1]-t)/(this.xPct[i+1]-this.xPct[i]);s>0;)a=this.xPct[i+1+c]-this.xPct[i+c],e[i+c]*o+100-100*n>100?(l=a*n,o=(s-100*n)/e[i+c],n=1):(l=e[i+c]*a/100*o,o=0),r?(u-=l,this.xPct.length+c>=1&&c--):(u+=l,this.xPct.length-c>=1&&c++),s=e[i+c]*o;return t+u},t.prototype.toStepping=function(t){return t=b(this.xVal,this.xPct,t)},t.prototype.fromStepping=function(t){return function(t,e,r){if(r>=100)return t.slice(-1)[0];var n=v(r,e),i=t[n-1],o=t[n],s=e[n-1];return function(t,e){return e*(t[1]-t[0])/100+t[0]}([i,o],(r-s)*m(s,e[n]))}(this.xVal,this.xPct,t)},t.prototype.getStep=function(t){return t=S(this.xPct,this.xSteps,this.snap,t)},t.prototype.getDefaultStep=function(t,e,r){var n=v(t,this.xPct);return(100===t||e&&t===this.xPct[n-1])&&(n=Math.max(n-1,1)),(this.xVal[n]-this.xVal[n-1])/r},t.prototype.getNearbySteps=function(t){var e=v(t,this.xPct);return{stepBefore:{startValue:this.xVal[e-2],step:this.xNumSteps[e-2],highestStep:this.xHighestCompleteStep[e-2]},thisStep:{startValue:this.xVal[e-1],step:this.xNumSteps[e-1],highestStep:this.xHighestCompleteStep[e-1]},stepAfter:{startValue:this.xVal[e],step:this.xNumSteps[e],highestStep:this.xHighestCompleteStep[e]}}},t.prototype.countStepDecimals=function(){var t=this.xNumSteps.map(p);return Math.max.apply(null,t)},t.prototype.hasNoSize=function(){return this.xVal[0]===this.xVal[this.xVal.length-1]},t.prototype.convert=function(t){return this.getStep(this.toStepping(t))},t.prototype.handleEntryPoint=function(t,e){var r;if(!a(r=\"min\"===t?0:\"max\"===t?100:parseFloat(t))||!a(e[0]))throw new Error(\"noUiSlider: 'range' value isn't numeric.\");this.xPct.push(r),this.xVal.push(e[0]);var n=Number(e[1]);r?this.xSteps.push(!isNaN(n)&&n):isNaN(n)||(this.xSteps[0]=n),this.xHighestCompleteStep.push(0)},t.prototype.handleStepPoint=function(t,e){if(e)if(this.xVal[t]!==this.xVal[t+1]){this.xSteps[t]=g([this.xVal[t],this.xVal[t+1]],e,0)/m(this.xPct[t],this.xPct[t+1]);var r=(this.xVal[t+1]-this.xVal[t])/this.xNumSteps[t],n=Math.ceil(Number(r.toFixed(3))-1),i=this.xVal[t]+this.xNumSteps[t]*n;this.xHighestCompleteStep[t]=i}else this.xSteps[t]=this.xHighestCompleteStep[t]=this.xVal[t]},t}(),y={to:function(t){return void 0===t?\"\":t.toFixed(2)},from:Number},w={target:\"target\",base:\"base\",origin:\"origin\",handle:\"handle\",handleLower:\"handle-lower\",handleUpper:\"handle-upper\",touchArea:\"touch-area\",horizontal:\"horizontal\",vertical:\"vertical\",background:\"background\",connect:\"connect\",connects:\"connects\",ltr:\"ltr\",rtl:\"rtl\",textDirectionLtr:\"txt-dir-ltr\",textDirectionRtl:\"txt-dir-rtl\",draggable:\"draggable\",drag:\"state-drag\",tap:\"state-tap\",active:\"active\",tooltip:\"tooltip\",pips:\"pips\",pipsHorizontal:\"pips-horizontal\",pipsVertical:\"pips-vertical\",marker:\"marker\",markerHorizontal:\"marker-horizontal\",markerVertical:\"marker-vertical\",markerNormal:\"marker-normal\",markerLarge:\"marker-large\",markerSub:\"marker-sub\",value:\"value\",valueHorizontal:\"value-horizontal\",valueVertical:\"value-vertical\",valueNormal:\"value-normal\",valueLarge:\"value-large\",valueSub:\"value-sub\"},E=\".__tooltips\",P=\".__aria\";function C(t,e){if(!a(e))throw new Error(\"noUiSlider: 'step' is not numeric.\");t.singleStep=e}function N(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardPageMultiplier' is not numeric.\");t.keyboardPageMultiplier=e}function V(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardMultiplier' is not numeric.\");t.keyboardMultiplier=e}function k(t,e){if(!a(e))throw new Error(\"noUiSlider: 'keyboardDefaultStep' is not numeric.\");t.keyboardDefaultStep=e}function M(t,e){if(\"object\"!=typeof e||Array.isArray(e))throw new Error(\"noUiSlider: 'range' is not an object.\");if(void 0===e.min||void 0===e.max)throw new Error(\"noUiSlider: Missing 'min' or 'max' in 'range'.\");t.spectrum=new x(e,t.snap||!1,t.singleStep)}function A(t,e){if(e=c(e),!Array.isArray(e)||!e.length)throw new Error(\"noUiSlider: 'start' option is incorrect.\");t.handles=e.length,t.start=e}function U(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'snap' option must be a boolean.\");t.snap=e}function D(t,e){if(\"boolean\"!=typeof e)throw new Error(\"noUiSlider: 'animate' option must be a boolean.\");t.animate=e}function O(t,e){if(\"number\"!=typeof e)throw new Error(\"noUiSlider: 'animationDuration' option must be a number.\");t.animationDuration=e}function L(t,e){var r,n=[!1];if(\"lower\"===e?e=[!0,!1]:\"upper\"===e&&(e=[!1,!0]),!0===e||!1===e){for(r=1;r1)throw new Error(\"noUiSlider: 'padding' option must not exceed 100% of the range.\")}}function F(t,e){switch(e){case\"ltr\":t.dir=0;break;case\"rtl\":t.dir=1;break;default:throw new Error(\"noUiSlider: 'direction' option was not recognized.\")}}function R(t,e){if(\"string\"!=typeof e)throw new Error(\"noUiSlider: 'behaviour' must be a string containing options.\");var r=e.indexOf(\"tap\")>=0,n=e.indexOf(\"drag\")>=0,i=e.indexOf(\"fixed\")>=0,o=e.indexOf(\"snap\")>=0,s=e.indexOf(\"hover\")>=0,a=e.indexOf(\"unconstrained\")>=0,l=e.indexOf(\"drag-all\")>=0;if(i){if(2!==t.handles)throw new Error(\"noUiSlider: 'fixed' behaviour must be used with 2 handles\");j(t,t.start[1]-t.start[0])}if(a&&(t.margin||t.limit))throw new Error(\"noUiSlider: 'unconstrained' behaviour cannot be used with margin or limit\");t.events={tap:r||o,drag:n,dragAll:l,fixed:i,snap:o,hover:s,unconstrained:a}}function _(t,e){if(!1!==e)if(!0===e||n(e)){t.tooltips=[];for(var r=0;r= 2) required for mode 'count'.\");for(var r=e.values-1,n=100/r,i=[];r--;)i[r]=r*n;return i.push(100),q(i,e.stepped)}return e.mode===t.PipsMode.Positions?q(e.values,e.stepped):e.mode===t.PipsMode.Values?e.stepped?e.values.map((function(t){return C.fromStepping(C.getStep(C.toStepping(t)))})):e.values:[]}(e),i={},o=C.xVal[0],s=C.xVal[C.xVal.length-1],a=!1,l=!1,u=0;return r=n.slice().sort((function(t,e){return t-e})),(n=r.filter((function(t){return!this[t]&&(this[t]=!0)}),{}))[0]!==o&&(n.unshift(o),a=!0),n[n.length-1]!==s&&(n.push(s),l=!0),n.forEach((function(r,o){var s,c,p,f,d,h,m,g,v,b,S=r,x=n[o+1],y=e.mode===t.PipsMode.Steps;for(y&&(s=C.xNumSteps[o]),s||(s=x-S),void 0===x&&(x=S),s=Math.max(s,1e-7),c=S;c<=x;c=Number((c+s).toFixed(7))){for(g=(d=(f=C.toStepping(c))-u)/(e.density||1),b=d/(v=Math.round(g)),p=1;p<=v;p+=1)i[(h=u+p*b).toFixed(5)]=[C.fromStepping(h),0];m=n.indexOf(c)>-1?t.PipsType.LargeValue:y?t.PipsType.SmallValue:t.PipsType.NoValue,!o&&a&&c!==x&&(m=0),c===x&&l||(i[f.toFixed(5)]=[c,m]),u=f}})),i}function Y(e,n,i){var o,s,a=U.createElement(\"div\"),l=((o={})[t.PipsType.None]=\"\",o[t.PipsType.NoValue]=r.cssClasses.valueNormal,o[t.PipsType.LargeValue]=r.cssClasses.valueLarge,o[t.PipsType.SmallValue]=r.cssClasses.valueSub,o),u=((s={})[t.PipsType.None]=\"\",s[t.PipsType.NoValue]=r.cssClasses.markerNormal,s[t.PipsType.LargeValue]=r.cssClasses.markerLarge,s[t.PipsType.SmallValue]=r.cssClasses.markerSub,s),c=[r.cssClasses.valueHorizontal,r.cssClasses.valueVertical],p=[r.cssClasses.markerHorizontal,r.cssClasses.markerVertical];function d(t,e){var n=e===r.cssClasses.value,i=n?l:u;return e+\" \"+(n?c:p)[r.ort]+\" \"+i[t]}return f(a,r.cssClasses.pips),f(a,0===r.ort?r.cssClasses.pipsHorizontal:r.cssClasses.pipsVertical),Object.keys(e).forEach((function(o){!function(e,o,s){if((s=n?n(o,s):s)!==t.PipsType.None){var l=T(a,!1);l.className=d(s,r.cssClasses.marker),l.style[r.style]=e+\"%\",s>t.PipsType.NoValue&&((l=T(a,!1)).className=d(s,r.cssClasses.value),l.setAttribute(\"data-value\",String(o)),l.style[r.style]=e+\"%\",l.innerHTML=String(i.to(o)))}}(o,e[o][0],e[o][1])})),a}function I(){g&&(i(g),g=null)}function W(t){I();var e=X(t),r=t.filter,n=t.format||{to:function(t){return String(Math.round(t))}};return g=w.appendChild(Y(e,r,n))}function $(){var t=a.getBoundingClientRect(),e=\"offset\"+[\"Width\",\"Height\"][r.ort];return 0===r.ort?t.width||a[e]:t.height||a[e]}function J(t,e,n,i){var o=function(o){var s,a,l=function(t,e,r){var n=0===t.type.indexOf(\"touch\"),i=0===t.type.indexOf(\"mouse\"),o=0===t.type.indexOf(\"pointer\"),s=0,a=0;if(0===t.type.indexOf(\"MSPointer\")&&(o=!0),\"mousedown\"===t.type&&!t.buttons&&!t.touches)return!1;if(n){var l=function(e){var n=e.target;return n===r||r.contains(n)||t.composed&&t.composedPath().shift()===r};if(\"touchstart\"===t.type){var u=Array.prototype.filter.call(t.touches,l);if(u.length>1)return!1;s=u[0].pageX,a=u[0].pageY}else{var c=Array.prototype.find.call(t.changedTouches,l);if(!c)return!1;s=c.pageX,a=c.pageY}}return e=e||h(U),(i||o)&&(s=t.clientX+e.x,a=t.clientY+e.y),t.pageOffset=e,t.points=[s,a],t.cursor=i||o,t}(o,i.pageOffset,i.target||e);return!!l&&!(F()&&!i.doNotReject)&&(s=w,a=r.cssClasses.tap,!((s.classList?s.classList.contains(a):new RegExp(\"\\\\b\"+a+\"\\\\b\").test(s.className))&&!i.doNotReject)&&!(t===x.start&&void 0!==l.buttons&&l.buttons>1)&&(!i.hover||!l.buttons)&&(y||l.preventDefault(),l.calcPoint=l.points[r.ort],void n(l,i)))},s=[];return t.split(\" \").forEach((function(t){e.addEventListener(t,o,!!y&&{passive:!0}),s.push([t,o])})),s}function K(t){var e,n,i,o,s,l,c=100*(t-(e=a,n=r.ort,i=e.getBoundingClientRect(),o=e.ownerDocument,s=o.documentElement,l=h(o),/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(l.x=0),n?i.top+l.y-s.clientTop:i.left+l.x-s.clientLeft))/$();return c=u(c),r.dir?100-c:c}function Q(t,e){\"mouseout\"===t.type&&\"HTML\"===t.target.nodeName&&null===t.relatedTarget&&tt(t,e)}function Z(t,e){if(-1===navigator.appVersion.indexOf(\"MSIE 9\")&&0===t.buttons&&0!==e.buttonsProperty)return tt(t,e);var n=(r.dir?-1:1)*(t.calcPoint-e.startCalcPoint);ut(n>0,100*n/e.baseSize,e.locations,e.handleNumbers,e.connect)}function tt(t,e){e.handle&&(d(e.handle,r.cssClasses.active),M-=1),e.listeners.forEach((function(t){D.removeEventListener(t[0],t[1])})),0===M&&(d(w,r.cssClasses.drag),pt(),t.cursor&&(O.style.cursor=\"\",O.removeEventListener(\"selectstart\",s))),e.handleNumbers.forEach((function(t){st(\"change\",t),st(\"set\",t),st(\"end\",t)}))}function et(t,e){if(!e.handleNumbers.some(R)){var n;1===e.handleNumbers.length&&(n=p[e.handleNumbers[0]].children[0],M+=1,f(n,r.cssClasses.active)),t.stopPropagation();var i=[],o=J(x.move,D,Z,{target:t.target,handle:n,connect:e.connect,listeners:i,startCalcPoint:t.calcPoint,baseSize:$(),pageOffset:t.pageOffset,handleNumbers:e.handleNumbers,buttonsProperty:t.buttons,locations:V.slice()}),a=J(x.end,D,tt,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers}),l=J(\"mouseout\",D,Q,{target:t.target,handle:n,listeners:i,doNotReject:!0,handleNumbers:e.handleNumbers});i.push.apply(i,o.concat(a,l)),t.cursor&&(O.style.cursor=getComputedStyle(t.target).cursor,p.length>1&&f(w,r.cssClasses.drag),O.addEventListener(\"selectstart\",s,!1)),e.handleNumbers.forEach((function(t){st(\"start\",t)}))}}function rt(t){t.stopPropagation();var e=K(t.calcPoint),n=function(t){var e=100,r=!1;return p.forEach((function(n,i){if(!R(i)){var o=V[i],s=Math.abs(o-t);(so||100===s&&100===e)&&(r=i,e=s)}})),r}(e);!1!==n&&(r.events.snap||l(w,r.cssClasses.tap,r.animationDuration),ft(n,e,!0,!0),pt(),st(\"slide\",n,!0),st(\"update\",n,!0),r.events.snap?et(t,{handleNumbers:[n]}):(st(\"change\",n,!0),st(\"set\",n,!0)))}function nt(t){var e=K(t.calcPoint),r=C.getStep(e),n=C.fromStepping(r);Object.keys(A).forEach((function(t){\"hover\"===t.split(\".\")[0]&&A[t].forEach((function(t){t.call(bt,n)}))}))}function it(t,e){A[t]=A[t]||[],A[t].push(e),\"update\"===t.split(\".\")[0]&&p.forEach((function(t,e){st(\"update\",e)}))}function ot(t){var e=t&&t.split(\".\")[0],r=e?t.substring(e.length):t;Object.keys(A).forEach((function(t){var n=t.split(\".\")[0],i=t.substring(n.length);e&&e!==n||r&&r!==i||function(t){return t===P||t===E}(i)&&r!==i||delete A[t]}))}function st(t,e,n){Object.keys(A).forEach((function(i){var o=i.split(\".\")[0];t===o&&A[i].forEach((function(t){t.call(bt,N.map(r.format.to),e,N.slice(),n||!1,V.slice(),bt)}))}))}function at(t,e,n,i,o,s){var a;return p.length>1&&!r.events.unconstrained&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.margin,!1),n=Math.max(n,a)),o&&e1&&r.limit&&(i&&e>0&&(a=C.getAbsoluteDistance(t[e-1],r.limit,!1),n=Math.min(n,a)),o&&e1?n.forEach((function(t,r){var n=at(o,t,o[t]+e,a[r],l[r],!1);!1===n?e=0:(e=n-o[t],o[t]=n)})):a=l=[!0];var u=!1;n.forEach((function(t,n){u=ft(t,r[t]+e,a[n],l[n])||u})),u&&(n.forEach((function(t){st(\"update\",t),st(\"slide\",t)})),null!=i&&st(\"drag\",s))}function ct(t,e){return r.dir?100-t-e:t}function pt(){k.forEach((function(t){var e=V[t]>50?-1:1,r=3+(p.length+e*t);p[t].style.zIndex=String(r)}))}function ft(t,e,n,i,o){return o||(e=at(V,t,e,n,i,!1)),!1!==e&&(function(t,e){V[t]=e,N[t]=C.fromStepping(e);var n=\"translate(\"+lt(10*(ct(e,0)-L)+\"%\",\"0\")+\")\";p[t].style[r.transformRule]=n,dt(t),dt(t+1)}(t,e),!0)}function dt(t){if(m[t]){var e=0,n=100;0!==t&&(e=V[t-1]),t!==m.length-1&&(n=V[t]);var i=n-e,o=\"translate(\"+lt(ct(e,i)+\"%\",\"0\")+\")\",s=\"scale(\"+lt(i/100,\"1\")+\")\";m[t].style[r.transformRule]=o+\" \"+s}}function ht(t,e){return null===t||!1===t||void 0===t?V[e]:(\"number\"==typeof t&&(t=String(t)),!1!==(t=r.format.from(t))&&(t=C.toStepping(t)),!1===t||isNaN(t)?V[e]:t)}function mt(t,e,n){var i=c(t),o=void 0===V[0];e=void 0===e||e,r.animate&&!o&&l(w,r.cssClasses.tap,r.animationDuration),k.forEach((function(t){ft(t,ht(i[t],t),!0,!1,n)}));var s=1===k.length?0:1;if(o&&C.hasNoSize()&&(n=!0,V[0]=0,k.length>1)){var a=100/(k.length-1);k.forEach((function(t){V[t]=t*a}))}for(;sn.stepAfter.startValue&&(o=n.stepAfter.startValue-i),s=i>n.thisStep.startValue?n.thisStep.step:!1!==n.stepBefore.step&&i-n.stepBefore.highestStep,100===e?o=null:0===e&&(s=null);var a=C.countStepDecimals();return null!==o&&!1!==o&&(o=Number(o.toFixed(a))),null!==s&&!1!==s&&(s=Number(s.toFixed(a))),[s,o]}f(b=w,r.cssClasses.target),0===r.dir?f(b,r.cssClasses.ltr):f(b,r.cssClasses.rtl),0===r.ort?f(b,r.cssClasses.horizontal):f(b,r.cssClasses.vertical),f(b,\"rtl\"===getComputedStyle(b).direction?r.cssClasses.textDirectionRtl:r.cssClasses.textDirectionLtr),a=T(b,r.cssClasses.base),function(t,e){var n=T(e,r.cssClasses.connects);p=[],(m=[]).push(z(n,t[0]));for(var i=0;i=0&&t .noUi-tooltip{-webkit-transform:translate(50%, 0);transform:translate(50%, 0);left:auto;bottom:10px;}.bk-root .noUi-vertical .noUi-origin > .noUi-tooltip{-webkit-transform:translate(0, -18px);transform:translate(0, -18px);top:auto;right:28px;}.bk-root .noUi-handle{cursor:grab;cursor:-webkit-grab;}.bk-root .noUi-handle.noUi-active{cursor:grabbing;cursor:-webkit-grabbing;}.bk-root .noUi-handle:after,.bk-root .noUi-handle:before{display:none;}.bk-root .noUi-tooltip{display:none;white-space:nowrap;}.bk-root .noUi-handle:hover .noUi-tooltip{display:block;}.bk-root .noUi-horizontal{width:100%;height:10px;}.bk-root .noUi-vertical{width:10px;height:100%;}.bk-root .noUi-horizontal .noUi-handle{width:14px;height:18px;right:-7px;top:-5px;}.bk-root .noUi-vertical .noUi-handle{width:18px;height:14px;right:-5px;top:-7px;}.bk-root .noUi-target.noUi-horizontal{margin:5px 0px;}.bk-root .noUi-target.noUi-vertical{margin:0px 5px;}'},\n", + " 465: function _(e,t,r,a,i){a();var s;const d=(0,e(1).__importDefault)(e(151)),o=e(461),_=e(8);class n extends o.AbstractSliderView{}r.DateSliderView=n,n.__name__=\"DateSliderView\";class c extends o.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,_.isString)(t)?(0,d.default)(e,t):t.compute(e)}}r.DateSlider=c,s=c,c.__name__=\"DateSlider\",s.prototype.default_view=n,s.override({format:\"%d %b %Y\"})},\n", + " 466: function _(e,t,r,a,i){a();var n;const s=(0,e(1).__importDefault)(e(151)),d=e(461),o=e(8);class _ extends d.AbstractRangeSliderView{}r.DatetimeRangeSliderView=_,_.__name__=\"DatetimeRangeSliderView\";class c extends d.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,t){return(0,o.isString)(t)?(0,s.default)(e,t):t.compute(e)}}r.DatetimeRangeSlider=c,n=c,c.__name__=\"DatetimeRangeSlider\",n.prototype.default_view=_,n.override({format:\"%d %b %Y %H:%M:%S\",step:36e5})},\n", + " 467: function _(e,t,s,r,i){var _;r();const n=e(468);class a extends n.MarkupView{render(){super.render(),this.model.render_as_text?this.markup_el.textContent=this.model.text:this.markup_el.innerHTML=this.has_math_disabled()?this.model.text:this.process_tex()}}s.DivView=a,a.__name__=\"DivView\";class d extends n.Markup{constructor(e){super(e)}}s.Div=d,_=d,d.__name__=\"Div\",_.prototype.default_view=a,_.define((({Boolean:e})=>({render_as_text:[e,!1]})))},\n", + " 468: function _(t,e,s,i,r){i();const a=t(1);var n;const o=t(210),d=t(43),h=t(137),l=t(512),_=(0,a.__importStar)(t(469));class u extends l.WidgetView{get provider(){return h.default_provider}async lazy_initialize(){await super.lazy_initialize(),\"not_started\"==this.provider.status&&await this.provider.fetch(),\"not_started\"!=this.provider.status&&\"loading\"!=this.provider.status||this.provider.ready.connect((()=>{this.contains_tex_string()&&this.rerender()}))}after_layout(){super.after_layout(),\"loading\"===this.provider.status&&(this._has_finished=!1)}rerender(){this.layout.invalidate_cache(),this.render(),this.root.compute_layout()}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>{this.rerender()}))}styles(){return[...super.styles(),_.default]}_update_layout(){this.layout=new o.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render();const t=Object.assign(Object.assign({},this.model.style),{display:\"inline-block\"});this.markup_el=(0,d.div)({class:_.clearfix,style:t}),this.el.appendChild(this.markup_el),\"failed\"!=this.provider.status&&\"loaded\"!=this.provider.status||(this._has_finished=!0)}has_math_disabled(){return this.model.disable_math||!this.contains_tex_string()}process_tex(){if(!this.provider.MathJax)return this.model.text;const{text:t}=this.model,e=this.provider.MathJax.find_tex(t),s=[];let i=0;for(const r of e)s.push(t.slice(i,r.start.n)),s.push(this.provider.MathJax.tex2svg(r.math,{display:r.display}).outerHTML),i=r.end.n;return i0}}s.MarkupView=u,u.__name__=\"MarkupView\";class p extends l.Widget{constructor(t){super(t)}}s.Markup=p,n=p,p.__name__=\"Markup\",n.define((({Boolean:t,String:e,Dict:s})=>({text:[e,\"\"],style:[s(e),{}],disable_math:[t,!1]})))},\n", + " 469: function _(o,r,e,t,a){t(),e.root=\"bk-root\",e.clearfix=\"bk-clearfix\",e.default='.bk-root .bk-clearfix:before,.bk-root .bk-clearfix:after{content:\"\";display:table;}.bk-root .bk-clearfix:after{clear:both;}'},\n", + " 470: function _(e,t,i,n,s){n();const o=e(1);var l;const r=e(441),d=e(251),_=e(43),u=e(8),c=(0,o.__importStar)(e(318)),h=(0,o.__importStar)(e(229)),m=h;class p extends r.AbstractButtonView{constructor(){super(...arguments),this._open=!1}styles(){return[...super.styles(),h.default]}render(){super.render();const e=(0,_.div)({class:[m.caret,m.down]});if(this.model.is_split){const t=this._render_button(e);t.classList.add(c.dropdown_toggle),t.addEventListener(\"click\",(()=>this._toggle_menu())),this.group_el.appendChild(t)}else this.button_el.appendChild(e);const t=this.model.menu.map(((e,t)=>{if(null==e)return(0,_.div)({class:m.divider});{const i=(0,u.isString)(e)?e:e[0],n=(0,_.div)(i);return n.addEventListener(\"click\",(()=>this._item_click(t))),n}}));this.menu=(0,_.div)({class:[m.menu,m.below]},t),this.el.appendChild(this.menu),(0,_.undisplay)(this.menu)}_show_menu(){if(!this._open){this._open=!0,(0,_.display)(this.menu);const e=t=>{const{target:i}=t;i instanceof HTMLElement&&!this.el.contains(i)&&(document.removeEventListener(\"click\",e),this._hide_menu())};document.addEventListener(\"click\",e)}}_hide_menu(){this._open&&(this._open=!1,(0,_.undisplay)(this.menu))}_toggle_menu(){this._open?this._hide_menu():this._show_menu()}click(){this.model.is_split?(this._hide_menu(),this.model.trigger_event(new d.ButtonClick),super.click()):this._toggle_menu()}_item_click(e){this._hide_menu();const t=this.model.menu[e];if(null!=t){const i=(0,u.isString)(t)?t:t[1];(0,u.isString)(i)?this.model.trigger_event(new d.MenuItemClick(i)):i.execute(this.model,{index:e})}}}i.DropdownView=p,p.__name__=\"DropdownView\";class a extends r.AbstractButton{constructor(e){super(e)}get is_split(){return this.split}}i.Dropdown=a,l=a,a.__name__=\"Dropdown\",l.prototype.default_view=p,l.define((({Null:e,Boolean:t,String:i,Array:n,Tuple:s,Or:o})=>({split:[t,!1],menu:[n(o(i,s(i,o(i)),e)),[]]}))),l.override({label:\"Dropdown\"})},\n", + " 471: function _(e,l,i,t,s){var n;t();const a=e(43),o=e(512);class d extends o.WidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render()))}render(){const{multiple:e,accept:l,disabled:i,width:t}=this.model;null==this.dialog_el&&(this.dialog_el=(0,a.input)({type:\"file\",multiple:e}),this.dialog_el.onchange=()=>{const{files:e}=this.dialog_el;null!=e&&this.load_files(e)},this.el.appendChild(this.dialog_el)),null!=l&&\"\"!=l&&(this.dialog_el.accept=l),this.dialog_el.style.width=`${t}px`,this.dialog_el.disabled=i}async load_files(e){const l=[],i=[],t=[];for(const s of e){const e=await this._read_file(s),[,n=\"\",,a=\"\"]=e.split(/[:;,]/,4);l.push(a),i.push(s.name),t.push(n)}this.model.multiple?this.model.setv({value:l,filename:i,mime_type:t}):this.model.setv({value:l[0],filename:i[0],mime_type:t[0]})}_read_file(e){return new Promise(((l,i)=>{const t=new FileReader;t.onload=()=>{var s;const{result:n}=t;null!=n?l(n):i(null!==(s=t.error)&&void 0!==s?s:new Error(`unable to read '${e.name}'`))},t.readAsDataURL(e)}))}}i.FileInputView=d,d.__name__=\"FileInputView\";class r extends o.Widget{constructor(e){super(e)}}i.FileInput=r,n=r,r.__name__=\"FileInput\",n.prototype.default_view=d,n.define((({Boolean:e,String:l,Array:i,Or:t})=>({value:[t(l,i(l)),\"\"],mime_type:[t(l,i(l)),\"\"],filename:[t(l,i(l)),\"\"],accept:[l,\"\"],multiple:[e,!1]})))},\n", + " 472: function _(e,t,i,s,n){s();const l=e(1);var o;const r=e(43),c=e(8),h=e(448),p=(0,l.__importStar)(e(449));class d extends h.InputWidgetView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.value.change,(()=>this.render_selection())),this.connect(this.model.properties.options.change,(()=>this.render())),this.connect(this.model.properties.name.change,(()=>this.render())),this.connect(this.model.properties.title.change,(()=>this.render())),this.connect(this.model.properties.size.change,(()=>this.render())),this.connect(this.model.properties.disabled.change,(()=>this.render()))}render(){super.render();const e=this.model.options.map((e=>{let t,i;return(0,c.isString)(e)?t=i=e:[t,i]=e,(0,r.option)({value:t},i)}));this.input_el=(0,r.select)({multiple:!0,class:p.input,name:this.model.name,disabled:this.model.disabled},e),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el),this.render_selection()}render_selection(){const e=new Set(this.model.value);for(const t of this.el.querySelectorAll(\"option\"))t.selected=e.has(t.value);this.input_el.size=this.model.size}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiSelectView=d,d.__name__=\"MultiSelectView\";class u extends h.InputWidget{constructor(e){super(e)}}i.MultiSelect=u,o=u,u.__name__=\"MultiSelect\",o.prototype.default_view=d,o.define((({Int:e,String:t,Array:i,Tuple:s,Or:n})=>({value:[i(t),[]],options:[i(n(t,s(t,t))),[]],size:[e,4]})))},\n", + " 473: function _(e,a,r,t,s){var n;t();const p=e(468),_=e(43);class i extends p.MarkupView{render(){super.render();const e=(0,_.p)({style:{margin:0}});this.has_math_disabled()?e.textContent=this.model.text:e.innerHTML=this.process_tex(),this.markup_el.appendChild(e)}}r.ParagraphView=i,i.__name__=\"ParagraphView\";class h extends p.Markup{constructor(e){super(e)}}r.Paragraph=h,n=h,h.__name__=\"Paragraph\",n.prototype.default_view=i},\n", + " 474: function _(e,s,t,n,r){var p;n();const u=e(446);class a extends u.TextInputView{render(){super.render(),this.input_el.type=\"password\"}}t.PasswordInputView=a,a.__name__=\"PasswordInputView\";class o extends u.TextInput{constructor(e){super(e)}}t.PasswordInput=o,p=o,o.__name__=\"PasswordInput\",p.prototype.default_view=a},\n", + " 475: function _(e,t,i,l,s){l();const o=e(1);var n;const h=(0,o.__importDefault)(e(476)),a=e(43),u=e(8),c=e(210),_=(0,o.__importStar)(e(449)),d=(0,o.__importDefault)(e(477)),r=e(448);class m extends r.InputWidgetView{constructor(){super(...arguments),this._last_height=null}connect_signals(){super.connect_signals(),this.connect(this.model.properties.disabled.change,(()=>this.set_disabled()));const{value:e,max_items:t,option_limit:i,search_option_limit:l,delete_button:s,placeholder:o,options:n,name:h,title:a}=this.model.properties;this.on_change([e,t,i,l,s,o,n,h,a],(()=>this.render()))}styles(){return[...super.styles(),d.default]}_update_layout(){this.layout=new c.CachedVariadicBox(this.el),this.layout.set_sizing(this.box_sizing())}render(){super.render(),this.input_el=(0,a.select)({multiple:!0,class:_.input,name:this.model.name,disabled:this.model.disabled}),this.group_el.appendChild(this.input_el);const e=new Set(this.model.value),t=this.model.options.map((t=>{let i,l;return(0,u.isString)(t)?i=l=t:[i,l]=t,{value:i,label:l,selected:e.has(i)}})),i=this.model.solid?\"solid\":\"light\",l=`choices__item ${i}`,s=`choices__button ${i}`,o={choices:t,duplicateItemsAllowed:!1,removeItemButton:this.model.delete_button,classNames:{item:l,button:s}};null!=this.model.placeholder&&(o.placeholderValue=this.model.placeholder),null!=this.model.max_items&&(o.maxItemCount=this.model.max_items),null!=this.model.option_limit&&(o.renderChoiceLimit=this.model.option_limit),null!=this.model.search_option_limit&&(o.searchResultLimit=this.model.search_option_limit),this.choice_el=new h.default(this.input_el,o);const n=()=>this.choice_el.containerOuter.element.getBoundingClientRect().height;null!=this._last_height&&this._last_height!=n()&&this.root.invalidate_layout(),this._last_height=n(),this.input_el.addEventListener(\"change\",(()=>this.change_input()))}set_disabled(){this.model.disabled?this.choice_el.disable():this.choice_el.enable()}change_input(){const e=null!=this.el.querySelector(\"select:focus\"),t=[];for(const e of this.el.querySelectorAll(\"option\"))e.selected&&t.push(e.value);this.model.value=t,super.change_input(),e&&this.input_el.focus()}}i.MultiChoiceView=m,m.__name__=\"MultiChoiceView\";class p extends r.InputWidget{constructor(e){super(e)}}i.MultiChoice=p,n=p,p.__name__=\"MultiChoice\",n.prototype.default_view=m,n.define((({Boolean:e,Int:t,String:i,Array:l,Tuple:s,Or:o,Nullable:n})=>({value:[l(i),[]],options:[l(o(i,s(i,i))),[]],max_items:[n(t),null],delete_button:[e,!0],placeholder:[n(i),null],option_limit:[n(t),null],search_option_limit:[n(t),null],solid:[e,!0]})))},\n", + " 476: function _(e,t,i,n,s){\n", + " /*! choices.js v9.0.1 | © 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n", + " var r,o;r=window,o=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"/public/assets/scripts/\",i(i.s=4)}([function(e,t,i){\"use strict\";var n=function(e){return function(e){return!!e&&\"object\"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return\"[object RegExp]\"===t||\"[object Date]\"===t||function(e){return e.$$typeof===s}(e)}(e)},s=\"function\"==typeof Symbol&&Symbol.for?Symbol.for(\"react.element\"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?l((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function o(e,t,i){return e.concat(t).map((function(e){return r(e,i)}))}function a(e){return Object.keys(e).concat(function(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter((function(t){return e.propertyIsEnumerable(t)})):[]}(e))}function c(e,t,i){var n={};return i.isMergeableObject(e)&&a(e).forEach((function(t){n[t]=r(e[t],i)})),a(t).forEach((function(s){(function(e,t){try{return t in e&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}catch(e){return!1}})(e,s)||(i.isMergeableObject(t[s])&&e[s]?n[s]=function(e,t){if(!t.customMerge)return l;var i=t.customMerge(e);return\"function\"==typeof i?i:l}(s,i)(e[s],t[s],i):n[s]=r(t[s],i))})),n}function l(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||o,i.isMergeableObject=i.isMergeableObject||n,i.cloneUnlessOtherwiseSpecified=r;var s=Array.isArray(t);return s===Array.isArray(e)?s?i.arrayMerge(e,t,i):c(e,t,i):r(t,i)}l.all=function(e,t){if(!Array.isArray(e))throw new Error(\"first argument should be an array\");return e.reduce((function(e,i){return l(e,i,t)}),{})};var h=l;e.exports=h},function(e,t,i){\"use strict\";(function(e,n){var s,r=i(3);s=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==e?e:n;var o=Object(r.a)(s);t.a=o}).call(this,i(5),i(6)(e))},function(e,t,i){\n", + " /*!\n", + " * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io)\n", + " *\n", + " * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)\n", + " * All Rights Reserved. Apache Software License 2.0\n", + " *\n", + " * http://www.apache.org/licenses/LICENSE-2.0\n", + " */\n", + " e.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var s in e)i.d(n,s,function(t){return e[t]}.bind(null,s));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=1)}([function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===Object.prototype.toString.call(e)}},function(e,t,i){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function s(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\\nSearch pattern: \"'.concat(e,'\"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,s=i.fullSearcher,r=this._search(n,s),o=r.weights,a=r.results;return this._computeScore(o,a),this.options.shouldSort&&this._sort(a),t.limit&&\"number\"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:\"_prepareSearchers\",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,s=i.length;n0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},s=[];if(\"string\"==typeof i[0]){for(var r=0,o=i.length;r1)throw new Error(\"Key weight has to be > 0 and <= 1\");p=p.name}else a[p]={weight:1};this._analyze({key:p,value:this.options.getFn(h,p),record:h,index:c},{resultMap:n,results:s,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:s}}},{key:\"_analyze\",value:function(e,t){var i=e.key,n=e.arrayIndex,s=void 0===n?-1:n,r=e.value,o=e.record,c=e.index,l=t.tokenSearchers,h=void 0===l?[]:l,u=t.fullSearcher,d=void 0===u?[]:u,p=t.resultMap,m=void 0===p?{}:p,f=t.results,v=void 0===f?[]:f;if(null!=r){var g=!1,_=-1,b=0;if(\"string\"==typeof r){this._log(\"\\nKey: \".concat(\"\"===i?\"-\":i));var y=d.search(r);if(this._log('Full text: \"'.concat(r,'\", score: ').concat(y.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),I=[],S=0;S-1&&(P=(P+_)/2),this._log(\"Score average:\",P);var D=!this.options.tokenize||!this.options.matchAllTokens||b>=h.length;if(this._log(\"\\nCheck Matches: \".concat(D)),(g||y.isMatch)&&D){var M=m[c];M?M.output.push({key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}):(m[c]={item:o,output:[{key:i,arrayIndex:s,value:r,score:P,matchedIndices:y.matchedIndices}]},v.push(m[c]))}}else if(a(r))for(var N=0,F=r.length;N-1&&(o.arrayIndex=r.arrayIndex),t.matches.push(o)}}})),this.options.includeScore&&s.push((function(e,t){t.score=e.score}));for(var r=0,o=e.length;ri)return s(e,this.pattern,n);var o=this.options,a=o.location,c=o.distance,l=o.threshold,h=o.findAllMatches,u=o.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:h,minMatchCharLength:u})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},function(e,t){var i=/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,s=new RegExp(t.replace(i,\"\\\\$&\").replace(n,\"|\")),r=e.match(s),o=!!r,a=[];if(o)for(var c=0,l=r.length;c=P;N-=1){var F=N-1,j=i[e.charAt(F)];if(j&&(E[F]=1),M[N]=(M[N+1]<<1|1)&j,0!==T&&(M[N]|=(O[N+1]|O[N])<<1|1|O[N+1]),M[N]&L&&(C=n(t,{errors:T,currentLocation:F,expectedLocation:v,distance:l}))<=_){if(_=C,(b=F)<=v)break;P=Math.max(1,2*v-b)}}if(n(t,{errors:T+1,currentLocation:v,expectedLocation:v,distance:l})>_)break;O=M}return{isMatch:b>=0,score:0===C?.001:C,matchedIndices:s(E,f)}}},function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,s=t.currentLocation,r=void 0===s?0:s,o=t.expectedLocation,a=void 0===o?0:o,c=t.distance,l=void 0===c?100:c,h=n/e.length,u=Math.abs(a-r);return l?h+u/l:u?1:h}},function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,s=-1,r=0,o=e.length;r=t&&i.push([n,s]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n/g,\"&rt;\").replace(/-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i})):e;case\"REMOVE_ITEM\":return t.choiceId>-1?e.map((function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i})):e;case\"FILTER_CHOICES\":return e.map((function(e){var i=e;return i.active=t.results.some((function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)})),i}));case\"ACTIVATE_CHOICES\":return e.map((function(e){var i=e;return i.active=t.active,i}));case\"CLEAR_CHOICES\":return v;default:return e}},general:_}),A=function(e,t){var i=e;if(\"CLEAR_ALL\"===t.type)i=void 0;else if(\"RESET_TO\"===t.type)return O(t.state);return C(i,t)};function L(e,t){for(var i=0;i\"'+I(e)+'\"'},maxItemText:function(e){return\"Only \"+e+\" values can be added\"},valueComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:{containerOuter:\"choices\",containerInner:\"choices__inner\",input:\"choices__input\",inputCloned:\"choices__input--cloned\",list:\"choices__list\",listItems:\"choices__list--multiple\",listSingle:\"choices__list--single\",listDropdown:\"choices__list--dropdown\",item:\"choices__item\",itemSelectable:\"choices__item--selectable\",itemDisabled:\"choices__item--disabled\",itemChoice:\"choices__item--choice\",placeholder:\"choices__placeholder\",group:\"choices__group\",groupHeading:\"choices__heading\",button:\"choices__button\",activeState:\"is-active\",focusState:\"is-focused\",openState:\"is-open\",disabledState:\"is-disabled\",highlightedState:\"is-highlighted\",selectedState:\"is-selected\",flippedState:\"is-flipped\",loadingState:\"is-loading\",noResults:\"has-no-results\",noChoices:\"has-no-choices\"}},D=\"showDropdown\",M=\"hideDropdown\",N=\"change\",F=\"choice\",j=\"search\",K=\"addItem\",R=\"removeItem\",H=\"highlightItem\",B=\"highlightChoice\",V=\"ADD_CHOICE\",G=\"FILTER_CHOICES\",q=\"ACTIVATE_CHOICES\",U=\"CLEAR_CHOICES\",z=\"ADD_GROUP\",W=\"ADD_ITEM\",X=\"REMOVE_ITEM\",$=\"HIGHLIGHT_ITEM\",J=46,Y=8,Z=13,Q=65,ee=27,te=38,ie=40,ne=33,se=34,re=\"text\",oe=\"select-one\",ae=\"select-multiple\",ce=function(){function e(e){var t=e.element,i=e.type,n=e.classNames,s=e.position;this.element=t,this.classNames=n,this.type=i,this.position=s,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t=e.prototype;return t.addEventListeners=function(){this.element.addEventListener(\"focus\",this._onFocus),this.element.addEventListener(\"blur\",this._onBlur)},t.removeEventListeners=function(){this.element.removeEventListener(\"focus\",this._onFocus),this.element.removeEventListener(\"blur\",this._onBlur)},t.shouldFlip=function(e){if(\"number\"!=typeof e)return!1;var t=!1;return\"auto\"===this.position?t=!window.matchMedia(\"(min-height: \"+(e+1)+\"px)\").matches:\"top\"===this.position&&(t=!0),t},t.setActiveDescendant=function(e){this.element.setAttribute(\"aria-activedescendant\",e)},t.removeActiveDescendant=function(){this.element.removeAttribute(\"aria-activedescendant\")},t.open=function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"true\"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},t.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute(\"aria-expanded\",\"false\"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},t.focus=function(){this.isFocussed||this.element.focus()},t.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},t.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},t.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute(\"aria-disabled\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"0\"),this.isDisabled=!1},t.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute(\"aria-disabled\",\"true\"),this.type===oe&&this.element.setAttribute(\"tabindex\",\"-1\"),this.isDisabled=!0},t.wrap=function(e){!function(e,t){void 0===t&&(t=document.createElement(\"div\")),e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)}(e,this.element)},t.unwrap=function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)},t.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute(\"aria-busy\",\"true\"),this.isLoading=!0},t.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute(\"aria-busy\"),this.isLoading=!1},t._onFocus=function(){this.isFocussed=!0},t._onBlur=function(){this.isFocussed=!1},e}();function le(e,t){for(var i=0;i0?this.element.scrollTop+o-s:e.offsetTop;requestAnimationFrame((function(){i._animateScroll(a,t)}))}},t._scrollDown=function(e,t,i){var n=(i-e)/t,s=n>1?n:1;this.element.scrollTop=e+s},t._scrollUp=function(e,t,i){var n=(e-i)/t,s=n>1?n:1;this.element.scrollTop=e-s},t._animateScroll=function(e,t){var i=this,n=this.element.scrollTop,s=!1;t>0?(this._scrollDown(n,4,e),ne&&(s=!0)),s&&requestAnimationFrame((function(){i._animateScroll(e,t)}))},e}();function de(e,t){for(var i=0;i0?\"treeitem\":\"option\"),Object.assign(g.dataset,{choice:\"\",id:l,value:h,selectText:i}),m?(g.classList.add(a),g.dataset.choiceDisabled=\"\",g.setAttribute(\"aria-disabled\",\"true\")):(g.classList.add(r),g.dataset.choiceSelectable=\"\"),g},input:function(e,t){var i=e.input,n=e.inputCloned,s=Object.assign(document.createElement(\"input\"),{type:\"text\",className:i+\" \"+n,autocomplete:\"off\",autocapitalize:\"off\",spellcheck:!1});return s.setAttribute(\"role\",\"textbox\"),s.setAttribute(\"aria-autocomplete\",\"list\"),s.setAttribute(\"aria-label\",t),s},dropdown:function(e){var t=e.list,i=e.listDropdown,n=document.createElement(\"div\");return n.classList.add(t,i),n.setAttribute(\"aria-expanded\",\"false\"),n},notice:function(e,t,i){var n=e.item,s=e.itemChoice,r=e.noResults,o=e.noChoices;void 0===i&&(i=\"\");var a=[n,s];return\"no-choices\"===i?a.push(o):\"no-results\"===i&&a.push(r),Object.assign(document.createElement(\"div\"),{innerHTML:t,className:a.join(\" \")})},option:function(e){var t=e.label,i=e.value,n=e.customProperties,s=e.active,r=e.disabled,o=new Option(t,i,!1,s);return n&&(o.dataset.customProperties=n),o.disabled=r,o}},be=function(e){return void 0===e&&(e=!0),{type:q,active:e}},ye=function(e,t){return{type:$,id:e,highlighted:t}},Ee=function(e){var t=e.value,i=e.id,n=e.active,s=e.disabled;return{type:z,value:t,id:i,active:n,disabled:s}},Ie=function(e){return{type:\"SET_IS_LOADING\",isLoading:e}};function Se(e,t){for(var i=0;i=0?this._store.getGroupById(s):null;return this._store.dispatch(ye(i,!0)),t&&this.passedElement.triggerEvent(H,{id:i,value:o,label:c,groupValue:l&&l.value?l.value:null}),this},r.unhighlightItem=function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,s=e.value,r=void 0===s?\"\":s,o=e.label,a=void 0===o?\"\":o,c=n>=0?this._store.getGroupById(n):null;return this._store.dispatch(ye(t,!1)),this.passedElement.triggerEvent(H,{id:t,value:r,label:a,groupValue:c&&c.value?c.value:null}),this},r.highlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.highlightItem(t)})),this},r.unhighlightAll=function(){var e=this;return this._store.items.forEach((function(t){return e.unhighlightItem(t)})),this},r.removeActiveItemsByValue=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.value===e})).forEach((function(e){return t._removeItem(e)})),this},r.removeActiveItems=function(e){var t=this;return this._store.activeItems.filter((function(t){return t.id!==e})).forEach((function(e){return t._removeItem(e)})),this},r.removeHighlightedItems=function(e){var t=this;return void 0===e&&(e=!1),this._store.highlightedActiveItems.forEach((function(i){t._removeItem(i),e&&t._triggerChange(i.value)})),this},r.showDropdown=function(e){var t=this;return this.dropdown.isActive||requestAnimationFrame((function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(D,{})})),this},r.hideDropdown=function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame((function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(M,{})})),this):this},r.getValue=function(e){void 0===e&&(e=!1);var t=this._store.activeItems.reduce((function(t,i){var n=e?i.value:i;return t.push(n),t}),[]);return this._isSelectOneElement?t[0]:t},r.setValue=function(e){var t=this;return this.initialised?(e.forEach((function(e){return t._setChoiceOrItem(e)})),this):this},r.setChoiceByValue=function(e){var t=this;return!this.initialised||this._isTextElement||(Array.isArray(e)?e:[e]).forEach((function(e){return t._findAndSelectChoiceByValue(e)})),this},r.setChoices=function(e,t,i,n){var s=this;if(void 0===e&&(e=[]),void 0===t&&(t=\"value\"),void 0===i&&(i=\"label\"),void 0===n&&(n=!1),!this.initialised)throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");if(!this._isSelectElement)throw new TypeError(\"setChoices can't be used with INPUT based Choices\");if(\"string\"!=typeof t||!t)throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");if(n&&this.clearChoices(),\"function\"==typeof e){var r=e(this);if(\"function\"==typeof Promise&&r instanceof Promise)return new Promise((function(e){return requestAnimationFrame(e)})).then((function(){return s._handleLoadingState(!0)})).then((function(){return r})).then((function(e){return s.setChoices(e,t,i,n)})).catch((function(e){s.config.silent||console.error(e)})).then((function(){return s._handleLoadingState(!1)})).then((function(){return s}));if(!Array.isArray(r))throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \"+typeof r);return this.setChoices(r,t,i,!1)}if(!Array.isArray(e))throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");return this.containerOuter.removeLoadingState(),this._startLoading(),e.forEach((function(e){e.choices?s._addGroup({id:parseInt(e.id,10)||null,group:e,valueKey:t,labelKey:i}):s._addChoice({value:e[t],label:e[i],isSelected:e.selected,isDisabled:e.disabled,customProperties:e.customProperties,placeholder:e.placeholder})})),this._stopLoading(),this},r.clearChoices=function(){return this._store.dispatch({type:U}),this},r.clearStore=function(){return this._store.dispatch({type:\"CLEAR_ALL\"}),this},r.clearInput=function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(be(!0))),this},r._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}},r._renderChoices=function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,s=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame((function(){return e.choiceList.scrollToTop()})),i.length>=1&&!this._isSearching){var r=n.filter((function(e){return!0===e.placeholder&&-1===e.groupId}));r.length>=1&&(s=this._createChoicesFragment(r,s)),s=this._createGroupsFragment(i,n,s)}else n.length>=1&&(s=this._createChoicesFragment(n,s));if(s.childNodes&&s.childNodes.length>0){var o=this._store.activeItems,a=this._canAddItem(o,this.input.value);a.response?(this.choiceList.append(s),this._highlightChoice()):this.choiceList.append(this._getTemplate(\"notice\",a.notice))}else{var c,l;this._isSearching?(l=\"function\"==typeof this.config.noResultsText?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate(\"notice\",l,\"no-results\")):(l=\"function\"==typeof this.config.noChoicesText?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate(\"notice\",l,\"no-choices\")),this.choiceList.append(c)}},r._renderItems=function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)},r._createGroupsFragment=function(e,t,i){var n=this;return void 0===i&&(i=document.createDocumentFragment()),this.config.shouldSort&&e.sort(this.config.sorter),e.forEach((function(e){var s=function(e){return t.filter((function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&(\"always\"===n.config.renderSelectedChoices||!t.selected)}))}(e);if(s.length>=1){var r=n._getTemplate(\"choiceGroup\",e);i.appendChild(r),n._createChoicesFragment(s,i,!0)}})),i},r._createChoicesFragment=function(e,t,i){var n=this;void 0===t&&(t=document.createDocumentFragment()),void 0===i&&(i=!1);var s=this.config,r=s.renderSelectedChoices,o=s.searchResultLimit,a=s.renderChoiceLimit,c=this._isSearching?w:this.config.sorter,l=function(e){if(\"auto\"!==r||n._isSelectOneElement||!e.selected){var i=n._getTemplate(\"choice\",e,n.config.itemSelectText);t.appendChild(i)}},h=e;\"auto\"!==r||this._isSelectOneElement||(h=e.filter((function(e){return!e.selected})));var u=h.reduce((function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e}),{placeholderChoices:[],normalChoices:[]}),d=u.placeholderChoices,p=u.normalChoices;(this.config.shouldSort||this._isSearching)&&p.sort(c);var m=h.length,f=this._isSelectOneElement?[].concat(d,p):p;this._isSearching?m=o:a&&a>0&&!i&&(m=a);for(var v=0;v=n){var o=s?this._searchChoices(e):0;this.passedElement.triggerEvent(j,{value:e,resultCount:o})}else r&&(this._isSearching=!1,this._store.dispatch(be(!0)))}},r._canAddItem=function(e,t){var i=!0,n=\"function\"==typeof this.config.addItemText?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var s=function(e,t,i){return void 0===i&&(i=\"value\"),e.some((function(e){return\"string\"==typeof t?e[i]===t.trim():e[i]===t}))}(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=\"function\"==typeof this.config.maxItemText?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&s&&i&&(i=!1,n=\"function\"==typeof this.config.uniqueItemText?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&\"function\"==typeof this.config.addItemFilter&&!this.config.addItemFilter(t)&&(i=!1,n=\"function\"==typeof this.config.customAddItemText?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}},r._searchChoices=function(e){var t=\"string\"==typeof e?e.trim():e,i=\"string\"==typeof this._currentValue?this._currentValue.trim():this._currentValue;if(t.length<1&&t===i+\" \")return 0;var n=this._store.searchableChoices,r=t,o=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:o}),c=new s.a(n,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(function(e){return{type:G,results:e}}(c)),c.length},r._addEventListeners=function(){var e=document.documentElement;e.addEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.addEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.addEventListener(\"mousedown\",this._onMouseDown,!0),e.addEventListener(\"click\",this._onClick,{passive:!0}),e.addEventListener(\"touchmove\",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener(\"mouseover\",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener(\"blur\",this._onBlur,{passive:!0})),this.input.element.addEventListener(\"keyup\",this._onKeyUp,{passive:!0}),this.input.element.addEventListener(\"focus\",this._onFocus,{passive:!0}),this.input.element.addEventListener(\"blur\",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener(\"reset\",this._onFormReset,{passive:!0}),this.input.addEventListeners()},r._removeEventListeners=function(){var e=document.documentElement;e.removeEventListener(\"touchend\",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener(\"keydown\",this._onKeyDown,!0),this.containerOuter.element.removeEventListener(\"mousedown\",this._onMouseDown,!0),e.removeEventListener(\"click\",this._onClick),e.removeEventListener(\"touchmove\",this._onTouchMove),this.dropdown.element.removeEventListener(\"mouseover\",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener(\"focus\",this._onFocus),this.containerOuter.element.removeEventListener(\"blur\",this._onBlur)),this.input.element.removeEventListener(\"keyup\",this._onKeyUp),this.input.element.removeEventListener(\"focus\",this._onFocus),this.input.element.removeEventListener(\"blur\",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener(\"reset\",this._onFormReset),this.input.removeEventListeners()},r._onKeyDown=function(e){var t,i=e.target,n=e.keyCode,s=e.ctrlKey,r=e.metaKey,o=this._store.activeItems,a=this.input.isFocussed,c=this.dropdown.isActive,l=this.itemList.hasChildren(),h=String.fromCharCode(n),u=J,d=Y,p=Z,m=Q,f=ee,v=te,g=ie,_=ne,b=se,y=s||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var E=((t={})[m]=this._onAKey,t[p]=this._onEnterKey,t[f]=this._onEscapeKey,t[v]=this._onDirectionKey,t[_]=this._onDirectionKey,t[g]=this._onDirectionKey,t[b]=this._onDirectionKey,t[d]=this._onDeleteKey,t[u]=this._onDeleteKey,t);E[n]&&E[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:o,hasFocusedInput:a,hasActiveDropdown:c,hasItems:l,hasCtrlDownKeyPressed:y})},r._onKeyUp=function(e){var t=e.target,i=e.keyCode,n=this.input.value,s=this._store.activeItems,r=this._canAddItem(s,n),o=J,a=Y;if(this._isTextElement)if(r.notice&&n){var c=this._getTemplate(\"notice\",r.notice);this.dropdown.element.innerHTML=c.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0);else{var l=(i===o||i===a)&&!t.value,h=!this._isTextElement&&this._isSearching,u=this._canSearch&&r.response;l&&h?(this._isSearching=!1,this._store.dispatch(be(!0))):u&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},r._onAKey=function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())},r._onEnterKey=function(e){var t=e.event,i=e.target,n=e.activeItems,s=e.hasActiveDropdown,r=Z,o=i.hasAttribute(\"data-button\");if(this._isTextElement&&i.value){var a=this.input.value;this._canAddItem(n,a).response&&(this.hideDropdown(!0),this._addItem({value:a}),this._triggerChange(a),this.clearInput())}if(o&&(this._handleButtonAction(n,i),t.preventDefault()),s){var c=this.dropdown.getChild(\".\"+this.config.classNames.highlightedState);c&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,c)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())},r._onEscapeKey=function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())},r._onDirectionKey=function(e){var t,i,n,s=e.event,r=e.hasActiveDropdown,o=e.keyCode,a=e.metaKey,c=ie,l=ne,h=se;if(r||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var u,d=o===c||o===h?1:-1,p=\"[data-choice-selectable]\";if(a||o===h||o===l)u=d>0?this.dropdown.element.querySelector(\"[data-choice-selectable]:last-of-type\"):this.dropdown.element.querySelector(p);else{var m=this.dropdown.element.querySelector(\".\"+this.config.classNames.highlightedState);u=m?function(e,t,i){if(void 0===i&&(i=1),e instanceof Element&&\"string\"==typeof t){for(var n=(i>0?\"next\":\"previous\")+\"ElementSibling\",s=e[n];s;){if(s.matches(t))return s;s=s[n]}return s}}(m,p,d):this.dropdown.element.querySelector(p)}u&&(t=u,i=this.choiceList.element,void 0===(n=d)&&(n=1),t&&(n>0?i.scrollTop+i.offsetHeight>=t.offsetTop+t.offsetHeight:t.offsetTop>=i.scrollTop)||this.choiceList.scrollToChildElement(u,d),this._highlightChoice(u)),s.preventDefault()}},r._onDeleteKey=function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,s=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(s),t.preventDefault())},r._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},r._onTouchEnd=function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation()),this._wasTap=!0},r._onMouseDown=function(e){var t=e.target;if(t instanceof HTMLElement){if(we&&this.choiceList.element.contains(t)){var i=this.choiceList.element.firstElementChild,n=\"ltr\"===this._direction?e.offsetX>=i.offsetWidth:e.offsetX0&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))},r._onFocus=function(e){var t,i=this,n=e.target;this.containerOuter.element.contains(n)&&((t={}).text=function(){n===i.input.element&&i.containerOuter.addFocusState()},t[\"select-one\"]=function(){i.containerOuter.addFocusState(),n===i.input.element&&i.showDropdown(!0)},t[\"select-multiple\"]=function(){n===i.input.element&&(i.showDropdown(!0),i.containerOuter.addFocusState())},t)[this.passedElement.element.type]()},r._onBlur=function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n,s=this._store.activeItems.some((function(e){return e.highlighted}));((n={}).text=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),s&&t.unhighlightAll(),t.hideDropdown(!0))},n[\"select-one\"]=function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},n[\"select-multiple\"]=function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),s&&t.unhighlightAll())},n)[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},r._onFormReset=function(){this._store.dispatch({type:\"RESET_TO\",state:this._initialState})},r._highlightChoice=function(e){var t=this;void 0===e&&(e=null);var i=Array.from(this.dropdown.element.querySelectorAll(\"[data-choice-selectable]\"));if(i.length){var n=e;Array.from(this.dropdown.element.querySelectorAll(\".\"+this.config.classNames.highlightedState)).forEach((function(e){e.classList.remove(t.config.classNames.highlightedState),e.setAttribute(\"aria-selected\",\"false\")})),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute(\"aria-selected\",\"true\"),this.passedElement.triggerEvent(B,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}},r._addItem=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.choiceId,r=void 0===s?-1:s,o=e.groupId,a=void 0===o?-1:o,c=e.customProperties,l=void 0===c?null:c,h=e.placeholder,u=void 0!==h&&h,d=e.keyCode,p=void 0===d?null:d,m=\"string\"==typeof t?t.trim():t,f=p,v=l,g=this._store.items,_=n||m,b=r||-1,y=a>=0?this._store.getGroupById(a):null,E=g?g.length+1:1;return this.config.prependValue&&(m=this.config.prependValue+m.toString()),this.config.appendValue&&(m+=this.config.appendValue.toString()),this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.choiceId,r=e.groupId,o=e.customProperties,a=e.placeholder,c=e.keyCode;return{type:W,value:t,label:i,id:n,choiceId:s,groupId:r,customProperties:o,placeholder:a,keyCode:c}}({value:m,label:_,id:E,choiceId:b,groupId:a,customProperties:l,placeholder:u,keyCode:f})),this._isSelectOneElement&&this.removeActiveItems(E),this.passedElement.triggerEvent(K,{id:E,value:m,label:_,customProperties:v,groupValue:y&&y.value?y.value:void 0,keyCode:f}),this},r._removeItem=function(e){if(!e||!E(\"Object\",e))return this;var t=e.id,i=e.value,n=e.label,s=e.choiceId,r=e.groupId,o=r>=0?this._store.getGroupById(r):null;return this._store.dispatch(function(e,t){return{type:X,id:e,choiceId:t}}(t,s)),o&&o.value?this.passedElement.triggerEvent(R,{id:t,value:i,label:n,groupValue:o.value}):this.passedElement.triggerEvent(R,{id:t,value:i,label:n}),this},r._addChoice=function(e){var t=e.value,i=e.label,n=void 0===i?null:i,s=e.isSelected,r=void 0!==s&&s,o=e.isDisabled,a=void 0!==o&&o,c=e.groupId,l=void 0===c?-1:c,h=e.customProperties,u=void 0===h?null:h,d=e.placeholder,p=void 0!==d&&d,m=e.keyCode,f=void 0===m?null:m;if(null!=t){var v=this._store.choices,g=n||t,_=v?v.length+1:1,b=this._baseId+\"-\"+this._idNames.itemChoice+\"-\"+_;this._store.dispatch(function(e){var t=e.value,i=e.label,n=e.id,s=e.groupId,r=e.disabled,o=e.elementId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:V,value:t,label:i,id:n,groupId:s,disabled:r,elementId:o,customProperties:a,placeholder:c,keyCode:l}}({id:_,groupId:l,elementId:b,value:t,label:g,disabled:a,customProperties:u,placeholder:p,keyCode:f})),r&&this._addItem({value:t,label:g,choiceId:_,customProperties:u,placeholder:p,keyCode:f})}},r._addGroup=function(e){var t=this,i=e.group,n=e.id,s=e.valueKey,r=void 0===s?\"value\":s,o=e.labelKey,a=void 0===o?\"label\":o,c=E(\"Object\",i)?i.choices:Array.from(i.getElementsByTagName(\"OPTION\")),l=n||Math.floor((new Date).valueOf()*Math.random()),h=!!i.disabled&&i.disabled;c?(this._store.dispatch(Ee({value:i.label,id:l,active:!0,disabled:h})),c.forEach((function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:E(\"Object\",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})}))):this._store.dispatch(Ee({value:i.label,id:i.id,active:!1,disabled:i.disabled}))},r._getTemplate=function(e){var t;if(!e)return null;for(var i=this.config.classNames,n=arguments.length,s=new Array(n>1?n-1:0),r=1;r{var e;return this.input_el.name=null!==(e=this.model.name)&&void 0!==e?e:\"\"})),this.connect(this.model.properties.value.change,(()=>{this.input_el.value=this.format_value,this.old_value=this.input_el.value})),this.connect(this.model.properties.low.change,(()=>{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(t<=l,\"Invalid bounds, low must be inferior to high\"),null!=e&&null!=t&&e{const{value:e,low:t,high:l}=this.model;null!=t&&null!=l&&(0,p.assert)(l>=t,\"Invalid bounds, high must be superior to low\"),null!=e&&null!=l&&e>l&&(this.model.value=l)})),this.connect(this.model.properties.high.change,(()=>this.input_el.placeholder=this.model.placeholder)),this.connect(this.model.properties.disabled.change,(()=>this.input_el.disabled=this.model.disabled)),this.connect(this.model.properties.placeholder.change,(()=>this.input_el.placeholder=this.model.placeholder))}get format_value(){return null!=this.model.value?this.model.pretty(this.model.value):\"\"}_set_input_filter(e){this.input_el.addEventListener(\"input\",(()=>{const{selectionStart:t,selectionEnd:l}=this.input_el;if(e(this.input_el.value))this.old_value=this.input_el.value;else{const e=this.old_value.length-this.input_el.value.length;this.input_el.value=this.old_value,t&&l&&this.input_el.setSelectionRange(t-1,l+e)}}))}render(){super.render(),this.input_el=(0,r.input)({type:\"text\",class:_.input,name:this.model.name,value:this.format_value,disabled:this.model.disabled,placeholder:this.model.placeholder}),this.old_value=this.format_value,this.set_input_filter(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.input_el.addEventListener(\"focusout\",(()=>this.input_el.value=this.format_value)),this.group_el.appendChild(this.input_el)}set_input_filter(){\"int\"==this.model.mode?this._set_input_filter((e=>m.test(e))):\"float\"==this.model.mode&&this._set_input_filter((e=>c.test(e)))}bound_value(e){let t=e;const{low:l,high:i}=this.model;return t=null!=l?Math.max(l,t):t,t=null!=i?Math.min(i,t):t,t}get value(){let e=\"\"!=this.input_el.value?Number(this.input_el.value):null;return null!=e&&(e=this.bound_value(e)),e}change_input(){null==this.value?this.model.value=null:Number.isNaN(this.value)||(this.model.value=this.value)}}l.NumericInputView=v,v.__name__=\"NumericInputView\";class g extends o.InputWidget{constructor(e){super(e)}_formatter(e,t){return(0,d.isString)(t)?h.format(e,t):t.doFormat([e],{loc:0})[0]}pretty(e){return null!=this.format?this._formatter(e,this.format):`${e}`}}l.NumericInput=g,u=g,g.__name__=\"NumericInput\",u.prototype.default_view=v,u.define((({Number:e,String:t,Enum:l,Ref:i,Or:n,Nullable:s})=>({value:[s(e),null],placeholder:[t,\"\"],mode:[l(\"int\",\"float\"),\"int\"],format:[s(n(t,i(a.TickFormatter))),null],low:[s(e),null],high:[s(e),null]})))},\n", + " 479: function _(e,t,r,s,n){var a;s();const o=e(468),_=e(43);class p extends o.MarkupView{render(){super.render();const e=(0,_.pre)({style:{overflow:\"auto\"}},this.model.text);this.markup_el.appendChild(e)}}r.PreTextView=p,p.__name__=\"PreTextView\";class u extends o.Markup{constructor(e){super(e)}}r.PreText=u,a=u,u.__name__=\"PreText\",a.prototype.default_view=p},\n", + " 480: function _(t,o,e,a,i){a();const n=t(1);var u;const s=t(452),c=t(43),_=(0,n.__importStar)(t(318));class r extends s.ButtonGroupView{change_active(t){this.model.active!==t&&(this.model.active=t)}_update_active(){const{active:t}=this.model;this._buttons.forEach(((o,e)=>{(0,c.classes)(o).toggle(_.active,t===e)}))}}e.RadioButtonGroupView=r,r.__name__=\"RadioButtonGroupView\";class l extends s.ButtonGroup{constructor(t){super(t)}}e.RadioButtonGroup=l,u=l,l.__name__=\"RadioButtonGroup\",u.prototype.default_view=r,u.define((({Int:t,Nullable:o})=>({active:[o(t),null]})))},\n", + " 481: function _(e,n,i,t,a){t();const s=e(1);var l;const o=e(43),d=e(34),p=e(455),r=(0,s.__importStar)(e(449));class u extends p.InputGroupView{render(){super.render();const e=(0,o.div)({class:[r.input_group,this.model.inline?r.inline:null]});this.el.appendChild(e);const n=(0,d.uniqueId)(),{active:i,labels:t}=this.model;this._inputs=[];for(let a=0;athis.change_active(a))),this._inputs.push(s),this.model.disabled&&(s.disabled=!0),a==i&&(s.checked=!0);const l=(0,o.label)(s,(0,o.span)(t[a]));e.appendChild(l)}}change_active(e){this.model.active=e}}i.RadioGroupView=u,u.__name__=\"RadioGroupView\";class c extends p.InputGroup{constructor(e){super(e)}}i.RadioGroup=c,l=c,c.__name__=\"RadioGroup\",l.prototype.default_view=u,l.define((({Boolean:e,Int:n,String:i,Array:t,Nullable:a})=>({active:[a(n),null],labels:[t(i),[]],inline:[e,!1]})))},\n", + " 482: function _(e,r,t,a,i){a();var n;const o=(0,e(1).__importStar)(e(153)),s=e(461),_=e(8);class d extends s.AbstractRangeSliderView{}t.RangeSliderView=d,d.__name__=\"RangeSliderView\";class c extends s.AbstractSlider{constructor(e){super(e),this.behaviour=\"drag\",this.connected=[!1,!0,!1]}_formatter(e,r){return(0,_.isString)(r)?o.format(e,r):r.compute(e)}}t.RangeSlider=c,n=c,c.__name__=\"RangeSlider\",n.prototype.default_view=d,n.override({format:\"0[.]00\"})},\n", + " 483: function _(e,t,n,s,i){s();const l=e(1);var u;const a=e(43),o=e(8),p=e(13),_=e(448),r=(0,l.__importStar)(e(449));class c extends _.InputWidgetView{constructor(){super(...arguments),this._known_values=new Set}connect_signals(){super.connect_signals();const{value:e,options:t}=this.model.properties;this.on_change(e,(()=>{this._update_value()})),this.on_change(t,(()=>{(0,a.empty)(this.input_el),(0,a.append)(this.input_el,...this.options_el()),this._update_value()}))}options_el(){const{_known_values:e}=this;function t(t){return t.map((t=>{let n,s;return(0,o.isString)(t)?n=s=t:[n,s]=t,e.add(n),(0,a.option)({value:n},s)}))}e.clear();const{options:n}=this.model;return(0,o.isArray)(n)?t(n):(0,p.entries)(n).map((([e,n])=>(0,a.optgroup)({label:e},t(n))))}render(){super.render(),this.input_el=(0,a.select)({class:r.input,name:this.model.name,disabled:this.model.disabled},this.options_el()),this._update_value(),this.input_el.addEventListener(\"change\",(()=>this.change_input())),this.group_el.appendChild(this.input_el)}change_input(){const e=this.input_el.value;this.model.value=e,super.change_input()}_update_value(){const{value:e}=this.model;this._known_values.has(e)?this.input_el.value=e:this.input_el.removeAttribute(\"value\")}}n.SelectView=c,c.__name__=\"SelectView\";class h extends _.InputWidget{constructor(e){super(e)}}n.Select=h,u=h,h.__name__=\"Select\",u.prototype.default_view=c,u.define((({String:e,Array:t,Tuple:n,Dict:s,Or:i})=>{const l=t(i(e,n(e,e)));return{value:[e,\"\"],options:[i(l,s(l)),[]]}}))},\n", + " 484: function _(e,t,r,i,a){i();var o;const s=(0,e(1).__importStar)(e(153)),_=e(461),n=e(8);class c extends _.AbstractSliderView{}r.SliderView=c,c.__name__=\"SliderView\";class d extends _.AbstractSlider{constructor(e){super(e),this.behaviour=\"tap\",this.connected=[!0,!1]}_formatter(e,t){return(0,n.isString)(t)?s.format(e,t):t.compute(e)}}r.Slider=d,o=d,d.__name__=\"Slider\",o.prototype.default_view=c,o.override({format:\"0[.]00\"})},\n", + " 485: function _(e,t,i,n,s){var l;n();const o=e(478),r=e(43),{min:a,max:h,floor:_,abs:u}=Math;function d(e){return _(e)!==e?e.toFixed(16).replace(/0+$/,\"\").split(\".\")[1].length:0}class p extends o.NumericInputView{*buttons(){yield this.btn_up_el,yield this.btn_down_el}initialize(){super.initialize(),this._handles={interval:void 0,timeout:void 0},this._interval=200}connect_signals(){super.connect_signals();const e=this.model.properties;this.on_change(e.disabled,(()=>{for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled)}))}render(){super.render(),this.wrapper_el=(0,r.div)({class:\"bk-spin-wrapper\"}),this.group_el.replaceChild(this.wrapper_el,this.input_el),this.btn_up_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-up\"}),this.btn_down_el=(0,r.button)({class:\"bk-spin-btn bk-spin-btn-down\"}),this.wrapper_el.appendChild(this.input_el),this.wrapper_el.appendChild(this.btn_up_el),this.wrapper_el.appendChild(this.btn_down_el);for(const e of this.buttons())(0,r.toggle_attribute)(e,\"disabled\",this.model.disabled),e.addEventListener(\"mousedown\",(e=>this._btn_mouse_down(e))),e.addEventListener(\"mouseup\",(()=>this._btn_mouse_up())),e.addEventListener(\"mouseleave\",(()=>this._btn_mouse_leave()));this.input_el.addEventListener(\"keydown\",(e=>this._input_key_down(e))),this.input_el.addEventListener(\"keyup\",(()=>this.model.value_throttled=this.model.value)),this.input_el.addEventListener(\"wheel\",(e=>this._input_mouse_wheel(e))),this.input_el.addEventListener(\"wheel\",function(e,t,i=!1){let n;return function(...s){const l=this,o=i&&void 0===n;void 0!==n&&clearTimeout(n),n=setTimeout((function(){n=void 0,i||e.apply(l,s)}),t),o&&e.apply(l,s)}}((()=>{this.model.value_throttled=this.model.value}),this.model.wheel_wait,!1))}get precision(){const{low:e,high:t,step:i}=this.model,n=d;return h(n(u(null!=e?e:0)),n(u(null!=t?t:0)),n(u(i)))}remove(){this._stop_incrementation(),super.remove()}_start_incrementation(e){clearInterval(this._handles.interval),this._counter=0;const{step:t}=this.model,i=e=>{if(this._counter+=1,this._counter%5==0){const t=Math.floor(this._counter/5);t<10?(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(e)),this._interval/(t+1))):t>=10&&t<=13&&(clearInterval(this._handles.interval),this._handles.interval=setInterval((()=>i(2*e)),this._interval/10))}this.increment(e)};this._handles.interval=setInterval((()=>i(e*t)),this._interval)}_stop_incrementation(){clearTimeout(this._handles.timeout),this._handles.timeout=void 0,clearInterval(this._handles.interval),this._handles.interval=void 0,this.model.value_throttled=this.model.value}_btn_mouse_down(e){e.preventDefault();const t=e.currentTarget===this.btn_up_el?1:-1;this.increment(t*this.model.step),this.input_el.focus(),this._handles.timeout=setTimeout((()=>this._start_incrementation(t)),this._interval)}_btn_mouse_up(){this._stop_incrementation()}_btn_mouse_leave(){this._stop_incrementation()}_input_mouse_wheel(e){if(document.activeElement===this.input_el){e.preventDefault();const t=e.deltaY>0?-1:1;this.increment(t*this.model.step)}}_input_key_down(e){switch(e.keyCode){case r.Keys.Up:return e.preventDefault(),this.increment(this.model.step);case r.Keys.Down:return e.preventDefault(),this.increment(-this.model.step);case r.Keys.PageUp:return e.preventDefault(),this.increment(this.model.page_step_multiplier*this.model.step);case r.Keys.PageDown:return e.preventDefault(),this.increment(-this.model.page_step_multiplier*this.model.step)}}adjust_to_precision(e){return this.bound_value(Number(e.toFixed(this.precision)))}increment(e){const{low:t,high:i}=this.model;null==this.model.value?e>0?this.model.value=null!=t?t:null!=i?a(0,i):0:e<0&&(this.model.value=null!=i?i:null!=t?h(t,0):0):this.model.value=this.adjust_to_precision(this.model.value+e)}change_input(){super.change_input(),this.model.value_throttled=this.model.value}}i.SpinnerView=p,p.__name__=\"SpinnerView\";class m extends o.NumericInput{constructor(e){super(e)}}i.Spinner=m,l=m,m.__name__=\"Spinner\",l.prototype.default_view=p,l.define((({Number:e,Nullable:t})=>({value_throttled:[t(e),null],step:[e,1],page_step_multiplier:[e,10],wheel_wait:[e,100]}))),l.override({mode:\"float\"})},\n", + " 486: function _(e,t,s,n,i){n();const o=e(1);var r;const c=e(447),l=e(43),p=(0,o.__importStar)(e(449));class _ extends c.TextLikeInputView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.rows.change,(()=>this.input_el.rows=this.model.rows)),this.connect(this.model.properties.cols.change,(()=>this.input_el.cols=this.model.cols))}_render_input(){this.input_el=(0,l.textarea)({class:p.input})}render(){super.render(),this.input_el.cols=this.model.cols,this.input_el.rows=this.model.rows}}s.TextAreaInputView=_,_.__name__=\"TextAreaInputView\";class a extends c.TextLikeInput{constructor(e){super(e)}}s.TextAreaInput=a,r=a,a.__name__=\"TextAreaInput\",r.prototype.default_view=_,r.define((({Int:e})=>({cols:[e,20],rows:[e,2]}))),r.override({max_length:500})},\n", + " 487: function _(e,t,s,c,i){c();const o=e(1);var a;const n=e(441),l=e(43),_=(0,o.__importStar)(e(318));class r extends n.AbstractButtonView{connect_signals(){super.connect_signals(),this.connect(this.model.properties.active.change,(()=>this._update_active()))}render(){super.render(),this._update_active()}click(){this.model.active=!this.model.active,super.click()}_update_active(){(0,l.classes)(this.button_el).toggle(_.active,this.model.active)}}s.ToggleView=r,r.__name__=\"ToggleView\";class g extends n.AbstractButton{constructor(e){super(e)}}s.Toggle=g,a=g,g.__name__=\"Toggle\",a.prototype.default_view=r,a.define((({Boolean:e})=>({active:[e,!1]}))),a.override({label:\"Toggle\"})},\n", + " }, 439, {\"models/widgets/main\":439,\"models/widgets/index\":440,\"models/widgets/abstract_button\":441,\"models/widgets/control\":442,\"models/widgets/widget\":512,\"models/widgets/abstract_icon\":444,\"models/widgets/autocomplete_input\":445,\"models/widgets/text_input\":446,\"models/widgets/text_like_input\":447,\"models/widgets/input_widget\":448,\"styles/widgets/inputs.css\":449,\"models/widgets/button\":450,\"models/widgets/checkbox_button_group\":451,\"models/widgets/button_group\":452,\"models/widgets/oriented_control\":453,\"models/widgets/checkbox_group\":454,\"models/widgets/input_group\":455,\"models/widgets/color_picker\":456,\"models/widgets/date_picker\":457,\"styles/widgets/flatpickr.css\":459,\"models/widgets/date_range_slider\":460,\"models/widgets/abstract_slider\":461,\"styles/widgets/sliders.css\":463,\"styles/widgets/nouislider.css\":464,\"models/widgets/date_slider\":465,\"models/widgets/datetime_range_slider\":466,\"models/widgets/div\":467,\"models/widgets/markup\":468,\"styles/clearfix.css\":469,\"models/widgets/dropdown\":470,\"models/widgets/file_input\":471,\"models/widgets/multiselect\":472,\"models/widgets/paragraph\":473,\"models/widgets/password_input\":474,\"models/widgets/multichoice\":475,\"styles/widgets/choices.css\":477,\"models/widgets/numeric_input\":478,\"models/widgets/pretext\":479,\"models/widgets/radio_button_group\":480,\"models/widgets/radio_group\":481,\"models/widgets/range_slider\":482,\"models/widgets/selectbox\":483,\"models/widgets/slider\":484,\"models/widgets/spinner\":485,\"models/widgets/textarea_input\":486,\"models/widgets/toggle\":487}, {});});\n", + "\n", + " /* END bokeh-widgets.min.js */\n", + " },\n", + " function(Bokeh) {\n", + " /* BEGIN bokeh-tables.min.js */\n", + " /*!\n", + " * Copyright (c) 2012 - 2022, Anaconda, Inc., and Bokeh Contributors\n", + " * All rights reserved.\n", + " * \n", + " * Redistribution and use in source and binary forms, with or without modification,\n", + " * are permitted provided that the following conditions are met:\n", + " * \n", + " * Redistributions of source code must retain the above copyright notice,\n", + " * this list of conditions and the following disclaimer.\n", + " * \n", + " * Redistributions in binary form must reproduce the above copyright notice,\n", + " * this list of conditions and the following disclaimer in the documentation\n", + " * and/or other materials provided with the distribution.\n", + " * \n", + " * Neither the name of Anaconda nor the names of any contributors\n", + " * may be used to endorse or promote products derived from this software\n", + " * without specific prior written permission.\n", + " * \n", + " * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n", + " * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n", + " * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n", + " * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE\n", + " * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n", + " * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n", + " * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n", + " * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n", + " * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n", + " * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF\n", + " * THE POSSIBILITY OF SUCH DAMAGE.\n", + " */\n", + " (function(root, factory) {\n", + " factory(root[\"Bokeh\"], \"2.4.3\");\n", + " })(this, function(Bokeh, version) {\n", + " let define;\n", + " return (function(modules, entry, aliases, externals) {\n", + " const bokeh = typeof Bokeh !== \"undefined\" && (version != null ? Bokeh[version] : Bokeh);\n", + " if (bokeh != null) {\n", + " return bokeh.register_plugin(modules, entry, aliases);\n", + " } else {\n", + " throw new Error(\"Cannot find Bokeh \" + version + \". You have to load it prior to loading plugins.\");\n", + " }\n", + " })\n", + " ({\n", + " 488: function _(t,e,o,r,s){r();const _=(0,t(1).__importStar)(t(489));o.Tables=_;(0,t(7).register_models)(_)},\n", + " 489: function _(g,a,r,e,t){e();const o=g(1);(0,o.__exportStar)(g(490),r),(0,o.__exportStar)(g(493),r),t(\"DataTable\",g(496).DataTable),t(\"TableColumn\",g(514).TableColumn),t(\"TableWidget\",g(513).TableWidget);var n=g(516);t(\"AvgAggregator\",n.AvgAggregator),t(\"MinAggregator\",n.MinAggregator),t(\"MaxAggregator\",n.MaxAggregator),t(\"SumAggregator\",n.SumAggregator);var A=g(517);t(\"GroupingInfo\",A.GroupingInfo),t(\"DataCube\",A.DataCube)},\n", + " 490: function _(e,t,i,s,a){s();const r=e(1);var l,n,u,d,o,p,_,c,h;const E=e(43),V=e(226),m=e(53),f=e(491),v=(0,r.__importStar)(e(492));class w extends V.DOMView{constructor(e){const{model:t,parent:i}=e.column;super(Object.assign({model:t,parent:i},e)),this.args=e,this.initialize(),this.render()}get emptyValue(){return null}initialize(){super.initialize(),this.inputEl=this._createInput(),this.defaultValue=null}async lazy_initialize(){throw new Error(\"unsupported\")}css_classes(){return super.css_classes().concat(v.cell_editor)}render(){super.render(),this.args.container.append(this.el),this.el.appendChild(this.inputEl),this.renderEditor(),this.disableNavigation()}renderEditor(){}disableNavigation(){this.inputEl.addEventListener(\"keydown\",(e=>{switch(e.keyCode){case E.Keys.Left:case E.Keys.Right:case E.Keys.Up:case E.Keys.Down:case E.Keys.PageUp:case E.Keys.PageDown:e.stopImmediatePropagation()}}))}destroy(){this.remove()}focus(){this.inputEl.focus()}show(){}hide(){}position(){}getValue(){return this.inputEl.value}setValue(e){this.inputEl.value=e}serializeValue(){return this.getValue()}isValueChanged(){return!(\"\"==this.getValue()&&null==this.defaultValue)&&this.getValue()!==this.defaultValue}applyValue(e,t){const i=this.args.grid.getData(),s=i.index.indexOf(e[f.DTINDEX_NAME]);i.setField(s,this.args.column.field,t)}loadValue(e){const t=e[this.args.column.field];this.defaultValue=null!=t?t:this.emptyValue,this.setValue(this.defaultValue)}validateValue(e){if(this.args.column.validator){const t=this.args.column.validator(e);if(!t.valid)return t}return{valid:!0,msg:null}}validate(){return this.validateValue(this.getValue())}}i.CellEditorView=w,w.__name__=\"CellEditorView\";class g extends m.Model{}i.CellEditor=g,g.__name__=\"CellEditor\";class x extends w{get emptyValue(){return\"\"}_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}}i.StringEditorView=x,x.__name__=\"StringEditorView\";class y extends g{}i.StringEditor=y,l=y,y.__name__=\"StringEditor\",l.prototype.default_view=x,l.define((({String:e,Array:t})=>({completions:[t(e),[]]})));class I extends w{_createInput(){return(0,E.textarea)()}renderEditor(){this.inputEl.focus(),this.inputEl.select()}}i.TextEditorView=I,I.__name__=\"TextEditorView\";class b extends g{}i.TextEditor=b,n=b,b.__name__=\"TextEditor\",n.prototype.default_view=I;class N extends w{_createInput(){return(0,E.select)()}renderEditor(){for(const e of this.model.options)this.inputEl.appendChild((0,E.option)({value:e},e));this.focus()}}i.SelectEditorView=N,N.__name__=\"SelectEditorView\";class C extends g{}i.SelectEditor=C,u=C,C.__name__=\"SelectEditor\",u.prototype.default_view=N,u.define((({String:e,Array:t})=>({options:[t(e),[]]})));class D extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.PercentEditorView=D,D.__name__=\"PercentEditorView\";class S extends g{}i.PercentEditor=S,d=S,S.__name__=\"PercentEditor\",d.prototype.default_view=D;class k extends w{_createInput(){return(0,E.input)({type:\"checkbox\"})}renderEditor(){this.focus()}loadValue(e){this.defaultValue=!!e[this.args.column.field],this.inputEl.checked=this.defaultValue}serializeValue(){return this.inputEl.checked}}i.CheckboxEditorView=k,k.__name__=\"CheckboxEditorView\";class z extends g{}i.CheckboxEditor=z,o=z,z.__name__=\"CheckboxEditor\",o.prototype.default_view=k;class P extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseInt(this.getValue(),10))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid integer\"}:super.validateValue(e)}}i.IntEditorView=P,P.__name__=\"IntEditorView\";class T extends g{}i.IntEditor=T,p=T,T.__name__=\"IntEditor\",p.prototype.default_view=P,p.define((({Int:e})=>({step:[e,1]})));class K extends w{_createInput(){return(0,E.input)({type:\"text\"})}renderEditor(){this.inputEl.focus(),this.inputEl.select()}remove(){super.remove()}serializeValue(){var e;return null!==(e=parseFloat(this.getValue()))&&void 0!==e?e:0}loadValue(e){super.loadValue(e),this.inputEl.defaultValue=this.defaultValue,this.inputEl.select()}validateValue(e){return isNaN(e)?{valid:!1,msg:\"Please enter a valid number\"}:super.validateValue(e)}}i.NumberEditorView=K,K.__name__=\"NumberEditorView\";class A extends g{}i.NumberEditor=A,_=A,A.__name__=\"NumberEditor\",_.prototype.default_view=K,_.define((({Number:e})=>({step:[e,.01]})));class M extends w{_createInput(){return(0,E.input)({type:\"text\"})}}i.TimeEditorView=M,M.__name__=\"TimeEditorView\";class O extends g{}i.TimeEditor=O,c=O,O.__name__=\"TimeEditor\",c.prototype.default_view=M;class F extends w{_createInput(){return(0,E.input)({type:\"text\"})}get emptyValue(){return new Date}renderEditor(){this.inputEl.focus(),this.inputEl.select()}destroy(){super.destroy()}show(){super.show()}hide(){super.hide()}position(){return super.position()}getValue(){}setValue(e){}}i.DateEditorView=F,F.__name__=\"DateEditorView\";class L extends g{}i.DateEditor=L,h=L,L.__name__=\"DateEditor\",h.prototype.default_view=F},\n", + " 491: function _(_,n,i,t,d){t(),i.DTINDEX_NAME=\"__bkdt_internal_index__\"},\n", + " 492: function _(e,l,o,t,r){t(),o.root=\"bk-root\",o.data_table=\"bk-data-table\",o.cell_special_defaults=\"bk-cell-special-defaults\",o.cell_select=\"bk-cell-select\",o.cell_index=\"bk-cell-index\",o.header_index=\"bk-header-index\",o.cell_editor=\"bk-cell-editor\",o.cell_editor_completion=\"bk-cell-editor-completion\",o.default='.bk-root .bk-data-table{box-sizing:content-box;font-size:11px;}.bk-root .bk-data-table input[type=\"checkbox\"]{margin-left:4px;margin-right:4px;}.bk-root .bk-cell-special-defaults{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .bk-cell-select{border-right-color:silver;border-right-style:solid;background:#f5f5f5;}.bk-root .slick-cell.bk-cell-index{border-right-color:silver;border-right-style:solid;background:#f5f5f5;text-align:right;background:#f0f0f0;color:#909090;}.bk-root .bk-header-index .slick-column-name{float:right;}.bk-root .slick-row.selected .bk-cell-index{background-color:transparent;}.bk-root .slick-row.odd{background:#f0f0f0;}.bk-root .slick-cell{padding-left:4px;padding-right:4px;border-right-color:transparent;border:0.25px solid transparent;}.bk-root .slick-cell .bk{line-height:inherit;}.bk-root .slick-cell.active{border-style:dashed;}.bk-root .slick-cell.selected{background-color:#F0F8FF;}.bk-root .slick-cell.editable{padding-left:0;padding-right:0;}.bk-root .bk-cell-editor{display:contents;}.bk-root .bk-cell-editor input,.bk-root .bk-cell-editor select{width:100%;height:100%;border:0;margin:0;padding:0;outline:0;background:transparent;vertical-align:baseline;}.bk-root .bk-cell-editor input{padding-left:4px;padding-right:4px;}.bk-root .bk-cell-editor-completion{font-size:11px;}'},\n", + " 493: function _(t,e,r,n,o){n();const a=t(1);var s,i,l,c,u,m;const _=(0,a.__importDefault)(t(151)),d=(0,a.__importStar)(t(153)),f=t(494),g=t(43),F=t(20),h=t(8),p=t(34),S=t(22),x=t(53);class b extends x.Model{constructor(t){super(t)}doFormat(t,e,r,n,o){return null==r?\"\":`${r}`.replace(/&/g,\"&\").replace(//g,\">\")}}r.CellFormatter=b,b.__name__=\"CellFormatter\";class M extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{font_style:a,text_align:s,text_color:i}=this,l=(0,g.div)(null==r?\"\":`${r}`);switch(a){case\"bold\":l.style.fontWeight=\"bold\";break;case\"italic\":l.style.fontStyle=\"italic\"}return null!=s&&(l.style.textAlign=s),null!=i&&(l.style.color=(0,S.color2css)(i)),l.outerHTML}}r.StringFormatter=M,s=M,M.__name__=\"StringFormatter\",s.define((({Color:t,Nullable:e,String:r})=>({font_style:[F.FontStyle,\"normal\"],text_align:[F.TextAlign,\"left\"],text_color:[e(t),null],nan_format:[r,\"-\"]})));class w extends M{constructor(t){super(t)}get scientific_limit_low(){return 10**this.power_limit_low}get scientific_limit_high(){return 10**this.power_limit_high}doFormat(t,e,r,n,o){const a=Math.abs(r)<=this.scientific_limit_low||Math.abs(r)>=this.scientific_limit_high;let s=this.precision;return s<1&&(s=1),r=null==r||isNaN(r)?this.nan_format:0==r?(0,p.to_fixed)(r,1):a?r.toExponential(s):(0,p.to_fixed)(r,s),super.doFormat(t,e,r,n,o)}}r.ScientificFormatter=w,i=w,w.__name__=\"ScientificFormatter\",i.define((({Number:t})=>({precision:[t,10],power_limit_high:[t,5],power_limit_low:[t,-3]})));class C extends M{constructor(t){super(t)}doFormat(t,e,r,n,o){const{format:a,language:s,nan_format:i}=this,l=(()=>{switch(this.rounding){case\"round\":case\"nearest\":return Math.round;case\"floor\":case\"rounddown\":return Math.floor;case\"ceil\":case\"roundup\":return Math.ceil}})();return r=null==r||isNaN(r)?i:d.format(r,a,s,l),super.doFormat(t,e,r,n,o)}}r.NumberFormatter=C,l=C,C.__name__=\"NumberFormatter\",l.define((({String:t})=>({format:[t,\"0,0\"],language:[t,\"en\"],rounding:[F.RoundingFunction,\"round\"]})));class y extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){return r?(0,g.i)({class:this.icon}).outerHTML:\"\"}}r.BooleanFormatter=y,c=y,y.__name__=\"BooleanFormatter\",c.define((({String:t})=>({icon:[t,\"check\"]})));class N extends M{constructor(t){super(t)}getFormat(){switch(this.format){case\"ATOM\":case\"W3C\":case\"RFC-3339\":case\"ISO-8601\":return\"%Y-%m-%d\";case\"COOKIE\":return\"%a, %d %b %Y\";case\"RFC-850\":return\"%A, %d-%b-%y\";case\"RFC-1123\":case\"RFC-2822\":return\"%a, %e %b %Y\";case\"RSS\":case\"RFC-822\":case\"RFC-1036\":return\"%a, %e %b %y\";case\"TIMESTAMP\":return;default:return this.format}}doFormat(t,e,r,n,o){const{nan_format:a}=this;let s;return s=null==(r=(0,h.isString)(r)?parseInt(r,10):r)||isNaN(r)||-9223372036854776===r?a:(0,_.default)(r,this.getFormat()),super.doFormat(t,e,s,n,o)}}r.DateFormatter=N,u=N,N.__name__=\"DateFormatter\",u.define((({String:t})=>({format:[t,\"ISO-8601\"]})));class T extends b{constructor(t){super(t)}doFormat(t,e,r,n,o){const{template:a}=this;if(null==r)return\"\";return f._.template(a)(Object.assign(Object.assign({},o),{value:r}))}}r.HTMLTemplateFormatter=T,m=T,T.__name__=\"HTMLTemplateFormatter\",m.define((({String:t})=>({template:[t,\"<%= value %>\"]})))},\n", + " 494: function _(e,n,t,f,i){var o=e(495),d=o.template;function r(e,n,t){return d(e,n,t)}r._=o,n.exports=r,\"function\"==typeof define&&define.amd?define((function(){return r})):\"undefined\"==typeof window&&\"undefined\"==typeof navigator||(window.UnderscoreTemplate=r)},\n", + " 495: function _(r,e,n,t,a){\n", + " // (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n", + " // Underscore may be freely distributed under the MIT license.\n", + " var u={},c=Array.prototype,o=Object.prototype,l=c.slice,i=o.toString,f=o.hasOwnProperty,s=c.forEach,p=Object.keys,_=Array.isArray,h=function(){},v=h.each=h.forEach=function(r,e,n){if(null!=r)if(s&&r.forEach===s)r.forEach(e,n);else if(r.length===+r.length){for(var t=0,a=r.length;t\":\">\",'\"':\""\",\"'\":\"'\"}},y={escape:new RegExp(\"[\"+h.keys(g.escape).join(\"\")+\"]\",\"g\")};h.each([\"escape\"],(function(r){h[r]=function(e){return null==e?\"\":(\"\"+e).replace(y[r],(function(e){return g[r][e]}))}})),h.templateSettings={evaluate:/<%([\\s\\S]+?)%>/g,interpolate:/<%=([\\s\\S]+?)%>/g,escape:/<%-([\\s\\S]+?)%>/g};var j=/(.)^/,b={\"'\":\"'\",\"\\\\\":\"\\\\\",\"\\r\":\"r\",\"\\n\":\"n\",\"\\t\":\"t\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},w=/\\\\|'|\\r|\\n|\\t|\\u2028|\\u2029/g;h.template=function(r,e,n){var t;n=h.defaults({},n,h.templateSettings);var a=new RegExp([(n.escape||j).source,(n.interpolate||j).source,(n.evaluate||j).source].join(\"|\")+\"|$\",\"g\"),u=0,c=\"__p+='\";r.replace(a,(function(e,n,t,a,o){return c+=r.slice(u,o).replace(w,(function(r){return\"\\\\\"+b[r]})),n&&(c+=\"'+\\n((__t=(\"+n+\"))==null?'':_.escape(__t))+\\n'\"),t&&(c+=\"'+\\n((__t=(\"+t+\"))==null?'':__t)+\\n'\"),a&&(c+=\"';\\n\"+a+\"\\n__p+='\"),u=o+e.length,e})),c+=\"';\\n\",n.variable||(c=\"with(obj||{}){\\n\"+c+\"}\\n\"),c=\"var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\\n\"+c+\"return __p;\\n\";try{t=new Function(n.variable||\"obj\",\"_\",c)}catch(r){throw r.source=c,r}if(e)return t(e,h);var o=function(r){return t.call(this,r,h)};return o.source=\"function(\"+(n.variable||\"obj\")+\"){\\n\"+c+\"}\",o},e.exports=h},\n", + " 496: function _(e,t,i,s,o){s();const n=e(1);var l;const r=e(497),d=e(501),a=e(502),h=e(503),u=e(34),c=e(8),_=e(9),m=e(13),g=e(19),p=e(512),f=e(491),b=e(513),w=e(514),x=(0,n.__importStar)(e(492)),C=x,v=(0,n.__importDefault)(e(515));i.AutosizeModes={fit_columns:\"FCV\",fit_viewport:\"FVC\",force_fit:\"LFF\",none:\"NOA\"};let z=!1;class A{constructor(e,t){this.init(e,t)}init(e,t){if(f.DTINDEX_NAME in e.data)throw new Error(`special name ${f.DTINDEX_NAME} cannot be used as a data table column`);this.source=e,this.view=t,this.index=[...this.view.indices]}getLength(){return this.index.length}getItem(e){const t={};for(const i of(0,m.keys)(this.source.data))t[i]=this.source.data[i][this.index[e]];return t[f.DTINDEX_NAME]=this.index[e],t}getField(e,t){return t==f.DTINDEX_NAME?this.index[e]:this.source.data[t][this.index[e]]}setField(e,t,i){const s=this.index[e];this.source.patch({[t]:[[s,i]]})}getRecords(){return(0,_.range)(0,this.getLength()).map((e=>this.getItem(e)))}getItems(){return this.getRecords()}slice(e,t,i){return e=null!=e?e:0,t=null!=t?t:this.getLength(),i=null!=i?i:1,(0,_.range)(e,t,i).map((e=>this.getItem(e)))}sort(e){let t=e.map((e=>[e.sortCol.field,e.sortAsc?1:-1]));0==t.length&&(t=[[f.DTINDEX_NAME,1]]);const i=this.getRecords(),s=this.index.slice();this.index.sort(((e,o)=>{for(const[n,l]of t){const t=i[s.indexOf(e)][n],r=i[s.indexOf(o)][n];if(t!==r)return(0,c.isNumber)(t)&&(0,c.isNumber)(r)?l*(t-r||+isNaN(t)-+isNaN(r)):`${t}`>`${r}`?l:-l}return 0}))}}i.TableDataProvider=A,A.__name__=\"TableDataProvider\";class M extends p.WidgetView{constructor(){super(...arguments),this._in_selection_update=!1,this._width=null}connect_signals(){super.connect_signals(),this.connect(this.model.change,(()=>this.render())),this.connect(this.model.source.streaming,(()=>this.updateGrid())),this.connect(this.model.source.patching,(()=>this.updateGrid())),this.connect(this.model.source.change,(()=>this.updateGrid())),this.connect(this.model.source.properties.data.change,(()=>this.updateGrid())),this.connect(this.model.source.selected.change,(()=>this.updateSelection())),this.connect(this.model.source.selected.properties.indices.change,(()=>this.updateSelection()));for(const e of this.model.columns)this.connect(e.change,(()=>{this.invalidate_layout(),this.render()}))}remove(){var e;null===(e=this.grid)||void 0===e||e.destroy(),super.remove()}styles(){return[...super.styles(),v.default,x.default]}update_position(){super.update_position(),this.grid.resizeCanvas()}after_layout(){super.after_layout(),this.updateLayout(!0,!1)}box_sizing(){const e=super.box_sizing();return\"fit_viewport\"===this.model.autosize_mode&&null!=this._width&&(e.width=this._width),e}updateLayout(e,t){const s=this.autosize;s===i.AutosizeModes.fit_columns||s===i.AutosizeModes.force_fit?(e||this.grid.resizeCanvas(),this.grid.autosizeColumns()):e&&t&&s===i.AutosizeModes.fit_viewport&&this.invalidate_layout()}updateGrid(){if(this.model.view.compute_indices(),this.data.init(this.model.source,this.model.view),this.model.sortable){const e=this.grid.getColumns(),t=this.grid.getSortColumns().map((t=>({sortCol:{field:e[this.grid.getColumnIndex(t.columnId)].field},sortAsc:t.sortAsc})));this.data.sort(t)}this.grid.invalidate(),this.updateLayout(!0,!0)}updateSelection(){if(this._in_selection_update)return;const{selected:e}=this.model.source,t=e.indices.map((e=>this.data.index.indexOf(e))).sort();this._in_selection_update=!0,this.grid.setSelectedRows(t),this._in_selection_update=!1;const i=this.grid.getViewport(),s=this.model.get_scroll_index(i,t);null!=s&&this.grid.scrollRowToTop(s)}newIndexColumn(){return{id:(0,u.uniqueId)(),name:this.model.index_header,field:f.DTINDEX_NAME,width:this.model.index_width,behavior:\"select\",cannotTriggerInsert:!0,resizable:!1,selectable:!1,sortable:!0,cssClass:C.cell_index,headerCssClass:C.header_index}}css_classes(){return super.css_classes().concat(C.data_table)}get autosize(){let e;return e=!0===this.model.fit_columns?i.AutosizeModes.force_fit:!1===this.model.fit_columns?i.AutosizeModes.none:i.AutosizeModes[this.model.autosize_mode],e}render(){var e;const t=this.model.columns.filter((e=>e.visible)).map((e=>Object.assign(Object.assign({},e.toColumn()),{parent:this})));let s=null;if(\"checkbox\"==this.model.selectable&&(s=new d.CheckboxSelectColumn({cssClass:C.cell_select}),t.unshift(s.getColumnDefinition())),null!=this.model.index_position){const e=this.model.index_position,i=this.newIndexColumn();-1==e?t.push(i):e<-1?t.splice(e+1,0,i):t.splice(e,0,i)}let{reorderable:o}=this.model;!o||\"undefined\"!=typeof $&&null!=$.fn&&null!=$.fn.sortable||(z||(g.logger.warn(\"jquery-ui is required to enable DataTable.reorderable\"),z=!0),o=!1);let n=-1,l=!1;const{frozen_rows:u,frozen_columns:_}=this.model,m=null==_?-1:_-1;null!=u&&(l=u<0,n=Math.abs(u));const p={enableCellNavigation:!1!==this.model.selectable,enableColumnReorder:o,autosizeColsMode:this.autosize,multiColumnSort:this.model.sortable,editable:this.model.editable,autoEdit:this.model.auto_edit,autoHeight:!1,rowHeight:this.model.row_height,frozenColumn:m,frozenRow:n,frozenBottom:l},f=null!=this.grid;if(this.data=new A(this.model.source,this.model.view),this.grid=new h.Grid(this.el,this.data,t,p),this.autosize==i.AutosizeModes.fit_viewport){this.grid.autosizeColumns();let i=0;for(const s of t)i+=null!==(e=s.width)&&void 0!==e?e:0;this._width=Math.ceil(i)}if(this.grid.onSort.subscribe(((e,t)=>{if(!this.model.sortable)return;const i=t.sortCols;null!=i&&(this.data.sort(i),this.grid.invalidate(),this.updateSelection(),this.grid.render(),this.model.header_row||this._hide_header(),this.model.update_sort_columns(i))})),!1!==this.model.selectable){this.grid.setSelectionModel(new r.RowSelectionModel({selectActiveRow:null==s})),null!=s&&this.grid.registerPlugin(s);const e={dataItemColumnValueExtractor(e,t){let i=e[t.field];return(0,c.isString)(i)&&(i=i.replace(/\\n/g,\"\\\\n\")),i},includeHeaderWhenCopying:!1};this.grid.registerPlugin(new a.CellExternalCopyManager(e)),this.grid.onSelectedRowsChanged.subscribe(((e,t)=>{this._in_selection_update||(this.model.source.selected.indices=t.rows.map((e=>this.data.index[e])))})),this.updateSelection(),this.model.header_row||this._hide_header()}f&&this.updateLayout(f,!1)}_hide_header(){for(const e of this.el.querySelectorAll(\".slick-header-columns\"))e.style.height=\"0px\";this.grid.resizeCanvas()}}i.DataTableView=M,M.__name__=\"DataTableView\";class D extends b.TableWidget{constructor(e){super(e),this._sort_columns=[]}get sort_columns(){return this._sort_columns}update_sort_columns(e){this._sort_columns=e.map((({sortCol:e,sortAsc:t})=>({field:e.field,sortAsc:t})))}get_scroll_index(e,t){return this.scroll_to_selection&&0!=t.length?(0,_.some)(t,(t=>e.top<=t&&t<=e.bottom))?null:Math.max(0,Math.min(...t)-1):null}}i.DataTable=D,l=D,D.__name__=\"DataTable\",l.prototype.default_view=M,l.define((({Array:e,Boolean:t,Int:i,Ref:s,String:o,Enum:n,Or:l,Nullable:r})=>({autosize_mode:[n(\"fit_columns\",\"fit_viewport\",\"none\",\"force_fit\"),\"force_fit\"],auto_edit:[t,!1],columns:[e(s(w.TableColumn)),[]],fit_columns:[r(t),null],frozen_columns:[r(i),null],frozen_rows:[r(i),null],sortable:[t,!0],reorderable:[t,!0],editable:[t,!1],selectable:[l(t,n(\"checkbox\")),!0],index_position:[r(i),0],index_header:[o,\"#\"],index_width:[i,40],scroll_to_selection:[t,!0],header_row:[t,!0],row_height:[i,25]}))),l.override({width:600,height:400})},\n", + " 497: function _(e,t,n,o,r){var l=e(498),i=e(500);t.exports={RowSelectionModel:function(e){var t,n,o,r=[],c=this,u=new i.EventHandler,s={selectActiveRow:!0};function a(e){return function(){n||(n=!0,e.apply(this,arguments),n=!1)}}function f(e){for(var t=[],n=0;n=0&&r0&&t-1 in e)}w.fn=w.prototype={jquery:b,constructor:w,length:0,toArray:function(){return i.call(this)},get:function(e){return null==e?i.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,(function(t,n){return e.call(t,n,t)})))},slice:function(){return this.pushStack(i.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(w.grep(this,(function(e,t){return(t+1)%2})))},odd:function(){return this.pushStack(w.grep(this,(function(e,t){return t%2})))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n+~]|[\\\\x20\\\\t\\\\r\\\\n\\\\f])[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*(even|odd|(([+-]|)(\\\\d*)n|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:([+-]|)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(\\\\d+)|))[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\([\\\\x20\\\\t\\\\r\\\\n\\\\f]*((?:-\\\\d)?\\\\d*)[\\\\x20\\\\t\\\\r\\\\n\\\\f]*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}[\\\\x20\\\\t\\\\r\\\\n\\\\f]?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){p()},ae=be((function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()}),{dir:\"parentNode\",next:\"legend\"});try{H.apply(D=O.call(w.childNodes),w.childNodes),D[w.childNodes.length].nodeType}catch(e){H={apply:D.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function se(e,t,r,i){var o,s,l,c,f,h,y,m=t&&t.ownerDocument,w=t?t.nodeType:9;if(r=r||[],\"string\"!=typeof e||!e||1!==w&&9!==w&&11!==w)return r;if(!i&&(p(t),t=t||d,g)){if(11!==w&&(f=Z.exec(e)))if(o=f[1]){if(9===w){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return H.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return H.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!A[e+\" \"]&&(!v||!v.test(e))&&(1!==w||\"object\"!==t.nodeName.toLowerCase())){if(y=e,m=t,1===w&&(U.test(e)||z.test(e))){for((m=ee.test(e)&&ye(t.parentNode)||t)===t&&n.scope||((c=t.getAttribute(\"id\"))?c=c.replace(re,ie):t.setAttribute(\"id\",c=b)),s=(h=a(e)).length;s--;)h[s]=(c?\"#\"+c:\":scope\")+\" \"+xe(h[s]);y=h.join(\",\")}try{return H.apply(r,m.querySelectorAll(y)),r}catch(t){A(e,!0)}finally{c===b&&t.removeAttribute(\"id\")}}}return u(e.replace($,\"$1\"),t,r,i)}function ue(){var e=[];return function t(n,i){return e.push(n+\" \")>r.cacheLength&&delete t[e.shift()],t[n+\" \"]=i}}function le(e){return e[b]=!0,e}function ce(e){var t=d.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){for(var n=e.split(\"|\"),i=n.length;i--;)r.attrHandle[n[i]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function de(e){return function(t){return\"input\"===t.nodeName.toLowerCase()&&t.type===e}}function he(e){return function(t){var n=t.nodeName.toLowerCase();return(\"input\"===n||\"button\"===n)&&t.type===e}}function ge(e){return function(t){return\"form\"in t?t.parentNode&&!1===t.disabled?\"label\"in t?\"label\"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ae(t)===e:t.disabled===e:\"label\"in t&&t.disabled===e}}function ve(e){return le((function(t){return t=+t,le((function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))}))}))}function ye(e){return e&&void 0!==e.getElementsByTagName&&e}for(t in n=se.support={},o=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},p=se.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!=d&&9===a.nodeType&&a.documentElement?(h=(d=a).documentElement,g=!o(d),w!=d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener(\"unload\",oe,!1):i.attachEvent&&i.attachEvent(\"onunload\",oe)),n.scope=ce((function(e){return h.appendChild(e).appendChild(d.createElement(\"div\")),void 0!==e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length})),n.attributes=ce((function(e){return e.className=\"i\",!e.getAttribute(\"className\")})),n.getElementsByTagName=ce((function(e){return e.appendChild(d.createComment(\"\")),!e.getElementsByTagName(\"*\").length})),n.getElementsByClassName=K.test(d.getElementsByClassName),n.getById=ce((function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length})),n.getById?(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(te,ne);return function(e){var n=void 0!==e.getAttributeNode&&e.getAttributeNode(\"id\");return n&&n.value===t}},r.find.ID=function(e,t){if(void 0!==t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];for(i=t.getElementsByName(e),r=0;o=i[r++];)if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if(void 0!==t.getElementsByClassName&&g)return t.getElementsByClassName(e)},y=[],v=[],(n.qsa=K.test(d.querySelectorAll))&&(ce((function(e){var t;h.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+b+\"-]\").length||v.push(\"~=\"),(t=d.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[[\\\\x20\\\\t\\\\r\\\\n\\\\f]*name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*=[\\\\x20\\\\t\\\\r\\\\n\\\\f]*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+b+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")})),ce((function(e){e.innerHTML=\"\";var t=d.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name[\\\\x20\\\\t\\\\r\\\\n\\\\f]*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")}))),(n.matchesSelector=K.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ce((function(e){n.disconnectedMatch=m.call(e,\"*\"),m.call(e,\"[s!='']:x\"),y.push(\"!=\",F)})),v=v.length&&new RegExp(v.join(\"|\")),y=y.length&&new RegExp(y.join(\"|\")),t=K.test(h.compareDocumentPosition),x=t||K.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},N=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e==d||e.ownerDocument==w&&x(w,e)?-1:t==d||t.ownerDocument==w&&x(w,t)?1:c?P(c,e)-P(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==d?-1:t==d?1:i?-1:o?1:c?P(c,e)-P(c,t):0;if(i===o)return pe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?pe(a[r],s[r]):a[r]==w?-1:s[r]==w?1:0},d):d},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(p(e),n.matchesSelector&&g&&!A[t+\" \"]&&(!y||!y.test(t))&&(!v||!v.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){A(t,!0)}return se(t,d,null,[e]).length>0},se.contains=function(e,t){return(e.ownerDocument||e)!=d&&p(e),x(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&j.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},se.escape=function(e){return(e+\"\").replace(re,ie)},se.error=function(e){throw new Error(\"Syntax error, unrecognized expression: \"+e)},se.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(N),f){for(;t=e[o++];)t===e[o]&&(i=r.push(o));for(;i--;)e.splice(r[i],1)}return c=null,e},i=se.getText=function(e){var t,n=\"\",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if(\"string\"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=i(t);return n},r=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{\">\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+\" \"];return t||(t=new RegExp(\"(^|[\\\\x20\\\\t\\\\r\\\\n\\\\f])\"+e+\"(\"+M+\"|$)\"))&&E(e,(function(e){return t.test(\"string\"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute(\"class\")||\"\")}))},ATTR:function(e,t,n){return function(r){var i=se.attr(r,e);return null==i?\"!=\"===t:!t||(i+=\"\",\"=\"===t?i===n:\"!=\"===t?i!==n:\"^=\"===t?n&&0===i.indexOf(n):\"*=\"===t?n&&i.indexOf(n)>-1:\"$=\"===t?n&&i.slice(-n.length)===n:\"~=\"===t?(\" \"+i.replace(B,\" \")+\" \").indexOf(n)>-1:\"|=\"===t&&(i===n||i.slice(0,n.length+1)===n+\"-\"))}},CHILD:function(e,t,n,r,i){var o=\"nth\"!==e.slice(0,3),a=\"last\"!==e.slice(-4),s=\"of-type\"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?\"nextSibling\":\"previousSibling\",v=t.parentNode,y=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(v){if(o){for(;g;){for(p=t;p=p[g];)if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g=\"only\"===e&&!h&&\"nextSibling\"}return!0}if(h=[a?v.firstChild:v.lastChild],a&&m){for(x=(d=(l=(c=(f=(p=v)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&v.childNodes[d];p=++d&&p&&p[g]||(x=d=0)||h.pop();)if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)for(;(p=++d&&p&&p[g]||(x=d=0)||h.pop())&&((s?p.nodeName.toLowerCase()!==y:1!==p.nodeType)||!++x||(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p!==t)););return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||se.error(\"unsupported pseudo: \"+e);return i[b]?i(t):i.length>1?(n=[e,e,\"\",t],r.setFilters.hasOwnProperty(e.toLowerCase())?le((function(e,n){for(var r,o=i(e,t),a=o.length;a--;)e[r=P(e,o[a])]=!(n[r]=o[a])})):function(e){return i(e,0,n)}):i}},pseudos:{not:le((function(e){var t=[],n=[],r=s(e.replace($,\"$1\"));return r[b]?le((function(e,t,n,i){for(var o,a=r(e,null,i,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))})):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}})),has:le((function(e){return function(t){return se(e,t).length>0}})),contains:le((function(e){return e=e.replace(te,ne),function(t){return(t.textContent||i(t)).indexOf(e)>-1}})),lang:le((function(e){return V.test(e||\"\")||se.error(\"unsupported lang: \"+e),e=e.replace(te,ne).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute(\"xml:lang\")||t.getAttribute(\"lang\"))return(n=n.toLowerCase())===e||0===n.indexOf(e+\"-\")}while((t=t.parentNode)&&1===t.nodeType);return!1}})),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&!!e.checked||\"option\"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return\"input\"===t&&\"button\"===e.type||\"button\"===t},text:function(e){var t;return\"input\"===e.nodeName.toLowerCase()&&\"text\"===e.type&&(null==(t=e.getAttribute(\"type\"))||\"text\"===t.toLowerCase())},first:ve((function(){return[0]})),last:ve((function(e,t){return[t-1]})),eq:ve((function(e,t,n){return[n<0?n+t:n]})),even:ve((function(e,t){for(var n=0;nt?t:n;--r>=0;)e.push(r);return e})),gt:ve((function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s-1&&(o[l]=!(a[l]=f))}}else y=Te(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)}))}function Ee(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[\" \"],u=a?1:0,c=be((function(e){return e===t}),s,!0),f=be((function(e){return P(t,e)>-1}),s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&we(p),u>1&&xe(e.slice(0,u-1).concat({value:\" \"===e[u-2].type?\"*\":\"\"})).replace($,\"$1\"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,v,y=0,m=\"0\",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG(\"*\",c),E=T+=null==w?1:Math.random()||.1,S=C.length;for(c&&(l=a==d||a||c);m!==S&&null!=(f=C[m]);m++){if(i&&f){for(h=0,a||f.ownerDocument==d||(p(f),s=!g);v=e[h++];)if(v(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!v&&f)&&y--,o&&x.push(f))}if(y+=m,n&&m!==y){for(h=0;v=t[h++];)v(x,b,a,s);if(o){if(y>0)for(;m--;)x[m]||b[m]||(b[m]=q.call(u));b=Te(b)}H.apply(u,b),c&&!o&&b.length>0&&y+t.length>1&&se.uniqueSort(u)}return c&&(T=E,l=w),x};return n?le(o):o}(o,i)),s.selector=e}return s},u=se.select=function(e,t,n,i){var o,u,l,c,f,p=\"function\"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&\"ID\"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(te,ne),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}for(o=G.needsContext.test(e)?0:u.length;o--&&(l=u[o],!r.relative[c=l.type]);)if((f=r.find[c])&&(i=f(l.matches[0].replace(te,ne),ee.test(u[0].type)&&ye(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&xe(u)))return H.apply(n,i),n;break}}return(p||s(e,d))(i,t,!g,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},n.sortStable=b.split(\"\").sort(N).join(\"\")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ce((function(e){return 1&e.compareDocumentPosition(d.createElement(\"fieldset\"))})),ce((function(e){return e.innerHTML=\"\",\"#\"===e.firstChild.getAttribute(\"href\")}))||fe(\"type|href|height|width\",(function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)})),n.attributes&&ce((function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")}))||fe(\"value\",(function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue})),ce((function(e){return null==e.getAttribute(\"disabled\")}))||fe(R,(function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null})),se}(e);w.find=C,w.expr=C.selectors,w.expr[\":\"]=w.expr.pseudos,w.uniqueSort=w.unique=C.uniqueSort,w.text=C.getText,w.isXMLDoc=C.isXML,w.contains=C.contains,w.escapeSelector=C.escape;var E=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=w.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function j(e,t,n){return h(t)?w.grep(e,(function(e,r){return!!t.call(e,r,e)!==n})):t.nodeType?w.grep(e,(function(e){return e===t!==n})):\"string\"!=typeof t?w.grep(e,(function(e){return s.call(t,e)>-1!==n})):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=\":not(\"+e+\")\"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,(function(e){return 1===e.nodeType})))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if(\"string\"!=typeof e)return this.pushStack(w(e).filter((function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,\"string\"==typeof e&&k.test(e)?w(e):e||[],!1).length}});var D,q=/^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;(w.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&e.length>=3?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),N.test(r[1])&&w.isPlainObject(t))for(r in t)h(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):h(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,D=w(v);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter((function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?\"string\"==typeof e?s.call(w(e),this[0]):s.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return E(e,\"parentNode\")},parentsUntil:function(e,t,n){return E(e,\"parentNode\",n)},next:function(e){return O(e,\"nextSibling\")},prev:function(e){return O(e,\"previousSibling\")},nextAll:function(e){return E(e,\"nextSibling\")},prevAll:function(e){return E(e,\"previousSibling\")},nextUntil:function(e,t,n){return E(e,\"nextSibling\",n)},prevUntil:function(e,t,n){return E(e,\"previousSibling\",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,\"template\")&&(e=e.content||e),w.merge([],e.childNodes))}},(function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return\"Until\"!==e.slice(-5)&&(r=n),r&&\"string\"==typeof r&&(i=w.filter(r,i)),this.length>1&&(H[e]||w.uniqueSort(i),L.test(e)&&i.reverse()),this.pushStack(i)}}));var P=/[^\\x20\\t\\r\\n\\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&h(i=e.promise)?i.call(e).done(t).fail(n):e&&h(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.Callbacks=function(e){e=\"string\"==typeof e?function(e){var t={};return w.each(e.match(P)||[],(function(e,n){t[n]=!0})),t}(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1)for(n=a.shift();++s-1;)o.splice(n,1),n<=s&&s--})),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n=\"\",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=\"\"),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},w.extend({Deferred:function(t){var n=[[\"notify\",\"progress\",w.Callbacks(\"memory\"),w.Callbacks(\"memory\"),2],[\"resolve\",\"done\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),0,\"resolved\"],[\"reject\",\"fail\",w.Callbacks(\"once memory\"),w.Callbacks(\"once memory\"),1,\"rejected\"]],r=\"pending\",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},catch:function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred((function(t){w.each(n,(function(n,r){var i=h(e[r[4]])&&e[r[4]];o[r[1]]((function(){var e=i&&i.apply(this,arguments);e&&h(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+\"With\"](this,i?[e]:arguments)}))})),e=null})).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==M&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred((function(e){n[0][3].add(a(0,e,h(i)?i:R,e.notifyWith)),n[1][3].add(a(0,e,h(t)?t:R)),n[2][3].add(a(0,e,h(r)?r:M))})).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,(function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add((function(){r=s}),n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+\"With\"](this===o?void 0:this,arguments),this},o[t[0]+\"With\"]=a.fireWith})),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),o=i.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?i.call(arguments):n,--t||a.resolveWith(r,o)}};if(t<=1&&(I(e,a.done(s(n)).resolve,a.reject,!t),\"pending\"===a.state()||h(o[n]&&o[n].then)))return a.then();for(;n--;)I(o[n],s(n),a.reject);return a.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&W.test(t.name)&&e.console.warn(\"jQuery.Deferred exception: \"+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout((function(){throw t}))};var F=w.Deferred();function B(){v.removeEventListener(\"DOMContentLoaded\",B),e.removeEventListener(\"load\",B),w.ready()}w.fn.ready=function(e){return F.then(e).catch((function(e){w.readyException(e)})),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(v,[w]))}}),w.ready.then=F.then,\"complete\"===v.readyState||\"loading\"!==v.readyState&&!v.documentElement.doScroll?e.setTimeout(w.ready):(v.addEventListener(\"DOMContentLoaded\",B),e.addEventListener(\"load\",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if(\"object\"===x(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,h(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each((function(){Q.remove(this,e)}))}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||\"fx\")+\"queue\",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||\"fx\";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t);\"inprogress\"===i&&(i=n.shift(),r--),i&&(\"fx\"===t&&n.unshift(\"inprogress\"),delete o.stop,i.call(e,(function(){w.dequeue(e,t)}),o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+\"queueHooks\";return Y.get(e,n)||Y.access(e,n,{empty:w.Callbacks(\"once memory\").add((function(){Y.remove(e,[t+\"queue\",n])}))})}}),w.fn.extend({queue:function(e,t){var n=2;return\"string\"!=typeof e&&(t=e,e=\"fx\",n--),arguments.length\\x20\\t\\r\\n\\f]*)/i,ge=/^$|^module$|\\/(?:java|ecma)script/i;fe=v.createDocumentFragment().appendChild(v.createElement(\"div\")),(pe=v.createElement(\"input\")).setAttribute(\"type\",\"radio\"),pe.setAttribute(\"checked\",\"checked\"),pe.setAttribute(\"name\",\"t\"),fe.appendChild(pe),d.checkClone=fe.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.innerHTML=\"\",d.noCloneChecked=!!fe.cloneNode(!0).lastChild.defaultValue,fe.innerHTML=\"\",d.option=!!fe.lastChild;var ve={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ye(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):void 0!==e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?w.merge([e],n):n}function me(e,t){for(var n=0,r=e.length;n\",\"\"]);var xe=/<|&#?\\w+;/;function be(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d-1)i&&i.push(o);else if(l=ie(o),a=ye(f.appendChild(o),\"script\"),l&&me(a),n)for(c=0;o=a[c++];)ge.test(o.type||\"\")&&n.push(o);return f}var we=/^([^.]*)(?:\\.(.+)|)/;function Te(){return!0}function Ce(){return!1}function Ee(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==(\"focus\"===t)}function Se(e,t,n,r,i,o){var a,s;if(\"object\"==typeof t){for(s in\"string\"!=typeof n&&(r=r||n,n=void 0),t)Se(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&(\"string\"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ce;else if(!i)return e;return 1===o&&(a=i,i=function(e){return w().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=w.guid++)),e.each((function(){w.event.add(this,t,i,r,n)}))}function ke(e,t,n){n?(Y.set(e,t,!1),w.event.add(e,t,{namespace:!1,handler:function(e){var r,o,a=Y.get(this,t);if(1&e.isTrigger&&this[t]){if(a.length)(w.event.special[t]||{}).delegateType&&e.stopPropagation();else if(a=i.call(arguments),Y.set(this,t,a),r=n(this,t),this[t](),a!==(o=Y.get(this,t))||r?Y.set(this,t,!1):o={},a!==o)return e.stopImmediatePropagation(),e.preventDefault(),o&&o.value}else a.length&&(Y.set(this,t,{value:w.event.trigger(w.extend(a[0],w.Event.prototype),a.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,t)&&w.event.add(e,t,Te)}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(e);if(V(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(re,i),n.guid||(n.guid=w.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(t){return void 0!==w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(\".\")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){for(l=(t=(t||\"\").match(P)||[\"\"]).length;l--;)if(d=g=(s=we.exec(t[l])||[])[1],h=(s[2]||\"\").split(\".\").sort(),d){for(f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp(\"(^|\\\\.)\"+h.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"),a=o=p.length;o--;)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&(\"**\"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||w.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&Y.remove(e,\"handle events\")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=w.event.fix(e),l=(Y.get(this,\"events\")||Object.create(null))[u.type]||[],c=w.event.special[u.type]||{};for(s[0]=u,t=1;t=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&(\"click\"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\\s*$/g;function De(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&w(e).children(\"tbody\")[0]||e}function qe(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function Le(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function He(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n1&&\"string\"==typeof v&&!d.checkClone&&Ne.test(v))return e.each((function(i){var o=e.eq(i);y&&(t[0]=v.call(this,i,o.html())),Pe(o,t,n,r)}));if(p&&(a=(i=be(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=a),a||r)){for(u=(s=w.map(ye(i,\"script\"),qe)).length;f0&&me(a,!u&&ye(e,\"script\")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Re(this,e,!0)},remove:function(e){return Re(this,e)},text:function(e){return $(this,(function(e){return void 0===e?w.text(this):this.empty().each((function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)}))}),null,e,arguments.length)},append:function(){return Pe(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||De(this,e).appendChild(e)}))},prepend:function(){return Pe(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=De(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Pe(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)}))},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent=\"\");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return w.clone(this,e,t)}))},html:function(e){return $(this,(function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if(\"string\"==typeof e&&!Ae.test(e)&&!ve[(he.exec(e)||[\"\",\"\"])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Ze(e,t,n){var r=Ie(e),i=(!d.boxSizingReliable()||n)&&\"border-box\"===w.css(e,\"boxSizing\",!1,r),o=i,a=Be(e,t,r),s=\"offset\"+t[0].toUpperCase()+t.slice(1);if(Me.test(a)){if(!n)return a;a=\"auto\"}return(!d.boxSizingReliable()&&i||!d.reliableTrDimensions()&&A(e,\"tr\")||\"auto\"===a||!parseFloat(a)&&\"inline\"===w.css(e,\"display\",!1,r))&&e.getClientRects().length&&(i=\"border-box\"===w.css(e,\"boxSizing\",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Ke(e,t,n||(i?\"border\":\"content\"),o,r,a)+\"px\"}function et(e,t,n,r,i){return new et.prototype.init(e,t,n,r,i)}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Be(e,\"opacity\");return\"\"===n?\"1\":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Ge.test(t),l=e.style;if(u||(t=Xe(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&\"get\"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];\"string\"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o=\"number\"),null!=n&&n==n&&(\"number\"!==o||u||(n+=i&&i[3]||(w.cssNumber[s]?\"\":\"px\")),d.clearCloneStyle||\"\"!==n||0!==t.indexOf(\"background\")||(l[t]=\"inherit\"),a&&\"set\"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Ge.test(t)||(t=Xe(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&\"get\"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Be(e,t,r)),\"normal\"===i&&t in Qe&&(i=Qe[t]),\"\"===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each([\"height\",\"width\"],(function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!Ve.test(w.css(e,\"display\"))||e.getClientRects().length&&e.getBoundingClientRect().width?Ze(e,t,r):We(e,Ye,(function(){return Ze(e,t,r)}))},set:function(e,n,r){var i,o=Ie(e),a=!d.scrollboxSize()&&\"absolute\"===o.position,s=(a||r)&&\"border-box\"===w.css(e,\"boxSizing\",!1,o),u=r?Ke(e,t,r,s,o):0;return s&&a&&(u-=Math.ceil(e[\"offset\"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ke(e,t,\"border\",!1,o)-.5)),u&&(i=te.exec(n))&&\"px\"!==(i[3]||\"px\")&&(e.style[t]=n,n=w.css(e,t)),Je(0,n,u)}}})),w.cssHooks.marginLeft=$e(d.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(Be(e,\"marginLeft\"))||e.getBoundingClientRect().left-We(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+\"px\"})),w.each({margin:\"\",padding:\"\",border:\"Width\"},(function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o=\"string\"==typeof n?n.split(\" \"):[n];r<4;r++)i[e+ne[r]+t]=o[r]||o[r-2]||o[0];return i}},\"margin\"!==e&&(w.cssHooks[e+t].set=Je)})),w.fn.extend({css:function(e,t){return $(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Ie(e),i=t.length;a1)}}),w.Tween=et,et.prototype={constructor:et,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?\"\":\"px\")},cur:function(){var e=et.propHooks[this.prop];return e&&e.get?e.get(this):et.propHooks._default.get(this)},run:function(e){var t,n=et.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):et.propHooks._default.set(this),this}},et.prototype.init.prototype=et.prototype,et.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,\"\"))&&\"auto\"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||!w.cssHooks[e.prop]&&null==e.elem.style[Xe(e.prop)]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},et.propHooks.scrollTop=et.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:\"swing\"},w.fx=et.prototype.init,w.fx.step={};var tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){nt&&(!1===v.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(ot):e.setTimeout(ot,w.fx.interval),w.fx.tick())}function at(){return e.setTimeout((function(){tt=void 0})),tt=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i[\"margin\"+(n=ne[r])]=i[\"padding\"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners[\"*\"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){w.removeAttr(this,e)}))}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+\"\"),n):i&&\"get\"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!d.radioValue&&\"radio\"===t&&A(e,\"input\")){var n=e.value;return e.setAttribute(\"type\",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\\w+/g),(function(e,t){var n=ft[t]||w.find.attr;ft[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ft[a],ft[a]=i,i=null!=n(e,t,r)?a:null,ft[a]=o),i}}));var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(\" \")}function gt(e){return e.getAttribute&&e.getAttribute(\"class\")||\"\"}function vt(e){return Array.isArray(e)?e:\"string\"==typeof e&&e.match(P)||[]}w.fn.extend({prop:function(e,t){return $(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[w.propFix[e]||e]}))}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&\"set\"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&\"get\"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,\"tabindex\");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:\"htmlFor\",class:\"className\"}}),d.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each([\"tabIndex\",\"readOnly\",\"maxLength\",\"cellSpacing\",\"cellPadding\",\"rowSpan\",\"colSpan\",\"useMap\",\"frameBorder\",\"contentEditable\"],(function(){w.propFix[this.toLowerCase()]=this})),w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).addClass(e.call(this,t,gt(this)))}));if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)r.indexOf(\" \"+o+\" \")<0&&(r+=o+\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(h(e))return this.each((function(t){w(this).removeClass(e.call(this,t,gt(this)))}));if(!arguments.length)return this.attr(\"class\",\"\");if((t=vt(e)).length)for(;n=this[u++];)if(i=gt(n),r=1===n.nodeType&&\" \"+ht(i)+\" \"){for(a=0;o=t[a++];)for(;r.indexOf(\" \"+o+\" \")>-1;)r=r.replace(\" \"+o+\" \",\" \");i!==(s=ht(r))&&n.setAttribute(\"class\",s)}return this},toggleClass:function(e,t){var n=typeof e,r=\"string\"===n||Array.isArray(e);return\"boolean\"==typeof t&&r?t?this.addClass(e):this.removeClass(e):h(e)?this.each((function(n){w(this).toggleClass(e.call(this,n,gt(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=w(this),a=vt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&\"boolean\"!==n||((t=gt(this))&&Y.set(this,\"__className__\",t),this.setAttribute&&this.setAttribute(\"class\",t||!1===e?\"\":Y.get(this,\"__className__\")||\"\"))}))},hasClass:function(e){var t,n,r=0;for(t=\" \"+e+\" \";n=this[r++];)if(1===n.nodeType&&(\" \"+ht(gt(n))+\" \").indexOf(t)>-1)return!0;return!1}});var yt=/\\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=h(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i=\"\":\"number\"==typeof i?i+=\"\":Array.isArray(i)&&(i=w.map(i,(function(e){return null==e?\"\":e+\"\"}))),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&\"set\"in t&&void 0!==t.set(this,i,\"value\")||(this.value=i))}))):i?(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&\"get\"in t&&void 0!==(n=t.get(i,\"value\"))?n:\"string\"==typeof(n=i.value)?n.replace(yt,\"\"):null==n?\"\":n:void 0}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,\"value\");return null!=t?t:ht(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a=\"select-one\"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each([\"radio\",\"checkbox\"],(function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},d.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute(\"value\")?\"on\":e.value})})),d.focusin=\"onfocusin\"in e;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,r,i){var o,a,s,u,l,f,p,d,y=[r||v],m=c.call(t,\"type\")?t.type:t,x=c.call(t,\"namespace\")?t.namespace.split(\".\"):[];if(a=d=s=r=r||v,3!==r.nodeType&&8!==r.nodeType&&!mt.test(m+w.event.triggered)&&(m.indexOf(\".\")>-1&&(x=m.split(\".\"),m=x.shift(),x.sort()),l=m.indexOf(\":\")<0&&\"on\"+m,(t=t[w.expando]?t:new w.Event(m,\"object\"==typeof t&&t)).isTrigger=i?2:3,t.namespace=x.join(\".\"),t.rnamespace=t.namespace?new RegExp(\"(^|\\\\.)\"+x.join(\"\\\\.(?:.*\\\\.|)\")+\"(\\\\.|$)\"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:w.makeArray(n,[t]),p=w.event.special[m]||{},i||!p.trigger||!1!==p.trigger.apply(r,n))){if(!i&&!p.noBubble&&!g(r)){for(u=p.delegateType||m,mt.test(u+m)||(a=a.parentNode);a;a=a.parentNode)y.push(a),s=a;s===(r.ownerDocument||v)&&y.push(s.defaultView||s.parentWindow||e)}for(o=0;(a=y[o++])&&!t.isPropagationStopped();)d=a,t.type=o>1?u:p.bindType||m,(f=(Y.get(a,\"events\")||Object.create(null))[t.type]&&Y.get(a,\"handle\"))&&f.apply(a,n),(f=l&&a[l])&&f.apply&&V(a)&&(t.result=f.apply(a,n),!1===t.result&&t.preventDefault());return t.type=m,i||t.isDefaultPrevented()||p._default&&!1!==p._default.apply(y.pop(),n)||!V(r)||l&&h(r[m])&&!g(r)&&((s=r[l])&&(r[l]=null),w.event.triggered=m,t.isPropagationStopped()&&d.addEventListener(m,xt),r[m](),t.isPropagationStopped()&&d.removeEventListener(m,xt),w.event.triggered=void 0,s&&(r[l]=s)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each((function(){w.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),d.focusin||w.each({focus:\"focusin\",blur:\"focusout\"},(function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t);i||r.addEventListener(e,n,!0),Y.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=Y.access(r,t)-1;i?Y.access(r,t,i):(r.removeEventListener(e,n,!0),Y.remove(r,t))}}}));var bt=e.location,wt={guid:Date.now()},Tt=/\\?/;w.parseXML=function(t){var n,r;if(!t||\"string\"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,\"text/xml\")}catch(e){}return r=n&&n.getElementsByTagName(\"parsererror\")[0],n&&!r||w.error(\"Invalid XML: \"+(r?w.map(r.childNodes,(function(e){return e.textContent})).join(\"\\n\"):t)),n};var Ct=/\\[\\]$/,Et=/\\r?\\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(e,t,n,r){var i;if(Array.isArray(t))w.each(t,(function(t,i){n||Ct.test(e)?r(e,i):At(e+\"[\"+(\"object\"==typeof i&&null!=i?t:\"\")+\"]\",i,n,r)}));else if(n||\"object\"!==x(t))r(e,t);else for(i in t)At(e+\"[\"+i+\"]\",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=h(t)?t():t;r[r.length]=encodeURIComponent(e)+\"=\"+encodeURIComponent(null==n?\"\":n)};if(null==e)return\"\";if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,(function(){i(this.name,this.value)}));else for(n in e)At(n,e[n],t,i);return r.join(\"&\")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=w.prop(this,\"elements\");return e?w.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!w(this).is(\":disabled\")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!de.test(e))})).map((function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,(function(e){return{name:t.name,value:e.replace(Et,\"\\r\\n\")}})):{name:t.name,value:n.replace(Et,\"\\r\\n\")}})).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \\t]*([^\\r\\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\\/\\//,Ot={},Pt={},Rt=\"*/\".concat(\"*\"),Mt=v.createElement(\"a\");function It(e){return function(t,n){\"string\"!=typeof t&&(n=t,t=\"*\");var r,i=0,o=t.toLowerCase().match(P)||[];if(h(n))for(;r=o[i++];)\"+\"===r[0]?(r=r.slice(1)||\"*\",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Wt(e,t,n,r){var i={},o=e===Pt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],(function(e,s){var l=s(t,n,r);return\"string\"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)})),u}return a(t.dataTypes[0])||!i[\"*\"]&&a(\"*\")}function Ft(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}Mt.href=bt.href,w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:\"GET\",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:\"application/x-www-form-urlencoded; charset=UTF-8\",accepts:{\"*\":Rt,text:\"text/plain\",html:\"text/html\",xml:\"application/xml, text/xml\",json:\"application/json, text/javascript\"},contents:{xml:/\\bxml\\b/,html:/\\bhtml/,json:/\\bjson\\b/},responseFields:{xml:\"responseXML\",text:\"responseText\",json:\"responseJSON\"},converters:{\"* text\":String,\"text html\":!0,\"text json\":JSON.parse,\"text xml\":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,w.ajaxSettings),t):Ft(w.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(t,n){\"object\"==typeof t&&(n=t,t=void 0),n=n||{};var r,i,o,a,s,u,l,c,f,p,d=w.ajaxSetup({},n),h=d.context||d,g=d.context&&(h.nodeType||h.jquery)?w(h):w.event,y=w.Deferred(),m=w.Callbacks(\"once memory\"),x=d.statusCode||{},b={},T={},C=\"canceled\",E={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=qt.exec(o);)a[t[1].toLowerCase()+\" \"]=(a[t[1].toLowerCase()+\" \"]||[]).concat(t[2]);t=a[e.toLowerCase()+\" \"]}return null==t?null:t.join(\", \")},getAllResponseHeaders:function(){return l?o:null},setRequestHeader:function(e,t){return null==l&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return r&&r.abort(t),S(0,t),this}};if(y.promise(E),d.url=((t||d.url||bt.href)+\"\").replace(Ht,bt.protocol+\"//\"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||\"*\").toLowerCase().match(P)||[\"\"],null==d.crossDomain){u=v.createElement(\"a\");try{u.href=d.url,u.href=u.href,d.crossDomain=Mt.protocol+\"//\"+Mt.host!=u.protocol+\"//\"+u.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&\"string\"!=typeof d.data&&(d.data=w.param(d.data,d.traditional)),Wt(Ot,d,n,E),l)return E;for(f in(c=w.event&&d.global)&&0==w.active++&&w.event.trigger(\"ajaxStart\"),d.type=d.type.toUpperCase(),d.hasContent=!Lt.test(d.type),i=d.url.replace(jt,\"\"),d.hasContent?d.data&&d.processData&&0===(d.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&(d.data=d.data.replace(Nt,\"+\")):(p=d.url.slice(i.length),d.data&&(d.processData||\"string\"==typeof d.data)&&(i+=(Tt.test(i)?\"&\":\"?\")+d.data,delete d.data),!1===d.cache&&(i=i.replace(Dt,\"$1\"),p=(Tt.test(i)?\"&\":\"?\")+\"_=\"+wt.guid+++p),d.url=i+p),d.ifModified&&(w.lastModified[i]&&E.setRequestHeader(\"If-Modified-Since\",w.lastModified[i]),w.etag[i]&&E.setRequestHeader(\"If-None-Match\",w.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||n.contentType)&&E.setRequestHeader(\"Content-Type\",d.contentType),E.setRequestHeader(\"Accept\",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(\"*\"!==d.dataTypes[0]?\", \"+Rt+\"; q=0.01\":\"\"):d.accepts[\"*\"]),d.headers)E.setRequestHeader(f,d.headers[f]);if(d.beforeSend&&(!1===d.beforeSend.call(h,E,d)||l))return E.abort();if(C=\"abort\",m.add(d.complete),E.done(d.success),E.fail(d.error),r=Wt(Pt,d,n,E)){if(E.readyState=1,c&&g.trigger(\"ajaxSend\",[E,d]),l)return E;d.async&&d.timeout>0&&(s=e.setTimeout((function(){E.abort(\"timeout\")}),d.timeout));try{l=!1,r.send(b,S)}catch(e){if(l)throw e;S(-1,e)}}else S(-1,\"No Transport\");function S(t,n,a,u){var f,p,v,b,T,C=n;l||(l=!0,s&&e.clearTimeout(s),r=void 0,o=u||\"\",E.readyState=t>0?4:0,f=t>=200&&t<300||304===t,a&&(b=function(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;\"*\"===u[0];)u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader(\"Content-Type\"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+\" \"+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(d,E,a)),!f&&w.inArray(\"script\",d.dataTypes)>-1&&w.inArray(\"json\",d.dataTypes)<0&&(d.converters[\"text script\"]=function(){}),b=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if(\"*\"===o)o=u;else if(\"*\"!==u&&u!==o){if(!(a=l[u+\" \"+o]||l[\"* \"+o]))for(i in l)if((s=i.split(\" \"))[1]===o&&(a=l[u+\" \"+s[0]]||l[\"* \"+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e.throws)t=a(t);else try{t=a(t)}catch(e){return{state:\"parsererror\",error:a?e:\"No conversion from \"+u+\" to \"+o}}}return{state:\"success\",data:t}}(d,b,E,f),f?(d.ifModified&&((T=E.getResponseHeader(\"Last-Modified\"))&&(w.lastModified[i]=T),(T=E.getResponseHeader(\"etag\"))&&(w.etag[i]=T)),204===t||\"HEAD\"===d.type?C=\"nocontent\":304===t?C=\"notmodified\":(C=b.state,p=b.data,f=!(v=b.error))):(v=C,!t&&C||(C=\"error\",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+\"\",f?y.resolveWith(h,[p,C,E]):y.rejectWith(h,[E,C,v]),E.statusCode(x),x=void 0,c&&g.trigger(f?\"ajaxSuccess\":\"ajaxError\",[E,d,f?p:v]),m.fireWith(h,[E,C]),c&&(g.trigger(\"ajaxComplete\",[E,d]),--w.active||w.event.trigger(\"ajaxStop\")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,\"json\")},getScript:function(e,t){return w.get(e,void 0,t,\"script\")}}),w.each([\"get\",\"post\"],(function(e,t){w[t]=function(e,n,r,i){return h(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}})),w.ajaxPrefilter((function(e){var t;for(t in e.headers)\"content-type\"===t.toLowerCase()&&(e.contentType=e.headers[t]||\"\")})),w._evalUrl=function(e,t,n){return w.ajax({url:e,type:\"GET\",dataType:\"script\",cache:!0,async:!1,global:!1,converters:{\"text script\":function(){}},dataFilter:function(e){w.globalEval(e,t,n)}})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(h(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return h(e)?this.each((function(t){w(this).wrapInner(e.call(this,t))})):this.each((function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=h(e);return this.each((function(n){w(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not(\"body\").each((function(){w(this).replaceWith(this.childNodes)})),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=w.ajaxSettings.xhr();d.cors=!!$t&&\"withCredentials\"in $t,d.ajax=$t=!!$t,w.ajaxTransport((function(t){var n,r;if(d.cors||$t&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];for(a in t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i[\"X-Requested-With\"]||(i[\"X-Requested-With\"]=\"XMLHttpRequest\"),i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,\"abort\"===e?s.abort():\"error\"===e?\"number\"!=typeof s.status?o(0,\"error\"):o(s.status,s.statusText):o(Bt[s.status]||s.status,s.statusText,\"text\"!==(s.responseType||\"text\")||\"string\"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n(\"error\"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout((function(){n&&r()}))},n=n(\"abort\");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}})),w.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),w.ajaxSetup({accepts:{script:\"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\"},contents:{script:/\\b(?:java|ecma)script\\b/},converters:{\"text script\":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter(\"script\",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type=\"GET\")})),w.ajaxTransport(\"script\",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=w(\"" + ], + "text/plain": [ + ":Image [lon,lat] (tas)" + ] + }, + "execution_count": 15, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1002" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.isel(time=0, member_id=0).hvplot(cmap=\"coolwarm\", width=1000, height=1000)" + ] + }, + { + "cell_type": "markdown", + "id": "2d2a4ca6", + "metadata": {}, + "source": [ + "Having a look to data distribution can reveal a lot about the data." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "e32bc8d9", + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":NdOverlay [Element]\n", + " :Histogram [tas] (tas_count)" + ] + }, + "execution_count": 16, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1127" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI[0].hvplot.hist(cmap=\"coolwarm\",bins=25, width=800, height=700)" + ] + }, + { + "cell_type": "markdown", + "id": "3472fbdd", + "metadata": {}, + "source": [ + "### Multi-plots using groupby\n", + "\n", + "To be able to visualize interactively all the different available times, we can use `groupby` time." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "dbfcdc9b", + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":DynamicMap [time]\n", + " :Image [lon,lat] (tas)" + ] + }, + "execution_count": 17, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1251" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.isel(member_id=0).hvplot(groupby ='time', cmap=\"coolwarm\", width=800, height=700)" + ] + }, + { + "cell_type": "markdown", + "id": "2454acd9", + "metadata": {}, + "source": [ + "We can add a histogram to the visualization." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ad7fc6a3", + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":AdjointLayout\n", + " :DynamicMap [time]\n", + " :Image [lon,lat] (tas)\n", + " :DynamicMap [time]\n", + " :Histogram [tas] (tas_count)" + ] + }, + "execution_count": 18, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1423" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.isel(member_id=0).hvplot(groupby='time', cmap='coolwarm', width=800, height=700 ).hist()" + ] + }, + { + "cell_type": "markdown", + "id": "69256d2d-df10-49cd-a2f1-e98fb0a2b4f0", + "metadata": {}, + "source": [ + "### Plot data on a particular projection" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "815b8e67-f29b-4b7b-aa1b-04d6c5bec29c", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:param.main: Calling the .opts method with options broken down by options group (i.e. separate plot, style and norm groups) is deprecated. Use the .options method converting to the simplified format instead or use hv.opts.apply_groups for backward compatibility.\n" + ] + } + ], + "source": [ + "plot = tas_AOI.isel(time=0, member_id=0).hvplot.quadmesh(x='lon', y='lat'\n", + " , rasterize=True\n", + " , geo=True\n", + " , global_extent=False\n", + " , projection=ccrs.Orthographic(30, 90) \n", + " , project=True\n", + " , cmap='coolwarm'\n", + " , coastline='50m' \n", + " , frame_width=400\n", + " , title=\"Near-surface Temperature over Norway (CMIP6 CESM2)\"\n", + " )" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "a24875db-e25a-45ef-81ad-baca1da67408", + "metadata": {}, + "outputs": [ + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":DynamicMap []\n", + " :Overlay\n", + " .Image.I :Image [lon,lat] (tas)\n", + " .Coastline.I :Feature [Longitude,Latitude]" + ] + }, + "execution_count": 20, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "1789" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "plot" + ] + }, + { + "cell_type": "markdown", + "id": "01d3b737", + "metadata": {}, + "source": [ + "### Plot a single point over the time dimension" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a04175e2", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:param.CurvePlot02669: Converting cftime.datetime from a non-standard calendar (noleap) to a standard calendar for plotting. This may lead to subtle errors in formatting dates, for accurate tick formatting switch to the matplotlib backend.\n" + ] + }, + { + "data": {}, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], + "text/plain": [ + ":Curve [time] (tas)" + ] + }, + "execution_count": 21, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "2069" + } + }, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.isel(member_id=0).sel(lat=60, lon=10.75, method='nearest').hvplot(ylim=(260, 293))" + ] + }, + { + "cell_type": "markdown", + "id": "cc3e5553", + "metadata": {}, + "source": [ + "
\n", + " Key Points\n", + "
\n", + "
    \n", + "
  • Rioxarray for clipping over an area of interest
  • \n", + "
  • Interactive plot with HoloViews and Xarray
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "46475434", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "id": "5bb83fd0", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"visualization\" and not topic % \"package\"\n", + ":keyprefix: b-\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "94fa3939", + "metadata": {}, + "source": [ + "## Packages citation\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"visualization\" and topic % \"package\"\n", + ":keyprefix: b-\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "0b9486db", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/docs/xarray_introduction.ipynb b/docs/xarray_introduction.ipynb new file mode 100755 index 0000000..a47e588 --- /dev/null +++ b/docs/xarray_introduction.ipynb @@ -0,0 +1,10552 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "dde8b5d5-5bba-4266-8521-3e3e163bef3a", + "metadata": {}, + "source": [ + "# Handling multi-dimensional arrays with xarray" + ] + }, + { + "cell_type": "markdown", + "id": "a0d36cd0-7cdc-4e5e-922b-a1979a1c9e7b", + "metadata": {}, + "source": [ + "## Authors & Contributors\n", + "\n", + "### Authors\n", + "\n", + "- Pier Lorenzo Marasco, Ispra (Italy), [@pl-marasco](https://github.com/pl-marasco)\n", + "- Anne Fouilloux, Simula Research Laboratory (Norway), [@annefou](https://github.com/annefou)\n", + "\n", + "### Contributors\n", + "\n", + "- Alejandro Coca-Castro, The Alan Turing Institute (United Kingdom), [@acocac](https://github.com/acocac)\n", + "- Guillaume Eynard-Bontemps, CNES (France), [@guillaumeeb](https://github.com/guillaumeeb)" + ] + }, + { + "cell_type": "markdown", + "id": "ec37ef0f-da32-40c7-8320-467c46bfab6a", + "metadata": {}, + "source": [ + "
\n", + " Overview\n", + "
\n", + "
\n", + " Questions\n", + "
    \n", + "
  • What is Xarray?
  • \n", + "
  • How to open a local file?
  • \n", + "
  • How to print metadata information?
  • \n", + "
  • How to make a selection?
  • \n", + "
  • How to visualize with matplotlib?
  • \n", + "
  • How to perform basic computations, statistics and aggregations?
  • \n", + "
  • How to mask data?
  • \n", + "
\n", + " Objectives\n", + "
    \n", + "
  • Learn about Xarray Python ecosystem
  • \n", + "
  • Learn file handling with xarray
  • \n", + "
  • Learn to get metadata information
  • \n", + "
  • Learn to select and mask data
  • \n", + "
  • Learn to make basic computations, aggregations and statistics
  • \n", + "
  • Learnn to visualize data
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "d746c8d3-c818-4c19-bf58-1f29715d9df6", + "metadata": {}, + "source": [ + "## Context\n", + "\n", + "We will be using the [Pangeo](https://pangeo.io/) open-source software stack for visualizing the near-surface temperature and computing time averaged values (such as seasonal mean and other statistics).\n", + "\n", + "### Data\n", + "\n", + "In this episode, we will use [CMIP6](https://www.wcrp-climate.org/wgcm-cmip/wgcm-cmip6) data.\n", + "\n", + "This dataset can be discovered through the [CMIP6 online catalog](https://pangeo-data.github.io/pangeo-cmip6-cloud/) or from [ESGF](https://esgf.llnl.gov/).\n", + "\n", + "The same dataset can also be downloaded from [Zenodo](https://zenodo.org/): [Near-surface Temperature from CMIP6 NCAR CESM2 historical monthly dataset for CLIVAR CMIP6 Bootcamp](https://zenodo.org/record/7181714/files/CMIP6_NCAR_CESM2_historical_amon_gn.nc)." + ] + }, + { + "cell_type": "markdown", + "id": "c341348a-77e3-47bb-aa1a-86982f930c79", + "metadata": {}, + "source": [ + "## Setup\n", + "\n", + "This episode uses the following main Python packages:\n", + "\n", + "- xarray {cite:ps}`a-xarray-hoyer2017` with [`netCDF4`](https://pypi.org/project/h5netcdf/) and [`h5netcdf`](https://pypi.org/project/h5netcdf/) engines\n", + "- pooch {cite:ps}`a-pooch-Uieda2020`\n", + "- numpy {cite:ps}`a-numpy-harris2020`\n", + "\n", + "Please install these packages if they are not already available in your Python environment (see [Setup page](https://pangeo-data.github.io/foss4g-2022/before/setup.html)).\n", + "\n", + "### Packages\n", + "\n", + "In this episode, Python packages are imported when we start to use them. However, for best software practices, we recommend that you install and import all the necessary libraries at the top of your Jupyter notebook." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "51c76db6-f5aa-40eb-97f1-2df7cde50e83", + "metadata": {}, + "outputs": [], + "source": [ + "import xarray as xr" + ] + }, + { + "cell_type": "markdown", + "id": "2d9c40c3-44c9-451f-b8ad-fec067c05932", + "metadata": {}, + "source": [ + "### Fetch Data\n", + "\n", + "- For now we will fetch a netCDF file containing the near-surface temperature from one single CMIP6 model CESM2.\n", + "- The file is available in a Zenodo repository. We will download it using using `pooch`, a very handy Python-based library to download and cache your data files locally (see further info [here](https://www.fatiando.org/pooch/latest/index.html))\n", + "- In the [Data access and discovery](https://pangeo-data.github.io/escience-2022/pangeo101/data_discovery.html) episode, we will learn about different ways to access data, including access to remote data." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "08ba3f1d-71ea-42ec-904f-dc2452640590", + "metadata": {}, + "outputs": [], + "source": [ + "import pooch" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f247c3cd-7f19-43c8-b721-6b159f401379", + "metadata": { + "tags": [ + "hide-output" + ] + }, + "outputs": [], + "source": [ + "tas_file = pooch.retrieve(\n", + " url=\"https://zenodo.org/record/7181714/files/CMIP6_NCAR_CESM2_historical_amon_gn.nc\",\n", + " known_hash=\"md5:5f86251e5bc5ef9b86a3a86cd06a536b\",\n", + " path=f\".\",\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "3a1db255-b521-4465-9ffd-0113c48f1fd1", + "metadata": {}, + "source": [ + "## Open and read metadata through Xarray" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "6974bdbf-f874-4b0d-bb9b-13a0161af3b0", + "metadata": {}, + "outputs": [], + "source": [ + "tas_ds = xr.open_dataset(tas_file)" + ] + }, + { + "cell_type": "markdown", + "id": "711acf54", + "metadata": {}, + "source": [ + "As the dataset is in the NetCDF format, Xarray automatically selects the correct engine (this happens in the background because engine='netcdf' has been automatically specified). Other common options are \"h5netcdf\" or \"zarr\".\n", + "GeoTiff data can also be read, but to access it requires rioxarray, which will be quickly covered later.\n", + "Supposing that you have a dataset in an unrecognised format, you can always create your own reader as a subclass of the backend entry point and pass it through the engine parameter." + ] + }, + { + "cell_type": "markdown", + "id": "fac7ac28", + "metadata": {}, + "source": [ + ":::{tip}\n", + "If you get an error with the previous command, first check the location of the input file some_hash-CMIP6_NCAR_CESM2_historical_amon_gn.nc: it should have been downloaded in the same directory as your Jupyter Notebook.\n", + ":::" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "098a2be0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "    lat_bnds   (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds   (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time, lat, lon) float32 ...\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " lat_bnds (lat, nbnd) float32 ...\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (lon, nbnd) float32 ...\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object ...\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time, lat, lon) float32 ...\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds" + ] + }, + { + "cell_type": "markdown", + "id": "0f1c3f6a", + "metadata": {}, + "source": [ + "## What is xarray?\n", + "\n", + "Xarray introduces labels in the form of dimensions, coordinates and attributes on top of raw NumPy-like multi-dimensional arrays, which allows for a more intuitive, more concise, and less error-prone developer experience.\n", + "\n", + "### How is xarray structured?\n", + "\n", + "Xarray has two core data structures, which build upon and extend the core strengths of NumPy and Pandas libraries. Both data structures are fundamentally N-dimensional:\n", + "\n", + "- [DataArray](https://docs.xarray.dev/en/stable/generated/xarray.DataArray.html#xarray.DataArray) is the implementation of a labeled, N-dimensional array. It is an N-D generalization of a Pandas.Series. The name DataArray itself is borrowed from [Fernando Perez’s datarray project](http://fperez.org/py4science/datarray/), which prototyped a similar data structure.\n", + "\n", + "- [Dataset](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.html#xarray.Dataset) is a multi-dimensional, in-memory array database. It is a dict-like container of DataArray objects aligned along any number of shared dimensions, and serves a similar purpose in xarray as the pandas.DataFrame.\n" + ] + }, + { + "cell_type": "markdown", + "id": "fb97b357", + "metadata": {}, + "source": [ + "## Accessing Coordinates and Data Variables " + ] + }, + { + "cell_type": "markdown", + "id": "628c0446", + "metadata": {}, + "source": [ + "DataArray, within Datasets, can be accessed through:\n", + "- the dot notation like Dataset.NameofVariable \n", + "- or using square brackets, like Dataset['NameofVariable'] (NameofVariable needs to be a string so use quotes or double quotes)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "4701e7a9", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'time' (time: 1980)>\n",
+       "array([cftime.DatetimeNoLeap(1850, 1, 15, 12, 0, 0, 0, has_year_zero=True),\n",
+       "       cftime.DatetimeNoLeap(1850, 2, 14, 0, 0, 0, 0, has_year_zero=True),\n",
+       "       cftime.DatetimeNoLeap(1850, 3, 15, 12, 0, 0, 0, has_year_zero=True),\n",
+       "       ...,\n",
+       "       cftime.DatetimeNoLeap(2014, 10, 15, 12, 0, 0, 0, has_year_zero=True),\n",
+       "       cftime.DatetimeNoLeap(2014, 11, 15, 0, 0, 0, 0, has_year_zero=True),\n",
+       "       cftime.DatetimeNoLeap(2014, 12, 15, 12, 0, 0, 0, has_year_zero=True)],\n",
+       "      dtype=object)\n",
+       "Coordinates:\n",
+       "  * time     (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "Attributes:\n",
+       "    axis:           T\n",
+       "    bounds:         time_bnds\n",
+       "    standard_name:  time\n",
+       "    title:          time\n",
+       "    type:           double
" + ], + "text/plain": [ + "\n", + "array([cftime.DatetimeNoLeap(1850, 1, 15, 12, 0, 0, 0, has_year_zero=True),\n", + " cftime.DatetimeNoLeap(1850, 2, 14, 0, 0, 0, 0, has_year_zero=True),\n", + " cftime.DatetimeNoLeap(1850, 3, 15, 12, 0, 0, 0, has_year_zero=True),\n", + " ...,\n", + " cftime.DatetimeNoLeap(2014, 10, 15, 12, 0, 0, 0, has_year_zero=True),\n", + " cftime.DatetimeNoLeap(2014, 11, 15, 0, 0, 0, 0, has_year_zero=True),\n", + " cftime.DatetimeNoLeap(2014, 12, 15, 12, 0, 0, 0, has_year_zero=True)],\n", + " dtype=object)\n", + "Coordinates:\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + "Attributes:\n", + " axis: T\n", + " bounds: time_bnds\n", + " standard_name: time\n", + " title: time\n", + " type: double" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.time" + ] + }, + { + "cell_type": "markdown", + "id": "55cbc2ca", + "metadata": {}, + "source": [ + "`tas_ds.time` is a one-dimensional `xarray.DataArray` with dates of type `cftime.DatetimeNoLeap`" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e9a1e3c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 192, lon: 288)>\n",
+       "[109486080 values with dtype=float32]\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "[109486080 values with dtype=float32]\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.tas" + ] + }, + { + "cell_type": "markdown", + "id": "ed915a07", + "metadata": {}, + "source": [ + "`tas_ds.tas` is a 4-dimensional `xarray.DataArray` with tas values of type `float32`" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0373cd09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 192, lon: 288)>\n",
+       "[109486080 values with dtype=float32]\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "[109486080 values with dtype=float32]\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds['tas']" + ] + }, + { + "cell_type": "markdown", + "id": "a27ebaab", + "metadata": {}, + "source": [ + "Same can be achieved for attributes and a DataArray.attrs will return a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "fc8a6cee", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'cell_measures': 'area: areacella',\n", + " 'cell_methods': 'area: time: mean',\n", + " 'comment': 'near-surface (usually, 2 meter) air temperature',\n", + " 'description': 'near-surface (usually, 2 meter) air temperature',\n", + " 'frequency': 'mon',\n", + " 'id': 'tas',\n", + " 'long_name': 'Near-Surface Air Temperature',\n", + " 'mipTable': 'Amon',\n", + " 'out_name': 'tas',\n", + " 'prov': 'Amon ((isd.003))',\n", + " 'realm': 'atmos',\n", + " 'standard_name': 'air_temperature',\n", + " 'time': 'time',\n", + " 'time_label': 'time-mean',\n", + " 'time_title': 'Temporal mean',\n", + " 'title': 'Near-Surface Air Temperature',\n", + " 'type': 'real',\n", + " 'units': 'K',\n", + " 'variable_id': 'tas'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds['tas'].attrs" + ] + }, + { + "cell_type": "markdown", + "id": "8b7ea761", + "metadata": {}, + "source": [ + "### Xarray and Memory usage\n", + "\n", + "Once a Data Array|Set is opened, xarray loads into memory only the coordinates and all the metadata needed to describe it.\n", + "The underlying data, the component written into the datastore, are loaded into memory as a NumPy array, only once directly accessed; once in there, it will be kept to avoid re-readings.\n", + "This brings the fact that it is good practice to have a look to the size of the data before accessing it. A classical mistake is to try loading arrays bigger than the memory with the obvious result of killing a notebook Kernel or Python process.\n", + "If the dataset does not fit in the available memory, then the only option will be to load it through the chunking; later on, in the tutorial 'chunking_introduction', we will introduce this concept.\n", + "\n", + "As the size of the data is not too big here, we can continue without any problem. But let's first have a look to the actual size and then how it impacts the memory once loaded into it." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "7453de03", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0b0c7d85", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "417.66 MB\n" + ] + } + ], + "source": [ + "print(f'{np.round(tas_ds.tas.nbytes / 1024**2, 2)} MB') # all the data are automatically loaded into memory as NumpyArray once they are accessed." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "77ae36e2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[[245.32208, 245.32208, 245.32208, ..., 245.32208, 245.32208,\n", + " 245.32208],\n", + " [246.10596, 246.06238, 245.9003 , ..., 246.16695, 246.15019,\n", + " 246.12573],\n", + " [246.72545, 246.68094, 246.65623, ..., 246.98813, 246.92969,\n", + " 246.84184],\n", + " ...,\n", + " [245.5208 , 245.56802, 245.61319, ..., 245.41414, 245.44745,\n", + " 245.47954],\n", + " [245.02821, 245.0406 , 245.05339, ..., 244.98322, 244.99951,\n", + " 245.01454],\n", + " [244.50035, 244.50319, 244.50577, ..., 244.48999, 244.49379,\n", + " 244.49722]],\n", + "\n", + " [[232.51073, 232.51073, 232.51073, ..., 232.51073, 232.51073,\n", + " 232.51073],\n", + " [233.30011, 233.26118, 233.10924, ..., 233.32413, 233.32066,\n", + " 233.31026],\n", + " [233.92563, 233.88283, 233.85846, ..., 234.17664, 234.11632,\n", + " 234.03847],\n", + " ...,\n", + " [245.86388, 245.92415, 245.97963, ..., 245.71205, 245.76198,\n", + " 245.80855],\n", + " [244.68976, 244.70775, 244.72629, ..., 244.62375, 244.64677,\n", + " 244.6693 ],\n", + " [243.6899 , 243.6928 , 243.69543, ..., 243.67926, 243.68317,\n", + " 243.68669]],\n", + "\n", + " [[222.20598, 222.20598, 222.20598, ..., 222.20598, 222.20598,\n", + " 222.20598],\n", + " [222.23734, 222.21318, 222.07043, ..., 222.22792, 222.23558,\n", + " 222.23615],\n", + " [222.3999 , 222.37779, 222.3799 , ..., 222.5746 , 222.54118,\n", + " 222.49016],\n", + " ...,\n", + " [241.44699, 241.4681 , 241.48888, ..., 241.39362, 241.41058,\n", + " 241.42757],\n", + " [241.39638, 241.40149, 241.40701, ..., 241.3798 , 241.38524,\n", + " 241.39091],\n", + " [241.28546, 241.28644, 241.28732, ..., 241.28188, 241.28319,\n", + " 241.28438]],\n", + "\n", + " ...,\n", + "\n", + " [[222.65955, 222.65955, 222.65955, ..., 222.65955, 222.65955,\n", + " 222.65955],\n", + " [223.17786, 223.1481 , 222.999 , ..., 223.18616, 223.18697,\n", + " 223.1821 ],\n", + " [223.68939, 223.66087, 223.65277, ..., 223.88887, 223.84923,\n", + " 223.78758],\n", + " ...,\n", + " [262.78552, 262.78598, 262.78644, ..., 262.79495, 262.7911 ,\n", + " 262.78812],\n", + " [262.48917, 262.49615, 262.50452, ..., 262.46664, 262.47482,\n", + " 262.48215],\n", + " [262.74307, 262.74222, 262.74146, ..., 262.74615, 262.74503,\n", + " 262.744 ]],\n", + "\n", + " [[234.63194, 234.63194, 234.63194, ..., 234.63194, 234.63194,\n", + " 234.63194],\n", + " [235.37543, 235.35039, 235.20912, ..., 235.37708, 235.38136,\n", + " 235.37898],\n", + " [235.88983, 235.86728, 235.86705, ..., 236.05313, 236.024 ,\n", + " 235.97372],\n", + " ...,\n", + " [256.63867, 256.65723, 256.67355, ..., 256.58252, 256.60062,\n", + " 256.61832],\n", + " [256.5771 , 256.58975, 256.60294, ..., 256.53543, 256.5506 ,\n", + " 256.56418],\n", + " [256.69495, 256.69467, 256.69443, ..., 256.69592, 256.69556,\n", + " 256.69522]],\n", + "\n", + " [[246.79817, 246.79817, 246.79817, ..., 246.79817, 246.79817,\n", + " 246.79817],\n", + " [247.46426, 247.42882, 247.27725, ..., 247.48682, 247.48152,\n", + " 247.47386],\n", + " [247.83315, 247.80038, 247.79907, ..., 248.0393 , 247.99686,\n", + " 247.93326],\n", + " ...,\n", + " [244.97816, 244.99681, 245.01486, ..., 244.93434, 244.94775,\n", + " 244.96184],\n", + " [244.81926, 244.83385, 244.84962, ..., 244.77505, 244.78955,\n", + " 244.80447],\n", + " [245.01997, 245.01904, 245.01822, ..., 245.02338, 245.02213,\n", + " 245.021 ]]]], dtype=float32)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.tas.data" + ] + }, + { + "cell_type": "markdown", + "id": "2299a7a5", + "metadata": {}, + "source": [ + "## Renaming Coordinates and Data Variables " + ] + }, + { + "cell_type": "markdown", + "id": "f67b002a", + "metadata": {}, + "source": [ + "It may be useful to rename variables or coordinates to more common ones. It is usually not necessary for CMIP6 data because coordinate and variable names are fully standardized. CMIP6 data follows [CF-conventions](https://cfconventions.org/). \n", + "\n", + "We will however show you how you can rename coordinates and/or variables and revert back our change." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ec650690", + "metadata": {}, + "outputs": [], + "source": [ + "tas_ds = tas_ds.rename(lon='longitude', lat='latitude')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "5ca93e2e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (latitude: 192, nbnd: 2, longitude: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * latitude   (latitude) float64 -90.0 -89.06 -88.12 ... 88.12 89.06 90.0\n",
+       "    lat_bnds   (latitude, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n",
+       "  * longitude  (longitude) float64 0.0 1.25 2.5 3.75 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds   (longitude, nbnd) float32 -0.625 0.625 0.625 ... 358.1 359.4\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time, latitude, longitude) float32 245.3 ... 245.0\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (latitude: 192, nbnd: 2, longitude: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * latitude (latitude) float64 -90.0 -89.06 -88.12 ... 88.12 89.06 90.0\n", + " lat_bnds (latitude, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n", + " * longitude (longitude) float64 0.0 1.25 2.5 3.75 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (longitude, nbnd) float32 -0.625 0.625 0.625 ... 358.1 359.4\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time, latitude, longitude) float32 245.3 ... 245.0\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds" + ] + }, + { + "cell_type": "markdown", + "id": "790649d5-4955-4ab6-9425-fefb93f697ae", + "metadata": {}, + "source": [ + "Now let's revert back our change and rename latitude and longitude to the most common names e.g. 'lat' and 'lon'." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7cfa51af-b76c-4820-8eb5-9b78ec25170b", + "metadata": {}, + "outputs": [], + "source": [ + "tas_ds = tas_ds.rename(longitude='lon', latitude='lat')" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "b0a0c32d-49f9-4552-8e0c-aefe46014b01", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "    lat_bnds   (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "    lon_bnds   (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time, lat, lon) float32 245.3 245.3 ... 245.0 245.0\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (lat: 192, nbnd: 2, lon: 288, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " lat_bnds (lat, nbnd) float32 -90.0 -89.53 -89.53 ... 89.53 89.53 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " lon_bnds (lon, nbnd) float32 -0.625 0.625 0.625 ... 358.1 358.1 359.4\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time, lat, lon) float32 245.3 245.3 ... 245.0 245.0\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds" + ] + }, + { + "cell_type": "markdown", + "id": "c28bcd77", + "metadata": {}, + "source": [ + "## Selection methods\n", + "\n", + "As underneath DataArrays are Numpy Array objects (that implement the standard Python x[obj] (x: array, obj: int,slice) syntax). Their data can be accessed through the same approach of numpy indexing." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "cc3c889d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' ()>\n",
+       "array(300.38446, dtype=float32)\n",
+       "Coordinates:\n",
+       "    lat        float64 4.241\n",
+       "    lon        float64 125.0\n",
+       "    time       object 1850-01-15 12:00:00\n",
+       "    member_id  <U8 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array(300.38446, dtype=float32)\n", + "Coordinates:\n", + " lat float64 4.241\n", + " lon float64 125.0\n", + " time object 1850-01-15 12:00:00\n", + " member_id \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (time: 5, lat: 10, lon: 10)>\n",
+       "array([[[300.38446, 300.08688, ..., 300.71   , 300.7822 ],\n",
+       "        [300.2441 , 299.95798, ..., 300.53357, 300.62396],\n",
+       "        ...,\n",
+       "        [297.77292, 298.71323, ..., 299.71173, 299.8677 ],\n",
+       "        [297.73315, 298.60205, ..., 299.6976 , 299.812  ]],\n",
+       "\n",
+       "       [[299.65933, 299.26968, ..., 300.4081 , 300.55255],\n",
+       "        [299.5267 , 299.12592, ..., 300.40277, 300.5284 ],\n",
+       "        ...,\n",
+       "        [297.3739 , 298.0038 , ..., 299.71512, 299.80475],\n",
+       "        [297.3448 , 297.89917, ..., 299.4545 , 299.56235]],\n",
+       "\n",
+       "       ...,\n",
+       "\n",
+       "       [[300.5706 , 300.41907, ..., 300.87616, 300.82022],\n",
+       "        [300.4315 , 300.26505, ..., 300.84323, 300.8234 ],\n",
+       "        ...,\n",
+       "        [299.8353 , 299.99384, ..., 300.41165, 300.41684],\n",
+       "        [299.85242, 299.9631 , ..., 300.28253, 300.27316]],\n",
+       "\n",
+       "       [[300.81683, 300.7148 , ..., 301.1554 , 301.1403 ],\n",
+       "        [300.5332 , 300.56613, ..., 300.99164, 301.0214 ],\n",
+       "        ...,\n",
+       "        [300.82352, 300.53986, ..., 300.4276 , 300.4221 ],\n",
+       "        [300.87964, 300.58102, ..., 300.36655, 300.33893]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 4.241 5.183 6.126 7.068 ... 9.895 10.84 11.78 12.72\n",
+       "  * lon        (lon) float64 125.0 126.2 127.5 128.8 ... 132.5 133.8 135.0 136.2\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 1850-05-15 12:00:00\n",
+       "    member_id  <U8 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array([[[300.38446, 300.08688, ..., 300.71 , 300.7822 ],\n", + " [300.2441 , 299.95798, ..., 300.53357, 300.62396],\n", + " ...,\n", + " [297.77292, 298.71323, ..., 299.71173, 299.8677 ],\n", + " [297.73315, 298.60205, ..., 299.6976 , 299.812 ]],\n", + "\n", + " [[299.65933, 299.26968, ..., 300.4081 , 300.55255],\n", + " [299.5267 , 299.12592, ..., 300.40277, 300.5284 ],\n", + " ...,\n", + " [297.3739 , 298.0038 , ..., 299.71512, 299.80475],\n", + " [297.3448 , 297.89917, ..., 299.4545 , 299.56235]],\n", + "\n", + " ...,\n", + "\n", + " [[300.5706 , 300.41907, ..., 300.87616, 300.82022],\n", + " [300.4315 , 300.26505, ..., 300.84323, 300.8234 ],\n", + " ...,\n", + " [299.8353 , 299.99384, ..., 300.41165, 300.41684],\n", + " [299.85242, 299.9631 , ..., 300.28253, 300.27316]],\n", + "\n", + " [[300.81683, 300.7148 , ..., 301.1554 , 301.1403 ],\n", + " [300.5332 , 300.56613, ..., 300.99164, 301.0214 ],\n", + " ...,\n", + " [300.82352, 300.53986, ..., 300.4276 , 300.4221 ],\n", + " [300.87964, 300.58102, ..., 300.36655, 300.33893]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 4.241 5.183 6.126 7.068 ... 9.895 10.84 11.78 12.72\n", + " * lon (lon) float64 125.0 126.2 127.5 128.8 ... 132.5 133.8 135.0 136.2\n", + " * time (time) object 1850-01-15 12:00:00 ... 1850-05-15 12:00:00\n", + " member_id selection based on positional index\n", + "- `.sel` -> selection based on coordinate values" + ] + }, + { + "cell_type": "markdown", + "id": "eabe47e9", + "metadata": {}, + "source": [ + "We first check the number of elements in each coordinate of the `tas` Data Variable using the built-in method sizes. Same result can be achieved querying each coordinate using the Python built-in function `len`." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "0ff0f183", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Frozen({'member_id': 1, 'time': 1980, 'lat': 192, 'lon': 288})" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.tas.sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "be3fa61d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' ()>\n",
+       "array(300.38446, dtype=float32)\n",
+       "Coordinates:\n",
+       "    lat        float64 4.241\n",
+       "    lon        float64 125.0\n",
+       "    time       object 1850-01-15 12:00:00\n",
+       "    member_id  <U8 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array(300.38446, dtype=float32)\n", + "Coordinates:\n", + " lat float64 4.241\n", + " lon float64 125.0\n", + " time object 1850-01-15 12:00:00\n", + " member_id \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1, lat: 192, lon: 288)>\n",
+       "array([[[[245.71487, ..., 245.71481],\n",
+       "         ...,\n",
+       "         [246.21568, ..., 246.21373]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n",
+       "  * time       (time) object 2010-01-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array([[[[245.71487, ..., 245.71481],\n", + " ...,\n", + " [246.21568, ..., 246.21373]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 -90.0 -89.06 -88.12 -87.17 ... 88.12 89.06 90.0\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 355.0 356.2 357.5 358.8\n", + " * time (time) object 2010-01-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.tas.sel(time='2010-01-15')" + ] + }, + { + "cell_type": "markdown", + "id": "f152eac9", + "metadata": {}, + "source": [ + "Time is easy to be used as there is a 1 to 1 correspondence with values in the index, float values are not that easy to be used and a small discrepancy can make a big difference in terms of results." + ] + }, + { + "cell_type": "markdown", + "id": "e3884097", + "metadata": {}, + "source": [ + "\n", + "Coordinates are always affected by precision issues; the best option to quickly get a point over the coordinates is to set the sampling method (method='') that will search for the closest point according to the specified one.\n", + "\n", + "Options for the method are:\n", + "- pad / **f**fill: propagate last valid index value forward\n", + "- backfill / **b**fill: propagate next valid index value backward\n", + "- nearest: use nearest valid index value\n", + "\n", + "Another important parameter that can be set is the tolerance that specifies the distance between the requested and the target (so that abs(index\\[indexer] - target) <= tolerance) from [documentation](https://xarray.pydata.org/en/v0.17.0/generated/xarray.DataArray.sel.html#:~:text=xarray.DataArray.sel%20%C2%B6%20DataArray.sel%28indexers%3DNone%2C%20method%3DNone%2C%20tolerance%3DNone%2C%20drop%3DFalse%2C%20%2A%2Aindexers_kwargs%29%20%C2%B6,this%20method%20should%20use%20labels%20instead%20of%20integers.)." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "de3b813c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (nbnd: 2, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "    lat        float64 46.65\n",
+       "    lat_bnds   (nbnd) float32 46.18 47.12\n",
+       "    lon        float64 8.75\n",
+       "    lon_bnds   (nbnd) float32 8.125 9.375\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time) float32 272.7 273.8 274.2 ... 278.1 275.4 272.2\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (nbnd: 2, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " lat float64 46.65\n", + " lat_bnds (nbnd) float32 46.18 47.12\n", + " lon float64 8.75\n", + " lon_bnds (nbnd) float32 8.125 9.375\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time) float32 272.7 273.8 274.2 ... 278.1 275.4 272.2\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.sel(lat=46.3, lon=8.8, method='nearest')" + ] + }, + { + "cell_type": "markdown", + "id": "69292a19", + "metadata": {}, + "source": [ + ":::{warning}\n", + "To select a single real value without specifying a method, you would need to specify the exact encoded value; not the one you see when printed.\n", + ":::" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "90e5ebea", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "125.0" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.isel(lon=100).lon.values.item()" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "5b91cce4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4.240837696335078" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.isel(lat=100).lat.values.item()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "586339f1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:    (nbnd: 2, member_id: 1, time: 1980)\n",
+       "Coordinates:\n",
+       "    lat        float64 4.241\n",
+       "    lat_bnds   (nbnd) float32 3.77 4.712\n",
+       "    lon        float64 125.0\n",
+       "    lon_bnds   (nbnd) float32 124.4 125.6\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "    time_bnds  (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Dimensions without coordinates: nbnd\n",
+       "Data variables:\n",
+       "    tas        (member_id, time) float32 300.4 299.7 299.9 ... 302.3 302.0 301.8\n",
+       "Attributes: (12/50)\n",
+       "    Conventions:             CF-1.7 CMIP-6.2\n",
+       "    activity_id:             CMIP\n",
+       "    branch_method:           standard\n",
+       "    branch_time_in_child:    674885.0\n",
+       "    branch_time_in_parent:   219000.0\n",
+       "    case_id:                 15\n",
+       "    ...                      ...\n",
+       "    variant_label:           r1i1p1f1\n",
+       "    status:                  2019-10-25;created;by nhn2@columbia.edu\n",
+       "    netcdf_tracking_ids:     hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n",
+       "    version_id:              v20190308\n",
+       "    intake_esm_varname:      tas\n",
+       "    intake_esm_dataset_key:  CMIP.NCAR.CESM2.historical.Amon.gn
" + ], + "text/plain": [ + "\n", + "Dimensions: (nbnd: 2, member_id: 1, time: 1980)\n", + "Coordinates:\n", + " lat float64 4.241\n", + " lat_bnds (nbnd) float32 3.77 4.712\n", + " lon float64 125.0\n", + " lon_bnds (nbnd) float32 124.4 125.6\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " time_bnds (time, nbnd) object 1850-01-01 00:00:00 ... 2015-01-01 00:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Dimensions without coordinates: nbnd\n", + "Data variables:\n", + " tas (member_id, time) float32 300.4 299.7 299.9 ... 302.3 302.0 301.8\n", + "Attributes: (12/50)\n", + " Conventions: CF-1.7 CMIP-6.2\n", + " activity_id: CMIP\n", + " branch_method: standard\n", + " branch_time_in_child: 674885.0\n", + " branch_time_in_parent: 219000.0\n", + " case_id: 15\n", + " ... ...\n", + " variant_label: r1i1p1f1\n", + " status: 2019-10-25;created;by nhn2@columbia.edu\n", + " netcdf_tracking_ids: hdl:21.14100/d9a7225a-49c3-4470-b7ab-a8180926f839\n", + " version_id: v20190308\n", + " intake_esm_varname: tas\n", + " intake_esm_dataset_key: CMIP.NCAR.CESM2.historical.Amon.gn" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_ds.sel(lat=4.240837696335078, lon=125.0)" + ] + }, + { + "cell_type": "markdown", + "id": "98c41084", + "metadata": {}, + "source": [ + "That is why we use a `method`! It makes your life easier to deal with inexact matches." + ] + }, + { + "cell_type": "markdown", + "id": "1ded4da9", + "metadata": {}, + "source": [ + "As the exercise is focused on an Area Of Interest, this can be obtained through a bounding box defined with slices." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "90629284", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 18, lon: 35)>\n",
+       "array([[[[277.14154, ..., 255.24866],\n",
+       "         ...,\n",
+       "         [271.17374, ..., 259.73807]],\n",
+       "\n",
+       "        ...,\n",
+       "\n",
+       "        [[283.0737 , ..., 269.6892 ],\n",
+       "         ...,\n",
+       "         [272.89108, ..., 271.8542 ]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array([[[[277.14154, ..., 255.24866],\n", + " ...,\n", + " [271.17374, ..., 259.73807]],\n", + "\n", + " ...,\n", + "\n", + " [[283.0737 , ..., 269.6892 ],\n", + " ...,\n", + " [272.89108, ..., 271.8542 ]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI = tas_ds.tas.sel(lat=slice(54.5,71.5), lon=slice(-2.5,42.5))\n", + "tas_AOI" + ] + }, + { + "cell_type": "markdown", + "id": "067dc4cf", + "metadata": {}, + "source": [ + ":::{tip} the values for `lat` and `lon` need to be selected in the order shown in the coordinate section (here in increasing order) and not always in increasing order?\n", + "**You need to use the same order as the corresponding DataArray**.\n", + ":::" + ] + }, + { + "cell_type": "markdown", + "id": "1ff8090c", + "metadata": {}, + "source": [ + "## Plotting\n", + " Plotting data can easily be obtained through matplotlib.pyplot back-end [matplotlib documentation](https://matplotlib.org/stable/index.html)." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "a262ec7b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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668RFBSEs2fPonbt2tnuSO/atWuedRQEJkNEREQqKOwZqEeOHIl169Zh69atcHR0RHx8PADA2dnZeGv8hAkT0Lt3bzRv3hytWrXCrl27sH37dhw4cABA5q33a9euRceOHeHi4oLz589j3LhxqFevnqyVKY4cOYJDhw5h586d2R5TcwB10Zu+koiI6EWQNQO1OZsCixcvRkJCAlq2bAkPDw/jtmHDBmOZHj16YMmSJZgzZw78/Pzw9ddfY9OmTWjWrBmAzNajn376CYGBgahevTqCg4PRrl077Nu3D1ZWed/VHBwcjAEDBuDWrVswGAwmm1qJEFCALUPe3t7Zmr+IiIhIHXJvbHp6WYwneXl5ZZt9Wol79+5h7NixcHNze+46CoLilqEbN27gr7/+Mv587NgxjBkzBkuXLjUpd/bs2Wwj3ImIiCiTgGT2VtRk3aZvaRS3DL3xxht46623MGDAAMTHx6Nt27aoVasW1qxZg/j4eHz88ccFEScREdELpbDXJrME1apVQ2hoKA4dOgQ/P79sPUjBwcGqxKU4GTp79ixefvllAMDGjRtRu3ZtHD58GHv27MHw4cOZDBEREclRDFet//rrr1GiRAlER0dn626TJKnoJEPp6enGOQz27dtnvA2uRo0auHXrVv5GR0RERC+MuLg4tUPIkeK0slatWliyZAl+/vln7N27F+3btwcA/P333yhTpky+B0hERPQiyrq13pytqEpLS8OFCxeg1+vVDgXAcyRDs2fPxldffYWWLVuib9++eOmllwAA27ZtM3afERER0bNljRkyZytqkpOTMXToUNjb26NWrVq4fv06gMyxQrNmzVItLsVXsmXLlrh79y7u3r2Lb775xrj/rbfewpIlS/I1OCIiInpxZC3qeuDAAdja2hr3t2nTxmS+o8L2XPMMCSEQExODy5cv44033oCjoyO0Wi3s7e3zOz4iIqIXUz4t1FqUbNmyBRs2bEDjxo1NVqz39fXF5cuXVYtLcTJ07do1tG/fHtevX0dqairatm0LR0dHzJkzBykpKWwdIiIiksPcrq4i2E12584duLq6Ztv/6NEjk+SosCm+ku+++y4aNmyI+/fvG9cyATKn8P7pp5/yNTgiIiJ6cfj7+2PHjh3Gn7MSoGXLlqFJkyZqhaU8GTp06BA+/PBDaLVak/3e3t64efOm4gBu3ryJ/v37o0yZMrC3t0fdunURExOTY9m3334bkiRhwYIFis9DRERkSYrTDNSvvvoqHjx4gPDwcEyaNAnvvPMO9Ho9Fi5ciLZt22LFihWYMWOGavEpToZyW0ztr7/+gqOjo6K67t+/j6ZNm8LGxgY7d+7E+fPnMXfuXJQsWTJb2S1btuDXX3+Fp6en0pCJiIgsTnG6m+zAgQNIS0tDQEAADh8+jOTkZFSuXBl79uyBm5sbfvnlFzRo0EC1+BSPGWrbti0WLFhgXItMkiQ8fPgQkydPRseOHRXVNXv2bHh5eSEiIsK4z8fHJ1u5mzdvYtSoUdi9ezc6deqkNGQAQPrjDKTLfN9orOVn21ZaeQvfPQ8rrfw3utZBJ7tsSZ/s/bXP4ljNR37hWvVlF73upmwqhtQMbd6FnoPOStlKyUrKazTy3x81NLGK4nC497fsslJGuuyy6XYlFcXxyNpZdtmkZPmvodLhA9Z5L5htlGGQXzY1TVkcaenyX/PUVPnvpbQ0BUEDSE+TX3d6mvy5XjL0yuJQwspG/q8krZ1t3oWeIGnkfZ9K1uqtnF5c+Pn5YeXKlWqHYUJxMjR//ny0atUKvr6+SElJwRtvvIFLly7BxcUF3377raK6tm3bhsDAQLz++uuIjo5GuXLlMGLECAwbNsxYxmAwYMCAAZgwYQJq1aqVZ52pqalITU01/pyYmKgoJiIiokIhwcy7yfItkkKRlJRkcjt9TpycnAopGlOKkyFPT0+cPn0a3377LU6ePAmDwYChQ4eiX79+JgOq5bhy5QoWL16MkJAQfPDBBzh27BiCg4Oh0+kwcOBAAJmtR9bW1rLXKwkPD8eUKVOUPi0iIqJCJaCBUD5axeT4oqRatWq5PiaEgCRJOQ7DKQzPNc+QnZ0dhgwZgiFDhph1coPBgIYNG2LmzJkAgHr16uHcuXNYvHgxBg4ciJiYGCxcuBAnT56UfctdaGgoQkJCjD8nJibCy8vLrDiJiIjym7lLahS15Ti+//57lC5dWu0wcvRcydDq1avx1Vdf4cqVK/jll1/g7e2N+fPno1KlSujWrZvsejw8PODr62uyr2bNmti0aRMA4Oeff8bt27dRoUIF4+MZGRkYN24cFixYgKtXr2arU6fTGReSJSIiIsvQtGnTHOcYsgSK29iyurU6dOiA+/fvG5u0SpUqpfiW96ZNm+LChQsm+y5evAhvb28AwIABA3DmzBmcPn3auHl6emLChAnYvXu30tCJiIgsRnG6m8zSKW4ZWrRoEZYtW4bu3bubLKrWsGFDjB8/XlFdY8eORUBAAGbOnIlevXrh2LFjWLp0qfFOtTJlyqBMmTImx9jY2MDd3R3Vq1dXGjoREZHFMHeuoKI0z5C3tzesrBTc8lnIFKeVcXFxqFevXrb9Op0Ojx49UlSXv78/IiMj8e2336J27dqYNm0aFixYgH79+ikNi4iIiCxUXFxctsYNS6K4ZahixYo4ffq0sSsry86dO7ON/5Gjc+fO6Ny5s+zyOY0TIiIiKmrM7epiN1n+UZwMTZgwASNHjkRKSgqEEDh27Bi+/fZbhIeH4+uvvy6IGImIiF44xe1uMkumOBkaPHgw9Ho9Jk6ciOTkZLzxxhsoV64cFi5ciD59+hREjEREREQFRlEbm16vx8qVK9GlSxdcu3YNt2/fRnx8PG7cuIGhQ4cWVIxEREQvnOK0UCsApKeno1WrVrh48aLaoWSjqGXI2toa77zzDmJjM9dQcnFxKZCgiIiIXnTFbcyQjY0Nzp49K3sS5cKk+Eo2atQIp06dKohYiIiI6AU2cOBALF++XO0wslE8ZmjEiBEYN24c/vrrLzRo0AAODg4mj9epUyffgiMiInpRFad5hrKkpaXh66+/xt69e9GwYcNsOcS8efNUiUtxMtS7d28AMFk4VZIk1RdZIyIiKkoEzOwmK2ILtQLA2bNnUb9+fQDINnYor+4zpeuaSZKEkydPZpsKKCeKk6G4uDilhxAREdFTimPLUFRU1HMf++DBAyxYsADOzs55lhVCYMSIEbIbaBQnQ3IyLCIiIqL81qdPH9mLvY4ePVp2vYqToW3btuW4X5Ik2NraokqVKqhYsaLSaomIiIqVzEkXzbmbrGi0DPXs2RMrVqyAk5MTevbs+cyymzdvzvUxg8Gg6LxJSUmyyypOhrp3724cI/SkJ8cNNWvWDFu2bEGpUqWUVk9ERFQsFJduMmdnZ+N4IDldXM9y8+ZNlCtX7pll1q5dq3iNU8XJ0N69ezFp0iTMmDEDL7/8MgDg2LFj+PDDD/HRRx/B2dkZb7/9NsaPH2+Rt88RERFR4YmIiMjx/8+jbdu2OHz4cK6NLevWrcPgwYMLPhl69913sXTpUgQEBBj3tW7dGra2tnjrrbdw7tw5LFiwAEOGDFFadYHSJ2ZAL7M10squYEbo29jbKCrv4FJCdlmXmuXl19s2UFEcl8u1kl02Mc0h70L/T59iGXdC6Kz1isprJPlNtRWka7LLOv95XFEcSE+TXdRQ2l122VtO1RWFcTtFfgtwhii4v2SV9BgoaW1/qhE8T1ZW8gOxxMnn8iJplMVsZWMlu6wOOvn1WsmvFwAey4xbY5WuqF5zcG2yTPfv38eaNWuwfPlynD59+pllXV1d0b59e+zfvz/bbfnr16/HoEGDMHv2bMUxKP5tdPnyZTg5OWXb7+TkhCtXrgAAqlatirt37yoOhoiIqLgQQjJ7K8r27duHvn37wtPTE3PmzEGLFi3yPOaHH35ARkYGunXrhvT0/xLXjRs3YuDAgZg5cybGjh2rOBbFyVCDBg0wYcIE3Llzx7jvzp07mDhxIvz9/QEAly5dQvny8lsqiIiI6MV3/fp1TJkyBT4+PujTpw82btyINWvW4MaNG1i4cGGex5coUQI7d+7EzZs30adPHwgh8N1336F///6YNm0axo8f/1xxKU6Gli9fjri4OJQvXx5VqlRB1apVUb58eVy9ehVff/01AODhw4f46KOPnisgIiKi4kGTOfHic27P8StcNRs3bkS7du1Qs2ZNnD17FgsXLsTff/8NjUaDmjVrKqqrbNmy2LNnD06cOIE2bdqgf//+mDx5Mt57773njk/xmKHq1asjNjYWu3fvxsWLFyGEQI0aNdC2bVtoNJkvTPfu3Z87ICIiouKguNxNBgBvvPEGJk6ciE2bNsHR0fG56zlz5ozx/5988gkGDhyIHj16oEuXLiaPKV0aTHEyBGQO+mvfvj1atmwJnU5XJAcBEhERUeEYMmQIvvzyS0RHR2PAgAHo3bv3c02/U7duXZOpfIQQ2LhxI7777jvjlD/PszSY4jY2g8GAadOmoVy5cihRooRxeY6PPvqIt9ITERHJlNUyZM5WVCxduhS3bt3CW2+9hW+//RYeHh7o1q0bhBCKJlOMi4vDlStXTP7N6f9KKU6Gpk+fjhUrVmDOnDnQarXG/X5+fsYxQ0RERPRsxSkZAgA7OzsEBQUhOjoav//+O3x9feHm5oamTZvijTfeeObs00BmF5mXlxe8vb3z3ADg3Llz0OvlTZ2iOBlatWoVli5din79+pnM81CnTh388ccfSqsjIiIqlopbMvSkqlWrIjw8HDdu3MCaNWuQnJyMvn37PvOYevXq4d69e7LP0aRJE1y/fl1WWcVjhm7evIkqVapk228wGEzu+SciIiJ6Fo1Ggy5duqBLly64ffv2M8sKIfDRRx/B3t5eVt1pafInplWcDNWqVQs///xzttXrv/vuO9SrV09pdURERMWSuRMnFvVJF5+W12r0zZs3x4ULF2TX16RJE9jZ2ckqqzgZmjx5MgYMGICbN2/CYDBg8+bNuHDhAlatWoUffvhBaXVERETFUnG6tT4/HDhwoMDqVjxmqEuXLtiwYQN+/PFHSJKEjz/+GLGxsdi+fTvatm1bEDESERERFZjnmmcoMDAQgYHKFvskIiKi/7BlyHIUnbm8iYiIXiDF9W6yBw8e4Ouvv0ZoaCj+/fdfAMDJkydx8+ZN1WKS1TJUqlQp2bNMZz0xIiIioiedOXMGbdq0gbOzM65evYphw4ahdOnSiIyMxLVr17Bq1SpV4pLVMrRgwQLMnz8f8+fPx4cffgggs6ssLCwMYWFhxi4zLs5KREQkj4BkvKPsuTaFLUPh4eHw9/eHo6MjXF1d0b179xzvzoqNjUXXrl3h7OwMR0dHNG7c2GS+ntTUVIwePRouLi5wcHBA165d8ddff8mKISQkBIMGDcKlS5dga2tr3N+hQwccPHhQ0fPJT7JahoKCgoz/f+211zB16lSMGjXKuC84OBiff/459u3bh7Fjx+Z/lERERC8YAyQYzOjqUnpsdHQ0Ro4cCX9/f+j1ekyaNAnt2rXD+fPn4eDgAAC4fPkymjVrhqFDh2LKlClwdnZGbGysSeIyZswYbN++HevXr0eZMmUwbtw4dO7cGTExMSaTMefk+PHj+Oqrr7LtL1euHOLj4xU9n/ykeAD17t27MXv27Gz7AwMD8f777+dLUERERJS/du3aZfJzREQEXF1dERMTg+bNmwMAJk2ahI4dO2LOnDnGcpUqVTL+PyEhAcuXL8fq1avRpk0bAMCaNWvg5eWFffv25Xlzla2tLRITE7Ptv3DhAsqWLfvcz81cigdQlylTBpGRkdn2b9myBWXKlMmXoIiIiF50+TWAOjEx0WRLTU2Vdf6EhAQAQOnSpQFkriSxY8cOVKtWDYGBgXB1dUWjRo2wZcsW4zExMTFIT09Hu3btjPs8PT1Ru3ZtHDlyJM9zduvWDVOnTjWuWCFJEq5fv473338fr732mqy4C4LilqEpU6Zg6NChOHDgAJo0aQIAOHr0KHbt2mXRC7XqH+qRLgmZpeVfFusSz24SfJJdKXkzYWZxqVledtl/B0+VXfZ8irKkNSlRm3eh/6eB3GsMaK3lr1QMANYa+eWVlNVZKVtGxlYj74sGAEpfPCq7rOHus6eif5pGq5NdNsPWQXbZB2mOiuJIz5D/GTAY5DfrK1jIGgCQoaC8kP82hbXCb0mDglmBbW0L7oZevV7+BbF3lP9estEquyApj+W/P1KT5X+2rGzk1wsAWjt532PpqcrqNUd+zUDt5eVlsn/y5MkICwvL41iBkJAQNGvWDLVr1wYA3L59Gw8fPsSsWbMwffp0zJ49G7t27ULPnj0RFRWFFi1aID4+HlqtFqVKlTKpz83NTVY316effoqOHTvC1dUVjx8/NtbZpEkTzJgxQ8Gzz1+Kk6FBgwahZs2a+Oyzz7B582YIIeDr64vDhw+jUaNGigO4efMm3nvvPezcuROPHz9GtWrVsHz5cjRo0ADp6en48MMP8eOPP+LKlStwdnZGmzZtMGvWLHh6eio+FxERkaUQMG+uoKyc/saNG3BycjLu1+nyTm5HjRqFM2fO4NChQ8Z9hv//C6Rbt27G8b9169bFkSNHsGTJErRo0SL3WISQdde5k5MTDh06hP379+PkyZMwGAyoX7++sctNLc816WKjRo2wdu1as09+//59NG3aFK1atcLOnTvh6uqKy5cvo2TJkgCA5ORknDx5Eh999BFeeukl3L9/H2PGjEHXrl1x4sQJs89PRERU1Dk5OZkkQ3kZPXo0tm3bhoMHD6J8+f96IFxcXGBtbQ1fX1+T8jVr1jQmTe7u7khLS8P9+/dNWodu376NgIAA2TG8+uqrePXVV2WXL2iykqHExERFFzopKQmOjnk3tc+ePRteXl6IiIgw7vPx8TH+39nZGXv37jU5ZtGiRXj55Zdx/fp1VKhQQXZMRERElqSwF2oVQmD06NGIjIzEgQMHULFiRZPHtVot/P39s91uf/HiRePi7A0aNICNjQ327t2LXr16AQBu3bqFs2fPmgy6zk1wcDCqVKmC4OBgk/2ff/45/vzzTyxYsEDRc8ovsjqsS5Uqhdu35Y9nKFeuHK5cuZJnuW3btqFhw4Z4/fXX4erqinr16mHZsmXPPCYhIQGSJBlbj56WmpqabTAZERGRpSnsGahHjhyJNWvWYN26dXB0dER8fDzi4+Px+PFjY5kJEyZgw4YNWLZsGf788098/vnn2L59O0aMGAEgs5Fi6NChGDduHH766SecOnUK/fv3h5+fn6yurk2bNqFp06bZ9gcEBOD7779X9Hzyk6yWISEEvv76a5QoUUJWpVmjxPNy5coVLF68GCEhIfjggw9w7NgxBAcHQ6fTYeDAgdnKp6Sk4P3338cbb7yRa0tVeHg4pkyZIuv8RERExcXixYsBAC1btjTZHxERgUGDBgEAevTogSVLliA8PBzBwcGoXr06Nm3ahGbNmhnLz58/H9bW1ujVqxceP36M1q1bY8WKFXnOMQQA9+7dg7Ozc7b9Tk5OuHv37vM/OTPJSoYqVKiQZ4vNk9zd3WFjY5NnOYPBgIYNG2LmzJkAgHr16uHcuXNYvHhxtmQoPT0dffr0gcFgwJdffplrnaGhoQgJCTH+nJiYmG2kPRERkdrU6CaTY8iQIRgyZEiuj9va2mLRokVYtGiRovMDQJUqVbBr1y6TiZsBYOfOnSbzGRU2WcnQ1atXC+TkHh4eOQ7U2rRpk8m+9PR09OrVC3Fxcdi/f/8zxy/pdDpZI+mJiIjUJAAonEEi2/FFTUhICEaNGoU7d+4YB1D/9NNPmDt3rmrjhYDnvJssvzRt2vSZA7WA/xKhS5cuISoqihM7EhERFVFDhgxBamoqZsyYgWnTpgHIvHEqpx6hwqRqMjR27FgEBARg5syZ6NWrF44dO4alS5di6dKlAAC9Xo///e9/OHnyJH744QdkZGQYJ3UqXbo0tFr5kwESERFZksLuJrMU77zzDt555x3cuXMHdnZ2sscjFyRVkyF/f39ERkYiNDQUU6dORcWKFbFgwQL069cPAPDXX39h27ZtADInfnpSVFRUtkFgRERERcXz3BH29PFFmZprkT1N1WQIADp37ozOnTvn+JiPj4/sAV9ERERk+b7//nts3LgR169fR1pamsljJ0+eVCWmglsYh4iIiHKV1U1mzlbUfPbZZxg8eDBcXV1x6tQpvPzyyyhTpgyuXLmCDh06qBbXcyVDP//8M/r3748mTZrg5s2bAIDVq1ebrHFCREREuSvsSRctwZdffomlS5fi888/h1arxcSJE7F3714EBwcjISFBtbgUJ0ObNm1CYGAg7OzscOrUKaSmZq4ynJSUZJwviIiIiJ7NIMzfiprr168b1zCzs7NDUlISAGDAgAH49ttvVYtLcTI0ffp0LFmyBMuWLTOZWDEgIEC1vj4iIiKyfO7u7rh37x4AwNvbG0ePHgUAxMXFqTpGWHEydOHCBTRv3jzbficnJzx48CA/YiIiInrhFcdusldffRXbt28HAAwdOhRjx45F27Zt0bt3b/To0UO1uBTfTebh4YE///zTZHV5ADh06JCqU2kTEREVJcVxnqGlS5fCYMicd3v48OEoXbo0Dh06hC5dumD48OGqxaW4Zejtt9/Gu+++i19//RWSJOHvv//G2rVrMX78eOOqtkREREQA0LNnTyQmJgIA1qxZg4yMDONjvXr1wmeffYbg4GBVJ1JW3DI0ceJEJCQkoFWrVkhJSUHz5s2h0+kwfvz4bAuvERERUc6EyNzMOb4o+OGHH/Do0SM4OTlh8ODBaN++PVxdXdUOy8RzTbo4Y8YMTJo0CefPn4fBYICvr69FTKdNRERUVBggwWDGuB9zji1MNWrUQGhoKFq1agUhBDZu3JjrgutqrU/23DNQ29vbo2HDhvkZS5GksZL/ZtQ6KGsC1LmUkl021aCTX1av7GW3kuT/+eGkS5VdVmulVxSHRpK/vrOkYD1nrSZdURw6KUV2WYOzgoWFb99SFIcSBmv57w9b67S8Cz0hzaDk/VRwk95rFPxe0NrkXSaLJCn7hVPSUf5774aCl1ynUzaqQa+3kl02I0P+Z0uj8Hro9Rl5F8qq28FWdlkbnbL3UnqqvO+btBT58ZI8S5YsQUhICHbs2AFJkvDhhx/m+LmSJMmyk6GePXvKrnDz5s3PHQwREVFxUVwGUAcEBBhvoddoNLh48WLR7CZzdnY2/l8IgcjISDg7OxtbhmJiYvDgwQNFSRMREVFxVlzGDGXR6/UYOHCgcbJmSyIrGYqIiDD+/7333kOvXr2wZMkSWFllNsNmZGRgxIgRufYBEhERUfFmbW2NTZs2ISwsTO1QslF8a/0333yD8ePHGxMhALCyskJISAi++eabfA2OiIjoRVUcJ11s3bo1Dhw4oHYY2SgezajX6xEbG4vq1aub7I+NjTVOpERERETPZu76YkVxbbIOHTogNDQUZ8+eRYMGDeDg4GDyeNeuXVWJS3EyNHjwYAwZMgR//vknGjduDAA4evQoZs2ahcGDB+d7gERERC8kMwdQo4gMoH7SO++8AwCYN29etsckSTKZkLEwKU6GPv30U7i7u2P+/Pm4dSvzvlAPDw9MnDgR48aNy/cAiYiI6MVgqT1IipMhjUaDiRMnYuLEicbptTlwmoiISJnidjeZJTNrBjQmQURERM+nuMxA/aSpU6c+8/GPP/64kCIxpTgZqlix4jNnZL1y5YpZAREREdGLKTIy0uTn9PR0xMXFwdraGpUrVy46ydCYMWNMfk5PT8epU6ewa9cuTJgwIb/iIiIieqEVx26yU6dOZduXmJiIQYMGoUePHipElElxMvTuu+/muP+LL77AiRMnzA6IiIioOCguy3HkxcnJCVOnTkXnzp0xYMAAVWJQPOlibjp06IBNmzblV3VERERUTDx48AAJCQmqnT/flpD+/vvvUbp06fyqjoiI6IVWHCdd/Oyzz0x+FkLg1q1bWL16Ndq3b69SVM+RDNWrV89kALUQAvHx8bhz5w6+/PLLfA2OiIjoRVUcxwzNnz/f5GeNRoOyZcsiKCgIoaGhKkX1HMlQt27dTJKhrCfSsmVL1KhRI1+DIyIiohdHXFyc2iHkSHEyZImrzRIRERU15i62WhQXan3atWvX8OjRI9SoUQMaTb4NY1ZM8ZmtrKxw+/btbPvv3btnspI9ERER5c6A/8YNPdem9hNQYOXKlViwYIHJvrfeeguVKlWCn58fateujRs3bqgTHJ4jGRK5dFKmpqZCq9WaHRAREVFxkDVmyJytqFiyZAmcnZ2NP+/atQsRERFYtWoVjh8/jpIlS2LKlCmqxSe7myxrBLgkSfj6669RokQJ42MZGRk4ePBgsRwzZMiQ/25MTUpRVHfKP3dll7XXPJJdtpRtwSWtDlbJssvqNMquh5VBL7usRshf+VhjULZKsk1GquyyetsSeRf6f0r7rDP+f21AOXTXz8suW9PumqI40ku5yy6b5Owlu+yZx8q+TzQa+VcwXS+/e0FroygMpKTJr9veTv7fo+npyn7zZdjJb6m3tpYfx+Nk+Z9DpQwKfrtrnrESQo7lreQ9R0mj8AUnWS5evIiGDRsaf966dSu6du2Kfv36AQBmzpyJwYMHqxWe/O/frBHgQggsWbLEpEtMq9XCx8cHS5Ysyf8IiYiIXkDF6W6yx48fm6xneuTIEQwZMsT4c6VKlRAfH69GaAAUJENZI8BbtWqFzZs3o1SpUgUWFBER0YvOICQYzJhF2pxjC5u3tzdiYmLg7e2Nu3fv4ty5c2jWrJnx8fj4eJNutMKmeMxQVFRUviZCN2/eRP/+/VGmTBnY29ujbt26iImJMT4uhEBYWBg8PT1hZ2eHli1b4ty5c/l2fiIiIipYAwcOxMiRIzFt2jS8/vrrqFGjBho0aGB8/MiRI6hdu7Zq8clqGQoJCcG0adPg4OCAkJCQZ5adN2+e7JPfv38fTZs2RatWrbBz5064urri8uXLKFmypLHMnDlzMG/ePKxYsQLVqlXD9OnT0bZtW1y4cAGOjo6yz0VERGRJilM32XvvvYfk5GRs3rwZ7u7u+O6770weP3z4MPr27atSdDKToVOnTiE9PR0AcPLkSZNJF80xe/ZseHl5ISIiwrjPx8fH+H8hBBYsWIBJkyahZ8+eADJvz3Nzc8O6devw9ttv50scREREha04JUMajQbTpk3DtGnTcnz86eSosMlKhqKiooz/P3DgQL6dfNu2bQgMDMTrr7+O6OholCtXDiNGjMCwYcMAZI5Tio+PR7t27YzH6HQ6tGjRAkeOHMkxGUpNTUVq6n93+yQquOOGiIiICseIESMwdepUuLi4qB2K8jFDQ4YMQVJSUrb9jx49MhkZLseVK1ewePFiVK1aFbt378bw4cMRHByMVatWAYBxZLmbm5vJcW5ubrmOOg8PD4ezs7Nx8/KSfysvERFRYRHmTLhYxOYZysmaNWsspsFCcTK0cuVKPH78ONv+x48fG5MYuQwGA+rXr4+ZM2eiXr16ePvttzFs2DAsXrzYpNzT3XJCiFy76kJDQ5GQkGDc1JzRkoiIKDdCSGZvRVlukzirQXYylJiYiISEBAghkJSUhMTERON2//59/Pjjj3B1dVV0cg8PD/j6+prsq1mzJq5fvw4AcHfPnMzt6Vag27dvZ2styqLT6eDk5GSyERERkboyMjIQHR2N+/fvqx1KNrLnGSpZsiQkSYIkSahWrVq2xyVJUjyVdtOmTXHhwgWTfRcvXoS3tzcAoGLFinB3d8fevXtRr149AEBaWhqio6Mxe/ZsReciIiKyJMVpADWQubZpYGAgYmNjUapUqRyH3KhFdjIUFRUFIQReffVVbNq0CaVLlzY+ptVq4e3tDU9PT0UnHzt2LAICAjBz5kz06tULx44dw9KlS7F06VIAmQnWmDFjMHPmTFStWhVVq1bFzJkzYW9vjzfeeEPRuYiIiCxJ1tgfc44vavz8/HDlyhVUrFhR7VBMyE6GWrRoASDzDi8vLy9oNIqHG2Xj7++PyMhIhIaGYurUqahYsSIWLFhgXKsEACZOnIjHjx9jxIgRuH//Pho1aoQ9e/ZwjiEiIirSilvLEADMmDED48ePx7Rp09CgQQM4ODiYPK7W0Bala0Mau7CSk5Nx/fp1pKWlmTxep04dRfV17twZnTt3zvVxSZIQFhaGsLAwpaESERGRBWnfvj0AoGvXriY3QmXdGJWRoWzh7PyiOBm6c+cOBg8ejJ07d+b4uFpPhIiIqCgpji1DT85baEkU93WNGTMG9+/fx9GjR2FnZ4ddu3Zh5cqVqFq1KrZt21YQMRIREb1wzJlj6HnGG4WHh8Pf3x+Ojo5wdXVF9+7ds93ENGjQIOPNUllb48aNTcq0bNkyW5k+ffrIiqFFixbP3NSiuGVo//792Lp1K/z9/aHRaODt7Y22bdvCyckJ4eHh6NSpU0HESURERGaIjo7GyJEj4e/vD71ej0mTJqFdu3Y4f/68ydid9u3bmyyTpdVqs9U1bNgwTJ061fiznZ2doljya6hNflGcDD169Mg4n1Dp0qVx584dVKtWDX5+fjh58mS+B0hERPQiKuxusl27dpn8HBERAVdXV8TExKB58+bG/TqdzjjPX27s7e3zLJMTSx1qo7ibrHr16sZmtbp16+Krr77CzZs3sWTJEnh4eOR7gERERC8ig8H8DYDJJMiJiYkm63M+S0JCAgCYTJUDZK5B6urqimrVqmHYsGG4fft2tmPXrl0LFxcX1KpVC+PHj5c9Z5ClDrVR3DI0ZswY3Lp1CwAwefJkBAYGYu3atdBqtVixYkV+x0dERETP8PQanJMnT87zDmwhBEJCQtCsWTPUrl3buL9Dhw54/fXX4e3tjbi4OHz00Ud49dVXERMTA51OBwDo16+fcVLks2fPIjQ0FL/99hv27t2bZ6yWOtRGcTL05BxA9erVw9WrV/HHH3+gQoUKFrHyLBERUVGQX91kN27cMJmfJytpeZZRo0bhzJkzOHTokMn+3r17G/9fu3ZtNGzYEN7e3tixYwd69uwJIHO80JNlqlatioYNG+LkyZOoX7/+M89rqUNtFCdDT7O3t8/zyVsCkS4gJHnvOoNe/rszI9Ugu2zaw7S8Cz0h5f5D2WXLx2ySXdapdktFcWhT5a8qrD1zKO9C/09ja6sojmTfANllDZKV/DiEsj5qm1T5r4vNlbOyy6be/VdRHEJB37ohTf57z0bhHzVWdvInQE0oU0Z2WZ2VstfFYCN/0co0BZPGpmcoWwzTStHgA/l1p6Ypi0PJnUbWVvILCyH/swUAkoLrodfL/z7NyFCWRWhkXj655fJDfiVDStfhHD16NLZt24aDBw+ifPnyzyzr4eEBb29vXLp0Kdcy9evXh42NDS5dupRnPpA11MbHx8c41MbHx0f1oTaykqGQkBDZFc6bN++5gyEiIqKCIYTA6NGjERkZiQMHDshaEuPevXu4cePGMxOVc+fOIT09XVYyY6lDbWQlQ6dOnZJV2ZOzSRIREVHuDDBzbTKF5UeOHIl169Zh69atcHR0RHx8PADA2dkZdnZ2ePjwIcLCwvDaa6/Bw8MDV69exQcffAAXFxf06NEDAHD58mWsXbsWHTt2hIuLC86fP49x48ahXr16aNq0aZ4xWOpQG1nJkKXOGElERFRUCSEgzOgnU3rs4sWLAWROmvikiIgIDBo0CFZWVvj999+xatUqPHjwAB4eHmjVqhU2bNhgXA9Uq9Xip59+wsKFC/Hw4UN4eXmhU6dOmDx5Mqys5HehpqWlIS4uDpUrV7aIoTZmjxkiIiIi5Qp7nqG8kic7Ozvs3r37mWW8vLwQHR2t7MRPSE5OxujRo7Fy5UoAwMWLF1GpUiUEBwfD09MT77///nPXbQ7zl54nIiIikiHrNvwDBw7A9ombaNq0aYMNGzaoFhdbhoiIiFQgnpg48XmPL2q2bNmCDRs2oHHjxibjjH19fXH58mXV4mIyREREpILiuGr9nTt3jPMMPenRo0eq3oTFbjIiIiIqFP7+/tixY4fx56wEaNmyZWjSpIlaYbFliIiISA0GYeat9UWwZSg8PBzt27fH+fPnodfrsXDhQpw7dw6//PKLWQOzzcWWISIiIhVkdZOZsxU1AQEBOHz4MJKTk1G5cmXs2bMHbm5u+OWXX9CgQQPV4mLLEBERERUaPz8/4631loLJEBERkQqEQUCY0ddlzrFkiskQERGRCorTmCGNRpPn3WKSJEGv1xdSRKaYDBEREVGBioyMzPWxI0eOYNGiRWYtTWIuJkNEREQqKE7zDHXr1i3bvj/++AOhoaHYvn07+vXrh2nTpqkQWSbeTUZERKQCg0GYvRVFf//9N4YNG4Y6depAr9fj9OnTWLlyJSpUqKBaTEyGiIiIVFDcbq1PSEjAe++9hypVquDcuXP46aefsH37dtSuXVvt0NhNRkRERAVrzpw5mD17Ntzd3fHtt9/m2G2mJiZDREREKihOY4bef/992NnZoUqVKli5cmWu8wxt3ry5kCPLxGQoByJd/lLAGY/ll01NSlMUx79X7sguq085ILus7vBxRXEYtDayy6Zq5C+0p3UqoSgOOzcv2WX19k6yy2oy0hXFYXX9ouyyj/+Mk102LfGhojiU0OozZJe1clT2umhSHskuK4T894ettbLXJUPI7/U3QH4cBfkLR2cjP44M+S9hZt1a+XWnKvhqstEqG12hZFiLklXY09KUvT8skUEIGMx4g5lzbGEbOHCgqgux5oXJEBERERWoFStWqB3CMzEZIiIiUoEwKGsNy+l4yh9MhoiIiFQgIMyaaFCg6HSTWTreWk9ERETFGluGiIiIVCAMgIHdZBZB1ZahsLAwSJJksrm7uxsff/jwIUaNGoXy5cvDzs4ONWvWxOLFi1WMmIiIKH8IIczeKH+o3jJUq1Yt7Nu3z/izlZWV8f9jx45FVFQU1qxZAx8fH+zZswcjRoyAp6enxU3YREREREWT6mOGrK2t4e7ubtzKli1rfOyXX35BUFAQWrZsCR8fH7z11lt46aWXcOLECRUjJiIiMp9BmL9R/lA9Gbp06RI8PT1RsWJF9OnTB1euXDE+1qxZM2zbtg03b96EEAJRUVG4ePEiAgMDc60vNTUViYmJJhsREZGlEQZh9kb5Q9VkqFGjRli1ahV2796NZcuWIT4+HgEBAbh37x4A4LPPPoOvry/Kly8PrVaL9u3b48svv0SzZs1yrTM8PBzOzs7GzctL/qzFREREhaW4LdRqyVRNhjp06IDXXnsNfn5+aNOmDXbs2AEAxjVLPvvsMxw9ehTbtm1DTEwM5s6dixEjRpiMMXpaaGgoEhISjNuNGzcK5bkQERFR0aT6AOonOTg4wM/PD5cuXcLjx4/xwQcfIDIyEp06dQIA1KlTB6dPn8ann36KNm3a5FiHTqeDTqcrzLCJiIgUMxgEDGZ0dZlzLJlSfczQk1JTUxEbGwsPDw+kp6cjPT0dGo1piFZWVjCYMzEDERGRBeCt9ZZD1Zah8ePHo0uXLqhQoQJu376N6dOnIzExEUFBQXByckKLFi0wYcIE2NnZwdvbG9HR0Vi1ahXmzZunZthERET0AlE1Gfrrr7/Qt29f3L17F2XLlkXjxo1x9OhReHt7AwDWr1+P0NBQ9OvXD//++y+8vb0xY8YMDB8+XM2wiYiIzMaFWi2HqsnQ+vXrn/m4u7s7IiIiCikaIiKiwmMQAgYzurrMOZZMWdSYISIiIqLCZlF3kxERERUX5g6C5gDq/MNkiIiISAW8td5ysJuMiIiIijW2DBUiQ4ayLD41KU122aR4+WuwZaQruwXB0bO07LJapxKyy+rcy+Zd6AlSeqrsslYpj2SX1aSnKIpDpMl/XVIfJMkum/7osaI4rHRa2WU1WvkfdalCJUVxJJetKLusjZQuv6wmQ1EcNlbyyyvpXbCSlP3NqDdIsstK8ovC2kpBYQAajfzyGgVPUaPweiihbK0tG0V1yx1srNHI/1yZy9wlNdhLln+YDBEREalACPMWW+WYofzDZIiIiEgFwsxb65kM5R+OGSIiIqJijS1DREREKhAGM7vJeDdZvmEyREREpAImQ5aD3WRERERUrLFliIiISAUGkbmZczzlDyZDREREKmA3meVgNxkREREVa2wZIiIiUgEXarUcTIaIiIhUYDCYt9iqQdnKSvQMTIaIiIhUwJYhy8ExQ0RERMVAeHg4/P394ejoCFdXV3Tv3h0XLlwwKTNo0CBIkmSyNW7c2KRMamoqRo8eDRcXFzg4OKBr167466+/CvOp5DsmQ0RERCrIupvMnE2J6OhojBw5EkePHsXevXuh1+vRrl07PHr0yKRc+/btcevWLeP2448/mjw+ZswYREZGYv369Th06BAePnyIzp07IyMjw+xrohZ2kxEREamgsG+t37Vrl8nPERERcHV1RUxMDJo3b27cr9Pp4O7unmMdCQkJWL58OVavXo02bdoAANasWQMvLy/s27cPgYGBCp+FZWDLEBERURGWmJhosqWmpso6LiEhAQBQunRpk/0HDhyAq6srqlWrhmHDhuH27dvGx2JiYpCeno527doZ93l6eqJ27do4cuRIPjwbdTAZIiIiUoEBAgZhxobMliEvLy84Ozsbt/Dw8DzPLYRASEgImjVrhtq1axv3d+jQAWvXrsX+/fsxd+5cHD9+HK+++qoxwYqPj4dWq0WpUqVM6nNzc0N8fHw+Xp3CxW4yIiIiFeRXN9mNGzfg5ORk3K/T6fI8dtSoUThz5gwOHTpksr93797G/9euXRsNGzaEt7c3duzYgZ49e+YeixCQJEnpU7AYbBkiIiIqwpycnEy2vJKh0aNHY9u2bYiKikL58uWfWdbDwwPe3t64dOkSAMDd3R1paWm4f/++Sbnbt2/Dzc3NvCeiIiZDREREKsiaZ8icTen5Ro0ahc2bN2P//v2oWLFinsfcu3cPN27cgIeHBwCgQYMGsLGxwd69e41lbt26hbNnzyIgIEDZBbAg7CbLgUEv/w0m0hWUzVD2xs1Ilz+9qJKyQuG0pbqSjvLLlsv5DoScSFqtojjw7+28y/w/jYKm57RbtxSFkXzrruyyKfeTZJc16JXdlippCuZvGWFlo6i8Rp8mu6x9RqLsshnWVoriEFDSRC//vScpvltY/usi2cj/LFprlHZByI/D2kp+3Q52yuJ49Fh++VSd/JjTFXxPA4DcvCElOe8upvwiDMKsGaiVdrGNHDkS69atw9atW+Ho6Ggc4+Ps7Aw7Ozs8fPgQYWFheO211+Dh4YGrV6/igw8+gIuLC3r06GEsO3ToUIwbNw5lypRB6dKlMX78ePj5+RnvLiuKmAwREREVA4sXLwYAtGzZ0mR/REQEBg0aBCsrK/z+++9YtWoVHjx4AA8PD7Rq1QobNmyAo+N/fxTPnz8f1tbW6NWrFx4/fozWrVtjxYoVsLJS9geMJWEyREREpILCnmcor241Ozs77N69O896bG1tsWjRIixatEjR+S0ZkyEiIiIVcG0yy8FkiIiISAXCYFA8hvPp4yl/8G4yIiIiKtbYMkRERKQCg5l3k5lzLJlStWUoLCwMkiSZbE8vDhcbG4uuXbvC2dkZjo6OaNy4Ma5fv65SxERERPmjsOcZotyp3jJUq1Yt7Nu3z/jzk7fmXb58Gc2aNcPQoUMxZcoUODs7IzY2Fra2tmqESkRERC8g1ZMha2vrbK1BWSZNmoSOHTtizpw5xn2VKlUqrNCIiIgKTGHfWk+5U30A9aVLl+Dp6YmKFSuiT58+uHLlCgDAYDBgx44dqFatGgIDA+Hq6opGjRphy5Ytz6wvNTUViYmJJhsREZGlyUqGzNkof6iaDDVq1AirVq3C7t27sWzZMsTHxyMgIAD37t3D7du38fDhQ8yaNQvt27fHnj170KNHD/Ts2RPR0dG51hkeHg5nZ2fj5uXlVYjPiIiIiIoaVbvJOnToYPy/n58fmjRpgsqVK2PlypXo06cPAKBbt24YO3YsAKBu3bo4cuQIlixZghYtWuRYZ2hoKEJCQow/JyYmMiEiIiKLY4ABBvH8cwUZwHmG8ovqY4ae5ODgAD8/P1y6dAkuLi6wtraGr6+vSZmaNWvi0KFDudah0+mg0xXeQntERETPQxjMG/djRh5FT1F9zNCTUlNTERsbCw8PD2i1Wvj7++PChQsmZS5evAhvb2+VIiQiIqIXjaotQ+PHj0eXLl1QoUIF3L59G9OnT0diYiKCgoIAABMmTEDv3r3RvHlztGrVCrt27cL27dtx4MABNcMmIiIyG+8msxyqJkN//fUX+vbti7t376Js2bJo3Lgxjh49amz56dGjB5YsWYLw8HAEBwejevXq2LRpE5o1a6Zm2ERERGbjQq2WQ9VkaP369XmWGTJkCIYMGVII0RARERUeg8EAgxmLrZpzLJmyqDFDRERERIXNou4mIyIiKi44ZshyMBnKgUiX/wbLeJwhu2x6kqQoDslKfvkMW6u8C/2/1KRURXEkxP0tu6z27gPZZfWPlcWhsZb/HCEpuHapaYriMOgLpmnaSqvs42jjIH+NPhvXsrLLSgb572kAsMqQf/1s05JklxVaZZ8XJd9mGsledtlHUDZVhxAKAjEoaJxX8PYHAFsbJe9T+XHoM5S9Lg528svb6uSXVdpDZCXz+j1+pPBCm0EIA4QZ98ebcyyZYjcZERERFWtsGSIiIlIBu8ksB5MhIiIiNZi72CqToXzDbjIiIiIq1tgyREREpAKDMHOhVg6gzjdMhoiIiFTAMUOWg91kREREVKyxZYiIiEgFQhggzFhSg/MM5R8mQ0RERCpgN5nlYDJERESkAs5AbTk4ZoiIiIiKNbYMERERqcBgAAxmdHWZMdyInsJkiIiISAXCYOYAamZD+YbdZERERFSssWWIiIhIBbybzHIwGSIiIlIB7yazHOwmIyIiomKNLUNEREQqYDeZ5WAyREREpALeTWY5XvhkSIjMzDm5gPpWNUJ+Zm5tkBTVnZ4hv3yGXi+7rD5dflkAQFq67KLaVPll9QrqBQCNkg++pODaKYzDoC+g95JBWa91emqa7LLicYrsstKjZEVx6CVb2WXT9Vayyz7WKrsejzTy635kkP8ZSE7XKYojVS//azVDwWueIRR+f+jll0/RK4hDwfdSZhzyy2Yo+GgpzQOsZL49HicnAvjvd0dBytA/UvV4+s8LnwwlJSUBAAYZ4grmBA8LqCwA3FJYnoiI8kVSUhKcnZ0LpG6tVgt3d3ec+KmX2XW5u7tDq9XmQ1TFmyQKI/1VkcFgwN9//w1HR0dIT7QWJCYmwsvLCzdu3ICTk5OKEcpXFGMGimbcjLnwFMW4GXPhKey4hRBISkqCp6cnNJqCu8coJSUFaWnyW3dzo9VqYWsrv3WWcvbCtwxpNBqUL18+18ednJyK1BcDUDRjBopm3Iy58BTFuBlz4SnMuAuqRehJtra2TGIsCG+tJyIiomKNyRAREREVa8U2GdLpdJg8eTJ0OmV3iqipKMYMFM24GXPhKYpxM+bCU1TjpqLlhR9ATURERPQsxbZliIiIiAhgMkRERETFHJMhIiIiKtaYDBEREVGxViyToS+//BIVK1aEra0tGjRogJ9//lntkJ4pLCwMkiSZbO7u7mqHZeLgwYPo0qULPD09IUkStmzZYvK4EAJhYWHw9PSEnZ0dWrZsiXPnzqkT7BPyinvQoEHZrn3jxo3VCRZAeHg4/P394ejoCFdXV3Tv3h0XLlwwKWOJ11pO3JZ2rRcvXow6deoYJ/tr0qQJdu7caXzcEq9zXjFb2jXOSXh4OCRJwpgxY4z7LPFa04ul2CVDGzZswJgxYzBp0iScOnUKr7zyCjp06IDr16+rHdoz1apVC7du3TJuv//+u9ohmXj06BFeeuklfP755zk+PmfOHMybNw+ff/45jh8/Dnd3d7Rt29a4dpxa8oobANq3b29y7X/88cdCjNBUdHQ0Ro4ciaNHj2Lv3r3Q6/Vo164dHj36b8FGS7zWcuIGLOtaly9fHrNmzcKJEydw4sQJvPrqq+jWrZvxl7AlXue8YgYs6xo/7fjx41i6dCnq1Kljst8SrzW9YEQx8/LLL4vhw4eb7KtRo4Z4//33VYoob5MnTxYvvfSS2mHIBkBERkYafzYYDMLd3V3MmjXLuC8lJUU4OzuLJUuWqBBhzp6OWwghgoKCRLdu3VSJR47bt28LACI6OloIUXSu9dNxC2H511oIIUqVKiW+/vrrInOdhfgvZiEs+xonJSWJqlWrir1794oWLVqId999VwhRdN7TVLQVq5ahtLQ0xMTEoF27dib727VrhyNHjqgUlTyXLl2Cp6cnKlasiD59+uDKlStqhyRbXFwc4uPjTa67TqdDixYtLP66A8CBAwfg6uqKatWqYdiwYbh9+7baIRklJCQAAEqXLg2g6Fzrp+POYqnXOiMjA+vXr8ejR4/QpEmTInGdn445i6Ve45EjR6JTp05o06aNyf6icK2p6HvhF2p90t27d5GRkQE3NzeT/W5uboiPj1cpqrw1atQIq1atQrVq1fDPP/9g+vTpCAgIwLlz51CmTBm1w8tT1rXN6bpfu3ZNjZBk69ChA15//XV4e3sjLi4OH330EV599VXExMSoPiOuEAIhISFo1qwZateuDaBoXOuc4gYs81r//vvvaNKkCVJSUlCiRAlERkbC19fX+EvYEq9zbjEDlnmNAWD9+vU4efIkjh8/nu2xovCepqKvWCVDWSRJMvlZCJFtnyXp0KGD8f9+fn5o0qQJKleujJUrVyIkJETFyJQpatcdAHr37m38f+3atdGwYUN4e3tjx44d6Nmzp4qRAaNGjcKZM2dw6NChbI9Z8rXOLW5LvNbVq1fH6dOn8eDBA2zatAlBQUGIjo42Pm6J1zm3mH19fS3yGt+4cQPvvvsu9uzZ88xV3C3xWtOLo1h1k7m4uMDKyipbK9Dt27ez/dVhyRwcHODn54dLly6pHYosWXe+FfXrDgAeHh7w9vZW/dqPHj0a27ZtQ1RUFMqXL2/cb+nXOre4c2IJ11qr1aJKlSpo2LAhwsPD8dJLL2HhwoUWfZ1zizknlnCNY2JicPv2bTRo0ADW1tawtrZGdHQ0PvvsM1hbWxuvpyVea3pxFKtkSKvVokGDBti7d6/J/r179yIgIEClqJRLTU1FbGwsPDw81A5FlooVK8Ld3d3kuqelpSE6OrpIXXcAuHfvHm7cuKHatRdCYNSoUdi8eTP279+PihUrmjxuqdc6r7hzova1zokQAqmpqRZ7nXOSFXNOLOEat27dGr///jtOnz5t3Bo2bIh+/frh9OnTqFSpUpG51lSEqTRwWzXr168XNjY2Yvny5eL8+fNizJgxwsHBQVy9elXt0HI1btw4ceDAAXHlyhVx9OhR0blzZ+Ho6GhRMSclJYlTp06JU6dOCQBi3rx54tSpU+LatWtCCCFmzZolnJ2dxebNm8Xvv/8u+vbtKzw8PERiYqLFxp2UlCTGjRsnjhw5IuLi4kRUVJRo0qSJKFeunGpxv/POO8LZ2VkcOHBA3Lp1y7glJycby1jitc4rbku81qGhoeLgwYMiLi5OnDlzRnzwwQdCo9GIPXv2CCEs8zo/K2ZLvMa5efJuMiEs81rTi6XYJUNCCPHFF18Ib29vodVqRf369U1u77VEvXv3Fh4eHsLGxkZ4enqKnj17inPnzqkdlomoqCgBINsWFBQkhMi8PXby5MnC3d1d6HQ60bx5c/H777+rG7R4dtzJycmiXbt2omzZssLGxkZUqFBBBAUFievXr6sWb06xAhARERHGMpZ4rfOK2xKv9ZAhQ4zfE2XLlhWtW7c2JkJCWOZ1flbMlniNc/N0MmSJ15peLJIQQhReOxQRERGRZSlWY4aIiIiInsZkiIiIiIo1JkNERERUrDEZIiIiomKNyRAREREVa0yGiIiIqFhjMkRERETFGpMhKhJatmyJMWPGvFDnHTRoELp3725WHT4+PpAkCZIk4cGDB7mWW7FiBUqWLGnWuSh3gwYNMr4OW7ZsUTscIlKIyRDRM2zevBnTpk0z/uzj44MFCxaoF1AOpk6dilu3bsHZ2VntUF54Bw4cyDHxXLhwIW7duqVOUERkNmu1AyCyZKVLl1Y7hDw5OjoaV1FXW3p6OmxsbNQOo9A5OzszGSUqwtgyREXS/fv3MXDgQJQqVQr29vbo0KEDLl26ZHw8q1to9+7dqFmzJkqUKIH27dub/PWu1+sRHByMkiVLokyZMnjvvfcQFBRk0nX1ZDdZy5Ytce3aNYwdO9bYJQIAYWFhqFu3rkl8CxYsgI+Pj/HnjIwMhISEGM81ceJEPL0SjhACc+bMQaVKlWBnZ4eXXnoJ33///XNdnxUrVqBChQqwt7dHjx49cO/evWxltm/fjgYNGsDW1haVKlXClClToNfrjY//8ccfaNasGWxtbeHr64t9+/aZdANdvXoVkiRh48aNaNmyJWxtbbFmzRoAQEREBGrWrAlbW1vUqFEDX375pcm5b968id69e6NUqVIoU6YMunXrhqtXrxofP3DgAF5++WU4ODigZMmSaNq0Ka5duybruef1vObNmwc/Pz84ODjAy8sLI0aMwMOHD42PX7t2DV26dEGpUqXg4OCAWrVq4ccff8TVq1fRqlUrAECpUqUgSRIGDRokKyYismxMhqhIGjRoEE6cOIFt27bhl19+gRACHTt2RHp6urFMcnIyPv30U6xevRoHDx7E9evXMX78eOPjs2fPxtq1axEREYHDhw8jMTHxmeM9Nm/ejPLlyxu7pZR0i8ydOxfffPMNli9fjkOHDuHff/9FZGSkSZkPP/wQERERWLx4Mc6dO4exY8eif//+iI6Oln9hAPz6668YMmQIRowYgdOnT6NVq1aYPn26SZndu3ejf//+CA4Oxvnz5/HVV19hxYoVmDFjBgDAYDCge/fusLe3x6+//oqlS5di0qRJOZ7vvffeQ3BwMGJjYxEYGIhly5Zh0qRJmDFjBmJjYzFz5kx89NFHWLlyJYDM16VVq1YoUaIEDh48iEOHDhmT1bS0NOj1enTv3h0tWrTAmTNn8Msvv+Ctt94yJp/PktfzAgCNRoPPPvsMZ8+excqVK7F//35MnDjR+PjIkSORmpqKgwcP4vfff8fs2bNRokQJeHl5YdOmTQCACxcu4NatW1i4cKGi14aILJSqy8QSyfTkKtYXL14UAMThw4eNj9+9e1fY2dmJjRs3CiGEiIiIEADEn3/+aSzzxRdfCDc3N+PPbm5u4pNPPjH+rNfrRYUKFUS3bt1yPK8QQnh7e4v58+ebxDZ58mTx0ksvmeybP3++8Pb2Nv7s4eEhZs2aZfw5PT1dlC9f3niuhw8fCltbW3HkyBGTeoYOHSr69u2b63XJKZ6+ffuK9u3bm+zr3bu3cHZ2Nv78yiuviJkzZ5qUWb16tfDw8BBCCLFz505hbW0tbt26ZXx87969AoCIjIwUQggRFxcnAIgFCxaY1OPl5SXWrVtnsm/atGmiSZMmQgghli9fLqpXry4MBoPx8dTUVGFnZyd2794t7t27JwCIAwcO5Pq8c5PX88rJxo0bRZkyZYw/+/n5ibCwsBzLRkVFCQDi/v37OT7+5PUhoqKDY4aoyImNjYW1tTUaNWpk3FemTBlUr14dsbGxxn329vaoXLmy8WcPDw/cvn0bAJCQkIB//vkHL7/8svFxKysrNGjQAAaDIV/jTUhIwK1bt9CkSRPjPmtrazRs2NDYVXb+/HmkpKSgbdu2JsempaWhXr16is4XGxuLHj16mOxr0qQJdu3aZfw5JiYGx48fN2kxycjIQEpKCpKTk3HhwgV4eXmZjEV68lo9qWHDhsb/37lzBzdu3MDQoUMxbNgw4369Xm8cUxMTE4M///wTjo6OJvWkpKTg8uXLaNeuHQYNGoTAwEC0bdsWbdq0Qa9eveDh4ZHnc8/rednb2yMqKgozZ87E+fPnkZiYCL1ej5SUFDx69AgODg4IDg7GO++8gz179qBNmzZ47bXXUKdOnTzPTURFF5MhKnLEU2Ntntz/ZFfK0wN5JUnKduzTXS+51f0sGo0m23FPdtfJkZWA7dixA+XKlTN5TKfTKapLznMwGAyYMmUKevbsme0xW1vbbNfyWRwcHEzqBYBly5aZJKtAZrKZVaZBgwZYu3ZttrrKli0LIHPMUXBwMHbt2oUNGzbgww8/xN69e9G4cWOznte1a9fQsWNHDB8+HNOmTUPp0qVx6NAhDB061PiavfnmmwgMDMSOHTuwZ88ehIeHY+7cuRg9erSs60FERQ+TISpyfH19odfr8euvvyIgIAAAcO/ePVy8eBE1a9aUVYezszPc3Nxw7NgxvPLKKwAyWxBOnTqVbTD0k7RaLTIyMkz2lS1bFvHx8SYJxOnTp03O5eHhgaNHj6J58+YAMltKYmJiUL9+feNz0ul0uH79Olq0aCHrOeTG19cXR48eNdn39M/169fHhQsXUKVKlRzrqFGjBq5fv45//vkHbm5uAIDjx4/neW43NzeUK1cOV65cQb9+/XIsU79+fWzYsAGurq5wcnLKta569eqhXr16CA0NRZMmTbBu3bo8k6G8nteJEyeg1+sxd+5caDSZQyY3btyYrZyXlxeGDx+O4cOHIzQ0FMuWLcPo0aOh1WoBINt7gIiKNiZDVORUrVoV3bp1w7Bhw/DVV1/B0dER77//PsqVK4du3brJrmf06NEIDw9HlSpVUKNGDSxatAj3799/ZouIj48PDh48iD59+kCn08HFxQUtW7bEnTt3MGfOHPzvf//Drl27sHPnTpNf9O+++y5mzZqFqlWrombNmpg3b57JXDWOjo4YP348xo4dC4PBgGbNmiExMRFHjhxBiRIlEBQUJPt5BQcHIyAgAHPmzEH37t2xZ88eky4yAPj444/RuXNneHl54fXXX4dGo8GZM2fw+++/Y/r06Wjbti0qV66MoKAgzJkzB0lJScYB1Hm1GIWFhSE4OBhOTk7o0KEDUlNTceLECdy/fx8hISHo168fPvnkE3Tr1g1Tp05F+fLlcf36dWzevBkTJkxAeno6li5diq5du8LT0xMXLlzAxYsXMXDgwDyfe17Pq3LlytDr9Vi0aBG6dOmCw4cPY8mSJSZ1jBkzBh06dEC1atVw//597N+/35hke3t7Q5Ik/PDDD+jYsSPs7OxQokQJ2a8NEVko1UYrESnw9EDmf//9VwwYMEA4OzsLOzs7ERgYKC5evGh8PCIiwmTAsBBCREZGiiff8unp6WLUqFHCyclJlCpVSrz33nvi9ddfF3369Mn1vL/88ouoU6eO0Ol0JnUtXrxYeHl5CQcHBzFw4EAxY8YMkwHU6enp4t133xVOTk6iZMmSIiQkRAwcONBksLbBYBALFy4U1atXFzY2NqJs2bIiMDBQREdH53pdchpALUTmIOXy5csLOzs70aVLF/Hpp59mux67du0SAQEBws7OTjg5OYmXX35ZLF261Ph4bGysaNq0qdBqtaJGjRpi+/btAoDYtWuXEOK/AdSnTp3Kdv61a9eKunXrCq1WK0qVKiWaN28uNm/ebHz81q1bYuDAgcLFxUXodDpRqVIlMWzYMJGQkCDi4+NF9+7dhYeHh9BqtcLb21t8/PHHIiMjI9froOR5zZs3T3h4eBjfN6tWrTIZFD1q1ChRuXJlodPpRNmyZcWAAQPE3bt3jcdPnTpVuLu7C0mSRFBQkMm5wQHUREWSJMRzDJIgegEZDAbUrFkTvXr1Mpl12pL5+PhgzJgxhbJUyeHDh9GsWTP8+eefJgPT6T+SJCEyMtLsZVaIqHBxniEqtq5du4Zly5bh4sWL+P333/HOO+8gLi4Ob7zxhtqhKfLee++hRIkSSEhIyNd6IyMjsXfvXly9ehX79u3DW2+9haZNmzIRysHw4cPZXUZUhLFliIqtGzduoE+fPjh79iyEEKhduzZmzZplHORcFFy7ds14F1SlSpWMg4Lzw6pVqzBt2jTcuHEDLi4uaNOmDebOnYsyZcrk2zmUqlWrVq4zUX/11Ve5DtouaLdv30ZiYiKAzCkcnrzDjogsH5MhIioynkz+nubm5pZt7iIiIjmYDBEREVGxxjFDREREVKwxGSIiIqJijckQERERFWtMhoiIiKhYYzJERERExRqTISIiIirWmAwRERFRscZkiIiIiIq1/wN3e+qLwERx+wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tas_AOI.isel(time=0).plot(cmap=\"coolwarm\")" + ] + }, + { + "cell_type": "markdown", + "id": "a1d63f43", + "metadata": {}, + "source": [ + "In the next episode, we will learn more about advanced visualization tools and how to make interactive plots using [holoviews](https://holoviews.org/), a tool part of the [HoloViz](https://holoviz.org/) ecosystem." + ] + }, + { + "cell_type": "markdown", + "id": "144e3997", + "metadata": {}, + "source": [ + "## Basic maths\n", + "\n", + "Near-surface temperature values are in Kelvin and we can easily convert them in degrees celcius." + ] + }, + { + "cell_type": "markdown", + "id": "6abf28d0", + "metadata": {}, + "source": [ + "Simple arithmetic operations can be performed without worrying about dimensions and coordinates, using the same notation we use with `numpy`. Underneath xarray will automatically vectorize the operations over all the data dimensions." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "d1d77fd5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 18, lon: 35)>\n",
+       "array([[[[  3.9915466 ,   3.9372864 ,   3.63208   , ..., -17.947784  ,\n",
+       "          -18.09903   , -17.901337  ],\n",
+       "         [  3.9906616 ,   3.8585205 ,   3.4658813 , ..., -19.287094  ,\n",
+       "          -19.638443  , -19.815659  ],\n",
+       "         [  3.8772888 ,   3.693756  ,   3.3085938 , ..., -20.736603  ,\n",
+       "          -21.195053  , -21.357864  ],\n",
+       "         ...,\n",
+       "         [ -0.11868286,   0.1071167 ,   0.3340149 , ..., -11.844849  ,\n",
+       "          -12.702545  , -14.013733  ],\n",
+       "         [ -0.9946594 ,  -0.6482544 ,  -0.4326172 , ..., -10.813141  ,\n",
+       "          -12.086548  , -13.261871  ],\n",
+       "         [ -1.9762573 ,  -1.6532898 ,  -1.2767944 , ..., -10.560425  ,\n",
+       "          -11.828857  , -13.411926  ]],\n",
+       "\n",
+       "        [[  6.5706787 ,   6.261444  ,   5.76593   , ..., -10.512054  ,\n",
+       "          -10.819702  , -11.010132  ],\n",
+       "         [  6.6134033 ,   6.326996  ,   5.8705444 , ..., -10.703583  ,\n",
+       "          -10.812073  , -11.228058  ],\n",
+       "         [  6.63974   ,   6.3713074 ,   5.99823   , ..., -10.811035  ,\n",
+       "          -11.002502  , -11.324585  ],\n",
+       "...\n",
+       "         [  4.5212708 ,   4.881195  ,   5.349457  , ...,  -0.38009644,\n",
+       "           -0.14691162,  -0.15356445],\n",
+       "         [  3.3636475 ,   3.8493652 ,   4.25      , ...,   0.430542  ,\n",
+       "            0.32699585,   0.23458862],\n",
+       "         [  2.291626  ,   2.7035522 ,   3.230133  , ...,   0.6605835 ,\n",
+       "            0.5307617 ,   0.37503052]],\n",
+       "\n",
+       "        [[  9.923706  ,  10.213959  ,  10.246948  , ...,  -2.7084656 ,\n",
+       "           -3.117157  ,  -3.460785  ],\n",
+       "         [ 10.048218  ,  10.249817  ,  10.259094  , ...,  -2.855835  ,\n",
+       "           -3.1342468 ,  -3.5550232 ],\n",
+       "         [  9.972595  ,  10.138733  ,  10.1493225 , ...,  -3.176941  ,\n",
+       "           -3.5891113 ,  -3.8943787 ],\n",
+       "         ...,\n",
+       "         [  2.2316895 ,   2.5167236 ,   2.8789368 , ...,  -1.0142822 ,\n",
+       "           -1.0447388 ,  -1.3068542 ],\n",
+       "         [  0.93966675,   1.3753662 ,   1.7021484 , ...,  -0.4562683 ,\n",
+       "           -0.82281494,  -1.1673279 ],\n",
+       "         [ -0.25891113,   0.1281128 ,   0.6257019 , ...,  -0.47140503,\n",
+       "           -0.86395264,  -1.2958069 ]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'
" + ], + "text/plain": [ + "\n", + "array([[[[ 3.9915466 , 3.9372864 , 3.63208 , ..., -17.947784 ,\n", + " -18.09903 , -17.901337 ],\n", + " [ 3.9906616 , 3.8585205 , 3.4658813 , ..., -19.287094 ,\n", + " -19.638443 , -19.815659 ],\n", + " [ 3.8772888 , 3.693756 , 3.3085938 , ..., -20.736603 ,\n", + " -21.195053 , -21.357864 ],\n", + " ...,\n", + " [ -0.11868286, 0.1071167 , 0.3340149 , ..., -11.844849 ,\n", + " -12.702545 , -14.013733 ],\n", + " [ -0.9946594 , -0.6482544 , -0.4326172 , ..., -10.813141 ,\n", + " -12.086548 , -13.261871 ],\n", + " [ -1.9762573 , -1.6532898 , -1.2767944 , ..., -10.560425 ,\n", + " -11.828857 , -13.411926 ]],\n", + "\n", + " [[ 6.5706787 , 6.261444 , 5.76593 , ..., -10.512054 ,\n", + " -10.819702 , -11.010132 ],\n", + " [ 6.6134033 , 6.326996 , 5.8705444 , ..., -10.703583 ,\n", + " -10.812073 , -11.228058 ],\n", + " [ 6.63974 , 6.3713074 , 5.99823 , ..., -10.811035 ,\n", + " -11.002502 , -11.324585 ],\n", + "...\n", + " [ 4.5212708 , 4.881195 , 5.349457 , ..., -0.38009644,\n", + " -0.14691162, -0.15356445],\n", + " [ 3.3636475 , 3.8493652 , 4.25 , ..., 0.430542 ,\n", + " 0.32699585, 0.23458862],\n", + " [ 2.291626 , 2.7035522 , 3.230133 , ..., 0.6605835 ,\n", + " 0.5307617 , 0.37503052]],\n", + "\n", + " [[ 9.923706 , 10.213959 , 10.246948 , ..., -2.7084656 ,\n", + " -3.117157 , -3.460785 ],\n", + " [ 10.048218 , 10.249817 , 10.259094 , ..., -2.855835 ,\n", + " -3.1342468 , -3.5550232 ],\n", + " [ 9.972595 , 10.138733 , 10.1493225 , ..., -3.176941 ,\n", + " -3.5891113 , -3.8943787 ],\n", + " ...,\n", + " [ 2.2316895 , 2.5167236 , 2.8789368 , ..., -1.0142822 ,\n", + " -1.0447388 , -1.3068542 ],\n", + " [ 0.93966675, 1.3753662 , 1.7021484 , ..., -0.4562683 ,\n", + " -0.82281494, -1.1673279 ],\n", + " [ -0.25891113, 0.1281128 , 0.6257019 , ..., -0.47140503,\n", + " -0.86395264, -1.2958069 ]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI - 273.15" + ] + }, + { + "cell_type": "markdown", + "id": "54f692ca", + "metadata": {}, + "source": [ + "The universal function ([ufunc](https://numpy.org/doc/stable/reference/ufuncs.html)) from numpy and scipy can be applied too directly to the data. There are currently more than 60 universal functions defined in numpy on one or more types, covering a wide variety of operations including math operations, trigonometric functions, etc." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "dffbbf28", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 18, lon: 35)>\n",
+       "array([[[[  3.9915466 ,   3.9372864 ,   3.63208   , ..., -17.947784  ,\n",
+       "          -18.09903   , -17.901337  ],\n",
+       "         [  3.9906616 ,   3.8585205 ,   3.4658813 , ..., -19.287094  ,\n",
+       "          -19.638443  , -19.815659  ],\n",
+       "         [  3.8772888 ,   3.693756  ,   3.3085938 , ..., -20.736603  ,\n",
+       "          -21.195053  , -21.357864  ],\n",
+       "         ...,\n",
+       "         [ -0.11868286,   0.1071167 ,   0.3340149 , ..., -11.844849  ,\n",
+       "          -12.702545  , -14.013733  ],\n",
+       "         [ -0.9946594 ,  -0.6482544 ,  -0.4326172 , ..., -10.813141  ,\n",
+       "          -12.086548  , -13.261871  ],\n",
+       "         [ -1.9762573 ,  -1.6532898 ,  -1.2767944 , ..., -10.560425  ,\n",
+       "          -11.828857  , -13.411926  ]],\n",
+       "\n",
+       "        [[  6.5706787 ,   6.261444  ,   5.76593   , ..., -10.512054  ,\n",
+       "          -10.819702  , -11.010132  ],\n",
+       "         [  6.6134033 ,   6.326996  ,   5.8705444 , ..., -10.703583  ,\n",
+       "          -10.812073  , -11.228058  ],\n",
+       "         [  6.63974   ,   6.3713074 ,   5.99823   , ..., -10.811035  ,\n",
+       "          -11.002502  , -11.324585  ],\n",
+       "...\n",
+       "         [  4.5212708 ,   4.881195  ,   5.349457  , ...,  -0.38009644,\n",
+       "           -0.14691162,  -0.15356445],\n",
+       "         [  3.3636475 ,   3.8493652 ,   4.25      , ...,   0.430542  ,\n",
+       "            0.32699585,   0.23458862],\n",
+       "         [  2.291626  ,   2.7035522 ,   3.230133  , ...,   0.6605835 ,\n",
+       "            0.5307617 ,   0.37503052]],\n",
+       "\n",
+       "        [[  9.923706  ,  10.213959  ,  10.246948  , ...,  -2.7084656 ,\n",
+       "           -3.117157  ,  -3.460785  ],\n",
+       "         [ 10.048218  ,  10.249817  ,  10.259094  , ...,  -2.855835  ,\n",
+       "           -3.1342468 ,  -3.5550232 ],\n",
+       "         [  9.972595  ,  10.138733  ,  10.1493225 , ...,  -3.176941  ,\n",
+       "           -3.5891113 ,  -3.8943787 ],\n",
+       "         ...,\n",
+       "         [  2.2316895 ,   2.5167236 ,   2.8789368 , ...,  -1.0142822 ,\n",
+       "           -1.0447388 ,  -1.3068542 ],\n",
+       "         [  0.93966675,   1.3753662 ,   1.7021484 , ...,  -0.4562683 ,\n",
+       "           -0.82281494,  -1.1673279 ],\n",
+       "         [ -0.25891113,   0.1281128 ,   0.6257019 , ...,  -0.47140503,\n",
+       "           -0.86395264,  -1.2958069 ]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "Attributes:\n",
+       "    cell_measures:  area: areacella\n",
+       "    cell_methods:   area: time: mean\n",
+       "    comment:        near-surface (usually, 2 meter) air temperature\n",
+       "    description:    near-surface (usually, 2 meter) air temperature\n",
+       "    frequency:      mon\n",
+       "    id:             tas\n",
+       "    long_name:      Near-Surface Air Temperature\n",
+       "    mipTable:       Amon\n",
+       "    out_name:       tas\n",
+       "    prov:           Amon ((isd.003))\n",
+       "    realm:          atmos\n",
+       "    standard_name:  air_temperature\n",
+       "    time:           time\n",
+       "    time_label:     time-mean\n",
+       "    time_title:     Temporal mean\n",
+       "    title:          Near-Surface Air Temperature\n",
+       "    type:           real\n",
+       "    units:          K\n",
+       "    variable_id:    tas
" + ], + "text/plain": [ + "\n", + "array([[[[ 3.9915466 , 3.9372864 , 3.63208 , ..., -17.947784 ,\n", + " -18.09903 , -17.901337 ],\n", + " [ 3.9906616 , 3.8585205 , 3.4658813 , ..., -19.287094 ,\n", + " -19.638443 , -19.815659 ],\n", + " [ 3.8772888 , 3.693756 , 3.3085938 , ..., -20.736603 ,\n", + " -21.195053 , -21.357864 ],\n", + " ...,\n", + " [ -0.11868286, 0.1071167 , 0.3340149 , ..., -11.844849 ,\n", + " -12.702545 , -14.013733 ],\n", + " [ -0.9946594 , -0.6482544 , -0.4326172 , ..., -10.813141 ,\n", + " -12.086548 , -13.261871 ],\n", + " [ -1.9762573 , -1.6532898 , -1.2767944 , ..., -10.560425 ,\n", + " -11.828857 , -13.411926 ]],\n", + "\n", + " [[ 6.5706787 , 6.261444 , 5.76593 , ..., -10.512054 ,\n", + " -10.819702 , -11.010132 ],\n", + " [ 6.6134033 , 6.326996 , 5.8705444 , ..., -10.703583 ,\n", + " -10.812073 , -11.228058 ],\n", + " [ 6.63974 , 6.3713074 , 5.99823 , ..., -10.811035 ,\n", + " -11.002502 , -11.324585 ],\n", + "...\n", + " [ 4.5212708 , 4.881195 , 5.349457 , ..., -0.38009644,\n", + " -0.14691162, -0.15356445],\n", + " [ 3.3636475 , 3.8493652 , 4.25 , ..., 0.430542 ,\n", + " 0.32699585, 0.23458862],\n", + " [ 2.291626 , 2.7035522 , 3.230133 , ..., 0.6605835 ,\n", + " 0.5307617 , 0.37503052]],\n", + "\n", + " [[ 9.923706 , 10.213959 , 10.246948 , ..., -2.7084656 ,\n", + " -3.117157 , -3.460785 ],\n", + " [ 10.048218 , 10.249817 , 10.259094 , ..., -2.855835 ,\n", + " -3.1342468 , -3.5550232 ],\n", + " [ 9.972595 , 10.138733 , 10.1493225 , ..., -3.176941 ,\n", + " -3.5891113 , -3.8943787 ],\n", + " ...,\n", + " [ 2.2316895 , 2.5167236 , 2.8789368 , ..., -1.0142822 ,\n", + " -1.0447388 , -1.3068542 ],\n", + " [ 0.93966675, 1.3753662 , 1.7021484 , ..., -0.4562683 ,\n", + " -0.82281494, -1.1673279 ],\n", + " [ -0.25891113, 0.1281128 , 0.6257019 , ..., -0.47140503,\n", + " -0.86395264, -1.2958069 ]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + "Attributes:\n", + " cell_measures: area: areacella\n", + " cell_methods: area: time: mean\n", + " comment: near-surface (usually, 2 meter) air temperature\n", + " description: near-surface (usually, 2 meter) air temperature\n", + " frequency: mon\n", + " id: tas\n", + " long_name: Near-Surface Air Temperature\n", + " mipTable: Amon\n", + " out_name: tas\n", + " prov: Amon ((isd.003))\n", + " realm: atmos\n", + " standard_name: air_temperature\n", + " time: time\n", + " time_label: time-mean\n", + " time_title: Temporal mean\n", + " title: Near-Surface Air Temperature\n", + " type: real\n", + " units: K\n", + " variable_id: tas" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.subtract(tas_AOI, 273.15)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "e9604673", + "metadata": {}, + "outputs": [], + "source": [ + "tas_AOI = tas_AOI - 273.15" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "8e1f844c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, time: 1980, lat: 18, lon: 35)>\n",
+       "array([[[[  3.9915466 ,   3.9372864 ,   3.63208   , ..., -17.947784  ,\n",
+       "          -18.09903   , -17.901337  ],\n",
+       "         [  3.9906616 ,   3.8585205 ,   3.4658813 , ..., -19.287094  ,\n",
+       "          -19.638443  , -19.815659  ],\n",
+       "         [  3.8772888 ,   3.693756  ,   3.3085938 , ..., -20.736603  ,\n",
+       "          -21.195053  , -21.357864  ],\n",
+       "         ...,\n",
+       "         [ -0.11868286,   0.1071167 ,   0.3340149 , ..., -11.844849  ,\n",
+       "          -12.702545  , -14.013733  ],\n",
+       "         [ -0.9946594 ,  -0.6482544 ,  -0.4326172 , ..., -10.813141  ,\n",
+       "          -12.086548  , -13.261871  ],\n",
+       "         [ -1.9762573 ,  -1.6532898 ,  -1.2767944 , ..., -10.560425  ,\n",
+       "          -11.828857  , -13.411926  ]],\n",
+       "\n",
+       "        [[  6.5706787 ,   6.261444  ,   5.76593   , ..., -10.512054  ,\n",
+       "          -10.819702  , -11.010132  ],\n",
+       "         [  6.6134033 ,   6.326996  ,   5.8705444 , ..., -10.703583  ,\n",
+       "          -10.812073  , -11.228058  ],\n",
+       "         [  6.63974   ,   6.3713074 ,   5.99823   , ..., -10.811035  ,\n",
+       "          -11.002502  , -11.324585  ],\n",
+       "...\n",
+       "         [  4.5212708 ,   4.881195  ,   5.349457  , ...,  -0.38009644,\n",
+       "           -0.14691162,  -0.15356445],\n",
+       "         [  3.3636475 ,   3.8493652 ,   4.25      , ...,   0.430542  ,\n",
+       "            0.32699585,   0.23458862],\n",
+       "         [  2.291626  ,   2.7035522 ,   3.230133  , ...,   0.6605835 ,\n",
+       "            0.5307617 ,   0.37503052]],\n",
+       "\n",
+       "        [[  9.923706  ,  10.213959  ,  10.246948  , ...,  -2.7084656 ,\n",
+       "           -3.117157  ,  -3.460785  ],\n",
+       "         [ 10.048218  ,  10.249817  ,  10.259094  , ...,  -2.855835  ,\n",
+       "           -3.1342468 ,  -3.5550232 ],\n",
+       "         [  9.972595  ,  10.138733  ,  10.1493225 , ...,  -3.176941  ,\n",
+       "           -3.5891113 ,  -3.8943787 ],\n",
+       "         ...,\n",
+       "         [  2.2316895 ,   2.5167236 ,   2.8789368 , ...,  -1.0142822 ,\n",
+       "           -1.0447388 ,  -1.3068542 ],\n",
+       "         [  0.93966675,   1.3753662 ,   1.7021484 , ...,  -0.4562683 ,\n",
+       "           -0.82281494,  -1.1673279 ],\n",
+       "         [ -0.25891113,   0.1281128 ,   0.6257019 , ...,  -0.47140503,\n",
+       "           -0.86395264,  -1.2958069 ]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * time       (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'
" + ], + "text/plain": [ + "\n", + "array([[[[ 3.9915466 , 3.9372864 , 3.63208 , ..., -17.947784 ,\n", + " -18.09903 , -17.901337 ],\n", + " [ 3.9906616 , 3.8585205 , 3.4658813 , ..., -19.287094 ,\n", + " -19.638443 , -19.815659 ],\n", + " [ 3.8772888 , 3.693756 , 3.3085938 , ..., -20.736603 ,\n", + " -21.195053 , -21.357864 ],\n", + " ...,\n", + " [ -0.11868286, 0.1071167 , 0.3340149 , ..., -11.844849 ,\n", + " -12.702545 , -14.013733 ],\n", + " [ -0.9946594 , -0.6482544 , -0.4326172 , ..., -10.813141 ,\n", + " -12.086548 , -13.261871 ],\n", + " [ -1.9762573 , -1.6532898 , -1.2767944 , ..., -10.560425 ,\n", + " -11.828857 , -13.411926 ]],\n", + "\n", + " [[ 6.5706787 , 6.261444 , 5.76593 , ..., -10.512054 ,\n", + " -10.819702 , -11.010132 ],\n", + " [ 6.6134033 , 6.326996 , 5.8705444 , ..., -10.703583 ,\n", + " -10.812073 , -11.228058 ],\n", + " [ 6.63974 , 6.3713074 , 5.99823 , ..., -10.811035 ,\n", + " -11.002502 , -11.324585 ],\n", + "...\n", + " [ 4.5212708 , 4.881195 , 5.349457 , ..., -0.38009644,\n", + " -0.14691162, -0.15356445],\n", + " [ 3.3636475 , 3.8493652 , 4.25 , ..., 0.430542 ,\n", + " 0.32699585, 0.23458862],\n", + " [ 2.291626 , 2.7035522 , 3.230133 , ..., 0.6605835 ,\n", + " 0.5307617 , 0.37503052]],\n", + "\n", + " [[ 9.923706 , 10.213959 , 10.246948 , ..., -2.7084656 ,\n", + " -3.117157 , -3.460785 ],\n", + " [ 10.048218 , 10.249817 , 10.259094 , ..., -2.855835 ,\n", + " -3.1342468 , -3.5550232 ],\n", + " [ 9.972595 , 10.138733 , 10.1493225 , ..., -3.176941 ,\n", + " -3.5891113 , -3.8943787 ],\n", + " ...,\n", + " [ 2.2316895 , 2.5167236 , 2.8789368 , ..., -1.0142822 ,\n", + " -1.0447388 , -1.3068542 ],\n", + " [ 0.93966675, 1.3753662 , 1.7021484 , ..., -0.4562683 ,\n", + " -0.82281494, -1.1673279 ],\n", + " [ -0.25891113, 0.1281128 , 0.6257019 , ..., -0.47140503,\n", + " -0.86395264, -1.2958069 ]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * time (time) object 1850-01-15 12:00:00 ... 2014-12-15 12:00:00\n", + " * member_id (member_id) object 'r1i1p1f1'" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI" + ] + }, + { + "cell_type": "markdown", + "id": "3c9a350f", + "metadata": {}, + "source": [ + "## Statistics\n", + "\n", + "All the standard statistical operations can be used such as `min`, `max`, `mean`. When no argument is passed to the function, the operation is done over all the dimensions of the variable (same as with `numpy`)." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "d235169d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' ()>\n",
+       "array(-26.84191895)
" + ], + "text/plain": [ + "\n", + "array(-26.84191895)" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.min()" + ] + }, + { + "cell_type": "markdown", + "id": "19379f3b", + "metadata": {}, + "source": [ + "You can make a statistical operation over a dimension. For instance, let's retrieve the maximum tas value among all those available for different times, at each lat-lon location." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "53283302", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, lat: 18, lon: 35)>\n",
+       "array([[[17.913177 , 18.16388  , 18.275024 , 18.313934 , 18.328522 ,\n",
+       "         18.410065 , 18.476685 , 19.338104 , 20.345673 , 19.73639  ,\n",
+       "         19.681091 , 20.134735 , 19.119598 , 19.005066 , 19.041931 ,\n",
+       "         19.106995 , 19.019653 , 22.693756 , 24.226562 , 24.650146 ,\n",
+       "         24.417786 , 23.973938 , 23.803497 , 22.828125 , 22.704803 ,\n",
+       "         22.352753 , 22.175903 , 22.134857 , 23.450043 , 24.378357 ,\n",
+       "         25.166748 , 25.610962 , 24.972687 , 25.00238  , 24.528198 ],\n",
+       "        [17.241577 , 17.338257 , 17.492157 , 17.585663 , 17.65509  ,\n",
+       "         17.713348 , 17.98352  , 20.150513 , 21.748383 , 21.886383 ,\n",
+       "         21.556824 , 20.893677 , 20.363037 , 18.943329 , 18.613983 ,\n",
+       "         18.611572 , 18.620941 , 19.760834 , 23.221924 , 23.647827 ,\n",
+       "         23.514404 , 23.093231 , 23.336456 , 22.503937 , 22.339935 ,\n",
+       "         22.338959 , 22.166626 , 22.34134  , 23.142212 , 23.4458   ,\n",
+       "         24.20691  , 24.140076 , 24.62323  , 24.352112 , 24.227814 ],\n",
+       "        [16.807587 , 16.770233 , 16.859833 , 16.93045  , 16.981567 ,\n",
+       "         17.039246 , 17.455383 , 18.455078 , 19.253387 , 20.740967 ,\n",
+       "         21.366882 , 21.06958  , 20.757294 , 20.318634 , 18.286224 ,\n",
+       "         18.358154 , 18.349121 , 19.311615 , 21.430908 , 22.219482 ,\n",
+       "         22.33014  , 22.559174 , 22.694366 , 22.51947  , 22.080627 ,\n",
+       "         22.51355  , 22.614471 , 22.480713 , 22.66214  , 23.090118 ,\n",
+       "...\n",
+       "         12.900909 , 13.222961 , 13.52597  , 14.403259 , 15.553009 ,\n",
+       "         16.8042   , 16.932892 , 16.954376 , 17.034729 , 16.96762  ,\n",
+       "         16.96637  , 17.100616 , 17.330872 , 17.345306 , 17.114044 ,\n",
+       "         16.488129 , 14.975281 , 12.001068 , 13.143677 , 10.707916 ,\n",
+       "          9.694275 ,  9.177216 ,  9.027313 ,  8.803345 ,  8.669434 ],\n",
+       "        [ 9.139069 ,  9.590576 ,  9.904144 , 10.247589 , 10.48056  ,\n",
+       "         10.866425 , 11.181763 , 11.512421 , 11.786804 , 12.199493 ,\n",
+       "         12.608215 , 12.951721 , 13.20874  , 13.357086 , 13.322723 ,\n",
+       "         14.709045 , 13.948395 , 15.049042 , 16.412964 , 17.884033 ,\n",
+       "         17.783173 , 17.81784  , 17.365814 , 17.036255 , 16.102875 ,\n",
+       "         12.359375 ,  9.921783 ,  9.611908 ,  9.409424 ,  9.122467 ,\n",
+       "          8.811737 ,  8.50293  ,  8.18045  ,  7.9012146,  7.5783386],\n",
+       "        [ 8.040253 ,  8.353821 ,  8.763489 ,  9.011475 ,  9.314575 ,\n",
+       "          9.718872 , 10.178741 , 10.651154 , 11.184814 , 11.681763 ,\n",
+       "         12.085083 , 12.411102 , 12.637634 , 12.749329 , 12.723297 ,\n",
+       "         12.770172 , 12.895966 , 12.92099  , 12.873657 , 13.131958 ,\n",
+       "         14.395782 , 12.900848 , 12.762329 , 11.248535 , 10.335876 ,\n",
+       "          9.764557 ,  9.28595  ,  8.989227 ,  8.640686 ,  8.288513 ,\n",
+       "          7.905426 ,  7.5679626,  7.2664795,  7.0660706,  6.9654236]]],\n",
+       "      dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'
" + ], + "text/plain": [ + "\n", + "array([[[17.913177 , 18.16388 , 18.275024 , 18.313934 , 18.328522 ,\n", + " 18.410065 , 18.476685 , 19.338104 , 20.345673 , 19.73639 ,\n", + " 19.681091 , 20.134735 , 19.119598 , 19.005066 , 19.041931 ,\n", + " 19.106995 , 19.019653 , 22.693756 , 24.226562 , 24.650146 ,\n", + " 24.417786 , 23.973938 , 23.803497 , 22.828125 , 22.704803 ,\n", + " 22.352753 , 22.175903 , 22.134857 , 23.450043 , 24.378357 ,\n", + " 25.166748 , 25.610962 , 24.972687 , 25.00238 , 24.528198 ],\n", + " [17.241577 , 17.338257 , 17.492157 , 17.585663 , 17.65509 ,\n", + " 17.713348 , 17.98352 , 20.150513 , 21.748383 , 21.886383 ,\n", + " 21.556824 , 20.893677 , 20.363037 , 18.943329 , 18.613983 ,\n", + " 18.611572 , 18.620941 , 19.760834 , 23.221924 , 23.647827 ,\n", + " 23.514404 , 23.093231 , 23.336456 , 22.503937 , 22.339935 ,\n", + " 22.338959 , 22.166626 , 22.34134 , 23.142212 , 23.4458 ,\n", + " 24.20691 , 24.140076 , 24.62323 , 24.352112 , 24.227814 ],\n", + " [16.807587 , 16.770233 , 16.859833 , 16.93045 , 16.981567 ,\n", + " 17.039246 , 17.455383 , 18.455078 , 19.253387 , 20.740967 ,\n", + " 21.366882 , 21.06958 , 20.757294 , 20.318634 , 18.286224 ,\n", + " 18.358154 , 18.349121 , 19.311615 , 21.430908 , 22.219482 ,\n", + " 22.33014 , 22.559174 , 22.694366 , 22.51947 , 22.080627 ,\n", + " 22.51355 , 22.614471 , 22.480713 , 22.66214 , 23.090118 ,\n", + "...\n", + " 12.900909 , 13.222961 , 13.52597 , 14.403259 , 15.553009 ,\n", + " 16.8042 , 16.932892 , 16.954376 , 17.034729 , 16.96762 ,\n", + " 16.96637 , 17.100616 , 17.330872 , 17.345306 , 17.114044 ,\n", + " 16.488129 , 14.975281 , 12.001068 , 13.143677 , 10.707916 ,\n", + " 9.694275 , 9.177216 , 9.027313 , 8.803345 , 8.669434 ],\n", + " [ 9.139069 , 9.590576 , 9.904144 , 10.247589 , 10.48056 ,\n", + " 10.866425 , 11.181763 , 11.512421 , 11.786804 , 12.199493 ,\n", + " 12.608215 , 12.951721 , 13.20874 , 13.357086 , 13.322723 ,\n", + " 14.709045 , 13.948395 , 15.049042 , 16.412964 , 17.884033 ,\n", + " 17.783173 , 17.81784 , 17.365814 , 17.036255 , 16.102875 ,\n", + " 12.359375 , 9.921783 , 9.611908 , 9.409424 , 9.122467 ,\n", + " 8.811737 , 8.50293 , 8.18045 , 7.9012146, 7.5783386],\n", + " [ 8.040253 , 8.353821 , 8.763489 , 9.011475 , 9.314575 ,\n", + " 9.718872 , 10.178741 , 10.651154 , 11.184814 , 11.681763 ,\n", + " 12.085083 , 12.411102 , 12.637634 , 12.749329 , 12.723297 ,\n", + " 12.770172 , 12.895966 , 12.92099 , 12.873657 , 13.131958 ,\n", + " 14.395782 , 12.900848 , 12.762329 , 11.248535 , 10.335876 ,\n", + " 9.764557 , 9.28595 , 8.989227 , 8.640686 , 8.288513 ,\n", + " 7.905426 , 7.5679626, 7.2664795, 7.0660706, 6.9654236]]],\n", + " dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * member_id (member_id) object 'r1i1p1f1'" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_AOI.max(dim='time')" + ] + }, + { + "cell_type": "markdown", + "id": "00a0ec25", + "metadata": {}, + "source": [ + "## Aggregation\n", + "We have monthly data. To obtain yearly values, we can group values per year and compute the mean." + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "1afbe549", + "metadata": {}, + "outputs": [], + "source": [ + "tas_yearly = tas_AOI.groupby(tas_AOI.time.dt.year).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "0047f659", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'tas' (member_id: 1, year: 165, lat: 18, lon: 35)>\n",
+       "array([[[[10.190738  , 10.236267  , 10.129463  , ...,  4.487551  ,\n",
+       "           4.577349  ,  4.4684777 ],\n",
+       "         [10.055203  , 10.016124  ,  9.869583  , ...,  3.5996563 ,\n",
+       "           3.602525  ,  3.5518277 ],\n",
+       "         [ 9.951228  ,  9.84331   ,  9.695267  , ...,  2.8245113 ,\n",
+       "           2.760255  ,  2.7445972 ],\n",
+       "         ...,\n",
+       "         [ 2.131218  ,  2.480194  ,  2.8605297 , ..., -4.5990014 ,\n",
+       "          -4.9325995 , -5.297928  ],\n",
+       "         [ 0.8806508 ,  1.3956375 ,  1.7613932 , ..., -4.671717  ,\n",
+       "          -5.130834  , -5.525271  ],\n",
+       "         [-0.27815247,  0.1952184 ,  0.7522685 , ..., -4.968567  ,\n",
+       "          -5.4446716 , -5.893354  ]],\n",
+       "\n",
+       "        [[10.707288  , 10.862836  , 10.859578  , ...,  7.673986  ,\n",
+       "           7.586838  ,  7.378306  ],\n",
+       "         [10.575684  , 10.646342  , 10.60096   , ...,  7.274389  ,\n",
+       "           7.101011  ,  6.786873  ],\n",
+       "         [10.451709  , 10.4361925 , 10.362701  , ...,  6.5675125 ,\n",
+       "           6.483808  ,  6.3353195 ],\n",
+       "...\n",
+       "         [ 3.899109  ,  4.278895  ,  4.683767  , ...,  0.22347514,\n",
+       "           0.07540639, -0.13505554],\n",
+       "         [ 2.6409404 ,  3.1836903 ,  3.5581539 , ...,  0.25100455,\n",
+       "          -0.05962372, -0.3530426 ],\n",
+       "         [ 1.38296   ,  1.857727  ,  2.4163895 , ...,  0.07100169,\n",
+       "          -0.25650534, -0.61615247]],\n",
+       "\n",
+       "        [[11.859332  , 12.051389  , 12.075607  , ...,  8.140752  ,\n",
+       "           8.121837  ,  7.935308  ],\n",
+       "         [11.677655  , 11.791171  , 11.787402  , ...,  7.7124076 ,\n",
+       "           7.5722404 ,  7.4204307 ],\n",
+       "         [11.52195   , 11.550827  , 11.534116  , ...,  7.284935  ,\n",
+       "           7.149447  ,  7.030052  ],\n",
+       "         ...,\n",
+       "         [ 4.1399918 ,  4.518181  ,  4.9494348 , ...,  1.4126383 ,\n",
+       "           1.2889252 ,  1.1015829 ],\n",
+       "         [ 2.8445637 ,  3.3857346 ,  3.787501  , ...,  1.4600092 ,\n",
+       "           1.1696981 ,  0.8996175 ],\n",
+       "         [ 1.5644354 ,  2.0351918 ,  2.6172917 , ...,  1.269165  ,\n",
+       "           0.9806595 ,  0.6546936 ]]]], dtype=float32)\n",
+       "Coordinates:\n",
+       "  * lat        (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n",
+       "  * lon        (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n",
+       "  * member_id  (member_id) object 'r1i1p1f1'\n",
+       "  * year       (year) int64 1850 1851 1852 1853 1854 ... 2011 2012 2013 2014
" + ], + "text/plain": [ + "\n", + "array([[[[10.190738 , 10.236267 , 10.129463 , ..., 4.487551 ,\n", + " 4.577349 , 4.4684777 ],\n", + " [10.055203 , 10.016124 , 9.869583 , ..., 3.5996563 ,\n", + " 3.602525 , 3.5518277 ],\n", + " [ 9.951228 , 9.84331 , 9.695267 , ..., 2.8245113 ,\n", + " 2.760255 , 2.7445972 ],\n", + " ...,\n", + " [ 2.131218 , 2.480194 , 2.8605297 , ..., -4.5990014 ,\n", + " -4.9325995 , -5.297928 ],\n", + " [ 0.8806508 , 1.3956375 , 1.7613932 , ..., -4.671717 ,\n", + " -5.130834 , -5.525271 ],\n", + " [-0.27815247, 0.1952184 , 0.7522685 , ..., -4.968567 ,\n", + " -5.4446716 , -5.893354 ]],\n", + "\n", + " [[10.707288 , 10.862836 , 10.859578 , ..., 7.673986 ,\n", + " 7.586838 , 7.378306 ],\n", + " [10.575684 , 10.646342 , 10.60096 , ..., 7.274389 ,\n", + " 7.101011 , 6.786873 ],\n", + " [10.451709 , 10.4361925 , 10.362701 , ..., 6.5675125 ,\n", + " 6.483808 , 6.3353195 ],\n", + "...\n", + " [ 3.899109 , 4.278895 , 4.683767 , ..., 0.22347514,\n", + " 0.07540639, -0.13505554],\n", + " [ 2.6409404 , 3.1836903 , 3.5581539 , ..., 0.25100455,\n", + " -0.05962372, -0.3530426 ],\n", + " [ 1.38296 , 1.857727 , 2.4163895 , ..., 0.07100169,\n", + " -0.25650534, -0.61615247]],\n", + "\n", + " [[11.859332 , 12.051389 , 12.075607 , ..., 8.140752 ,\n", + " 8.121837 , 7.935308 ],\n", + " [11.677655 , 11.791171 , 11.787402 , ..., 7.7124076 ,\n", + " 7.5722404 , 7.4204307 ],\n", + " [11.52195 , 11.550827 , 11.534116 , ..., 7.284935 ,\n", + " 7.149447 , 7.030052 ],\n", + " ...,\n", + " [ 4.1399918 , 4.518181 , 4.9494348 , ..., 1.4126383 ,\n", + " 1.2889252 , 1.1015829 ],\n", + " [ 2.8445637 , 3.3857346 , 3.787501 , ..., 1.4600092 ,\n", + " 1.1696981 , 0.8996175 ],\n", + " [ 1.5644354 , 2.0351918 , 2.6172917 , ..., 1.269165 ,\n", + " 0.9806595 , 0.6546936 ]]]], dtype=float32)\n", + "Coordinates:\n", + " * lat (lat) float64 55.13 56.07 57.02 57.96 ... 68.32 69.27 70.21 71.15\n", + " * lon (lon) float64 0.0 1.25 2.5 3.75 5.0 ... 38.75 40.0 41.25 42.5\n", + " * member_id (member_id) object 'r1i1p1f1'\n", + " * year (year) int64 1850 1851 1852 1853 1854 ... 2011 2012 2013 2014" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_yearly" + ] + }, + { + "cell_type": "markdown", + "id": "8a18d11a", + "metadata": {}, + "source": [ + "As we have data from 1850 to 2014, the time dimension is now `year` and takes values from `1850` to `2014`." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "0c4f652a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'year' (year: 165)>\n",
+       "array([1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,\n",
+       "       1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873,\n",
+       "       1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,\n",
+       "       1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,\n",
+       "       1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909,\n",
+       "       1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921,\n",
+       "       1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933,\n",
+       "       1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945,\n",
+       "       1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957,\n",
+       "       1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969,\n",
+       "       1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981,\n",
+       "       1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993,\n",
+       "       1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\n",
+       "       2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014])\n",
+       "Coordinates:\n",
+       "  * year     (year) int64 1850 1851 1852 1853 1854 ... 2010 2011 2012 2013 2014
" + ], + "text/plain": [ + "\n", + "array([1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861,\n", + " 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873,\n", + " 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885,\n", + " 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897,\n", + " 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, 1908, 1909,\n", + " 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921,\n", + " 1922, 1923, 1924, 1925, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933,\n", + " 1934, 1935, 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945,\n", + " 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957,\n", + " 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969,\n", + " 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981,\n", + " 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993,\n", + " 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,\n", + " 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014])\n", + "Coordinates:\n", + " * year (year) int64 1850 1851 1852 1853 1854 ... 2010 2011 2012 2013 2014" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tas_yearly.year" + ] + }, + { + "cell_type": "markdown", + "id": "935b9333", + "metadata": {}, + "source": [ + "## Mask\n", + "\n", + "Masking can be achieved through the method `DataSet|Array.where(cond, other)` or `xr.where(cond, x, y)`.\n", + "\n", + "The difference consists in the possibility to specify the value in case the condition is positive or not; `DataSet|Array.where(cond, other)` only offer the possibility to define the false condition value (by default is set to np.NaN))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "af2544b2", + "metadata": {}, + "outputs": [], + "source": [ + "tas_masked = tas_AOI.where((tas_AOI >= -5.5) & (tas_AOI <= 15))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "74287eb4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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J+LZN2gIITB79mxUqVIFjo6OqFevHn744YdC3Z8VK1agUqVKcHJyQvfu3XH79u1cMZs3b0bDhg3h4OCAKlWqYMqUKcjOzpY/P336NFq2bAkHBwcEBQVh586dBsMfly5dgiRJWLduHUJDQ+Hg4IBvvvkGALB8+XLUrFkTDg4OqFGjBhYtWmRw7mvXrqF3794oW7YsPDw80LVrV1y6dEn+fPfu3WjcuDGcnZ1RpkwZtGjRApcvX1Z07QVd17x581CnTh04OzvD398fI0aMwIMHD+TPL1++jM6dO6Ns2bJwdnZGrVq18PPPP+PSpUto1aoVAKBs2bKQJAmDBg1SlBMRFQ0WLWSRBg0ahMOHD2PTpk3Yv38/hBDo0KEDsrKy5JhHjx5hzpw5WL16Nfbs2YMrV65g/Pjx8uezZs3CmjVrsHz5cvz2229ITU197nyEDRs2wM/PTx6OUTMcMHfuXHz99df46quvsHfvXty5cwexsbEGMR988AGWL1+OxYsX48SJExg7diz69++PhIQE5TcGwO+//44hQ4ZgxIgROHbsGFq1aoVp06YZxGzfvh39+/dHREQETp48iaVLl2LFihWYPn06AECv16Nbt25wcnLC77//jpiYGEyaNCnP87333nuIiIjAqVOnEBYWhmXLlmHSpEmYPn06Tp06hRkzZuDDDz/EypUrATz5vrRq1QouLi7Ys2cP9u7dKxeVmZmZyM7ORrdu3RASEoI//vgD+/fvx5tvvikXic9T0HUBgEajwcKFC/Hnn39i5cqV2LVrFyZOnCh/PnLkSGRkZGDPnj04fvw4Zs2aBRcXF/j7+2P9+vUAgDNnzuDGjRtYsGCBqu8NERnJpK9rJFLo6be+nj17VgAQv/32m/z5rVu3hKOjo1i3bp0QQojly5cLAOL8+fNyzBdffCG8vLzkr728vMQnn3wif52dnS0qVaokunbtmud5hRAiICBAfPrppwa5TZ48WdSrV89g36effioCAgLkr318fMTMmTPlr7OysoSfn598rgcPHggHBwexb98+g3aGDh0q+vbtm+99ySufvn37inbt2hns6927t3B3d5e/fvnll8WMGTMMYlavXi18fHyEEEJs3bpV2Nraihs3bsifx8XFCQAiNjZWCCFEUlKSACDmz59v0I6/v7/49ttvDfZ9/PHHolmzZkIIIb766itRvXp1odfr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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tas_masked.isel(time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "id": "7744b4e6", + "metadata": {}, + "source": [ + "To better visualize the mask, with the help of `xr.where`, ad-hoc variables can be created. 'xr.where' lets us specify values of 1 for masked and 0 for the unmasked data." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "id": "d8235875", + "metadata": {}, + "outputs": [], + "source": [ + "mask = xr.where((tas_AOI <= -5.5) | (tas_AOI >= 15), 1, 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "id": "2fc7291e-5c3b-4860-aea0-7a4714889bc7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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sXGpjgx3d3et14HTuMflrbfeQmxsLLp16yaV9e7dG+bm5njttddw7tw5xMTEIDg4WKuAqOLF3/xd7hCIiKgGPA4NANu3b8e2bduQkZGBgoIClX2nT5/W+Hwa97hcvnwZtra2pcptbW2RlpYGAGjatClu376tcTBEREQ1Rg1YOXf58uWYNGkSHBwckJKSgk6dOsHe3h5paWno16+fVufUOHHx8vLCzJkzcevWLans1q1bmDVrFjp27AgAuHTpEho2bKhVQERERFQ9rFixArGxsfj8889hamqKWbNmISEhAWFhYbh3755W59Q4cfnyyy+Rnp6Ohg0b4qWXXkLTpk3RsGFDXLlyBWvXrgUA3L9/H++//75WAREREdUINaDHJSMjQ5paYmFhgby8PADAhAkT8O2332p1To3nuDRv3hypqamIj4/HxYsXIYRAixYt4OfnByOjJ3nQ0KFDtQqGiIiopqgJK+c6OTkhJycHbm5ucHNzw4kTJ9CuXTukp6eXejpZXRonLsCTR5/79u0LX19fmJmZQaEwjAlCREREVHleffVV7NmzBy+//DImT56M6dOnY/v27Th16hSGDx+u1Tk1TlyUSiUWLFiAVatW4e+//8bFixfRuHFjvP/++3B3d8fkyZO1CoSIiKhGqQFL/s+ePRsNGjQAAISEhKBu3bo4cuQIBg0aVHmTc+fPn48NGzZgyZIlMDU1lcrbtGkjzXEhIiKiF6gBc1xeeukl3L17V/o8cuRILF++HOPGjUOLFi20OqfGicvGjRsRGxuLcePGwdjYWCpv27Yt/vzzT62CICIiqmlK5rjoslV15c1juX//PszNzbU6p8ZDRTdu3MBLL71UqlypVKKwsFCrIIiIiKj6iIiIAPBkTuwHH3ygsrx/cXExfv31V7Rv316rc2ucuLRq1Qq//PJLqbdEf/fdd+jQoYNWQRAREdU41Xjl3JSUFABPelzOnj2rMrXE1NQU7dq10/rVQBonLnPmzMGECRNw48YNKJVK7Ny5ExcuXMDGjRvxww8/aBUEERFRjVONJ+cmJiYCACZNmoRly5aVueK+tjSe4zJo0CBs3boVe/fulbqAUlNTsWfPHvj5+ektMCIiIjJs69ev12vSAmi5jktAQAACAgL0GggREVFNUhMWoKsIWiUuREREpKNqPFRUkdRKXOrUqaP26rj//POPTgERERER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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mask.isel(time=0).plot()" + ] + }, + { + "cell_type": "markdown", + "id": "27c60e8d-9695-48dc-b3a1-95a8c33435c0", + "metadata": {}, + "source": [ + "Plot a single point (defined by its latitude and longitude) over the time dimension." + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "id": "24b735b1-6503-4afa-b210-c6fa1a7249d5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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euutap06ddSpU6eqhYWF6ubNm9VLLrlErVevnrpx40ZD2qNHj6pt2rRR//3vf6uqqqoPPvigCkDdu3cvt5zRo0erzZo1izoeDAbVQYMGqSkpKepjjz2mzpw5U33wwQfVli1bqgDUBx98UE+7Zs0aNTMzU+3SpYv63nvvqTNnzlTvuOMONRAIqBMmTNDT7dy5U61fv77atGlTdfLkyeq3336rXnbZZWrz5s1VAOq8efP0tAMGDFCzsrLUJk2aqC+++KI6b948dcGCBeqRI0fU7t27qw0aNFCfffZZdfbs2erzzz+vZmZmqqeddpoaDAb1PK655ho1KSlJveOOO9QZM2aoH330kdq+fXs1JydHLSgoUFVVVYuLi9X69eurPXv2VD/99FN1wYIF6ieffKJef/316tq1a7nPj3yOycnJaocOHdSnn35anT17tjp+/HhVURT1oYce0tMdO3ZM7dq1q1q7dm316aefVmfOnKk+8MADamJionrmmWca8gSgNmrUSO3atav60UcfqXPnzlV/++03dcaMGSoA9aqrrtK/gU2bNqmqGn737dq1U8ePH6/OmjVLffbZZ9WUlBT1iiuuoNa9WbNm6llnnWX5XiPvm2w/wWBQHTp0qJqYmKg+8MAD6syZM9Wnn35arV27ttqjRw/1+PHjhnIbN26sduzYUX3vvffU77//Xr3wwgtVAOqCBQu4ZZeXl1v6risqKoTu6aabblKtDje1a9dWR48eLZR/JIcOHVIzMzPV8847z3B89OjRaiAQUHNyctRAIKA2atRIvemmm9T9+/dz89y8ebMKQH3nnXeizs2ePVtNSEhQTznlFPWLL75QP/vsM/Wkk05SmzZtGnXfVr4hVVXVcePGqQDUa6+9Vp0xY4b65ptvqk2bNlXz8vLUAQMG6Om0PrRRo0bqyJEj1a+++kqdPn26un//fvX9999XFUVRzz33XPWLL75Qv/76a/Xss89WExIS1NmzZ4s91GqOFIaqCTRhiEQTYLZu3aoCUL/88kv93FNPPWV6LassK/94LF++XL311lvVqVOnqj/88IP69ttvqx06dFATEhLUGTNm6Ol+++03FYD6yCOPGK6fM2eOCkBNTk7mlhUMBtXx48ergUBAr1/Tpk3VFStWRKW944471JYtW6pHjx5VVdUZYei7775TAajPP/+84fhjjz0WJQwNHTpUbdy4cZRQevPNN6upqanqgQMHVFVV1X//+9+qoijqmjVrDOmGDh1KFYYAqHPmzDGknThxohoIBNSlS5cajn/++ecqAPXbb79VVVVVFy1apAJQn3nmGUO67du3q2lpaepdd92lqqqqLlu2TAWgTps2jfGErDF69GgVgPrpp58ajp955plqu3bt9L9fe+01aronnnhCBaDOnDlTPwZAzczM1J+fxt69e6PegYb27p988knD8RtvvFFNTU01CIsaTgpDmqAWWf4nn3yiAlDfeOMNQ7mpqanq1q1b9WPHjh1Ts7Ky1Ouuu45bdrNmzSx917TnZEa8haH/+7//UxMTE9Vly5YZjj/77LPqs88+q86cOVOdOXOmet9996m1atVS27dvrx4+fNg0TzNhqHfv3mp+fr567Ngx/VhRUZGalZVluG+r39CBAwfUlJQUddSoUYZ02vU0Yah///6GtEeOHFGzsrLUESNGGI5XVFSo3bp1U3v16mV6vzUNaVCsxuzZswfjx4/HN998g507dyIYDOrn/vjjD/zjH/+wle+IESOwdOlSR+rYo0cP9OjRQ//71FNPxXnnnYcuXbrgrrvuwtChQwEA3bp1Q//+/fHUU0+hXbt2GDx4MNauXYvrr78eCQkJltTsjz32GJ5++mlMmDABp556KoqKivDSSy9h8ODBmDlzpl6PJUuWYNKkSZgxY4aQYyWPefPmAQD+7//+z3D80ksvxX333af/ffz4ccyZMwc33HADatWqhfLycv3cmWeeiZdeegmLFy/G8OHDsWDBAnTu3BkdO3Y05HnJJZfg+++/j6pDvXr1onwopk+fjs6dO6N79+6GsoYOHaqb2oYPH47p06dDURT885//NKTLzc1Ft27ddJNc69atUa9ePdx9993YtWsX+vfvH1U/qyiKghEjRhiOde3a1eAAO3fuXNSuXRsjR440pBszZgzuvvtuzJkzB4MHD9aPn3baaahXr55wXSK/l65du+L48ePYs2cPcnJyhPOzinavkWa7Cy+8EFdeeSXmzJlj8Jfr3r07mjZtqv+dmpqKtm3bYuvWrdyyvv766yjTIo38/HyLtY8/DzzwAD788EO8+OKLOPHEEw3nbr/9dsPfgwcPRo8ePTBy5Ei8+eabUeetcOTIESxduhQ33nijwdyenp6OESNG4N1339WPWf2GFi9ejJKSElx00UWG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UYEnnngCtWvXxoEDB/R0Vr+hrKwsjB07FhMnTkS9evVw3nnn4e+//8ZDDz2EvLw8S991nTp18OKLL2L06NE4cOAARo4ciezsbOzduxcrV67E3r178eqrr+rP//TTT8f48eMxfvx4PY/IfhQICecLFiyI8kOq8njjty1xGtpqsrVr16qDBw9W09PT1Xr16qkXXnihum3bNupqkHHjxqn5+fn6SityFZKbTJw4Ue3evbuamZmpJiQkqA0bNlTPO+88dcmSJVFpX3/9dbVDhw5qrVq11Dp16qinnnoqc8USIlZcqGpoue19992n55Gdna0OHDhQXy1lhhOrybQ6XHnllWrdunXVWrVqqYMHD1bXrVtHfSebN29Wr7zySrVRo0ZqUlKS2rBhQ7Vfv37qo48+aki3evVq9YwzzlBTU1PVrKws9aqrrlLfffddFYC6cuVKPd2AAQPUTp06UetVXFys3n///Wq7du3U5ORkfVn/7bffbljuq6qq+vbbb6u9e/dWa9euraalpamtWrVSL7/8cn3lzrp169RLLrlEbdWqlZqWlqZmZmaqvXr1UidPnsx9dpHPsXbt2lHHtXdBsn//fvX6669X8/Ly1MTERLVZs2bquHHjDMvOVTXULm666SZqebNnz1Z79OihpqSkqAD0FU2sd2+2gpO2mqxBgwZqnz59eLdNbT/Hjh1T7777brVZs2ZqUlKSmpeXp95www3qwYMHueWqaujdR34PbmO26jRytZi20pH2j+yLtHdBWyXJ+qdx4MAB9bzzzlObN2+upqWlqcnJyWqbNm3Uu+66Sz106BD3fsxWk6mqqn711Vdq165d1eTkZLVp06bqf/7zH2pbVVX+N6SqodWvjz76qNq4cWM1OTlZ7dq1qzp9+nS1W7duhpAB2mqyzz77jFqvBQsWqGeddZaalZWlJiUlqY0aNVLPOussQ3otj8g+iNaPas+7uqGoqk2nDolEQmXMmDGYP38+Nm3aBEVRHAvYKMK1116Ljz/+GPv37zc1s0mcpaKiAqqqonXr1ujcuTOmT58OAFi7di06deqE6dOn46yzzvK4lhI7bNmyBS1atMBbb72Fyy+/HAkJCXH3P9u8eTPat2+PBx98UNgvSmKONJNJJC6wdetWJCUloVOnTli9erWrZT388MPIz89Hy5YtUVxcjOnTp+O///0v7r//fikIxZkT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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "tas_masked.sel(lat=60., lon=10.75, method='nearest').plot()" + ] + }, + { + "cell_type": "markdown", + "id": "b34d4ed5-2b85-4548-aed8-0976a3b8f473", + "metadata": { + "tags": [] + }, + "source": [ + "## Save xarray Dataset\n", + "\n", + "It is very often convenient to save intermediate or final results into a local file. We will learn more about the different file formats Xarray can handle, but for now let's save it as a netCDF file. Check the file size after saving the result into netCDF." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "id": "7f1d1630", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "tas_masked.to_netcdf('tas_Nordic_masked.nc')" + ] + }, + { + "cell_type": "markdown", + "id": "57ad2af8", + "metadata": {}, + "source": [ + "## Advanced Saving methods\n", + "### Encoding and Compression\n", + "\n", + "From the near-surface temperature dataset we already know that values are encoded as `float32`. A compression method can be defined as well; if the format is netCDF4 with the engine set to 'netcdf4' or 'h5netcdf' there are different compression options. The easiest solution is to stick with the default one for NetCDF4 files.\n", + "\n", + "Note that encoding parameters needs to be done through a nested dictionary and parameters has to be defined for each single variable." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "id": "bb83939f", + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + } + }, + "outputs": [], + "source": [ + "tas_masked.to_netcdf('tas_Nordic_mcs.nc',\n", + " engine='netcdf4',\n", + " encoding={'tas':{\"dtype\": np.float32,\n", + " 'zlib': True, 'complevel':4}\n", + " }\n", + " )" + ] + }, + { + "cell_type": "markdown", + "id": "be248f7e", + "metadata": {}, + "source": [ + "
\n", + " Key Points\n", + "
\n", + "
    \n", + "
  • Xarray Dataset and DataArray
  • \n", + "
  • Read and get metadata from local raster file
  • \n", + "
  • Dataset and DataArray selection
  • \n", + "
  • Aggregation and statistics
  • \n", + "
  • Masking values
  • \n", + "
\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "44c44075", + "metadata": {}, + "source": [ + "Through the datatype and the compression a compression of almost 10 time has been achieved; as drawback speed reading has been decreased." + ] + }, + { + "cell_type": "markdown", + "id": "8a045187", + "metadata": {}, + "source": [ + "## References\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"xarray\" and not topic % \"package\"\n", + ":keyprefix: a-\n", + "```" + ] + }, + { + "cell_type": "markdown", + "id": "8c9ad204", + "metadata": {}, + "source": [ + "## Packages citation\n", + "\n", + "```{bibliography}\n", + ":style: alpha\n", + ":filter: topic % \"xarray\" and topic % \"package\"\n", + ":keyprefix: a-\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41600614-d4e0-46fe-97a5-929952b51987", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}

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